Animation Cleanup: En_B* Actors (#1326)

* En_B

* more cleanup

* another if (1) fixed

* more cleanup

* more cleanup

* rot

* PR Suggestions

* fix vtx

* rm more Draw

* Update assets/xml/objects/object_yb.xml

Co-authored-by: Isghj <42048411+isghj5@users.noreply.github.com>

* Update assets/xml/objects/object_bigpo.xml

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

---------

Co-authored-by: Isghj <42048411+isghj5@users.noreply.github.com>
Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>
This commit is contained in:
engineer124
2023-07-14 16:33:58 -04:00
committed by GitHub
co-authored by Isghj Tom Overton
parent 6d94e0ce9b
commit b3f4b8a9cb
55 changed files with 967 additions and 606 deletions
+5 -5
View File
@@ -15,18 +15,18 @@
<Limb Name="gAniRightFootLimb" Type="Standard" EnumName="ANI_LIMB_RIGHT_FOOT" Offset="0x27F8" />
<Limb Name="gAniTorsoLimb" Type="Standard" EnumName="ANI_LIMB_TORSO" Offset="0x2804" />
<Limb Name="gAniLeftUpperArmLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_UPPER_ARM" Offset="0x2810" />
<Limb Name="gAniLeftForArmLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_FORARM" Offset="0x281C" />
<Limb Name="gAniLeftForearmLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_FOREARM" Offset="0x281C" />
<Limb Name="gAniLeftHandLimb" Type="Standard" EnumName="ANI_LIMB_LEFT_HAND" Offset="0x2828" />
<Limb Name="gAniRightUpperArmLimb" Type="Standard" EnumName="ANI_LIMB_RIGHT_UPPER_ARM" Offset="0x2834" />
<Limb Name="gAniRightForArmLimb" Type="Standard" EnumName="ANI_LIMB_RIGHT_FORARM" Offset="0x2840" />
<Limb Name="gAniRightForearmLimb" Type="Standard" EnumName="ANI_LIMB_RIGHT_FOREARM" Offset="0x2840" />
<Limb Name="gAniRightHandLimb" Type="Standard" EnumName="ANI_LIMB_RIGHT_HAND" Offset="0x284C" />
<Limb Name="gAniHeadLimb" Type="Standard" EnumName="ANI_LIMB_HEAD" Offset="0x2858" />
<Skeleton Name="gAniSkeleton" Type="Flex" LimbType="Standard" LimbNone="ANI_LIMB_NONE" LimbMax="ANI_LIMB_MAX" EnumName="ObjectAniLimb" Offset="0x28A0" />
<Skeleton Name="gAniSkeleton" Type="Flex" LimbType="Standard" LimbNone="ANI_LIMB_NONE" LimbMax="ANI_LIMB_MAX" EnumName="AniLimb" Offset="0x28A0" />
<DList Name="gAniRightHandDL" Offset="0x4860" />
<DList Name="gAniRightForArmDL" Offset="0x4A50" />
<DList Name="gAniRightForearmDL" Offset="0x4A50" />
<DList Name="gAniRightUpperArmDL" Offset="0x4B38" />
<DList Name="gAniLeftHandDL" Offset="0x4C30" />
<DList Name="gAniLeftForArmDL" Offset="0x4E20" />
<DList Name="gAniLeftForearmDL" Offset="0x4E20" />
<DList Name="gAniLeftUpperArmDL" Offset="0x4F08" />
<DList Name="gAniTorsoDL" Offset="0x5000" />
<DList Name="gAniRightFootDL" Offset="0x5270" />
+58 -42
View File
@@ -1,47 +1,63 @@
<Root>
<!-- Assets for Big Poes -->
<File Name="object_bigpo" Segment="6">
<Animation Name="gBigpoSwingLampAttackAnim" Offset="0x158" /> <!-- Original name is "pog_atack" -->
<Animation Name="gBigpoShockAnim" Offset="0x454" /> <!-- Original name is "pog_damage" -->
<Animation Name="gBigpoBackpeddleAnim" Offset="0x608" /> <!-- Original name is "pog_escape" -->
<Animation Name="gBigpoFloatAnim" Offset="0x924" /> <!-- Original name is "pog_fly" -->
<Animation Name="gBigpoAwakenSpawnAnim" Offset="0xF9C" /> <!-- Original name is "pog_start" -->
<Animation Name="gBigpoAwakenStretchAnim" Offset="0x1360" /> <!-- Original name is "pog_wait" -->
<Texture Name="gBigpoSoulFace" OutName="bigpo_soul_face" Format="i8" Width="32" Height="64" Offset="0x1370" />
<DList Name="gBigpoDrawSoulDL" Offset="0x1BB0" /> <!-- Original name is "bigpo_soul_modelT" -->
<Texture Name="gBigpoNecklaceSkullHalfTex" OutName="bigpo_skull_necklace" Format="rgba16" Width="16" Height="16" Offset="0x1C70" />
<Texture Name="gBigpoLanternGlassTex" OutName="bigpo_lantern_glass" Format="rgba16" Width="16" Height="16" Offset="0x1E70" />
<Texture Name="gBigpoTornRobeTex" OutName="bigpo_torn_robe" Format="rgba16" Width="32" Height="32" Offset="0x2070" />
<Texture Name="gBigpoArmSectionTex" OutName="bigpo_arm_section" Format="rgba16" Width="16" Height="16" Offset="0x2870" />
<Texture Name="gBigpoHoodEdge" OutName="bigpo_hood_edge" Format="rgba16" Width="8" Height="8" Offset="0x2A70" />
<Texture Name="gBigpoNecklaceBeadsTex" OutName="bigpo_necklace_beads" Format="rgba16" Width="16" Height="8" Offset="0x2AF0" />
<Texture Name="gBigpoShawlTex" OutName="bigpo_shawl" Format="rgba16" Width="16" Height="16" Offset="0x2BF0" />
<Texture Name="gBigpoGlowingEyeTex" OutName="bigpo_glowing_eye" Format="rgba16" Width="16" Height="16" Offset="0x2DF0" />
<!-- <Blob Name="object_bigpo_Blob_003200" Size="0x350" Offset="0x3200" /> -->
<!-- <Blob Name="object_bigpo_Blob_003790" Size="0x370" Offset="0x3790" /> -->
<DList Name="gBigpoDrawLanternFallingDL" Offset="0x41A0" /> <!-- Original name is "pog_kantera_hahen_model" ("kantera" = "lantern", "hahen" = "fragment") -->
<DList Name="gBigpoDrawLanternMainDL" Offset="0x42C8" /> <!-- Original name is "poh_big_cantera" -->
<DList Name="gBigpoDrawLanternPurpleTopDL" Offset="0x43F8" />
<DList Name="gBigpoDrawHandDL" Offset="0x4488" />
<DList Name="gBigpoDrawSmallArmDL" Offset="0x4538" />
<DList Name="gBigpoDrawBigArmDL" Offset="0x45D8" />
<DList Name="gBigpoDrawArmAndGrowthDL" Offset="0x4680" />
<DList Name="gBigpoDrawMediumArmDL" Offset="0x4768" />
<DList Name="gBigpoDrawNecklaceHoodShawlDL" Offset="0x4808" />
<DList Name="gBigpoDrawFaceDL" Offset="0x4AE8" />
<DList Name="gBigpoDrawLowerRobeDL" Offset="0x4BD8" />
<Texture Name="gBigpoCrispyPiecesTex" OutName="bigpo_crispy_pieces" Format="rgba16" Width="16" Height="16" Offset="0x4C98" />
<Texture Name="gBigpoCrispyEyesTex" OutName="bigpo_crispy_eyes" Format="rgba16" Width="8" Height="8" Offset="0x4E98" />
<DList Name="gBigpoDrawCrispyBodyDL" Offset="0x58B8" />
<Limb Name="gBigpoFaceLimb" Type="Standard" Offset="0x5B88" />
<Limb Name="gBigpoLeftArmUpperLimb" Type="Standard" Offset="0x5B94" />
<Limb Name="gBigpoLeftForarmLimb" Type="Standard" Offset="0x5BA0" />
<Limb Name="gBigpoRightArmUpperLimb" Type="Standard" Offset="0x5BAC" />
<Limb Name="gBigpoRightForarmLimb" Type="Standard" Offset="0x5BB8" />
<Limb Name="gBigpoRightHandLimb" Type="Standard" Offset="0x5BC4" />
<Limb Name="gBigpoLanternLimb" Type="Standard" Offset="0x5BD0" />
<Limb Name="gBigpoHatAndCloakLimb" Type="Standard" Offset="0x5BDC" />
<Limb Name="gBigpoLowerRobe" Type="Standard" Offset="0x5BE8" />
<Skeleton Name="gBigpoSkeleton" Type="Normal" LimbType="Standard" Offset="0x5C18" />
<Animation Name="gBigPoeSwingLampAttackAnim" Offset="0x158" /> <!-- Original name is "pog_atack" -->
<Animation Name="gBigPoeShockAnim" Offset="0x454" /> <!-- Original name is "pog_damage" -->
<Animation Name="gBigPoeBackpedalAnim" Offset="0x608" /> <!-- Original name is "pog_escape" -->
<Animation Name="gBigPoeFloatAnim" Offset="0x924" /> <!-- Original name is "pog_fly" -->
<Animation Name="gBigPoeAwakenSpawnAnim" Offset="0xF9C" /> <!-- Original name is "pog_start" -->
<Animation Name="gBigPoeAwakenStretchAnim" Offset="0x1360" /> <!-- Original name is "pog_wait" -->
<Texture Name="gBigPoeSoulFace" OutName="bigpo_soul_face" Format="i8" Width="32" Height="64" Offset="0x1370" />
<DList Name="gBigPoeSoulDL" Offset="0x1BB0" /> <!-- Original name is "bigpo_soul_modelT" -->
<Texture Name="gBigPoeNecklaceSkullHalfTex" OutName="bigpo_skull_necklace" Format="rgba16" Width="16" Height="16" Offset="0x1C70" />
<Texture Name="gBigPoeLanternGlassTex" OutName="bigpo_lantern_glass" Format="rgba16" Width="16" Height="16" Offset="0x1E70" />
<Texture Name="gBigPoeTornRobeTex" OutName="bigpo_torn_robe" Format="rgba16" Width="32" Height="32" Offset="0x2070" />
<Texture Name="gBigPoeArmSectionTex" OutName="bigpo_arm_section" Format="rgba16" Width="16" Height="16" Offset="0x2870" />
<Texture Name="gBigPoeHoodEdge" OutName="bigpo_hood_edge" Format="rgba16" Width="8" Height="8" Offset="0x2A70" />
<Texture Name="gBigPoeNecklaceBeadsTex" OutName="bigpo_necklace_beads" Format="rgba16" Width="16" Height="8" Offset="0x2AF0" />
<Texture Name="gBigPoeShawlTex" OutName="bigpo_shawl" Format="rgba16" Width="16" Height="16" Offset="0x2BF0" />
<Texture Name="gBigPoeGlowingEyeTex" OutName="bigpo_glowing_eye" Format="rgba16" Width="16" Height="16" Offset="0x2DF0" />
<!-- Carried over from object_po_field from OoT. Field Poes and Big Poes shared assets, -->
<!-- but certain DLists/Vtx were dropped, so some remain unused -->
<!-- These 5 vtx were likely grouped as one, but they are separated out here for the used and unused sections -->
<Array Name="gFieldPoeLanternVtx" Count="33" Offset="0x2FF0">
<Vtx/>
</Array>
<Array Name="gFieldPoeBodyAndFaceVtx" Count="53" Offset="0x3200"> <!-- Unused -->
<Vtx/>
</Array>
<Array Name="gFieldPoeArmVtx" Count="36" Offset="0x3550">
<Vtx/>
</Array>
<Array Name="gFieldPoeCloakVtx" Count="55" Offset="0x3790"> <!-- Unused -->
<Vtx/>
</Array>
<Array Name="gFieldPoeFaceHoodRobeVtx" Count="106" Offset="0x3B00">
<Vtx/>
</Array>
<DList Name="gBigPoeLanternFallingDL" Offset="0x41A0" /> <!-- Original name is "pog_kantera_hahen_model" ("kantera" = "lantern", "hahen" = "fragment") -->
<DList Name="gBigPoeLanternMainDL" Offset="0x42C8" /> <!-- Original name is "poh_big_cantera" -->
<DList Name="gBigPoeLanternPurpleTopDL" Offset="0x43F8" />
<DList Name="gBigPoeHandDL" Offset="0x4488" />
<DList Name="gBigPoeSmallArmDL" Offset="0x4538" />
<DList Name="gBigPoeBigArmDL" Offset="0x45D8" />
<DList Name="gBigPoeArmAndGrowthDL" Offset="0x4680" />
<DList Name="gBigPoeMediumArmDL" Offset="0x4768" />
<DList Name="gBigPoeNecklaceHoodShawlDL" Offset="0x4808" />
<DList Name="gBigPoeFaceDL" Offset="0x4AE8" />
<DList Name="gBigPoeLowerRobeDL" Offset="0x4BD8" />
<Texture Name="gBigPoeCrispyPiecesTex" OutName="bigpo_crispy_pieces" Format="rgba16" Width="16" Height="16" Offset="0x4C98" />
<Texture Name="gBigPoeCrispyEyesTex" OutName="bigpo_crispy_eyes" Format="rgba16" Width="8" Height="8" Offset="0x4E98" />
<DList Name="gBigPoeCrispyBodyDL" Offset="0x58B8" />
<Limb Name="gBigPoeFaceLimb" Type="Standard" EnumName="BIG_POE_LIMB_FACE" Offset="0x5B88" />
<Limb Name="gBigPoeLeftUpperArmLimb" Type="Standard" EnumName="BIG_POE_LIMB_LEFT_UPPER_ARM" Offset="0x5B94" />
<Limb Name="gBigPoeLeftForearmLimb" Type="Standard" EnumName="BIG_POE_LIMB_LEFT_FOREARM" Offset="0x5BA0" />
<Limb Name="gBigPoeRightUpperArmLimb" Type="Standard" EnumName="BIG_POE_LIMB_RIGHT_UPPER_ARM" Offset="0x5BAC" />
<Limb Name="gBigPoeRightForearmLimb" Type="Standard" EnumName="BIG_POE_LIMB_RIGHT_FOREARM" Offset="0x5BB8" />
<Limb Name="gBigPoeRightHandLimb" Type="Standard" EnumName="BIG_POE_LIMB_RIGHT_HAND" Offset="0x5BC4" />
<Limb Name="gBigPoeLanternLimb" Type="Standard" EnumName="BIG_POE_LIMB_LANTERN" Offset="0x5BD0" />
<Limb Name="gBigPoeHatAndCloakLimb" Type="Standard" EnumName="BIG_POE_LIMB_HAT_AND_CLOAK" Offset="0x5BDC" />
<Limb Name="gBigPoeLowerRobe" Type="Standard" EnumName="BIG_POE_LIMB_LOWER_ROBE" Offset="0x5BE8" />
<Skeleton Name="gBigPoeSkeleton" Type="Normal" LimbType="Standard" LimbNone="BIG_POE_LIMB_NONE" LimbMax="BIG_POE_LIMB_MAX" EnumName="BigPoeLimb" Offset="0x5C18" />
</File>
</Root>
+4 -4
View File
@@ -7,10 +7,10 @@
<DList Name="gDs2nTorsoDL" Offset="0x2420" />
<DList Name="gDs2nHeadDL" Offset="0x2740" />
<DList Name="gDs2nRightUpperArmDL" Offset="0x2C20" />
<DList Name="gDs2nRightForarmDL" Offset="0x2D38" />
<DList Name="gDs2nRightForearmDL" Offset="0x2D38" />
<DList Name="gDs2nRightHandDL" Offset="0x2F68" />
<DList Name="gDs2nLeftUpperArmDL" Offset="0x30E0" />
<DList Name="gDs2nLeftForarmDL" Offset="0x31F8" />
<DList Name="gDs2nLeftForearmDL" Offset="0x31F8" />
<DList Name="gDs2nLeftHandDL" Offset="0x33B0" />
<DList Name="gDs2nHipsDL" Offset="0x3528" />
<DList Name="gDs2nRightThighDL" Offset="0x35F0" />
@@ -80,10 +80,10 @@
<Limb Name="gDs2nLimb_0080BC" Type="Standard" EnumName="DS2N_LIMB_0A" Offset="0x80BC" />
<Limb Name="gDs2nTorsoLimb" Type="Standard" EnumName="DS2N_LIMB_TORSO" Offset="0x80C8" />
<Limb Name="gDs2nLeftUpperArmLimb" Type="Standard" EnumName="DS2N_LIMB_LEFT_UPPER_ARM" Offset="0x80D4" />
<Limb Name="gDs2nLeftForarmLimb" Type="Standard" EnumName="DS2N_LIMB_LEFT_FORARM" Offset="0x80E0" />
<Limb Name="gDs2nLeftForearmLimb" Type="Standard" EnumName="DS2N_LIMB_LEFT_FOREARM" Offset="0x80E0" />
<Limb Name="gDs2nLeftHandLimb" Type="Standard" EnumName="DS2N_LIMB_LEFT_HAND" Offset="0x80EC" />
<Limb Name="gDs2nRightUpperArmLimb" Type="Standard" EnumName="DS2N_LIMB_RIGHT_UPPER_ARM" Offset="0x80F8" />
<Limb Name="gDs2nRightForarmLimb" Type="Standard" EnumName="DS2N_LIMB_RIGHT_FORARM" Offset="0x8104" />
<Limb Name="gDs2nRightForearmLimb" Type="Standard" EnumName="DS2N_LIMB_RIGHT_FOREARM" Offset="0x8104" />
<Limb Name="gDs2nRightHandLimb" Type="Standard" EnumName="DS2N_LIMB_RIGHT_HAND" Offset="0x8110" />
<Limb Name="gDs2nHeadLimb" Type="Standard" EnumName="DS2N_LIMB_HEAD" Offset="0x811C" />
<Skeleton Name="gDs2nSkeleton" Type="Flex" LimbType="Standard" LimbNone="DS2N_LIMB_NONE" LimbMax="DS2N_LIMB_MAX" EnumName="Ds2nLimb" Offset="0x8170" />
+3 -3
View File
@@ -30,12 +30,12 @@
<Texture Name="gHsBackTex" OutName="back" Format="ci8" Width="16" Height="32" Offset="0x5F70" />
<Limb Name="gHsRootLimb" Type="Standard" EnumName="HS_LIMB_ROOT" Offset="0x6170" />
<Limb Name="gHsLeftUpperArmLimb" Type="Standard" EnumName="HS_LIMB_LEFT_UPPER_ARM" Offset="0x617C" />
<Limb Name="gHsLeftForarmLimb" Type="Standard" EnumName="HS_LIMB_LEFT_FORARM" Offset="0x6188" />
<Limb Name="gHsLeftForearmLimb" Type="Standard" EnumName="HS_LIMB_LEFT_FOREARM" Offset="0x6188" />
<Limb Name="gHsLeftHandLimb" Type="Standard" EnumName="HS_LIMB_LEFT_HAND" Offset="0x6194" />
<Limb Name="gHsRightUpperArmLimb" Type="Standard" EnumName="HS_LIMB_RIGHT_UPPER_ARM" Offset="0x61A0" />
<Limb Name="gHsRightForarmLimb" Type="Standard" EnumName="HS_LIMB_RIGHT_FORARM" Offset="0x61AC" />
<Limb Name="gHsRightForearmLimb" Type="Standard" EnumName="HS_LIMB_RIGHT_FOREARM" Offset="0x61AC" />
<Limb Name="gHsRightHandLimb" Type="Standard" EnumName="HS_LIMB_RIGHT_HAND" Offset="0x61B8" />
<Limb Name="gHsHeadRoot" Type="Standard" EnumName="HS_LIMB_HEAD_ROOT" Offset="0x61C4" />
<Limb Name="gHsHeadRootLimb" Type="Standard" EnumName="HS_LIMB_HEAD_ROOT" Offset="0x61C4" />
<Limb Name="gHsHeadLimb" Type="Standard" EnumName="HS_LIMB_HEAD" Offset="0x61D0" />
<Limb Name="gHsHairSpikesLimb" Type="Standard" EnumName="HS_LIMB_HAIR_SPIKES" Offset="0x61DC" />
<!-- this limb is nulled in the override limb function -->
+10 -15
View File
@@ -15,14 +15,12 @@
<DList Name="gPoeSistersMegFaceDL" Offset="0x1CB0" />
<DList Name="gPoeSistersMegBodyDL" Offset="0x1DE0" />
<DList Name="gPoeSistersLowerBodyDL" Offset="0x24A8" />
<!--- unknown? wont draw, DL contents doesn't give enough hints -->
<DList Name="gPoeSisters_DL_002570" Offset="0x2570" />
<DList Name="gPoeSistersDrawArmShortDL" Offset="0x25E8" />
<DList Name="gPoeSistersDrawArmMedDL" Offset="0x2680" />
<DList Name="gPoeSistersDrawArmLongDL" Offset="0x2718" />
<DList Name="gPoeSistersDrawTorchDL" Offset="0x27B0" />
<!--- unknown? wont draw, DL contents doesn't give enough hints -->
<DList Name="gPoeSisters_DL_002870" Offset="0x2870" />
<DList Name="gPoeSistersRightHandDL" Offset="0x2570" />
<DList Name="gPoeSistersArmShortDL" Offset="0x25E8" />
<DList Name="gPoeSistersArmMedDL" Offset="0x2680" />
<DList Name="gPoeSistersArmLongDL" Offset="0x2718" />
<DList Name="gPoeSistersTorchDL" Offset="0x27B0" />
<DList Name="gPoeSistersLeftHandDL" Offset="0x2870" />
<DList Name="gPoeSistersJoelleFaceDL" Offset="0x2EB8" />
<DList Name="gPoeSistersJoelleBodyDL" Offset="0x2F88" />
<DList Name="gPoeSistersBethBodyDL" Offset="0x3628" />
@@ -51,14 +49,11 @@
<!-- PoSister Limbs -->
<Limb Name="gPoeSistersMainRootLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_ROOT" Offset="0x6518" />
<Limb Name="gPoeSistersLeftArmLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_LEFT_ARM" Offset="0x6524" />
<!--- won't draw, uses gPoeSisters_DL_002870 -->
<Limb Name="gPoeSisters_limb_006530" Type="Standard" EnumName="POE_SISTERS_LIMB_UNK3" Offset="0x6530" />
<Limb Name="gPoeSistersLeftHandLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_LEFT_HAND" Offset="0x6530" />
<Limb Name="gPoeSistersRightUpperArmLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_RIGHT_UPPER_ARM" Offset="0x653C" />
<Limb Name="gPoeSistersRightForArmLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_RIGHT_FORARM" Offset="0x6548" />
<!--- no DL -->
<Limb Name="gPoeSisters_limb_006554" Type="Standard" EnumName="POE_SISTERS_LIMB_UNK6" Offset="0x6554" />
<!--- won't draw, uses gPoeSisters_DL_002570 -->
<Limb Name="gPoeSisters_limb_006560" Type="Standard" EnumName="POE_SISTERS_LIMB_UNK7" Offset="0x6560" />
<Limb Name="gPoeSistersRightForearmLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_RIGHT_FOREARM" Offset="0x6548" />
<Limb Name="gPoeSistersTorchRootLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_TORCH_ROOT" Offset="0x6554" />
<Limb Name="gPoeSistersRightHandLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_RIGHT_HAND" Offset="0x6560" />
<Limb Name="gPoeSistersTorchLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_TORCH" Offset="0x656C" />
<Limb Name="gPoeSistersMainBodyLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_MAIN_BODY" Offset="0x6578" />
<Limb Name="gPoeSistersFaceLimb" Type="Standard" EnumName="POE_SISTERS_LIMB_FACE" Offset="0x6584" />
+2 -2
View File
@@ -74,12 +74,12 @@
<Limb Name="gAdultRutoLeftUpperArmLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_UPPER_ARM" Offset="0xC618"/>
<Limb Name="gAdultRutoLeftUpperWingLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_UPPER_WING" Offset="0xC624"/>
<Limb Name="gAdultRutoLeftLowerWingLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_LOWER_WING" Offset="0xC630"/>
<Limb Name="gAdultRutoLeftForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_FORARM" Offset="0xC63C"/>
<Limb Name="gAdultRutoLeftForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_FOREARM" Offset="0xC63C"/>
<Limb Name="gAdultRutoLeftHandLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_HAND" Offset="0xC648"/>
<Limb Name="gAdultRutoRightUpperArmLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_UPPER_ARM" Offset="0xC654"/>
<Limb Name="gAdultRutoRightUpperWingLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_UPPER_WING" Offset="0xC660"/>
<Limb Name="gAdultRutoRightLowerWingLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_LOWER_WING" Offset="0xC66C"/>
<Limb Name="gAdultRutoRightForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_FORARM" Offset="0xC678"/>
<Limb Name="gAdultRutoRightForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_FOREARM" Offset="0xC678"/>
<Limb Name="gAdultRutoRightHandLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_HAND" Offset="0xC684"/>
<Limb Name="gAdultRutoHeadLimb" LimbType="Standard" EnumName="RU2_LIMB_HEAD" Offset="0xC690"/>
<Limb Name="gAdultRutoWaistLimb" LimbType="Standard" EnumName="RU2_LIMB_WAIST" Offset="0xC69C"/>
+5 -4
View File
@@ -19,10 +19,10 @@
<DList Name="gYbPonyTailDL" Offset="0x47F8" />
<DList Name="gYbEndDisplayList4970DL" Offset="0x4970" />
<DList Name="gYbRightUpperArmDL" Offset="0x4978" />
<DList Name="gYbRightForArmDL" Offset="0x4AA0" />
<DList Name="gYbRightForearmDL" Offset="0x4AA0" />
<DList Name="gYbRightHandDL" Offset="0x4BC0" />
<DList Name="gYbLeftUpperArmDL" Offset="0x4D98" />
<DList Name="gYbLeftForArmDL" Offset="0x4EC0" />
<DList Name="gYbLeftForearmDL" Offset="0x4EC0" />
<DList Name="gYbLeftHandDL" Offset="0x4FE0" />
<Texture Name="gYbTLUT" OutName="yb_tlut" Format="rgba16" Width="16" Height="16" Offset="0x51B8" />
<Texture Name="gYbForeheadBlotchTex" OutName="yb_forhead_blotch" Format="ci8" Width="8" Height="8" Offset="0x53B8" />
@@ -47,12 +47,13 @@
<Limb Name="gYbChestRootLimb" Type="Standard" EnumName="YB_LIMB_CHEST_ROOT" Offset="0x5E64" />
<Limb Name="gYbHeadLimb" Type="Standard" EnumName="YB_LIMB_HEAD" Offset="0x5E70" />
<Limb Name="gYbPonyTailLimb" Type="Standard" EnumName="YB_LIMB_PONYTAIL" Offset="0x5E7C" />
<!-- TODO: Name empty limb based on Player's Skeleton -->
<Limb Name="gYbEmpty5E88Limb" Type="Standard" EnumName="YB_LIMB_EMPTY_5E88" Offset="0x5E88" />
<Limb Name="gYbLeftUpperArmLimb" Type="Standard" EnumName="YB_LIMB_LEFT_UPPER_ARM" Offset="0x5E94" />
<Limb Name="gYbLeftForArmLimb" Type="Standard" EnumName="YB_LIMB_LEFT_FORARM" Offset="0x5EA0" />
<Limb Name="gYbLeftForearmLimb" Type="Standard" EnumName="YB_LIMB_LEFT_FOREARM" Offset="0x5EA0" />
<Limb Name="gYbLeftHandLimb" Type="Standard" EnumName="YB_LIMB_LEFT_HAND" Offset="0x5EAC" />
<Limb Name="gYbRightUpperArmLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_UPPER_ARM" Offset="0x5EB8" />
<Limb Name="gYbRightForArmLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_FORARM" Offset="0x5EC4" />
<Limb Name="gYbRightForearmLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_FOREARM" Offset="0x5EC4" />
<Limb Name="gYbRightHandLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_HAND" Offset="0x5ED0" />
<Limb Name="gYbEmpty5EDCLimb" Type="Standard" EnumName="YB_LIMB_EMPTY_5EDC" Offset="0x5EDC" />
<Limb Name="gYbUpperTorsoLimb" Type="Standard" EnumName="YB_LIMB_TORSO" Offset="0x5EE8" />
+42 -30
View File
@@ -35,15 +35,6 @@ void EnBaba_DoNothing(EnBaba* this, PlayState* play);
void EnBaba_Walk(EnBaba* this, PlayState* play);
void EnBaba_FaceForward(EnBaba* this, PlayState* play);
typedef enum {
/* 0 */ BOMB_SHOP_LADY_ANIM_IDLE_HOLDING_BAG,
/* 1 */ BOMB_SHOP_LADY_ANIM_IDLE,
/* 2 */ BOMB_SHOP_LADY_ANIM_WALKING_HOLDING_BAG,
/* 3 */ BOMB_SHOP_LADY_ANIM_KNOCKED_OVER,
/* 4 */ BOMB_SHOP_LADY_ANIM_LYING_DOWN,
/* 5 */ BOMB_SHOP_LADY_ANIM_SWAY
} BombShopLadyAnimation;
typedef enum {
/* 0 */ BOMB_SHOP_LADY_SCH_NONE,
/* 1 */ BOMB_SHOP_LADY_SCH_KNOCKED_OVER,
@@ -62,13 +53,23 @@ ActorInit En_Baba_InitVars = {
(ActorFunc)EnBaba_Draw,
};
static AnimationInfo sAnimationInfo[] = {
{ &gBbaIdleHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
{ &gBbaIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
{ &gBbaWalkingHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
{ &gBbaKnockedOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
{ &gBbaLyingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
{ &gBbaSwayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
typedef enum {
/* 0 */ BOMB_SHOP_LADY_ANIM_IDLE_HOLDING_BAG,
/* 1 */ BOMB_SHOP_LADY_ANIM_IDLE,
/* 2 */ BOMB_SHOP_LADY_ANIM_WALKING_HOLDING_BAG,
/* 3 */ BOMB_SHOP_LADY_ANIM_KNOCKED_OVER,
/* 4 */ BOMB_SHOP_LADY_ANIM_LYING_DOWN,
/* 5 */ BOMB_SHOP_LADY_ANIM_SWAY,
/* 6 */ BOMB_SHOP_LADY_ANIM_MAX
} BombShopLadyAnimation;
static AnimationInfo sAnimationInfo[BOMB_SHOP_LADY_ANIM_MAX] = {
{ &gBbaIdleHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // BOMB_SHOP_LADY_ANIM_IDLE_HOLDING_BAG
{ &gBbaIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // BOMB_SHOP_LADY_ANIM_IDLE
{ &gBbaWalkingHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // BOMB_SHOP_LADY_ANIM_WALKING_HOLDING_BAG
{ &gBbaKnockedOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // BOMB_SHOP_LADY_ANIM_KNOCKED_OVER
{ &gBbaLyingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // BOMB_SHOP_LADY_ANIM_LYING_DOWN
{ &gBbaSwayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // BOMB_SHOP_LADY_ANIM_SWAY
};
static ColliderCylinderInit sCylinderInit = {
@@ -184,7 +185,9 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) {
// Can't stock Bomb Bags tomorrow
this->textId = 0x2A32;
break;
} else if (player->transformation == PLAYER_FORM_DEKU) {
}
if (player->transformation == PLAYER_FORM_DEKU) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_79_20)) {
SET_WEEKEVENTREG(WEEKEVENTREG_79_20);
this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION;
@@ -197,7 +200,9 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) {
this->textId = 0x2A38;
}
break;
} else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) {
}
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_33_08)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_01)) {
// Thought could sell Big Bomb Bags
this->textId = 0x660;
@@ -206,16 +211,16 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) {
// Can't judge people
this->textId = 0x662;
break;
} else {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_02)) {
// Someone helped me out
this->textId = 0x65A;
break;
}
// Buy Big Bomb Bag
this->textId = 0x65E;
}
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_73_02)) {
// Someone helped me out
this->textId = 0x65A;
break;
}
// Buy Big Bomb Bag
this->textId = 0x65E;
break;
case 0x660:
@@ -287,6 +292,9 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) {
case 0x2A31:
this->stateFlags |= BOMB_SHOP_LADY_STATE_END_CONVERSATION;
break;
default:
break;
}
Message_StartTextbox(play, this->textId, &this->actor);
@@ -404,10 +412,6 @@ s32 EnBaba_ProcessScheduleOutput(EnBaba* this, PlayState* play, ScheduleOutput*
s32 success;
switch (scheduleOutput->result) {
default:
success = false;
break;
case BOMB_SHOP_LADY_SCH_FOLLOW_TIME_PATH:
success = EnBaba_InitTimePath(this, play, scheduleOutput);
break;
@@ -415,7 +419,12 @@ s32 EnBaba_ProcessScheduleOutput(EnBaba* this, PlayState* play, ScheduleOutput*
case BOMB_SHOP_LADY_SCH_KNOCKED_OVER:
success = true;
break;
default:
success = false;
break;
}
return success;
}
@@ -491,6 +500,9 @@ void EnBaba_HandleSchedule(EnBaba* this, PlayState* play) {
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, this->animIndex);
this->actionFunc = EnBaba_KnockedOver;
break;
default:
break;
}
Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 4, 0x1554);
}
+15 -15
View File
@@ -159,7 +159,7 @@ void EnBaguo_Destroy(Actor* thisx, PlayState* play) {
void EnBaguo_UndergroundIdle(EnBaguo* this, PlayState* play) {
this->action = NEJIRON_ACTION_INACTIVE;
if (this->actor.xzDistToPlayer < 200.0f && Player_GetMask(play) != PLAYER_MASK_STONE) {
if ((this->actor.xzDistToPlayer < 200.0f) && (Player_GetMask(play) != PLAYER_MASK_STONE)) {
this->actor.draw = EnBaguo_DrawBody;
Actor_PlaySfx(&this->actor, NA_SE_EN_BAKUO_APPEAR);
this->actor.world.rot.z = 0;
@@ -247,7 +247,7 @@ void EnBaguo_Roll(EnBaguo* this, PlayState* play) {
this->actionFunc = EnBaguo_Idle;
this->actor.speed = 0.0f;
} else {
if (!this->bouncedFlag && this->collider.base.atFlags & AT_BOUNCED) {
if (!this->bouncedFlag && (this->collider.base.atFlags & AT_BOUNCED)) {
this->zRollDirection ^= 1;
this->bouncedFlag = 1;
this->actor.speed = -7.0f;
@@ -318,7 +318,7 @@ void EnBaguo_CheckForDetonation(EnBaguo* this, PlayState* play) {
i = false;
if (this->action != NEJIRON_ACTION_EXPLODING && this->action != NEJIRON_ACTION_RETREATING) {
if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) &&
this->actor.world.pos.y < (this->actor.home.pos.y - 100.0f)) {
(this->actor.world.pos.y < (this->actor.home.pos.y - 100.0f))) {
// Force a detonation if we're off the ground and have fallen
// below our home position (e.g., we rolled off a ledge).
i = true;
@@ -328,9 +328,9 @@ void EnBaguo_CheckForDetonation(EnBaguo* this, PlayState* play) {
// Force a detonation if we're too far below the water's surface.
i = true;
}
if ((this->collider.base.acFlags & AC_HIT || i)) {
if ((this->collider.base.acFlags & AC_HIT) || i) {
this->collider.base.acFlags &= ~AC_HIT;
if (i || this->actor.colChkInfo.damageEffect == NEJIRON_DMGEFF_KILL) {
if (i || (this->actor.colChkInfo.damageEffect == NEJIRON_DMGEFF_KILL)) {
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 8);
this->action = NEJIRON_ACTION_EXPLODING;
this->actor.speed = 0.0f;
@@ -376,7 +376,7 @@ void EnBaguo_Update(Actor* thisx, PlayState* play) {
DECR(this->blinkTimer);
DECR(this->timer);
if (this->action != NEJIRON_ACTION_EXPLODING && this->action != NEJIRON_ACTION_INACTIVE) {
if ((this->action != NEJIRON_ACTION_EXPLODING) && (this->action != NEJIRON_ACTION_INACTIVE)) {
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base);
}
@@ -450,9 +450,9 @@ void EnBaguo_InitializeEffect(EnBaguo* this, Vec3f* pos, Vec3f* velocity, Vec3f*
effect->accel = *accel;
effect->scale = scale;
effect->timer = timer;
effect->rotation.x = (s16)(s32)Rand_CenteredFloat(0x7530);
effect->rotation.y = (s16)(s32)Rand_CenteredFloat(0x7530);
effect->rotation.z = (s16)(s32)Rand_CenteredFloat(0x7530);
effect->rot.x = (s16)(s32)Rand_CenteredFloat(0x7530);
effect->rot.y = (s16)(s32)Rand_CenteredFloat(0x7530);
effect->rot.z = (s16)(s32)Rand_CenteredFloat(0x7530);
return;
}
}
@@ -467,9 +467,9 @@ void EnBaguo_UpdateEffects(EnBaguo* this, PlayState* play) {
effect->pos.x += effect->velocity.x;
effect->pos.y += effect->velocity.y;
effect->pos.z += effect->velocity.z;
effect->rotation.x += 0xBB8;
effect->rotation.y += 0xBB8;
effect->rotation.z += 0xBB8;
effect->rot.x += 0xBB8;
effect->rot.y += 0xBB8;
effect->rot.z += 0xBB8;
effect->velocity.x += effect->accel.x;
effect->velocity.y += effect->accel.y;
effect->velocity.z += effect->accel.z;
@@ -501,9 +501,9 @@ void EnBaguo_DrawEffects(EnBaguo* this, PlayState* play) {
for (i = 0; i < ARRAY_COUNT(this->effects); i++, effect++) {
if (effect->isEnabled) {
Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW);
Matrix_RotateXS(effect->rotation.x, MTXMODE_APPLY);
Matrix_RotateYS(effect->rotation.y, MTXMODE_APPLY);
Matrix_RotateZS(effect->rotation.z, MTXMODE_APPLY);
Matrix_RotateXS(effect->rot.x, MTXMODE_APPLY);
Matrix_RotateYS(effect->rot.y, MTXMODE_APPLY);
Matrix_RotateZS(effect->rot.z, MTXMODE_APPLY);
Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@@ -17,7 +17,7 @@ typedef struct NejironEffect {
/* 0x04 */ Vec3f pos;
/* 0x10 */ Vec3f velocity;
/* 0x1C */ Vec3f accel;
/* 0x28 */ Vec3s rotation;
/* 0x28 */ Vec3s rot;
/* 0x30 */ f32 scale;
/* 0x34 */ s16 timer;
} NejironEffect; // size = 0x38
+31 -16
View File
@@ -57,16 +57,31 @@ static ColliderCylinderInit sCylinderInit = {
static u16 sTextIds[] = { 0x2ABD, 0x2ABB, 0x2AD5, 0x2AD6, 0x2AD7, 0x2AD8, 0x2AC6 };
static AnimationHeader* sAnimations[] = { &object_bai_Anim_0011C0, &object_bai_Anim_0008B4, &object_bai_Anim_008198 };
typedef enum {
/* 0 */ ENBAISEN_ANIM_0,
/* 1 */ ENBAISEN_ANIM_1,
/* 2 */ ENBAISEN_ANIM_2,
/* 3 */ ENBAISEN_ANIM_MAX
} EnBaisenAnimation;
static u8 sAnimationModes[] = { ANIMMODE_LOOP, ANIMMODE_LOOP };
static AnimationHeader* sAnimations[ENBAISEN_ANIM_MAX] = {
&object_bai_Anim_0011C0, // ENBAISEN_ANIM_0
&object_bai_Anim_0008B4, // ENBAISEN_ANIM_1
&object_bai_Anim_008198, // ENBAISEN_ANIM_2
};
static u8 sAnimationModes[ENBAISEN_ANIM_MAX] = {
ANIMMODE_LOOP, // ENBAISEN_ANIM_0
ANIMMODE_LOOP, // ENBAISEN_ANIM_1
ANIMMODE_LOOP, // ENBAISEN_ANIM_2
};
void EnBaisen_Init(Actor* thisx, PlayState* play) {
EnBaisen* this = THIS;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 25.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &object_bai_Skel_007908, &object_bai_Anim_0011C0, this->jointTable,
this->morphTable, 20);
this->morphTable, OBJECT_BAI_LIMB_MAX);
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
this->paramCopy = this->actor.params;
if (this->actor.params == 0) {
@@ -100,8 +115,8 @@ void EnBaisen_Destroy(Actor* thisx, PlayState* play) {
void EnBaisen_ChangeAnim(EnBaisen* this, s32 animIndex) {
this->animIndex = animIndex;
this->frameCount = Animation_GetLastFrame(sAnimations[animIndex]);
Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.0f, this->frameCount,
this->animEndFrame = Animation_GetLastFrame(sAnimations[animIndex]);
Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.0f, this->animEndFrame,
sAnimationModes[this->animIndex], -10.0f);
}
@@ -136,10 +151,10 @@ void func_80BE87B0(EnBaisen* this, PlayState* play) {
void func_80BE87FC(EnBaisen* this) {
if (this->paramCopy == 0) {
this->textIdIndex = 2;
EnBaisen_ChangeAnim(this, 2);
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_2);
this->unk29E = this->actor.world.rot.y;
} else {
EnBaisen_ChangeAnim(this, 0);
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_0);
}
this->actor.textId = sTextIds[this->textIdIndex];
@@ -187,13 +202,13 @@ void func_80BE895C(EnBaisen* this, PlayState* play) {
void func_80BE89D8(EnBaisen* this, PlayState* play) {
if (&this->actor == this->unk2A4) {
this->unk29E = this->actor.world.rot.y;
if (this->animIndex == 0) {
EnBaisen_ChangeAnim(this, 1);
if (this->animIndex == ENBAISEN_ANIM_0) {
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_1);
}
} else {
this->unk29E = Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk2A4->world.pos);
if (this->animIndex != 0) {
EnBaisen_ChangeAnim(this, 0);
if (this->animIndex != ENBAISEN_ANIM_0) {
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_0);
}
}
if ((play->msgCtx.currentTextId == 0x2AC6) || (play->msgCtx.currentTextId == 0x2AC7) ||
@@ -209,15 +224,15 @@ void func_80BE89D8(EnBaisen* this, PlayState* play) {
void func_80BE8AAC(EnBaisen* this, PlayState* play) {
if ((this->textIdIndex % 2) != 0) {
this->unk29E = this->actor.world.rot.y;
if (this->animIndex == 0) {
EnBaisen_ChangeAnim(this, 1);
if (this->animIndex == ENBAISEN_ANIM_0) {
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_1);
}
} else {
if (this->unk2A4 != NULL) {
this->unk29E = Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk2A4->world.pos);
}
if (this->animIndex != 0) {
EnBaisen_ChangeAnim(this, 0);
if (this->animIndex != ENBAISEN_ANIM_0) {
EnBaisen_ChangeAnim(this, ENBAISEN_ANIM_0);
}
}
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
@@ -269,7 +284,7 @@ void EnBaisen_Update(Actor* thisx, PlayState* play) {
s32 EnBaisen_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
EnBaisen* this = THIS;
if (limbIndex == 9) {
if (limbIndex == OBJECT_BAI_LIMB_09) {
rot->x += this->headRotX;
rot->y += this->headRotY;
rot->z += this->headRotZ;
@@ -2,6 +2,7 @@
#define Z_EN_BAISEN_H
#include "global.h"
#include "objects/object_bai/object_bai.h"
struct EnBaisen;
@@ -10,8 +11,8 @@ typedef void (*EnBaisenActionFunc)(struct EnBaisen*, PlayState*);
typedef struct EnBaisen {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s jointTable[20];
/* 0x200 */ Vec3s morphTable[20];
/* 0x188 */ Vec3s jointTable[OBJECT_BAI_LIMB_MAX];
/* 0x200 */ Vec3s morphTable[OBJECT_BAI_LIMB_MAX];
/* 0x278 */ EnBaisenActionFunc actionFunc;
/* 0x27C */ s16 headRotY;
/* 0x27E */ s16 headRotX;
@@ -22,7 +23,7 @@ typedef struct EnBaisen {
/* 0x28C */ s32 paramCopy;
/* 0x290 */ s32 unk290;
/* 0x294 */ s16 unusedCounter;
/* 0x298 */ f32 frameCount;
/* 0x298 */ f32 animEndFrame;
/* 0x29C */ s16 unk29C;
/* 0x29E */ s16 unk29E;
/* 0x2A0 */ s16 textIdIndex;
+16 -18
View File
@@ -124,7 +124,7 @@ static InitChainEntry sInitChain[] = {
* in the bodyPartsPos/Velocity arrays. An index of -1 indicates that the
* limb is not part of the bodyParts arrays.
*/
static s8 sLimbIndexToBodyPartsIndex[] = {
static s8 sLimbIndexToBodyPartsIndex[BUBBLE_LIMB_MAX] = {
-1, -1, -1, -1, 0, -1, -1, -1, 1, -1, -1, -1, -1, 2, -1, 3,
};
@@ -554,27 +554,25 @@ void EnBb_UpdateDamage(EnBb* this, PlayState* play) {
CLEAR_TAG_PARAMS(CLEAR_TAG_SMALL_LIGHT_RAYS));
}
}
} else {
if (this->collider.base.atFlags & AT_BOUNCED) {
this->collider.base.atFlags &= ~(AT_HIT | AT_BOUNCED);
if (this->actionFunc != EnBb_Down) {
this->actor.world.rot.y = this->actor.yawTowardsPlayer + 0x8000;
this->actor.shape.rot.y = this->actor.world.rot.y;
EnBb_SetupDown(this);
}
} else if (this->collider.base.atFlags & AT_HIT) {
this->collider.base.atFlags &= ~AT_HIT;
} else if (this->collider.base.atFlags & AT_BOUNCED) {
this->collider.base.atFlags &= ~(AT_HIT | AT_BOUNCED);
if (this->actionFunc != EnBb_Down) {
this->actor.world.rot.y = this->actor.yawTowardsPlayer + 0x8000;
this->actor.shape.rot.y = this->actor.world.rot.y;
Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_BITE);
EnBb_SetupDown(this);
}
} else if (this->collider.base.atFlags & AT_HIT) {
this->collider.base.atFlags &= ~AT_HIT;
this->actor.world.rot.y = this->actor.yawTowardsPlayer + 0x8000;
this->actor.shape.rot.y = this->actor.world.rot.y;
Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_BITE);
if (this->flameScaleX > 0.0f) {
gSaveContext.jinxTimer = 1200;
}
if (this->flameScaleX > 0.0f) {
gSaveContext.jinxTimer = 1200;
}
if (this->actionFunc == EnBb_Attack) {
EnBb_SetupFlyIdle(this);
}
if (this->actionFunc == EnBb_Attack) {
EnBb_SetupFlyIdle(this);
}
}
}
@@ -205,6 +205,9 @@ void EnBba01_Talk(EnHy* this, PlayState* play) {
this->actionFunc = this->prevActionFunc;
this->prevActionFunc = NULL;
break;
default:
break;
}
}
@@ -153,7 +153,7 @@ static InitChainEntry sInitChain[] = {
* in the bodyPartsPos/Velocity arrays. An index of -1 indicates that the
* limb is not part of the bodyParts arrays.
*/
static s8 sLimbIndexToBodyPartsIndex[] = {
static s8 sLimbIndexToBodyPartsIndex[BUBBLE_LIMB_MAX] = {
-1, -1, -1, -1, 0, -1, -1, -1, 1, -1, -1, -1, -1, 2, -1, 3,
};
+5 -3
View File
@@ -94,7 +94,7 @@ void EnBee_Init(Actor* thisx, PlayState* play) {
this->actor.colChkInfo.mass = 10;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 19.0f);
SkelAnime_Init(play, &this->skelAnime, &gBeeSkel, &gBeeFlyingAnim, this->morphTable, this->jointTable,
SkelAnime_Init(play, &this->skelAnime, &gBeeSkel, &gBeeFlyingAnim, this->jointTable, this->morphTable,
OBJECT_BEE_LIMB_MAX);
this->actor.colChkInfo.health = 1;
this->actor.colChkInfo.damageTable = &sDamageTable;
@@ -123,7 +123,8 @@ void EnBee_SetupFlyIdle(EnBee* this) {
Vec3f tempPos;
s16 yawOffset;
Animation_Change(&this->skelAnime, &gBeeFlyingAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gBeeFlyingAnim), 0, -10.0f);
Animation_Change(&this->skelAnime, &gBeeFlyingAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gBeeFlyingAnim),
ANIMMODE_LOOP, -10.0f);
Math_Vec3f_Copy(&tempPos, &this->actor.home.pos);
yawOffset = (this->instanceId * 0x700) + 0x2000;
@@ -181,7 +182,8 @@ void EnBee_FlyIdle(EnBee* this, PlayState* play) {
}
void EnBee_SetupAttack(EnBee* this) {
Animation_Change(&this->skelAnime, &gBeeFlyingAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gBeeFlyingAnim), 0, -10.0f);
Animation_Change(&this->skelAnime, &gBeeFlyingAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gBeeFlyingAnim),
ANIMMODE_LOOP, -10.0f);
this->isHostile = true;
this->actionFunc = EnBee_Attack;
}
+2 -2
View File
@@ -16,8 +16,8 @@ typedef enum {
typedef struct EnBee {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s morphTable[OBJECT_BEE_LIMB_MAX];
/* 0x1C4 */ Vec3s jointTable[OBJECT_BEE_LIMB_MAX];
/* 0x188 */ Vec3s jointTable[OBJECT_BEE_LIMB_MAX];
/* 0x1C4 */ Vec3s morphTable[OBJECT_BEE_LIMB_MAX];
/* 0x200 */ EnBeeActionFunc actionFunc;
/* 0x204 */ s16 attackDelayTimer;
/* 0x206 */ s16 sfxHitTimer;
+8 -8
View File
@@ -34,9 +34,9 @@ void EnBh_Init(Actor* thisx, PlayState* play) {
this->actor.flags &= ~ACTOR_FLAG_1;
Actor_SetScale(&this->actor, 0.01f);
SkelAnime_InitFlex(play, &this->skelanime, &gBhSkel, &gBhFlyingAnim, this->jointTable, this->morphTable,
SkelAnime_InitFlex(play, &this->skelAnime, &gBhSkel, &gBhFlyingAnim, this->jointTable, this->morphTable,
OBJECT_BH_LIMB_MAX);
Animation_PlayLoop(&this->skelanime, &gBhFlyingAnim);
Animation_PlayLoop(&this->skelAnime, &gBhFlyingAnim);
this->actionFunc = func_80C22DEC;
}
@@ -80,17 +80,17 @@ void func_80C22DEC(EnBh* this, PlayState* play) {
Math_ApproachS(&this->actor.world.rot.z, -zRot, 0xA, this->step);
Math_ApproachS(&this->step, 0x200, 1, 0x10);
if ((s32)this->skelanime.playSpeed == 0) {
if ((s32)this->skelAnime.playSpeed == 0) {
if (this->timer == 0) {
this->skelanime.playSpeed = 1.0f;
this->skelAnime.playSpeed = 1.0f;
this->timer = Rand_ZeroFloat(70.0f) + 50.0f;
} else if (((this->timer & 7) == 7) && (Rand_ZeroOne() < 0.5f)) {
this->unk1E4 = Rand_CenteredFloat(3000.0f);
}
} else {
SkelAnime_Update(&this->skelanime);
if ((this->timer == 0) && Animation_OnFrame(&this->skelanime, 6.0f)) {
this->skelanime.playSpeed = 0.0f;
SkelAnime_Update(&this->skelAnime);
if ((this->timer == 0) && Animation_OnFrame(&this->skelAnime, 6.0f)) {
this->skelAnime.playSpeed = 0.0f;
this->timer = Rand_ZeroFloat(50.0f) + 50.0f;
}
}
@@ -116,6 +116,6 @@ void EnBh_Draw(Actor* thisx, PlayState* play) {
Gfx_SetupDL25_Opa(play->state.gfxCtx);
Matrix_RotateZS(this->unk1E2, MTXMODE_APPLY);
SkelAnime_DrawFlexOpa(play, this->skelanime.skeleton, this->skelanime.jointTable, this->skelanime.dListCount, NULL,
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL,
NULL, &this->actor);
}
+1 -1
View File
@@ -10,7 +10,7 @@ typedef void (*EnBhActionFunc)(struct EnBh*, PlayState*);
typedef struct EnBh {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelanime;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s jointTable[OBJECT_BH_LIMB_MAX];
/* 0x1AC */ Vec3s morphTable[OBJECT_BH_LIMB_MAX];
/* 0x1D0 */ Vec3f pos;
@@ -564,11 +564,11 @@ s32 EnBigokuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
EnBigokuta* this = THIS;
s32 envColor;
s16 rotX;
f32 lastFrame;
f32 endFrame;
if (this->actionFunc == EnBigokuta_PlayDeathEffects) {
lastFrame = Animation_GetLastFrame(&gBigOctoDeathAnim);
envColor = ((255.0f / lastFrame) * (lastFrame - this->skelAnime.curFrame));
endFrame = Animation_GetLastFrame(&gBigOctoDeathAnim);
envColor = ((255.0f / endFrame) * (endFrame - this->skelAnime.curFrame));
} else {
envColor = 255;
}
@@ -628,7 +628,7 @@ s32 EnBigokuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
}
void EnBigokuta_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
static s8 D_80AC45BC[] = {
static s8 D_80AC45BC[BIGOKUTA_LIMB_MAX] = {
-1, -1, -1, 0, -1, 1, -1, 2, -1, 3, 8, 4, -1, 5, -1, -1, -1, -1, 6, 7,
};
static Vec3f D_80AC45D0[] = {

Some files were not shown because too many files have changed in this diff Show More