diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-06-08 19:54:40 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-06-08 19:54:40 -0300 |
| commit | eaa3536c027a4f7c1b879b78ab0ecdefcdb4833d (patch) | |
| tree | 03f851e558656f8fc36fdb982c28fbc09cef8dac /reference/game.c | |
| parent | ab9f606371a1df23e9cacbffa0811db7a9e50100 (diff) | |
| download | game-eaa3536c027a4f7c1b879b78ab0ecdefcdb4833d.tar.gz game-eaa3536c027a4f7c1b879b78ab0ecdefcdb4833d.zip | |
impl `TCreature::Move` which was absolute hell + some tidying up
Diffstat (limited to 'reference/game.c')
| -rw-r--r-- | reference/game.c | 483 |
1 files changed, 0 insertions, 483 deletions
diff --git a/reference/game.c b/reference/game.c index fec668b..7e6d16d 100644 --- a/reference/game.c +++ b/reference/game.c @@ -22210,58 +22210,6 @@ LAB_0808ffd8: __cxa_throw(puVar3,&RESULT::typeinfo,0);
}
-
-
-void CheckContainerDestination(Object *Obj,Object *Con)
-
-{
- bool bVar1;
- undefined4 *puVar2;
- int iVar3;
- ulong uVar4;
- ulong *puVar5;
- Object local_4c [4];
- Object local_3c [4];
- ulong local_2c;
- Object Help;
-
- local_2c = Con->ObjectID;
- do {
- puVar5 = &local_2c;
- // try { // try from 08090164 to 08090227 has its CatchHandler @ 08090243
- Object::getObjectType(local_3c);
- if (local_3c[0].ObjectID == 0) {
- Object::getObjectType(local_4c);
- bVar1 = ObjectType::getFlag((ObjectType *)local_4c,CHEST);
- if (!bVar1) {
- local_4c[0] = (Object)Con->ObjectID;
- iVar3 = CountObjectsInContainer(local_4c);
- Object::getObjectType(local_3c);
- uVar4 = ObjectType::getAttribute((ObjectType *)local_3c,CAPACITY);
- if ((int)uVar4 <= iVar3) {
- puVar2 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar2 = 10;
-LAB_080901af:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar2,&RESULT::typeinfo,0);
- }
- }
- return;
- }
- local_3c[0] = (Object)Obj->ObjectID;
- if (local_2c == local_3c[0].ObjectID) {
- puVar2 = (undefined4 *)__cxa_allocate_exception(4,puVar5);
- *puVar2 = 9;
- goto LAB_080901af;
- }
- Object::getContainer(local_4c);
- local_3c[0].ObjectID = local_4c[0].ObjectID;
- local_2c = local_4c[0].ObjectID;
- } while( true );
-}
-
-
-
void CheckContainerPlace(ObjectType *Type,Object *Con,Object *oldObj)
{
@@ -22388,175 +22336,6 @@ LAB_080904cb: __cxa_throw(puVar3,&RESULT::typeinfo,0);
}
-
-
-void CheckInventoryDestination(Object *Obj,Object *Con,bool Split)
-
-{
- uint uVar1;
- Object OVar2;
- bool bVar3;
- int ClothesType;
- ulong uVar4;
- ulong uVar5;
- ulong uVar6;
- undefined4 *puVar7;
- int Position;
- bool bVar8;
- undefined4 uVar9;
- int local_68;
- int Hand;
- ulong uStack_5c;
- bool Split_local;
- Object Help;
- Object local_4c [4];
- ulong local_3c;
- Object local_2c;
- Object Help_1;
-
- local_2c = (Object)Con->ObjectID;
- // try { // try from 08090584 to 08090930 has its CatchHandler @ 080909c5
- uVar4 = GetObjectBodyPosition(&local_2c);
- uVar1 = uVar4 - 5;
- if ((1 < uVar1) && (uVar4 != 10)) {
- Object::getObjectType(&local_2c);
- bVar3 = ObjectType::getFlag((ObjectType *)&local_2c,CLOTHES);
- if (!bVar3) {
- puVar7 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar7 = 0xb;
- goto LAB_0809079e;
- }
- Object::getObjectType(&local_2c);
- uVar5 = ObjectType::getAttribute((ObjectType *)&local_2c,BODYPOSITION);
- if (uVar5 == 0) {
- puVar7 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar7 = 0xc;
- goto LAB_0809079e;
- }
- if (uVar4 != uVar5) {
- puVar7 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar7 = 0xd;
- goto LAB_0809079e;
- }
- }
- local_2c = (Object)Con->ObjectID;
- uVar5 = GetObjectCreatureID(&local_2c);
- Object::getObjectType(&local_2c);
- bVar3 = ObjectType::getFlag((ObjectType *)&local_2c,CLOTHES);
- if (bVar3) {
- Object::getObjectType(&local_2c);
- uVar6 = ObjectType::getAttribute((ObjectType *)&local_2c,BODYPOSITION);
- if ((uVar6 == 0) && (uVar1 < 2)) {
- uVar9 = 5;
- uVar4 = uVar5;
- GetBodyObject((ulong)&local_2c,uVar5);
- bVar3 = false;
- local_3c = NONE.ObjectID;
- local_4c[0].ObjectID = NONE.ObjectID;
- if ((local_2c.ObjectID != NONE.ObjectID) &&
- (uStack_5c = Obj->ObjectID, local_4c[0].ObjectID = uStack_5c,
- local_2c.ObjectID != uStack_5c)) {
- bVar3 = true;
- }
- if (!bVar3) {
- uVar9 = 6;
- GetBodyObject((ulong)local_4c,uVar5);
- OVar2.ObjectID = local_4c[0].ObjectID;
- bVar3 = false;
- local_2c.ObjectID = local_4c[0].ObjectID;
- bVar8 = local_4c[0].ObjectID != NONE.ObjectID;
- uStack_5c = NONE.ObjectID;
- local_4c[0].ObjectID = NONE.ObjectID;
- if ((bVar8) &&
- (local_4c[0] = (Object)Obj->ObjectID, local_3c = local_4c[0].ObjectID,
- OVar2.ObjectID != local_4c[0].ObjectID)) {
- bVar3 = true;
- }
- uVar4 = uVar5;
- if (!bVar3) {
- return;
- }
- }
- puVar7 = (undefined4 *)__cxa_allocate_exception(4,uVar4,uVar9);
- *puVar7 = 0xe;
- goto LAB_0809079e;
- }
- }
- uVar6 = uVar5;
- GetBodyObject((ulong)&stack0xffffffa4,uVar5);
- local_4c[0].ObjectID = NONE.ObjectID;
- local_3c = NONE.ObjectID;
- if (uStack_5c == NONE.ObjectID) {
- if (uVar1 < 2) {
- local_68 = 5;
- do {
- GetBodyObject((ulong)&stack0xffffffa4,uVar5);
- local_4c[0].ObjectID = NONE.ObjectID;
- if (uStack_5c != NONE.ObjectID) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,CLOTHES);
- if (bVar3) {
- Object::getObjectType(local_4c);
- uVar4 = ObjectType::getAttribute((ObjectType *)local_4c,BODYPOSITION);
- if (uVar4 == 0) {
- puVar7 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar7 = 0xf;
- goto LAB_0809079e;
- }
- }
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,WEAPON);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,THROW);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,BOW);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,WAND);
- if (!bVar3) goto LAB_080906c2;
- }
- }
- }
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,WEAPON);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,THROW);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,BOW);
- if (!bVar3) {
- Object::getObjectType(local_4c);
- bVar3 = ObjectType::getFlag((ObjectType *)local_4c,WAND);
- if (!bVar3) goto LAB_080906c2;
- }
- }
- }
- if ((Split) ||
- (local_4c[0] = (Object)Obj->ObjectID, local_3c = local_4c[0].ObjectID,
- uStack_5c != local_4c[0].ObjectID)) {
- puVar7 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar7 = 0x10;
- goto LAB_0809079e;
- }
- }
-LAB_080906c2:
- local_68 = local_68 + 1;
- } while (local_68 < 7);
- }
- return;
- }
- puVar7 = (undefined4 *)__cxa_allocate_exception(4,uVar6,uVar4);
- *puVar7 = 4;
-LAB_0809079e:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar7,&RESULT::typeinfo,0);
-}
-
-
-
void CheckInventoryPlace(ObjectType *Type,Object *Con,Object *OldObj)
{
@@ -43304,268 +43083,6 @@ void __static_initialization_and_destruction_0(int __initialize_p,int __priority return;
}
-// DWARF original prototype: void Move(TCreature * this, Object * Obj, int zx, int zy, int zz, uchar
-// Count)
-
-void __thiscall TCreature::Move(TCreature *this,Object *Obj,int zx,int zy,int zz,uchar Count)
-
-{
- bool bVar1;
- bool bVar2;
- ulong uVar3;
- undefined4 *puVar4;
- int *piVar5;
- int Delay;
- uint Count_00;
- Object *Obj_00;
- Object *pOVar6;
- int iVar7;
- int local_a0;
- int b_1;
- int b;
- int iStack_94;
- uchar Count_local;
- int local_90;
- Object local_8c [4];
- Object local_7c [4];
- Object local_6c;
- Object DestCon;
- Object local_5c;
- Object DestObj;
- Object local_4c [4];
- Object local_3c [4];
- Object local_2c;
- Object Dest;
-
- b._3_1_ = Count;
- // try { // try from 080bf7d5 to 080bfb3a has its CatchHandler @ 080c01e0
- bVar1 = Object::exists(Obj);
- if (bVar1) {
- local_2c.ObjectID = (this->CrObject).ObjectID;
- if (Obj->ObjectID == local_2c.ObjectID) {
- Go(this,zx,zy,zz);
- return;
- }
- Object::getObjectType(&local_2c);
- if (local_2c.ObjectID == 99) {
- TCombat::DelayAttack(&this->Combat,2000);
- }
- Object::getObjectType(&local_2c);
- bVar1 = ObjectType::getFlag((ObjectType *)&local_2c,CUMULATIVE);
- // try { // try from 080bfff5 to 080c0037 has its CatchHandler @ 080c01e0
- if ((bVar1) && (uVar3 = Object::getAttribute(Obj,AMOUNT), uVar3 < Count)) {
- uVar3 = Object::getAttribute(Obj,AMOUNT);
- b._3_1_ = (byte)uVar3;
- }
- if (zx == 0xffff) {
- if (zy == 0) {
- b_1 = 1;
- iVar7 = b_1;
- do {
- b_1 = iVar7;
- local_6c = (Object)Obj->ObjectID;
- // try { // try from 080bfb73 to 080bfb94 has its CatchHandler @ 080c003d
- GetBodyContainer((ulong)&local_5c,this->ID);
- CheckInventoryDestination(&local_6c,&local_5c,false);
- if ((1 < b_1 - 5U) && (b_1 != 10)) break;
- iVar7 = b_1 + 1;
- } while (b_1 + 1 < 0xb);
- zy = b_1;
- if (b_1 == 0) {
- local_a0 = 1;
- do {
- pOVar6 = (Object *)this->ID;
- iVar7 = local_a0;
- // try { // try from 080bfbe3 to 080bfc4b has its CatchHandler @ 080c01e0
- GetBodyObject((ulong)&local_6c,(int)pOVar6);
- local_5c.ObjectID = ::NONE.ObjectID;
- if (local_6c.ObjectID != ::NONE.ObjectID) {
- Object::getObjectType(&local_5c);
- pOVar6 = (Object *)0x4;
- bVar1 = ObjectType::getFlag((ObjectType *)&local_5c,CONTAINER);
- if (bVar1) {
- pOVar6 = &local_5c;
- local_5c.ObjectID = local_6c.ObjectID;
- local_4c[0] = (Object)Obj->ObjectID;
- // try { // try from 080bffcb to 080bffcf has its CatchHandler @ 080c0067
- CheckContainerDestination(local_4c,pOVar6);
- b_1 = local_a0;
- }
- }
- local_a0 = local_a0 + 1;
- } while (local_a0 < 0xb);
- zy = b_1;
- if (b_1 == 0) {
- puVar4 = (undefined4 *)__cxa_allocate_exception(4,pOVar6,iVar7);
- *puVar4 = 4;
- goto LAB_080bfb23;
- }
- }
- }
- if (((0 < zy) && (0x34 < zy - 0xbU)) && (zy < 0x50)) {
- pOVar6 = &local_6c;
- Obj_00 = (Object *)this->ID;
- GetBodyContainer((ulong)pOVar6,(int)Obj_00);
- local_5c.ObjectID = ::NONE.ObjectID;
- if (zy < 0x40) {
- Obj_00 = (Object *)this->ID;
- GetBodyObject((ulong)local_3c,(int)Obj_00);
- local_5c.ObjectID = local_3c[0].ObjectID;
- }
- else {
- if (zz < 0xfe) {
- ObjectType::setTypeID((ObjectType *)&local_2c,0);
- Obj_00 = (Object *)this->ID;
- GetObject((ulong)local_3c,(int)Obj_00,0xffff,zy,zz,(ObjectType *)zz);
- local_5c.ObjectID = local_3c[0].ObjectID;
- }
- if (zz == 0xfe) {
- local_4c[0].ObjectID = ::NONE.ObjectID;
- if (local_6c.ObjectID == ::NONE.ObjectID) goto LAB_080bfeb5;
- Object::getContainer(local_3c);
- local_6c.ObjectID = local_3c[0].ObjectID;
- Obj_00 = pOVar6;
- }
- }
- bVar1 = false;
- if (local_5c.ObjectID != ::NONE.ObjectID) {
- local_4c[0].ObjectID = ::NONE.ObjectID;
- local_3c[0].ObjectID = ::NONE.ObjectID;
- Object::getObjectType(local_3c);
- Obj_00 = (Object *)0x4;
- bVar1 = ObjectType::getFlag((ObjectType *)local_3c,CONTAINER);
- }
- if (bVar1) {
- local_6c.ObjectID = local_5c.ObjectID;
- local_5c.ObjectID = ::NONE.ObjectID;
- local_2c.ObjectID = ::NONE.ObjectID;
- }
- bVar1 = false;
- local_4c[0].ObjectID = ::NONE.ObjectID;
- local_3c[0].ObjectID = ::NONE.ObjectID;
- if (local_5c.ObjectID != ::NONE.ObjectID) {
- Object::getObjectType(local_3c);
- Obj_00 = (Object *)0x6;
- bVar2 = ObjectType::getFlag((ObjectType *)local_3c,CUMULATIVE);
- if (bVar2) {
- Object::getObjectType(local_3c);
- Obj_00 = &local_5c;
- Object::getObjectType(&local_2c);
- if (local_3c[0].ObjectID == local_2c.ObjectID) {
- bVar1 = true;
- }
- }
- }
- if (bVar1) {
- Count_00 = (uint)b._3_1_;
- Obj_00 = (Object *)0x2;
- // try { // try from 080bfd46 to 080bfd4a has its CatchHandler @ 080c01e0
- uVar3 = Object::getAttribute(&local_5c,AMOUNT);
- if (100 < uVar3 + Count_00) {
- Obj_00 = (Object *)0x2;
- // try { // try from 080bfdd1 to 080bffa7 has its CatchHandler @ 080c01e0
- uVar3 = Object::getAttribute(&local_5c,AMOUNT);
- Count_00 = 100 - uVar3;
- }
- if (0 < (int)Count_00) {
- Obj_00 = local_8c;
- local_2c.ObjectID = ::NONE.ObjectID;
- local_7c[0].ObjectID = local_5c.ObjectID;
- local_8c[0] = (Object)Obj->ObjectID;
- // try { // try from 080bfd98 to 080bfd9c has its CatchHandler @ 080c0082
- Merge(this->ID,Obj_00,local_7c,Count_00,&local_2c);
- b._3_1_ = b._3_1_ - (char)Count_00;
- if (b._3_1_ == 0) {
- return;
- }
- }
- local_7c[0] = (Object)::NONE.ObjectID;
- local_5c.ObjectID = local_7c[0].ObjectID;
- }
- local_8c[0].ObjectID = ::NONE.ObjectID;
- if (local_6c.ObjectID != ::NONE.ObjectID) {
- local_7c[0].ObjectID = local_6c.ObjectID;
- local_8c[0].ObjectID = local_5c.ObjectID;
- local_4c[0] = (Object)Obj->ObjectID;
- // try { // try from 080bfd13 to 080bfd17 has its CatchHandler @ 080c00b2
- ::Move(this->ID,local_4c,local_7c,(uint)b._3_1_,false,local_8c);
- return;
- }
- puVar4 = (undefined4 *)__cxa_allocate_exception(4,Obj_00);
- *puVar4 = 5;
- goto LAB_080bfb23;
- }
- error(&DAT_08106e00,zy);
- }
- else {
- GetMapContainer((int)&local_2c,zx,zy);
- bVar1 = Object::exists(&local_2c);
- if (bVar1) {
- Object::getObjectType(local_3c);
- bVar1 = ObjectType::getFlag((ObjectType *)local_3c,HANG);
- if (bVar1) {
- bVar1 = false;
- bVar2 = CoordinateFlag();
- if ((bVar2) || (bVar2 = CoordinateFlag(), bVar2)) {
- bVar1 = true;
- }
- if (bVar1) {
- local_3c[0].ObjectID = local_2c.ObjectID;
- bVar1 = ObjectInRange(this->ID,local_3c,1);
- if (!bVar1) {
- bVar1 = ToDoClear(this);
- if ((bVar1) && (this->Type == PLAYER)) {
- SendSnapback(this->Connection);
- }
- local_4c[0] = (Object)Obj->ObjectID;
- uVar3 = GetObjectCreatureID(local_4c);
- if (uVar3 != this->ID) {
- local_5c = (Object)Obj->ObjectID;
- ToDoMove(this,&local_5c,0xffff,0,0,'\x01');
- }
- ToDoGo(this,zx,zy,zz,false,0x7fffffff);
- local_5c = (Object)Obj->ObjectID;
- ToDoMove(this,&local_5c,zx,zy,zz,'\x01');
- if (this->NrToDo == 0) {
- return;
- }
- this->LockToDo = true;
- this->ActToDo = 0;
- local_90 = CalculateDelay(this);
- iStack_94 = 1;
- piVar5 = &stack0xffffff6c;
- if (0 < local_90) {
- piVar5 = &local_90;
- }
- iVar7 = *piVar5;
- priority_queue<>::insert(&ToDoQueue);
- this->NextWakeup = iVar7 + ServerMilliseconds;
- return;
- }
- }
- }
- local_5c.ObjectID = ::NONE.ObjectID;
- local_4c[0].ObjectID = local_2c.ObjectID;
- local_6c = (Object)Obj->ObjectID;
- ::Move(this->ID,&local_6c,local_4c,(uint)b._3_1_,false,&local_5c);
- return;
- }
- }
- puVar4 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar4 = 0xffffffff;
- }
- else {
-LAB_080bfeb5:
- puVar4 = (undefined4 *)__cxa_allocate_exception(4);
- *puVar4 = 1;
- }
-LAB_080bfb23:
- // WARNING: Subroutine does not return
- __cxa_throw(puVar4,&RESULT::typeinfo,0);
-}
-
-
-
// DWARF original prototype: void Trade(TCreature * this, Object * Obj, ulong PartnerID)
void __thiscall TCreature::Trade(TCreature *this,Object *Obj,ulong PartnerID)
|
