diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-06-01 01:54:49 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-06-01 01:56:31 -0300 |
| commit | 9b49eec185d94d91ae958aca7b0dfcb4b211cff9 (patch) | |
| tree | f1387897442364dbab16a4368eb745a86e047787 /src/magic.cc | |
| parent | da5672b1e903cce47b9d76b2ffd19b0c42bd80f3 (diff) | |
| download | game-9b49eec185d94d91ae958aca7b0dfcb4b211cff9.tar.gz game-9b49eec185d94d91ae958aca7b0dfcb4b211cff9.zip | |
magic init functions
Diffstat (limited to 'src/magic.cc')
| -rw-r--r-- | src/magic.cc | 827 |
1 files changed, 826 insertions, 1 deletions
diff --git a/src/magic.cc b/src/magic.cc index 5d6acad..3a7ed45 100644 --- a/src/magic.cc +++ b/src/magic.cc @@ -4,6 +4,11 @@ #include "stubs.hh" +#include <fstream> + +static TSpellList SpellList[256]; +static TCircle Circle[10]; + static const char SpellSyllable[51][6] = { "", "al", @@ -146,9 +151,829 @@ void CheckMana(TCreature *Creature, int ManaPoints, int SoulPoints, int Delay){ Creature->Skills[SKILL_MAGIC_LEVEL]->Increase(ManaPoints); } - // NOTE(fusion): Maintain largest exhaust? uint32 EarliestSpellTime = ServerMilliseconds + Delay; if(Creature->EarliestSpellTime < EarliestSpellTime){ Creature->EarliestSpellTime = EarliestSpellTime; } } + +static void InitCircles(void){ + char FileName[4096]; + snprintf(FileName, sizeof(FileName), "%s/circles.dat", DATAPATH); + std::ifstream IN(FileName, std::ios_base::in); + if(IN.fail()){ + error("InitCircles: Kann Datei %s nicht öffnen.\n", FileName); + throw "Cannot open \"circles.dat\""; + } + + // TODO(fusion): This doesn't make a lot of sense because we have `Width` + // and `Height` but not `CenterX` and `CenterY`. + int Width, Height, Center; + IN >> Width >> Height >> Center; + + if(Width < 0 || Width > 21 || Height < 0 || Height > 21){ + error("InitCircles: Ungültiges Dateiformat.\n"); + throw "Cannot process \"circles.dat\""; + } + + if(Center > 0){ + for(int Y = 0; Y < Height; Y += 1) + for(int X = 0; X < Width; X += 1){ + int Radius; + IN >> Radius; + if(Radius < NARRAY(Circle)){ + int PointIndex = Circle[Radius].Count; + ASSERT(PointIndex < 32); + Circle[Radius].x[PointIndex] = X - Center; + Circle[Radius].y[PointIndex] = Y - Center; + Circle[Radius].Count += 1; + } + } + } + + // TODO(fusion): Probably check if we parsed the file successfully? + //if(IN.fail()) { throw "..."; } +} + +static TSpellList *CreateSpell(int SpellNr, ...){ + ASSERT(SpellNr < NARRAY(SpellList)); + int SyllableCount = 0; + TSpellList *Spell = &SpellList[SpellNr]; + + va_list ap; + va_start(ap, SpellNr); + while(true){ + const char *Syllable = va_arg(ap, const char*); + if(!Syllable || Syllable[0] == 0){ + break; + } + + for(int SyllableNr = 0; + SyllableNr < NARRAY(SpellSyllable); + SyllableNr += 1){ + if(strcmp(SpellSyllable[SyllableNr], Syllable) == 0){ + // TODO(fusion): I'm not sure it is a good idea to throw an + // exception between `va_start` and `va_end`. + if(SyllableCount > NARRAY(Spell->Syllable)){ + error("CreateSpell: Silbenzahl überschritten bei Spell %d.\n", SpellNr); + throw "Spell has too many syllables"; + } + + Spell->Syllable[SyllableCount] = (uint8)SyllableNr; + SyllableCount += 1; + break; + } + } + } + va_end(ap); + return Spell; +} + +void InitSpells(void){ + TSpellList *Spell; + + Spell = CreateSpell(1, "ex", "ura", ""); + Spell->Mana = 25; + Spell->Level = 9; + Spell->Flags = 8; + Spell->Comment = "Light Healing"; + + Spell = CreateSpell(2, "ex", "ura", "gran", ""); + Spell->Mana = 40; + Spell->Level = 11; + Spell->Flags = 8; + Spell->Comment = "Intense Healing"; + + Spell = CreateSpell(3, "ex", "ura", "vita", ""); + Spell->Mana = 160; + Spell->Level = 20; + Spell->Flags = 8; + Spell->Comment = "Ultimate Healing"; + + Spell = CreateSpell(4, "ad", "ura", "gran", ""); + Spell->Mana = 240; + Spell->Level = 15; + Spell->RuneGr = 79; + Spell->RuneNr = 5; + Spell->Flags = 8; + Spell->Amount = 1; + Spell->RuneLevel = 1; + Spell->SoulPoints = 2; + Spell->Comment = "Intense Healing Rune"; + + Spell = CreateSpell(5, "ad", "ura", "vita", ""); + Spell->Mana = 400; + Spell->Level = 24; + Spell->RuneGr = 79; + Spell->RuneNr = 13; + Spell->Flags = 8; + Spell->Amount = 1; + Spell->RuneLevel = 4; + Spell->SoulPoints = 3; + Spell->Comment = "Ultimate Healing Rune"; + + Spell = CreateSpell(6, "ut", "ani", "hur", ""); + Spell->Mana = 60; + Spell->Level = 14; + Spell->Flags = 2; + Spell->Comment = "Haste"; + + Spell = CreateSpell(7, "ad", "ori", ""); + Spell->Mana = 120; + Spell->Level = 15; + Spell->RuneGr = 79; + Spell->RuneNr = 27; + Spell->Flags = 9; + Spell->Amount = 5; + Spell->RuneLevel = 0; + Spell->SoulPoints = 1; + Spell->Comment = "Light Magic Missile"; + + Spell = CreateSpell(8, "ad", "ori", "gran", ""); + Spell->Mana = 280; + Spell->Level = 25; + Spell->RuneGr = 79; + Spell->RuneNr = 51; + Spell->Flags = 9; + Spell->Amount = 5; + Spell->RuneLevel = 4; + Spell->SoulPoints = 2; + Spell->Comment = "Heavy Magic Missile"; + + Spell = CreateSpell(9, "ut", "evo", "res", "para", ""); + Spell->Mana = 0; + Spell->Level = 25; + Spell->Flags = 1; + Spell->Comment = "Summon Creature"; + + Spell = CreateSpell(10, "ut", "evo", "lux", ""); + Spell->Mana = 20; + Spell->Level = 8; + Spell->Flags = 0; + Spell->Comment = "Light"; + + Spell = CreateSpell(11, "ut", "evo", "gran", "lux", ""); + Spell->Mana = 60; + Spell->Level = 13; + Spell->Flags = 0; + Spell->Comment = "Great Light"; + + Spell = CreateSpell(12, "ad", "eta", "sio", ""); + Spell->Mana = 200; + Spell->Level = 16; + Spell->RuneGr = 79; + Spell->RuneNr = 30; + Spell->Flags = 1; + Spell->Amount = 1; + Spell->RuneLevel = 5; + Spell->SoulPoints = 3; + Spell->Comment = "Convince Creature"; + + Spell = CreateSpell(13, "ex", "evo", "mort", "hur", ""); + Spell->Mana = 250; + Spell->Level = 38; + Spell->Flags = 1; + Spell->Comment = "Energy Wave"; + + Spell = CreateSpell(14, "ad", "evo", "ina", ""); + Spell->Mana = 600; + Spell->Level = 27; + Spell->RuneGr = 79; + Spell->RuneNr = 31; + Spell->Flags = 0; + Spell->Amount = 1; + Spell->RuneLevel = 4; + Spell->SoulPoints = 2; + Spell->Comment = "Chameleon"; + + Spell = CreateSpell(15, "ad", "ori", "flam", ""); + Spell->Mana = 160; + Spell->Level = 17; + Spell->RuneGr = 79; + Spell->RuneNr = 42; + Spell->Flags = 9; + Spell->Amount = 2; + Spell->RuneLevel = 2; + Spell->SoulPoints = 2; + Spell->Comment = "Fireball"; + + Spell = CreateSpell(16, "ad", "ori", "gran", "flam", ""); + Spell->Mana = 480; + Spell->Level = 23; + Spell->RuneGr = 79; + Spell->RuneNr = 44; + Spell->Flags = 9; + Spell->Amount = 2; + Spell->RuneLevel = 4; + Spell->SoulPoints = 3; + Spell->Comment = "Great Fireball"; + + Spell = CreateSpell(17, "ad", "evo", "mas", "flam", ""); + Spell->Mana = 600; + Spell->Level = 27; + Spell->RuneGr = 79; + Spell->RuneNr = 45; + Spell->Flags = 1; + Spell->Amount = 2; + Spell->RuneLevel = 5; + Spell->SoulPoints = 4; + Spell->Comment = "Firebomb"; + + Spell = CreateSpell(18, "ad", "evo", "mas", "hur", ""); + Spell->Mana = 720; + Spell->Level = 31; + Spell->RuneGr = 79; + Spell->RuneNr = 53; + Spell->Flags = 1; + Spell->Amount = 3; + Spell->RuneLevel = 6; + Spell->SoulPoints = 4; + Spell->Comment = "Explosion"; + + Spell = CreateSpell(19, "ex", "evo", "flam", "hur", ""); + Spell->Mana = 80; + Spell->Level = 18; + Spell->Flags = 9; + Spell->Comment = "Fire Wave"; + + Spell = CreateSpell(20, "ex", "iva", "para", ""); + Spell->Mana = 20; + Spell->Level = 8; + Spell->Flags = 0; + Spell->Comment = "Find Person"; + + Spell = CreateSpell(21, "ad", "ori", "vita", "vis", ""); + Spell->Mana = 880; + Spell->Level = 45; + Spell->RuneGr = 79; + Spell->RuneNr = 8; + Spell->Flags = 1; + Spell->Amount = 1; + Spell->RuneLevel = 15; + Spell->SoulPoints = 5; + Spell->Comment = "Sudden Death"; + + Spell = CreateSpell(22, "ex", "evo", "vis", "lux", ""); + Spell->Mana = 100; + Spell->Level = 23; + Spell->Flags = 1; + Spell->Comment = "Energy Beam"; + + Spell = CreateSpell(23, "ex", "evo", "gran", "vis", "lux", ""); + Spell->Mana = 200; + Spell->Level = 29; + Spell->Flags = 1; + Spell->Comment = "Great Energy Beam"; + + Spell = CreateSpell(24, "ex", "evo", "gran", "mas", "vis", ""); + Spell->Mana = 1200; + Spell->Level = 60; + Spell->Flags = 3; + Spell->Comment = "Ultimate Explosion"; + + Spell = CreateSpell(25, "ad", "evo", "grav", "flam", ""); + Spell->Mana = 240; + Spell->Level = 15; + Spell->RuneGr = 79; + Spell->RuneNr = 41; + Spell->Flags = 1; + Spell->Amount = 3; + Spell->RuneLevel = 1; + Spell->SoulPoints = 1; + Spell->Comment = "Fire Field"; + + Spell = CreateSpell(26, "ad", "evo", "grav", "pox", ""); + Spell->Mana = 200; + Spell->Level = 14; + Spell->RuneGr = 79; + Spell->RuneNr = 25; + Spell->Flags = 1; + Spell->Amount = 3; + Spell->RuneLevel = 0; + Spell->SoulPoints = 1; + Spell->Comment = "Poison Field"; + + Spell = CreateSpell(27, "ad", "evo", "grav", "vis", ""); + Spell->Mana = 320; + Spell->Level = 18; + Spell->RuneGr = 79; + Spell->RuneNr = 17; + Spell->Flags = 1; + Spell->Amount = 3; + Spell->RuneLevel = 3; + Spell->SoulPoints = 2; + Spell->Comment = "Energy Field"; + + Spell = CreateSpell(28, "ad", "evo", "mas", "grav", "flam", ""); + Spell->Mana = 780; + Spell->Level = 33; + Spell->RuneGr = 79; + Spell->RuneNr = 43; + Spell->Flags = 1; + Spell->Amount = 4; + Spell->RuneLevel = 6; + Spell->SoulPoints = 4; + Spell->Comment = "Fire Wall"; + + Spell = CreateSpell(29, "ex", "ana", "pox", ""); + Spell->Mana = 30; + Spell->Level = 10; + Spell->Flags = 0; + Spell->Comment = "Antidote"; + + Spell = CreateSpell(30, "ad", "ito", "grav", ""); + Spell->Mana = 120; + Spell->Level = 17; + Spell->RuneGr = 79; + Spell->RuneNr = 1; + Spell->Flags = 0; + Spell->Amount = 3; + Spell->RuneLevel = 3; + Spell->SoulPoints = 2; + Spell->Comment = "Destroy Field"; + + Spell = CreateSpell(31, "ad", "ana", "pox", ""); + Spell->Mana = 200; + Spell->Level = 15; + Spell->RuneGr = 79; + Spell->RuneNr = 6; + Spell->Flags = 0; + Spell->Amount = 1; + Spell->RuneLevel = 0; + Spell->SoulPoints = 1; + Spell->Comment = "Antidote Rune"; + + Spell = CreateSpell(32, "ad", "evo", "mas", "grav", "pox", ""); + Spell->Mana = 640; + Spell->Level = 29; + Spell->RuneGr = 79; + Spell->RuneNr = 29; + Spell->Flags = 1; + Spell->Amount = 4; + Spell->RuneLevel = 5; + Spell->SoulPoints = 3; + Spell->Comment = "Poison Wall"; + + Spell = CreateSpell(33, "ad", "evo", "mas", "grav", "vis", ""); + Spell->Mana = 1000; + Spell->Level = 41; + Spell->RuneGr = 79; + Spell->RuneNr = 19; + Spell->Flags = 1; + Spell->Amount = 4; + Spell->RuneLevel = 9; + Spell->SoulPoints = 5; + Spell->Comment = "Energy Wall"; + + Spell = CreateSpell(34, "al", "evo", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Item"; + + Spell = CreateSpell(35, "al", "evo", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Item"; + + Spell = CreateSpell(37, "al", "ani", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Move"; + + Spell = CreateSpell(38, "ut", "evo", "res", "ina", "para", ""); + Spell->Mana = 100; + Spell->Level = 23; + Spell->Flags = 0; + Spell->Comment = "Creature Illusion"; + + Spell = CreateSpell(39, "ut", "ani", "gran", "hur", ""); + Spell->Mana = 100; + Spell->Level = 20; + Spell->Flags = 2; + Spell->Comment = "Strong Haste"; + + Spell = CreateSpell(40, "al", "evo", "cogni", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Experience"; + + Spell = CreateSpell(41, "al", "eta", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Change Data"; + + Spell = CreateSpell(42, "ex", "evo", "pan", ""); + Spell->Mana = 120; + Spell->Level = 14; + Spell->SoulPoints = 1; + Spell->Flags = 0; + Spell->Comment = "Food"; + + Spell = CreateSpell(44, "ut", "amo", "vita", ""); + Spell->Mana = 50; + Spell->Level = 14; + Spell->Flags = 0; + Spell->Comment = "Magic Shield"; + + Spell = CreateSpell(45, "ut", "ana", "vid", ""); + Spell->Mana = 440; + Spell->Level = 35; + Spell->Flags = 0; + Spell->Comment = "Invisible"; + + Spell = CreateSpell(46, "al", "evo", "cogni", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Skill Experience"; + + Spell = CreateSpell(47, "al", "ani", "sio", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Teleport to Friend"; + + Spell = CreateSpell(48, "ex", "evo", "con", "pox", ""); + Spell->Mana = 130; + Spell->Level = 16; + Spell->SoulPoints = 2; + Spell->Flags = 0; + Spell->Comment = "Poisoned Arrow"; + + Spell = CreateSpell(49, "ex", "evo", "con", "flam", ""); + Spell->Mana = 290; + Spell->Level = 25; + Spell->SoulPoints = 3; + Spell->Flags = 0; + Spell->Comment = "Explosive Arrow"; + + Spell = CreateSpell(50, "ad", "evo", "res", "flam", ""); + Spell->Mana = 600; + Spell->Level = 27; + Spell->RuneGr = 79; + Spell->RuneNr = 48; + Spell->Flags = 3; + Spell->Amount = 2; + Spell->RuneLevel = 7; + Spell->SoulPoints = 3; + Spell->Comment = "Soulfire"; + + Spell = CreateSpell(51, "ex", "evo", "con", ""); + Spell->Mana = 100; + Spell->Level = 13; + Spell->SoulPoints = 1; + Spell->Flags = 0; + Spell->Comment = "Conjure Arrow"; + + Spell = CreateSpell(52, "al", "liber", "sio", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Retrieve Friend"; + + Spell = CreateSpell(53, "al", "evo", "res", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Summon Wild Creature"; + + Spell = CreateSpell(54, "ad", "ana", "ani", ""); + Spell->Mana = 1400; + Spell->Level = 54; + Spell->RuneGr = 79; + Spell->RuneNr = 18; + Spell->Flags = 3; + Spell->Amount = 1; + Spell->RuneLevel = 18; + Spell->SoulPoints = 3; + Spell->Comment = "Paralyze"; + + Spell = CreateSpell(55, "ad", "evo", "mas", "vis", ""); + Spell->Mana = 880; + Spell->Level = 37; + Spell->RuneGr = 79; + Spell->RuneNr = 2; + Spell->Flags = 3; + Spell->Amount = 2; + Spell->RuneLevel = 10; + Spell->SoulPoints = 5; + Spell->Comment = "Energybomb"; + + Spell = CreateSpell(56, "ex", "evo", "gran", "mas", "pox", ""); + Spell->Mana = 600; + Spell->Level = 50; + Spell->Flags = 3; + Spell->Comment = "Poison Storm"; + + Spell = CreateSpell(57, "om", "ana", "liber", "para", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Banish Account"; + + Spell = CreateSpell(58, "al", "iva", "tera", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Position"; + + Spell = CreateSpell(60, "om", "ani", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Temple Teleport"; + + Spell = CreateSpell(61, "om", "ana", "gran", "liber", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Delete Account"; + + Spell = CreateSpell(62, "om", "amo", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Set Namerule"; + + Spell = CreateSpell(63, "al", "evo", "vis", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Create Gold"; + + Spell = CreateSpell(64, "al", "eta", "vita", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Change Profession or Sex"; + + Spell = CreateSpell(65, "om", "isa", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Entry in Criminal Record"; + + Spell = CreateSpell(66, "om", "ana", "hora", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Namelock"; + + Spell = CreateSpell(67, "om", "ana", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Kick Player"; + + Spell = CreateSpell(68, "om", "ana", "gran", "res", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Delete Character"; + + Spell = CreateSpell(69, "om", "ana", "vis", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Banish IP Address"; + + Spell = CreateSpell(70, "om", "ana", "res", "para", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Banish Character"; + + Spell = CreateSpell(71, "al", "eta", "sio", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Invite Guests"; + + Spell = CreateSpell(72, "al", "eta", "som", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Invite Subowners"; + + Spell = CreateSpell(73, "al", "ana", "sio", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Kick Guest"; + + Spell = CreateSpell(74, "al", "eta", "grav", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Edit Door"; + + Spell = CreateSpell(75, "ut", "evo", "vis", "lux", ""); + Spell->Mana = 140; + Spell->Level = 26; + Spell->Flags = 2; + Spell->Comment = "Ultimate Light"; + + Spell = CreateSpell(76, "ex", "ani", "tera", ""); + Spell->Mana = 20; + Spell->Level = 9; + Spell->Flags = 2; + Spell->Comment = "Magic Rope"; + + Spell = CreateSpell(77, "ad", "evo", "res", "pox", ""); + Spell->Mana = 400; + Spell->Level = 21; + Spell->RuneGr = 79; + Spell->RuneNr = 32; + Spell->Flags = 3; + Spell->Amount = 1; + Spell->RuneLevel = 4; + Spell->SoulPoints = 2; + Spell->Comment = "Envenom"; + + Spell = CreateSpell(78, "ad", "ito", "tera", ""); + Spell->Mana = 200; + Spell->Level = 21; + Spell->RuneGr = 79; + Spell->RuneNr = 50; + Spell->Amount = 3; + Spell->RuneLevel = 4; + Spell->SoulPoints = 3; + Spell->Flags = 3; + Spell->Comment = "Desintegrate"; + + Spell = CreateSpell(79, "ex", "evo", "con", "mort", ""); + Spell->Mana = 140; + Spell->Level = 17; + Spell->SoulPoints = 2; + Spell->Flags = 2; + Spell->Comment = "Conjure Bolt"; + + Spell = CreateSpell(80, "ex", "ori", ""); + Spell->Mana = 0; + Spell->Level = 35; + Spell->Flags = 7; + Spell->Comment = "Berserk"; + + Spell = CreateSpell(81, "ex", "ani", "hur", "para", ""); + Spell->Mana = 50; + Spell->Level = 12; + Spell->Flags = 2; + Spell->Comment = "Levitate"; + + Spell = CreateSpell(82, "ex", "ura", "gran", "mas", "res", ""); + Spell->Mana = 150; + Spell->Level = 36; + Spell->Flags = 10; + Spell->Comment = "Mass Healing"; + + Spell = CreateSpell(83, "ad", "ana", "mort", ""); + Spell->Mana = 600; + Spell->Level = 27; + Spell->RuneGr = 79; + Spell->RuneNr = 56; + Spell->Amount = 1; + Spell->RuneLevel = 4; + Spell->SoulPoints = 5; + Spell->Flags = 3; + Spell->Comment = "Animate Dead"; + + Spell = CreateSpell(84, "ex", "ura", "sio", "para", ""); + Spell->Mana = 70; + Spell->Level = 18; + Spell->Flags = 10; + Spell->Comment = "Heal Friend"; + + Spell = CreateSpell(85, "ex", "ana", "mas", "mort", ""); + Spell->Mana = 500; + Spell->Level = 30; + Spell->Flags = 3; + Spell->Comment = "Undead Legion"; + + Spell = CreateSpell(86, "ad", "evo", "grav", "tera", ""); + Spell->Mana = 750; + Spell->Level = 32; + Spell->RuneGr = 79; + Spell->RuneNr = 33; + Spell->Amount = 3; + Spell->RuneLevel = 9; + Spell->SoulPoints = 5; + Spell->Flags = 3; + Spell->Comment = "Magic Wall"; + + Spell = CreateSpell(87, "ex", "ori", "mort", ""); + Spell->Mana = 20; + Spell->Level = 11; + Spell->Flags = 3; + Spell->Comment = "Force Strike"; + + Spell = CreateSpell(88, "ex", "ori", "vis", ""); + Spell->Mana = 20; + Spell->Level = 12; + Spell->Flags = 3; + Spell->Comment = "Energy Strike"; + + Spell = CreateSpell(89, "ex", "ori", "flam", ""); + Spell->Mana = 20; + Spell->Level = 12; + Spell->Flags = 3; + Spell->Comment = "Flame Strike"; + + Spell = CreateSpell(90, "ex", "ana", "ina", ""); + Spell->Mana = 200; + Spell->Level = 26; + Spell->Flags = 2; + Spell->Comment = "Cancel Invisibility"; + + Spell = CreateSpell(91, "ad", "evo", "mas", "pox", ""); + Spell->Mana = 520; + Spell->Level = 25; + Spell->RuneGr = 79; + Spell->RuneNr = 26; + Spell->Flags = 3; + Spell->Amount = 2; + Spell->RuneLevel = 4; + Spell->SoulPoints = 2; + Spell->Comment = "Poisonbomb"; + + Spell = CreateSpell(92, "ex", "eta", "vis", ""); + Spell->Mana = 80; + Spell->Level = 41; + Spell->Flags = 2; + Spell->Comment = "Enchant Staff"; + + Spell = CreateSpell(93, "ex", "eta", "res", ""); + Spell->Mana = 30; + Spell->Level = 20; + Spell->Flags = 3; + Spell->Comment = "Challenge"; + + Spell = CreateSpell(94, "ex", "evo", "grav", "vita", ""); + Spell->Mana = 220; + Spell->Level = 27; + Spell->Flags = 3; + Spell->Comment = "Wild Growth"; + + Spell = CreateSpell(95, "ex", "evo", "con", "vis", ""); + Spell->Mana = 800; + Spell->Level = 59; + Spell->SoulPoints = 3; + Spell->Flags = 2; + Spell->Comment = "Power Bolt"; + + Spell = CreateSpell(96, "al", "iva", "cogni", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Get Quest Value"; + + Spell = CreateSpell(97, "al", "eta", "cogni", "para", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Set Quest Value"; + + Spell = CreateSpell(98, "al", "ito", "tera", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Desintegrate Spell"; + + Spell = CreateSpell(99, "al", "ani", "hur", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Levitate Gamemaster"; + + Spell = CreateSpell(100, "al", "ana", "cogni", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Clear Quest Values"; + + Spell = CreateSpell(101, "al", "ito", "mas", "res", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Kill All Creatures"; + + Spell = CreateSpell(102, "al", "evo", "mas", "res", "para", ""); + Spell->Mana = 0; + Spell->Level = 0; + Spell->Flags = 0; + Spell->Comment = "Start Monsterraid"; +} + +void InitMagic(void){ + InitCircles(); + InitSpells(); + InitLog("banish"); +} + +void ExitMagic(void){ + // no-op +} |
