aboutsummaryrefslogtreecommitdiff
path: root/reference/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/game.c')
-rw-r--r--reference/game.c1473
1 files changed, 0 insertions, 1473 deletions
diff --git a/reference/game.c b/reference/game.c
index 0a5f3af..9fbabaf 100644
--- a/reference/game.c
+++ b/reference/game.c
@@ -20852,1479 +20852,6 @@ void __static_initialization_and_destruction_0(int __initialize_p,int __priority
return;
}
-// MAGIC.CC
-
-void SpellFailed(ulong CreatureID)
-
-{
- TCreature *pTVar1;
- Object local_1c [6];
-
- pTVar1 = GetCreature(CreatureID);
- if (pTVar1 == (TCreature *)0x0) {
- error("SpellFailed: Kreatur existiert nicht.\n");
- }
- else {
- local_1c[0].ObjectID = (pTVar1->CrObject).ObjectID;
- GraphicalEffect(local_1c,3);
- }
- return;
-}
-
-
-
-void CharacterRightSpell(ulong CreatureID,int SpellNr,char (*SpellStr) [512])
-
-{
- TCreature *cr_00;
- undefined4 *puVar1;
- TCreature *cr;
- char (*pacVar2) [512];
-
- // try { // try from 08088582 to 080887ce has its CatchHandler @ 080887d0
- cr_00 = GetCreature(CreatureID);
- if (cr_00 == (TCreature *)0x0) {
- error("CharacterRightSpell: Kreatur existiert nicht.\n");
- puVar1 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar1 = 0xffffffff;
- // WARNING: Subroutine does not return
- __cxa_throw(puVar1,&RESULT::typeinfo,0);
- }
- if (cr_00->Type != PLAYER) {
- return;
- }
- switch(SpellNr) {
- case 0x22:
- pacVar2 = SpellStr + 3;
- goto LAB_080885b7;
- case 0x23:
- pacVar2 = (char (*) [512])0x0;
-LAB_080885b7:
- CreateThing(cr_00,SpellStr[2],*pacVar2);
- break;
- case 0x25:
- Teleport(cr_00,SpellStr[2]);
- break;
- case 0x28:
- pacVar2 = (char (*) [512])0x0;
- goto LAB_080885fd;
- case 0x29:
- ChangeData(cr_00,SpellStr[2]);
- break;
- case 0x2e:
- pacVar2 = SpellStr + 4;
-LAB_080885fd:
- CreateKnowledge(cr_00,SpellStr[3],*pacVar2);
- break;
- case 0x2f:
- TeleportToCreature(cr_00,SpellStr[3]);
- break;
- case 0x34:
- TeleportPlayerToMe(cr_00,SpellStr[3]);
- break;
- case 0x35:
- SummonCreature(cr_00,0,SpellStr[3],true);
- break;
- case 0x3a:
- GetPosition(cr_00);
- break;
- case 0x3f:
- CreateMoney(cr_00,SpellStr[3]);
- break;
- case 0x40:
- ChangeProfession(cr_00,SpellStr[3]);
- break;
- case 0x47:
- EditGuests(cr_00);
- break;
- case 0x48:
- EditSubowners(cr_00);
- break;
- case 0x49:
- KickGuest(cr_00,SpellStr[3]);
- break;
- case 0x4a:
- EditNameDoor(cr_00);
- break;
- case 0x60:
- GetQuestValue(cr_00,SpellStr[3]);
- break;
- case 0x61:
- SetQuestValue(cr_00,SpellStr[3],SpellStr[4]);
- break;
- case 0x62:
- CleanupField(cr_00);
- break;
- case 99:
- MagicClimbing(cr_00,SpellStr[3]);
- break;
- case 100:
- ClearQuestValues(cr_00);
- break;
- case 0x65:
- KillAllMonsters(cr_00,0x12,2);
- break;
- case 0x66:
- StartMonsterraid(cr_00,SpellStr[4]);
- }
- return;
-}
-
-
-
-void AccountRightSpell(ulong CreatureID,int SpellNr,char (*SpellStr) [512])
-
-{
- TCreature *cr_00;
- int iVar1;
- undefined4 *puVar2;
- TCreature *cr;
-
- // try { // try from 08088805 to 080889de has its CatchHandler @ 080889e0
- cr_00 = GetCreature(CreatureID);
- if (cr_00 != (TCreature *)0x0) {
- if (cr_00->Type == PLAYER) {
- switch(SpellNr) {
- case 0x39:
- iVar1 = __strtol_internal(SpellStr + 4,0,10,0);
- BanishAccount(cr_00,SpellStr[3],iVar1,SpellStr[5]);
- break;
- case 0x3c:
- HomeTeleport(cr_00,SpellStr[2]);
- break;
- case 0x3d:
- DeleteAccount(cr_00,SpellStr[4],SpellStr[5]);
- break;
- case 0x3e:
- SetNameRule(cr_00,SpellStr[2]);
- break;
- case 0x41:
- Notation(cr_00,SpellStr[2],SpellStr[3]);
- break;
- case 0x42:
- NameLock(cr_00,SpellStr[3]);
- break;
- case 0x43:
- KickPlayer(cr_00,SpellStr[2]);
- break;
- case 0x44:
- DeleteCharacter(cr_00,SpellStr[4],SpellStr[5]);
- break;
- case 0x45:
- IPBanishment(cr_00,SpellStr[3],SpellStr[4]);
- break;
- case 0x46:
- iVar1 = __strtol_internal(SpellStr + 4,0,10,0);
- BanishCharacter(cr_00,SpellStr[3],iVar1,SpellStr[5]);
- }
- }
- return;
- }
- error("AccountRightSpell: Kreatur existiert nicht.\n");
- puVar2 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar2 = 0xffffffff;
- // WARNING: Subroutine does not return
- __cxa_throw(puVar2,&RESULT::typeinfo,0);
-}
-
-
-
-void CastSpell(ulong CreatureID,int SpellNr,char (*SpellStr) [512])
-
-{
- bool bVar1;
- TCreature *cr_00;
- undefined4 *puVar2;
- byte bVar3;
- TCreature *cr;
- int iVar4;
- int iVar5;
- int Damage;
-
- // try { // try from 08088a18 to 080894d1 has its CatchHandler @ 080894e6
- cr_00 = GetCreature(CreatureID);
- if (cr_00 == (TCreature *)0x0) {
- error("CastSpell: Kreatur existiert nicht.\n",CreatureID);
- puVar2 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar2 = 0xffffffff;
-LAB_0808947c:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar2,&RESULT::typeinfo,0);
- }
- CheckSpellbook(cr_00,SpellNr);
- CheckAccount(cr_00,SpellNr);
- CheckLevel(cr_00,SpellNr);
- CheckRing(cr_00,SpellNr);
- if (ServerMilliseconds < cr_00->EarliestSpellTime) {
- puVar2 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar2 = 0x31;
- goto LAB_0808947c;
- }
- if (SpellNr - 1U < 0xff) {
- bVar3 = (byte)SpellList[SpellNr].Flags & 1;
- }
- else {
- error(&DAT_080fa6c0,SpellNr);
- bVar3 = 0;
- }
- if (((bVar3 != 0) && (cr_00->Type == PLAYER)) &&
- (bVar1 = CheckRight(cr_00->ID,ATTACK_EVERYWHERE), !bVar1)) {
- iVar4 = cr_00->posz;
- iVar5 = cr_00->posy;
- bVar1 = IsProtectionZone();
- if (bVar1) {
- puVar2 = (undefined4 *)__cxa_allocate_exception(4,iVar5,iVar4);
- *puVar2 = 0x2f;
- goto LAB_0808947c;
- }
- }
- switch(SpellNr) {
- case 1:
- iVar5 = 10;
- iVar4 = 0x14;
- goto LAB_08088ad0;
- case 2:
- iVar5 = 0x14;
- iVar4 = 0x28;
- goto LAB_08088ad0;
- case 3:
- iVar5 = 0x32;
- iVar4 = 0xfa;
-LAB_08088ad0:
- ComputeDamage(cr_00,SpellNr,iVar4,iVar5);
- Heal();
- break;
- case 6:
- goto LAB_08088ba1;
- case 9:
- SummonCreature(cr_00,SpellList[SpellNr].Mana,SpellStr[3],false);
- break;
- case 10:
- goto LAB_08088c10;
- case 0xb:
- goto LAB_08088c10;
- case 0xd:
- ComputeDamage(cr_00,SpellNr,0x96,0x32);
- goto LAB_08088c8f;
- case 0x13:
- ComputeDamage(cr_00,SpellNr,0x1e,10);
- goto LAB_08088c8f;
- case 0x14:
- FindPerson();
- break;
- case 0x16:
- ComputeDamage(cr_00,SpellNr,0x3c,0x14);
- goto LAB_08088c8f;
- case 0x17:
- ComputeDamage(cr_00,SpellNr,0x78,0x50);
- goto LAB_08088c8f;
- case 0x18:
- ComputeDamage(cr_00,SpellNr,0xfa,0x32);
- goto LAB_08088e31;
- case 0x1d:
- NegatePoison();
- break;
- case 0x26:
- CreatureIllusion();
- break;
- case 0x27:
-LAB_08088ba1:
- MagicGoStrength();
- break;
- case 0x2a:
- CreateFood();
- break;
- case 0x2c:
- Shielding();
- break;
- case 0x2d:
- Invisibility();
- break;
- case 0x30:
- goto LAB_08088f60;
- case 0x31:
- goto LAB_08088f60;
- case 0x33:
- goto LAB_08088f60;
- case 0x38:
- ComputeDamage(cr_00,SpellNr,200,0x32);
- goto LAB_08088e31;
- case 0x4b:
-LAB_08088c10:
- Enlight();
- break;
- case 0x4c:
- MagicRope();
- break;
- case 0x4f:
- goto LAB_08088f60;
- case 0x50:
- ComputeDamage(cr_00,SpellNr,0x50,0x14);
- TSkill::Get((cr_00->super_TSkillBase).Skills[0]);
- TSkill::Get((cr_00->super_TSkillBase).Skills[0]);
-LAB_08088e31:
- MassCombat();
- break;
- case 0x51:
- MagicClimbing();
- break;
- case 0x52:
- ComputeDamage(cr_00,SpellNr,200,0x28);
- MassHeal();
- break;
- case 0x54:
- ComputeDamage(cr_00,SpellNr,0x78,0x28);
- HealFriend();
- break;
- case 0x55:
- MassRaiseDead();
- break;
- case 0x57:
- ComputeDamage(cr_00,SpellNr,0x2d,10);
- goto LAB_08088c8f;
- case 0x58:
- ComputeDamage(cr_00,SpellNr,0x2d,10);
- goto LAB_08088c8f;
- case 0x59:
- ComputeDamage(cr_00,SpellNr,0x2d,10);
-LAB_08088c8f:
- AngleCombat();
- break;
- case 0x5a:
- CancelInvisibility();
- break;
- case 0x5c:
- GetNewObjectType(0xd4,'Z');
- GetNewObjectType(0xc4,'Z');
- EnchantObject();
- break;
- case 0x5d:
- Challenge();
- break;
- case 0x5e:
- CreateField();
- break;
- case 0x5f:
-LAB_08088f60:
- CreateArrows();
- }
- if (SpellNr - 1U < 0xff) {
- bVar3 = (byte)SpellList[SpellNr].Flags & 1;
- }
- else {
- error(&DAT_080fa6c0,SpellNr);
- bVar3 = 0;
- }
- if (bVar3 != 0) {
- TCreature::BlockLogout(cr_00,0x3c,false);
- }
- return;
-}
-
-
-
-void RuneSpell(ulong CreatureID,int SpellNr)
-
-{
- bool bVar1;
- bool bVar2;
- TCreature *cr_00;
- undefined4 *puVar3;
- ObjectType *pOVar4;
- ObjectType *pOVar5;
- bool executed;
- TCreature *cr;
- ObjectType local_5c [4];
- Object local_4c [4];
- Object local_3c;
- Object Obj2;
- Object local_2c;
- Object Obj1;
-
- // try { // try from 0808951b to 0808966f has its CatchHandler @ 08089836
- cr_00 = GetCreature(CreatureID);
- if (cr_00 == (TCreature *)0x0) {
- error("RuneSpell: Kreatur existiert nicht.\n");
- }
- else {
- if (SpellList[SpellNr].RuneGr != '\0') {
- GetBodyObject((ulong)&local_2c,CreatureID);
- GetBodyObject((ulong)&local_3c,CreatureID);
- CheckSpellbook(cr_00,SpellNr);
- CheckAccount(cr_00,SpellNr);
- CheckLevel(cr_00,SpellNr);
- pOVar4 = (ObjectType *)SpellNr;
- CheckRing(cr_00,SpellNr);
- if (ServerMilliseconds < cr_00->EarliestSpellTime) {
- puVar3 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar3 = 0x31;
- }
- else {
- bVar1 = false;
- bVar2 = Object::exists(&local_2c);
- if (bVar2) {
- // try { // try from 0808970d to 080897f2 has its CatchHandler @ 08089836
- Object::getObjectType(local_4c);
- pOVar5 = local_5c;
- pOVar4 = (ObjectType *)0x28;
- GetSpecialObject((SPECIALMEANING)pOVar5);
- if (local_4c[0].ObjectID == local_5c[0].TypeID) {
- CheckMana(cr_00,SpellList[SpellNr].Mana,SpellList[SpellNr].SoulPoints,1000);
- GetNewObjectType((uchar)pOVar5,SpellList[SpellNr].RuneGr);
- cr = (TCreature *)local_2c.ObjectID;
- Change((Object *)&cr,pOVar5,SpellList[SpellNr].Amount);
- bVar1 = true;
- pOVar4 = pOVar5;
- }
- }
- bVar2 = Object::exists(&local_3c);
- if (bVar2) {
- Object::getObjectType((Object *)&cr);
- pOVar5 = local_5c;
- pOVar4 = (ObjectType *)0x28;
- GetSpecialObject((SPECIALMEANING)pOVar5);
- if (cr == (TCreature *)local_5c[0].TypeID) {
- // try { // try from 080896ac to 080896f0 has its CatchHandler @ 080897f5
- CheckMana(cr_00,SpellList[SpellNr].Mana,SpellList[SpellNr].SoulPoints,1000);
- GetNewObjectType((uchar)pOVar5,SpellList[SpellNr].RuneGr);
- local_4c[0].ObjectID = local_3c.ObjectID;
- Change(local_4c,pOVar5,SpellList[SpellNr].Amount);
- bVar1 = true;
- pOVar4 = pOVar5;
- }
- }
- if (bVar1) {
- cr = (TCreature *)(cr_00->CrObject).ObjectID;
- GraphicalEffect((Object *)&cr,0xe);
- return;
- }
- puVar3 = (undefined4 *)__cxa_allocate_exception(4,pOVar4);
- *puVar3 = 0x22;
- }
- goto LAB_08089630;
- }
- error("RuneSpell: Spell %d ist Runenspruch, hat aber keine Rune.\n",SpellNr);
- }
- puVar3 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar3 = 0xffffffff;
-LAB_08089630:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar3,&RESULT::typeinfo,0);
-}
-
-
-
-int TypeOfSpell(char *Text)
-
-{
- int iVar1;
- char (*s2) [6];
- int i;
- int iVar2;
-
- if (Text != (char *)0x0) {
- iVar2 = 1;
- s2 = SpellSyllable;
- do {
- s2 = s2 + 1;
- iVar1 = stricmp(Text,*s2,2);
- if (iVar1 == 0) {
- return iVar2;
- }
- iVar2 = iVar2 + 1;
- } while (iVar2 < 6);
- }
- return 0;
-}
-
-
-
-// WARNING: Variable defined which should be unmapped: Spell
-
-int FindSpell(uchar *Syllable)
-
-{
- uchar uVar1;
- int j;
- int iVar2;
- int Params;
- int iVar3;
- int iVar4;
- int local_1c;
- int i;
- int MinParams;
- int Spell;
-
- local_1c = 1;
- MinParams = 0;
- i = 100;
- iVar4 = 0x24;
- do {
- iVar3 = 0;
- iVar2 = 0;
- do {
- uVar1 = SpellList[0].Syllable[iVar4 + iVar2];
- if (uVar1 == '\x06') {
- if (Syllable[iVar2] == '\0') break;
- }
- else if (uVar1 != Syllable[iVar2]) break;
- if (uVar1 == '\x06') {
- iVar3 = iVar3 + 1;
- }
- if (uVar1 == '\0') {
- if (iVar3 < i) {
- MinParams = local_1c;
- i = iVar3;
- }
- break;
- }
- iVar2 = iVar2 + 1;
- } while (iVar2 < 10);
- local_1c = local_1c + 1;
- iVar4 = iVar4 + 0x24;
- if (0xff < local_1c) {
- return MinParams;
- }
- } while( true );
-}
-
-
-
-int FindSpell(Object *Obj)
-
-{
- bool bVar1;
- int iVar2;
- int i;
- int iVar3;
- char *Text;
- ulong local_3c [4];
- Object local_2c [7];
-
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- iVar3 = 1;
- iVar2 = 0x24;
- Object::getObjectType(local_2c);
- bVar1 = ObjectType::getFlag((ObjectType *)local_2c,RUNE);
- if (bVar1) {
- do {
- Object::getObjectType(local_2c);
- GetNewObjectType((uchar)local_3c,SpellList[0].Syllable[iVar2 + 10]);
- if (local_2c[0].ObjectID == local_3c[0]) {
- return iVar3;
- }
- iVar3 = iVar3 + 1;
- iVar2 = iVar2 + 0x24;
- } while (iVar3 < 0x100);
- return 0;
- }
- Text = &DAT_080fd940;
- }
- else {
- Text = &DAT_080fd900;
- }
- error(Text);
- return 0;
-}
-
-
-
-void GetSpellString(int SpellNr,char *Text)
-
-{
- size_t sVar1;
- int i;
- int iVar2;
-
- *Text = '\0';
- if (0xfe < SpellNr - 1U) {
- error(&DAT_080fd980);
- return;
- }
- iVar2 = 0;
- do {
- if (SpellSyllable[SpellList[SpellNr].Syllable[iVar2]][0] == '\0') break;
- strcat(Text,SpellSyllable[SpellList[SpellNr].Syllable[iVar2]]);
- if (0 < iVar2) {
- strcat(Text," ");
- }
- iVar2 = iVar2 + 1;
- } while (iVar2 < 10);
- if (*Text != '\0') {
- sVar1 = strlen(Text);
- Text[sVar1 - 1] = '\0';
- }
- return;
-}
-
-
-
-void GetMagicItemDescription(Object *Obj,char *SpellString,int *MagicLevel)
-
-{
- bool bVar1;
- int SpellNr_00;
- int SpellNr;
- char *Text;
- Object local_2c [7];
-
- *MagicLevel = 0;
- *SpellString = '\0';
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- Object::getObjectType(local_2c);
- bVar1 = ObjectType::getFlag((ObjectType *)local_2c,RUNE);
- if (bVar1) {
- local_2c[0] = (Object)Obj->ObjectID;
- SpellNr_00 = FindSpell(local_2c);
- if (SpellNr_00 == 0) {
- Object::getObjectType(local_2c);
- error("GetMagicItemDescription: Objekt %d hat keinen Zauberspruch.\n",
- local_2c[0].ObjectID);
- return;
- }
- GetSpellString(SpellNr_00,SpellString);
- *MagicLevel = (uint)SpellList[SpellNr_00].RuneLevel;
- return;
- }
- Text = &DAT_080fda00;
- }
- else {
- Text = &DAT_080fd9c0;
- }
- error(Text);
- return;
-}
-
-
-
-void GetSpellbook(ulong CharacterID,char *Buffer)
-
-{
- bool bVar1;
- bool bVar2;
- TPlayer *this;
- TPlayer **ppTVar3;
- TPlayer **ppTVar4;
- uint uVar5;
- uint uVar6;
- int i;
- int SpellNumber;
- int iVar7;
- int Level;
- uint uVar8;
- char *Text;
- bool first;
- TPlayer *pl;
- char Help [100];
-
- this = GetPlayer(CharacterID);
- if (this == (TPlayer *)0x0) {
- Text = "GetSpellbook: Spieler existiert nicht.\n";
- }
- else {
- if (Buffer != (char *)0x0) {
- uVar8 = 1;
- *Buffer = '\0';
- do {
- bVar1 = true;
- SpellNumber = 1;
- iVar7 = 0x24;
- do {
- if ((*(ushort *)(SpellList[0].Syllable + iVar7 + 0x10) == uVar8) &&
- (bVar2 = TPlayer::SpellKnown(this,SpellNumber), bVar2)) {
- if (bVar1) {
- sprintf((char *)&pl,"Spells for Level %d\n",uVar8);
- strcat(Buffer,(char *)&pl);
- bVar1 = false;
- }
- GetSpellString(SpellNumber,(char *)&pl);
- ppTVar4 = &pl;
- do {
- ppTVar3 = ppTVar4;
- uVar5 = (uint)((int)(*ppTVar3)[-0x127c].QuestValues + 0x68fU) &
- ~(uint)*ppTVar3;
- uVar6 = uVar5 & 0x80808080;
- ppTVar4 = ppTVar3 + 1;
- } while (uVar6 == 0);
- bVar2 = (uVar5 & 0x8080) == 0;
- if (bVar2) {
- uVar6 = uVar6 >> 0x10;
- }
- if (bVar2) {
- ppTVar4 = (TPlayer **)((int)ppTVar3 + 6);
- }
- if ((int)ppTVar4 + ((-3 - (uint)CARRY1((byte)uVar6,(byte)uVar6)) - (int)&pl)
- < 2) {
- error("GetSpellbook: Zauberspruch %d hat keine Zauberformel.\n",
- SpellNumber);
- }
- else {
- strcat(Buffer," ");
- strcat(Buffer,(char *)&pl);
- if (**(char **)(SpellList[0].Syllable + iVar7 + 0xc) != '\0') {
- strcat(Buffer," - ");
- strcat(Buffer,*(char **)(SpellList[0].Syllable + iVar7 + 0xc));
- if (SpellNumber == 0x50) {
- builtin_strncpy(Help,"*Level",7);
- pl = (TPlayer *)0x34203a20;
- }
- else if ((SpellNumber < 0x51) &&
- ((SpellNumber == 9 || (SpellNumber == 0xc)))) {
- Help._2_2_ = SUB42(Help._0_4_,2) & 0xff00;
- pl = (TPlayer *)0x76203a20;
- Help[0] = 'a';
- Help[1] = 'r';
- }
- else {
- sprintf((char *)&pl," : %d",
- *(undefined4 *)(SpellList[0].Syllable + iVar7 + 0x18));
- }
- strcat(Buffer,(char *)&pl);
- }
- strcat(Buffer,"\n");
- }
- }
- SpellNumber = SpellNumber + 1;
- iVar7 = iVar7 + 0x24;
- } while (SpellNumber < 0x100);
- if (!bVar1) {
- strcat(Buffer,"\n");
- }
- uVar8 = uVar8 + 1;
- } while ((int)uVar8 < 0x3d);
- return;
- }
- Text = &DAT_080fdac0;
- }
- error(Text);
- return;
-}
-
-
-
-int GetSpellLevel(int SpellNr)
-
-{
- uint uVar1;
-
- if (SpellNr - 1U < 0xff) {
- uVar1 = (uint)SpellList[SpellNr].Level;
- }
- else {
- error(&DAT_080fdb40,SpellNr);
- uVar1 = 1;
- }
- return uVar1;
-}
-
-
-
-int CheckForSpell(ulong CreatureID,char *Text)
-
-{
- int *piVar1;
- bool bVar2;
- int SpellNr;
- int iVar3;
- int iVar4;
- size_t sVar5;
- int iVar6;
- int Next;
- char (*pacVar7) [6];
- int syl;
- uint in_stack_ffffe8a0;
- uint uVar8;
- int local_1750;
- char local_174c [4];
- char SpellStr [11] [512];
- uchar Syllable [11];
- char *local_11c [4];
- undefined4 local_10c;
- istringstream IS;
- undefined4 local_104 [20];
- int local_b4;
- undefined4 local_b0;
- ios_base aiStack_ac [16];
- byte local_9c;
-
- local_1750 = 0;
- if (Text != (char *)0x0) {
- local_1750 = 1;
- pacVar7 = SpellSyllable;
- do {
- pacVar7 = pacVar7 + 1;
- iVar3 = stricmp(Text,*pacVar7,2);
- if (iVar3 == 0) goto LAB_08089ed2;
- local_1750 = local_1750 + 1;
- } while (local_1750 < 6);
- local_1750 = 0;
- }
-LAB_08089ed2:
- iVar3 = 0;
- if (local_1750 != 0) {
- if (Text != (char *)0x0) {
- strlen(Text);
- }
- uVar8 = in_stack_ffffe8a0 & 0xffffff00;
- // try { // try from 08089f11 to 08089f15 has its CatchHandler @ 0808a436
- local_11c[0] = basic_string<>::_S_construct<>();
- // try { // try from 08089f2d to 08089f31 has its CatchHandler @ 0808a413
- std::ios_base::ios_base(aiStack_ac);
- local_b0 = 0x8128950;
- // try { // try from 08089f56 to 08089f5a has its CatchHandler @ 0808a40f
- std::istream::istream((istream *)&local_10c,(streambuf *)(std::istringstream::VTT + 4));
- local_10c = 0x8128964;
- local_b0 = 0x8128978;
- // try { // try from 08089f89 to 08089f8d has its CatchHandler @ 0808a40b
- std::stringbuf::stringbuf((stringbuf *)local_104,local_11c,8,uVar8);
- // try { // try from 08089f95 to 08089f99 has its CatchHandler @ 0808a3a5
- std::ios::init((EVP_PKEY_CTX *)&local_b0);
- LOCK();
- piVar1 = (int *)(local_11c[0] + -4);
- iVar3 = *piVar1;
- *piVar1 = *piVar1 + -1;
- UNLOCK();
- if (iVar3 < 1) {
- // try { // try from 0808a380 to 0808a384 has its CatchHandler @ 0808a429
- std::__default_alloc_template<true,0>::deallocate
- (local_11c[0] + -0xc,*(int *)(local_11c[0] + -8) + 0xd);
- }
- SpellStr[10][0x1fc] = (char)local_1750;
- strcpy(local_174c,SpellSyllable[local_1750]);
- // try { // try from 08089ff2 to 0808a0d9 has its CatchHandler @ 0808a5e0
- std::istream::get();
- std::istream::get();
- SpellStr[10][0x1fd] = '\0';
- SpellStr[0][0x1fc] = '\0';
- iVar3 = 1;
- if ((local_9c & 2) == 0) {
- while( true ) {
- while( true ) {
- iVar4 = std::istream::peek();
- bVar2 = isSpace(iVar4);
- if (!bVar2) break;
- std::istream::get();
- }
- if (iVar4 == 0x22) {
- // try { // try from 0808a32b to 0808a36d has its CatchHandler @ 0808a5e0
- std::istream::get();
- std::istream::get((char *)&local_10c,(int)(SpellStr[iVar3 + -1] + 0x1fc),-2);
- std::istream::get();
- }
- else {
- std::istream::get((char *)&local_10c,(int)(SpellStr[iVar3 + -1] + 0x1fc),'d');
- sVar5 = strlen(SpellStr[iVar3 + -1] + 0x1fc);
- if (sVar5 == 99) {
- local_10c = 0x8128964;
- local_b0 = 0x8128978;
- local_104[0] = 0x8128a08;
- // try { // try from 0808a31b to 0808a31f has its CatchHandler @ 0808a43a
- std::string::_Rep::_M_dispose((allocator *)(local_b4 + -0xc));
- goto LAB_0808a2a8;
- }
- }
- if (SpellStr[iVar3 + -1][0x1fc] == '\0') break;
- iVar4 = 1;
- pacVar7 = SpellSyllable;
- do {
- pacVar7 = pacVar7 + 1;
- iVar6 = stricmp(SpellStr[iVar3 + -1] + 0x1fc,*pacVar7,-1);
- if (iVar6 == 0) {
- SpellStr[10][iVar3 + 0x1fc] = (char)iVar4;
- }
- iVar4 = iVar4 + 1;
- } while (iVar4 < 0x34);
- if (SpellStr[10][iVar3 + 0x1fc] == '\0') {
- SpellStr[10][iVar3 + 0x1fc] = '\x06';
- }
- SpellStr[10][iVar3 + 0x1fd] = '\0';
- SpellStr[iVar3][0x1fc] = '\0';
- if ((9 < iVar3 + 1) || (iVar3 = iVar3 + 1, (local_9c & 2) != 0)) break;
- }
- }
- iVar3 = FindSpell((uchar *)(SpellStr[10] + 0x1fc));
- if (iVar3 == 0) {
- local_10c = 0x8128964;
- local_b0 = 0x8128978;
- local_104[0] = 0x8128a08;
- // try { // try from 0808a2a3 to 0808a2a7 has its CatchHandler @ 0808a440
- std::string::_Rep::_M_dispose((allocator *)(local_b4 + -0xc));
-LAB_0808a2a8:
- std::streambuf::~streambuf((streambuf *)local_104);
- std::istream::~istream((istream *)&local_10c);
- std::ios::~ios((ios *)&local_b0);
- iVar3 = 0;
- }
- else {
- switch(local_1750) {
- default:
- // try { // try from 0808a20c to 0808a260 has its CatchHandler @ 0808a442
- error("CheckForSpell: Spruchklasse %d existiert nicht.\n",local_1750);
- break;
- case 1:
- // try { // try from 0808a16f to 0808a173 has its CatchHandler @ 0808a442
- CharacterRightSpell(CreatureID,iVar3,(char (*) [512])local_174c);
- break;
- case 2:
- RuneSpell(CreatureID,iVar3);
- break;
- case 3:
- case 4:
- CastSpell(CreatureID,iVar3,(char (*) [512])local_174c);
- break;
- case 5:
- AccountRightSpell(CreatureID,iVar3,(char (*) [512])local_174c);
- }
- local_10c = 0x8128964;
- local_b0 = 0x8128978;
- local_104[0] = 0x8128a08;
- // try { // try from 0808a1b1 to 0808a1b5 has its CatchHandler @ 0808a436
- std::string::_Rep::_M_dispose((allocator *)(local_b4 + -0xc));
- std::streambuf::~streambuf((streambuf *)local_104);
- std::istream::~istream((istream *)&local_10c);
- std::ios::~ios((ios *)&local_b0);
- iVar3 = local_1750;
- }
- }
- return iVar3;
-}
-
-
-
-void DeleteRune(Object *Obj)
-
-{
- bool bVar1;
- ulong uVar2;
- undefined4 *puVar3;
- Object local_1c [5];
-
- // try { // try from 0808a5ff to 0808a6a0 has its CatchHandler @ 0808a6a1
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- uVar2 = Object::getAttribute(Obj,CHARGES);
- if (uVar2 < 2) {
- local_1c[0] = (Object)Obj->ObjectID;
- Delete(local_1c,-1);
- }
- else {
- uVar2 = Object::getAttribute(Obj,CHARGES);
- local_1c[0] = (Object)Obj->ObjectID;
- Change(local_1c,CHARGES,uVar2 - 1);
- }
- return;
- }
- error(&DAT_080fdbc0);
- puVar3 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar3 = 0xffffffff;
- // WARNING: Subroutine does not return
- __cxa_throw(puVar3,&RESULT::typeinfo,0);
-}
-
-
-
-void UseMagicItem(ulong CreatureID,Object *Obj,Object *Dest)
-
-{
- bool bVar1;
- byte bVar2;
- uchar uVar3;
- TCreature *cr;
- TPlayer *this;
- int *SpellNr_00;
- ulong uVar4;
- int Damage_00;
- undefined4 *puVar5;
- int Damage;
- TPlayer *pl;
- char *pcVar6;
- int *piVar7;
- int *piVar8;
- TCreature *z;
- int EffectNr;
- int AnimationNr;
- ushort DmgType;
- TCreature *local_60;
- TCreature *dest;
- int SpellNr;
- int dx;
- int dy;
- int dz;
- Object local_3c [4];
- Object local_2c;
- Object Help;
-
- // try { // try from 0808a6de to 0808a8d4 has its CatchHandler @ 0808b318
- this = GetPlayer(CreatureID);
- if (this == (TPlayer *)0x0) {
- pcVar6 = "UseMagicItem: Kreatur existiert nicht.\n";
-LAB_0808b285:
- error(pcVar6);
-LAB_0808b22e:
- puVar5 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar5 = 0xffffffff;
-LAB_0808b0ba:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar5,&RESULT::typeinfo,0);
- }
- bVar1 = Object::exists(Obj);
- if (!bVar1) {
- pcVar6 = &DAT_080fdcc0;
- goto LAB_0808b285;
- }
- bVar1 = Object::exists(Dest);
- if (!bVar1) {
- Object::getObjectType(&local_2c);
- pcVar6 = &DAT_080fdc80;
-LAB_0808b229:
- error(pcVar6,local_2c.ObjectID);
- goto LAB_0808b22e;
- }
- bVar1 = CheckRight((this->super_TCreature).ID,NO_RUNES);
- if (bVar1) {
- puVar5 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar5 = 0x1d;
- goto LAB_0808b0ba;
- }
- local_2c = (Object)Obj->ObjectID;
- SpellNr_00 = (int *)FindSpell(&local_2c);
- if (SpellNr_00 == (int *)0x0) {
- Object::getObjectType(&local_2c);
- pcVar6 = &DAT_080fdc40;
- goto LAB_0808b229;
- }
- Object::getObjectType(&local_2c);
- if (local_2c.ObjectID == 99) {
- local_2c = (Object)Dest->ObjectID;
- local_60 = GetCreature(&local_2c);
- }
- else {
- local_60 = (TCreature *)0x0;
- }
- Object::getContainer(local_3c);
- GetFirstContainerObject(&local_2c);
- if (local_2c.ObjectID != NONE.ObjectID) {
- do {
- dz = NONE.ObjectID;
- local_3c[0].ObjectID = NONE.ObjectID;
- Object::getObjectType((Object *)&dz);
- if (dz == 99) {
- if ((int)SpellNr_00 - 1U < 0xff) {
- bVar2 = (byte)SpellList[(int)SpellNr_00].Flags & 1;
- }
- else {
- error(&DAT_080fa6c0,SpellNr_00);
- bVar2 = 0;
- }
- if ((bVar2 != 0) &&
- ((local_60 == (TCreature *)0x0 ||
- (uVar4 = Object::getCreatureID(&local_2c), uVar4 != (this->super_TCreature).ID))
- )) {
- local_3c[0].ObjectID = local_2c.ObjectID;
- Dest->ObjectID = (ulong)local_2c;
- dz = local_2c.ObjectID;
- local_60 = GetCreature((Object *)&dz);
- }
- if ((int)SpellNr_00 - 1U < 0xff) {
- bVar2 = (byte)SpellList[(int)SpellNr_00].Flags & 1;
- }
- else {
- error(&DAT_080fa6c0,SpellNr_00);
- bVar2 = 0;
- }
- if ((bVar2 == 0) &&
- ((local_60 == (TCreature *)0x0 ||
- (uVar4 = Object::getCreatureID(&local_2c), uVar4 == (this->super_TCreature).ID))
- )) {
- local_3c[0].ObjectID = local_2c.ObjectID;
- Dest->ObjectID = (ulong)local_2c;
- dz = local_2c.ObjectID;
- local_60 = GetCreature((Object *)&dz);
- }
- }
- Object::getNextObject(local_3c);
- local_2c.ObjectID = local_3c[0].ObjectID;
- } while (local_3c[0].ObjectID != NONE.ObjectID);
- }
- dz = NONE.ObjectID;
- local_3c[0].ObjectID = NONE.ObjectID;
- CheckRuneLevel(&this->super_TCreature,(int)SpellNr_00);
- dz = Dest->ObjectID;
- z = (TCreature *)&dy;
- piVar8 = &dx;
- piVar7 = &SpellNr;
- GetObjectCoordinates((Object *)&dz,piVar7,piVar8,(int *)z);
- if (ServerMilliseconds < (this->super_TCreature).EarliestSpellTime) {
- puVar5 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar5 = 0x31;
- goto LAB_0808b0ba;
- }
- if ((int)SpellNr_00 - 1U < 0xff) {
- bVar2 = (byte)SpellList[(int)SpellNr_00].Flags & 1;
- }
- else {
- piVar7 = SpellNr_00;
- error(&DAT_080fa6c0,SpellNr_00);
- bVar2 = 0;
- }
- if (bVar2 != 0) {
- piVar7 = (int *)0x43;
- bVar1 = CheckRight((this->super_TCreature).ID,ATTACK_EVERYWHERE);
- if (!bVar1) {
- piVar8 = (int *)(this->super_TCreature).posz;
- piVar7 = (int *)(this->super_TCreature).posy;
- bVar1 = IsProtectionZone();
- if ((bVar1) ||
- (bVar1 = IsProtectionZone(), piVar7 = (int *)dx, piVar8 = (int *)dy, bVar1)) {
- puVar5 = (undefined4 *)__cxa_allocate_exception(4,piVar7,piVar8);
- *puVar5 = 0x2f;
- goto LAB_0808b0ba;
- }
- }
- }
- if ((int)SpellNr_00 - 1U < 0xff) {
- bVar2 = (byte)SpellList[(int)SpellNr_00].Flags & 1;
- }
- else {
- piVar7 = SpellNr_00;
- error(&DAT_080fa6c0,SpellNr_00);
- bVar2 = 0;
- }
- if (bVar2 != 0) {
- // try { // try from 0808b080 to 0808b289 has its CatchHandler @ 0808b318
- Object::getContainer((Object *)&dz);
- piVar7 = &dz;
- Object::getObjectType(local_3c);
- if (local_3c[0].ObjectID != 0) {
- puVar5 = (undefined4 *)__cxa_allocate_exception(4,piVar7);
- *puVar5 = 4;
- goto LAB_0808b0ba;
- }
- }
- switch(SpellNr_00) {
- case (int *)0x4:
- if (local_60 != (TCreature *)0x0) {
- // try { // try from 0808a978 to 0808b044 has its CatchHandler @ 0808b295
- z = (TCreature *)ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x46,0x1e);
-LAB_0808a997:
- piVar8 = (int *)0x0;
- Heal();
- break;
- }
- goto LAB_0808aa1b;
- case (int *)0x5:
- if (local_60 != (TCreature *)0x0) {
- z = (TCreature *)ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0xfa,0);
- goto LAB_0808a997;
- }
- goto LAB_0808aa1b;
- default:
- error("UseMagicItem: Spell %d noch nicht implementiert.\n",SpellNr_00);
- puVar5 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar5 = 0xffffffff;
- goto LAB_0808aa2d;
- case (int *)0x7:
- Damage_00 = ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0xf,5);
- dz = Dest->ObjectID;
- DmgType = 8;
- AnimationNr = 4;
- EffectNr = 6;
- goto LAB_0808aae3;
- case (int *)0x8:
- Damage_00 = ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x1e,10);
- dz = Dest->ObjectID;
- EffectNr = 6;
- DmgType = 8;
- goto LAB_0808ab2e;
- case (int *)0xc:
- if (local_60 != (TCreature *)0x0) {
- Convince(&this->super_TCreature,local_60);
- break;
- }
- goto LAB_0808aa1b;
- case (int *)0xe:
- dz = Dest->ObjectID;
- z = (TCreature *)&dz;
- piVar8 = (int *)0x0;
- ObjectIllusion();
- break;
- case (int *)0xf:
- ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x14,5);
- dz = Dest->ObjectID;
- goto LAB_0808abfc;
- case (int *)0x10:
- ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x32,0xf);
- dz = Dest->ObjectID;
- goto LAB_0808abfc;
- case (int *)0x11:
- dz = Dest->ObjectID;
- goto LAB_0808ac98;
- case (int *)0x12:
- ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x3c,0x28);
- dz = Dest->ObjectID;
-LAB_0808abfc:
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- MassCombat();
- break;
- case (int *)0x15:
- Damage_00 = ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x96,0x14);
- dz = Dest->ObjectID;
- EffectNr = 0x12;
- DmgType = 1;
- AnimationNr = 0xb;
- goto LAB_0808aae3;
- case (int *)0x19:
- dz = Dest->ObjectID;
- goto LAB_0808ad72;
- case (int *)0x1a:
- dz = Dest->ObjectID;
- goto LAB_0808ad72;
- case (int *)0x1b:
- dz = Dest->ObjectID;
- goto LAB_0808ad72;
- case (int *)0x1c:
- dz = Dest->ObjectID;
- goto LAB_0808adf7;
- case (int *)0x1e:
- dz = Dest->ObjectID;
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- DeleteField();
- break;
- case (int *)0x1f:
- if (local_60 != (TCreature *)0x0) {
- piVar8 = (int *)0x0;
- NegatePoison();
- z = local_60;
- break;
- }
- goto LAB_0808aa1b;
- case (int *)0x20:
- dz = Dest->ObjectID;
- goto LAB_0808adf7;
- case (int *)0x21:
- dz = Dest->ObjectID;
-LAB_0808adf7:
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- CreateFieldWall();
- break;
- case (int *)0x32:
- Damage_00 = ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x78,0x14);
- dz = Dest->ObjectID;
- EffectNr = 0x10;
- DmgType = 0x40;
-LAB_0808ab2e:
- AnimationNr = 4;
- goto LAB_0808aae3;
- case (int *)0x36:
- if (local_60 != (TCreature *)0x0) {
- uVar3 = TPlayer::GetEffectiveProfession(this);
- if (uVar3 == '\x04') {
- z = (TCreature *)SpellList[(int)SpellNr_00].SoulPoints;
- piVar8 = (int *)SpellList[(int)SpellNr_00].Mana;
- MagicGoStrength();
- break;
- }
- puVar5 = (undefined4 *)__cxa_allocate_exception(4,piVar7);
- *puVar5 = 0x1d;
- goto LAB_0808aa2d;
- }
-LAB_0808aa1b:
- puVar5 = (undefined4 *)__cxa_allocate_exception(4,piVar7,piVar8);
- *puVar5 = 0x27;
-LAB_0808aa2d:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar5,&RESULT::typeinfo,0);
- case (int *)0x37:
- dz = Dest->ObjectID;
- goto LAB_0808ac98;
- case (int *)0x4d:
- Damage_00 = ComputeDamage(&this->super_TCreature,(int)SpellNr_00,0x46,0x14);
- dz = Dest->ObjectID;
- EffectNr = 0x11;
- DmgType = 0x20;
- AnimationNr = 5;
-LAB_0808aae3:
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- Combat(&this->super_TCreature,(Object *)&dz,0,0,Damage_00,EffectNr,AnimationNr,DmgType);
- break;
- case (int *)0x4e:
- dz = Dest->ObjectID;
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- CleanupField();
- break;
- case (int *)0x53:
- dz = Dest->ObjectID;
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- RaiseDead();
- break;
- case (int *)0x56:
- dz = Dest->ObjectID;
-LAB_0808ad72:
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- CreateField();
- break;
- case (int *)0x5b:
- dz = Dest->ObjectID;
-LAB_0808ac98:
- z = (TCreature *)0x0;
- piVar8 = (int *)0x0;
- MassCreateField();
- }
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- dz = Obj->ObjectID;
- DeleteRune((Object *)&dz);
- }
- if ((int)SpellNr_00 - 1U < 0xff) {
- bVar2 = (byte)SpellList[(int)SpellNr_00].Flags & 1;
- }
- else {
- error(&DAT_080fa6c0,SpellNr_00,piVar8,z);
- bVar2 = 0;
- }
- if (bVar2 != 0) {
- TCreature::BlockLogout(&this->super_TCreature,0x3c,false);
- }
- return;
-}
-
-
-
-void DrinkPotion(ulong CreatureID,Object *Obj)
-
-{
- bool bVar1;
- TPlayer *pTVar2;
- ulong uVar3;
- undefined4 *puVar4;
- TPlayer *pl;
- char *Text;
- Object local_2c [7];
-
- // try { // try from 0808b348 to 0808b48e has its CatchHandler @ 0808b4b5
- pTVar2 = GetPlayer(CreatureID);
- if (pTVar2 == (TPlayer *)0x0) {
- Text = "DrinkPotion: Kreatur existiert nicht.\n";
- }
- else {
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- Object::getObjectType(local_2c);
- bVar1 = ObjectType::getFlag((ObjectType *)local_2c,LIQUIDCONTAINER);
- if (bVar1) {
- uVar3 = Object::getAttribute(Obj,CONTAINERLIQUIDTYPE);
- if (uVar3 == 10) {
- ComputeDamage((TCreature *)0x0,0,100,0x32);
- RefreshMana();
- }
- else {
- if (uVar3 != 0xb) {
- Text = &DAT_080fdd40;
- goto LAB_0808b420;
- }
- ComputeDamage((TCreature *)0x0,0,0x32,0x19);
- Heal();
- }
- local_2c[0] = (Object)Obj->ObjectID;
- Change(local_2c,CONTAINERLIQUIDTYPE,0);
- return;
- }
- Text = &DAT_080fdd80;
- }
- else {
- Text = &DAT_080fdde0;
- }
- }
-LAB_0808b420:
- error(Text);
- puVar4 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar4 = 0xffffffff;
- // WARNING: Subroutine does not return
- __cxa_throw(puVar4,&RESULT::typeinfo,0);
-}
-
-void CreateField(int x,int y,int z,int FieldType,ulong Owner,bool Peaceful)
-
-{
- bool bVar1;
- undefined4 *puVar2;
- ObjectType *this;
- Object local_6c [4];
- ObjectType local_5c;
- Object Help;
- ObjectType local_4c;
- Object Obj;
- ObjectType local_3c [4];
- ObjectType local_2c;
- ObjectType ObjectType;
-
- // try { // try from 0808db84 to 0808dc7d has its CatchHandler @ 0808dde0
- ::ObjectType::setTypeID(&local_2c,0);
- switch(FieldType) {
- default:
- error(&DAT_080fdf20,FieldType);
- puVar2 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar2 = 0xffffffff;
- // WARNING: Subroutine does not return
- __cxa_throw(puVar2,&RESULT::typeinfo,0);
- case 1:
- GetSpecialObject((SPECIALMEANING)&local_4c);
- ::ObjectType::setTypeID(&local_2c,local_4c.TypeID);
- this = local_3c;
- goto LAB_0808dbd1;
- case 2:
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- }
- GetSpecialObject((SPECIALMEANING)local_3c);
- ::ObjectType::setTypeID(&local_2c,local_3c[0].TypeID);
- this = &local_4c;
-LAB_0808dbd1:
- ::ObjectType::setTypeID(this,local_2c.TypeID);
- bVar1 = FieldPossible();
- if (bVar1) {
- GetFirstObject();
- if (local_4c.TypeID != NONE.ObjectID) {
- do {
- local_5c.TypeID = local_4c.TypeID;
- local_3c[0].TypeID = NONE.ObjectID;
- Object::getNextObject(local_6c);
- local_4c.TypeID = local_6c[0].ObjectID;
- local_3c[0].TypeID = local_6c[0].ObjectID;
- Object::getObjectType(local_6c);
- bVar1 = ::ObjectType::getFlag((ObjectType *)local_6c,MAGICFIELD);
- if (bVar1) {
- local_6c[0].ObjectID = local_5c.TypeID;
- // try { // try from 0808dcf9 to 0808dd64 has its CatchHandler @ 0808dde0
- Delete(local_6c,-1);
- }
- } while (local_4c.TypeID != NONE.ObjectID);
- }
- local_5c.TypeID = NONE.ObjectID;
- local_3c[0].TypeID = NONE.ObjectID;
- // try { // try from 0808dc9e to 0808dcdf has its CatchHandler @ 0808dda3
- ::ObjectType::setTypeID(&local_5c,local_2c.TypeID);
- GetMapContainer((int)&local_4c,x,y);
- Create(local_6c,&local_4c,(ulong)&local_5c);
- }
- return;
-}
-
-
-
// WARNING: Unknown calling convention -- yet parameter storage is locked
void _GLOBAL__I_SpellSyllable(void)