Sorry, że znowu ja, ale to mi nie daje spokoju, mam zrobiony nowy czar bojowy, wszystko jest okej tylko, że npc nie chce/nie może rzucić moją kulą ognia

tu WSZYSTKIE skrypty dot. spella :
plik constants jakby co numer spella to 91
////////////////////////////////////////////////////////////////////////////////
//
// Spells: ID-Konstanten
//
// Paladin-Runen
const int SPL_PalLight = 0;
const int SPL_PalLightHeal = 1;
const int SPL_PalHolyBolt = 2;
const int SPL_PalMediumHeal = 3;
const int SPL_PalRepelEvil = 4;
const int SPL_PalFullHeal = 5;
const int SPL_PalDestroyEvil = 6;
// Teleport-Runen
const int SPL_PalTeleportSecret = 7;
const int SPL_TeleportSeaport = 8;
const int SPL_TeleportMonastery = 9;
const int SPL_TeleportFarm = 10;
const int SPL_TeleportXardas = 11;
const int SPL_TeleportPassNW = 12;
const int SPL_TeleportPassOW = 13;
const int SPL_TeleportOC = 14;
const int SPL_TeleportOWDemonTower = 15;
const int SPL_TeleportTaverne = 16;
const int SPL_Teleport_3 = 17;
// Kreis 1
const int SPL_Light = 18;
const int SPL_Firebolt = 19;
// Kreis 2
const int SPL_Icebolt = 20;
// Kreis 1
const int SPL_LightHeal = 21; // SPL_Heal Instant!
const int SPL_SummonGoblinSkeleton = 22;
// Kreis 2
const int SPL_InstantFireball = 23;
// Kreis 1
const int SPL_Zap = 24; // ###UNCONSCIOUS###
// Kreis 2
const int SPL_SummonWolf = 25;
const int SPL_WindFist = 26; // ###UNCONSCIOUS###
const int SPL_Sleep = 27;
// Kreis 3
const int SPL_MediumHeal = 28;
const int SPL_LightningFlash = 29;
const int SPL_ChargeFireball = 30;
const int SPL_SummonSkeleton = 31;
const int SPL_Fear = 32;
const int SPL_IceCube = 33;
// Kreis 4
const int SPL_ChargeZap = 34;
const int SPL_SummonGolem = 35;
const int SPL_DestroyUndead = 36;
const int SPL_Pyrokinesis = 37;
// Kreis 5
const int SPL_Firestorm = 38;
const int SPL_IceWave = 39;
const int SPL_SummonDemon = 40;
const int SPL_FullHeal = 41;
// Kreis 6
const int SPL_Firerain = 42;
const int SPL_BreathOfDeath = 43;
const int SPL_MassDeath = 44;
const int SPL_ArmyOfDarkness = 45;
const int SPL_Shrink = 46;
// Scrolls
const int SPL_TrfSheep = 47;
const int SPL_TrfScavenger = 48;
const int SPL_TrfGiantRat = 49;
const int SPL_TrfGiantBug = 50;
const int SPL_TrfWolf = 51;
const int SPL_TrfWaran = 52;
const int SPL_TrfSnapper = 53;
const int SPL_TrfWarg = 54;
const int SPL_TrfFireWaran = 55;
const int SPL_TrfLurker = 56;
const int SPL_TrfShadowbeast = 57;
const int SPL_TrfDragonSnapper = 58;
const int SPL_Charm = 59; // MAX_SPELL (Gothic)
// Kreis 5
const int SPL_MasterOfDisaster = 60;
// ???
const int SPL_Deathbolt = 61;
const int SPL_Deathball = 62;
const int SPL_ConcussionBolt = 63;
const int SPL_Reserved_64 = 64; // SPL_E
const int SPL_Reserved_65 = 65; // SPL_F
const int SPL_Reserved_66 = 66; // SPL_G
const int SPL_Reserved_67 = 67; // SPL_H
const int SPL_Reserved_68 = 68; // MAX_SPELL (Gothic2)
const int SPL_Reserved_69 = 69;
// Magick (Wasser)
const int SPL_Thunderstorm = 70;
const int SPL_Whirlwind = 71;
const int SPL_WaterFist = 72;
const int SPL_IceLance = 73;
const int SPL_Inflate = 74;
const int SPL_Geyser = 75;
const int SPL_Waterwall = 76;
const int SPL_Reserved_77 = 77;
const int SPL_Reserved_78 = 78;
const int SPL_Reserved_79 = 79;
// Magick (Maya)
const int SPL_Plague = 80;
const int SPL_Swarm = 81;
const int SPL_GreenTentacle = 82;
const int SPL_Earthquake = 83;
const int SPL_SummonGuardian = 84;
const int SPL_Energyball = 85;
const int SPL_SuckEnergy = 86;
const int SPL_Skull = 87;
const int SPL_SummonZombie = 88;
const int SPL_SummonMud = 89;
// ...
const int SPL_GreenFlame = 90;
const int SPL_ChargeWhite = 91; ///RUNA O KTÓREJ MOWA!
const int SPL_Reserved_92 = 92;
const int SPL_Reserved_93 = 93;
const int SPL_Reserved_94 = 94;
const int SPL_Reserved_95 = 95;
const int SPL_Reserved_96 = 96;
const int SPL_Reserved_97 = 97;
const int SPL_TeleportBrothel = 98;
const int SPL_Reserved_99 = 99;
const int MAX_SPELL = 100; // 59 (Gothic), 68 (Gothic2), 100 (G2Addon)
////////////////////////////////////////////////////////////////////////////////
//
// Spells: Fx-/Spell-Klassennamen (Array)
//
const string spellFxInstanceNames[MAX_SPELL] =
{
// Paladin-Runen
"PalLight", // 0 SPL_PalLight
"PalHeal", // 1 SPL_PalLightHeal
"PalHolyBolt", // 2 SPL_PalHolyBolt
"PalHeal", // 3 SPL_PalMediumHeal
"PalRepelEvil", // 4 SPL_PalRepelEvil
"PalHeal", // 5 SPL_PalFullHeal
"PalDestroyEvil", // 6 SPL_PalDestroyEvil
// Teleport-Runen
"Teleport", // 7 SPL_PalTeleportSecret
"Teleport", // 8 SPL_TeleportSeaport
"Teleport", // 9 SPL_TeleportMonastery
"Teleport", // 10 SPL_TeleportFarm
"Teleport", // 11 SPL_TeleportXardas
"Teleport", // 12 SPL_TeleportPassNW
"Teleport", // 13 SPL_TeleportPassOW
"Teleport", // 14 SPL_TeleportOC
"Teleport", // 15 SPL_TeleportOWDemonTower
"Teleport", // 16 SPL_TeleportTaverne
"Teleport", // 17 SPL_Teleport_3
// Kreis 1
"Light", // 18 SPL_Light
"Firebolt", // 19 SPL_Firebolt
// Kreis 2
"Icebolt", // 20 SPL_Icebolt
// Kreis 1
"Heal", // 21 SPL_LightHeal
"SummonGoblinSkeleton", // 22 SPL_SummonGoblinSkeleton
// Kreis 2
"InstantFireball", // 23 SPL_InstantFireball
// Kreis 1
"Zap", // 24 SPL_Zap
// Kreis 2
"SummonWolf", // 25 SPL_SummonWolf
"WindFist", // 26 SPL_WindFist
"Sleep", // 27 SPL_Sleep
// Kreis 3
"Heal", // 28 SPL_MediumHeal
"LightningFlash", // 29 SPL_LightningFlash
"ChargeFireball", // 30 SPL_ChargeFireball
"SummonSkeleton", // 31 SPL_SummonSkeleton
"Fear", // 32 SPL_Fear
"Icecube", // 33 SPL_IceCube
// Kreis 4
"ChargeZap", // 34 SPL_ChargeZap
"SummonGolem", // 53 SPL_SummonGolem
"DestroyUndead", // 36 SPL_DestroyUndead
"Pyrokinesis", // 37 SPL_Pyrokinesis
// Kreis 5
"Firestorm", // 38 SPL_Firestorm
"Icewave", // 39 SPL_IceWave
"SummonDemon", // 40 SPL_SummonDemon
"Heal", // 41 SPL_FullHeal
// Kreis 6
"Firerain", // 42 SPL_Firerain
"BreathOfDeath", // 43 SPL_BreathOfDeath
"MassDeath", // 44 SPL_MassDeath
"ArmyOfDarkness", // 45 SPL_ArmyOfDarkness
"Shrink", // 46 SPL_Shrink
// Scrolls
"Transform", // 47 SPL_TrfSheep
"Transform", // 48 SPL_TrfScavenger
"Transform", // 49 SPL_TrfGiantRat
"Transform", // 50 SPL_TrfGiantBug
"Transform", // 51 SPL_TrfWolf
"Transform", // 52 SPL_TrfWaran
"Transform", // 53 SPL_TrfSnapper
"Transform", // 54 SPL_TrfWarg
"Transform", // 55 SPL_TrfFireWaran
"Transform", // 56 SPL_TrfLurker
"Transform", // 57 SPL_TrfShadowbeast
"Transform", // 58 SPL_TrfDragonSnapper
"Charm", // 59 SPL_Charm
// Kreis 5
"MasterOfDisaster", // 60 SPL_MasterOfDisaster
// ???
"Deathbolt", // 61 SPL_Deathbolt
"Deathball", // 62 SPL_Deathball
"Concussionbolt", // 63 SPL_Concussionbolt
"Light", // 64 SPL_Reserved_64
"Light", // 65 SPL_Reserved_65
"Light", // 66 SPL_Reserved_66
"Light", // 67 SPL_Reserved_67
"Light", // 68 SPL_Reserved_68
"Light", // 69 SPL_Reserved_69
// Magick (Wasser)
"Thunderstorm", // 70 SPL_Thunderstorm
"Whirlwind", // 71 SPL_Whirlwind
"Waterfist", // 72 SPL_WaterFist
"IceLance", // 73 SPL_IceLance
"Sleep", // 74 SPL_Inflate
"Geyser", // 75 SPL_Geyser
"Firerain", // 76 SPL_Waterwall
"Light", // 77 SPL_Reserved_77
"Light", // 78 SPL_Reserved_78
"Light", // 79 SPL_Reserved_79
// Magick (Maya)
"Fear", // 80 SPL_Plague
"Swarm", // 81 SPL_Swarm
"Greententacle", // 82 SPL_GreenTentacle
"Firerain", // 83 SPL_Earthquake
"SummonGuardian", // 84 SPL_SummonGuardian
"Energyball", // 85 SPL_Energyball
"SuckEnergy", // 86 SPL_SuckEnergy
"Skull", // 87 SPL_Skull
"SummonZombie", // 88 SPL_SummonZombie
"SummonMud", // 89 SPL_SummonMud
// ...
"GreenFlame", // 90 SPL_GreenFlame
"ChargeWhite", // 91 SPL_ChargeWhite
"Light", // 92 SPL_Reserved_92
"Light", // 93 SPL_Reserved_93
"Light", // 94 SPL_Reserved_94
"Light", // 95 SPL_Reserved_95
"Light", // 96 SPL_Reserved_96
"Light", // 97 SPL_Reserved_97
"Teleport", // 98 SPL_TeleportBrothel
"Teleport" // 99 SPL_Reserved_99
};
////////////////////////////////////////////////////////////////////////////////
//
// Spells: Animationskürzel (Array)
//
const string spellFxAniLetters[MAX_SPELL] =
{
// Paladin-Runen
"SLE", // 0 SPL_PalLight
"HEA", // 1 SPL_PalLightHeal
"FBT", // 2 SPL_PalHolyBolt
"HEA", // 3 SPL_PalMediumHeal
"FBT", // 4 SPL_PalRepelEvil
"HEA", // 5 SPL_PalFullHeal
"FIB", // 6 SPL_PalDestroyEvil
// Teleport-Runen
"HEA", // 7 SPL_PalTeleportSecret
"HEA", // 8 SPL_TeleportSeaport
"HEA", // 9 SPL_TeleportMonastery
"HEA", // 10 SPL_TeleportFarm
"HEA", // 11 SPL_TeleportXardas
"HEA", // 12 SPL_TeleportPassNW
"HEA", // 13 SPL_TeleportPassOW
"HEA", // 14 SPL_TeleportOC
"HEA", // 15 SPL_TeleportOWDemonTower
"HEA", // 16 SPL_TeleportTaverne
"HEA", // 17 SPL_Teleport_3
// Kreis 1
"SLE", // 18 SPL_Light
"FBT", // 19 SPL_Firebolt
// Kreis 2
"FBT", // 20 SPL_Icebolt
// Kreis 1
"HEA", // 21 SPL_LightHeal
"SUM", // 22 SPL_SummonGoblinSkeleton
// Kreis 2
"FBT", // 23 SPL_InstantFireball
// Kreis 1
"FBT", // 24 SPL_Zap
// Kreis 2
"SUM", // 25 SPL_SummonWolf
"WND", // 26 SPL_WindFist
"SLE", // 27 SPL_Sleep
// Kreis 3
"HEA", // 28 SPL_MediumHeal
"WND", // 29 SPL_LightningFlash
"FIB", // 30 SPL_ChargeFireball
"SUM", // 31 SPL_SummonSkeleton
"FEA", // 32 SPL_Fear
"FRZ", // 33 SPL_IceCube
"FIB", // 34 SPL_ChargeZap
// Kreis 4
"SUM", // 35 SPL_SummonGolem
"FIB", // 36 SPL_DestroyUndead
"FIB", // 37 SPL_Pyrokinesis
// Kreis 5
"FIB", // 38 SPL_Firestorm
"FEA", // 39 SPL_IceWave
"SUM", // 40 SPL_SummonDemon
"HEA", // 41 SPL_FullHeal
// Kreis 6
"FEA", // 42 SPL_Firerain
"FIB", // 43 SPL_BreathOfDeath
"MSD", // 44 SPL_MassDeath
"SUM", // 45 SPL_ArmyOfDarkness
"SLE", // 46 SPL_Shrink
// Scrolls
"TRF", // 47 SPL_TrfSheep
"TRF", // 48 SPL_TrfScavenger
"TRF", // 49 SPL_TrfGiantRat
"TRF", // 50 SPL_TrfGiantBug
"TRF", // 51 SPL_TrfWolf
"TRF", // 52 SPL_TrfWaran
"TRF", // 53 SPL_TrfSnapper
"TRF", // 54 SPL_TrfWarg
"TRF", // 55 SPL_TrfFireWaran
"TRF", // 56 SPL_TrfLurker
"TRF", // 57 SPL_TrfShadowbeast
"TRF", // 58 SPL_TrfDragonSnapper
"FIB", // 59 SPL_Charm
// Kreis 5
"FIB", // 60 SPL_MasterOfDisaster
// ???
"FBT", // 61 SPL_Deathbolt
"FBT", // 62 SPL_Deathball
"FBT", // 63 SPL_Concussionbolt
"XXX", // 64 SPL_Reserved_64
"XXX", // 65 SPL_Reserved_65
"XXX", // 66 SPL_Reserved_66
"XXX", // 67 SPL_Reserved_67
"XXX", // 68 SPL_Reserved_68
"XXX", // 69 SPL_Reserved_69
// Magick (Wasser)
"STM", // 70 SPL_Thunderstorm
"WHI", // 71 SPL_Whirlwind
"WND", // 72 SPL_WaterFist
"FBT", // 73 SPL_IceLance
"SLE", // 74 SPL_Inflate
"WND", // 75 SPL_Geyser
"FEA", // 76 SPL_Waterwall
"XXX", // 77 SPL_Reserved_77
"XXX", // 78 SPL_Reserved_78
"XXX", // 79 SPL_Reserved_79
// Magick (Maya)
"FBT", // 80 SPL_Plague
"FBT", // 81 SPL_Swarm
"FRZ", // 82 SPL_GreenTentacle
"FEA", // 83 SPL_Earthquake
"SUM", // 84 SPL_SummonGuardian
"WND", // 85 SPL_Energyball
"WND", // 86 SPL_SuckEnergy
"WND", // 87 SPL_Skull
"SUM", // 88 SPL_SummonZombie
"SUM", // 89 SPL_SummonMud
// ...
"FBT", // 90 SPL_GreenFlame
"FIB", // 91 SPL_ChargeWhite ///RUNA O KTOREJ MOWA!
"XXX", // 92 SPL_Reserved_92
"XXX", // 93 SPL_Reserved_93
"XXX", // 94 SPL_Reserved_94
"XXX", // 95 SPL_Reserved_95
"XXX", // 96 SPL_Reserved_96
"XXX", // 97 SPL_Reserved_97
"HEA", // 98 SPL_Reserved_98
"XXX" // 99 SPL_Reserved_99
};
// *******
// Talente
// *******
const int NPC_TALENT_UNKNOWN = 0;
// Skilled Talents
const int NPC_TALENT_1H = 1;
const int NPC_TALENT_2H = 2;
const int NPC_TALENT_BOW = 3;
const int NPC_TALENT_CROSSBOW = 4;
const int NPC_TALENT_PICKLOCK = 5; //wird jetzt per DEX geregelt
//const int NPC_TALENT_PICKPOCKET = 6; //altes Pickpocket aus Gothic 1 - NICHT benutzen! Bleibt als Relikt im Code
// Magiekreis
const int NPC_TALENT_MAGE = 7;
// Special-Talents
const int NPC_TALENT_SNEAK = 8;
const int NPC_TALENT_REGENERATE = 9; //??? was ist davon drin?
const int NPC_TALENT_FIREMASTER = 10; //??? was ist davon drin?
const int NPC_TALENT_ACROBAT = 11; //--> Anis ändern!
// NEW Talents //werden komplett auf Scriptebene umgesetzt - Programm braucht sie nur für Ausgabe im Characterscreen
const int NPC_TALENT_PICKPOCKET = 12;
const int NPC_TALENT_SMITH = 13;
const int NPC_TALENT_RUNES = 14;
const int NPC_TALENT_ALCHEMY = 15;
const int NPC_TALENT_TAKEANIMALTROPHY = 16;
const int NPC_TALENT_FOREIGNLANGUAGE = 17;
const int NPC_TALENT_WISPDETECTOR = 18;
const int NPC_TALENT_C = 19;
const int NPC_TALENT_D = 20;
const int NPC_TALENT_E = 21;
const int NPC_TALENT_MAX = 22; //ehem. 12
// *************
// Runen-Talente
// *************
var int PLAYER_TALENT_RUNES[MAX_SPELL]; //Die SPL_ Konstanten werden hierfür als Kennung verwendet
// *************
// ForeignLanguage-TalentStufen
// *************
const int LANGUAGE_1 = 0;
const int LANGUAGE_2 = 1;
const int LANGUAGE_3 = 2;
const int MAX_LANGUAGE = 3;
var int PLAYER_TALENT_FOREIGNLANGUAGE[MAX_LANGUAGE];
// *************
// WispDetector-Talente
// *************
const int WISPSKILL_NF = 0;
const int WISPSKILL_FF = 1;
const int WISPSKILL_NONE = 2;
const int WISPSKILL_RUNE = 3;
const int WISPSKILL_MAGIC = 4;
const int WISPSKILL_FOOD = 5;
const int WISPSKILL_POTIONS = 6;
const int MAX_WISPSKILL = 7;
var int PLAYER_TALENT_WISPDETECTOR [MAX_WISPSKILL];
VAR int WispSearching;
const int WispSearch_Follow = 1;
const int WispSearch_ALL = 2;
const int WispSearch_POTIONS = 3;
const int WispSearch_MAGIC = 4;
const int WispSearch_FOOD = 5;
const int WispSearch_NF = 6;
const int WispSearch_FF = 7;
const int WispSearch_NONE = 8;
const int WispSearch_RUNE = 9;
// ****************
// Alchemie-Talente
// ****************
const int POTION_Health_01 = 0;
const int POTION_Health_02 = 1;
const int POTION_Health_03 = 2;
const int POTION_Mana_01 = 3;
const int POTION_Mana_02 = 4;
const int POTION_Mana_03 = 5;
const int POTION_Speed = 6;
const int POTION_Perm_STR = 7;
const int POTION_Perm_DEX = 8;
const int POTION_Perm_Mana = 9;
const int POTION_Perm_Health = 10;
const int POTION_MegaDrink = 11;
const int CHARGE_Innoseye = 12;
const int POTION_Mana_04 = 13;
const int POTION_Health_04 = 14;
const int MAX_POTION = 15;
var int PLAYER_TALENT_ALCHEMY[MAX_POTION];
// ***************
// Schmied-Talente
// ***************
const int WEAPON_Common = 0;
const int WEAPON_1H_Special_01 = 1;
const int WEAPON_2H_Special_01 = 2;
const int WEAPON_1H_Special_02 = 3;
const int WEAPON_2H_Special_02 = 4;
const int WEAPON_1H_Special_03 = 5;
const int WEAPON_2H_Special_03 = 6;
const int WEAPON_1H_Special_04 = 7;
const int WEAPON_2H_Special_04 = 8;
const int WEAPON_1H_Harad_01 = 9;
const int WEAPON_1H_Harad_02 = 10;
const int WEAPON_1H_Harad_03 = 11;
const int WEAPON_1H_Harad_04 = 12;
const int MAX_WEAPONS = 13;
var int PLAYER_TALENT_SMITH[MAX_WEAPONS];
// ********************
// AnimalTrophy-Talente
// ********************
const int TROPHY_Teeth = 0;
const int TROPHY_Claws = 1;
const int TROPHY_Fur = 2;
const int TROPHY_Heart = 3;
const int TROPHY_ShadowHorn = 4;
const int TROPHY_FireTongue = 5;
const int TROPHY_BFWing = 6;
const int TROPHY_BFSting = 7;
const int TROPHY_Mandibles = 8;
const int TROPHY_CrawlerPlate = 9;
const int TROPHY_DrgSnapperHorn = 10;
const int TROPHY_DragonScale = 11;
const int TROPHY_DragonBlood = 12;
const int TROPHY_ReptileSkin = 13;
const int MAX_TROPHIES = 14;
var int PLAYER_TALENT_TAKEANIMALTROPHY[MAX_TROPHIES];
// ****************************************
// Font-Konstanten der Engine (ausgelagert)
// ****************************************
const string TEXT_FONT_20 = "Font_old_20_white.tga";
const string TEXT_FONT_10 = "Font_old_10_white.tga";
const string TEXT_FONT_DEFAULT = "Font_old_10_white.tga";
const string TEXT_FONT_Inventory = "Font_old_10_white.tga";
// ****************************************
// wie lange bklleibt ein TExt (OU) stehen,
// wenn kein wav da ist (msec/character)
// ****************************************
const float VIEW_TIME_PER_CHAR = 550;
// ****************************************
// LevelZen-Abfrage im B_Kapitelwechsel
// ****************************************
const int NEWWORLD_ZEN = 1;
const int OLDWORLD_ZEN = 2;
const int DRAGONISLAND_ZEN = 3;
const int ADDONWORLD_ZEN = 4;
// ****************************************
// Kamera für Inventory-Items
// ****************************************
const int INVCAM_ENTF_RING_STANDARD = 400;
const int INVCAM_ENTF_AMULETTE_STANDARD = 150;
const int INVCAM_ENTF_MISC_STANDARD = 200;
const int INVCAM_ENTF_MISC2_STANDARD = 250;
const int INVCAM_ENTF_MISC3_STANDARD = 500;
const int INVCAM_ENTF_MISC4_STANDARD = 650;
const int INVCAM_ENTF_MISC5_STANDARD = 850;
const int INVCAM_X_RING_STANDARD = 25;
const int INVCAM_Z_RING_STANDARD = 45;
/*
const int INVCAM_ENTF_MISC_STANDARD = 150;
const int INVCAM_X_MISC_STANDARD = 0;
const int INVCAM_Y_MISC_STANDARD = 0;
const int INVCAM_Z_MISC_STANDARD = 0;
*/
PFXINSTMAGIC
PROTOTYPE MFX_CHARGEWHITE (C_PARTICLEFX)
{
ppsvalue = 50;
ppsscalekeys_s = "1";
ppsislooping = 1;
ppsissmooth = 1;
ppsfps = 2;
shptype_s = "POINT";
shpfor_s = "object";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "RAND";
shpisvolume = 1;
shpdim_s = "30";
shpscalekeys_s = "1";
shpscaleislooping = 1;
shpscaleissmooth = 1;
shpscalefps = 2;
dirmode_s = "RAND";
dirfor_s = "world";
dirmodetargetfor_s = "OBJECT";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180;
dirangleelevvar = 180;
velavg = 9.99999975e-006;
lsppartavg = 500;
flygravity_s = "0 0 0";
visname_s = "MFX_WHITEBALL.TGA";
visorientation_s = "VELO";
vistexisquadpoly = 1;
vistexanifps = 18;
vistexaniislooping = 1;
vistexcolorstart_s = "200 200 255";
vistexcolorend_s = "200 200 255";
vissizestart_s = "15 15";
vissizeendscale = 5;
visalphafunc_s = "ADD";
visalphastart = 255;
//useemittersfor = 1;
};
INSTANCE MFX_CHARGEWHITE_CAST (MFX_CHARGEWHITE)
{
vissizestart_s = "10 10";
visalphastart = 180;
};
INSTANCE MFX_CHARGEWHITE_CAST_L2 (MFX_CHARGEWHITE)
{
vissizestart_s = "15 15";
visalphastart = 210;
};
INSTANCE MFX_CHARGEWHITE_CAST_L3 (MFX_CHARGEWHITE)
{
vissizestart_s = "20 20";
visalphastart = 230;
};
INSTANCE MFX_CHARGEWHITE_CAST_L4 (MFX_CHARGEWHITE)
{
vissizestart_s = "25 25";
visalphastart = 255;
};
INSTANCE MFX_CHARGEWHITE_CAST_L5 (MFX_CHARGEWHITE)
{
vissizestart_s = "30 30";
visalphastart = 255;
};
INSTANCE MFX_CHARGEWHITE_INVEST (C_PARTICLEFX)
{
ppsvalue = 20;
ppsscalekeys_s = "5";
ppsislooping = 1;
ppsissmooth = 1;
ppsfps = 2;
shptype_s = "SPHERE";
shpfor_s = "object";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "RAND";
shpdim_s = "100";
shpscalekeys_s = "1";
shpscaleislooping = 1;
shpscaleissmooth = 1;
shpscalefps = 2;
dirmode_s = "TARGET";
dirfor_s = "OBJECT";
dirmodetargetfor_s = "OBJECT";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180;
dirangleelevvar = 180;
velavg = 0.0500000007;
velvar = 0.0299999993;
lsppartavg = 2000;
flygravity_s = "0 0 0";
visname_s = "MFX_WHITEBALL.TGA";
visorientation_s = "VELO";
vistexisquadpoly = 1;
vistexanifps = 18;
vistexaniislooping = 2;
vistexcolorstart_s = "255 200 200";
vistexcolorend_s = "200 150 0";
vissizestart_s = "50 50";
vissizeendscale = 0.00100000005;
visalphafunc_s = "ADD";
visalphastart = 255;
};
INSTANCE MFX_CHARGEWHITE_INVESTBLAST (C_PARTICLEFX)
{
ppsvalue = 10;
ppsscalekeys_s = "2";
ppsissmooth = 1;
ppsfps = 2;
shptype_s = "POINT";
shpfor_s = "object";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "RAND";
shpdim_s = "100";
shpscalekeys_s = "1";
shpscaleislooping = 1;
shpscaleissmooth = 1;
shpscalefps = 2;
dirmode_s = "RAND";
dirfor_s = "OBJECT";
dirmodetargetfor_s = "OBJECT";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180;
dirangleelevvar = 180;
velavg = 9.99999975e-005;
lsppartavg = 1000;
flygravity_s = "0 0 0";
visname_s = "MFX_WHITEBALL2.TGA";
visorientation_s = "VELO";
vistexisquadpoly = 1;
vistexanifps = 18;
vistexaniislooping = 1;
vistexcolorstart_s = "255 200 200";
vistexcolorend_s = "200 150 0";
vissizestart_s = "10 10";
vissizeendscale = 6;
visalphafunc_s = "ADD";
visalphastart = 255;
};
INSTANCE MFX_CHARGEWHITE_COLLIDE (C_PARTICLEFX)
{
ppsvalue = 40;
ppsscalekeys_s = "1";
ppsfps = 10;
//ppscreateem_s = "MFX_CHARGEWHITE_COLLIDE_WALLGLOW";
shptype_s = "SPHERE";
shpfor_s = "object";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "RAND";
shpisvolume = 1;
shpdim_s = "8";
shpscalekeys_s = "1";
shpscaleislooping = 1;
shpscaleissmooth = 1;
shpscalefps = 2;
dirmode_s = "TARGET";
dirfor_s = "object";
dirmodetargetfor_s = "OBJECT";
dirmodetargetpos_s = "0 0 0";
dirangleheadvar = 180;
dirangleelevvar = 180;
velavg = 0.0799999982;
velvar = 0.0199999996;
lsppartavg = 600;
lsppartvar = 200;
flygravity_s = "0 0.0001 0";
flycolldet_b = 1;
visname_s = "MFX_WHITEBALL.TGA";
visorientation_s = "NONE";
vistexisquadpoly = 1;
vistexanifps = 18;
vistexaniislooping = 1;
vistexcolorstart_s = "255 220 220";
vistexcolorend_s = "255 220 220";
vissizestart_s = "20 20";
vissizeendscale = 4;
visalphafunc_s = "ADD";
visalphastart = 255;
};
VISUALFXINST
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
INSTANCE spellFX_CHARGEWHITE(CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_CAST";
emtrjmode_s = "FIXED";
emTrjOriginNode = "ZS_RIGHTHAND";
emtrjtargetnode = "BIP01 FIRE";
emtrjloopmode_s = "NONE";
emtrjeasefunc_s = "LINEAR";
emActionCollStat_S = "COLLIDE CREATEONCE CREATEQUAD";
emActionCollDyn_S = "COLLIDE CREATEONCE";
emFXCollStat_S = "spellFX_CHARGEWHITE_COLLIDE";
emFXCollDyn_S = "spellFX_CHARGEWHITE_COLLIDEDYNFX";
emFXCollDynPerc_S = "vob_magicburn";
emFXCollStatAlign_S = "COLLISIONNORMAL";
emFXCreatedOwnTrj = 0;
emTrjTargetRange = 20;
emTrjTargetElev = 0;
emTrjDynUpdateDelay = 30.000;
lightPresetname = "FIRESMALL";
};
INSTANCE spellFX_CHARGEWHITE_KEY_OPEN (C_ParticleFXEmitKey)
{
lightrange = 0.01;
};
INSTANCE spellFX_CHARGEWHITE_KEY_INIT (C_ParticleFXEmitKey)
{
//visname_S = "MFX_CHARGEWHITE_INIT";
lightrange = 0.01;
};
INSTANCE spellFX_CHARGEWHITE_KEY_INVEST_1 (C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_CHARGEWHITE_InVEST_BLAST1";
visname_s = "MFX_CHARGEWHITE_CAST_L2";
lightrange = 150;
sfxid = "MFX_CHARGEWHITE_invest1";
sfxisambient = 1;
} ;
INSTANCE spellFX_CHARGEWHITE_KEY_INVEST_2 (C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_CHARGEWHITE_InVEST_BLAST2";
visname_s = "MFX_CHARGEWHITE_CAST_L3";
sfxid = "MFX_CHARGEWHITE_invest2";
sfxisambient = 1;
};
INSTANCE spellFX_CHARGEWHITE_KEY_INVEST_3 (C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_CHARGEWHITE_InVEST_BLAST3";
visname_s = "MFX_CHARGEWHITE_CAST_L4";
sfxid = "MFX_CHARGEWHITE_invest3";
sfxisambient = 1;
};
INSTANCE spellFX_CHARGEWHITE_KEY_INVEST_4 (C_ParticleFXEmitKey)
{
emCreateFXID = "spellFX_CHARGEWHITE_InVEST_BLAST4";
visname_s = "MFX_CHARGEWHITE_CAST_L5";
sfxid = "MFX_CHARGEWHITE_invest4";
sfxisambient = 1;
};
INSTANCE spellFX_CHARGEWHITE_KEY_CAST (C_ParticleFXEmitKey)
{
lightrange = 100;
//pfx_ppsIsLoopingChg = 1;
emtrjmode_s = "TARGET";
emtrjeasevel = 1400.;
sfxid = "MFX_CHARGEWHITE_Cast";
sfxisambient = 1;
emCheckCollision = 1;
};
INSTANCE spellFX_CHARGEWHITE_KEY_COLLIDE (C_ParticleFXEmitKey)
{
pfx_flygravity_s = "0 0.0002 0";
emtrjeasevel = 0.000001;
};
instance spellFX_CHARGEWHITE_InVEST_BLAST1 (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_INVESTBLAST";
visAlpha = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_CHARGEWHITE_invest1";
sfxisambient = 1;
visAlpha = 0.3;
};
instance spellFX_CHARGEWHITE_InVEST_BLAST2 (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_INVESTBLAST";
visAlpha = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_CHARGEWHITE_invest2";
sfxisambient = 1;
visAlpha = 0.5;
};
instance spellFX_CHARGEWHITE_InVEST_BLAST3 (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_INVESTBLAST";
visAlpha = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_CHARGEWHITE_invest3";
sfxisambient = 1;
visAlpha = 0.8;
};
instance spellFX_CHARGEWHITE_InVEST_BLAST4 (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_INVESTBLAST";
visAlpha = 1;
emtrjmode_s = "FIXED";
sfxid = "MFX_CHARGEWHITE_invest4";
sfxisambient = 1;
visAlpha = 1;
};
// KOLLISION MIT STATISCHER WELT: KEINE PERCEPTION
instance spellFX_CHARGEWHITE_COLLIDE (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_Collide";
visAlpha = 1;
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightPresetname = "FIRESMALL";
};
INSTANCE spellFX_CHARGEWHITE_COLLIDE_KEY_INVEST_1 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide"; sfxid = "MFX_CHARGEWHITE_Collide1"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDE_KEY_INVEST_2 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide"; sfxid = "MFX_CHARGEWHITE_Collide2"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDE_KEY_INVEST_3 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide"; sfxid = "MFX_CHARGEWHITE_Collide3"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDE_KEY_INVEST_4 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide"; sfxid = "MFX_CHARGEWHITE_Collide4"; };
instance spellFX_CHARGEWHITE_COLLIDEDYNFX (CFx_Base_Proto)
{
visname_S = "MFX_CHARGEWHITE_Collide1";
visAlpha = 1;
emTrjOriginNode = "BIP01";
emtrjmode_s = "FIXED";
lightPresetname = "FIRESMALL";
};
INSTANCE spellFX_CHARGEWHITE_COLLIDEDYNFX_KEY_INVEST_1 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide1"; sfxid = "MFX_CHARGEWHITE_Collide1"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDEDYNFX_KEY_INVEST_2 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide2"; sfxid = "MFX_CHARGEWHITE_Collide2"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDEDYNFX_KEY_INVEST_3 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide3"; sfxid = "MFX_CHARGEWHITE_Collide3"; };
INSTANCE spellFX_CHARGEWHITE_COLLIDEDYNFX_KEY_INVEST_4 (C_ParticleFXEmitKey) { visname_S = "MFX_CHARGEWHITE_Collide4"; sfxid = "MFX_CHARGEWHITE_Collide4"; };
AI/Magic/Spells
// ******************
// SPL_ChargeWhite
// ******************
const int SPL_Cost_ChargeWhite = 100; //4*25
const int STEP_ChargeWhite = 40;
const int SPL_Damage_ChargeWhite = 50;
INSTANCE Spell_ChargeWhite (C_Spell_Proto)
{
time_per_mana = 25;
damage_per_level = SPL_Damage_ChargeWhite;
damageType = DAM_MAGIC;
canTurnDuringInvest = TRUE;
};
func int Spell_Logic_ChargeWhite (var int manaInvested)
{
if (self.attribute[ATR_MANA]<STEP_ChargeWhite)
{
return SPL_DONTINVEST;
};
if (manaInvested <= STEP_ChargeWhite*1)
{
self.aivar[AIV_SpellLevel] = 1; //Start mit Level 1
return SPL_STATUS_CANINVEST_NO_MANADEC;
}
else if (manaInvested > (STEP_ChargeWhite*1))
&& (self.aivar[AIV_SpellLevel] <= 1)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeWhite);
if (self.attribute[ATR_MANA]<0)
{
self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SpellLevel] = 2;
return SPL_NEXTLEVEL; //Lev2 erreicht
}
else if (manaInvested > (STEP_ChargeWhite*2))
&& (self.aivar[AIV_SpellLevel] <= 2)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeWhite);
if (self.attribute[ATR_MANA]<0)
{
self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SpellLevel] = 3;
return SPL_NEXTLEVEL; //Lev3 erreicht
}
else if (manaInvested > (STEP_ChargeWhite*3))
&& (self.aivar[AIV_SpellLevel] <= 3)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeWhite);
if (self.attribute[ATR_MANA]<0)
{
self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SpellLevel] = 4;
return SPL_NEXTLEVEL; //Lev4 erreicht
}
else if (manaInvested > (STEP_ChargeWhite*3))
&& (self.aivar[AIV_SpellLevel] == 4)
{
return SPL_DONTINVEST;
};
return SPL_STATUS_CANINVEST_NO_MANADEC;
};
func void Spell_Cast_ChargeWhite(var int spellLevel)
{
self.attribute[ATR_MANA] = (self.attribute[ATR_MANA] - STEP_ChargeWhite);
if (self.attribute[ATR_MANA]<0)
{
self.attribute[ATR_MANA]=0;
};
self.aivar[AIV_SelectSpell] += 1;
};
no i runa :
INSTANCE ItRu_ChargeWhite (C_Item)
{
name = NAME_Rune;
mainflag = ITEM_KAT_RUNE;
flags = 0;
value = Value_Ru_ChargeFireball;
visual = "ItRu_ChargeWhite.3DS";
material = MAT_STONE;
mag_circle = 2;
spell = SPL_ChargeWhite;
wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER_BLUE";
description = NAME_SPL_ChargeWhite;
TEXT [0] = NAME_Mag_Circle;
COUNT [0] = mag_circle;
TEXT [1] = NAME_MinManakosten;
COUNT [1] = 125;
TEXT [2] = NAME_ManakostenMax;
COUNT [2] = 100;
TEXT [3] = NAME_Addon_Damage_Min;
count [3] = 50;
TEXT [4] = NAME_Damage_Max;
COUNT [4] = (SPL_Damage_ChargeWhite*4);
TEXT [5] = NAME_Value;
COUNT [5] = value;
};
Mam też oczywiście plik text.d ale myślę, że to jest nie ważne w tym przypadku
