aboutsummaryrefslogtreecommitdiff
path: root/reference
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-05-26 01:44:13 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-05-26 01:44:13 -0300
commitfbb392953c5af29b6a0924590c24a05befb72e56 (patch)
treed999d2cdb92824f1dbbb93111164696fba607328 /reference
parentc2f41059c71a0c7bfc0b64a7f53334d3bfd0ee76 (diff)
downloadgame-fbb392953c5af29b6a0924590c24a05befb72e56.tar.gz
game-fbb392953c5af29b6a0924590c24a05befb72e56.zip
more object functions
Diffstat (limited to 'reference')
-rw-r--r--reference/game.c962
1 files changed, 0 insertions, 962 deletions
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)
{