mirror of https://github.com/zeldaret/mm.git
Object Tru Docs (Koume) (#1098)
* Name everything in xml * Actor docs regarding assets * move header include * PR * Format * PR * MT animation enum * index ()
This commit is contained in:
parent
841da5f138
commit
aa3f1be55e
|
|
@ -51,10 +51,10 @@
|
|||
<Texture Name="gKotakeSkinTex" OutName="kotake_skin" Format="ci8" Width="16" Height="8" Offset="0xA678" />
|
||||
<Texture Name="gKotakeMouthTex" OutName="kotake_mouth" Format="ci8" Width="8" Height="8" Offset="0xA6F8" />
|
||||
<Texture Name="gKotakeHairTex" OutName="kotake_hair" Format="rgba16" Width="8" Height="32" Offset="0xA738" />
|
||||
<Texture Name="gKotakeBraidEndTex" OutName="kotake_BRAID_end" Format="rgba16" Width="8" Height="8" Offset="0xA938" />
|
||||
<Texture Name="gKotakeBraidEndTex" OutName="kotake_braid_end" Format="rgba16" Width="8" Height="8" Offset="0xA938" />
|
||||
<Texture Name="gKotakeEarTex" OutName="kotake_ear" Format="ci8" Width="8" Height="8" Offset="0xA9B8" />
|
||||
<Texture Name="gKotakeCollarNeckTex" OutName="kotake_collar_neck" Format="rgba16" Width="4" Height="8" Offset="0xA9F8" />
|
||||
<Texture Name="gKotakeFingersTex" OutName="kotake_finger" Format="ci8" Width="8" Height="16" Offset="0xAA38" />
|
||||
<Texture Name="gKotakeFingerTex" OutName="kotake_finger" Format="ci8" Width="8" Height="16" Offset="0xAA38" />
|
||||
<Texture Name="gKotakeBroomHandleTex" OutName="kotake_broom_handle" Format="rgba16" Width="8" Height="8" Offset="0xAAB8" />->
|
||||
<Texture Name="gKotakeBroomHeadTex" OutName="kotake_broom_head" Format="rgba16" Width="16" Height="32" Offset="0xAB38" />
|
||||
<Texture Name="gKotakeJewelHolderTex" OutName="kotake_jewel_holder" Format="rgba16" Width="16" Height="8" Offset="0xAF38" />
|
||||
|
|
|
|||
|
|
@ -1,108 +1,117 @@
|
|||
<Root>
|
||||
<!-- Assets for Koume -->
|
||||
<File Name="object_tru" Segment="6">
|
||||
<DList Name="object_tru_DL_000390" Offset="0x390" />
|
||||
<DList Name="object_tru_DL_0004C8" Offset="0x4C8" />
|
||||
<Texture Name="object_tru_Tex_000560" OutName="tex_000560" Format="rgba16" Width="16" Height="32" Offset="0x560" />
|
||||
<Texture Name="object_tru_Tex_000960" OutName="tex_000960" Format="rgba16" Width="32" Height="32" Offset="0x960" />
|
||||
<Texture Name="object_tru_Tex_001160" OutName="tex_001160" Format="rgba16" Width="32" Height="32" Offset="0x1160" />
|
||||
<DList Name="object_tru_DL_001F90" Offset="0x1F90" />
|
||||
<DList Name="object_tru_DL_0020C8" Offset="0x20C8" />
|
||||
<DList Name="object_tru_DL_002160" Offset="0x2160" />
|
||||
<Texture Name="object_tru_Tex_002168" OutName="tex_002168" Format="i4" Width="16" Height="16" Offset="0x2168" />
|
||||
<Animation Name="object_tru_Anim_002BD8" Offset="0x2BD8" />
|
||||
<Animation Name="object_tru_Anim_003698" Offset="0x3698" />
|
||||
<Animation Name="object_tru_Anim_00446C" Offset="0x446C" />
|
||||
<Animation Name="object_tru_Anim_007FA0" Offset="0x7FA0" />
|
||||
<Animation Name="object_tru_Anim_009348" Offset="0x9348" />
|
||||
<DList Name="object_tru_DL_00B730" Offset="0xB730" />
|
||||
<DList Name="object_tru_DL_00B940" Offset="0xB940" />
|
||||
<DList Name="object_tru_DL_00BA88" Offset="0xBA88" />
|
||||
<DList Name="object_tru_DL_00BBB8" Offset="0xBBB8" />
|
||||
<DList Name="object_tru_DL_00C630" Offset="0xC630" />
|
||||
<DList Name="object_tru_DL_00C730" Offset="0xC730" />
|
||||
<DList Name="object_tru_DL_00C810" Offset="0xC810" />
|
||||
<DList Name="object_tru_DL_00C860" Offset="0xC860" />
|
||||
<DList Name="object_tru_DL_00C960" Offset="0xC960" />
|
||||
<DList Name="object_tru_DL_00CA40" Offset="0xCA40" />
|
||||
<DList Name="object_tru_DL_00CB50" Offset="0xCB50" />
|
||||
<DList Name="object_tru_DL_00CCC0" Offset="0xCCC0" />
|
||||
<DList Name="object_tru_DL_00CFA8" Offset="0xCFA8" />
|
||||
<DList Name="object_tru_DL_00D0C0" Offset="0xD0C0" />
|
||||
<DList Name="object_tru_DL_00D1D0" Offset="0xD1D0" />
|
||||
<DList Name="object_tru_DL_00D2E0" Offset="0xD2E0" />
|
||||
<DList Name="object_tru_DL_00D450" Offset="0xD450" />
|
||||
<DList Name="object_tru_DL_00D738" Offset="0xD738" />
|
||||
<DList Name="object_tru_DL_00DA38" Offset="0xDA38" />
|
||||
<DList Name="object_tru_DL_00DB50" Offset="0xDB50" />
|
||||
<DList Name="object_tru_DL_00DC40" Offset="0xDC40" />
|
||||
<DList Name="object_tru_DL_00DC88" Offset="0xDC88" />
|
||||
<DList Name="object_tru_DL_00DD38" Offset="0xDD38" />
|
||||
<DList Name="object_tru_DL_00DDD0" Offset="0xDDD0" />
|
||||
<DList Name="object_tru_DL_00DE18" Offset="0xDE18" />
|
||||
<DList Name="object_tru_DL_00DEC8" Offset="0xDEC8" />
|
||||
<Animation Name="object_tru_Anim_00EEDC" Offset="0xEEDC" />
|
||||
<Animation Name="object_tru_Anim_00F9A0" Offset="0xF9A0" />
|
||||
<Animation Name="object_tru_Anim_0108AC" Offset="0x108AC" />
|
||||
<Animation Name="object_tru_Anim_011F88" Offset="0x11F88" />
|
||||
<Animation Name="object_tru_Anim_014728" Offset="0x14728" />
|
||||
<Animation Name="object_tru_Anim_015068" Offset="0x15068" />
|
||||
<Animation Name="object_tru_Anim_015CA0" Offset="0x15CA0" />
|
||||
<Animation Name="object_tru_Anim_016B4C" Offset="0x16B4C" />
|
||||
<Texture Name="object_tru_TLUT_016B60" OutName="tlut_016B60" Format="rgba16" Width="16" Height="16" Offset="0x16B60" />
|
||||
<Texture Name="object_tru_TLUT_016D60" OutName="tlut_016D60" Format="rgba16" Width="16" Height="16" Offset="0x16D60" />
|
||||
<Texture Name="object_tru_TLUT_016F60" OutName="tlut_016F60" Format="rgba16" Width="16" Height="16" Offset="0x16F60" />
|
||||
<Texture Name="object_tru_TLUT_017160" OutName="tlut_017160" Format="rgba16" Width="16" Height="16" Offset="0x17160" />
|
||||
<Texture Name="object_tru_TLUT_017360" OutName="tlut_017360" Format="rgba16" Width="16" Height="16" Offset="0x17360" />
|
||||
<Texture Name="object_tru_TLUT_017560" OutName="tlut_017560" Format="rgba16" Width="16" Height="16" Offset="0x17560" />
|
||||
<Texture Name="object_tru_Tex_017760" OutName="tex_017760" Format="rgba16" Width="32" Height="32" Offset="0x17760" />
|
||||
<Texture Name="object_tru_Tex_017F60" OutName="tex_017F60" Format="rgba16" Width="16" Height="16" Offset="0x17F60" />
|
||||
<Texture Name="object_tru_Tex_018160" OutName="tex_018160" Format="rgba16" Width="16" Height="16" Offset="0x18160" />
|
||||
<Texture Name="object_tru_Tex_018360" OutName="tex_018360" Format="rgba16" Width="16" Height="16" Offset="0x18360" />
|
||||
<Texture Name="object_tru_Tex_018560" OutName="tex_018560" Format="ci8" Width="16" Height="8" Offset="0x18560" />
|
||||
<Texture Name="object_tru_Tex_0185E0" OutName="tex_0185E0" Format="ci8" Width="8" Height="8" Offset="0x185E0" />
|
||||
<Texture Name="object_tru_Tex_018620" OutName="tex_018620" Format="rgba16" Width="8" Height="32" Offset="0x18620" />
|
||||
<Texture Name="object_tru_Tex_018820" OutName="tex_018820" Format="rgba16" Width="8" Height="8" Offset="0x18820" />
|
||||
<Texture Name="object_tru_Tex_0188A0" OutName="tex_0188A0" Format="ci8" Width="8" Height="8" Offset="0x188A0" />
|
||||
<Texture Name="object_tru_Tex_0188E0" OutName="tex_0188E0" Format="rgba16" Width="4" Height="8" Offset="0x188E0" />
|
||||
<Texture Name="object_tru_Tex_018920" OutName="tex_018920" Format="ci8" Width="8" Height="16" Offset="0x18920" />
|
||||
<Texture Name="object_tru_Tex_0189A0" OutName="tex_0189A0" Format="rgba16" Width="8" Height="8" Offset="0x189A0" />
|
||||
<Texture Name="object_tru_Tex_018A20" OutName="tex_018A20" Format="rgba16" Width="16" Height="32" Offset="0x18A20" />
|
||||
<Texture Name="object_tru_Tex_018E20" OutName="tex_018E20" Format="rgba16" Width="16" Height="8" Offset="0x18E20" />
|
||||
<Texture Name="object_tru_Tex_018F20" OutName="tex_018F20" Format="ci8" Width="8" Height="8" Offset="0x18F20" />
|
||||
<Texture Name="object_tru_Tex_018F60" OutName="tex_018F60" Format="ci8" Width="8" Height="8" Offset="0x18F60" />
|
||||
<Texture Name="object_tru_Tex_018FA0" OutName="tex_018FA0" Format="rgba16" Width="32" Height="32" Offset="0x18FA0" />
|
||||
<Texture Name="object_tru_Tex_0197A0" OutName="tex_0197A0" Format="rgba16" Width="32" Height="32" Offset="0x197A0" />
|
||||
<Texture Name="object_tru_Tex_019FA0" OutName="tex_019FA0" Format="rgba16" Width="32" Height="32" Offset="0x19FA0" />
|
||||
<Texture Name="object_tru_Tex_01A7A0" OutName="tex_01A7A0" Format="rgba16" Width="8" Height="8" Offset="0x1A7A0" />
|
||||
<DList Name="object_tru_DL_01A820" Offset="0x1A820" />
|
||||
<DList Name="object_tru_DL_01A830" Offset="0x1A830" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8C0" Type="Standard" EnumName="OBJECT_TRU_LIMB_01" Offset="0x1A8C0" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8CC" Type="Standard" EnumName="OBJECT_TRU_LIMB_02" Offset="0x1A8CC" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8D8" Type="Standard" EnumName="OBJECT_TRU_LIMB_03" Offset="0x1A8D8" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8E4" Type="Standard" EnumName="OBJECT_TRU_LIMB_04" Offset="0x1A8E4" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8F0" Type="Standard" EnumName="OBJECT_TRU_LIMB_05" Offset="0x1A8F0" />
|
||||
<Limb Name="object_tru_Standardlimb_01A8FC" Type="Standard" EnumName="OBJECT_TRU_LIMB_06" Offset="0x1A8FC" />
|
||||
<Limb Name="object_tru_Standardlimb_01A908" Type="Standard" EnumName="OBJECT_TRU_LIMB_07" Offset="0x1A908" />
|
||||
<Limb Name="object_tru_Standardlimb_01A914" Type="Standard" EnumName="OBJECT_TRU_LIMB_08" Offset="0x1A914" />
|
||||
<Limb Name="object_tru_Standardlimb_01A920" Type="Standard" EnumName="OBJECT_TRU_LIMB_09" Offset="0x1A920" />
|
||||
<Limb Name="object_tru_Standardlimb_01A92C" Type="Standard" EnumName="OBJECT_TRU_LIMB_0A" Offset="0x1A92C" />
|
||||
<Limb Name="object_tru_Standardlimb_01A938" Type="Standard" EnumName="OBJECT_TRU_LIMB_0B" Offset="0x1A938" />
|
||||
<Limb Name="object_tru_Standardlimb_01A944" Type="Standard" EnumName="OBJECT_TRU_LIMB_0C" Offset="0x1A944" />
|
||||
<Limb Name="object_tru_Standardlimb_01A950" Type="Standard" EnumName="OBJECT_TRU_LIMB_0D" Offset="0x1A950" />
|
||||
<Limb Name="object_tru_Standardlimb_01A95C" Type="Standard" EnumName="OBJECT_TRU_LIMB_0E" Offset="0x1A95C" />
|
||||
<Limb Name="object_tru_Standardlimb_01A968" Type="Standard" EnumName="OBJECT_TRU_LIMB_0F" Offset="0x1A968" />
|
||||
<Limb Name="object_tru_Standardlimb_01A974" Type="Standard" EnumName="OBJECT_TRU_LIMB_10" Offset="0x1A974" />
|
||||
<Limb Name="object_tru_Standardlimb_01A980" Type="Standard" EnumName="OBJECT_TRU_LIMB_11" Offset="0x1A980" />
|
||||
<Limb Name="object_tru_Standardlimb_01A98C" Type="Standard" EnumName="OBJECT_TRU_LIMB_12" Offset="0x1A98C" />
|
||||
<Limb Name="object_tru_Standardlimb_01A998" Type="Standard" EnumName="OBJECT_TRU_LIMB_13" Offset="0x1A998" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9A4" Type="Standard" EnumName="OBJECT_TRU_LIMB_14" Offset="0x1A9A4" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9B0" Type="Standard" EnumName="OBJECT_TRU_LIMB_15" Offset="0x1A9B0" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9BC" Type="Standard" EnumName="OBJECT_TRU_LIMB_16" Offset="0x1A9BC" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9C8" Type="Standard" EnumName="OBJECT_TRU_LIMB_17" Offset="0x1A9C8" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9D4" Type="Standard" EnumName="OBJECT_TRU_LIMB_18" Offset="0x1A9D4" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9E0" Type="Standard" EnumName="OBJECT_TRU_LIMB_19" Offset="0x1A9E0" />
|
||||
<Limb Name="object_tru_Standardlimb_01A9EC" Type="Standard" EnumName="OBJECT_TRU_LIMB_1A" Offset="0x1A9EC" />
|
||||
<Skeleton Name="object_tru_Skel_01AA60" Type="Flex" LimbType="Standard" LimbNone="OBJECT_TRU_LIMB_NONE" LimbMax="OBJECT_TRU_LIMB_MAX" EnumName="ObjectTruLimb" Offset="0x1AA60" />
|
||||
<Animation Name="object_tru_Anim_01B5C4" Offset="0x1B5C4" />
|
||||
<DList Name="gKoumeTargetDL" Offset="0x390" />
|
||||
<DList Name="gKoumeChainDL" Offset="0x4C8" />
|
||||
<Texture Name="gKoumeChainTex" OutName="koume_chain" Format="rgba16" Width="16" Height="32" Offset="0x560" />
|
||||
<Texture Name="gKoumeTargetSideTex" OutName="koume_target_side" Format="rgba16" Width="32" Height="32" Offset="0x960" />
|
||||
<Texture Name="gKoumeTargetFaceTex" OutName="koume_target_face" Format="rgba16" Width="32" Height="32" Offset="0x1160" />
|
||||
|
||||
<DList Name="gKoumeBottleDL" Offset="0x1F90" />
|
||||
<DList Name="gKoumePotionDL" Offset="0x20C8" />
|
||||
<DList Name="gKoumeEmptyDL" Offset="0x2160" />
|
||||
<Texture Name="gKoumeBottleTex" OutName="koume_bottle" Format="i4" Width="16" Height="16" Offset="0x2168" />
|
||||
|
||||
<Animation Name="gKoumeFlyAnim" Offset="0x2BD8" />
|
||||
<Animation Name="gKoumeTakeOffAnim" Offset="0x3698" />
|
||||
<Animation Name="gKoumeHoverAnim" Offset="0x446C" />
|
||||
<Animation Name="gKoumeDrinkAnim" Offset="0x7FA0" />
|
||||
<Animation Name="gKoumeInjuredRaiseHeadAnim" Offset="0x9348" />
|
||||
|
||||
<DList Name="gKoumePelvisDL" Offset="0xB730" />
|
||||
<DList Name="gKoumeTorsoDL" Offset="0xB940" />
|
||||
<DList Name="gKoumeNeckDL" Offset="0xBA88" />
|
||||
<DList Name="gKoumeHeadDL" Offset="0xBBB8" />
|
||||
<DList Name="gKoumeLeftBraidStartDL" Offset="0xC630" />
|
||||
<DList Name="gKoumeLeftBraidEndDL" Offset="0xC730" />
|
||||
<DList Name="gKoumeTeethDL" Offset="0xC810" />
|
||||
<DList Name="gKoumeRightBraidStartDL" Offset="0xC860" />
|
||||
<DList Name="gKoumeRightBraidEndDL" Offset="0xC960" />
|
||||
<DList Name="gKoumeRightSleeveStartDL" Offset="0xCA40" />
|
||||
<DList Name="gKoumeRightSleeveFrontDL" Offset="0xCB50" />
|
||||
<DList Name="gKoumeRightHandDL" Offset="0xCCC0" />
|
||||
<DList Name="gKoumeRightSleeveMidDL" Offset="0xCFA8" />
|
||||
<DList Name="gKoumeRightSleeveEndDL" Offset="0xD0C0" />
|
||||
<DList Name="gKoumeLeftSleeveStartDL" Offset="0xD1D0" />
|
||||
<DList Name="gKoumeLeftSleeveFrontDL" Offset="0xD2E0" />
|
||||
<DList Name="gKoumeLeftHandDL" Offset="0xD450" />
|
||||
<DList Name="gKoumeBroomDL" Offset="0xD738" />
|
||||
<DList Name="gKoumeLeftSleeveMidDL" Offset="0xDA38" />
|
||||
<DList Name="gKoumeLeftSleeveEndDL" Offset="0xDB50" />
|
||||
<DList Name="gKoumeRightThighDL" Offset="0xDC40" /> <!-- Renders a single triangle instead of a normal-looking limb -->
|
||||
<DList Name="gKoumeRightShinDL" Offset="0xDC88" />
|
||||
<DList Name="gKoumeRightFootDL" Offset="0xDD38" />
|
||||
<DList Name="gKoumeLeftThighDL" Offset="0xDDD0" /> <!-- Renders a single triangle instead of a normal-looking limb -->
|
||||
<DList Name="gKoumeLeftShinDL" Offset="0xDE18" />
|
||||
<DList Name="gKoumeLeftFootDL" Offset="0xDEC8" />
|
||||
|
||||
<Animation Name="gKoumeInjuredTalkAnim" Offset="0xEEDC" />
|
||||
<Animation Name="gKoumeInjuredLyingDownAnim" Offset="0xF9A0" />
|
||||
<Animation Name="gKoumeTryGetUpAnim" Offset="0x108AC" />
|
||||
<Animation Name="gKoumeHealedAnim" Offset="0x11F88" />
|
||||
<Animation Name="gKoumeTakeAnim" Offset="0x14728" />
|
||||
<Animation Name="gKoumeIdleAnim" Offset="0x15068" />
|
||||
<Animation Name="gKoumeInjuredHeadUpAnim" Offset="0x15CA0" />
|
||||
<Animation Name="gKoumeFinishedDrinkingAnim" Offset="0x16B4C" />
|
||||
|
||||
<Texture Name="gKoumeSkinTLUT" OutName="koume_skin_tlut" Format="rgba16" Width="16" Height="16" Offset="0x16B60" />
|
||||
<Texture Name="gKoumeMouthTLUT" OutName="koume_mouth_tlut" Format="rgba16" Width="16" Height="16" Offset="0x16D60" />
|
||||
<Texture Name="gKoumeEarTLUT" OutName="koume_ear_tlut" Format="rgba16" Width="16" Height="16" Offset="0x16F60" />
|
||||
<Texture Name="gKoumeFingerTLUT" OutName="koume_finger_tlut" Format="rgba16" Width="16" Height="16" Offset="0x17160" />
|
||||
<Texture Name="gKoumeNeckTLUT" OutName="koume_neck_tlut" Format="rgba16" Width="16" Height="16" Offset="0x17360" />
|
||||
<Texture Name="gKoumeNostrilsTLUT" OutName="koume_nostrils_tlut" Format="rgba16" Width="16" Height="16" Offset="0x17560" />
|
||||
<Texture Name="gKoumeGerudoFabricTex" OutName="koume_gerudo_fabric" Format="rgba16" Width="32" Height="32" Offset="0x17760" />
|
||||
<Texture Name="gKoumeRobeTex" OutName="koume_robe" Format="rgba16" Width="16" Height="16" Offset="0x17F60" />
|
||||
<Texture Name="gKoumeRobePatternTex" OutName="koume_robe_pattern" Format="rgba16" Width="16" Height="16" Offset="0x18160" />
|
||||
<Texture Name="gKoumeRobeTrimTex" OutName="koume_robe_trim" Format="rgba16" Width="16" Height="16" Offset="0x18360" />
|
||||
<Texture Name="gKoumeSkinTex" OutName="koume_skin" Format="ci8" Width="16" Height="8" Offset="0x18560" />
|
||||
<Texture Name="gKoumeMouthTex" OutName="koume_mouth" Format="ci8" Width="8" Height="8" Offset="0x185E0" />
|
||||
<Texture Name="gKoumeHairTex" OutName="koume_hair" Format="rgba16" Width="8" Height="32" Offset="0x18620" />
|
||||
<Texture Name="gKoumeBraidEndTex" OutName="koume_braid_end" Format="rgba16" Width="8" Height="8" Offset="0x18820" />
|
||||
<Texture Name="gKoumeEarTex" OutName="koume_ear" Format="ci8" Width="8" Height="8" Offset="0x188A0" />
|
||||
<Texture Name="gKoumeCollarNeckTex" OutName="koume_collar_neck" Format="rgba16" Width="4" Height="8" Offset="0x188E0" />
|
||||
<Texture Name="gKoumeFingerTex" OutName="koume_finger" Format="ci8" Width="8" Height="16" Offset="0x18920" />
|
||||
<Texture Name="gKoumeBroomHandleTex" OutName="koume_broom_handle" Format="rgba16" Width="8" Height="8" Offset="0x189A0" />
|
||||
<Texture Name="gKoumeBroomHeadTex" OutName="koume_broom_head" Format="rgba16" Width="16" Height="32" Offset="0x18A20" />
|
||||
<Texture Name="gKoumeJewelHolderTex" OutName="koume_jewel_holder" Format="rgba16" Width="16" Height="8" Offset="0x18E20" />
|
||||
<Texture Name="gKoumeNeckTex" OutName="koume_neck" Format="ci8" Width="8" Height="8" Offset="0x18F20" />
|
||||
<Texture Name="gKoumeNostrilsTex" OutName="koume_nostrils" Format="ci8" Width="8" Height="8" Offset="0x18F60" />
|
||||
<Texture Name="gKoumeEyeOpenTex" OutName="koume_eye_open" Format="rgba16" Width="32" Height="32" Offset="0x18FA0" />
|
||||
<Texture Name="gKoumeEyeHalfTex" OutName="koume_eye_half" Format="rgba16" Width="32" Height="32" Offset="0x197A0" />
|
||||
<Texture Name="gKoumeEyeClosedTex" OutName="koume_eye_closed" Format="rgba16" Width="32" Height="32" Offset="0x19FA0" />
|
||||
<Texture Name="gKoumeJewelTex" OutName="koume_jewel" Format="rgba16" Width="8" Height="8" Offset="0x1A7A0" />
|
||||
|
||||
<DList Name="gKoumeDustMaterialDL" Offset="0x1A820" />
|
||||
<DList Name="gKoumeDustModelDL" Offset="0x1A830" />
|
||||
|
||||
<Limb Name="gKoumePelvisLimb" Type="Standard" EnumName="KOUME_LIMB_PELVIS" Offset="0x1A8C0" />
|
||||
<Limb Name="gKoumeLeftThighLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_THIGH" Offset="0x1A8CC" />
|
||||
<Limb Name="gKoumeLeftShinLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_SHIN" Offset="0x1A8D8" />
|
||||
<Limb Name="gKoumeLeftFootLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_FOOT" Offset="0x1A8E4" />
|
||||
<Limb Name="gKoumeRightThighLimb" Type="Standard" EnumName="KOUME_LIMB_RIGH_THIGH" Offset="0x1A8F0" />
|
||||
<Limb Name="gKoumeRightShinLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_SHIN" Offset="0x1A8FC" />
|
||||
<Limb Name="gKoumeRightFootLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_FOOT" Offset="0x1A908" />
|
||||
<Limb Name="gKoumeTorsoLimb" Type="Standard" EnumName="KOUME_LIMB_TORSO_LIMB" Offset="0x1A914" />
|
||||
<Limb Name="gKoumeLeftSleeveStartLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_SLEEVE_START" Offset="0x1A920" />
|
||||
<Limb Name="gKoumeLeftSleeveMidLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_SLEEVE_MID" Offset="0x1A92C" />
|
||||
<Limb Name="gKoumeLeftSleeveEndLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_SLEEVE_END" Offset="0x1A938" />
|
||||
<Limb Name="gKoumeLeftSleeveFrontLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_SLEEVE_FRONT" Offset="0x1A944" />
|
||||
<Limb Name="gKoumeLeftHandLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_HAND" Offset="0x1A950" />
|
||||
<Limb Name="gKoumeBroomLimb" Type="Standard" EnumName="KOUME_LIMB_BROOM" Offset="0x1A95C" />
|
||||
<Limb Name="gKoumeRightSleeveStartLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_SLEEVE_START" Offset="0x1A968" />
|
||||
<Limb Name="gKoumeRightSleeveMidLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_SLEEVE_MID" Offset="0x1A974" />
|
||||
<Limb Name="gKoumeRightSleeveEndLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_SLEEVE_END" Offset="0x1A980" />
|
||||
<Limb Name="gKoumeRightSleeveFrontLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_SLEEVE_FRONT" Offset="0x1A98C" />
|
||||
<Limb Name="gKoumeRightHandLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_HAND" Offset="0x1A998" />
|
||||
<Limb Name="gKoumeNeckLimb" Type="Standard" EnumName="KOUME_LIMB_NECK" Offset="0x1A9A4" />
|
||||
<Limb Name="gKoumeHeadLimb" Type="Standard" EnumName="KOUME_LIMB_HEAD" Offset="0x1A9B0" />
|
||||
<Limb Name="gKoumeRightBraidStartLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_BRAID_START" Offset="0x1A9BC" />
|
||||
<Limb Name="gKoumeRightBraidEndLimb" Type="Standard" EnumName="KOUME_LIMB_RIGHT_BRAID_END" Offset="0x1A9C8" />
|
||||
<Limb Name="gKoumeTeethLimb" Type="Standard" EnumName="KOUME_LIMB_TEETH" Offset="0x1A9D4" />
|
||||
<Limb Name="gKoumeLeftBraidStartLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_BRAID_START" Offset="0x1A9E0" />
|
||||
<Limb Name="gKoumeLeftBraidEndLimb" Type="Standard" EnumName="KOUME_LIMB_LEFT_BRAID_END" Offset="0x1A9EC" />
|
||||
<Skeleton Name="gKoumeSkel" Type="Flex" LimbType="Standard" LimbNone="KOUME_LIMB_NONE" LimbMax="KOUME_LIMB_MAX" EnumName="KoumeLimb" Offset="0x1AA60" />
|
||||
|
||||
<Animation Name="gKoumeShakeAnim" Offset="0x1B5C4" />
|
||||
</File>
|
||||
</Root>
|
||||
|
|
|
|||
|
|
@ -145,15 +145,14 @@ void EnJcMato_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
static Vec3f movement = { 0.0f, -2500.0f, 0.0f };
|
||||
|
||||
void EnJcMato_Draw(Actor* thisx, PlayState* play) {
|
||||
static Vec3f sOffset = { 0.0f, -2500.0f, 0.0f };
|
||||
EnJcMato* this = THIS;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_8012C28C(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_tru_DL_000390);
|
||||
Matrix_MultVec3f(&movement, &this->pos);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gKoumeTargetDL);
|
||||
Matrix_MultVec3f(&sOffset, &this->pos);
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_tru.h"
|
||||
#include "objects/object_tru/object_tru.h"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_20)
|
||||
|
||||
|
|
@ -24,6 +24,26 @@ s32 func_80A87DC0(Actor* thisx, PlayState* play);
|
|||
void func_80A87FD0(EnTru* this, PlayState* play);
|
||||
void func_80A881E0(EnTru* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ KOUME_ANIM_INJURED_LYING_DOWN,
|
||||
/* 0x01 */ KOUME_ANIM_INJURED_LYING_DOWN_MORPH,
|
||||
/* 0x02 */ KOUME_ANIM_TRY_GET_UP,
|
||||
/* 0x03 */ KOUME_ANIM_INJURED_RAISE_HEAD,
|
||||
/* 0x04 */ KOUME_ANIM_INJURED_TALK,
|
||||
/* 0x05 */ KOUME_ANIM_INJURED_HEAD_UP,
|
||||
/* 0x06 */ KOUME_ANIM_INJURED_HEAD_UP_MORPH,
|
||||
/* 0x07 */ KOUME_ANIM_TAKE,
|
||||
/* 0x08 */ KOUME_ANIM_SHAKE, // Unused
|
||||
/* 0x09 */ KOUME_ANIM_DRINK,
|
||||
/* 0x0A */ KOUME_ANIM_FINISHED_DRINKING,
|
||||
/* 0x0B */ KOUME_ANIM_HEALED,
|
||||
/* 0x0C */ KOUME_ANIM_HOVER1,
|
||||
/* 0x0D */ KOUME_ANIM_TAKE_OFF,
|
||||
/* 0x0E */ KOUME_ANIM_FLY,
|
||||
/* 0x0F */ KOUME_ANIM_HOVER2,
|
||||
/* 0x10 */ KOUME_ANIM_MAX
|
||||
} KoumeAnimation;
|
||||
|
||||
static UNK_TYPE D_80A88910[] = {
|
||||
0x0E08520C,
|
||||
0x16100000,
|
||||
|
|
@ -69,7 +89,6 @@ const ActorInit En_Tru_InitVars = {
|
|||
};
|
||||
|
||||
#include "overlays/ovl_En_Tru/ovl_En_Tru.c"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
|
||||
static Vec3f D_80A8B250 = { 0.0f, 0.02f, 0.0f };
|
||||
|
||||
|
|
@ -107,22 +126,22 @@ static ColliderSphereInit sSphereInit = {
|
|||
static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 20, 0, 0, MASS_IMMOVABLE };
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &object_tru_Anim_00F9A0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_00F9A0, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_0108AC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_009348, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_tru_Anim_00EEDC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_015CA0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_015CA0, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_014728, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_tru_Anim_01B5C4, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_tru_Anim_007FA0, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_016B4C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_011F88, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_00446C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_003698, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_002BD8, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_00446C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredLyingDownAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredLyingDownAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeTryGetUpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeInjuredRaiseHeadAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKoumeInjuredTalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeInjuredHeadUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredHeadUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeTakeAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKoumeShakeAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKoumeDrinkAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeFinishedDrinkingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeHealedAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeHoverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeTakeOffAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeFlyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeHoverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
};
|
||||
|
||||
static Vec3f D_80A8B3D8 = { 0.0f, 24.0f, 16.0f };
|
||||
|
|
@ -275,12 +294,12 @@ void func_80A85F84(EnTruUnkStruct* arg0, PlayState* play) {
|
|||
|
||||
for (i = 0; i < 30; i++, arg0++) {
|
||||
f32 alpha;
|
||||
s32 idx;
|
||||
s32 index;
|
||||
|
||||
if ((arg0->unk_00 == 3) || (arg0->unk_00 == 4) || (arg0->unk_00 == 5)) {
|
||||
if (!flag) {
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, sizeof(Gfx) * 0);
|
||||
gSPDisplayList(POLY_XLU_DISP++, object_tru_DL_01A820);
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gKoumeDustMaterialDL);
|
||||
flag = true;
|
||||
}
|
||||
|
||||
|
|
@ -306,9 +325,9 @@ void func_80A85F84(EnTruUnkStruct* arg0, PlayState* play) {
|
|||
Matrix_ReplaceRotation(&play->billboardMtxF);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
idx = ((f32)arg0->unk_02 / arg0->unk_01) * 8.0f;
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(sDustTextures[idx]));
|
||||
gSPDisplayList(POLY_XLU_DISP++, object_tru_DL_01A830);
|
||||
index = ((f32)arg0->unk_02 / arg0->unk_01) * 8.0f;
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(sDustTextures[index]));
|
||||
gSPDisplayList(POLY_XLU_DISP++, gKoumeDustModelDL);
|
||||
|
||||
Matrix_Pop();
|
||||
}
|
||||
|
|
@ -414,21 +433,21 @@ s32 func_80A86770(EnTru* this) {
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A868F8(EnTru* this) {
|
||||
this->skelAnime.playSpeed = this->unk_358;
|
||||
void EnTru_UpdateSkelAnime(EnTru* this) {
|
||||
this->skelAnime.playSpeed = this->playSpeed;
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
}
|
||||
|
||||
s32 func_80A86924(EnTru* this, s32 arg1) {
|
||||
s32 ret = false;
|
||||
s32 EnTru_ChangeAnim(EnTru* this, s32 animIndex) {
|
||||
s32 didChange = false;
|
||||
|
||||
if (arg1 != this->unk_37C) {
|
||||
this->unk_37C = arg1;
|
||||
ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, arg1);
|
||||
this->unk_358 = this->skelAnime.playSpeed;
|
||||
if (animIndex != this->animIndex) {
|
||||
this->animIndex = animIndex;
|
||||
didChange = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
this->playSpeed = this->skelAnime.playSpeed;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return didChange;
|
||||
}
|
||||
|
||||
void func_80A8697C(EnTru* this, PlayState* play) {
|
||||
|
|
@ -497,7 +516,7 @@ s32 func_80A86BAC(EnTru* this, PlayState* play) {
|
|||
Matrix_RotateXS(-0x4000, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_tru_DL_0020C8);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gKoumePotionDL);
|
||||
|
||||
Matrix_Pop();
|
||||
|
||||
|
|
@ -515,7 +534,7 @@ s32 func_80A86BAC(EnTru* this, PlayState* play) {
|
|||
Matrix_RotateXS(-0x4000, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, object_tru_DL_001F90);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gKoumeBottleDL);
|
||||
|
||||
Matrix_Pop();
|
||||
|
||||
|
|
@ -527,104 +546,105 @@ s32 func_80A86BAC(EnTru* this, PlayState* play) {
|
|||
|
||||
s32 func_80A86DB8(EnTru* this) {
|
||||
if (this->unk_34E & 0x80) {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (this->unk_37C) {
|
||||
case 0:
|
||||
case 1:
|
||||
if (DECR(this->unk_36C) == 0) {
|
||||
switch (this->animIndex) {
|
||||
case KOUME_ANIM_INJURED_LYING_DOWN:
|
||||
case KOUME_ANIM_INJURED_LYING_DOWN_MORPH:
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
s16 rand = Rand_S16Offset(40, 20);
|
||||
if (this->unk_36E == 2) {
|
||||
this->unk_36C = 8;
|
||||
|
||||
if (this->eyeTexIndex == 2) {
|
||||
this->blinkTimer = 8;
|
||||
} else {
|
||||
this->unk_36C = rand;
|
||||
this->blinkTimer = rand;
|
||||
}
|
||||
|
||||
if (this->unk_36E == 2) {
|
||||
this->unk_36E = 1;
|
||||
if (this->eyeTexIndex == 2) {
|
||||
this->eyeTexIndex = 1;
|
||||
} else {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
case 2:
|
||||
case KOUME_ANIM_TRY_GET_UP:
|
||||
if (Animation_OnFrame(&this->skelAnime, 10.0f)) {
|
||||
this->unk_36E = 1;
|
||||
this->eyeTexIndex = 1;
|
||||
} else if ((this->skelAnime.curFrame >= 11.0f) && (this->skelAnime.curFrame <= 32.0f)) {
|
||||
this->unk_36E = 0;
|
||||
this->eyeTexIndex = 0;
|
||||
} else {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
}
|
||||
return false;
|
||||
|
||||
case 3:
|
||||
case KOUME_ANIM_INJURED_RAISE_HEAD:
|
||||
if (Animation_OnFrame(&this->skelAnime, 31.0f)) {
|
||||
this->unk_36E = 1;
|
||||
this->eyeTexIndex = 1;
|
||||
} else if (this->skelAnime.curFrame <= 32.0f) {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
this->unk_36E = 0;
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
return false;
|
||||
|
||||
case 9:
|
||||
case KOUME_ANIM_DRINK:
|
||||
if (Animation_OnFrame(&this->skelAnime, 57.0f)) {
|
||||
this->unk_36C = 0;
|
||||
this->unk_36E = 0;
|
||||
this->blinkTimer = 0;
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
|
||||
if (this->skelAnime.curFrame < 57.0f) {
|
||||
if (DECR(this->unk_36C) == 0) {
|
||||
this->unk_36C = Rand_S16Offset(8, 8);
|
||||
this->unk_36E = 2;
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->blinkTimer = Rand_S16Offset(8, 8);
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
this->unk_36E = 1;
|
||||
this->eyeTexIndex = 1;
|
||||
}
|
||||
} else if (DECR(this->unk_36C) == 0) {
|
||||
this->unk_36E++;
|
||||
if (this->unk_36E >= 4) {
|
||||
this->unk_36C = Rand_S16Offset(20, 10);
|
||||
this->unk_36E = 0;
|
||||
} else if (DECR(this->blinkTimer) == 0) {
|
||||
this->eyeTexIndex++;
|
||||
if (this->eyeTexIndex >= 4) {
|
||||
this->blinkTimer = Rand_S16Offset(20, 10);
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
case 10:
|
||||
this->unk_36E = 0;
|
||||
case KOUME_ANIM_FINISHED_DRINKING:
|
||||
this->eyeTexIndex = 0;
|
||||
return false;
|
||||
|
||||
case 11:
|
||||
case KOUME_ANIM_HEALED:
|
||||
if (Animation_OnFrame(&this->skelAnime, 19.0f) || Animation_OnFrame(&this->skelAnime, 45.0f)) {
|
||||
this->unk_36E = 1;
|
||||
this->eyeTexIndex = 1;
|
||||
} else if ((this->skelAnime.curFrame >= 19.0f) && (this->skelAnime.curFrame <= 45.0f)) {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
this->unk_36E = 3;
|
||||
this->eyeTexIndex = 3;
|
||||
}
|
||||
return false;
|
||||
|
||||
case 13:
|
||||
case KOUME_ANIM_TAKE_OFF:
|
||||
if (Animation_OnFrame(&this->skelAnime, 19.0f)) {
|
||||
this->unk_36E = 1;
|
||||
this->eyeTexIndex = 1;
|
||||
} else if (this->skelAnime.curFrame >= 19.0f) {
|
||||
this->unk_36E = 2;
|
||||
this->eyeTexIndex = 2;
|
||||
} else {
|
||||
this->unk_36E = 0;
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
return false;
|
||||
|
||||
default:
|
||||
if (DECR(this->unk_36C) == 0) {
|
||||
if ((this->unk_36E != 2) || !(this->unk_34E & 0x80)) {
|
||||
this->unk_36E++;
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
if ((this->eyeTexIndex != 2) || !(this->unk_34E & 0x80)) {
|
||||
this->eyeTexIndex++;
|
||||
}
|
||||
|
||||
if (this->unk_36E >= 4) {
|
||||
this->unk_36C = Rand_S16Offset(30, 30);
|
||||
this->unk_36E = 0;
|
||||
if (this->eyeTexIndex >= 4) {
|
||||
this->blinkTimer = Rand_S16Offset(30, 30);
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
|
@ -772,11 +792,12 @@ s32 func_80A875AC(Actor* thisx, PlayState* play) {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
if ((this->unk_37C != 5) && (this->unk_37C != 6)) {
|
||||
func_80A86924(this, 3);
|
||||
if ((this->animIndex != KOUME_ANIM_INJURED_HEAD_UP) &&
|
||||
(this->animIndex != KOUME_ANIM_INJURED_HEAD_UP_MORPH)) {
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_RAISE_HEAD);
|
||||
this->unk_364++;
|
||||
} else {
|
||||
func_80A86924(this, 4);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_TALK);
|
||||
ret = true;
|
||||
}
|
||||
break;
|
||||
|
|
@ -784,7 +805,7 @@ s32 func_80A875AC(Actor* thisx, PlayState* play) {
|
|||
case 3:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_364++;
|
||||
func_80A86924(this, 4);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_TALK);
|
||||
ret = true;
|
||||
}
|
||||
break;
|
||||
|
|
@ -806,7 +827,7 @@ s32 func_80A875AC(Actor* thisx, PlayState* play) {
|
|||
s32 func_80A8777C(Actor* thisx, PlayState* play) {
|
||||
EnTru* this = THIS;
|
||||
s32 ret = 0;
|
||||
s32 temp_v0;
|
||||
s32 itemActionParam;
|
||||
|
||||
switch (Message_GetState(&play->msgCtx)) {
|
||||
case TEXT_STATE_CHOICE:
|
||||
|
|
@ -816,10 +837,10 @@ s32 func_80A8777C(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
// Fallthrough
|
||||
case TEXT_STATE_16:
|
||||
temp_v0 = func_80123810(play);
|
||||
if ((temp_v0 == 35) || (temp_v0 == 36)) {
|
||||
itemActionParam = func_80123810(play);
|
||||
if ((itemActionParam == PLAYER_AP_BOTTLE_POTION_RED) || (itemActionParam == PLAYER_AP_BOTTLE_POTION_BLUE)) {
|
||||
this->unk_34E |= 8;
|
||||
if (temp_v0 == 35) {
|
||||
if (itemActionParam == PLAYER_AP_BOTTLE_POTION_RED) {
|
||||
this->unk_390 = 1;
|
||||
} else {
|
||||
this->unk_390 = 2;
|
||||
|
|
@ -827,9 +848,9 @@ s32 func_80A8777C(Actor* thisx, PlayState* play) {
|
|||
this->unk_378 = func_80A87880;
|
||||
this->unk_364 = 0;
|
||||
ret = 1;
|
||||
} else if (temp_v0 < 0) {
|
||||
} else if (itemActionParam < PLAYER_AP_NONE) {
|
||||
ret = 3;
|
||||
} else if (temp_v0 != 0) {
|
||||
} else if (itemActionParam != PLAYER_AP_NONE) {
|
||||
ret = 2;
|
||||
}
|
||||
break;
|
||||
|
|
@ -866,14 +887,14 @@ s32 func_80A87880(Actor* thisx, PlayState* play) {
|
|||
this->unk_34E &= ~0x8;
|
||||
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
|
||||
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
|
||||
func_80A86924(this, 7);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_TAKE);
|
||||
this->unk_364++;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_364++;
|
||||
func_80A86924(this, 9);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_DRINK);
|
||||
this->actor.world.rot.y += 0x4000;
|
||||
} else if (Animation_OnFrame(&this->skelAnime, 12.0f) && !(this->unk_34E & 0x800)) {
|
||||
this->unk_34E |= 0x400;
|
||||
|
|
@ -885,7 +906,7 @@ s32 func_80A87880(Actor* thisx, PlayState* play) {
|
|||
case 4:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_364++;
|
||||
func_80A86924(this, 10);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_FINISHED_DRINKING);
|
||||
ret = true;
|
||||
} else if (Animation_OnFrame(&this->skelAnime, 18.0f) || Animation_OnFrame(&this->skelAnime, 32.0f) ||
|
||||
Animation_OnFrame(&this->skelAnime, 52.0f)) {
|
||||
|
|
@ -923,7 +944,7 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) {
|
|||
|
||||
switch (this->unk_364) {
|
||||
case 0:
|
||||
func_80A86924(this, 11);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_HEALED);
|
||||
this->unk_364++;
|
||||
break;
|
||||
|
||||
|
|
@ -954,7 +975,7 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) {
|
|||
if (player->exchangeItemId != 0) {
|
||||
player->exchangeItemId = 0;
|
||||
}
|
||||
func_80A86924(this, 12);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_HOVER1);
|
||||
}
|
||||
} else {
|
||||
MREG(64) = 0;
|
||||
|
|
@ -997,7 +1018,7 @@ s32 func_80A87DC0(Actor* thisx, PlayState* play) {
|
|||
AudioSfx_StopById(NA_SE_EN_KOUME_MAGIC);
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOUME_AWAY);
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KOUME_LAUGH);
|
||||
func_80A86924(this, 13);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_TAKE_OFF);
|
||||
this->skelAnime.baseTransl.y = 0;
|
||||
this->skelAnime.moveFlags = 2;
|
||||
this->unk_34E &= ~0x8;
|
||||
|
|
@ -1010,7 +1031,7 @@ s32 func_80A87DC0(Actor* thisx, PlayState* play) {
|
|||
AnimationContext_SetMoveActor(play, &this->actor, &this->skelAnime, 1.0f);
|
||||
break;
|
||||
} else {
|
||||
func_80A86924(this, 14);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_FLY);
|
||||
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||
this->unk_362 = 20;
|
||||
this->unk_364++;
|
||||
|
|
@ -1049,13 +1070,14 @@ void func_80A87FD0(EnTru* this, PlayState* play) {
|
|||
SubS_UpdateFlags(&this->unk_34E, 0, 7);
|
||||
}
|
||||
|
||||
if ((this->unk_37C == 2) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if ((this->animIndex == KOUME_ANIM_TRY_GET_UP) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_362 = Rand_S16Offset(40, 20);
|
||||
func_80A86924(this, 1);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN_MORPH);
|
||||
func_80A86460(this);
|
||||
} else if (this->unk_37C != 2) {
|
||||
} else if (this->animIndex != KOUME_ANIM_TRY_GET_UP) {
|
||||
if (DECR(this->unk_362) == 0) {
|
||||
func_80A86924(this, 2);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_TRY_GET_UP);
|
||||
}
|
||||
}
|
||||
} else if (!(gSaveContext.save.weekEventReg[16] & 0x10) && (fabsf(this->actor.playerHeightRel) < 10.0f) &&
|
||||
|
|
@ -1084,12 +1106,12 @@ void func_80A881E0(EnTru* this, PlayState* play) {
|
|||
}
|
||||
|
||||
if (!(this->unk_34E & 0x40) && !(gSaveContext.save.weekEventReg[16] & 0x10)) {
|
||||
func_80A86924(this, 0);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN);
|
||||
} else if (this->unk_34E & 0x80) {
|
||||
func_80A86924(this, 0);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN);
|
||||
func_80A86460(this);
|
||||
} else if (gSaveContext.save.weekEventReg[16] & 0x10) {
|
||||
func_80A86924(this, 6);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_HEAD_UP_MORPH);
|
||||
}
|
||||
|
||||
SubS_UpdateFlags(&this->unk_34E, 0, 7);
|
||||
|
|
@ -1111,11 +1133,11 @@ void EnTru_Init(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_tru_Skel_01AA60, NULL, this->jointTable, this->morphTable, 27);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gKoumeSkel, NULL, this->jointTable, this->morphTable, KOUME_LIMB_MAX);
|
||||
Collider_InitAndSetSphere(play, &this->collider, &this->actor, &sSphereInit);
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit);
|
||||
this->unk_37C = -1;
|
||||
func_80A86924(this, 0);
|
||||
this->animIndex = -1;
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_LYING_DOWN);
|
||||
this->path = SubS_GetDayDependentPath(play, ENTRU_GET_PATH(&this->actor), 255, &this->unk_384);
|
||||
if (this->path != NULL) {
|
||||
this->unk_384 = 1;
|
||||
|
|
@ -1126,7 +1148,7 @@ void EnTru_Init(Actor* thisx, PlayState* play) {
|
|||
this->unk_34E = 0;
|
||||
|
||||
if (gSaveContext.save.weekEventReg[16] & 0x10) {
|
||||
func_80A86924(this, 5);
|
||||
EnTru_ChangeAnim(this, KOUME_ANIM_INJURED_HEAD_UP);
|
||||
} else {
|
||||
this->unk_388 = PLAYER_AP_NONE;
|
||||
}
|
||||
|
|
@ -1149,7 +1171,7 @@ void EnTru_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
this->actionFunc(this, play);
|
||||
|
||||
func_80A868F8(this);
|
||||
EnTru_UpdateSkelAnime(this);
|
||||
func_80A86B0C(this, play);
|
||||
func_80A86DB8(this);
|
||||
|
||||
|
|
@ -1165,7 +1187,7 @@ s32 EnTru_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
s32 pad;
|
||||
EnTru* this = THIS;
|
||||
|
||||
if (limbIndex == 21) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
Matrix_MultZero(&this->actor.focus.pos);
|
||||
Math_Vec3f_ToVec3s(&this->collider.dim.worldSphere.center, &this->actor.focus.pos);
|
||||
this->actor.focus.pos.x = (this->actor.focus.pos.x / 10.0f) * 10.0f;
|
||||
|
|
@ -1175,7 +1197,7 @@ s32 EnTru_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
Matrix_MultVec3f(&D_80A8B3FC, &this->unk_1F8);
|
||||
}
|
||||
|
||||
if (!(this->unk_34E & 0x200) && (limbIndex == 14)) {
|
||||
if (!(this->unk_34E & 0x200) && (limbIndex == KOUME_LIMB_BROOM)) {
|
||||
*dList = NULL;
|
||||
}
|
||||
|
||||
|
|
@ -1185,7 +1207,7 @@ s32 EnTru_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
void EnTru_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnTru* this = THIS;
|
||||
|
||||
if (limbIndex == 19) {
|
||||
if (limbIndex == KOUME_LIMB_RIGHT_HAND) {
|
||||
func_80A86BAC(this, play);
|
||||
}
|
||||
}
|
||||
|
|
@ -1212,7 +1234,7 @@ void EnTru_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
|
|||
overrideRot = false;
|
||||
}
|
||||
|
||||
if (limbIndex == 21) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
SubS_UpdateLimb(this->unk_366, this->unk_368 + this->actor.shape.rot.y, &this->unk_1EC, &this->unk_204, stepRot,
|
||||
overrideRot);
|
||||
Matrix_Pop();
|
||||
|
|
@ -1232,11 +1254,11 @@ void EnTru_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
|
|||
}
|
||||
|
||||
void EnTru_Draw(Actor* thisx, PlayState* play) {
|
||||
static TexturePtr D_80A8B408[] = {
|
||||
object_tru_Tex_018FA0,
|
||||
object_tru_Tex_0197A0,
|
||||
object_tru_Tex_019FA0,
|
||||
object_tru_Tex_0197A0,
|
||||
static TexturePtr sEyeTextures[] = {
|
||||
gKoumeEyeOpenTex,
|
||||
gKoumeEyeHalfTex,
|
||||
gKoumeEyeClosedTex,
|
||||
gKoumeEyeHalfTex,
|
||||
};
|
||||
s32 pad;
|
||||
EnTru* this = THIS;
|
||||
|
|
@ -1245,8 +1267,8 @@ void EnTru_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
func_8012C28C(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A8B408[this->unk_36E]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80A8B408[this->unk_36E]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex]));
|
||||
|
||||
SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, EnTru_OverrideLimbDraw, EnTru_PostLimbDraw,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define Z_EN_TRU_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_tru/object_tru.h"
|
||||
|
||||
struct EnTru;
|
||||
|
||||
|
|
@ -31,12 +32,12 @@ typedef struct EnTru {
|
|||
/* 0x1EC */ Vec3f unk_1EC;
|
||||
/* 0x1F8 */ Vec3f unk_1F8;
|
||||
/* 0x204 */ Vec3s unk_204;
|
||||
/* 0x20A */ Vec3s jointTable[27];
|
||||
/* 0x2AC */ Vec3s morphTable[27];
|
||||
/* 0x20A */ Vec3s jointTable[KOUME_LIMB_MAX];
|
||||
/* 0x2AC */ Vec3s morphTable[KOUME_LIMB_MAX];
|
||||
/* 0x34E */ u16 unk_34E;
|
||||
/* 0x350 */ UNK_TYPE1 unk350[0x4];
|
||||
/* 0x354 */ s32* unk_354;
|
||||
/* 0x358 */ f32 unk_358;
|
||||
/* 0x358 */ f32 playSpeed;
|
||||
/* 0x35C */ f32 unk_35C;
|
||||
/* 0x360 */ s16 unk_360;
|
||||
/* 0x362 */ s16 unk_362;
|
||||
|
|
@ -44,13 +45,13 @@ typedef struct EnTru {
|
|||
/* 0x366 */ s16 unk_366;
|
||||
/* 0x368 */ s16 unk_368;
|
||||
/* 0x36A */ s16 unk_36A;
|
||||
/* 0x36C */ s16 unk_36C;
|
||||
/* 0x36E */ s16 unk_36E;
|
||||
/* 0x36C */ s16 blinkTimer;
|
||||
/* 0x36E */ s16 eyeTexIndex;
|
||||
/* 0x370 */ s16 unk_370;
|
||||
/* 0x372 */ s16 unk_372;
|
||||
/* 0x374 */ s16 unk_374;
|
||||
/* 0x378 */ EnTruUnkFunc unk_378;
|
||||
/* 0x37C */ s32 unk_37C;
|
||||
/* 0x37C */ s32 animIndex;
|
||||
/* 0x380 */ UNK_TYPE1 unk380[0x4];
|
||||
/* 0x384 */ s32 unk_384;
|
||||
/* 0x388 */ s32 unk_388;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,26 @@ void func_80B76A64(EnTruMt* this, PlayState* play);
|
|||
void func_80B76BB8(EnTruMt* this, PlayState* play);
|
||||
void func_80B76C38(EnTruMt* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ KOUME_MT_ANIM_INJURED_LYING_DOWN,
|
||||
/* 0x01 */ KOUME_MT_ANIM_INJURED_LYING_DOWN_MORPH,
|
||||
/* 0x02 */ KOUME_MT_ANIM_TRY_GET_UP,
|
||||
/* 0x03 */ KOUME_MT_ANIM_INJURED_RAISE_HEAD,
|
||||
/* 0x04 */ KOUME_MT_ANIM_INJURED_TALK,
|
||||
/* 0x05 */ KOUME_MT_ANIM_INJURED_HEAD_UP,
|
||||
/* 0x06 */ KOUME_MT_ANIM_INJURED_HEAD_UP_MORPH,
|
||||
/* 0x07 */ KOUME_MT_ANIM_TAKE,
|
||||
/* 0x08 */ KOUME_MT_ANIM_SHAKE, // Unused
|
||||
/* 0x09 */ KOUME_MT_ANIM_DRINK,
|
||||
/* 0x0A */ KOUME_MT_ANIM_FINISHED_DRINKING,
|
||||
/* 0x0B */ KOUME_MT_ANIM_HEALED,
|
||||
/* 0x0C */ KOUME_MT_ANIM_HOVER1,
|
||||
/* 0x0D */ KOUME_MT_ANIM_TAKE_OFF,
|
||||
/* 0x0E */ KOUME_MT_ANIM_FLY,
|
||||
/* 0x0F */ KOUME_MT_ANIM_HOVER2,
|
||||
/* 0x10 */ KOUME_MT_ANIM_MAX
|
||||
} KoumeMtAnimation;
|
||||
|
||||
const ActorInit En_Tru_Mt_InitVars = {
|
||||
ACTOR_EN_TRU_MT,
|
||||
ACTORCAT_NPC,
|
||||
|
|
@ -88,57 +108,57 @@ static DamageTable sDamageTable = {
|
|||
};
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &object_tru_Anim_00F9A0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_00F9A0, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_0108AC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_009348, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_00EEDC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_015CA0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_015CA0, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_014728, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_tru_Anim_01B5C4, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_tru_Anim_007FA0, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_016B4C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_tru_Anim_011F88, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_00446C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_003698, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_tru_Anim_002BD8, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_tru_Anim_00446C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredLyingDownAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredLyingDownAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeTryGetUpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeInjuredRaiseHeadAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeInjuredTalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeInjuredHeadUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeInjuredHeadUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeTakeAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKoumeShakeAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKoumeDrinkAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeFinishedDrinkingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKoumeHealedAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeHoverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeTakeOffAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gKoumeFlyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKoumeHoverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
};
|
||||
|
||||
Vec3f D_80B7765C = { 3000.0f, -800.0f, 0.0f };
|
||||
|
||||
Vec3f D_80B77668 = { 0.0f, 0.0f, -3000.0f };
|
||||
|
||||
s32 func_80B76030(SkelAnime* skelAnime, s16 arg1) {
|
||||
s32 EnTruMt_ChangeAnim(SkelAnime* skelAnime, s16 animIndex) {
|
||||
s16 endFrame;
|
||||
s16 startFrame;
|
||||
s32 ret = false;
|
||||
s32 didChange = false;
|
||||
|
||||
if ((arg1 >= 0) && (arg1 < ARRAY_COUNT(sAnimationInfo))) {
|
||||
endFrame = sAnimationInfo[arg1].frameCount;
|
||||
if ((animIndex >= KOUME_MT_ANIM_INJURED_LYING_DOWN) && (animIndex < KOUME_MT_ANIM_MAX)) {
|
||||
endFrame = sAnimationInfo[animIndex].frameCount;
|
||||
if (endFrame < 0) {
|
||||
endFrame = Animation_GetLastFrame(sAnimationInfo[arg1].animation);
|
||||
endFrame = Animation_GetLastFrame(sAnimationInfo[animIndex].animation);
|
||||
}
|
||||
|
||||
startFrame = sAnimationInfo[arg1].startFrame;
|
||||
startFrame = sAnimationInfo[animIndex].startFrame;
|
||||
if (startFrame < 0) {
|
||||
startFrame = Animation_GetLastFrame(sAnimationInfo[arg1].animation);
|
||||
startFrame = Animation_GetLastFrame(sAnimationInfo[animIndex].animation);
|
||||
}
|
||||
|
||||
Animation_Change(skelAnime, sAnimationInfo[arg1].animation, sAnimationInfo[arg1].playSpeed, startFrame,
|
||||
endFrame, sAnimationInfo[arg1].mode, sAnimationInfo[arg1].morphFrames);
|
||||
ret = true;
|
||||
Animation_Change(skelAnime, sAnimationInfo[animIndex].animation, sAnimationInfo[animIndex].playSpeed,
|
||||
startFrame, endFrame, sAnimationInfo[animIndex].mode, sAnimationInfo[animIndex].morphFrames);
|
||||
didChange = true;
|
||||
}
|
||||
return ret;
|
||||
return didChange;
|
||||
}
|
||||
|
||||
void func_80B76110(EnTruMt* this) {
|
||||
if (DECR(this->unk_34E) == 0) {
|
||||
this->unk_34C++;
|
||||
if (this->unk_34C >= 3) {
|
||||
this->unk_34E = Rand_S16Offset(30, 30);
|
||||
this->unk_34C = 0;
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->eyeTexIndex++;
|
||||
if (this->eyeTexIndex >= 3) {
|
||||
this->blinkTimer = Rand_S16Offset(30, 30);
|
||||
this->eyeTexIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -404,8 +424,7 @@ void EnTruMt_Init(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_tru_Skel_01AA60, NULL, this->jointTable, this->morphTable,
|
||||
OBJECT_TRU_LIMB_MAX);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gKoumeSkel, NULL, this->jointTable, this->morphTable, KOUME_LIMB_MAX);
|
||||
|
||||
Collider_InitSphere(play, &this->collider);
|
||||
Collider_SetSphere(play, &this->collider, &this->actor, &sSphereInit);
|
||||
|
|
@ -421,7 +440,7 @@ void EnTruMt_Init(Actor* thisx, PlayState* play) {
|
|||
this->unk_328 = 0;
|
||||
this->actor.room = -1;
|
||||
this->path = SubS_GetPathByIndex(play, ENTRUMT_GET_FC00(&this->actor), 0x3F);
|
||||
func_80B76030(&this->skelAnime, 14);
|
||||
EnTruMt_ChangeAnim(&this->skelAnime, KOUME_MT_ANIM_FLY);
|
||||
this->actionFunc = func_80B76A64;
|
||||
}
|
||||
|
||||
|
|
@ -477,11 +496,11 @@ void func_80B76ED4(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4) {
|
|||
s32 EnTruMt_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnTruMt* this = THIS;
|
||||
|
||||
if (limbIndex == OBJECT_TRU_LIMB_15) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&gZeroVec3f, &this->unk_35C);
|
||||
}
|
||||
|
||||
if (limbIndex == OBJECT_TRU_LIMB_15) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&D_80B7765C, &this->unk_350);
|
||||
}
|
||||
return false;
|
||||
|
|
@ -493,7 +512,7 @@ void EnTruMt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
|
|||
MtxF* sp54;
|
||||
s32 phi_v0;
|
||||
|
||||
if (limbIndex == OBJECT_TRU_LIMB_15) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
if (this->unk_328 & 0x10) {
|
||||
phi_v0 = 1;
|
||||
} else {
|
||||
|
|
@ -507,7 +526,7 @@ void EnTruMt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
|
|||
Matrix_RotateZS(this->unk_336.z, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if (limbIndex == OBJECT_TRU_LIMB_0E) {
|
||||
if (limbIndex == KOUME_LIMB_BROOM) {
|
||||
func_8012C28C(play->state.gfxCtx);
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
|
@ -520,7 +539,7 @@ void EnTruMt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
|
|||
Matrix_Scale(0.008f, 0.008f, 0.008f, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_tru_DL_0004C8);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gKoumeChainDL);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
||||
|
|
@ -545,7 +564,7 @@ void EnTruMt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
|
|||
void EnTruMt_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
|
||||
EnTruMt* this = THIS;
|
||||
|
||||
if (limbIndex == OBJECT_TRU_LIMB_15) {
|
||||
if (limbIndex == KOUME_LIMB_HEAD) {
|
||||
Matrix_Translate(this->unk_33C.x, this->unk_33C.y, this->unk_33C.z, MTXMODE_NEW);
|
||||
Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY);
|
||||
Matrix_RotateYS(this->unk_336.y, MTXMODE_APPLY);
|
||||
|
|
@ -556,18 +575,18 @@ void EnTruMt_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
|
|||
|
||||
void EnTruMt_Draw(Actor* thisx, PlayState* play) {
|
||||
EnTruMt* this = THIS;
|
||||
TexturePtr sp48[] = {
|
||||
object_tru_Tex_018FA0,
|
||||
object_tru_Tex_0197A0,
|
||||
object_tru_Tex_019FA0,
|
||||
TexturePtr eyeTextures[] = {
|
||||
gKoumeEyeOpenTex,
|
||||
gKoumeEyeHalfTex,
|
||||
gKoumeEyeClosedTex,
|
||||
};
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_8012C28C(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sp48[this->unk_34C]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sp48[this->unk_34C]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(eyeTextures[this->eyeTexIndex]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(eyeTextures[this->eyeTexIndex]));
|
||||
|
||||
SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, EnTruMt_OverrideLimbDraw, EnTruMt_PostLimbDraw,
|
||||
|
|
|
|||
|
|
@ -16,16 +16,16 @@ typedef struct EnTruMt {
|
|||
/* 0x144 */ EnTruMtActionFunc actionFunc;
|
||||
/* 0x148 */ SkelAnime skelAnime;
|
||||
/* 0x18C */ ColliderSphere collider;
|
||||
/* 0x1E4 */ Vec3s jointTable[OBJECT_TRU_LIMB_MAX];
|
||||
/* 0x286 */ Vec3s morphTable[OBJECT_TRU_LIMB_MAX];
|
||||
/* 0x1E4 */ Vec3s jointTable[KOUME_LIMB_MAX];
|
||||
/* 0x286 */ Vec3s morphTable[KOUME_LIMB_MAX];
|
||||
/* 0x328 */ u16 unk_328;
|
||||
/* 0x32A */ UNK_TYPE1 unk32A[0xC];
|
||||
/* 0x336 */ Vec3s unk_336;
|
||||
/* 0x33C */ Vec3f unk_33C;
|
||||
/* 0x348 */ s16 unk_348;
|
||||
/* 0x34A */ s16 unk_34A;
|
||||
/* 0x34C */ s16 unk_34C;
|
||||
/* 0x34E */ s16 unk_34E;
|
||||
/* 0x34C */ s16 eyeTexIndex;
|
||||
/* 0x34E */ s16 blinkTimer;
|
||||
/* 0x350 */ Vec3f unk_350;
|
||||
/* 0x35C */ Vec3f unk_35C;
|
||||
/* 0x368 */ Path* path;
|
||||
|
|
|
|||
|
|
@ -11226,8 +11226,8 @@
|
|||
0x80A86460:("func_80A86460",),
|
||||
0x80A86674:("func_80A86674",),
|
||||
0x80A86770:("func_80A86770",),
|
||||
0x80A868F8:("func_80A868F8",),
|
||||
0x80A86924:("func_80A86924",),
|
||||
0x80A868F8:("EnTru_UpdateSkelAnime",),
|
||||
0x80A86924:("EnTru_ChangeAnim",),
|
||||
0x80A8697C:("func_80A8697C",),
|
||||
0x80A869DC:("func_80A869DC",),
|
||||
0x80A86B0C:("func_80A86B0C",),
|
||||
|
|
@ -14437,7 +14437,7 @@
|
|||
0x80B75658:("EnJg_OverrideLimbDraw",),
|
||||
0x80B75708:("EnJg_PostLimbDraw",),
|
||||
0x80B757AC:("EnJg_Draw",),
|
||||
0x80B76030:("func_80B76030",),
|
||||
0x80B76030:("EnTruMt_ChangeAnim",),
|
||||
0x80B76110:("func_80B76110",),
|
||||
0x80B76188:("func_80B76188",),
|
||||
0x80B761FC:("func_80B761FC",),
|
||||
|
|
|
|||
Loading…
Reference in New Issue