1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-25 09:45:02 +00:00

Objects tw and tr (#1410)

* Tr

* Update from MM prs

* Twinrova kotake and koume

* Animations

* textures

* DLs and final clean up

* limb enum

* blobs

* Move blobs
This commit is contained in:
Derek Hensley 2022-11-01 16:42:16 -07:00 committed by GitHub
parent ab90300062
commit d8175501ad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 473 additions and 379 deletions

View file

@ -1,149 +1,166 @@
<Root>
<File Name="object_tr" Segment="6">
<Animation Name="object_tr_Anim_000BFC" Offset="0xBFC"/> <!-- Turn to look over left (?) shoulder -->
<Animation Name="object_tr_Anim_0013CC" Offset="0x13CC"/> <!-- Looking over right shoulder -->
<Animation Name="object_tr_Anim_001CDC" Offset="0x1CDC"/> <!-- Standing, broom in left hand -->
<Animation Name="object_tr_Anim_002BC4" Offset="0x2BC4"/> <!-- Turn to look over right (?) shoulder -->
<Animation Name="object_tr_Anim_0035CC" Offset="0x35CC"/> <!-- Looking over left shoulder -->
<Animation Name="object_tr_Anim_003FC8" Offset="0x3FC8"/> <!-- Standing, broom over right shoulder -->
<Animation Name="object_tr_Anim_0049C8" Offset="0x49C8"/> <!-- Floating on broom -->
<Animation Name="object_tr_Anim_005308" Offset="0x5308"/>
<Animation Name="gKotakeKoumeLookOverRightShoulderAnim" Offset="0xBFC"/>
<Animation Name="gKotakeKoumeLookingOverRightShoulderAnim" Offset="0x13CC"/>
<Animation Name="gKotakeKoumeStandingBroomOverLeftShoulderAnim" Offset="0x1CDC"/>
<Animation Name="gKotakeKoumeLookOverLeftShoulderAnim" Offset="0x2BC4"/>
<Animation Name="gKotakeKoumeLookingOverLeftShoulderAnim" Offset="0x35CC"/>
<Animation Name="gKotakeKoumeStandingBroomOverRightShoulderAnim" Offset="0x3FC8"/>
<Animation Name="gKotakeKoumeFlyAnim" Offset="0x49C8"/>
<Animation Name="gKotakeKoumeStandingBroomOverRightShoulderUnusedAnim" Offset="0x5308"/> <!-- Very similar to gKotakeKoumeStandingBroomOverRightShoulderAnim but not quite a duplicate -->
<Blob Name="object_tr_Blob_0062E0" Size="0x60" Offset="0x62E0"/>
<DList Name="object_tr_DL_006520" Offset="0x6520"/>
<DList Name="object_tr_DL_0066A0" Offset="0x66A0"/>
<DList Name="object_tr_DL_006800" Offset="0x6800"/>
<DList Name="object_tr_DL_006940" Offset="0x6940"/>
<DList Name="object_tr_DL_006A50" Offset="0x6A50"/>
<DList Name="object_tr_DL_006B48" Offset="0x6B48"/>
<DList Name="object_tr_DL_006C58" Offset="0x6C58"/>
<DList Name="object_tr_DL_006D50" Offset="0x6D50"/>
<DList Name="object_tr_DL_006E70" Offset="0x6E70"/>
<DList Name="object_tr_DL_006FF0" Offset="0x6FF0"/>
<DList Name="object_tr_DL_007118" Offset="0x7118"/>
<DList Name="object_tr_DL_007238" Offset="0x7238"/>
<DList Name="object_tr_DL_007358" Offset="0x7358"/>
<DList Name="object_tr_DL_0074D8" Offset="0x74D8"/>
<DList Name="object_tr_DL_007600" Offset="0x7600"/>
<DList Name="object_tr_DL_007720" Offset="0x7720"/>
<DList Name="object_tr_DL_007728" Offset="0x7728"/>
<Texture Name="object_tr_TLUT_007730" OutName="tlut_00007730" Format="rgba16" Width="53" Height="4" Offset="0x7730"/>
<Texture Name="object_tr_Tex_0078D8" OutName="tex_000078D8" Format="rgba16" Width="32" Height="32" Offset="0x78D8"/>
<Texture Name="object_tr_Tex_0080D8" OutName="tex_000080D8" Format="rgba16" Width="16" Height="16" Offset="0x80D8"/>
<Texture Name="object_tr_Tex_0082D8" OutName="tex_000082D8" Format="rgba16" Width="16" Height="16" Offset="0x82D8"/>
<Texture Name="object_tr_Tex_0084D8" OutName="tex_000084D8" Format="rgba16" Width="16" Height="16" Offset="0x84D8"/>
<Texture Name="object_tr_Tex_0086D8" OutName="tex_000086D8" Format="ci8" Width="32" Height="32" Offset="0x86D8" TlutOffset="0x7730"/> <!-- eye open -->
<Texture Name="object_tr_Tex_008AD8" OutName="tex_00008AD8" Format="ci8" Width="16" Height="8" Offset="0x8AD8" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_008B58" OutName="tex_00008B58" Format="ci8" Width="8" Height="8" Offset="0x8B58" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_008B98" OutName="tex_00008B98" Format="rgba16" Width="8" Height="32" Offset="0x8B98"/>
<Texture Name="object_tr_Tex_008D98" OutName="tex_00008D98" Format="ci8" Width="8" Height="8" Offset="0x8D98" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_008DD8" OutName="tex_00008DD8" Format="ci8" Width="8" Height="16" Offset="0x8DD8" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_008E58" OutName="tex_00008E58" Format="rgba16" Width="8" Height="8" Offset="0x8E58"/>
<Texture Name="object_tr_Tex_008ED8" OutName="tex_00008ED8" Format="rgba16" Width="16" Height="32" Offset="0x8ED8"/>
<Texture Name="object_tr_Tex_0092D8" OutName="tex_000092D8" Format="rgba16" Width="16" Height="8" Offset="0x92D8"/>
<Texture Name="object_tr_Tex_0093D8" OutName="tex_000093D8" Format="rgba16" Width="8" Height="8" Offset="0x93D8"/>
<Texture Name="object_tr_Tex_009458" OutName="tex_00009458" Format="ci8" Width="8" Height="8" Offset="0x9458" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_009498" OutName="tex_00009498" Format="ci8" Width="8" Height="8" Offset="0x9498" TlutOffset="0x7730"/>
<Texture Name="object_tr_Tex_0094D8" OutName="tex_000094D8" Format="ci8" Width="32" Height="32" Offset="0x94D8" TlutOffset="0x7730"/> <!-- eye half -->
<Texture Name="object_tr_Tex_0098D8" OutName="tex_000098D8" Format="ci8" Width="32" Height="32" Offset="0x98D8" TlutOffset="0x7730"/> <!-- eye closed -->
<DList Name="object_tr_DL_00AF38" Offset="0xAF38"/>
<DList Name="object_tr_DL_00B568" Offset="0xB568"/>
<DList Name="object_tr_DL_00B5C8" Offset="0xB5C8"/>
<DList Name="object_tr_DL_00B678" Offset="0xB678"/>
<DList Name="object_tr_DL_00B728" Offset="0xB728"/>
<DList Name="object_tr_DL_00B8D0" Offset="0xB8D0"/>
<DList Name="object_tr_DL_00B968" Offset="0xB968"/>
<DList Name="object_tr_DL_00BA00" Offset="0xBA00"/>
<DList Name="object_tr_DL_00BB68" Offset="0xBB68"/>
<Texture Name="object_tr_Tex_00BCD0" OutName="tex_0000BCD0" Format="rgba16" Width="8" Height="8" Offset="0xBCD0"/>
<DList Name="gKotakePelvisDL" Offset="0x6520"/>
<DList Name="gKotakeTorsoDL" Offset="0x66A0"/>
<DList Name="gKotakeNeckDL" Offset="0x6800"/>
<DList Name="gKotakeLeftBraidStartDL" Offset="0x6940"/>
<DList Name="gKotakeLeftBraidEndDL" Offset="0x6A50"/>
<DList Name="gKotakeRightBraidStartDL" Offset="0x6B48"/>
<DList Name="gKotakeRightBraidEndDL" Offset="0x6C58"/>
<DList Name="gKotakeRightSleeveStartDL" Offset="0x6D50"/>
<DList Name="gKotakeRightSleeveFrontDL" Offset="0x6E70"/>
<DList Name="gKotakeRightSleeveMidDL" Offset="0x6FF0"/>
<DList Name="gKotakeRightSleeveEndDL" Offset="0x7118"/>
<DList Name="gKotakeLeftSleeveStartDL" Offset="0x7238"/>
<DList Name="gKotakeLeftSleeveFrontDL" Offset="0x7358"/>
<DList Name="gKotakeLeftSleeveMidDL" Offset="0x74D8"/>
<DList Name="gKotakeLeftSleeveEndDL" Offset="0x7600"/>
<DList Name="gKotakeRightThighDL" Offset="0x7720"/> <!-- Renders a single triangle instead of a normal-looking limb -->
<DList Name="gKotakeLeftThighDL" Offset="0x7728"/> <!-- Renders a single triangle instead of a normal-looking limb -->
<Texture Name="gKotakeKoumeTLUT" OutName="kotake_koume_tlut" Format="rgba16" Width="53" Height="4" Offset="0x7730"/>
<Texture Name="gKotakeGerudoFabricTex" OutName="kotake_gerudo_fabric" Format="rgba16" Width="32" Height="32" Offset="0x78D8"/>
<Texture Name="gKotakeRobeTex" OutName="kotake_robe" Format="rgba16" Width="16" Height="16" Offset="0x80D8"/>
<Texture Name="gKotakeKoumeRobePatternTex" OutName="kotake_koume_robe_pattern" Format="rgba16" Width="16" Height="16" Offset="0x82D8"/>
<Texture Name="gKotakeKoumeRobeTrimTex" OutName="kotake_koume_robe_trim" Format="rgba16" Width="16" Height="16" Offset="0x84D8"/>
<Texture Name="gKotakeKoumeEyeOpenTex" OutName="kotake_koume_eye_open" Format="ci8" Width="32" Height="32" Offset="0x86D8" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeSkinTex" OutName="kotake_koume_skin" Format="ci8" Width="16" Height="8" Offset="0x8AD8" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeMouthTex" OutName="kotake_koume_mouth" Format="ci8" Width="8" Height="8" Offset="0x8B58" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeHairTex" OutName="kotake_koume_hair" Format="rgba16" Width="8" Height="32" Offset="0x8B98"/>
<Texture Name="gKotakeKoumeEarTex" OutName="kotake_koume_ear" Format="ci8" Width="8" Height="8" Offset="0x8D98" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeFingerTex" OutName="kotake_koume_finger" Format="ci8" Width="8" Height="16" Offset="0x8DD8" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeBroomHandleTex" OutName="kotake_koume_broom_handle" Format="rgba16" Width="8" Height="8" Offset="0x8E58"/>
<Texture Name="gKotakeKoumeBroomHeadTex" OutName="kotake_koume_broom_head" Format="rgba16" Width="16" Height="32" Offset="0x8ED8"/>
<Texture Name="gKotakeKoumeJewelHolderTex" OutName="kotake_koume_jewel_holder" Format="rgba16" Width="16" Height="8" Offset="0x92D8"/>
<Texture Name="gKotakeJewelTex" OutName="kotake_jewel" Format="rgba16" Width="8" Height="8" Offset="0x93D8"/>
<Texture Name="gKotakeKoumeNeckTex" OutName="kotake_koume_neck" Format="ci8" Width="8" Height="8" Offset="0x9458" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeNostrilsTex" OutName="kotake_koume_nostrils" Format="ci8" Width="8" Height="8" Offset="0x9498" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeEyeHalfTex" OutName="kotake_koume_eye_half" Format="ci8" Width="32" Height="32" Offset="0x94D8" TlutOffset="0x7730"/>
<Texture Name="gKotakeKoumeEyeClosedTex" OutName="kotake_koume_eye_closed" Format="ci8" Width="32" Height="32" Offset="0x98D8" TlutOffset="0x7730"/>
<DList Name="gKotakeHeadDL" Offset="0xAF38"/>
<DList Name="gKotakeTeethDL" Offset="0xB568"/>
<DList Name="gKotakeRightShinDL" Offset="0xB5C8"/>
<DList Name="gKotakeLeftShinDL" Offset="0xB678"/>
<DList Name="gKotakeBroomDL" Offset="0xB728"/>
<DList Name="gKotakeRightFootDL" Offset="0xB8D0"/>
<DList Name="gKotakeLeftFootDL" Offset="0xB968"/>
<DList Name="gKotakeRightHandDL" Offset="0xBA00"/>
<DList Name="gKotakeLeftHandDL" Offset="0xBB68"/>
<Texture Name="gKotakeKoumeBraidEndTex" OutName="kotake_koume_braid_end" Format="rgba16" Width="8" Height="8" Offset="0xBCD0"/>
<Blob Name="object_tr_Blob_00BD50" Size="0x580" Offset="0xBD50"/>
<Texture Name="object_tr_Tex_00C2D0" OutName="tex_0000C2D0" Format="rgba16" Width="4" Height="8" Offset="0xC2D0"/>
<Texture Name="gKotakeCollarNeckTex" OutName="kotake_collar_neck" Format="rgba16" Width="4" Height="8" Offset="0xC2D0"/>
<Blob Name="object_tr_Blob_00C310" Size="0x80" Offset="0xC310"/>
<Limb Name="object_tr_Limb_00C390" LimbType="Standard" Offset="0xC390"/>
<Limb Name="object_tr_Limb_00C39C" LimbType="Standard" Offset="0xC39C"/>
<Limb Name="object_tr_Limb_00C3A8" LimbType="Standard" Offset="0xC3A8"/>
<Limb Name="object_tr_Limb_00C3B4" LimbType="Standard" Offset="0xC3B4"/>
<Limb Name="object_tr_Limb_00C3C0" LimbType="Standard" Offset="0xC3C0"/>
<Limb Name="object_tr_Limb_00C3CC" LimbType="Standard" Offset="0xC3CC"/>
<Limb Name="object_tr_Limb_00C3D8" LimbType="Standard" Offset="0xC3D8"/>
<Limb Name="object_tr_Limb_00C3E4" LimbType="Standard" Offset="0xC3E4"/>
<Limb Name="object_tr_Limb_00C3F0" LimbType="Standard" Offset="0xC3F0"/>
<Limb Name="object_tr_Limb_00C3FC" LimbType="Standard" Offset="0xC3FC"/>
<Limb Name="object_tr_Limb_00C408" LimbType="Standard" Offset="0xC408"/>
<Limb Name="object_tr_Limb_00C414" LimbType="Standard" Offset="0xC414"/>
<Limb Name="object_tr_Limb_00C420" LimbType="Standard" Offset="0xC420"/>
<Limb Name="object_tr_Limb_00C42C" LimbType="Standard" Offset="0xC42C"/>
<Limb Name="object_tr_Limb_00C438" LimbType="Standard" Offset="0xC438"/>
<Limb Name="object_tr_Limb_00C444" LimbType="Standard" Offset="0xC444"/>
<Limb Name="object_tr_Limb_00C450" LimbType="Standard" Offset="0xC450"/>
<Limb Name="object_tr_Limb_00C45C" LimbType="Standard" Offset="0xC45C"/>
<Limb Name="object_tr_Limb_00C468" LimbType="Standard" Offset="0xC468"/>
<Limb Name="object_tr_Limb_00C474" LimbType="Standard" Offset="0xC474"/>
<Limb Name="object_tr_Limb_00C480" LimbType="Standard" Offset="0xC480"/>
<Limb Name="object_tr_Limb_00C48C" LimbType="Standard" Offset="0xC48C"/>
<Limb Name="object_tr_Limb_00C498" LimbType="Standard" Offset="0xC498"/>
<Limb Name="object_tr_Limb_00C4A4" LimbType="Standard" Offset="0xC4A4"/>
<Limb Name="object_tr_Limb_00C4B0" LimbType="Standard" Offset="0xC4B0"/>
<Limb Name="object_tr_Limb_00C4BC" LimbType="Standard" Offset="0xC4BC"/>
<Skeleton Name="object_tr_Skel_00C530" Type="Flex" LimbType="Standard" Offset="0xC530"/>
<Animation Name="object_tr_Anim_00C60C" Offset="0xC60C"/>
<Limb Name="gKotakePelvisLimb" LimbType="Standard" Offset="0xC390"/>
<Limb Name="gKotakeLeftThighLimb" LimbType="Standard" Offset="0xC39C"/>
<Limb Name="gKotakeLeftShinLimb" LimbType="Standard" Offset="0xC3A8"/>
<Limb Name="gKotakeLeftFootLimb" LimbType="Standard" Offset="0xC3B4"/>
<Limb Name="gKotakeRightThighLimb" LimbType="Standard" Offset="0xC3C0"/>
<Limb Name="gKotakeRightShinLimb" LimbType="Standard" Offset="0xC3CC"/>
<Limb Name="gKotakeRightFootLimb" LimbType="Standard" Offset="0xC3D8"/>
<Limb Name="gKotakeTorsoLimb" LimbType="Standard" Offset="0xC3E4"/>
<Limb Name="gKotakeLeftSleeveStartLimb" LimbType="Standard" Offset="0xC3F0"/>
<Limb Name="gKotakeLeftSleeveMidLimb" LimbType="Standard" Offset="0xC3FC"/>
<Limb Name="gKotakeLeftSleeveEndLimb" LimbType="Standard" Offset="0xC408"/>
<Limb Name="gKotakeLeftSleeveFrontLimb" LimbType="Standard" Offset="0xC414"/>
<Limb Name="gKotakeLeftHandLimb" LimbType="Standard" Offset="0xC420"/>
<Limb Name="gKotakeBroomLimb" LimbType="Standard" Offset="0xC42C"/>
<Limb Name="gKotakeRightSleeveStartLimb" LimbType="Standard" Offset="0xC438"/>
<Limb Name="gKotakeRightSleeveMidLimb" LimbType="Standard" Offset="0xC444"/>
<Limb Name="gKotakeRightSleeveEndLimb" LimbType="Standard" Offset="0xC450"/>
<Limb Name="gKotakeRightSleeveFrontLimb" LimbType="Standard" Offset="0xC45C"/>
<Limb Name="gKotakeRightHandLimb" LimbType="Standard" Offset="0xC468"/>
<Limb Name="gKotakeNeckLimb" LimbType="Standard" Offset="0xC474"/>
<Limb Name="gKotakeHeadLimb" LimbType="Standard" Offset="0xC480"/>
<Limb Name="gKotakeRightBraidStartLimb" LimbType="Standard" Offset="0xC48C"/>
<Limb Name="gKotakeRightBraidEndLimb" LimbType="Standard" Offset="0xC498"/>
<Limb Name="gKotakeTeethLimb" LimbType="Standard" Offset="0xC4A4"/>
<Limb Name="gKotakeLeftBraidStartLimb" LimbType="Standard" Offset="0xC4B0"/>
<Limb Name="gKotakeLeftBraidEndLimb" LimbType="Standard" Offset="0xC4BC"/>
<Skeleton Name="gKotakeSkel" Type="Flex" LimbType="Standard" Offset="0xC530"/>
<Animation Name="gKotakeKoumeTPoseAnim" Offset="0xC60C"/>
<Blob Name="object_tr_Blob_00D5E0" Size="0x60" Offset="0xD5E0"/>
<DList Name="object_tr_DL_00D820" Offset="0xD820"/>
<DList Name="object_tr_DL_00D9A0" Offset="0xD9A0"/>
<DList Name="object_tr_DL_00DB00" Offset="0xDB00"/>
<DList Name="object_tr_DL_00DC40" Offset="0xDC40"/>
<DList Name="object_tr_DL_00DD50" Offset="0xDD50"/>
<DList Name="object_tr_DL_00DE48" Offset="0xDE48"/>
<DList Name="object_tr_DL_00DF58" Offset="0xDF58"/>
<DList Name="object_tr_DL_00E050" Offset="0xE050"/>
<DList Name="object_tr_DL_00E170" Offset="0xE170"/>
<DList Name="object_tr_DL_00E2F0" Offset="0xE2F0"/>
<DList Name="object_tr_DL_00E418" Offset="0xE418"/>
<DList Name="object_tr_DL_00E538" Offset="0xE538"/>
<DList Name="object_tr_DL_00E658" Offset="0xE658"/>
<DList Name="object_tr_DL_00E7D8" Offset="0xE7D8"/>
<DList Name="object_tr_DL_00E900" Offset="0xE900"/>
<DList Name="object_tr_DL_00EA20" Offset="0xEA20"/>
<DList Name="object_tr_DL_00EA28" Offset="0xEA28"/>
<Texture Name="object_tr_Tex_00EA30" OutName="tex_0000EA30" Format="rgba16" Width="32" Height="32" Offset="0xEA30"/>
<Texture Name="object_tr_Tex_00F230" OutName="tex_0000F230" Format="rgba16" Width="16" Height="16" Offset="0xF230"/>
<Texture Name="object_tr_Tex_00F430" OutName="tex_0000F430" Format="rgba16" Width="8" Height="8" Offset="0xF430"/>
<DList Name="object_tr_DL_010710" Offset="0x10710"/>
<DList Name="object_tr_DL_010D40" Offset="0x10D40"/>
<DList Name="object_tr_DL_010DA0" Offset="0x10DA0"/>
<DList Name="object_tr_DL_010E50" Offset="0x10E50"/>
<DList Name="object_tr_DL_010F00" Offset="0x10F00"/>
<DList Name="object_tr_DL_0110A8" Offset="0x110A8"/>
<DList Name="object_tr_DL_011140" Offset="0x11140"/>
<DList Name="object_tr_DL_0111D8" Offset="0x111D8"/>
<DList Name="object_tr_DL_011340" Offset="0x11340"/>
<Texture Name="object_tr_Tex_0114A8" OutName="tex_000114A8" Format="rgba16" Width="4" Height="8" Offset="0x114A8"/>
<Limb Name="object_tr_Limb_0114E8" LimbType="Standard" Offset="0x114E8"/>
<Limb Name="object_tr_Limb_0114F4" LimbType="Standard" Offset="0x114F4"/>
<Limb Name="object_tr_Limb_011500" LimbType="Standard" Offset="0x11500"/>
<Limb Name="object_tr_Limb_01150C" LimbType="Standard" Offset="0x1150C"/>
<Limb Name="object_tr_Limb_011518" LimbType="Standard" Offset="0x11518"/>
<Limb Name="object_tr_Limb_011524" LimbType="Standard" Offset="0x11524"/>
<Limb Name="object_tr_Limb_011530" LimbType="Standard" Offset="0x11530"/>
<Limb Name="object_tr_Limb_01153C" LimbType="Standard" Offset="0x1153C"/>
<Limb Name="object_tr_Limb_011548" LimbType="Standard" Offset="0x11548"/>
<Limb Name="object_tr_Limb_011554" LimbType="Standard" Offset="0x11554"/>
<Limb Name="object_tr_Limb_011560" LimbType="Standard" Offset="0x11560"/>
<Limb Name="object_tr_Limb_01156C" LimbType="Standard" Offset="0x1156C"/>
<Limb Name="object_tr_Limb_011578" LimbType="Standard" Offset="0x11578"/>
<Limb Name="object_tr_Limb_011584" LimbType="Standard" Offset="0x11584"/>
<Limb Name="object_tr_Limb_011590" LimbType="Standard" Offset="0x11590"/>
<Limb Name="object_tr_Limb_01159C" LimbType="Standard" Offset="0x1159C"/>
<Limb Name="object_tr_Limb_0115A8" LimbType="Standard" Offset="0x115A8"/>
<Limb Name="object_tr_Limb_0115B4" LimbType="Standard" Offset="0x115B4"/>
<Limb Name="object_tr_Limb_0115C0" LimbType="Standard" Offset="0x115C0"/>
<Limb Name="object_tr_Limb_0115CC" LimbType="Standard" Offset="0x115CC"/>
<Limb Name="object_tr_Limb_0115D8" LimbType="Standard" Offset="0x115D8"/>
<Limb Name="object_tr_Limb_0115E4" LimbType="Standard" Offset="0x115E4"/>
<Limb Name="object_tr_Limb_0115F0" LimbType="Standard" Offset="0x115F0"/>
<Limb Name="object_tr_Limb_0115FC" LimbType="Standard" Offset="0x115FC"/>
<Limb Name="object_tr_Limb_011608" LimbType="Standard" Offset="0x11608"/>
<Limb Name="object_tr_Limb_011614" LimbType="Standard" Offset="0x11614"/>
<Skeleton Name="object_tr_Skel_011688" Type="Flex" LimbType="Standard" Offset="0x11688"/>
<Animation Name="object_tr_Anim_012E1C" Offset="0x12E1C"/> <!-- Casting magic -->
<DList Name="gKoumePelvisDL" Offset="0xD820"/>
<DList Name="gKoumeTorsoDL" Offset="0xD9A0"/>
<DList Name="gKoumeNeckDL" Offset="0xDB00"/>
<DList Name="gKoumeLeftBraidStartDL" Offset="0xDC40"/>
<DList Name="gKoumeLeftBraidEndDL" Offset="0xDD50"/>
<DList Name="gKoumeRightBraidStartDL" Offset="0xDE48"/>
<DList Name="gKoumeRightBraidEndDL" Offset="0xDF58"/>
<DList Name="gKoumeRightSleeveStartDL" Offset="0xE050"/>
<DList Name="gKoumeRightSleeveFrontDL" Offset="0xE170"/>
<DList Name="gKoumeRightSleeveMidDL" Offset="0xE2F0"/>
<DList Name="gKoumeRightSleeveEndDL" Offset="0xE418"/>
<DList Name="gKoumeLeftSleeveStartDL" Offset="0xE538"/>
<DList Name="gKoumeLeftSleeveFrontDL" Offset="0xE658"/>
<DList Name="gKoumeLeftSleeveMidDL" Offset="0xE7D8"/>
<DList Name="gKoumeLeftSleeveEndDL" Offset="0xE900"/>
<DList Name="gKoumeRightThighDL" Offset="0xEA20"/> <!-- Renders a single triangle instead of a normal-looking limb -->
<DList Name="gKoumeLeftThighDL" Offset="0xEA28"/> <!-- Renders a single triangle instead of a normal-looking limb -->
<Texture Name="gKoumeGerudoFabricTex" OutName="koume_gerudo_fabric" Format="rgba16" Width="32" Height="32" Offset="0xEA30"/>
<Texture Name="gKoumeRobeTex" OutName="koume_robe" Format="rgba16" Width="16" Height="16" Offset="0xF230"/>
<Texture Name="gKoumeJewelTex" OutName="koume_jewel" Format="rgba16" Width="8" Height="8" Offset="0xF430"/>
<DList Name="gKoumeHeadDL" Offset="0x10710"/>
<DList Name="gKoumeTeethDL" Offset="0x10D40"/>
<DList Name="gKoumeRightShinDL" Offset="0x10DA0"/>
<DList Name="gKoumeLeftShinDL" Offset="0x10E50"/>
<DList Name="gKoumeBroomDL" Offset="0x10F00"/>
<DList Name="gKoumeRightFootDL" Offset="0x110A8"/>
<DList Name="gKoumeLeftFootDL" Offset="0x11140"/>
<DList Name="gKoumeRightHandDL" Offset="0x111D8"/>
<DList Name="gKoumeLeftHandDL" Offset="0x11340"/>
<Texture Name="gKoumeCollarNeckTex" OutName="koume_collar_neck" Format="rgba16" Width="4" Height="8" Offset="0x114A8"/>
<Limb Name="gKoumePelvisLimb" LimbType="Standard" Offset="0x114E8"/>
<Limb Name="gKoumeLeftThighLimb" LimbType="Standard" Offset="0x114F4"/>
<Limb Name="gKoumeLeftShinLimb" LimbType="Standard" Offset="0x11500"/>
<Limb Name="gKoumeLeftFootLimb" LimbType="Standard" Offset="0x1150C"/>
<Limb Name="gKoumeRightThighLimb" LimbType="Standard" Offset="0x11518"/>
<Limb Name="gKoumeRightShinLimb" LimbType="Standard" Offset="0x11524"/>
<Limb Name="gKoumeRightFootLimb" LimbType="Standard" Offset="0x11530"/>
<Limb Name="gKoumeTorsoLimb" LimbType="Standard" Offset="0x1153C"/>
<Limb Name="gKoumeLeftSleeveStartLimb" LimbType="Standard" Offset="0x11548"/>
<Limb Name="gKoumeLeftSleeveMidLimb" LimbType="Standard" Offset="0x11554"/>
<Limb Name="gKoumeLeftSleeveEndLimb" LimbType="Standard" Offset="0x11560"/>
<Limb Name="gKoumeLeftSleeveFrontLimb" LimbType="Standard" Offset="0x1156C"/>
<Limb Name="gKoumeLeftHandLimb" LimbType="Standard" Offset="0x11578"/>
<Limb Name="gKoumeBroomLimb" LimbType="Standard" Offset="0x11584"/>
<Limb Name="gKoumeRightSleeveStartLimb" LimbType="Standard" Offset="0x11590"/>
<Limb Name="gKoumeRightSleeveMidLimb" LimbType="Standard" Offset="0x1159C"/>
<Limb Name="gKoumeRightSleeveEndLimb" LimbType="Standard" Offset="0x115A8"/>
<Limb Name="gKoumeRightSleeveFrontLimb" LimbType="Standard" Offset="0x115B4"/>
<Limb Name="gKoumeRightHandLimb" LimbType="Standard" Offset="0x115C0"/>
<Limb Name="gKoumeNeckLimb" LimbType="Standard" Offset="0x115CC"/>
<Limb Name="gKoumeHeadLimb" LimbType="Standard" Offset="0x115D8"/>
<Limb Name="gKoumeRightBraidStartLimb" LimbType="Standard" Offset="0x115E4"/>
<Limb Name="gKoumeRightBraidEndLimb" LimbType="Standard" Offset="0x115F0"/>
<Limb Name="gKoumeTeethLimb" LimbType="Standard" Offset="0x115FC"/>
<Limb Name="gKoumeLeftBraidStartLimb" LimbType="Standard" Offset="0x11608"/>
<Limb Name="gKoumeLeftBraidEndLimb" LimbType="Standard" Offset="0x11614"/>
<Skeleton Name="gKoumeSkel" Type="Flex" LimbType="Standard" Offset="0x11688"/>
<Animation Name="gKotakeKoumeCastMagicAnim" Offset="0x12E1C"/>
</File>
</Root>

View file

@ -1,144 +1,156 @@
<Root>
<File Name="object_tw" Segment="6">
<Animation Name="object_tw_Anim_0004A4" Offset="0x4A4"/> <!-- Original name is "btT_DEMOwait" -->
<Animation Name="object_tw_Anim_000AAC" Offset="0xAAC"/> <!-- Original name is "btT_DEMOwait_to_fly" -->
<Animation Name="object_tw_Anim_0012A4" Offset="0x12A4"/> <!-- Original name is "btT_EDikari" ("anger; rage; fury") -->
<Animation Name="object_tw_Anim_0017E0" Offset="0x17E0"/> <!-- Original name is "btT_EDmiage" ("to look up at; to raise one's eyes") -->
<Animation Name="object_tw_Anim_001D10" Offset="0x1D10"/> <!-- Original name is "btT_EDwait" -->
<Animation Name="object_tw_Anim_00230C" Offset="0x230C"/> <!-- Original name is "btT_EDyaruki" ("drive; motivation; enthusiasm") -->
<Animation Name="object_tw_Anim_003614" Offset="0x3614"/> <!-- Original name is "btT_atack" -->
<Animation Name="object_tw_Anim_003E34" Offset="0x3E34"/> <!-- Original name is "btT_beeem" -->
<Animation Name="object_tw_Anim_004548" Offset="0x4548"/> <!-- Original name is "btT_beeem_to_fly" -->
<Animation Name="object_tw_Anim_00578C" Offset="0x578C"/> <!-- Original name is "btT_damage01" -->
<Animation Name="object_tw_Anim_006530" Offset="0x6530"/> <!-- Original name is "btT_damage02" -->
<Animation Name="object_tw_Anim_006F28" Offset="0x6F28"/> <!-- Original name is "btT_fly" -->
<!-- Kotake and Koume animations -->
<Animation Name="gTwinrovaKotakeKoumeIdleLoopAnim" Offset="0x4A4"/> <!-- Original name is "btT_DEMOwait" -->
<Animation Name="gTwinrovaKotakeKoumeIdleEndAnim" Offset="0xAAC"/> <!-- Original name is "btT_DEMOwait_to_fly" -->
<Animation Name="gTwinrovaKotakeKoumeBickerAnim" Offset="0x12A4"/> <!-- Original name is "btT_EDikari" ("anger; rage; fury") -->
<Animation Name="gTwinrovaKotakeKoumeFloatLookUpAnim" Offset="0x17E0"/> <!-- Original name is "btT_EDmiage" ("to look up at; to raise one's eyes") -->
<Animation Name="gTwinrovaKotakeKoumeFloatLookForwardAnim" Offset="0x1D10"/> <!-- Original name is "btT_EDwait" -->
<Animation Name="gTwinrovaKotakeKoumeShakeHandAnim" Offset="0x230C"/> <!-- Original name is "btT_EDyaruki" ("drive; motivation; enthusiasm") -->
<Animation Name="gTwinrovaKotakeKoumeAttackStartAnim" Offset="0x3614"/> <!-- Original name is "btT_atack" -->
<Animation Name="gTwinrovaKotakeKoumeAttackLoopAnim" Offset="0x3E34"/> <!-- Original name is "btT_beeem" -->
<Animation Name="gTwinrovaKotakeKoumeAttackEndAnim" Offset="0x4548"/> <!-- Original name is "btT_beeem_to_fly" -->
<Animation Name="gTwinrovaKotakeKoumeDamageStartAnim" Offset="0x578C"/> <!-- Original name is "btT_damage01" -->
<Animation Name="gTwinrovaKotakeKoumeDamageEndAnim" Offset="0x6530"/> <!-- Original name is "btT_damage02" -->
<Animation Name="gTwinrovaKotakeKoumeFlyAnim" Offset="0x6F28"/> <!-- Original name is "btT_fly" -->
<Limb Name="object_tw_Limb_006F40" LimbType="Standard" Offset="0x6F40"/>
<Limb Name="object_tw_Limb_006F4C" LimbType="Standard" Offset="0x6F4C"/>
<Limb Name="object_tw_Limb_006F58" LimbType="Standard" Offset="0x6F58"/>
<Limb Name="object_tw_Limb_006F64" LimbType="Standard" Offset="0x6F64"/>
<Limb Name="object_tw_Limb_006F70" LimbType="Standard" Offset="0x6F70"/>
<Limb Name="object_tw_Limb_006F7C" LimbType="Standard" Offset="0x6F7C"/>
<Limb Name="object_tw_Limb_006F88" LimbType="Standard" Offset="0x6F88"/>
<Limb Name="object_tw_Limb_006F94" LimbType="Standard" Offset="0x6F94"/>
<Limb Name="object_tw_Limb_006FA0" LimbType="Standard" Offset="0x6FA0"/>
<Limb Name="object_tw_Limb_006FAC" LimbType="Standard" Offset="0x6FAC"/>
<Limb Name="object_tw_Limb_006FB8" LimbType="Standard" Offset="0x6FB8"/>
<Limb Name="object_tw_Limb_006FC4" LimbType="Standard" Offset="0x6FC4"/>
<Limb Name="object_tw_Limb_006FD0" LimbType="Standard" Offset="0x6FD0"/>
<Limb Name="object_tw_Limb_006FDC" LimbType="Standard" Offset="0x6FDC"/>
<Limb Name="object_tw_Limb_006FE8" LimbType="Standard" Offset="0x6FE8"/>
<Limb Name="object_tw_Limb_006FF4" LimbType="Standard" Offset="0x6FF4"/>
<Limb Name="object_tw_Limb_007000" LimbType="Standard" Offset="0x7000"/>
<Limb Name="object_tw_Limb_00700C" LimbType="Standard" Offset="0x700C"/>
<Limb Name="object_tw_Limb_007018" LimbType="Standard" Offset="0x7018"/>
<Limb Name="object_tw_Limb_007024" LimbType="Standard" Offset="0x7024"/>
<Limb Name="object_tw_Limb_007030" LimbType="Standard" Offset="0x7030"/>
<Limb Name="object_tw_Limb_00703C" LimbType="Standard" Offset="0x703C"/>
<Limb Name="object_tw_Limb_007048" LimbType="Standard" Offset="0x7048"/>
<Limb Name="object_tw_Limb_007054" LimbType="Standard" Offset="0x7054"/>
<Limb Name="object_tw_Limb_007060" LimbType="Standard" Offset="0x7060"/>
<Limb Name="object_tw_Limb_00706C" LimbType="Standard" Offset="0x706C"/>
<!-- Kotake skeleton -->
<Limb Name="gTwinrovaKotakePelvisLimb" LimbType="Standard" Offset="0x6F40"/>
<Limb Name="gTwinrovaKotakeLeftThighLimb" LimbType="Standard" Offset="0x6F4C"/>
<Limb Name="gTwinrovaKotakeLeftShinLimb" LimbType="Standard" Offset="0x6F58"/>
<Limb Name="gTwinrovaKotakeLeftFootLimb" LimbType="Standard" Offset="0x6F64"/>
<Limb Name="gTwinrovaKotakeRightThighLimb" LimbType="Standard" Offset="0x6F70"/>
<Limb Name="gTwinrovaKotakeRightShinLimb" LimbType="Standard" Offset="0x6F7C"/>
<Limb Name="gTwinrovaKotakeRightFootLimb" LimbType="Standard" Offset="0x6F88"/>
<Limb Name="gTwinrovaKotakeTorsoLimb" LimbType="Standard" Offset="0x6F94"/>
<Limb Name="gTwinrovaKotakeLeftSleeveStartLimb" LimbType="Standard" Offset="0x6FA0"/>
<Limb Name="gTwinrovaKotakeLeftSleeveMidLimb" LimbType="Standard" Offset="0x6FAC"/>
<Limb Name="gTwinrovaKotakeLeftSleeveEndLimb" LimbType="Standard" Offset="0x6FB8"/>
<Limb Name="gTwinrovaKotakeLeftSleeveFrontLimb" LimbType="Standard" Offset="0x6FC4"/>
<Limb Name="gTwinrovaKotakeLeftHandLimb" LimbType="Standard" Offset="0x6FD0"/>
<Limb Name="gTwinrovaKotakeBroomLimb" LimbType="Standard" Offset="0x6FDC"/>
<Limb Name="gTwinrovaKotakeRightSleeveStartLimb" LimbType="Standard" Offset="0x6FE8"/>
<Limb Name="gTwinrovaKotakeRightSleeveMidLimb" LimbType="Standard" Offset="0x6FF4"/>
<Limb Name="gTwinrovaKotakeRightSleeveEndLimb" LimbType="Standard" Offset="0x7000"/>
<Limb Name="gTwinrovaKotakeRightSleeveFrontLimb" LimbType="Standard" Offset="0x700C"/>
<Limb Name="gTwinrovaKotakeRightHandLimb" LimbType="Standard" Offset="0x7018"/>
<Limb Name="gTwinrovaKotakeNeckLimb" LimbType="Standard" Offset="0x7024"/>
<Limb Name="gTwinrovaKotakeHeadLimb" LimbType="Standard" Offset="0x7030"/>
<Limb Name="gTwinrovaKotakeRightBraidStartLimb" LimbType="Standard" Offset="0x703C"/>
<Limb Name="gTwinrovaKotakeRightBraidEndLimb" LimbType="Standard" Offset="0x7048"/>
<Limb Name="gTwinrovaKotakeTeethLimb" LimbType="Standard" Offset="0x7054"/>
<Limb Name="gTwinrovaKotakeLeftBraidStartLimb" LimbType="Standard" Offset="0x7060"/>
<Limb Name="gTwinrovaKotakeLeftBraidEndLimb" LimbType="Standard" Offset="0x706C"/>
<Skeleton Name="gTwinrovaKotakeSkel" Type="Flex" LimbType="Standard" Offset="0x70E0"/>
<Skeleton Name="object_tw_Skel_0070E0" Type="Flex" LimbType="Standard" Offset="0x70E0"/>
<!-- Kotake and Koume animations -->
<Animation Name="gTwinrovaKotakeKoumeChargeUpAttackStartAnim" Offset="0x7688"/> <!-- Original name is "btT_fly_to_tame" -->
<Animation Name="gTwinrovaKotakeKoumeSpinAnim" Offset="0x7CA8"/> <!-- Original name is "btT_guard" -->
<Animation Name="gTwinrovaKotakeKoumeLaughAnim" Offset="0x88C8"/> <!-- Original name is "btT_hihihi" -->
<Animation Name="gTwinrovaKotakeKoumeChargeUpAttackLoopAnim" Offset="0x9398"/> <!-- Original name is "btT_tame" ("to amass; to accumulate") -->
<Animation Name="gTwinrovaKotakeKoumeTPoseAnim" Offset="0x947C"/>
<Animation Name="object_tw_Anim_007688" Offset="0x7688"/> <!-- Original name is "btT_fly_to_tame" -->
<Animation Name="object_tw_Anim_007CA8" Offset="0x7CA8"/> <!-- Original name is "btT_guard" -->
<Animation Name="object_tw_Anim_0088C8" Offset="0x88C8"/> <!-- Original name is "btT_hihihi" -->
<Animation Name="object_tw_Anim_009398" Offset="0x9398"/> <!-- Original name is "btT_tame" ("to amass; to accumulate") -->
<Animation Name="object_tw_Anim_00947C" Offset="0x947C"/>
<Texture Name="object_tw_TLUT_009490" OutName="tlut_009490" Format="rgba16" Width="53" Height="4" Offset="0x9490"/>
<!-- Kotake and Koume textures -->
<Texture Name="gTwinrovaKoumeKotakeTLUT" OutName="twinrova_koume_kotake_tlut" Format="rgba16" Width="53" Height="4" Offset="0x9490"/>
<Texture Name="gTwinrovaKotakeGerudoFabricTex" OutName="twinrova_kotake_gerudo_fabric" Format="rgba16" Width="32" Height="32" Offset="0x9638"/>
<Texture Name="gTwinrovaKotakeRobeTex" OutName="twinrova_kotake_robe" Format="rgba16" Width="16" Height="16" Offset="0x9E38"/>
<Texture Name="gTwinrovaRobePatternTex" OutName="twinrova_robe_pattern" Format="rgba16" Width="16" Height="16" Offset="0xA038"/>
<Texture Name="gTwinrovaRobeTrimTex" OutName="twinrova_robe_trim" Format="rgba16" Width="16" Height="16" Offset="0xA238"/>
<Texture Name="object_tw_Tex_00A438" OutName="tex_00A438" Format="ci8" Width="32" Height="32" Offset="0xA438" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00A838" OutName="tex_00A838" Format="ci8" Width="16" Height="8" Offset="0xA838" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00A8B8" OutName="tex_00A8B8" Format="ci8" Width="8" Height="8" Offset="0xA8B8" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeEyeOpenTex" OutName="twinrova_kotake_koume_eye_open" Format="ci8" Width="32" Height="32" Offset="0xA438" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeSkinTex" OutName="twinrova_kotake_koume_skin" Format="ci8" Width="16" Height="8" Offset="0xA838" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeMouthTex" OutName="twinrova_kotake_koume_mouth" Format="ci8" Width="8" Height="8" Offset="0xA8B8" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaHairTex" OutName="twinrova_hair" Format="rgba16" Width="8" Height="32" Offset="0xA8F8"/>
<Texture Name="object_tw_Tex_00AAF8" OutName="tex_00AAF8" Format="ci8" Width="8" Height="8" Offset="0xAAF8" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00AB38" OutName="tex_00AB38" Format="ci8" Width="8" Height="16" Offset="0xAB38" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeEarTex" OutName="twinrova_kotake_koume_ear" Format="ci8" Width="8" Height="8" Offset="0xAAF8" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeFingerTex" OutName="twinrova_kotake_koume_finger" Format="ci8" Width="8" Height="16" Offset="0xAB38" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaBroomHandleTex" OutName="twinrova_broom_handle" Format="rgba16" Width="8" Height="8" Offset="0xABB8"/>
<Texture Name="gTwinrovaBroomHeadTex" OutName="twinrova_broom_head" Format="rgba16" Width="16" Height="32" Offset="0xAC38"/>
<Texture Name="object_tw_Tex_00B038" OutName="tex_00B038" Format="rgba16" Width="16" Height="8" Offset="0xB038"/>
<Texture Name="gTwinrovaKotakeKoumeJewelHolderTex" OutName="twinrova_koume_kotake_jewel_holder" Format="rgba16" Width="16" Height="8" Offset="0xB038"/>
<Texture Name="gTwinrovaKotakeJewelTex" OutName="twinrova_kotake_jewel" Format="rgba16" Width="8" Height="8" Offset="0xB138"/>
<Texture Name="object_tw_Tex_00B1B8" OutName="tex_00B1B8" Format="ci8" Width="8" Height="8" Offset="0xB1B8" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00B1F8" OutName="tex_00B1F8" Format="ci8" Width="8" Height="8" Offset="0xB1F8" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00B238" OutName="tex_00B238" Format="ci8" Width="32" Height="32" Offset="0xB238" TlutOffset="0x9490"/>
<Texture Name="object_tw_Tex_00B638" OutName="tex_00B638" Format="ci8" Width="32" Height="32" Offset="0xB638" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeNeckTex" OutName="twinrova_koume_kotake_neck" Format="ci8" Width="8" Height="8" Offset="0xB1B8" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeNostrilsTex" OutName="twinrova_koume_kotake_nostrils" Format="ci8" Width="8" Height="8" Offset="0xB1F8" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeEyeHalfTex" OutName="twinrova_koume_kotake_eye_half" Format="ci8" Width="32" Height="32" Offset="0xB238" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaKotakeKoumeEyeClosedTex" OutName="twinrova_koume_kotake_eye_closed" Format="ci8" Width="32" Height="32" Offset="0xB638" TlutOffset="0x9490"/>
<Texture Name="gTwinrovaEffectTex" OutName="twinrova_effect" Format="i8" Width="32" Height="32" Offset="0xBA38"/>
<Texture Name="gTwinrovaEffectMaskTex" OutName="twinrova_effect_mask" Format="i4" Width="32" Height="64" Offset="0xBE38"/>
<Texture Name="gTwinrovaKoumeGerudoFabricTex" OutName="twinrova_koume_gerudo_fabric" Format="rgba16" Width="32" Height="32" Offset="0xC238"/>
<Texture Name="gTwinrovaKoumeJewelTex" OutName="twinrova_koume_jewel" Format="rgba16" Width="8" Height="8" Offset="0xCA38"/>
<Texture Name="gTwinrovaKoumeRobeTex" OutName="twinrova_koume_robe" Format="rgba16" Width="16" Height="16" Offset="0xCAB8"/>
<DList Name="object_tw_DL_0110A8" Offset="0x110A8"/>
<DList Name="object_tw_DL_0116A0" Offset="0x116A0"/>
<DList Name="object_tw_DL_011C98" Offset="0x11C98"/>
<DList Name="object_tw_DL_011E28" Offset="0x11E28"/>
<DList Name="object_tw_DL_011FB8" Offset="0x11FB8"/>
<DList Name="object_tw_DL_012018" Offset="0x12018"/>
<DList Name="object_tw_DL_0120C8" Offset="0x120C8"/>
<DList Name="object_tw_DL_012178" Offset="0x12178"/>
<DList Name="object_tw_DL_012210" Offset="0x12210"/>
<DList Name="object_tw_DL_0122A8" Offset="0x122A8"/>
<DList Name="object_tw_DL_012410" Offset="0x12410"/>
<DList Name="object_tw_DL_012578" Offset="0x12578"/>
<DList Name="object_tw_DL_0126E0" Offset="0x126E0"/>
<DList Name="object_tw_DL_012848" Offset="0x12848"/>
<DList Name="object_tw_DL_0128E0" Offset="0x128E0"/>
<DList Name="object_tw_DL_012978" Offset="0x12978"/>
<DList Name="object_tw_DL_012A28" Offset="0x12A28"/>
<DList Name="object_tw_DL_012AD8" Offset="0x12AD8"/>
<DList Name="object_tw_DL_012B38" Offset="0x12B38"/>
<DList Name="object_tw_DL_012CE0" Offset="0x12CE0"/>
<DList Name="object_tw_DL_013310" Offset="0x13310"/>
<DList Name="object_tw_DL_0134B8" Offset="0x134B8"/>
<DList Name="object_tw_DL_013AE8" Offset="0x13AE8"/>
<DList Name="object_tw_DL_013D68" Offset="0x13D68"/>
<DList Name="object_tw_DL_013E98" Offset="0x13E98"/>
<DList Name="object_tw_DL_013F98" Offset="0x13F98"/>
<DList Name="object_tw_DL_014070" Offset="0x14070"/>
<DList Name="object_tw_DL_014158" Offset="0x14158"/>
<!--Blob Name="object_tw_Blob_015200" Size="0x60" Offset="0x15200" /-->
<DList Name="object_tw_DL_015440" Offset="0x15440"/>
<DList Name="object_tw_DL_015538" Offset="0x15538"/>
<DList Name="object_tw_DL_015648" Offset="0x15648"/>
<DList Name="object_tw_DL_015740" Offset="0x15740"/>
<DList Name="object_tw_DL_015850" Offset="0x15850"/>
<DList Name="object_tw_DL_015990" Offset="0x15990"/>
<DList Name="object_tw_DL_015B10" Offset="0x15B10"/>
<DList Name="object_tw_DL_015C30" Offset="0x15C30"/>
<DList Name="object_tw_DL_015D58" Offset="0x15D58"/>
<DList Name="object_tw_DL_015E78" Offset="0x15E78"/>
<DList Name="object_tw_DL_015FF8" Offset="0x15FF8"/>
<DList Name="object_tw_DL_016118" Offset="0x16118"/>
<DList Name="object_tw_DL_016240" Offset="0x16240"/>
<DList Name="object_tw_DL_016360" Offset="0x16360"/>
<DList Name="object_tw_DL_0164C0" Offset="0x164C0"/>
<DList Name="object_tw_DL_0164C8" Offset="0x164C8"/>
<DList Name="object_tw_DL_0164D0" Offset="0x164D0"/>
<!-- Kotake and Koume DLs -->
<DList Name="gTwinrovaKotakeHeadInvisibleHairDL" Offset="0x110A8"/>
<DList Name="gTwinrovaKoumeHeadInvisibleHairDL" Offset="0x116A0"/>
<DList Name="gTwinrovaKotakeBroomInvisibleHeadDL" Offset="0x11C98"/>
<DList Name="gTwinrovaKoumeBroomInvisibleHeadDL" Offset="0x11E28"/>
<DList Name="gTwinrovaKotakeTeethDL" Offset="0x11FB8"/>
<DList Name="gTwinrovaKotakeRightShinDL" Offset="0x12018"/>
<DList Name="gTwinrovaKotakeLeftShinDL" Offset="0x120C8"/>
<DList Name="gTwinrovaKotakeRightFootDL" Offset="0x12178"/>
<DList Name="gTwinrovaKotakeLeftFootDL" Offset="0x12210"/>
<DList Name="gTwinrovaKotakeRightHandDL" Offset="0x122A8"/>
<DList Name="gTwinrovaKotakeLeftHandDL" Offset="0x12410"/>
<DList Name="gTwinrovaKoumeRightHandDL" Offset="0x12578"/>
<DList Name="gTwinrovaKoumeLeftHandDL" Offset="0x126E0"/>
<DList Name="gTwinrovaKoumeLeftFootDL" Offset="0x12848"/>
<DList Name="gTwinrovaKoumeRightFootDL" Offset="0x128E0"/>
<DList Name="gTwinrovaKoumeLeftShinDL" Offset="0x12978"/>
<DList Name="gTwinrovaKoumeRightShinDL" Offset="0x12A28"/>
<DList Name="gTwinrovaKoumeTeethDL" Offset="0x12AD8"/>
<DList Name="gTwinrovaKotakeBroomDL" Offset="0x12B38"/>
<DList Name="gTwinrovaKotakeHeadDL" Offset="0x12CE0"/>
<DList Name="gTwinrovaKoumeBroomDL" Offset="0x13310"/>
<DList Name="gTwinrovaKoumeHeadDL" Offset="0x134B8"/>
<DList Name="gTwinrovaKotakeIceHairDL" Offset="0x13AE8"/>
<DList Name="gTwinrovaKoumeFireHairDL" Offset="0x13D68"/>
<DList Name="gTwinrovaKotakeIceBroomHeadDL" Offset="0x13E98"/>
<DList Name="gTwinrovaKotakeIceBroomHeadOuterDL" Offset="0x13F98"/>
<DList Name="gTwinrovaKotakeFireBroomHeadDL" Offset="0x14070"/>
<DList Name="gTwinrovaKotakeFireBroomHeadOuterDL" Offset="0x14158"/>
<Blob Name="object_tw_Blob_015200" Size="0x60" Offset="0x15200"/>
<!-- Kotake DLs -->
<DList Name="gTwinrovaKotakeLeftBraidEndDL" Offset="0x15440"/>
<DList Name="gTwinrovaKotakeLeftBraidStartDL" Offset="0x15538"/>
<DList Name="gTwinrovaKotakeRightBraidEndDL" Offset="0x15648"/>
<DList Name="gTwinrovaKotakeRightBraidStartDL" Offset="0x15740"/>
<DList Name="gTwinrovaKotakeNeckDL" Offset="0x15850"/>
<DList Name="gTwinrovaKotakeRightSleeveFrontDL" Offset="0x15990"/>
<DList Name="gTwinrovaKotakeRightSleeveEndDL" Offset="0x15B10"/>
<DList Name="gTwinrovaKotakeRightSleeveMidDL" Offset="0x15C30"/>
<DList Name="gTwinrovaKotakeRightSleeveStartDL" Offset="0x15D58"/>
<DList Name="gTwinrovaKotakeLeftSleeveFrontDL" Offset="0x15E78"/>
<DList Name="gTwinrovaKotakeLeftSleeveEndDL" Offset="0x15FF8"/>
<DList Name="gTwinrovaKotakeLeftSleeveMidDL" Offset="0x16118"/>
<DList Name="gTwinrovaKotakeLeftSleeveStartDL" Offset="0x16240"/>
<DList Name="gTwinrovaKotakeTorsoDL" Offset="0x16360"/>
<DList Name="gTwinrovaKotakeRightThighDL" Offset="0x164C0"/>
<DList Name="gTwinrovaKotakeLeftThighDL" Offset="0x164C8"/>
<DList Name="gTwinrovaKotakePelvisDL" Offset="0x164D0"/>
<Texture Name="gTwinrovaBraidEndTex" OutName="twinrova_braid_end" Format="rgba16" Width="8" Height="8" Offset="0x16650"/>
<Texture Name="gTwinrovaLeftFootTex" OutName="twinrova_left_foot" Format="rgba16" Width="4" Height="8" Offset="0x166D0"/>
<!--Blob Name="object_tw_Blob_0176D0" Size="0x60" Offset="0x176D0" /-->
<DList Name="object_tw_DL_017910" Offset="0x17910"/>
<DList Name="object_tw_DL_017A08" Offset="0x17A08"/>
<DList Name="object_tw_DL_017B18" Offset="0x17B18"/>
<DList Name="object_tw_DL_017C10" Offset="0x17C10"/>
<DList Name="object_tw_DL_017D20" Offset="0x17D20"/>
<DList Name="object_tw_DL_017E60" Offset="0x17E60"/>
<DList Name="object_tw_DL_017FE0" Offset="0x17FE0"/>
<DList Name="object_tw_DL_018100" Offset="0x18100"/>
<DList Name="object_tw_DL_018228" Offset="0x18228"/>
<DList Name="object_tw_DL_018348" Offset="0x18348"/>
<DList Name="object_tw_DL_0184C8" Offset="0x184C8"/>
<DList Name="object_tw_DL_0185E8" Offset="0x185E8"/>
<DList Name="object_tw_DL_018710" Offset="0x18710"/>
<DList Name="object_tw_DL_018830" Offset="0x18830"/>
<DList Name="object_tw_DL_018990" Offset="0x18990"/>
<DList Name="object_tw_DL_018998" Offset="0x18998"/>
<DList Name="object_tw_DL_0189A0" Offset="0x189A0"/>
<Blob Name="object_tw_Blob_0176D0" Size="0x60" Offset="0x176D0"/>
<!-- Koume DLs -->
<DList Name="gTwinrovaKoumeLeftBraidEndDL" Offset="0x17910"/>
<DList Name="gTwinrovaKoumeLeftBraidStartDL" Offset="0x17A08"/>
<DList Name="gTwinrovaKoumeRightBraidEndDL" Offset="0x17B18"/>
<DList Name="gTwinrovaKoumeRightBraidStartDL" Offset="0x17C10"/>
<DList Name="gTwinrovaKoumeNeckDL" Offset="0x17D20"/>
<DList Name="gTwinrovaKoumeRightSleeveFrontDL" Offset="0x17E60"/>
<DList Name="gTwinrovaKoumeRightSleeveEndDL" Offset="0x17FE0"/>
<DList Name="gTwinrovaKoumeRightSleeveMidDL" Offset="0x18100"/>
<DList Name="gTwinrovaKoumeRightSleeveStartDL" Offset="0x18228"/>
<DList Name="gTwinrovaKoumeLeftSleeveFrontDL" Offset="0x18348"/>
<DList Name="gTwinrovaKoumeLeftSleeveEndDL" Offset="0x184C8"/>
<DList Name="gTwinrovaKoumeLeftSleeveMidDL" Offset="0x185E8"/>
<DList Name="gTwinrovaKoumeLeftSleeveStartDL" Offset="0x18710"/>
<DList Name="gTwinrovaKoumeTorsoDL" Offset="0x18830"/>
<DList Name="gTwinrovaKoumeRightThighDL" Offset="0x18990"/>
<DList Name="gTwinrovaKoumeLeftThighDL" Offset="0x18998"/>
<DList Name="gTwinrovaKoumePelvisDL" Offset="0x189A0"/>
<Texture Name="gTwinrovaRightFootTex" OutName="twinrova_right_foot" Format="rgba16" Width="4" Height="8" Offset="0x18B20"/>
<!-- Assets for the smoke that comes off of the big flame -->
@ -229,34 +241,35 @@
<DList Name="gTwinrovaLightCircleDL" Offset="0x1F390"/> <!-- Original name is "bt_heavensgate_modelT" -->
<DList Name="gTwinrovaHaloDL" Offset="0x1F608"/> <!-- Original name is "bt_angelring_model" -->
<Limb Name="object_tw_Limb_01F6E8" LimbType="Standard" Offset="0x1F6E8"/>
<Limb Name="object_tw_Limb_01F6F4" LimbType="Standard" Offset="0x1F6F4"/>
<Limb Name="object_tw_Limb_01F700" LimbType="Standard" Offset="0x1F700"/>
<Limb Name="object_tw_Limb_01F70C" LimbType="Standard" Offset="0x1F70C"/>
<Limb Name="object_tw_Limb_01F718" LimbType="Standard" Offset="0x1F718"/>
<Limb Name="object_tw_Limb_01F724" LimbType="Standard" Offset="0x1F724"/>
<Limb Name="object_tw_Limb_01F730" LimbType="Standard" Offset="0x1F730"/>
<Limb Name="object_tw_Limb_01F73C" LimbType="Standard" Offset="0x1F73C"/>
<Limb Name="object_tw_Limb_01F748" LimbType="Standard" Offset="0x1F748"/>
<Limb Name="object_tw_Limb_01F754" LimbType="Standard" Offset="0x1F754"/>
<Limb Name="object_tw_Limb_01F760" LimbType="Standard" Offset="0x1F760"/>
<Limb Name="object_tw_Limb_01F76C" LimbType="Standard" Offset="0x1F76C"/>
<Limb Name="object_tw_Limb_01F778" LimbType="Standard" Offset="0x1F778"/>
<Limb Name="object_tw_Limb_01F784" LimbType="Standard" Offset="0x1F784"/>
<Limb Name="object_tw_Limb_01F790" LimbType="Standard" Offset="0x1F790"/>
<Limb Name="object_tw_Limb_01F79C" LimbType="Standard" Offset="0x1F79C"/>
<Limb Name="object_tw_Limb_01F7A8" LimbType="Standard" Offset="0x1F7A8"/>
<Limb Name="object_tw_Limb_01F7B4" LimbType="Standard" Offset="0x1F7B4"/>
<Limb Name="object_tw_Limb_01F7C0" LimbType="Standard" Offset="0x1F7C0"/>
<Limb Name="object_tw_Limb_01F7CC" LimbType="Standard" Offset="0x1F7CC"/>
<Limb Name="object_tw_Limb_01F7D8" LimbType="Standard" Offset="0x1F7D8"/>
<Limb Name="object_tw_Limb_01F7E4" LimbType="Standard" Offset="0x1F7E4"/>
<Limb Name="object_tw_Limb_01F7F0" LimbType="Standard" Offset="0x1F7F0"/>
<Limb Name="object_tw_Limb_01F7FC" LimbType="Standard" Offset="0x1F7FC"/>
<Limb Name="object_tw_Limb_01F808" LimbType="Standard" Offset="0x1F808"/>
<Limb Name="object_tw_Limb_01F814" LimbType="Standard" Offset="0x1F814"/>
<Skeleton Name="object_tw_Skel_01F888" Type="Flex" LimbType="Standard" Offset="0x1F888"/>
<!-- Koume skeleton -->
<Limb Name="gTwinrovaKoumePelvisLimb" LimbType="Standard" Offset="0x1F6E8"/>
<Limb Name="gTwinrovaKoumeLeftThighLimb" LimbType="Standard" Offset="0x1F6F4"/>
<Limb Name="gTwinrovaKoumeLeftShinLimb" LimbType="Standard" Offset="0x1F700"/>
<Limb Name="gTwinrovaKoumeLeftFootLimb" LimbType="Standard" Offset="0x1F70C"/>
<Limb Name="gTwinrovaKoumeRightThighLimb" LimbType="Standard" Offset="0x1F718"/>
<Limb Name="gTwinrovaKoumeRightShinLimb" LimbType="Standard" Offset="0x1F724"/>
<Limb Name="gTwinrovaKoumeRightFootLimb" LimbType="Standard" Offset="0x1F730"/>
<Limb Name="gTwinrovaKoumeTorsoLimb" LimbType="Standard" Offset="0x1F73C"/>
<Limb Name="gTwinrovaKoumeLeftSleeveStartLimb" LimbType="Standard" Offset="0x1F748"/>
<Limb Name="gTwinrovaKoumeLeftSleeveMidLimb" LimbType="Standard" Offset="0x1F754"/>
<Limb Name="gTwinrovaKoumeLeftSleeveEndLimb" LimbType="Standard" Offset="0x1F760"/>
<Limb Name="gTwinrovaKoumeLeftSleeveFrontLimb" LimbType="Standard" Offset="0x1F76C"/>
<Limb Name="gTwinrovaKoumeLeftHandLimb" LimbType="Standard" Offset="0x1F778"/>
<Limb Name="gTwinrovaKoumeBroomLimb" LimbType="Standard" Offset="0x1F784"/>
<Limb Name="gTwinrovaKoumeRightSleeveStartLimb" LimbType="Standard" Offset="0x1F790"/>
<Limb Name="gTwinrovaKoumeRightSleeveMidLimb" LimbType="Standard" Offset="0x1F79C"/>
<Limb Name="gTwinrovaKoumeRightSleeveEndLimb" LimbType="Standard" Offset="0x1F7A8"/>
<Limb Name="gTwinrovaKoumeRightSleeveFrontLimb" LimbType="Standard" Offset="0x1F7B4"/>
<Limb Name="gTwinrovaKoumeRightHandLimb" LimbType="Standard" Offset="0x1F7C0"/>
<Limb Name="gTwinrovaKoumeNeckLimb" LimbType="Standard" Offset="0x1F7CC"/>
<Limb Name="gTwinrovaKoumeHeadLimb" LimbType="Standard" Offset="0x1F7D8"/>
<Limb Name="gTwinrovaKoumeRightBraidStartLimb" LimbType="Standard" Offset="0x1F7E4"/>
<Limb Name="gTwinrovaKoumeRightBraidEndLimb" LimbType="Standard" Offset="0x1F7F0"/>
<Limb Name="gTwinrovaKoumeTeethLimb" LimbType="Standard" Offset="0x1F7FC"/>
<Limb Name="gTwinrovaKoumeLeftBraidStartLimb" LimbType="Standard" Offset="0x1F808"/>
<Limb Name="gTwinrovaKoumeLeftBraidEndLimb" LimbType="Standard" Offset="0x1F814"/>
<Skeleton Name="gTwinrovaKoumeSkel" Type="Flex" LimbType="Standard" Offset="0x1F888"/>
<!-- Twinrova Texture -->
<Texture Name="gTwinrovaEyeHalfTex" OutName="twinrova_eye_half" Format="ci8" Width="32" Height="32" Offset="0x2A070" TlutOffset="0x29E50"/>

View file

@ -511,7 +511,7 @@ void BossTw_Init(Actor* thisx, PlayState* play2) {
if (this->actor.params == TW_KOTAKE) {
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInitKoumeKotake);
this->actor.naviEnemyId = NAVI_ENEMY_TWINROVA_KOTAKE;
SkelAnime_InitFlex(play, &this->skelAnime, &object_tw_Skel_0070E0, &object_tw_Anim_006F28, NULL, NULL, 0);
SkelAnime_InitFlex(play, &this->skelAnime, &gTwinrovaKotakeSkel, &gTwinrovaKotakeKoumeFlyAnim, NULL, NULL, 0);
if (GET_EVENTCHKINF(EVENTCHKINF_75)) {
// began twinrova battle
@ -524,12 +524,12 @@ void BossTw_Init(Actor* thisx, PlayState* play2) {
BossTw_SetupCSWait(this, play);
}
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_006F28, -3.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, -3.0f);
this->visible = true;
} else if (this->actor.params == TW_KOUME) {
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInitKoumeKotake);
this->actor.naviEnemyId = NAVI_ENEMY_TWINROVA_KOUME;
SkelAnime_InitFlex(play, &this->skelAnime, &object_tw_Skel_01F888, &object_tw_Anim_006F28, NULL, NULL, 0);
SkelAnime_InitFlex(play, &this->skelAnime, &gTwinrovaKoumeSkel, &gTwinrovaKotakeKoumeFlyAnim, NULL, NULL, 0);
if (GET_EVENTCHKINF(EVENTCHKINF_75)) {
// began twinrova battle
@ -541,7 +541,7 @@ void BossTw_Init(Actor* thisx, PlayState* play2) {
BossTw_SetupCSWait(this, play);
}
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_006F28, -3.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, -3.0f);
this->visible = true;
} else {
// Twinrova
@ -649,7 +649,7 @@ void BossTw_SetupFlyTo(BossTw* this, PlayState* play) {
this->actor.flags |= ACTOR_FLAG_0;
this->actionFunc = BossTw_FlyTo;
this->rotateSpeed = 0.0f;
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_006F28, -10.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, -10.0f);
if ((Rand_ZeroOne() < 0.5f) && (otherTw != NULL && otherTw->actionFunc == BossTw_ShootBeam)) {
// Other Sister is shooting a beam, go near them.
this->targetPos.x = otherTw->actor.world.pos.x + Rand_CenteredFloat(200.0f);
@ -710,8 +710,8 @@ void BossTw_SetupShootBeam(BossTw* this, PlayState* play) {
Player* player = GET_PLAYER(play);
this->actionFunc = BossTw_ShootBeam;
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_007688, -5.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_007688);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeChargeUpAttackStartAnim, -5.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeChargeUpAttackStartAnim);
this->timers[1] = 70;
this->targetPos = player->actor.world.pos;
this->csState1 = 0;
@ -1051,13 +1051,13 @@ void BossTw_ShootBeam(BossTw* this, PlayState* play) {
}
if (Animation_OnFrame(&this->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_009398, 0.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeChargeUpAttackLoopAnim, 0.0f);
this->workf[ANIM_SW_TGT] = 10000.0f;
}
if (this->timers[1] == 1) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_003614, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_003614);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeAttackStartAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeAttackStartAnim);
this->unk_4DC = 0.0f;
this->spawnPortalAlpha = 0.0f;
this->flameAlpha = 0.0f;
@ -1065,7 +1065,7 @@ void BossTw_ShootBeam(BossTw* this, PlayState* play) {
}
} else {
if (Animation_OnFrame(&this->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_003E34, 0.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeAttackLoopAnim, 0.0f);
this->workf[ANIM_SW_TGT] = 10000.0f;
}
@ -1319,8 +1319,8 @@ void BossTw_ShootBeam(BossTw* this, PlayState* play) {
void BossTw_SetupFinishBeamShoot(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_FinishBeamShoot;
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_004548, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_004548);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeAttackEndAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeAttackEndAnim);
}
void BossTw_FinishBeamShoot(BossTw* this, PlayState* play) {
@ -1340,7 +1340,7 @@ void BossTw_FinishBeamShoot(BossTw* this, PlayState* play) {
void BossTw_SetupHitByBeam(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_HitByBeam;
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_00578C, 0.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeDamageStartAnim, 0.0f);
this->timers[0] = 53;
this->actor.speedXZ = 0.0f;
@ -1394,8 +1394,8 @@ void BossTw_HitByBeam(BossTw* this, PlayState* play) {
}
if (this->timers[0] == 1) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_006530, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_006530);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeDamageEndAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeDamageEndAnim);
}
if ((this->timers[0] == 0) && Animation_OnFrame(&this->skelAnime, this->workf[ANIM_SW_TGT])) {
@ -1405,8 +1405,8 @@ void BossTw_HitByBeam(BossTw* this, PlayState* play) {
void BossTw_SetupLaugh(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_Laugh;
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_0088C8, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_0088C8);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeLaughAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeLaughAnim);
this->actor.speedXZ = 0.0f;
}
@ -1428,8 +1428,8 @@ void BossTw_Laugh(BossTw* this, PlayState* play) {
void BossTw_SetupSpin(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_Spin;
Animation_MorphToPlayOnce(&this->skelAnime, &object_tw_Anim_007CA8, -3.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_007CA8);
Animation_MorphToPlayOnce(&this->skelAnime, &gTwinrovaKotakeKoumeSpinAnim, -3.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeSpinAnim);
this->actor.speedXZ = 0.0f;
SkelAnime_Update(&this->skelAnime);
this->timers[0] = 20;
@ -1457,7 +1457,7 @@ void BossTw_SetupMergeCS(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_MergeCS;
this->rotateSpeed = 0.0f;
this->actor.speedXZ = 0.0f;
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_006F28, -10.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, -10.0f);
}
void BossTw_MergeCS(BossTw* this, PlayState* play) {
@ -1726,7 +1726,7 @@ void BossTw_TwinrovaMergeCS(BossTw* this, PlayState* play) {
void BossTw_SetupDeathCS(BossTw* this, PlayState* play) {
this->actionFunc = BossTw_DeathCS;
Animation_MorphToLoop(&this->skelAnime, &object_tw_Anim_0004A4, -3.0f);
Animation_MorphToLoop(&this->skelAnime, &gTwinrovaKotakeKoumeIdleLoopAnim, -3.0f);
this->unk_5F8 = 0;
this->work[CS_TIMER_2] = Rand_ZeroFloat(20.0f);
}
@ -1852,7 +1852,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
if (this->work[CS_TIMER_1] >= 236) {
this->csState2 = 2;
sKoumePtr->visible = 1;
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_0004A4, 0.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeIdleLoopAnim, 0.0f);
sKoumePtr->actor.world.pos.x = 0.0f;
sKoumePtr->actor.world.pos.y = 80.0f;
sKoumePtr->actor.world.pos.z = 600.0f;
@ -1932,8 +1932,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
this->subCamAtVel.z = fabsf(this->subCamAtNext.z - this->subCamAt.z);
this->subCamUpdateRate = 0.0f;
this->subCamDistStep = 0.05f;
Animation_MorphToPlayOnce(&sKoumePtr->skelAnime, &object_tw_Anim_000AAC, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_000AAC);
Animation_MorphToPlayOnce(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeIdleEndAnim, 0.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeIdleEndAnim);
this->work[CS_TIMER_1] = 0;
}
break;
@ -1980,8 +1980,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
1.0f, 0.005f);
} else {
if (this->work[CS_TIMER_1] == 50) {
Animation_MorphToPlayOnce(&sKoumePtr->skelAnime, &object_tw_Anim_0088C8, -5);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_0088C8);
Animation_MorphToPlayOnce(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeLaughAnim, -5);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeLaughAnim);
}
if (this->work[CS_TIMER_1] == 60) {
@ -1989,7 +1989,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
}
if (Animation_OnFrame(&sKoumePtr->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_006F28, 0.f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, 0.f);
this->workf[ANIM_SW_TGT] = 1000.0f;
}
@ -2005,7 +2005,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
this->work[CS_TIMER_1] = 0;
this->subCamYawStep = 0.0f;
sKotakePtr->visible = 1;
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_0004A4, 0.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeIdleLoopAnim, 0.0f);
sKotakePtr->actor.world.pos.x = 0.0f;
sKotakePtr->actor.world.pos.y = 80.0f;
sKotakePtr->actor.world.pos.z = -600.0f;
@ -2033,7 +2033,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
Math_ApproachF(&this->subCamYawStep, 12288.0f, 1.0f, 384.0f);
if (Animation_OnFrame(&sKoumePtr->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_006F28, 0.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, 0.0f);
this->workf[ANIM_SW_TGT] = 1000.0f;
}
}
@ -2095,8 +2095,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
this->subCamAtVel.z = fabsf(this->subCamAtNext.z - this->subCamAt.z);
this->subCamUpdateRate = 0;
this->subCamDistStep = 0.05f;
Animation_MorphToPlayOnce(&sKotakePtr->skelAnime, &object_tw_Anim_000AAC, 0);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_000AAC);
Animation_MorphToPlayOnce(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeIdleEndAnim, 0);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeIdleEndAnim);
this->work[CS_TIMER_1] = 0;
}
break;
@ -2141,8 +2141,8 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
1.0f, 0.005f);
} else {
if (this->work[CS_TIMER_1] == 50) {
Animation_MorphToPlayOnce(&sKotakePtr->skelAnime, &object_tw_Anim_0088C8, -5.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&object_tw_Anim_0088C8);
Animation_MorphToPlayOnce(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeLaughAnim, -5.0f);
this->workf[ANIM_SW_TGT] = Animation_GetLastFrame(&gTwinrovaKotakeKoumeLaughAnim);
}
if (this->work[CS_TIMER_1] == 60) {
@ -2150,7 +2150,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
}
if (Animation_OnFrame(&sKotakePtr->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_006F28, 0.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, 0.0f);
this->workf[ANIM_SW_TGT] = 1000.0f;
}
@ -2193,7 +2193,7 @@ void BossTw_TwinrovaIntroCS(BossTw* this, PlayState* play) {
Math_ApproachF(&this->subCamYawStep, 12288.0f, 1.0f, 384.0f);
if (Animation_OnFrame(&sKotakePtr->skelAnime, this->workf[ANIM_SW_TGT])) {
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_006F28, 0.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeFlyAnim, 0.0f);
this->workf[ANIM_SW_TGT] = 1000.0f;
}
}
@ -2544,31 +2544,31 @@ void BossTw_DeathCSMsgSfx(BossTw* this, PlayState* play) {
switch (kotakeAnim) {
case 1:
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_00230C, -5.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeShakeHandAnim, -5.0f);
break;
case 2:
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_001D10, -5.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeFloatLookForwardAnim, -5.0f);
break;
case 3:
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_0017E0, -5.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeFloatLookUpAnim, -5.0f);
break;
case 4:
Animation_MorphToLoop(&sKotakePtr->skelAnime, &object_tw_Anim_0012A4, -5.0f);
Animation_MorphToLoop(&sKotakePtr->skelAnime, &gTwinrovaKotakeKoumeBickerAnim, -5.0f);
break;
}
switch (koumeAnim) {
case 1:
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_00230C, -5.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeShakeHandAnim, -5.0f);
break;
case 2:
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_001D10, -5.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeFloatLookForwardAnim, -5.0f);
break;
case 3:
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_0017E0, -5.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeFloatLookUpAnim, -5.0f);
break;
case 4:
Animation_MorphToLoop(&sKoumePtr->skelAnime, &object_tw_Anim_0012A4, -5.0f);
Animation_MorphToLoop(&sKoumePtr->skelAnime, &gTwinrovaKotakeKoumeBickerAnim, -5.0f);
break;
}
@ -3178,24 +3178,24 @@ void BossTw_TwinrovaUpdate(Actor* thisx, PlayState* play2) {
s32 BossTw_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
BossTw* this = (BossTw*)thisx;
if (limbIndex == 21) {
if (limbIndex == TWINROVA_KOTAKE_KOUME_LIMB_HEAD) {
if (this->unk_5F8 == 0) {
if (this->actor.params == TW_KOTAKE) {
*dList = object_tw_DL_012CE0;
*dList = gTwinrovaKotakeHeadDL;
} else {
*dList = object_tw_DL_0134B8;
*dList = gTwinrovaKoumeHeadDL;
}
}
}
if (limbIndex == 14) {
if (limbIndex == TWINROVA_KOTAKE_KOUME_LIMB_BROOM) {
if (this->actionFunc == BossTw_DeathCS) {
*dList = NULL;
} else if (this->scepterAlpha == 0.0f) {
if (this->actor.params == TW_KOTAKE) {
*dList = object_tw_DL_012B38;
*dList = gTwinrovaKotakeBroomDL;
} else {
*dList = object_tw_DL_013310;
*dList = gTwinrovaKoumeBroomDL;
}
}
}
@ -3215,7 +3215,7 @@ void BossTw_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
OPEN_DISPS(play->state.gfxCtx, "../z_boss_tw.c", 6168);
switch (limbIndex) {
case 21:
case TWINROVA_KOTAKE_KOUME_LIMB_HEAD:
Matrix_MultVec3f(&D_8094A944, &this->actor.focus.pos);
Matrix_MultVec3f(&D_8094A950, &this->crownPos);
@ -3223,13 +3223,14 @@ void BossTw_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, "../z_boss_tw.c", 6190),
G_MTX_LOAD | G_MTX_MODELVIEW | G_MTX_NOPUSH);
if (this->actor.params == TW_KOTAKE) {
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_013AE8));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKotakeIceHairDL));
} else {
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_013D68));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKoumeFireHairDL));
}
}
break;
case 14:
case TWINROVA_KOTAKE_KOUME_LIMB_BROOM:
Matrix_MultVec3f(&D_8094A95C[0], &this->scepterFlamePos[0]);
Matrix_MultVec3f(&D_8094A95C[1], &this->scepterFlamePos[1]);
Matrix_MultVec3f(&D_8094A95C[2], &this->scepterFlamePos[2]);
@ -3241,14 +3242,14 @@ void BossTw_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
G_MTX_LOAD | G_MTX_MODELVIEW | G_MTX_NOPUSH);
if (this->actor.params == TW_KOTAKE) {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 225, 255, (s16)this->scepterAlpha);
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_013E98));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKotakeIceBroomHeadDL));
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 195, 225, 235, (s16)this->scepterAlpha);
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_013F98));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKotakeIceBroomHeadOuterDL));
} else {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 100, 20, 0, (s16)this->scepterAlpha);
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_014070));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKotakeFireBroomHeadDL));
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 70, 0, (s16)this->scepterAlpha);
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(object_tw_DL_014158));
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gTwinrovaKotakeFireBroomHeadOuterDL));
}
}
break;
@ -3478,9 +3479,9 @@ void func_80943028(Actor* thisx, PlayState* play) {
}
static void* sEyeTextures[] = {
object_tw_Tex_00A438,
object_tw_Tex_00B238,
object_tw_Tex_00B638,
gTwinrovaKotakeKoumeEyeOpenTex,
gTwinrovaKotakeKoumeEyeHalfTex,
gTwinrovaKotakeKoumeEyeClosedTex,
};
void BossTw_Draw(Actor* thisx, PlayState* play2) {

View file

@ -55,6 +55,37 @@ typedef enum {
/* 26 */ FWORK_MAX
} TwFwork;
typedef enum {
/* 0 */ TWINROVA_KOTAKE_KOUME_LIMB_NONE,
/* 1 */ TWINROVA_KOTAKE_KOUME_LIMB_PELVIS,
/* 2 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_THIGH,
/* 3 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_SHIN,
/* 4 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_FOOT,
/* 5 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGH_THIGH,
/* 6 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_SHIN,
/* 7 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_FOOT,
/* 8 */ TWINROVA_KOTAKE_KOUME_LIMB_TORSO_LIMB,
/* 9 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_SLEEVE_START,
/* 10 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_SLEEVE_MID,
/* 11 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_SLEEVE_END,
/* 12 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_SLEEVE_FRONT,
/* 13 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_HAND,
/* 14 */ TWINROVA_KOTAKE_KOUME_LIMB_BROOM,
/* 15 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_START,
/* 16 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_MID,
/* 17 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_END,
/* 18 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_FRONT,
/* 19 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_HAND,
/* 20 */ TWINROVA_KOTAKE_KOUME_LIMB_NECK,
/* 21 */ TWINROVA_KOTAKE_KOUME_LIMB_HEAD,
/* 22 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_HAIR_PIECE_START,
/* 23 */ TWINROVA_KOTAKE_KOUME_LIMB_RIGHT_HAIR_PIECE_END,
/* 24 */ TWINROVA_KOTAKE_KOUME_LIMB_TEETH,
/* 25 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_HAIR_PIECE_START,
/* 26 */ TWINROVA_KOTAKE_KOUME_LIMB_LEFT_HAIR_PIECE_END,
/* 27 */ TWINROVA_KOTAKE_KOUME_LIMB_MAX
} TwinrovaKotakeKoumeLimb;
typedef enum {
/* 0 */ TWINROVA_LIMB_NONE,
/* 1 */ TWINROVA_LIMB_PELVIS,

View file

@ -38,28 +38,28 @@ ActorInit En_Tr_InitVars = {
// The first elements of these animation arrays are for Koume, the second for Kotake
static AnimationHeader* unused[] = {
&object_tr_Anim_003FC8,
&object_tr_Anim_001CDC,
&gKotakeKoumeStandingBroomOverRightShoulderAnim,
&gKotakeKoumeStandingBroomOverLeftShoulderAnim,
};
static AnimationHeader* D_80B24368[] = {
&object_tr_Anim_002BC4,
&object_tr_Anim_000BFC,
&gKotakeKoumeLookOverLeftShoulderAnim,
&gKotakeKoumeLookOverRightShoulderAnim,
};
static AnimationHeader* D_80B24370[] = {
&object_tr_Anim_0035CC,
&object_tr_Anim_0013CC,
&gKotakeKoumeLookingOverLeftShoulderAnim,
&gKotakeKoumeLookingOverRightShoulderAnim,
};
static AnimationHeader* D_80B24378[] = {
&object_tr_Anim_0049C8,
&object_tr_Anim_0049C8,
&gKotakeKoumeFlyAnim,
&gKotakeKoumeFlyAnim,
};
static AnimationHeader* D_80B24380[] = {
&object_tr_Anim_012E1C,
&object_tr_Anim_012E1C,
&gKotakeKoumeCastMagicAnim,
&gKotakeKoumeCastMagicAnim,
};
static f32 D_80B24388[] = { 0.0f, 20.0f, -30.0f, 20.0f, -20.0f, -20.0f, 30.0f };
@ -75,9 +75,9 @@ static Color_RGBA8 D_80B243C0[4] = {
};
static void* sEyeTextures[] = {
object_tr_Tex_0086D8,
object_tr_Tex_0094D8,
object_tr_Tex_0098D8,
gKotakeKoumeEyeOpenTex,
gKotakeKoumeEyeHalfTex,
gKotakeKoumeEyeClosedTex,
};
void EnTr_SetupAction(EnTr* this, EnTrActionFunc actionFunc) {
@ -95,18 +95,18 @@ void EnTr_Init(Actor* thisx, PlayState* play) {
switch (this->actor.params) {
case TR_KOUME:
SkelAnime_InitFlex(play, &this->skelAnime, &object_tr_Skel_011688, &object_tr_Anim_003FC8, this->jointTable,
this->morphTable, 27);
Animation_PlayOnce(&this->skelAnime, &object_tr_Anim_003FC8);
SkelAnime_InitFlex(play, &this->skelAnime, &gKoumeSkel, &gKotakeKoumeStandingBroomOverRightShoulderAnim,
this->jointTable, this->morphTable, KOTAKE_KOUME_LIMB_MAX);
Animation_PlayOnce(&this->skelAnime, &gKotakeKoumeStandingBroomOverRightShoulderAnim);
this->animation = NULL;
EnTr_SetupAction(this, EnTr_ChooseAction1);
this->actionIndex = 3;
break;
case TR_KOTAKE:
SkelAnime_InitFlex(play, &this->skelAnime, &object_tr_Skel_00C530, &object_tr_Anim_001CDC, this->jointTable,
this->morphTable, 27);
Animation_PlayOnce(&this->skelAnime, &object_tr_Anim_001CDC);
SkelAnime_InitFlex(play, &this->skelAnime, &gKotakeSkel, &gKotakeKoumeStandingBroomOverLeftShoulderAnim,
this->jointTable, this->morphTable, KOTAKE_KOUME_LIMB_MAX);
Animation_PlayOnce(&this->skelAnime, &gKotakeKoumeStandingBroomOverLeftShoulderAnim);
this->animation = NULL;
EnTr_SetupAction(this, EnTr_ChooseAction1);
this->actionIndex = 2;
@ -301,7 +301,7 @@ void EnTr_WaitToReappear(EnTr* this, PlayState* play) {
this->timer = 34;
EnTr_SetStartPosRot(this, play, this->actionIndex);
EnTr_SetupAction(this, EnTr_Reappear);
Animation_PlayLoop(&this->skelAnime, &object_tr_Anim_0049C8);
Animation_PlayLoop(&this->skelAnime, &gKotakeKoumeFlyAnim);
this->animation = NULL;
Actor_SetScale(&this->actor, 0.003f);
}
@ -350,7 +350,7 @@ void EnTr_ChooseAction1(EnTr* this, PlayState* play) {
case 3:
EnTr_SetStartPosRot(this, play, this->actionIndex);
EnTr_SetupAction(this, EnTr_ChooseAction2);
Animation_PlayLoop(&this->skelAnime, &object_tr_Anim_0049C8);
Animation_PlayLoop(&this->skelAnime, &gKotakeKoumeFlyAnim);
this->animation = NULL;
break;
@ -361,7 +361,7 @@ void EnTr_ChooseAction1(EnTr* this, PlayState* play) {
case 7:
EnTr_SetupAction(this, EnTr_FlyKidnapCutscene);
Animation_PlayLoop(&this->skelAnime, &object_tr_Anim_0049C8);
Animation_PlayLoop(&this->skelAnime, &gKotakeKoumeFlyAnim);
this->animation = NULL;
this->timer =
((this->actor.params != TR_KOUME) ? ((u8)frames * 0x400) + 0x8000 : (u8)frames * 0x400);
@ -380,17 +380,18 @@ void EnTr_Update(Actor* thisx, PlayState* play) {
if (SkelAnime_Update(&this->skelAnime)) {
if (this->animation != NULL) {
if ((this->animation == &object_tr_Anim_0035CC) || (this->animation == &object_tr_Anim_0013CC)) {
if ((this->animation == &gKotakeKoumeLookingOverLeftShoulderAnim) ||
(this->animation == &gKotakeKoumeLookingOverRightShoulderAnim)) {
if (this->actor.params != TR_KOUME) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_TWINROBA_LAUGH2);
} else {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_TWINROBA_LAUGH);
}
Animation_PlayLoop(&this->skelAnime, this->animation);
} else if (this->animation == &object_tr_Anim_0049C8) {
} else if (this->animation == &gKotakeKoumeFlyAnim) {
EnTr_SetupAction(this, EnTr_ChooseAction2);
Animation_Change(&this->skelAnime, &object_tr_Anim_0049C8, 1.0f, 0.0f,
Animation_GetLastFrame(&object_tr_Anim_0049C8), ANIMMODE_LOOP, -5.0f);
Animation_Change(&this->skelAnime, &gKotakeKoumeFlyAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gKotakeKoumeFlyAnim), ANIMMODE_LOOP, -5.0f);
} else {
Animation_PlayLoop(&this->skelAnime, this->animation);
}
@ -416,7 +417,7 @@ s32 EnTr_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnTr* this = (EnTr*)thisx;
Actor* child = this->actor.child;
if ((child != NULL) && (limbIndex == 19)) {
if ((child != NULL) && (limbIndex == KOTAKE_KOUME_LIMB_RIGHT_HAND)) {
Matrix_MultVec3f(&src, &dest);
dest.x -= (10.0f * Math_SinS(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))));
dest.z -= (10.0f * Math_CosS(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))));

View file

@ -8,11 +8,42 @@ struct EnTr;
typedef void (*EnTrActionFunc)(struct EnTr*, PlayState*);
typedef enum {
/* 0 */ KOTAKE_KOUME_LIMB_NONE,
/* 1 */ KOTAKE_KOUME_LIMB_PELVIS,
/* 2 */ KOTAKE_KOUME_LIMB_LEFT_THIGH,
/* 3 */ KOTAKE_KOUME_LIMB_LEFT_SHIN,
/* 4 */ KOTAKE_KOUME_LIMB_LEFT_FOOT,
/* 5 */ KOTAKE_KOUME_LIMB_RIGH_THIGH,
/* 6 */ KOTAKE_KOUME_LIMB_RIGHT_SHIN,
/* 7 */ KOTAKE_KOUME_LIMB_RIGHT_FOOT,
/* 8 */ KOTAKE_KOUME_LIMB_TORSO_LIMB,
/* 9 */ KOTAKE_KOUME_LIMB_LEFT_SLEEVE_START,
/* 10 */ KOTAKE_KOUME_LIMB_LEFT_SLEEVE_MID,
/* 11 */ KOTAKE_KOUME_LIMB_LEFT_SLEEVE_END,
/* 12 */ KOTAKE_KOUME_LIMB_LEFT_SLEEVE_FRONT,
/* 13 */ KOTAKE_KOUME_LIMB_LEFT_HAND,
/* 14 */ KOTAKE_KOUME_LIMB_BROOM,
/* 15 */ KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_START,
/* 16 */ KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_MID,
/* 17 */ KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_END,
/* 18 */ KOTAKE_KOUME_LIMB_RIGHT_SLEEVE_FRONT,
/* 19 */ KOTAKE_KOUME_LIMB_RIGHT_HAND,
/* 20 */ KOTAKE_KOUME_LIMB_NECK,
/* 21 */ KOTAKE_KOUME_LIMB_HEAD,
/* 22 */ KOTAKE_KOUME_LIMB_RIGHT_HAIR_PIECE_START,
/* 23 */ KOTAKE_KOUME_LIMB_RIGHT_HAIR_PIECE_END,
/* 24 */ KOTAKE_KOUME_LIMB_TEETH,
/* 25 */ KOTAKE_KOUME_LIMB_LEFT_HAIR_PIECE_START,
/* 26 */ KOTAKE_KOUME_LIMB_LEFT_HAIR_PIECE_END,
/* 27 */ KOTAKE_KOUME_LIMB_MAX
} KotakeKoumeLimb;
typedef struct EnTr {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ Vec3s jointTable[27];
/* 0x0232 */ Vec3s morphTable[27];
/* 0x0190 */ Vec3s jointTable[KOTAKE_KOUME_LIMB_MAX];
/* 0x0232 */ Vec3s morphTable[KOTAKE_KOUME_LIMB_MAX];
/* 0x02D4 */ s16 unk_2D4;
/* 0x02D6 */ u16 timer; // Also used as an angle
/* 0x02D8 */ s16 actionIndex;