From fbb392953c5af29b6a0924590c24a05befb72e56 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Mon, 26 May 2025 01:44:13 -0300 Subject: more object functions --- reference/game.c | 962 ------------------------------------------------------- 1 file changed, 962 deletions(-) (limited to 'reference/game.c') diff --git a/reference/game.c b/reference/game.c index 1a48631..63100e0 100644 --- a/reference/game.c +++ b/reference/game.c @@ -5584,713 +5584,6 @@ void CronChange(Object *Obj,int NewDelay) return; } - - -Object SplitObject(Object *Obj,int Count) - -{ - bool bVar1; - TObject *pTVar2; - ulong uVar3; - ulong Position; - uint uVar4; - ulong in_stack_0000000c; - Object local_5c [4]; - Object local_4c [4]; - Object local_3c; - Object Copy; - ObjectType local_2c [7]; - - bVar1 = false; - if (*(uint *)Count != 0) { - uVar4 = *(uint *)Count & HashTableMask; - if (HashTableType[uVar4] == '\x02') { - UnswapSector(HashTableData[uVar4]); - } - if ((HashTableType[uVar4] == '\x01') && (*(int *)HashTableData[uVar4] == *(int *)Count)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (!bVar1) { - error(&DAT_080f1680); - local_3c = NONE; - goto LAB_08058380; - } - local_3c.ObjectID = *(ulong *)Count; - pTVar2 = AccessObject(&local_3c); - ObjectType::setTypeID(local_2c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag(local_2c,CUMULATIVE); - if (bVar1) { - if (0 < (int)in_stack_0000000c) { - uVar3 = Object::getAttribute((Object *)Count,AMOUNT); - if ((int)in_stack_0000000c <= (int)uVar3) { - uVar3 = Object::getAttribute((Object *)Count,AMOUNT); - if (in_stack_0000000c != uVar3) { - local_5c[0].ObjectID = *(ulong *)Count; - local_2c[0].TypeID = local_5c[0].ObjectID; - pTVar2 = AccessObject(local_5c); - local_4c[0].ObjectID = (pTVar2->Container).ObjectID; - CopyObject(&local_3c,local_4c); - uVar3 = Object::getAttribute((Object *)Count,AMOUNT); - Object::setAttribute((Object *)Count,AMOUNT,uVar3 - in_stack_0000000c); - Object::setAttribute(&local_3c,AMOUNT,in_stack_0000000c); - goto LAB_08058380; - } - goto LAB_080583fc; - } - } - error(&DAT_080f16c0,in_stack_0000000c); - } - else { - error("SplitObject: Objekt ist nicht kumulierbar.\n"); - } -LAB_080583fc: - local_3c.ObjectID = *(ulong *)Count; -LAB_08058380: - Obj->ObjectID = (ulong)local_3c; - return (Object)(ulong)Obj; -} - - - -void MergeObjects(Object *Obj,Object *Dest) - -{ - Object OVar1; - bool bVar2; - TObject *pTVar3; - ulong uVar4; - ulong uVar5; - ulong Position; - uint uVar6; - char *Text; - Object local_6c [4]; - Object local_5c [4]; - Object local_4c [4]; - Object local_3c [4]; - ObjectType local_2c [7]; - - bVar2 = false; - if (Obj->ObjectID != 0) { - uVar6 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar6] == '\x02') { - UnswapSector(HashTableData[uVar6]); - } - if ((HashTableType[uVar6] == '\x01') && (*(ulong *)HashTableData[uVar6] == Obj->ObjectID)) { - bVar2 = true; - } - else { - bVar2 = false; - } - } - if (bVar2) { - bVar2 = false; - if (Dest->ObjectID != 0) { - uVar6 = Dest->ObjectID & HashTableMask; - if (HashTableType[uVar6] == '\x02') { - UnswapSector(HashTableData[uVar6]); - } - if ((HashTableType[uVar6] == '\x01') && - (*(ulong *)HashTableData[uVar6] == Dest->ObjectID)) { - bVar2 = true; - } - else { - bVar2 = false; - } - } - if (bVar2) { - local_3c[0] = (Object)Obj->ObjectID; - pTVar3 = AccessObject(local_3c); - ObjectType::setTypeID(local_2c,(pTVar3->Type).TypeID); - local_4c[0] = (Object)Dest->ObjectID; - pTVar3 = AccessObject(local_4c); - ObjectType::setTypeID((ObjectType *)local_3c,(pTVar3->Type).TypeID); - ObjectType::setTypeID((ObjectType *)local_4c,local_3c[0].ObjectID); - if (local_2c[0].TypeID != local_4c[0].ObjectID) { - local_5c[0] = (Object)Dest->ObjectID; - pTVar3 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar3->Type).TypeID); - OVar1.ObjectID = local_4c[0].ObjectID; - local_6c[0] = (Object)Obj->ObjectID; - pTVar3 = AccessObject(local_6c); - ObjectType::setTypeID((ObjectType *)local_5c,(pTVar3->Type).TypeID); - error("MergeObjects: Objekttypen %d und %d sind nicht identisch.\n", - local_5c[0].ObjectID,OVar1.ObjectID); - return; - } - local_5c[0] = (Object)Obj->ObjectID; - pTVar3 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)local_6c,(pTVar3->Type).TypeID); - bVar2 = ObjectType::getFlag((ObjectType *)local_6c,CUMULATIVE); - if (!bVar2) { - local_5c[0] = (Object)Obj->ObjectID; - pTVar3 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)local_6c,(pTVar3->Type).TypeID); - error("MergeObjects: Objekttyp %d/%d ist nicht kumulierbar.\n",local_6c[0].ObjectID) - ; - return; - } - uVar4 = Object::getAttribute(Obj,AMOUNT); - if (uVar4 == 0) { - error(&DAT_080f18c0); - Object::setAttribute(Obj,AMOUNT,1); - } - uVar4 = Object::getAttribute(Dest,AMOUNT); - if (uVar4 == 0) { - error(&DAT_080f1880); - Object::setAttribute(Dest,AMOUNT,1); - } - uVar4 = Object::getAttribute(Obj,AMOUNT); - uVar5 = Object::getAttribute(Dest,AMOUNT); - Object::setAttribute(Dest,AMOUNT,uVar5 + uVar4); - uVar4 = Object::getAttribute(Dest,AMOUNT); - if (100 < uVar4) { - error(&DAT_080f1840); - Object::setAttribute(Dest,AMOUNT,100); - } - local_6c[0] = (Object)Obj->ObjectID; - bVar2 = false; - if (local_6c[0].ObjectID != 0) { - uVar6 = local_6c[0].ObjectID & HashTableMask; - if (HashTableType[uVar6] == '\x02') { - UnswapSector(HashTableData[uVar6]); - } - if ((HashTableType[uVar6] == '\x01') && - (*(uint *)HashTableData[uVar6] == local_6c[0].ObjectID)) { - bVar2 = true; - } - else { - bVar2 = false; - } - } - if (bVar2) { - local_5c[0].ObjectID = local_6c[0].ObjectID; - CutObject(local_5c); - local_5c[0].ObjectID = local_6c[0].ObjectID; - DestroyObject(local_5c); - return; - } - Text = &DAT_080f1800; - } - else { - Text = &DAT_080f1740; - } - } - else { - Text = &DAT_080f1900; - } - error(Text); - return; -} - - - -void MoveObject(Object *Obj,Object *Con) - -{ - bool bVar1; - ulong Position; - uint uVar2; - char *Text; - Object local_3c [4]; - Object local_2c [7]; - - bVar1 = false; - if (Obj->ObjectID != 0) { - uVar2 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar2] == '\x02') { - UnswapSector(HashTableData[uVar2]); - } - if ((HashTableType[uVar2] == '\x01') && (*(ulong *)HashTableData[uVar2] == Obj->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - bVar1 = false; - if (Con->ObjectID != 0) { - uVar2 = Con->ObjectID & HashTableMask; - if (HashTableType[uVar2] == '\x02') { - UnswapSector(HashTableData[uVar2]); - } - if ((HashTableType[uVar2] == '\x01') && - (*(ulong *)HashTableData[uVar2] == Con->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - local_2c[0] = (Object)Obj->ObjectID; - CutObject(local_2c); - local_2c[0] = (Object)Con->ObjectID; - local_3c[0] = (Object)Obj->ObjectID; - PlaceObject(local_3c,local_2c,false); - return; - } - Text = &DAT_080f1940; - } - else { - Text = &DAT_080f1980; - } - error(Text); - return; -} - - -// WARNING: Variable defined which should be unmapped: Attribute_local - -void ChangeObject(Object *Obj,INSTANCEATTRIBUTE Attribute,ulong Value) - -{ - bool bVar1; - ulong Position; - uint uVar2; - INSTANCEATTRIBUTE Attribute_local; - - bVar1 = false; - if (Obj->ObjectID != 0) { - uVar2 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar2] == '\x02') { - UnswapSector(HashTableData[uVar2]); - } - if ((HashTableType[uVar2] == '\x01') && (*(ulong *)HashTableData[uVar2] == Obj->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (!bVar1) { - error(&DAT_080f19c0); - return; - } - Object::setAttribute(Obj,Attribute,Value); - return; -} - -Object SetObject(Object *Con,ObjectType *Type,ulong CreatureID) - -{ - bool bVar1; - TObject *pTVar2; - ulong Position; - uint uVar3; - ulong in_stack_00000010; - Object local_4c [4]; - Object local_3c [4]; - ulong local_2c; - Object Obj; - - bVar1 = false; - if (Type->TypeID != 0) { - uVar3 = Type->TypeID & HashTableMask; - if (HashTableType[uVar3] == '\x02') { - UnswapSector(HashTableData[uVar3]); - } - if ((HashTableType[uVar3] == '\x01') && (*(int *)HashTableData[uVar3] == Type->TypeID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - CreateObject(); - ObjectType::setTypeID((ObjectType *)local_3c,*(int *)CreatureID); - local_4c[0].ObjectID = local_2c; - ChangeObject(local_4c,(ObjectType *)local_3c); - local_4c[0].ObjectID = Type->TypeID; - local_3c[0].ObjectID = local_2c; - PlaceObject(local_3c,local_4c,false); - local_3c[0].ObjectID = local_2c; - pTVar2 = AccessObject(local_3c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar2->Type).TypeID); - if (local_4c[0].ObjectID == 99) { - if (in_stack_00000010 == 0) { - error(&DAT_080f1d60); - } - local_4c[0].ObjectID = local_2c; - pTVar2 = AccessObject(local_4c); - pTVar2->Attributes[1] = in_stack_00000010; - } - } - else { - error(&DAT_080f1d20); - local_2c = NONE.ObjectID; - } - Con->ObjectID = local_2c; - return (Object)(ulong)Con; -} - - - -Object CopyObject(Object *Con,Object *Source) - -{ - bool bVar1; - TObject *pTVar2; - TObject *pTVar3; - ulong uVar4; - ulong Position; - uint uVar5; - int iVar6; - uint *in_stack_0000000c; - char *pcVar7; - Object local_4c [4]; - Object local_3c; - Object Obj; - Object local_2c [7]; - - bVar1 = false; - if (*in_stack_0000000c != 0) { - uVar5 = *in_stack_0000000c & HashTableMask; - if (HashTableType[uVar5] == '\x02') { - UnswapSector(HashTableData[uVar5]); - } - if ((HashTableType[uVar5] == '\x01') && - (*(uint *)HashTableData[uVar5] == *in_stack_0000000c)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - bVar1 = false; - if (Source->ObjectID != 0) { - uVar5 = Source->ObjectID & HashTableMask; - if (HashTableType[uVar5] == '\x02') { - UnswapSector(HashTableData[uVar5]); - } - if ((HashTableType[uVar5] == '\x01') && - (*(ulong *)HashTableData[uVar5] == Source->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - local_3c.ObjectID = *in_stack_0000000c; - pTVar2 = AccessObject(&local_3c); - ObjectType::setTypeID((ObjectType *)local_2c,(pTVar2->Type).TypeID); - if (local_2c[0].ObjectID != 99) { - local_4c[0].ObjectID = *in_stack_0000000c; - pTVar2 = AccessObject(local_4c); - ObjectType::setTypeID((ObjectType *)local_2c,(pTVar2->Type).TypeID); - local_4c[0] = (Object)Source->ObjectID; - iVar6 = 0; - SetObject(&local_3c,(ObjectType *)local_4c,(ulong)local_2c); - do { - local_4c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_4c); - local_2c[0].ObjectID = *in_stack_0000000c; - pTVar3 = AccessObject(local_2c); - pTVar2->Attributes[iVar6] = pTVar3->Attributes[iVar6]; - iVar6 = iVar6 + 1; - } while (iVar6 < 4); - local_2c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_4c,CONTAINER); - if (bVar1) { -LAB_08059ea9: - Object::setAttribute(&local_3c,CONTENT,0); - } - else { - local_2c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_4c,CHEST); - if (bVar1) goto LAB_08059ea9; - } - local_2c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_4c,TEXT); - if ((bVar1) && (uVar4 = Object::getAttribute(&local_3c,TEXTSTRING), uVar4 != 0)) { - uVar4 = Object::getAttribute(&local_3c,TEXTSTRING); - pcVar7 = GetDynamicString(uVar4); - uVar4 = AddDynamicString(pcVar7); - Object::setAttribute(&local_3c,TEXTSTRING,uVar4); - } - local_2c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_4c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_4c,TEXT); - if ((bVar1) && (uVar4 = Object::getAttribute(&local_3c,EDITOR), uVar4 != 0)) { - uVar4 = Object::getAttribute(&local_3c,EDITOR); - pcVar7 = GetDynamicString(uVar4); - uVar4 = AddDynamicString(pcVar7); - Object::setAttribute(&local_3c,EDITOR,uVar4); - } - goto LAB_08059d74; - } - pcVar7 = &DAT_080f1de0; - } - else { - pcVar7 = "CopyObject: Zielcontainer existiert nicht.\n"; - } - } - else { - pcVar7 = "CopyObject: Vorlage existiert nicht.\n"; - } - error(pcVar7); - local_3c = NONE; -LAB_08059d74: - Con->ObjectID = (ulong)local_3c; - return (Object)(ulong)Con; -} - -void CutObject(Object *Obj) - -{ - bool bVar1; - TObject *pTVar2; - TObject *pTVar3; - ulong Position; - uint uVar4; - Object local_8c [4]; - Object local_7c [4]; - Object local_6c [4]; - Object local_5c [4]; - Object local_4c [4]; - Object local_3c; - Object Search; - Object local_2c; - Object Con; - - bVar1 = false; - if (Obj->ObjectID != 0) { - uVar4 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar4] == '\x02') { - UnswapSector(HashTableData[uVar4]); - } - if ((HashTableType[uVar4] == '\x01') && (*(ulong *)HashTableData[uVar4] == Obj->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (!bVar1) { - error(&DAT_080f1ea0); - return; - } - local_3c = (Object)Obj->ObjectID; - pTVar2 = AccessObject(&local_3c); - local_4c[0].ObjectID = (pTVar2->Container).ObjectID; - local_5c[0].ObjectID = NONE.ObjectID; - local_2c.ObjectID = local_4c[0].ObjectID; - if (local_4c[0].ObjectID == NONE.ObjectID) { - error(&DAT_080f1b80); - local_3c = NONE; - } - else { - Object::getObjectType(local_5c); - bVar1 = ObjectType::getFlag((ObjectType *)local_5c,CONTAINER); - if (!bVar1) { - Object::getObjectType(local_5c); - bVar1 = ObjectType::getFlag((ObjectType *)local_5c,CHEST); - if (!bVar1) { - Object::getObjectType(local_5c); - error("GetFirstContainerObject: Con (%d) ist kein Container.\n",local_5c[0].ObjectID - ); - local_3c = NONE; - goto LAB_0805a144; - } - } - local_3c.ObjectID = Object::getAttribute(local_4c,CONTENT); - } -LAB_0805a144: - local_5c[0] = (Object)Obj->ObjectID; - if (local_3c.ObjectID == local_5c[0].ObjectID) { - local_6c[0].ObjectID = local_5c[0].ObjectID; - pTVar2 = AccessObject(local_6c); - local_4c[0].ObjectID = (pTVar2->NextObject).ObjectID; - Object::setAttribute(&local_2c,CONTENT,local_4c[0].ObjectID); - } - else { - while( true ) { - local_4c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_4c); - local_6c[0].ObjectID = (pTVar2->NextObject).ObjectID; - local_7c[0] = (Object)Obj->ObjectID; - if (local_6c[0].ObjectID == local_7c[0].ObjectID) break; - local_4c[0].ObjectID = local_3c.ObjectID; - pTVar2 = AccessObject(local_4c); - local_3c.ObjectID = (pTVar2->NextObject).ObjectID; - local_7c[0].ObjectID = local_3c.ObjectID; - local_6c[0].ObjectID = local_3c.ObjectID; - } - local_6c[0].ObjectID = local_3c.ObjectID; - local_4c[0].ObjectID = local_7c[0].ObjectID; - pTVar2 = AccessObject(local_6c); - local_8c[0] = (Object)Obj->ObjectID; - pTVar3 = AccessObject(local_8c); - local_4c[0].ObjectID = (pTVar3->NextObject).ObjectID; - (pTVar2->NextObject).ObjectID = local_4c[0].ObjectID; - } - local_7c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_7c); - local_8c[0] = NONE; - local_6c[0].ObjectID = NONE.ObjectID; - (pTVar2->NextObject).ObjectID = NONE.ObjectID; - local_7c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_7c); - (pTVar2->Container).ObjectID = NONE.ObjectID; - return; -} - - - -void DestroyObject(Object *Obj) - -{ - bool bVar1; - TObject *pTVar2; - ulong uVar3; - ulong nr; - uint uVar4; - char *Text; - Object local_3c [4]; - Object local_2c [7]; - - bVar1 = false; - if (Obj->ObjectID != 0) { - uVar4 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar4] == '\x02') { - UnswapSector(HashTableData[uVar4]); - } - if ((HashTableType[uVar4] == '\x01') && (*(ulong *)HashTableData[uVar4] == Obj->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (!bVar1) { - Text = &DAT_080f1ee0; - goto LAB_0805a343; - } - local_3c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_3c); - ObjectType::setTypeID((ObjectType *)local_2c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_2c,TEXT); - if (bVar1) { - uVar3 = Object::getAttribute(Obj,TEXTSTRING); - DeleteDynamicString(uVar3); - uVar3 = Object::getAttribute(Obj,EDITOR); - DeleteDynamicString(uVar3); - } - local_2c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_3c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_3c,CONTAINER); - if (bVar1) { -LAB_0805a400: - while (uVar3 = Object::getAttribute(Obj,CONTENT), uVar3 != 0) { - local_3c[0].ObjectID = Object::getAttribute(Obj,CONTENT); - bVar1 = false; - if (local_3c[0].ObjectID != 0) { - uVar4 = local_3c[0].ObjectID & HashTableMask; - if (HashTableType[uVar4] == '\x02') { - UnswapSector(HashTableData[uVar4]); - } - if ((HashTableType[uVar4] == '\x01') && - (*(ulong *)HashTableData[uVar4] == local_3c[0].ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - local_2c[0].ObjectID = local_3c[0].ObjectID; - CutObject(local_2c); - local_2c[0].ObjectID = local_3c[0].ObjectID; - DestroyObject(local_2c); - } - else { - error(&DAT_080f1800); - } - } - } - else { - local_2c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_3c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_3c,CHEST); - if (bVar1) goto LAB_0805a400; - } - local_2c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_2c); - ObjectType::setTypeID((ObjectType *)local_3c,(pTVar2->Type).TypeID); - bVar1 = ObjectType::getFlag((ObjectType *)local_3c,EXPIRE); - if (bVar1) { - local_3c[0] = (Object)Obj->ObjectID; - CronStop(local_3c); - } - if (Obj->ObjectID == 0) { - error(&DAT_080f1f60,0); - return; - } - uVar4 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar4] == '\x01') { - PutFreeObjectSlot((TObject *)HashTableData[uVar4]); - HashTableType[uVar4] = '\0'; - HashTableFree = HashTableFree + 1; - DecrementObjectCounter(); - return; - } - Text = "DestroyObject: Objekt steht nicht im Speicher.\n"; -LAB_0805a343: - error(Text); - return; -} - - - -void DeleteObject(Object *Obj) - -{ - bool bVar1; - ulong Position; - uint uVar2; - Object local_1c [4]; - - bVar1 = false; - if (Obj->ObjectID != 0) { - uVar2 = Obj->ObjectID & HashTableMask; - if (HashTableType[uVar2] == '\x02') { - UnswapSector(HashTableData[uVar2]); - } - if ((HashTableType[uVar2] == '\x01') && (*(ulong *)HashTableData[uVar2] == Obj->ObjectID)) { - bVar1 = true; - } - else { - bVar1 = false; - } - } - if (bVar1) { - local_1c[0] = (Object)Obj->ObjectID; - CutObject(local_1c); - local_1c[0] = (Object)Obj->ObjectID; - DestroyObject(local_1c); - } - else { - error(&DAT_080f1800); - } - return; -} - // WARNING: Unknown calling convention -- yet parameter storage is locked Object GetFirstSpecObject(void) @@ -6780,261 +6073,6 @@ bool GetMarkPosition(void) return false; } - -int GetInstanceAttributeByName(char *Name) - -{ - int iVar1; - int i; - int iVar2; - char (*s1) [30]; - - iVar2 = 0; - s1 = InstanceAttributeNames; - do { - iVar1 = stricmp(*s1,Name,-1); - if (iVar1 == 0) { - return iVar2; - } - iVar2 = iVar2 + 1; - s1 = s1 + 1; - } while (iVar2 < 0x12); - return -1; -} - -void SaveObjects(Object *Obj,TWriteStream *Stream,bool Stop) - -{ - bool bVar1; - TObject *pTVar2; - int iVar3; - ulong uVar4; - char *pcVar5; - bool ProcessObjects; - INSTANCEATTRIBUTE Attribute; - ulong Value; - int Depth; - Object OStack_6c; - bool Stop_local; - Object local_5c [4]; - Object local_4c [4]; - Object local_3c [4]; - ulong local_2c; - Object LastObj; - - bVar1 = true; - Value = 1; - local_2c = NONE.ObjectID; - do { - if (bVar1) { - uVar4 = Obj->ObjectID; - local_3c[0].ObjectID = NONE.ObjectID; - if (uVar4 == NONE.ObjectID) { - (*Stream->_vptr_TWriteStream[2])(Stream,0xffff); - Value = Value - 1; - if ((int)Value < 1) { - return; - } - (*Stream->_vptr_TWriteStream[1])(Stream,0xff); - ObjectCounter = ObjectCounter + 1; - if ((Stop) && (Value == 1)) { - return; - } - local_4c[0].ObjectID = NONE.ObjectID; - if (local_2c == NONE.ObjectID) { - error("LastObj ist NONE (1)\n"); - } - OStack_6c.ObjectID = local_2c; - pTVar2 = AccessObject(&stack0xffffff94); - local_5c[0].ObjectID = (pTVar2->Container).ObjectID; - OStack_6c.ObjectID = NONE.ObjectID; - local_2c = local_5c[0].ObjectID; - if (local_5c[0].ObjectID == NONE.ObjectID) { - local_4c[0].ObjectID = local_5c[0].ObjectID; - error("LastObj ist NONE (2)\n"); - } - } - else { - OStack_6c.ObjectID = NONE.ObjectID; - if (uVar4 == NONE.ObjectID) { - error("Obj ist NONE (1)\n"); - uVar4 = Obj->ObjectID; - } - local_5c[0].ObjectID = uVar4; - // try { // try from 0805d023 to 0805d34b has its CatchHandler @ 0805d353 - pTVar2 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)&stack0xffffff94,(pTVar2->Type).TypeID); - if (OStack_6c.ObjectID != 99) { - local_5c[0] = (Object)Obj->ObjectID; - pTVar2 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)&stack0xffffff94,(pTVar2->Type).TypeID); - (*Stream->_vptr_TWriteStream[2])(Stream,OStack_6c.ObjectID & 0xffff); - bVar1 = false; - goto LAB_0805d072; - } - if ((Stop) && (Value == 1)) { - return; - } - OStack_6c = (Object)Obj->ObjectID; - local_5c[0].ObjectID = OStack_6c.ObjectID; - local_2c = OStack_6c.ObjectID; - } - local_4c[0].ObjectID = local_2c; - pTVar2 = AccessObject(local_4c); - OStack_6c.ObjectID = (pTVar2->NextObject).ObjectID; - Obj->ObjectID = (ulong)OStack_6c; - local_5c[0].ObjectID = OStack_6c.ObjectID; - } - else { - uVar4 = Obj->ObjectID; - OStack_6c.ObjectID = NONE.ObjectID; - if (uVar4 == NONE.ObjectID) { - error("Obj ist NONE (2)\n"); - uVar4 = Obj->ObjectID; - } - Attribute = CONTENT; - do { - if (Attribute != CONTENT) { - local_5c[0].ObjectID = uVar4; - pTVar2 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)&stack0xffffff94,(pTVar2->Type).TypeID); - iVar3 = ObjectType::getAttributeOffset((ObjectType *)&stack0xffffff94,Attribute) - ; - if (iVar3 != -1) { - if (Attribute == REMAININGEXPIRETIME) { - OStack_6c = (Object)Obj->ObjectID; - uVar4 = CronInfo(&stack0xffffff94,false); - } - else { - uVar4 = Object::getAttribute(Obj,Attribute); - } - if (uVar4 != 0) { - (*Stream->_vptr_TWriteStream[1])(Stream,Attribute & 0xff); - if (Attribute - TEXTSTRING < 2) { - pcVar5 = GetDynamicString(uVar4); - (*Stream->_vptr_TWriteStream[4])(Stream,pcVar5); - } - else { - (*Stream->_vptr_TWriteStream[3])(Stream,uVar4); - } - } - } - uVar4 = Obj->ObjectID; - } - Attribute = Attribute + CHESTQUESTNUMBER; - } while ((int)Attribute < 0x12); - bVar1 = false; - local_5c[0].ObjectID = uVar4; - pTVar2 = AccessObject(local_5c); - ObjectType::setTypeID((ObjectType *)&stack0xffffff94,(pTVar2->Type).TypeID); - iVar3 = ObjectType::getAttributeOffset((ObjectType *)&stack0xffffff94,CONTENT); - if ((iVar3 != -1) && (uVar4 = Object::getAttribute(Obj,CONTENT), uVar4 != 0)) { - bVar1 = true; - } - if (bVar1) { - Value = Value + 1; - local_4c[0].ObjectID = NONE.ObjectID; - local_2c = NONE.ObjectID; - local_5c[0].ObjectID = NONE.ObjectID; - local_3c[0] = (Object)Obj->ObjectID; - GetFirstContainerObject(local_4c); - Obj->ObjectID = (ulong)local_4c[0]; - local_5c[0].ObjectID = local_4c[0].ObjectID; - (*Stream->_vptr_TWriteStream[1])(Stream,0); - } - else { - (*Stream->_vptr_TWriteStream[1])(Stream,0xff); - ObjectCounter = ObjectCounter + 1; - if ((Stop) && (Value == 1)) { - return; - } - local_5c[0] = (Object)Obj->ObjectID; - local_4c[0].ObjectID = local_5c[0].ObjectID; - local_3c[0].ObjectID = local_5c[0].ObjectID; - local_2c = local_5c[0].ObjectID; - pTVar2 = AccessObject(local_3c); - local_5c[0].ObjectID = (pTVar2->NextObject).ObjectID; - Obj->ObjectID = (ulong)local_5c[0]; - local_4c[0].ObjectID = local_5c[0].ObjectID; - } - bVar1 = true; - } -LAB_0805d072: - if ((int)Value < 1) { - return; - } - } while( true ); -} - - - -void SaveObjects(TReadStream *Stream,TWriteScriptFile *Script) - -{ - bool bVar1; - bool bVar2; - char cVar3; - uint uVar4; - int Number; - ushort TypeID; - bool FirstObject; - int iStack_1020; - bool ProcessObjects; - int Depth; - char Help [4096]; - - iStack_1020 = 1; - bVar1 = true; - // try { // try from 0805d3a5 to 0805d4f1 has its CatchHandler @ 0805d513 - TWriteScriptFile::writeText(Script,"{"); - bVar2 = true; - do { - if (bVar1) { - uVar4 = (*Stream->_vptr_TReadStream[2])(Stream); - if ((short)uVar4 == -1) { - iStack_1020 = iStack_1020 + -1; - bVar1 = false; - TWriteScriptFile::writeText(Script,"}"); - } - else { - if (!bVar2) { - TWriteScriptFile::writeText(Script,", "); - } - TWriteScriptFile::writeNumber(Script,uVar4 & 0xffff); - bVar1 = false; - } - } - else { - uVar4 = (*Stream->_vptr_TReadStream[1])(Stream); - cVar3 = (char)uVar4; - if (cVar3 == -1) { - bVar1 = true; - bVar2 = false; - } - else { - TWriteScriptFile::writeText(Script," "); - TWriteScriptFile::writeText(Script,InstanceAttributeNames[uVar4 & 0xff]); - TWriteScriptFile::writeText(Script,"="); - if (cVar3 == '\0') { - iStack_1020 = iStack_1020 + 1; - bVar1 = true; - TWriteScriptFile::writeText(Script,"{"); - bVar2 = true; - } - else if ((byte)(cVar3 - 9U) < 2) { - (*Stream->_vptr_TReadStream[4])(Stream,&Depth,0x1000); - TWriteScriptFile::writeString(Script,(char *)&Depth); - } - else { - Number = (*Stream->_vptr_TReadStream[3])(Stream); - TWriteScriptFile::writeNumber(Script,Number); - } - } - } - } while (0 < iStack_1020); - return; -} - void RefreshSector(int x,int y,int z,TReadStream *Stream) { -- cgit v1.2.3