mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
En_Wallmas (Wallmaster) OK and documented. object_wallmaster documented (#731)
* EnWallmas_Init and EnWallmas_Destroy OK * func_80874B88 OK * func_80874BE4 OK * func_80874D1C OK * func_80874DE8 OK * func_80874F14 OK * A bunch of small functions OK * A bunch of smaller functions OK again * func_808752CC OK * func_808758C8 OK * func_80875910 and func_8087596C OK * func_808756AC and func_8087571C OK * EnWallmas_Update OK * func_80875A74 OK * func_80874A88 and func_80874B04 OK * A bunch of functions OK * func_808759B8 and func_80875A0C * EnWallmas_Draw OK * func_808760A4 and func_80876118 OK * func_80875F04 OK * Use object symbols * Import data to C * Use generated reloc * Document object_wallmaster * Misc cleanup * Name the DrawDamageEffects variables * Name draw functions * Enum for damage values * Port function names from OoT * Last cleanup before PR * Respond to Elliptic's review * Respond to Elliptic's second review * gWallmasterWaitAnim -> gWallmasterIdleAnim * Change all EnWallmas to Wallmaster (except the actor's name itself) * Respond to hensldm's review * Fix merge conflicts
This commit is contained in:
@@ -1,63 +1,75 @@
|
||||
<Root>
|
||||
<!-- Assets for both Wallmasters and Floormasters. -->
|
||||
<File Name="object_wallmaster" Segment="6">
|
||||
<Animation Name="object_wallmaster_Anim_000590" Offset="0x590" />
|
||||
<Animation Name="object_wallmaster_Anim_000EA4" Offset="0xEA4" />
|
||||
<Animation Name="object_wallmaster_Anim_0019CC" Offset="0x19CC" />
|
||||
<Animation Name="object_wallmaster_Anim_002158" Offset="0x2158" />
|
||||
<Animation Name="object_wallmaster_Anim_00299C" Offset="0x299C" />
|
||||
<Animation Name="object_wallmaster_Anim_003120" Offset="0x3120" />
|
||||
<Animation Name="object_wallmaster_Anim_0039B0" Offset="0x39B0" />
|
||||
<Animation Name="object_wallmaster_Anim_0041F4" Offset="0x41F4" />
|
||||
<DList Name="object_wallmaster_DL_006660" Offset="0x6660" />
|
||||
<DList Name="object_wallmaster_DL_006800" Offset="0x6800" />
|
||||
<DList Name="object_wallmaster_DL_006A20" Offset="0x6A20" />
|
||||
<DList Name="object_wallmaster_DL_006C58" Offset="0x6C58" />
|
||||
<DList Name="object_wallmaster_DL_006E98" Offset="0x6E98" />
|
||||
<DList Name="object_wallmaster_DL_007038" Offset="0x7038" />
|
||||
<DList Name="object_wallmaster_DL_007258" Offset="0x7258" />
|
||||
<DList Name="object_wallmaster_DL_007408" Offset="0x7408" />
|
||||
<DList Name="object_wallmaster_DL_0075A8" Offset="0x75A8" />
|
||||
<DList Name="object_wallmaster_DL_0077C8" Offset="0x77C8" />
|
||||
<DList Name="object_wallmaster_DL_007978" Offset="0x7978" />
|
||||
<DList Name="object_wallmaster_DL_007B18" Offset="0x7B18" />
|
||||
<DList Name="object_wallmaster_DL_007CE8" Offset="0x7CE8" />
|
||||
<DList Name="object_wallmaster_DL_007E98" Offset="0x7E98" />
|
||||
<DList Name="object_wallmaster_DL_008688" Offset="0x8688" />
|
||||
<Texture Name="object_wallmaster_Tex_0088F0" OutName="tex_0088F0" Format="rgba16" Width="8" Height="16" Offset="0x88F0" />
|
||||
<Texture Name="object_wallmaster_Tex_0089F0" OutName="tex_0089F0" Format="rgba16" Width="8" Height="16" Offset="0x89F0" />
|
||||
<Texture Name="object_wallmaster_Tex_008AF0" OutName="tex_008AF0" Format="rgba16" Width="8" Height="8" Offset="0x8AF0" />
|
||||
<Texture Name="object_wallmaster_Tex_008B70" OutName="tex_008B70" Format="rgba16" Width="4" Height="16" Offset="0x8B70" />
|
||||
<Texture Name="object_wallmaster_Tex_008BF0" OutName="tex_008BF0" Format="rgba16" Width="4" Height="8" Offset="0x8BF0" />
|
||||
<Texture Name="object_wallmaster_Tex_008C30" OutName="tex_008C30" Format="rgba16" Width="8" Height="16" Offset="0x8C30" />
|
||||
<Texture Name="object_wallmaster_Tex_008D30" OutName="tex_008D30" Format="rgba16" Width="8" Height="16" Offset="0x8D30" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E30" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_01" Offset="0x8E30" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E3C" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_02" Offset="0x8E3C" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E48" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_03" Offset="0x8E48" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E54" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_04" Offset="0x8E54" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E60" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_05" Offset="0x8E60" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E6C" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_06" Offset="0x8E6C" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E78" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_07" Offset="0x8E78" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E84" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_08" Offset="0x8E84" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E90" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_09" Offset="0x8E90" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008E9C" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0A" Offset="0x8E9C" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EA8" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0B" Offset="0x8EA8" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EB4" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0C" Offset="0x8EB4" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EC0" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0D" Offset="0x8EC0" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008ECC" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0E" Offset="0x8ECC" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008ED8" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_0F" Offset="0x8ED8" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EE4" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_10" Offset="0x8EE4" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EF0" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_11" Offset="0x8EF0" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008EFC" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_12" Offset="0x8EFC" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F08" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_13" Offset="0x8F08" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F14" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_14" Offset="0x8F14" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F20" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_15" Offset="0x8F20" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F2C" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_16" Offset="0x8F2C" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F38" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_17" Offset="0x8F38" />
|
||||
<Limb Name="object_wallmaster_Standardlimb_008F44" Type="Standard" EnumName="OBJECT_WALLMASTER_LIMB_18" Offset="0x8F44" />
|
||||
<Skeleton Name="object_wallmaster_Skel_008FB0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_WALLMASTER_LIMB_NONE" LimbMax="OBJECT_WALLMASTER_LIMB_MAX" EnumName="object_wallmaster_Limbs" Offset="0x8FB0" />
|
||||
<Animation Name="object_wallmaster_Anim_009244" Offset="0x9244" />
|
||||
<Animation Name="object_wallmaster_Anim_009520" Offset="0x9520" />
|
||||
<Animation Name="object_wallmaster_Anim_009DB0" Offset="0x9DB0" />
|
||||
<Animation Name="object_wallmaster_Anim_00A054" Offset="0xA054" />
|
||||
<Animation Name="gWallmasterDamageAnim" Offset="0x590" /> <!-- Original name is "wm_damage" -->
|
||||
<Animation Name="gWallmasterRecoverFromDamageAnim" Offset="0xEA4" /> <!-- Original name is "wm_damage_wait" -->
|
||||
<Animation Name="gWallmasterJumpAnim" Offset="0x19CC" /> <!-- Original name is "wm_f_jump" -->
|
||||
<Animation Name="gFloormasterTurnAnim" Offset="0x2158" /> <!-- Original name is "wm_l_turn" -->
|
||||
<Animation Name="gWallmasterLungeAnim" Offset="0x299C" /> <!-- Original name is "wm_link_hangup" -->
|
||||
<Animation Name="gWallmasterMissAnim" Offset="0x3120" /> <!-- Unused. Original name is "wm_miss" -->
|
||||
<Animation Name="gFloormasterTapFingerAnim" Offset="0x39B0" /> <!-- Original name is "wm_motionA" -->
|
||||
<Animation Name="gWallmasterWalkAnim" Offset="0x41F4" /> <!-- Original name is "wm_move" -->
|
||||
|
||||
<!-- Wallmaster/Floormaster Limb DisplayLists -->
|
||||
<DList Name="gWallmasterThumbDistalDL" Offset="0x6660" />
|
||||
<DList Name="gWallmasterThumbMiddleDL" Offset="0x6800" />
|
||||
<DList Name="gWallmasterThumbProximalDL" Offset="0x6A20" />
|
||||
<DList Name="gWallmasterWristDL" Offset="0x6C58" />
|
||||
<DList Name="gWallmasterMiddleFingerDistalDL" Offset="0x6E98" />
|
||||
<DList Name="gWallmasterMiddleFingerMiddleDL" Offset="0x7038" />
|
||||
<DList Name="gWallmasterMiddleFingerProximalDL" Offset="0x7258" />
|
||||
<DList Name="gWallmasterRingFingerDistalDL" Offset="0x7408" />
|
||||
<DList Name="gWallmasterRingFingerMiddleDL" Offset="0x75A8" />
|
||||
<DList Name="gWallmasterRingFingerProximalDL" Offset="0x77C8" />
|
||||
<DList Name="gWallmasterIndexFingerDistalDL" Offset="0x7978" />
|
||||
<DList Name="gWallmasterIndexFingerMiddleDL" Offset="0x7B18" />
|
||||
<DList Name="gWallmasterIndexFingerProximalDL" Offset="0x7CE8" />
|
||||
<DList Name="gWallmasterHandDL" Offset="0x7E98" />
|
||||
|
||||
<!-- Wallmaster/Floormaster Little Finger DisplayList. Not part of the skeleton, unlike the other fingers. -->
|
||||
<DList Name="gWallmasterLittleFingerDL" Offset="0x8688" />
|
||||
|
||||
<!-- Wallmaster/Floormaster Textures -->
|
||||
<Texture Name="gWallmasterWristTopTex" OutName="wallmaster_wrist_top" Format="rgba16" Width="8" Height="16" Offset="0x88F0" />
|
||||
<Texture Name="gWallmasterWristSidesTex" OutName="wallmaster_wrist_sides" Format="rgba16" Width="8" Height="16" Offset="0x89F0" />
|
||||
<Texture Name="gWallmasterHandBackTex" OutName="wallmaster_hand_back" Format="rgba16" Width="8" Height="8" Offset="0x8AF0" />
|
||||
<Texture Name="gWallmasterFingerTipTex" OutName="wallmaster_finger_tip" Format="rgba16" Width="4" Height="16" Offset="0x8B70" />
|
||||
<Texture Name="gWallmasterJointsAndSidesTex" OutName="wallmaster_joints_and_sides" Format="rgba16" Width="4" Height="8" Offset="0x8BF0" />
|
||||
<Texture Name="gWallmasterPalmAndFingerPadTex" OutName="wallmaster_palm_and_finger_pad" Format="rgba16" Width="8" Height="16" Offset="0x8C30" />
|
||||
<Texture Name="gWallmasterKnuckleAndFingerTopTex" OutName="wallmaster_knuckle_and_finger_top" Format="rgba16" Width="8" Height="16" Offset="0x8D30" />
|
||||
|
||||
<!-- Wallmaster/Floormaster Limbs -->
|
||||
<Limb Name="gWallmasterRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_ROOT" Offset="0x8E30" />
|
||||
<Limb Name="gWallmasterHandLimb" Type="Standard" EnumName="WALLMASTER_LIMB_HAND" Offset="0x8E3C" />
|
||||
<Limb Name="gWallmasterIndexFingerRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_INDEX_FINGER_ROOT" Offset="0x8E48" />
|
||||
<Limb Name="gWallmasterIndexFingerProximalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_INDEX_FINGER_PROXIMAL" Offset="0x8E54" />
|
||||
<Limb Name="gWallmasterIndexFingerDistalRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_INDEX_FINGER_DISTAL_ROOT" Offset="0x8E60" />
|
||||
<Limb Name="gWallmasterIndexFingerMiddleLimb" Type="Standard" EnumName="WALLMASTER_LIMB_INDEX_FINGER_MIDDLE" Offset="0x8E6C" />
|
||||
<Limb Name="gWallmasterIndexFingerDistalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_INDEX_FINGER_DISTAL" Offset="0x8E78" />
|
||||
<Limb Name="gWallmasterRingFingerRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_RING_FINGER_ROOT" Offset="0x8E84" />
|
||||
<Limb Name="gWallmasterRingFingerProximalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_RING_FINGER_PROXIMAL" Offset="0x8E90" />
|
||||
<Limb Name="gWallmasterRingFingerDistalRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_RING_FINGER_DISTAL_ROOT" Offset="0x8E9C" />
|
||||
<Limb Name="gWallmasterRingFingerMiddleLimb" Type="Standard" EnumName="WALLMASTER_LIMB_RING_FINGER_MIDDLE" Offset="0x8EA8" />
|
||||
<Limb Name="gWallmasterRingFingerDistalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_RING_FINGER_DISTAL" Offset="0x8EB4" />
|
||||
<Limb Name="gWallmasterMiddleFingerRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_MIDDLE_FINGER_ROOT" Offset="0x8EC0" />
|
||||
<Limb Name="gWallmasterMiddleFingerProximalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_MIDDLE_FINGER_PROXIMAL" Offset="0x8ECC" />
|
||||
<Limb Name="gWallmasterMiddleFingerDistalRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_MIDDLE_FINGER_DISTAL_ROOT" Offset="0x8ED8" />
|
||||
<Limb Name="gWallmasterMiddleFingerMiddleLimb" Type="Standard" EnumName="WALLMASTER_LIMB_MIDDLE_FINGER_MIDDLE" Offset="0x8EE4" />
|
||||
<Limb Name="gWallmasterMiddleFingerDistalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_MIDDLE_FINGER_DISTAL" Offset="0x8EF0" />
|
||||
<Limb Name="gWallmasterWristRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_WRIST_ROOT" Offset="0x8EFC" />
|
||||
<Limb Name="gWallmasterWristLimb" Type="Standard" EnumName="WALLMASTER_LIMB_WRIST" Offset="0x8F08" />
|
||||
<Limb Name="gWallmasterThumbRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_THUMB_ROOT" Offset="0x8F14" />
|
||||
<Limb Name="gWallmasterThumbProximalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_THUMB_PROXIMAL" Offset="0x8F20" />
|
||||
<Limb Name="gWallmasterThumbDistalRootLimb" Type="Standard" EnumName="WALLMASTER_LIMB_THUMB_DISTAL_ROOT" Offset="0x8F2C" />
|
||||
<Limb Name="gWallmasterThumbMiddleLimb" Type="Standard" EnumName="WALLMASTER_LIMB_THUMB_MIDDLE" Offset="0x8F38" />
|
||||
<Limb Name="gWallmasterThumbDistalLimb" Type="Standard" EnumName="WALLMASTER_LIMB_THUMB_DISTAL" Offset="0x8F44" />
|
||||
|
||||
<!-- Wallmaster/Floormaster Skeleton-->
|
||||
<Skeleton Name="gWallmasterSkel" Type="Flex" LimbType="Standard" LimbNone="WALLMASTER_LIMB_NONE" LimbMax="WALLMASTER_LIMB_MAX" EnumName="WallmasterLimbs" Offset="0x8FB0" />
|
||||
|
||||
<Animation Name="gWallmasterStopWalkAnim" Offset="0x9244" /> <!-- Original name is "wm_move_wait" -->
|
||||
<Animation Name="gWallmasterHoverAnim" Offset="0x9520" /> <!-- Original name is "wm_success" -->
|
||||
<Animation Name="gWallmasterIdleAnim" Offset="0x9DB0" /> <!-- Original name is "wm_wait" -->
|
||||
<Animation Name="gWallmasterStandUpAnim" Offset="0xA054" /> <!-- Original name is "wm_wait_move" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -800,8 +800,7 @@ beginseg
|
||||
name "ovl_En_Wallmas"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o"
|
||||
include "build/data/ovl_En_Wallmas/ovl_En_Wallmas.data.o"
|
||||
include "build/data/ovl_En_Wallmas/ovl_En_Wallmas.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
#include "z_en_floormas.h"
|
||||
#include "objects/object_wallmaster/object_wallmaster.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_400)
|
||||
|
||||
@@ -154,8 +153,8 @@ void EnFloormas_Init(Actor* thisx, GlobalContext* globalCtx2) {
|
||||
|
||||
Actor_ProcessInitChain(&this->actor, sInitChain);
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 50.0f);
|
||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_wallmaster_Skel_008FB0, &object_wallmaster_Anim_009DB0,
|
||||
this->jointTable, this->morphTable, 25);
|
||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gWallmasterSkel, &gWallmasterIdleAnim, this->jointTable,
|
||||
this->morphTable, WALLMASTER_LIMB_MAX);
|
||||
Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
|
||||
|
||||
@@ -259,7 +258,7 @@ void func_808D0A48(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D0B08(EnFloormas* this) {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_009DB0);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWallmasterIdleAnim);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actionFunc = func_808D0B50;
|
||||
}
|
||||
@@ -278,7 +277,7 @@ void func_808D0B50(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D0C14(EnFloormas* this) {
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_wallmaster_Anim_00A054, -3.0f);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWallmasterStandUpAnim, -3.0f);
|
||||
this->actionFunc = func_808D0C58;
|
||||
}
|
||||
|
||||
@@ -296,7 +295,7 @@ void func_808D0C58(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
|
||||
void func_808D0CE4(EnFloormas* this) {
|
||||
if (this->actionFunc != func_808D0F80) {
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &object_wallmaster_Anim_0041F4, 1.5f);
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &gWallmasterWalkAnim, 1.5f);
|
||||
} else {
|
||||
this->skelAnime.playSpeed = 1.5f;
|
||||
}
|
||||
@@ -334,7 +333,7 @@ void func_808D0D70(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D0ECC(EnFloormas* this) {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_009244);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWallmasterStopWalkAnim);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actionFunc = func_808D0F14;
|
||||
}
|
||||
@@ -373,10 +372,10 @@ void func_808D108C(EnFloormas* this) {
|
||||
|
||||
this->actor.speedXZ = 0.0f;
|
||||
if (sp36 > 0) {
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_wallmaster_Anim_002158, -3.0f);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gFloormasterTurnAnim, -3.0f);
|
||||
} else {
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_002158, -1.0f,
|
||||
Animation_GetLastFrame(&object_wallmaster_Anim_002158.common), 0.0f, 2, -3.0f);
|
||||
Animation_Change(&this->skelAnime, &gFloormasterTurnAnim, -1.0f, Animation_GetLastFrame(&gFloormasterTurnAnim),
|
||||
0.0f, ANIMMODE_ONCE, -3.0f);
|
||||
}
|
||||
|
||||
if (this->actor.scale.x > 0.009f) {
|
||||
@@ -418,8 +417,8 @@ void func_808D11BC(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D1380(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_009520, 3.0f, 0.0f,
|
||||
Animation_GetLastFrame(&object_wallmaster_Anim_009520.common), 2, -3.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterHoverAnim, 3.0f, 0.0f, Animation_GetLastFrame(&gWallmasterHoverAnim),
|
||||
ANIMMODE_ONCE, -3.0f);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actor.gravity = 0.0f;
|
||||
func_808D08D0(this);
|
||||
@@ -492,7 +491,7 @@ void func_808D1650(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D1740(EnFloormas* this) {
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_0019CC, 1.0f, 41.0f, 42.0f, 2, 5.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 1.0f, 41.0f, 42.0f, ANIMMODE_ONCE, 5.0f);
|
||||
if ((this->actor.speedXZ < 0.0f) || (this->actionFunc != func_808D1650)) {
|
||||
this->unk_18E = 30;
|
||||
} else {
|
||||
@@ -538,7 +537,7 @@ void func_808D17EC(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
|
||||
if ((this->unk_18E == 0) && (sp24 != 0)) {
|
||||
if (this->skelAnime.endFrame < 45.0f) {
|
||||
this->skelAnime.endFrame = Animation_GetLastFrame(&object_wallmaster_Anim_0019CC.common);
|
||||
this->skelAnime.endFrame = Animation_GetLastFrame(&gWallmasterJumpAnim);
|
||||
} else if (this->actor.params == ENFLOORMAS_GET_7FFF_40) {
|
||||
func_808D2700(this);
|
||||
} else {
|
||||
@@ -569,8 +568,8 @@ void func_808D19D4(EnFloormas* this) {
|
||||
this->actor.shape.rot.y = parent->shape.rot.y + 0x5555;
|
||||
this->actor.world.pos = parent->world.pos;
|
||||
this->actor.params = ENFLOORMAS_GET_7FFF_10;
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_0019CC, 1.0f, 41.0f,
|
||||
Animation_GetLastFrame(&object_wallmaster_Anim_0019CC.common), 2, 0.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 1.0f, 41.0f, Animation_GetLastFrame(&gWallmasterJumpAnim),
|
||||
ANIMMODE_ONCE, 0.0f);
|
||||
this->collider.dim.radius = sCylinderInit.dim.radius * 0.6f;
|
||||
this->collider.dim.height = sCylinderInit.dim.height * 0.6f;
|
||||
this->actor.flags &= ~ACTOR_FLAG_400;
|
||||
@@ -596,7 +595,7 @@ void func_808D1B44(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D1BCC(EnFloormas* this) {
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &object_wallmaster_Anim_0041F4, 4.5f);
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &gWallmasterWalkAnim, 4.5f);
|
||||
this->actor.speedXZ = 5.0f;
|
||||
this->actionFunc = func_808D1C1C;
|
||||
}
|
||||
@@ -623,7 +622,7 @@ void func_808D1C1C(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
|
||||
void func_808D1D0C(EnFloormas* this) {
|
||||
if (this->actionFunc != func_808D1C1C) {
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &object_wallmaster_Anim_0041F4, 4.5f);
|
||||
Animation_PlayLoopSetSpeed(&this->skelAnime, &gWallmasterWalkAnim, 4.5f);
|
||||
}
|
||||
this->actor.speedXZ = 5.0f;
|
||||
this->actionFunc = func_808D1D6C;
|
||||
@@ -686,7 +685,7 @@ void func_808D1F7C(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D1FD4(EnFloormas* this) {
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_0019CC, 2.0f, 0.0f, 41.0f, 2, 0.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 2.0f, 0.0f, 41.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actionFunc = func_808D2040;
|
||||
}
|
||||
@@ -716,7 +715,7 @@ void func_808D217C(EnFloormas* this, Player* player) {
|
||||
Vec3f* ptr;
|
||||
u8 playerForm;
|
||||
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_0019CC, 1.0f, 36.0f, 45.0f, 2, -3.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 1.0f, 36.0f, 45.0f, ANIMMODE_ONCE, -3.0f);
|
||||
this->actor.flags &= ~ACTOR_FLAG_1;
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actor.velocity.y = 0.0f;
|
||||
@@ -772,7 +771,7 @@ void func_808D22C8(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D2484(EnFloormas* this) {
|
||||
Animation_Change(&this->skelAnime, &object_wallmaster_Anim_0019CC, 2.0f, 0.0f, 41.0f, 2, 0.0f);
|
||||
Animation_Change(&this->skelAnime, &gWallmasterJumpAnim, 2.0f, 0.0f, 41.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actionFunc = func_808D24F0;
|
||||
}
|
||||
@@ -816,7 +815,7 @@ void func_808D24F0(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D2700(EnFloormas* this) {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_009DB0);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWallmasterIdleAnim);
|
||||
this->unk_18E = 0;
|
||||
this->unk_194 = 1500;
|
||||
this->actor.params = ENFLOORMAS_GET_7FFF_40;
|
||||
@@ -881,10 +880,10 @@ void func_808D2764(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
this->actor.colChkInfo.health = sColChkInfoInit.health;
|
||||
func_808D0C14(this);
|
||||
} else if (this->unk_18E == 0) {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_0039B0);
|
||||
Animation_PlayOnce(&this->skelAnime, &gFloormasterTapFingerAnim);
|
||||
this->unk_18E = 1;
|
||||
} else {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_009DB0);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWallmasterIdleAnim);
|
||||
this->unk_18E = 0;
|
||||
}
|
||||
}
|
||||
@@ -924,7 +923,7 @@ void func_808D2AF4(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D2B18(EnFloormas* this) {
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &object_wallmaster_Anim_000590, -3.0f);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWallmasterDamageAnim, -3.0f);
|
||||
func_800BE504(&this->actor, &this->collider);
|
||||
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 20);
|
||||
this->actor.speedXZ = 5.0f;
|
||||
@@ -967,7 +966,7 @@ void func_808D2C08(EnFloormas* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_808D2CDC(EnFloormas* this) {
|
||||
Animation_PlayOnce(&this->skelAnime, &object_wallmaster_Anim_000EA4);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWallmasterRecoverFromDamageAnim);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actor.velocity.y = 0.0f;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
@@ -1151,9 +1150,10 @@ s32 EnFloormas_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
|
||||
Actor* thisx, Gfx** gfx) {
|
||||
EnFloormas* this = THIS;
|
||||
|
||||
if (limbIndex == 1) {
|
||||
if (limbIndex == WALLMASTER_LIMB_ROOT) {
|
||||
pos->z += this->unk_192;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1165,13 +1165,10 @@ void EnFloormas_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis
|
||||
Matrix_GetStateTranslation(&this->limbPos[D_808D393C[limbIndex]]);
|
||||
}
|
||||
|
||||
if (limbIndex == 19) {
|
||||
if (limbIndex == WALLMASTER_LIMB_WRIST) {
|
||||
Matrix_GetStateTranslationAndScaledX(1000.0f, &this->limbPos[9]);
|
||||
Matrix_GetStateTranslationAndScaledX(-1000.0f, &this->limbPos[10]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (limbIndex == 2) {
|
||||
} else if (limbIndex == WALLMASTER_LIMB_HAND) {
|
||||
Matrix_StatePush();
|
||||
Matrix_InsertTranslation(1600.0f, -700.0f, -1700.0f, MTXMODE_APPLY);
|
||||
Matrix_InsertYRotation_f(M_PI / 3, MTXMODE_APPLY);
|
||||
@@ -1179,7 +1176,7 @@ void EnFloormas_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis
|
||||
Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix((*gfx)++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList((*gfx)++, object_wallmaster_DL_008688);
|
||||
gSPDisplayList((*gfx)++, gWallmasterLittleFingerDL);
|
||||
|
||||
Matrix_StatePop();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define Z_EN_FLOORMAS_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_wallmaster/object_wallmaster.h"
|
||||
|
||||
struct EnFloormas;
|
||||
|
||||
@@ -26,8 +27,8 @@ typedef struct EnFloormas {
|
||||
/* 0x0190 */ s16 unk_190;
|
||||
/* 0x0192 */ s16 unk_192;
|
||||
/* 0x0194 */ s16 unk_194;
|
||||
/* 0x0196 */ Vec3s jointTable[25];
|
||||
/* 0x022C */ Vec3s morphTable[25];
|
||||
/* 0x0196 */ Vec3s jointTable[WALLMASTER_LIMB_MAX];
|
||||
/* 0x022C */ Vec3s morphTable[WALLMASTER_LIMB_MAX];
|
||||
/* 0x02C4 */ f32 drawDmgEffAlpha;
|
||||
/* 0x02C8 */ f32 drawDmgEffScale;
|
||||
/* 0x02CC */ f32 drawDmgEffFrozenSteamScale;
|
||||
|
||||
@@ -186,10 +186,10 @@ void EnPr2_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
if (this->actor.parent != NULL) {
|
||||
Actor* parent = this->actor.parent;
|
||||
EnEncount1* encount1 = (EnEncount1*)this->actor.parent;
|
||||
|
||||
if ((parent->update != NULL) && (((EnEncount1*)parent)->unk_14E > 0)) {
|
||||
((EnEncount1*)parent)->unk_14E--;
|
||||
if ((encount1->actor.update != NULL) && (encount1->unk_14E > 0)) {
|
||||
encount1->unk_14E--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,16 +2,54 @@
|
||||
#define Z_EN_WALLMAS_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_wallmaster/object_wallmaster.h"
|
||||
|
||||
#define WALLMASTER_GET_TYPE(thisx) ((thisx)->params)
|
||||
#define WALLMASTER_GET_SWITCH_FLAG(thisx) (((thisx)->params >> 8) & 0xFF)
|
||||
#define WALLMASTER_IS_FROZEN(thisx) ((thisx)->params & 0x80)
|
||||
|
||||
/**
|
||||
* This type determines under what conditions the Wallmaster will drop from the ceiling.
|
||||
* - WALLMASTER_TYPE_TIMER_ONLY: These Wallmasters don't check for anything to determine
|
||||
* whether or not to drop; they just set a 130-frame timer and drop once it reaches 0.
|
||||
* - WALLMASTER_TYPE_PROXIMITY: These Wallmasters ensure that the player in within a certain
|
||||
* distance of their current position (as dictated by detectionRadius); once the player
|
||||
* enters that range, they set a 130-frame timer and drop once it reaches 0.
|
||||
* - WALLMASTER_TYPE_FLAG: These Wallmasters wait for a certain switch flag to be activated,
|
||||
* as specified in their params. Once this switch is activated, they set an 81-frame timer
|
||||
* and drop once it reaches 0.
|
||||
*
|
||||
* While in the "waiting to drop" state, all Wallmaster variations can be forced to reset the
|
||||
* timer to 130 frames if the player enters certain states (e.g., if the player is no longer
|
||||
* touching the ground). Additionally, WALLMASTER_TYPE_PROXIMITY-type Wallmasters will reset
|
||||
* the timer to 130 frames if the player strays too far from the Wallmaster's current position.
|
||||
*/
|
||||
typedef enum {
|
||||
/* 0x00 */ WALLMASTER_TYPE_TIMER_ONLY,
|
||||
/* 0x01 */ WALLMASTER_TYPE_PROXIMITY,
|
||||
/* 0x02 */ WALLMASTER_TYPE_FLAG
|
||||
} WallmasterType;
|
||||
|
||||
struct EnWallmas;
|
||||
|
||||
typedef void (*EnWallmasActionFunc)(struct EnWallmas*, GlobalContext*);
|
||||
|
||||
typedef struct EnWallmas {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x0144 */ char unk_144[0x44];
|
||||
/* 0x0188 */ EnWallmasActionFunc actionFunc;
|
||||
/* 0x018C */ char unk_18C[0x218];
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ EnWallmasActionFunc actionFunc;
|
||||
/* 0x18C */ u8 drawDmgEffType;
|
||||
/* 0x18E */ s16 timer;
|
||||
/* 0x190 */ s16 switchFlag;
|
||||
/* 0x192 */ Vec3s jointTable[WALLMASTER_LIMB_MAX];
|
||||
/* 0x228 */ Vec3s morphTable[WALLMASTER_LIMB_MAX];
|
||||
/* 0x2C0 */ f32 yTarget;
|
||||
/* 0x2C4 */ f32 detectionRadius;
|
||||
/* 0x2C8 */ f32 drawDmgEffAlpha;
|
||||
/* 0x2CC */ f32 drawDmgEffScale;
|
||||
/* 0x2D0 */ f32 drawDmgEffFrozenSteamScale;
|
||||
/* 0x2D4 */ Vec3f limbPos[11];
|
||||
/* 0x358 */ ColliderCylinder collider;
|
||||
} EnWallmas; // size = 0x3A4
|
||||
|
||||
extern const ActorInit En_Wallmas_InitVars;
|
||||
|
||||
+33
-33
@@ -5108,40 +5108,40 @@
|
||||
0x80872BC0:("func_80872BC0",),
|
||||
0x80874810:("EnWallmas_Init",),
|
||||
0x80874A28:("EnWallmas_Destroy",),
|
||||
0x80874A88:("func_80874A88",),
|
||||
0x80874B04:("func_80874B04",),
|
||||
0x80874B88:("func_80874B88",),
|
||||
0x80874BE4:("func_80874BE4",),
|
||||
0x80874D1C:("func_80874D1C",),
|
||||
0x80874DE8:("func_80874DE8",),
|
||||
0x80874F14:("func_80874F14",),
|
||||
0x80874FD8:("func_80874FD8",),
|
||||
0x80875014:("func_80875014",),
|
||||
0x80875054:("func_80875054",),
|
||||
0x808750B8:("func_808750B8",),
|
||||
0x80875108:("func_80875108",),
|
||||
0x808751C4:("func_808751C4",),
|
||||
0x8087520C:("func_8087520C",),
|
||||
0x80875248:("func_80875248",),
|
||||
0x808752CC:("func_808752CC",),
|
||||
0x808753F0:("func_808753F0",),
|
||||
0x80875484:("func_80875484",),
|
||||
0x80875518:("func_80875518",),
|
||||
0x8087556C:("func_8087556C",),
|
||||
0x808755A8:("func_808755A8",),
|
||||
0x80875638:("func_80875638",),
|
||||
0x808756AC:("func_808756AC",),
|
||||
0x8087571C:("func_8087571C",),
|
||||
0x808758C8:("func_808758C8",),
|
||||
0x80875910:("func_80875910",),
|
||||
0x8087596C:("func_8087596C",),
|
||||
0x808759B8:("func_808759B8",),
|
||||
0x80875A0C:("func_80875A0C",),
|
||||
0x80875A74:("func_80875A74",),
|
||||
0x80874A88:("EnWallmas_Freeze",),
|
||||
0x80874B04:("EnWallmas_ThawIfFrozen",),
|
||||
0x80874B88:("EnWallmas_TimerInit",),
|
||||
0x80874BE4:("EnWallmas_WaitToDrop",),
|
||||
0x80874D1C:("EnWallmas_SetupDrop",),
|
||||
0x80874DE8:("EnWallmas_Drop",),
|
||||
0x80874F14:("EnWallmas_SetupLand",),
|
||||
0x80874FD8:("EnWallmas_Land",),
|
||||
0x80875014:("EnWallmas_SetupStand",),
|
||||
0x80875054:("EnWallmas_Stand",),
|
||||
0x808750B8:("EnWallmas_SetupWalk",),
|
||||
0x80875108:("EnWallmas_Walk",),
|
||||
0x808751C4:("EnWallmas_SetupJumpToCeiling",),
|
||||
0x8087520C:("EnWallmas_JumpToCeiling",),
|
||||
0x80875248:("EnWallmas_SetupReturnToCeiling",),
|
||||
0x808752CC:("EnWallmas_ReturnToCeiling",),
|
||||
0x808753F0:("EnWallmas_SetupDamage",),
|
||||
0x80875484:("EnWallmas_Damage",),
|
||||
0x80875518:("EnWallmas_SetupCooldown",),
|
||||
0x8087556C:("EnWallmas_Cooldown",),
|
||||
0x808755A8:("EnWallmas_SetupDie",),
|
||||
0x80875638:("EnWallmas_Die",),
|
||||
0x808756AC:("EnWallmas_SetupTakePlayer",),
|
||||
0x8087571C:("EnWallmas_TakePlayer",),
|
||||
0x808758C8:("EnWallmas_ProximityOrSwitchInit",),
|
||||
0x80875910:("EnWallmas_WaitForProximity",),
|
||||
0x8087596C:("EnWallmas_WaitForSwitchFlag",),
|
||||
0x808759B8:("EnWallmas_SetupStun",),
|
||||
0x80875A0C:("EnWallmas_Stun",),
|
||||
0x80875A74:("EnWallmas_Update",),
|
||||
0x80875CF4:("EnWallmas_Update",),
|
||||
0x80875F04:("func_80875F04",),
|
||||
0x808760A4:("func_808760A4",),
|
||||
0x80876118:("func_80876118",),
|
||||
0x80875F04:("EnWallmas_DrawShadow",),
|
||||
0x808760A4:("EnWallmas_OverrideLimbDraw",),
|
||||
0x80876118:("EnWallmas_PostLimbDraw",),
|
||||
0x80876268:("EnWallmas_Draw",),
|
||||
0x80876670:("EnDodongo_Init",),
|
||||
0x808768D0:("EnDodongo_Destroy",),
|
||||
|
||||
@@ -5801,10 +5801,7 @@
|
||||
0x808763AC:("D_808763AC","UNK_TYPE1","",0x1),
|
||||
0x808763B4:("D_808763B4","UNK_TYPE1","",0x1),
|
||||
0x808763C0:("D_808763C0","UNK_TYPE1","",0x1),
|
||||
0x808763D4:("D_808763D4","UNK_TYPE1","",0x1),
|
||||
0x808763D6:("D_808763D6","UNK_TYPE1","",0x1),
|
||||
0x808763E6:("D_808763E6","UNK_TYPE1","",0x1),
|
||||
0x808763E7:("D_808763E7","UNK_TYPE1","",0x1),
|
||||
0x808763D4:("D_808763D4","s8","[25]",0x25),
|
||||
0x808763F0:("D_808763F0","f32","",0x4),
|
||||
0x808763F4:("D_808763F4","f32","",0x4),
|
||||
0x808763F8:("D_808763F8","f32","",0x4),
|
||||
|
||||
@@ -1591,20 +1591,6 @@ D_0601A830 = 0x0601A830;
|
||||
D_060014C8 = 0x060014C8;
|
||||
D_06001C38 = 0x06001C38;
|
||||
|
||||
// ovl_En_Wallmas
|
||||
|
||||
D_06000590 = 0x06000590;
|
||||
D_06000EA4 = 0x06000EA4;
|
||||
D_060019CC = 0x060019CC;
|
||||
D_0600299C = 0x0600299C;
|
||||
D_060041F4 = 0x060041F4;
|
||||
D_06008688 = 0x06008688;
|
||||
D_06008FB0 = 0x06008FB0;
|
||||
D_06009244 = 0x06009244;
|
||||
D_06009520 = 0x06009520;
|
||||
D_06009DB0 = 0x06009DB0;
|
||||
D_0600A054 = 0x0600A054;
|
||||
|
||||
// ovl_En_Wdhand
|
||||
|
||||
D_060000F4 = 0x060000F4;
|
||||
|
||||
Reference in New Issue
Block a user