CThug::TugImpulse

This commit is contained in:
krystalgamer 2024-06-10 19:08:24 +02:00
parent 9c194035cb
commit 75c5de7489
3 changed files with 60 additions and 7 deletions

View File

@ -46,7 +46,7 @@ public:
EXPORT virtual int PlayerIsVisible(int);
EXPORT virtual void CreateCombatImpactEffect(CVector*, int);
EXPORT virtual unsigned char TugImpulse(CVector*, CVector*, CVector*);
EXPORT virtual u8 TugImpulse(CVector*, CVector*, CVector*);
EXPORT virtual void UnknownCBaddyFunctionTwo(void);
EXPORT virtual void UnknownCBaddyFunctionThree(int, int);
EXPORT virtual char UnknownCBaddyFunctionFour(int);

View File

@ -7,6 +7,51 @@
#include "utils.h"
#include "ai.h"
// @TODO
i32 CThug::GetLaunched(CVector*, i32, i32, i32)
{
return 0x10062024;
}
// @Ok
u8 CThug::TugImpulse(CVector* a2, CVector* a3, CVector* a4)
{
this->field_2A8 &= 0xFFFFFFF7;
if (a4)
{
this->field_31C.bothFlags = 16;
this->dumbAssPad = 0;
if (this->field_3A4)
Mem_Delete(reinterpret_cast<void*>(this->field_3A4));
this->field_3A4 = a4;
return 1;
}
i32 Launched = this->GetLaunched(a3, 0, 80, 0);
if (!Launched)
{
return 0;
}
if (this->field_E2 <= 50)
{
if (Launched == 1)
{
this->field_2A8 |= 0x10;
}
else
{
this->field_2A8 &= ~0x10;
}
}
this->field_218 |= 0x80000;
SFX_PlayPos(0x800F, &this->mPos, 0);
this->field_31C.bothFlags = 14;
this->dumbAssPad = 0;
return 1;
}
// @Ok
void CThug::CheckFallBack(void)
{
@ -424,6 +469,9 @@ void validate_CThug(void){
VALIDATE(CThug, field_38C, 0x38C);
VALIDATE(CThug, field_394, 0x394);
VALIDATE(CThug, field_3A4, 0x3A4);
VALIDATE(CThug, field_3B0, 0x3B0);
VALIDATE(CThug, field_3B8, 0x3B8);

17
thug.h
View File

@ -26,6 +26,8 @@ public:
EXPORT void SetParamByIndex(i32, i32);
EXPORT void GetReadyToShootHostage(CMessage*);
EXPORT void CheckFallBack(void);
EXPORT i32 GetLaunched(CVector*, i32, i32, i32);
EXPORT u8 TugImpulse(CVector*, CVector*, CVector*);
EXPORT virtual void SetThugType(int);
@ -42,19 +44,22 @@ public:
int field_384;
int field_388;
int field_38C;
unsigned char padAfter38C[0x394 - 0x38C - 4];
u8 padAfter38C[0x394 - 0x38C - 4];
int field_394;
unsigned char padAfter394[0x3B0-0x394-4];
u8 padAfter394[0x3A4-0x394-4];
CVector* field_3A4;
u8 padAfter3A4[0x3B0-0x3A4-4];
int field_3B0;
unsigned char padAfter3B0[0x3B8-0x3B0-4];
u8 padAfter3B0[0x3B8-0x3B0-4];
int field_3B8;
unsigned char field_3BC;
unsigned char field_3BD;
unsigned char padBottom[0x3C0 - 0x3BD - 1];
u8 field_3BC;
u8 field_3BD;
u8 padBottom[0x3C0 - 0x3BD - 1];
};
class CThugPing : public CSimpleAnim