Skip to content

Commit

Permalink
CScorpion::GetTrapped
Browse files Browse the repository at this point in the history
  • Loading branch information
krystalgamer committed Jun 15, 2024
1 parent 5730d00 commit b418790
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 525 deletions.
1 change: 0 additions & 1 deletion ob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,6 @@ void validate_CSuper(void){
VALIDATE(CSuper, field_FC, 0xFC);
VALIDATE(CSuper, field_100, 0x100);
VALIDATE(CSuper, field_104, 0x104);
VALIDATE(CSuper, field_108, 0x108);

VALIDATE(CSuper, field_10C, 0x10C);
VALIDATE(CSuper, field_114, 0x114);
Expand Down
3 changes: 1 addition & 2 deletions ob.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,7 @@ class CSuper : public CBody {

int field_FC;
int field_100;
int field_104;
int field_108;
SHandle field_104;

int field_10C;
unsigned char padAfter10C[4];
Expand Down
103 changes: 103 additions & 0 deletions scorpion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,104 @@
#include "ai.h"
#include "ps2lowsfx.h"
#include "utils.h"
#include "web.h"

// @NotOk
// case 1 is fucked up
void CScorpion::GetTrapped(void)
{
i32 **v6;
i32 v7;
i32 v8;
switch (this->dumbAssPad)
{
case 0:
new CAIProc_StateSwitchSendMessage(this, 14);

this->CycleAnim(12, 1);
this->field_BD4 = 0;
this->field_BD8 = 0;
this->field_1F8 = 5;
this->dumbAssPad++;
break;
case 1:
if (this->field_142)
this->CycleAnim(12, 1);

this->field_324 |= 2;
if (this->field_BD8 > 0)
this->field_BD8 -= 1;

if (--this->field_1F8 <= 0)
{
v6 = reinterpret_cast<i32**>(Mem_RecoverPointer(&this->field_104));
if (!v6 || (v7 = this->field_BD4, v8 = v6[17][15], v7 == v8))
{
this->dumbAssPad++;
}
else
{
this->field_BD8 += (8000 * (v8 - v7)) >> 12;
this->field_1F8 = 5;
this->field_BD4 = v6[17][15];
}
}

break;
case 2:
this->field_324 |= 2;
this->RunTimer(&this->field_BD8);
if (this->field_BD8 <= 0)
{
this->RunAnim(0xC,
this->field_12A == 12 ? this->field_128 : 0,
-1);
this->dumbAssPad++;
}
break;
case 3:
this->field_324 |= 2;
if (this->field_142)
{
this->RunAnim(0xD, 0, -1);
this->dumbAssPad++;
}
break;
case 4:
if (this->field_128 >= 10)
{
if (this->field_104.field_0)
{
CTrapWebEffect* pWeb = reinterpret_cast<CTrapWebEffect*>(
Mem_RecoverPointer(&this->field_104));
if (pWeb)
{
SFX_PlayPos(0x80C6, &this->mPos, 0);
pWeb->Burst();
}

this->field_104.field_0 = 0;
}
this->field_31C.bothFlags = 12;
this->dumbAssPad++;
}
else
{
this->field_324 |= 2;
}
break;
case 5:
if (this->field_142)
{
this->field_31C.bothFlags = 2;
this->dumbAssPad = 0;
}
break;
default:
print_if_false(0, "Unknown substate!");
break;
}
}

// @Ok
void __inline CScorpion::NextRoom(void)
Expand Down Expand Up @@ -200,6 +298,11 @@ void CScorpion::TakeHit(void)
void validate_CScorpion(void){
VALIDATE_SIZE(CScorpion, 0xC28);

VALIDATE(CScorpion, field_324, 0x324);

VALIDATE(CScorpion, field_BD4, 0xBD4);
VALIDATE(CScorpion, field_BD8, 0xBD8);

VALIDATE(CScorpion, field_BEC, 0xBEC);

VALIDATE(CScorpion, hCurrentTarget, 0xBF0);
Expand Down
9 changes: 7 additions & 2 deletions scorpion.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,17 @@ class CScorpion : public CBaddy {
EXPORT void Gloat(void);
EXPORT void DetermineTarget(void);
EXPORT void TakeHit(void);
EXPORT void GetTrapped(void);


unsigned char padTop[0xBEC-0x324];
i32 field_324;
u8 padAfter324[0xBD4-0x324-4];

CSuper* field_BEC;
i32 field_BD4;
i32 field_BD8;
u8 padAfterBD8[0xBEC-0xBD8-4];

CSuper* field_BEC;
SHandle hCurrentTarget;

i32 field_BF8;
Expand Down
Loading

0 comments on commit b418790

Please sign in to comment.