mirror of https://github.com/zeldaret/mm.git
player unions (#1453)
This commit is contained in:
parent
cf41eeb3ac
commit
4422df3ef6
|
@ -1151,9 +1151,9 @@ typedef struct Player {
|
|||
/* 0x3AC */ Vec3f unk_3AC;
|
||||
/* 0x3B8 */ u16 unk_3B8;
|
||||
/* 0x3BA */ union {
|
||||
s16 doorBgCamIndex;
|
||||
s16 unk_3BA; // When in a cutscene, boolean to determine if `PLAYER_STATE1_20000000` is set
|
||||
};
|
||||
s16 haltActorsDuringCsAction; // If true, halt actors belonging to certain categories during a `csAction`
|
||||
s16 doorBgCamIndex; // `BgCamIndex` used during a sliding door and spiral staircase cutscenes
|
||||
} cv; // "Cutscene Variable": context dependent variable that has different meanings depending on what function is called
|
||||
/* 0x3BC */ s16 subCamId;
|
||||
/* 0x3BE */ char unk_3BE[2];
|
||||
/* 0x3C0 */ Vec3f unk_3C0;
|
||||
|
@ -1221,8 +1221,12 @@ typedef struct Player {
|
|||
/* 0xADE */ u8 unk_ADE;
|
||||
/* 0xADF */ s8 unk_ADF[4]; // Circular buffer used for testing for triggering a quickspin
|
||||
/* 0xAE3 */ s8 unk_AE3[4]; // Circular buffer used for ?
|
||||
/* 0xAE7 */ s8 actionVar1; // context dependent variable that has different meanings depending on what action is currently running
|
||||
/* 0xAE8 */ s16 actionVar2; // context dependent variable that has different meanings depending on what action is currently running
|
||||
/* 0xAE7 */ union {
|
||||
s8 actionVar1;
|
||||
} av1; // "Action Variable 1": context dependent variable that has different meanings depending on what action is currently running
|
||||
/* 0xAE8 */ union {
|
||||
s16 actionVar2;
|
||||
} av2; // "Action Variable 2": context dependent variable that has different meanings depending on what action is currently running
|
||||
/* 0xAEC */ f32 unk_AEC;
|
||||
/* 0xAF0 */ union {
|
||||
Vec3f unk_AF0[2];
|
||||
|
|
|
@ -1412,7 +1412,7 @@ s32 func_800B724C(PlayState* play, Actor* actor, u8 csAction) {
|
|||
|
||||
player->csAction = csAction;
|
||||
player->csActor = actor;
|
||||
player->unk_3BA = false;
|
||||
player->cv.haltActorsDuringCsAction = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1420,7 +1420,7 @@ s32 func_800B7298(PlayState* play, Actor* actor, u8 csAction) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (func_800B724C(play, actor, csAction)) {
|
||||
player->unk_3BA = true;
|
||||
player->cv.haltActorsDuringCsAction = true;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -369,13 +369,14 @@ void func_80122F28(Player* player) {
|
|||
s32 func_80122F9C(PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
return (player->stateFlags2 & PLAYER_STATE2_80000) && (player->actionVar1 == 2);
|
||||
return (player->stateFlags2 & PLAYER_STATE2_80000) && (player->av1.actionVar1 == 2);
|
||||
}
|
||||
|
||||
s32 func_80122FCC(PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
return (player->stateFlags2 & PLAYER_STATE2_80000) && ((player->actionVar1 == 1) || (player->actionVar1 == 3));
|
||||
return (player->stateFlags2 & PLAYER_STATE2_80000) &&
|
||||
((player->av1.actionVar1 == 1) || (player->av1.actionVar1 == 3));
|
||||
}
|
||||
|
||||
void func_8012300C(PlayState* play, s32 arg1) {
|
||||
|
@ -389,15 +390,15 @@ void func_8012301C(Actor* thisx, PlayState* play2) {
|
|||
PlayState* play = play2;
|
||||
Player* this = (Player*)thisx;
|
||||
|
||||
this->actionVar1++;
|
||||
this->av1.actionVar1++;
|
||||
|
||||
if (this->actionVar1 == 2) {
|
||||
if (this->av1.actionVar1 == 2) {
|
||||
s16 objectId = gPlayerFormObjectIds[GET_PLAYER_FORM];
|
||||
|
||||
gActorOverlayTable[ACTOR_PLAYER].initInfo->objectId = objectId;
|
||||
func_8012F73C(&play->objectCtx, this->actor.objectSlot, objectId);
|
||||
this->actor.objectSlot = Object_GetSlot(&play->objectCtx, GAMEPLAY_KEEP);
|
||||
} else if (this->actionVar1 >= 3) {
|
||||
} else if (this->av1.actionVar1 >= 3) {
|
||||
s32 objectSlot = Object_GetSlot(&play->objectCtx, gActorOverlayTable[ACTOR_PLAYER].initInfo->objectId);
|
||||
|
||||
if (Object_IsLoaded(&play->objectCtx, objectSlot)) {
|
||||
|
@ -3750,7 +3751,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList1, G
|
|||
}
|
||||
}
|
||||
|
||||
if ((player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_100)) && (player->actionVar2 != 0)) {
|
||||
if ((player->stateFlags1 & (PLAYER_STATE1_2 | PLAYER_STATE1_100)) && (player->av2.actionVar2 != 0)) {
|
||||
static Vec3f D_801C0E40[PLAYER_FORM_MAX] = {
|
||||
{ 0.0f, 0.0f, 0.0f }, // PLAYER_FORM_FIERCE_DEITY
|
||||
{ -578.3f, -1100.9f, 0.0f }, // PLAYER_FORM_GORON
|
||||
|
@ -3770,7 +3771,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList1, G
|
|||
}
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 255, (u8)player->actionVar2);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 255, (u8)player->av2.actionVar2);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_054C90);
|
||||
|
||||
Matrix_Pop();
|
||||
|
|
|
@ -112,8 +112,8 @@ void func_80ACAD88(BgOpenShutter* this, PlayState* play) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
|
||||
Actor_PlaySfx(&this->slidingDoor.dyna.actor, NA_SE_EV_SLIDE_DOOR_OPEN);
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->slidingDoor.dyna.actor, player->doorBgCamIndex, 0.0f,
|
||||
12, 15, 10);
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->slidingDoor.dyna.actor, player->cv.doorBgCamIndex,
|
||||
0.0f, 12, 15, 10);
|
||||
this->unk_164 = 0;
|
||||
this->actionFunc = func_80ACAE5C;
|
||||
this->slidingDoor.dyna.actor.velocity.y = 0.0f;
|
||||
|
|
|
@ -685,7 +685,7 @@ void Boss03_ChasePlayer(Boss03* this, PlayState* play) {
|
|||
(player->actor.shape.feetPos[0].y >= WATER_HEIGHT + 8.0f)) ||
|
||||
(this->workTimer[WORK_TIMER_CURRENT_ACTION] == 0)) {
|
||||
if (&this->actor == player->actor.parent) {
|
||||
player->actionVar2 = 101;
|
||||
player->av2.actionVar2 = 101;
|
||||
player->actor.parent = NULL;
|
||||
player->csAction = PLAYER_CSACTION_NONE;
|
||||
}
|
||||
|
@ -781,7 +781,7 @@ void Boss03_CatchPlayer(Boss03* this, PlayState* play) {
|
|||
(player->actor.shape.feetPos[FOOT_LEFT].y >= WATER_HEIGHT + 8.0f)) ||
|
||||
(this->workTimer[WORK_TIMER_CURRENT_ACTION] == 0)) {
|
||||
if (&this->actor == player->actor.parent) {
|
||||
player->actionVar2 = 101;
|
||||
player->av2.actionVar2 = 101;
|
||||
player->actor.parent = NULL;
|
||||
player->csAction = PLAYER_CSACTION_NONE;
|
||||
Play_DisableMotionBlur();
|
||||
|
@ -909,7 +909,7 @@ void Boss03_ChewPlayer(Boss03* this, PlayState* play) {
|
|||
// Stop chewing when the timer runs out
|
||||
if (this->workTimer[WORK_TIMER_CURRENT_ACTION] == 0) {
|
||||
if (&this->actor == player->actor.parent) {
|
||||
player->actionVar2 = 101;
|
||||
player->av2.actionVar2 = 101;
|
||||
player->actor.parent = NULL;
|
||||
player->csAction = PLAYER_CSACTION_NONE;
|
||||
Play_DisableMotionBlur();
|
||||
|
@ -1751,7 +1751,7 @@ void Boss03_SetupStunned(Boss03* this, PlayState* play) {
|
|||
}
|
||||
|
||||
if (&this->actor == player->actor.parent) {
|
||||
player->actionVar2 = 101;
|
||||
player->av2.actionVar2 = 101;
|
||||
player->actor.parent = NULL;
|
||||
player->csAction = PLAYER_CSACTION_NONE;
|
||||
Play_DisableMotionBlur();
|
||||
|
@ -1903,7 +1903,7 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) {
|
|||
Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_DAMAGE_OLD);
|
||||
|
||||
if (&this->actor == player->actor.parent) {
|
||||
player->actionVar2 = 101;
|
||||
player->av2.actionVar2 = 101;
|
||||
player->actor.parent = NULL;
|
||||
player->csAction = PLAYER_CSACTION_NONE;
|
||||
Play_DisableMotionBlur();
|
||||
|
|
|
@ -132,7 +132,7 @@ void DoorAna_WaitOpen(DoorAna* this, PlayState* play) {
|
|||
if (Math_StepToF(&this->actor.scale.x, 0.01f, 0.001f)) {
|
||||
if ((this->actor.targetMode != TARGET_MODE_0) && (play->transitionTrigger == TRANS_TRIGGER_OFF) &&
|
||||
(play->transitionMode == TRANS_MODE_OFF) && (player->stateFlags1 & PLAYER_STATE1_80000000) &&
|
||||
(player->actionVar1 == 0)) {
|
||||
(player->av1.actionVar1 == 0)) {
|
||||
|
||||
if (grottoType == DOORANA_TYPE_VISIBLE_SCENE_EXIT) {
|
||||
s32 exitIndex = DOORANA_GET_EXIT_INDEX(&this->actor);
|
||||
|
|
|
@ -410,7 +410,7 @@ void func_808A1288(DoorShutter* this, PlayState* play) {
|
|||
this->unk_164 = sp38;
|
||||
this->unk_168 = 0.0f;
|
||||
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->slidingDoor.dyna.actor, player->doorBgCamIndex,
|
||||
Camera_ChangeDoorCam(play->cameraPtrs[CAM_ID_MAIN], &this->slidingDoor.dyna.actor, player->cv.doorBgCamIndex,
|
||||
this->unk_168, 12, sp34, 10);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ void EnBigokuta_ShootPlayer(EnBigokuta* this, PlayState* play) {
|
|||
|
||||
if (&this->picto.actor == player->actor.parent) {
|
||||
player->actor.parent = NULL;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
player->actor.velocity.y = 0.0f;
|
||||
player->actor.world.pos.x += 20.0f * Math_SinS(this->picto.actor.home.rot.y);
|
||||
player->actor.world.pos.z += 20.0f * Math_CosS(this->picto.actor.home.rot.y);
|
||||
|
@ -310,7 +310,7 @@ void EnBigokuta_SuckInPlayer(EnBigokuta* this, PlayState* play) {
|
|||
this->timer++;
|
||||
}
|
||||
|
||||
player->actionVar2 = 0;
|
||||
player->av2.actionVar2 = 0;
|
||||
Math_Vec3f_Copy(&player->actor.world.pos, &this->playerPos);
|
||||
if (Math_Vec3f_StepTo(&player->actor.world.pos, &this->playerHoldPos, sqrtf(this->timer) * 5.0f) < 0.1f) {
|
||||
s16 rotY = this->picto.actor.shape.rot.y;
|
||||
|
|
|
@ -729,7 +729,7 @@ void EnBigslime_SetPlayerParams(EnBigslime* this, PlayState* play) {
|
|||
|
||||
if (player->stateFlags2 & PLAYER_STATE2_80) {
|
||||
player->actor.parent = NULL;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
func_800B8D98(play, &this->actor, 10.0f, this->actor.world.rot.y, 10.0f);
|
||||
}
|
||||
}
|
||||
|
@ -1528,7 +1528,7 @@ void EnBigslime_CutsceneGrabPlayer(EnBigslime* this, PlayState* play) {
|
|||
s32 i;
|
||||
s32 j;
|
||||
|
||||
player->actionVar2 = 0;
|
||||
player->av2.actionVar2 = 0;
|
||||
Math_ScaledStepToS(&this->gekkoRot.x, 0, 0x400);
|
||||
EnBigslime_UpdateCameraGrabPlayer(this, play);
|
||||
if (this->grabPlayerTimer > 0) {
|
||||
|
@ -1577,7 +1577,7 @@ void EnBigslime_AttackPlayerInBigslime(EnBigslime* this, PlayState* play) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
s16 pitch = this->scaleFactor * 0x3333; // polar (zenith) angle
|
||||
|
||||
player->actionVar2 = 0;
|
||||
player->av2.actionVar2 = 0;
|
||||
Math_ScaledStepToS(&this->gekkoRot.x, 0, 0x400);
|
||||
EnBigslime_UpdateCameraGrabPlayer(this, play);
|
||||
EnBigslime_UpdateWavySurface(this);
|
||||
|
@ -1710,7 +1710,7 @@ void EnBigslime_WindupThrowPlayer(EnBigslime* this, PlayState* play) {
|
|||
if (this->windupPunchTimer == -5) {
|
||||
if (player->stateFlags2 & PLAYER_STATE2_80) {
|
||||
player->actor.parent = NULL;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
}
|
||||
|
||||
player->actor.velocity.y = 0.0f;
|
||||
|
|
|
@ -450,7 +450,7 @@ s32 func_8089AE00(EnDinofos* this, PlayState* play) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if ((GET_PLAYER_FORM == PLAYER_FORM_GORON) && (player->actor.velocity.y < -5.0f) && (player->actionVar1 == 1) &&
|
||||
if ((GET_PLAYER_FORM == PLAYER_FORM_GORON) && (player->actor.velocity.y < -5.0f) && (player->av1.actionVar1 == 1) &&
|
||||
(this->unk_28B == 0)) {
|
||||
this->unk_28B = 1;
|
||||
for (i = 0; i < ARRAY_COUNT(this->colliderJntSphElement) - 3; i++) {
|
||||
|
|
|
@ -548,7 +548,7 @@ void EnDragon_Grab(EnDragon* this, PlayState* play) {
|
|||
|
||||
play->unk_18770(play, player);
|
||||
player->actor.parent = &this->actor;
|
||||
player->actionVar2 = 50;
|
||||
player->av2.actionVar2 = 50;
|
||||
this->action = DEEP_PYTHON_ACTION_GRAB;
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_UTSUBO_EAT);
|
||||
EnDragon_SetupAttack(this);
|
||||
|
@ -626,7 +626,7 @@ void EnDragon_Attack(EnDragon* this, PlayState* play) {
|
|||
this->grabWaitTimer = 30;
|
||||
CutsceneManager_Stop(this->grabCsId);
|
||||
if (player->stateFlags2 & PLAYER_STATE2_80) {
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
}
|
||||
|
||||
this->actor.flags &= ~ACTOR_FLAG_100000;
|
||||
|
|
|
@ -319,7 +319,7 @@ void EnRaf_Idle(EnRaf* this, PlayState* play) {
|
|||
if (player->transformation == PLAYER_FORM_GORON) {
|
||||
this->grabTarget = EN_RAF_GRAB_TARGET_GORON_PLAYER;
|
||||
} else {
|
||||
player->actionVar2 = 50;
|
||||
player->av2.actionVar2 = 50;
|
||||
}
|
||||
|
||||
this->playerRotYWhenGrabbed = player->actor.world.rot.y;
|
||||
|
@ -455,7 +455,7 @@ void EnRaf_Chew(EnRaf* this, PlayState* play) {
|
|||
case EN_RAF_GRAB_TARGET_GORON_PLAYER:
|
||||
if (this->chewCount > (BREG(54) + 4)) {
|
||||
player->actor.parent = NULL;
|
||||
player->actionVar2 = 1000;
|
||||
player->av2.actionVar2 = 1000;
|
||||
EnRaf_Explode(this, play);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -463,7 +463,7 @@ void EnRailgibud_Grab(EnRailgibud* this, PlayState* play) {
|
|||
if (!(player->stateFlags2 & PLAYER_STATE2_80) || (player->unk_B62 != 0)) {
|
||||
if ((player->unk_B62 != 0) && (player->stateFlags2 & PLAYER_STATE2_80)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_80;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
}
|
||||
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_RAILGIBUD_ANIM_GRAB_END);
|
||||
|
|
|
@ -843,7 +843,7 @@ void EnRd_Grab(EnRd* this, PlayState* play) {
|
|||
if (!(player->stateFlags2 & PLAYER_STATE2_80) || (player->unk_B62 != 0)) {
|
||||
if ((player->unk_B62 != 0) && (player->stateFlags2 & PLAYER_STATE2_80)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_80;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
}
|
||||
Animation_Change(&this->skelAnime, &gGibdoRedeadGrabEndAnim, 0.5f, 0.0f,
|
||||
Animation_GetLastFrame(&gGibdoRedeadGrabEndAnim), ANIMMODE_ONCE_INTERP, 0.0f);
|
||||
|
|
|
@ -299,7 +299,7 @@ void func_808FA4F4(EnRr* this, PlayState* play) {
|
|||
|
||||
if (player->stateFlags2 & PLAYER_STATE2_80) {
|
||||
player->actor.parent = NULL;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
this->actor.flags |= ACTOR_FLAG_TARGETABLE;
|
||||
this->unk_1F0 = 110;
|
||||
this->unk_1F6 = 2500;
|
||||
|
@ -636,7 +636,7 @@ void func_808FB1C0(EnRr* this, PlayState* play) {
|
|||
Actor_PlaySfx(&this->actor, NA_SE_EN_EYEGOLE_DEMO_EYE);
|
||||
}
|
||||
|
||||
player->actionVar2 = 0;
|
||||
player->av2.actionVar2 = 0;
|
||||
this->unk_1F0 = 8;
|
||||
this->unk_1EA--;
|
||||
|
||||
|
@ -654,7 +654,7 @@ void func_808FB2C0(EnRr* this, PlayState* play) {
|
|||
Player* player = GET_PLAYER(play);
|
||||
|
||||
this->unk_1E6--;
|
||||
player->actionVar2 = 0;
|
||||
player->av2.actionVar2 = 0;
|
||||
Math_StepToF(&player->actor.world.pos.x, this->unk_228.x, 30.0f);
|
||||
Math_StepToF(&player->actor.world.pos.y, this->unk_228.y + this->unk_218, 30.0f);
|
||||
Math_StepToF(&player->actor.world.pos.z, this->unk_228.z, 30.0f);
|
||||
|
|
|
@ -421,7 +421,7 @@ void EnTalkGibud_Grab(EnTalkGibud* this, PlayState* play) {
|
|||
if (!(player->stateFlags2 & PLAYER_STATE2_80) || (player->unk_B62 != 0)) {
|
||||
if ((player->unk_B62 != 0) && (player->stateFlags2 & PLAYER_STATE2_80)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_80;
|
||||
player->actionVar2 = 100;
|
||||
player->av2.actionVar2 = 100;
|
||||
}
|
||||
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_TALK_GIBUD_ANIM_GRAB_END);
|
||||
|
|
|
@ -337,7 +337,7 @@ void func_80BA3DBC(EnToto* this, PlayState* play) {
|
|||
}
|
||||
} else {
|
||||
player = GET_PLAYER(play);
|
||||
if ((player->stateFlags1 & PLAYER_STATE1_400) && (player->actionVar1 != 0)) {
|
||||
if ((player->stateFlags1 & PLAYER_STATE1_400) && (player->av1.actionVar1 != 0)) {
|
||||
Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK);
|
||||
Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_TOTO);
|
||||
Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN);
|
||||
|
|
|
@ -639,8 +639,8 @@ void EnWizFire_Update(Actor* thisx, PlayState* play2) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_4000) && (player->actionVar2 < 90)) {
|
||||
player->actionVar2 = 90;
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_4000) && (player->av2.actionVar2 < 90)) {
|
||||
player->av2.actionVar2 = 90;
|
||||
}
|
||||
|
||||
if (!this->hitByIceArrow && !sPoolHitByIceArrow &&
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1111,8 +1111,10 @@ wordReplace = {
|
|||
"player->unk_AA0": "player->closestSecretDistSq",
|
||||
"player->unk_AAC": "player->headLimbRot",
|
||||
"player->unk_AB2": "player->upperLimbRot",
|
||||
"player->unk_AE7": "player->actionVar1",
|
||||
"player->unk_AE8": "player->actionVar2",
|
||||
"player->unk_AE7": "player->av1.actionVar1",
|
||||
"player->unk_AE8": "player->av2.actionVar2",
|
||||
"player->actionVar1": "player->av1.actionVar1",
|
||||
"player->actionVar2": "player->av2.actionVar2",
|
||||
"player->unk_B2A": "player->getItemDrawIdPlusOne",
|
||||
"player->getItemDrawId": "player->getItemDrawIdPlusOne",
|
||||
"player->unk_B68": "player->fallStartHeight",
|
||||
|
|
Loading…
Reference in New Issue