mirror of
https://github.com/zeldaret/ss
synced 2026-07-10 14:33:47 -04:00
dAcItem_c::{create, createHeap} OK
This commit is contained in:
@@ -1501,6 +1501,7 @@ d/a/d_a_item.cpp:
|
||||
.ctors start:0x804DB828 end:0x804DB82C
|
||||
.rodata start:0x804EBBB0 end:0x804ED340
|
||||
.data start:0x80533268 end:0x80534490
|
||||
.sdata start:0x80573968 end:0x805739B0
|
||||
.sbss start:0x805758B8 end:0x805758E0
|
||||
.sdata2 start:0x8057BD88 end:0x8057BF80
|
||||
.bss start:0x805B4490 end:0x805B48A8
|
||||
@@ -1510,6 +1511,7 @@ d/a/obj/d_a_obj_bomb.cpp:
|
||||
.ctors start:0x804DB82C end:0x804DB830
|
||||
.rodata start:0x804ED340 end:0x804ED350
|
||||
.data start:0x80534490 end:0x805347A8
|
||||
.sdata start:0x805739B0 end:0x805739C8
|
||||
.sbss start:0x805758E0 end:0x805758F0
|
||||
|
||||
d/a/obj/d_a_obj_arrow.cpp:
|
||||
@@ -1517,6 +1519,7 @@ d/a/obj/d_a_obj_arrow.cpp:
|
||||
.ctors start:0x804DB830 end:0x804DB834
|
||||
.rodata start:0x804ED350 end:0x804ED380
|
||||
.data start:0x805347A8 end:0x80534AD0
|
||||
.sdata start:0x805739C8 end:0x805739D8
|
||||
.sbss start:0x805758F0 end:0x80575900
|
||||
|
||||
d/a/obj/d_a_obj_boomerang.cpp:
|
||||
|
||||
+65
-59
@@ -13281,10 +13281,10 @@ AcItem__getItemTypeMaybeMaybeFromId = .text:0x80247220; // type:function size:0x
|
||||
AcItem__getItemAnimType = .text:0x80247280; // type:function size:0x44
|
||||
AcItem__getHeartContainerHeartIncrease = .text:0x802472D0; // type:function size:0x8
|
||||
AcItem__getCompletedHeatpieceHeartIncrease = .text:0x802472E0; // type:function size:0x8
|
||||
divBy5 = .text:0x802472F0; // type:function size:0x24
|
||||
getFlagIdxForTear = .text:0x80247320; // type:function size:0x60
|
||||
getShiftForTear = .text:0x80247380; // type:function size:0x34
|
||||
setDungeonflagForTearnum = .text:0x802473C0; // type:function size:0xB0
|
||||
getTearIdx__13dAcItemBase_cFi = .text:0x802472F0; // type:function size:0x24
|
||||
getFlagIdxForTear__13dAcItemBase_cFiPUl = .text:0x80247320; // type:function size:0x60
|
||||
getTearBit__13dAcItemBase_cFi = .text:0x80247380; // type:function size:0x34
|
||||
setDungeonFlagForTear__13dAcItemBase_cFi = .text:0x802473C0; // type:function size:0xB0
|
||||
getTrialIndex2 = .text:0x80247470; // type:function size:0xA8
|
||||
fn_80247520 = .text:0x80247520; // type:function size:0xC
|
||||
fn_80247530 = .text:0x80247530; // type:function size:0xC
|
||||
@@ -13329,14 +13329,14 @@ fn_80247950 = .text:0x80247950; // type:function size:0x28
|
||||
AcItem__isItemFromMitts = .text:0x80247980; // type:function size:0x10
|
||||
fn_80247990 = .text:0x80247990; // type:function size:0x8
|
||||
getRandomEntryFromWeightedList = .text:0x802479A0; // type:function size:0x17C
|
||||
determineActualItemIdFromItem = .text:0x80247B20; // type:function size:0x84
|
||||
determineActualItemIdFromItem__9dAcItem_cFUs = .text:0x80247B20; // type:function size:0x84
|
||||
fn_80247BB0 = .text:0x80247BB0; // type:function size:0x10C
|
||||
m3d__smdl_c__getNodePos = .text:0x80247CC0; // type:function size:0x58
|
||||
fn_80247D20 = .text:0x80247D20; // type:function size:0x14C
|
||||
fn_80247E70 = .text:0x80247E70; // type:function size:0x50
|
||||
increment = .text:0x80247EC0; // type:function size:0x28
|
||||
fn_80247EF0 = .text:0x80247EF0; // type:function size:0xA4
|
||||
fn_80247FA0 = .text:0x80247FA0; // type:function size:0x8
|
||||
getItemId__13dAcItemBase_cFv = .text:0x80247FA0; // type:function size:0x8
|
||||
fn_80247FB0 = .text:0x80247FB0; // type:function size:0x8
|
||||
dAcItem_c_classInit__Fv = .text:0x80247FC0; // type:function size:0x30
|
||||
AcItem__dontForceDemo = .text:0x80247FF0; // type:function size:0x8
|
||||
@@ -13354,8 +13354,8 @@ __dt__24sFStateFct_c<9dAcItem_c>Fv = .text:0x80248330; // type:function size:0x6
|
||||
__dt__77sStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802483A0; // type:function size:0xA0
|
||||
__dt__47sFStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c>Fv = .text:0x80248440; // type:function size:0xA4
|
||||
__dt__9dAcItem_cFv = .text:0x802484F0; // type:function size:0x248
|
||||
fn_80248740 = .text:0x80248740; // type:function size:0x40
|
||||
fn_80248780 = .text:0x80248780; // type:function size:0x40
|
||||
__dt__13dAcItem_0xB3CFv = .text:0x80248740; // type:function size:0x40
|
||||
__dt__13dAcItem_0xB34Fv = .text:0x80248780; // type:function size:0x40
|
||||
AcItem__spawnItem = .text:0x802487C0; // type:function size:0x170
|
||||
spawnItem2 = .text:0x80248930; // type:function size:0xBC
|
||||
fn_802489F0 = .text:0x802489F0; // type:function size:0x298
|
||||
@@ -13380,7 +13380,7 @@ fn_8024A150 = .text:0x8024A150; // type:function size:0xC
|
||||
fn_8024A160 = .text:0x8024A160; // type:function size:0x34
|
||||
spawnItem22 = .text:0x8024A1A0; // type:function size:0x4
|
||||
AcItem__getItemIdFromParam = .text:0x8024A1B0; // type:function size:0x8
|
||||
AcItem__getSubtypeFromParam = .text:0x8024A1C0; // type:function size:0x8
|
||||
getSubtypeFromParam__9dAcItem_cFUl = .text:0x8024A1C0; // type:function size:0x8
|
||||
playSpawnRupeeSound = .text:0x8024A1D0; // type:function size:0x1C
|
||||
playSpawnHeartSound = .text:0x8024A1F0; // type:function size:0x1C
|
||||
playSpawnItemSound = .text:0x8024A210; // type:function size:0x1C
|
||||
@@ -13388,16 +13388,16 @@ fn_8024A230 = .text:0x8024A230; // type:function size:0x30
|
||||
AcItem__setupItemParams = .text:0x8024A260; // type:function size:0x3C
|
||||
fn_8024A2A0 = .text:0x8024A2A0; // type:function size:0x10
|
||||
AcItem__getItemId = .text:0x8024A2B0; // type:function size:0x8
|
||||
AcItem__getTearNumber = .text:0x8024A2C0; // type:function size:0xC
|
||||
getFirstBitParams2 = .text:0x8024A2D0; // type:function size:0x24
|
||||
getTearIdx__9dAcItem_cFv = .text:0x8024A2C0; // type:function size:0xC
|
||||
getFirstBitParams2__9dAcBase_cCFv = .text:0x8024A2D0; // type:function size:0x24
|
||||
getParams2Lower_shift1_0x7__9dAcItem_cCFv = .text:0x8024A300; // type:function size:0x24
|
||||
getCurrentTrial__9dAcItem_cFv = .text:0x8024A330; // type:function size:0x68
|
||||
getTearSubtype__9dAcItem_cF7ITEM_ID = .text:0x8024A3A0; // type:function size:0x68
|
||||
AcItem__GetItemGetType = .text:0x8024A410; // type:function size:0x3C
|
||||
AcItem__getItemListElement = .text:0x8024A450; // type:function size:0x8
|
||||
AcItem__getFinalDeterminedItemId = .text:0x8024A460; // type:function size:0x8
|
||||
AcItem__initModels = .text:0x8024A470; // type:function size:0x75C
|
||||
AcItem__init = .text:0x8024ABD0; // type:function size:0x2888
|
||||
createHeap__9dAcItem_cFv = .text:0x8024A470; // type:function size:0x75C
|
||||
create__9dAcItem_cFv = .text:0x8024ABD0; // type:function size:0x2888
|
||||
changeState__77sStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8024D460; // type:function size:0x10
|
||||
getStateID__77sStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8024D470; // type:function size:0x10
|
||||
AcItem__destroy = .text:0x8024D480; // type:function size:0xEC
|
||||
@@ -13405,10 +13405,10 @@ AcItem__update = .text:0x8024D570; // type:function size:0x66C
|
||||
executeState__77sStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8024DBE0; // type:function size:0x10
|
||||
AcItem__draw = .text:0x8024DBF0; // type:function size:0x304
|
||||
setNumberOfItems = .text:0x8024DF00; // type:function size:0x8
|
||||
AcItem__setFreestandingYOffset = .text:0x8024DF10; // type:function size:0x8
|
||||
setFreestandingYOffset__9dAcItem_cFf = .text:0x8024DF10; // type:function size:0x8
|
||||
AcItem__setFramesInAir = .text:0x8024DF20; // type:function size:0x8
|
||||
fn_8024DF30 = .text:0x8024DF30; // type:function size:0x8
|
||||
isItemDropFromEnemy = .text:0x8024DF40; // type:function size:0x24
|
||||
isItemDropFromEnemy__9dAcItem_cCFv = .text:0x8024DF40; // type:function size:0x24
|
||||
resetNumberOfItems = .text:0x8024DF70; // type:function size:0xC
|
||||
AcItem__resetFramesInAir = .text:0x8024DF80; // type:function size:0x8
|
||||
AcItem__incrementFramesInAir = .text:0x8024DF90; // type:function size:0x44
|
||||
@@ -13487,20 +13487,20 @@ AcItem__isBombDrop = .text:0x80250BB0; // type:function size:0x58
|
||||
isTear__9dAcItem_cF7ITEM_ID = .text:0x80250C10; // type:function size:0x78
|
||||
AcItem__is_Larvae_Ore_JellyBlob_Claw_Horn_EvilCryst_OrnSkull_GoldSkull = .text:0x80250C90; // type:function size:0xB8
|
||||
AcItem__isBug = .text:0x80250D50; // type:function size:0x7C
|
||||
AcItem__isTreasure = .text:0x80250DD0; // type:function size:0x138
|
||||
isTreasure2__9dAcItem_cF7ITEM_ID = .text:0x80250DD0; // type:function size:0x138
|
||||
isTreasure__9dAcItem_cF7ITEM_ID = .text:0x80250F10; // type:function size:0x88
|
||||
AcItem__isItemHeart = .text:0x80250FA0; // type:function size:0x34
|
||||
isHeart2__9dAcItem_cCFv = .text:0x80250FA0; // type:function size:0x34
|
||||
isSingleArrow__9dAcItem_cCFv = .text:0x80250FE0; // type:function size:0x8
|
||||
isBundleOrArrows = .text:0x80250FF0; // type:function size:0x8
|
||||
AcItem__isItemSilverRupee = .text:0x80251000; // type:function size:0x8
|
||||
AcItem__isItemGoldRupee = .text:0x80251010; // type:function size:0x8
|
||||
isArrowBundle__9dAcItem_cCFv = .text:0x80250FF0; // type:function size:0x8
|
||||
isSilverRupee__9dAcItem_cCFv = .text:0x80251000; // type:function size:0x8
|
||||
isGoldRupee__9dAcItem_cCFv = .text:0x80251010; // type:function size:0x8
|
||||
AcItem__isKeyPiece2 = .text:0x80251020; // type:function size:0x8
|
||||
isItem10DekuSeeds = .text:0x80251030; // type:function size:0x8
|
||||
AcItem__isHeartPiece2 = .text:0x80251040; // type:function size:0x8
|
||||
isHeartPiece__9dAcItem_cCFv = .text:0x80251040; // type:function size:0x8
|
||||
AcItem__isItemBirdStatuette = .text:0x80251050; // type:function size:0x8
|
||||
AcItem__isLifeTreeFruit = .text:0x80251060; // type:function size:0x8
|
||||
AcItem__isItemAnyRupee = .text:0x80251070; // type:function size:0x34
|
||||
AcItem__isItemAnyTear = .text:0x802510B0; // type:function size:0x8
|
||||
isAnyTear__9dAcItem_cCFv = .text:0x802510B0; // type:function size:0x8
|
||||
AcItem__isBombRefill = .text:0x802510C0; // type:function size:0x8
|
||||
isTriforce__9dAcItem_cCFv = .text:0x802510D0; // type:function size:0x8
|
||||
fn_802510E0 = .text:0x802510E0; // type:function size:0x44
|
||||
@@ -13674,11 +13674,11 @@ fn_80252AA0 = .text:0x80252AA0; // type:function size:0xC
|
||||
itemGetBirdMaybe = .text:0x80252AB0; // type:function size:0x40
|
||||
itemGetEventStart__9dAcItem_cFP9dAcBase_c = .text:0x80252AF0; // type:function size:0xD8
|
||||
itemGetEventEnd__9dAcItem_cFP9dAcBase_c = .text:0x80252BD0; // type:function size:0x90
|
||||
AcItem__getItemId2 = .text:0x80252C60; // type:function size:0x8
|
||||
getItemId2__9dAcItem_cCFv = .text:0x80252C60; // type:function size:0x8
|
||||
AcItem__setFinalDeterminedItemId = .text:0x80252C70; // type:function size:0x8
|
||||
getItemInitStructForItem = .text:0x80252C80; // type:function size:0x5C
|
||||
AcItem__getItemInitStruct = .text:0x80252CE0; // type:function size:0x8
|
||||
AcItem__getItemFlagStruct = .text:0x80252CF0; // type:function size:0x54
|
||||
getItemInitStruct__9dAcItem_cCFv = .text:0x80252CE0; // type:function size:0x8
|
||||
getItemFlagStruct__13dAcItemBase_cFUs = .text:0x80252CF0; // type:function size:0x54
|
||||
AcItem__setFlagForItem = .text:0x80252D50; // type:function size:0x34
|
||||
AcItem__checkFlagForItem2 = .text:0x80252D90; // type:function size:0x34
|
||||
AcItem__setItemFlagBasedOnId = .text:0x80252DD0; // type:function size:0x34
|
||||
@@ -13689,7 +13689,7 @@ AcItem__setBoundingBox = .text:0x80252EF0; // type:function size:0x88
|
||||
fn_80252F80 = .text:0x80252F80; // type:function size:0x88
|
||||
fn_80253010 = .text:0x80253010; // type:function size:0x88
|
||||
fn_802530A0 = .text:0x802530A0; // type:function size:0xFC
|
||||
AcItem__setBoundingBox2 = .text:0x802531A0; // type:function size:0x28
|
||||
applyBoundingBox__9dAcItem_cFv = .text:0x802531A0; // type:function size:0x28
|
||||
AcItem__performCollection1&2 = .text:0x802531D0; // type:function size:0x34
|
||||
AcItem__performCollection1 = .text:0x80253210; // type:function size:0x7E4
|
||||
AcItem__performCollection2 = .text:0x80253A00; // type:function size:0x350
|
||||
@@ -13698,7 +13698,7 @@ fn_80253E20 = .text:0x80253E20; // type:function size:0xC
|
||||
fn_80253E30 = .text:0x80253E30; // type:function size:0x15C
|
||||
fn_80253F90 = .text:0x80253F90; // type:function size:0xC
|
||||
AcItem__shouldDespawn = .text:0x80253FA0; // type:function size:0xC4
|
||||
AcItem__onTouchLink = .text:0x80254070; // type:function size:0x1EC
|
||||
onTouchLink__9dAcItem_cFv = .text:0x80254070; // type:function size:0x1EC
|
||||
AcItem__decideOnGetOrForcedGet = .text:0x80254260; // type:function size:0x80
|
||||
fn_802542E0 = .text:0x802542E0; // type:function size:0xA4
|
||||
AcItem__checkAbovePosition = .text:0x80254390; // type:function size:0x78
|
||||
@@ -13714,11 +13714,11 @@ fn_802548A0 = .text:0x802548A0; // type:function size:0x5C
|
||||
fn_80254900 = .text:0x80254900; // type:function size:0x2C
|
||||
fn_80254930 = .text:0x80254930; // type:function size:0x24
|
||||
AcItem__isSmallKeyStaminaFruitorHeartPiece = .text:0x80254960; // type:function size:0x64
|
||||
AcItem__setupUnkColliderFlags2 = .text:0x802549D0; // type:function size:0x1D0
|
||||
setupUnkColliderFlags2__9dAcItem_cFv = .text:0x802549D0; // type:function size:0x1D0
|
||||
fn_80254BA0 = .text:0x80254BA0; // type:function size:0xC
|
||||
fn_80254BB0 = .text:0x80254BB0; // type:function size:0x10
|
||||
fn_80254BC0 = .text:0x80254BC0; // type:function size:0xCC
|
||||
AcItem__setDespawnTimer = .text:0x80254C90; // type:function size:0x10
|
||||
setDespawnTimer__9dAcItem_cFUs = .text:0x80254C90; // type:function size:0x10
|
||||
fn_80254CA0 = .text:0x80254CA0; // type:function size:0xC
|
||||
AcItem__noLongerWaiting = .text:0x80254CB0; // type:function size:0xC
|
||||
fn_80254CC0 = .text:0x80254CC0; // type:function size:0x4C
|
||||
@@ -13884,26 +13884,26 @@ AcItem__addGetEvent = .text:0x802567F0; // type:function size:0xBC
|
||||
makeLinkLookTowardItem = .text:0x802568B0; // type:function size:0x98
|
||||
AcItem__addToGetQueue = .text:0x80256950; // type:function size:0x7C
|
||||
AcItem__removeFromGetQueue = .text:0x802569D0; // type:function size:0x80
|
||||
fn_80256A50 = .text:0x80256A50; // type:function size:0x84
|
||||
AcItem__isSmallKey = .text:0x80256AE0; // type:function size:0x14
|
||||
hitCallback__9dAcItem_cFP12dAcObjBase_cP8cCcD_ObjP12dAcObjBase_cP8cCcD_Obj = .text:0x80256A50; // type:function size:0x84
|
||||
isSmallKey__9dAcItem_cCFv = .text:0x80256AE0; // type:function size:0x14
|
||||
isAnyRupee = .text:0x80256B00; // type:function size:0x98
|
||||
AcItem__isItemGreenRupee = .text:0x80256BA0; // type:function size:0x8
|
||||
AcItem__isItemBlueRupee = .text:0x80256BB0; // type:function size:0x8
|
||||
AcItem__isItemRedRupee = .text:0x80256BC0; // type:function size:0x8
|
||||
AcItem__isHeart2 = .text:0x80256BD0; // type:function size:0x8
|
||||
AcItem__isItemRupoor = .text:0x80256BE0; // type:function size:0x8
|
||||
AcItem__is5GratitudeCrystals = .text:0x80256BF0; // type:function size:0x8
|
||||
AcItem__isLightFruit = .text:0x80256C00; // type:function size:0x8
|
||||
AcItem__isGratitudeCrystal = .text:0x80256C10; // type:function size:0x8
|
||||
AcItem__isItemSlingshot = .text:0x80256C20; // type:function size:0x8
|
||||
AcItem__isItemBabyRattle = .text:0x80256C30; // type:function size:0x8
|
||||
AcItem__isEldinOre2 = .text:0x80256C40; // type:function size:0x8
|
||||
AcItem__isJellyBlob2 = .text:0x80256C50; // type:function size:0x8
|
||||
AcItem__isAnyRupee = .text:0x80256C60; // type:function size:0x8
|
||||
isGreenRupee__9dAcItem_cCFv = .text:0x80256BA0; // type:function size:0x8
|
||||
isBlueRupee__9dAcItem_cCFv = .text:0x80256BB0; // type:function size:0x8
|
||||
isRedRupee__9dAcItem_cCFv = .text:0x80256BC0; // type:function size:0x8
|
||||
isHeart__9dAcItem_cCFv = .text:0x80256BD0; // type:function size:0x8
|
||||
isRupoor__9dAcItem_cCFv = .text:0x80256BE0; // type:function size:0x8
|
||||
is5GratitudeCrystals__9dAcItem_cCFv = .text:0x80256BF0; // type:function size:0x8
|
||||
isLightFruit__9dAcItem_cCFv = .text:0x80256C00; // type:function size:0x8
|
||||
isGratitudeCrystal__9dAcItem_cCFv = .text:0x80256C10; // type:function size:0x8
|
||||
isSlingshot__9dAcItem_cCFv = .text:0x80256C20; // type:function size:0x8
|
||||
isBabyRattle__9dAcItem_cCFv = .text:0x80256C30; // type:function size:0x8
|
||||
isEldinOre__9dAcItem_cCFv = .text:0x80256C40; // type:function size:0x8
|
||||
isJellyBlob__9dAcItem_cCFv = .text:0x80256C50; // type:function size:0x8
|
||||
isAnyRupee__9dAcItem_cCFv = .text:0x80256C60; // type:function size:0x8
|
||||
AcItem__isSingleArrowOrBundle = .text:0x80256C70; // type:function size:0x20
|
||||
AcItem__isInsect = .text:0x80256C90; // type:function size:0x8
|
||||
AcItem__isUnkTreasureGroup1 = .text:0x80256CA0; // type:function size:0x8
|
||||
AcItem__isTreasure3 = .text:0x80256CB0; // type:function size:0x8
|
||||
isInsect__9dAcItem_cCFv = .text:0x80256C90; // type:function size:0x8
|
||||
isUnkTreasureGroup1__9dAcItem_cCFv = .text:0x80256CA0; // type:function size:0x8
|
||||
isTreasure3__9dAcItem_cCFv = .text:0x80256CB0; // type:function size:0x8
|
||||
AcItem__isKeyPiece3 = .text:0x80256CC0; // type:function size:0x34
|
||||
AcItem__is5GratitudeCrystals2 = .text:0x80256D00; // type:function size:0x34
|
||||
AcItem__isItemSingleGratitudeCrystal = .text:0x80256D40; // type:function size:0x34
|
||||
@@ -16988,7 +16988,7 @@ fn_802D5AC0 = .text:0x802D5AC0; // type:function size:0x8
|
||||
fn_802D5AD0 = .text:0x802D5AD0; // type:function size:0x8
|
||||
fn_802D5AE0 = .text:0x802D5AE0; // type:function size:0x8
|
||||
fn_802D5AF0 = .text:0x802D5AF0; // type:function size:0x8
|
||||
fn_802D5B00 = .text:0x802D5B00; // type:function size:0x8
|
||||
tearIdxToParam__17dTgForceGetFlag_cFl = .text:0x802D5B00; // type:function size:0x8
|
||||
fn_802D5B10 = .text:0x802D5B10; // type:function size:0x28
|
||||
fn_802D5B40 = .text:0x802D5B40; // type:function size:0x10
|
||||
fn_802D5B50 = .text:0x802D5B50; // type:function size:0xC
|
||||
@@ -28527,8 +28527,8 @@ lbl_804EBB94 = .rodata:0x804EBB94; // type:object size:0xC align:4 data:float
|
||||
lbl_804EBBA0 = .rodata:0x804EBBA0; // type:object size:0x10
|
||||
ITEM_INIT_STRUCTS = .rodata:0x804EBBB0; // type:object size:0x87C
|
||||
DEFAULT_ITEM_INIT_STRUCT = .rodata:0x804EC42C; // type:object size:0x14
|
||||
l_item_flag_structs = .rodata:0x804EC440; // type:object size:0x538 scope:local
|
||||
l_item_types = .rodata:0x804EC978; // type:object size:0x7F8 scope:local
|
||||
sItemFlagStructs__13dAcItemBase_c = .rodata:0x804EC440; // type:object size:0x538 scope:local
|
||||
sItemTypeFlags__13dAcItemBase_c = .rodata:0x804EC978; // type:object size:0x7F8 scope:local
|
||||
TRIAL_INDEX_STRUCTS = .rodata:0x804ED170; // type:object size:0x20
|
||||
GLITTERING_SPORES_CHANCES = .rodata:0x804ED190; // type:object size:0x20 data:4byte
|
||||
lbl_804ED1B0 = .rodata:0x804ED1B0; // type:object size:0x18
|
||||
@@ -28539,10 +28539,10 @@ lbl_804ED208 = .rodata:0x804ED208; // type:object size:0x20
|
||||
lbl_804ED228 = .rodata:0x804ED228; // type:object size:0x20
|
||||
lbl_804ED248 = .rodata:0x804ED248; // type:object size:0x20
|
||||
RANDOM_ITEM_DEFINITIONS = .rodata:0x804ED268; // type:object size:0x38 data:4byte
|
||||
lbl_804ED2A0 = .rodata:0x804ED2A0; // type:object size:0x30
|
||||
sSrcCyl = .rodata:0x804ED2A0; // type:object size:0x30
|
||||
AcItem__SHOULD_DEMO_FUNCS = .rodata:0x804ED2D0; // type:object size:0x30
|
||||
lbl_804ED300 = .rodata:0x804ED300; // type:object size:0x18
|
||||
lbl_804ED318 = .rodata:0x804ED318; // type:object size:0x24
|
||||
sCb1s__15dAcItem_0xB3C_2 = .rodata:0x804ED300; // type:object size:0x18
|
||||
sCb2s__15dAcItem_0xB3C_2 = .rodata:0x804ED318; // type:object size:0x24
|
||||
lbl_804ED340 = .rodata:0x804ED340; // type:object size:0x10 align:4 data:float
|
||||
lbl_804ED350 = .rodata:0x804ED350; // type:object size:0x30
|
||||
lbl_804ED380 = .rodata:0x804ED380; // type:object size:0x30
|
||||
@@ -36256,7 +36256,9 @@ AcItem__TearGetDemoThings = .data:0x805332C0; // type:object size:0x40
|
||||
lbl_80533300 = .data:0x80533300; // type:object size:0xE data:string
|
||||
lbl_80533310 = .data:0x80533310; // type:object size:0x11 data:string
|
||||
g_profile_ITEM = .data:0x80533328; // type:object size:0x10
|
||||
lbl_80533338 = .data:0x80533338; // type:object size:0x85C
|
||||
lbl_80533338 = .data:0x80533338; // type:object size:0x834
|
||||
lbl_80533B6C = .data:0x80533B6C; // type:object size:0x17 data:string
|
||||
lbl_80533B84 = .data:0x80533B84; // type:object size:0xD data:string
|
||||
jumptable_80533B94 = .data:0x80533B94; // type:object size:0xE8 scope:local
|
||||
jumptable_80533C7C = .data:0x80533C7C; // type:object size:0xE8 scope:local
|
||||
lbl_80533D64 = .data:0x80533D64; // type:object size:0xC data:4byte
|
||||
@@ -36270,11 +36272,15 @@ __vt__47sFStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c> = .data:0x80533F78; // t
|
||||
__vt__77sStateMgr_c<9dAcItem_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80533FA8; // type:object size:0x30
|
||||
__vt__24sFStateFct_c<9dAcItem_c> = .data:0x80533FD8; // type:object size:0x18
|
||||
__vt__21sFState_c<9dAcItem_c> = .data:0x80533FF0; // type:object size:0x18
|
||||
lbl_80534008 = .data:0x80534008; // type:object size:0x1C
|
||||
lbl_80534024 = .data:0x80534024; // type:object size:0x38
|
||||
lbl_8053405C = .data:0x8053405C; // type:object size:0x14
|
||||
lbl_80534070 = .data:0x80534070; // type:object size:0x3EC
|
||||
lbl_8053445C = .data:0x8053445C; // type:object size:0x34
|
||||
__vt__15dAcItem_0xB3C_2 = .data:0x80534008; // type:object size:0x1C
|
||||
__vt__15dAcItem_0xB3C_1 = .data:0x80534024; // type:object size:0x1C
|
||||
__vt__13dAcItem_0xB3C = .data:0x80534040; // type:object size:0x1C
|
||||
__vt__15dAcItem_0xB34_2 = .data:0x8053405C; // type:object size:0x14
|
||||
__vt__15dAcItem_0xB34_1 = .data:0x80534070; // type:object size:0x14
|
||||
__vt__13dAcItem_0xB34 = .data:0x80534084; // type:object size:0x14
|
||||
__vt__13dAcItemBase_c = .data:0x80534098; // type:object size:0x94
|
||||
lbl_80534130 = .data:0x80534130; // type:object size:0x32C
|
||||
__vt__23sFStateID_c<9dAcItem_c> = .data:0x8053445C; // type:object size:0x34
|
||||
g_profile_BOMB = .data:0x80534490; // type:object size:0x10
|
||||
lbl_805344A0 = .data:0x805344A0; // type:object size:0x2C
|
||||
lbl_805344CC = .data:0x805344CC; // type:object size:0xA data:string
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "sized_string.h"
|
||||
#include "toBeSorted/actor_info.h"
|
||||
#include "toBeSorted/raii_ptr.h"
|
||||
#include "toBeSorted/sound_info.h"
|
||||
@@ -109,8 +110,7 @@ public:
|
||||
/* 0xEE */ u8 mPolyAttr0;
|
||||
/* 0xEF */ u8 mPolyAttr1;
|
||||
/* 0xF0 */ u32 mJStudioActor;
|
||||
/* 0xF4 */ char someStr[4];
|
||||
/* 0xF8 */ char field_0xf8[0xfc - 0xf8];
|
||||
/* 0xF4 */ SizedString<8> mSomeStr;
|
||||
|
||||
public:
|
||||
/* vt 0x08 */ virtual int create();
|
||||
@@ -240,6 +240,7 @@ public:
|
||||
void setParams2UpperByte(u32 val);
|
||||
static u32 buildParams2(u32 lower, u32 upper);
|
||||
u32 getParams2Lower() const;
|
||||
u32 getFirstBitParams2() const;
|
||||
static dAcBase_c *findActor(char *objName, dAcBase_c *parent);
|
||||
static dAcBase_c *searchActor(dAcBase_c *parent);
|
||||
// Kinda performs the code of the first param on every actor (second param is optional parent)
|
||||
|
||||
+364
-38
@@ -18,10 +18,76 @@
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
#include "toBeSorted/item_mdl.h"
|
||||
|
||||
class dAcItem_0xB34 {
|
||||
public:
|
||||
virtual ~dAcItem_0xB34();
|
||||
virtual ~dAcItem_0xB34() {}
|
||||
virtual void vt_0x0C() = 0;
|
||||
virtual void vt_0x10() = 0;
|
||||
};
|
||||
|
||||
class dAcItem_0xB34_1 : public dAcItem_0xB34 {
|
||||
public:
|
||||
virtual ~dAcItem_0xB34_1() {}
|
||||
virtual void vt_0x0C() override;
|
||||
virtual void vt_0x10() override;
|
||||
};
|
||||
|
||||
class dAcItem_0xB34_2 : public dAcItem_0xB34 {
|
||||
public:
|
||||
virtual ~dAcItem_0xB34_2() {}
|
||||
virtual void vt_0x0C() override;
|
||||
virtual void vt_0x10() override;
|
||||
|
||||
private:
|
||||
/* 0x04 */ u8 _0x04[0x0C - 0x04];
|
||||
};
|
||||
|
||||
class dAcItem_0xB3C {
|
||||
public:
|
||||
virtual ~dAcItem_0xB3C() {}
|
||||
virtual void vt_0x0C(u16) = 0;
|
||||
virtual void vt_0x10() = 0;
|
||||
virtual void vt_0x14() = 0;
|
||||
virtual void vt_0x18() = 0;
|
||||
|
||||
protected:
|
||||
/* 0x04 */ u8 _0x04[0x08 - 0x04];
|
||||
};
|
||||
|
||||
class dAcItem_0xB3C_1 : public dAcItem_0xB3C {
|
||||
public:
|
||||
dAcItem_0xB3C_1(u16, u16) {}
|
||||
virtual ~dAcItem_0xB3C_1();
|
||||
virtual void vt_0x0C(u16) override;
|
||||
virtual void vt_0x10() override;
|
||||
virtual void vt_0x14() override;
|
||||
virtual void vt_0x18() override;
|
||||
};
|
||||
|
||||
class dAcItem_0xB3C_2 : public dAcItem_0xB3C {
|
||||
public:
|
||||
dAcItem_0xB3C_2(u16 a1, u16 a2) {
|
||||
mCb1 = sCb1s[a1];
|
||||
mCb2 = sCb2s[a2];
|
||||
}
|
||||
virtual ~dAcItem_0xB3C_2();
|
||||
virtual void vt_0x0C(u16) override;
|
||||
virtual void vt_0x10() override;
|
||||
virtual void vt_0x14() override;
|
||||
virtual void vt_0x18() override;
|
||||
|
||||
public:
|
||||
typedef void (dAcItem_0xB3C_2::*Callback1)();
|
||||
typedef bool (dAcItem_0xB3C_2::*Callback2)();
|
||||
|
||||
static Callback1 sCb1s[2];
|
||||
static Callback2 sCb2s[3];
|
||||
|
||||
/* 0x08 */ Callback1 mCb1;
|
||||
/* 0x14 */ Callback2 mCb2;
|
||||
/* 0x20 */ u8 _0x20[0x24 - 0x20];
|
||||
};
|
||||
|
||||
class dAcItem_c : public dAcItemBase_c {
|
||||
@@ -29,6 +95,12 @@ public:
|
||||
dAcItem_c();
|
||||
virtual ~dAcItem_c();
|
||||
|
||||
virtual int create() override;
|
||||
virtual bool createHeap() override;
|
||||
|
||||
virtual u16 getItemIdFromParams() override;
|
||||
virtual void setItemId(u16 id);
|
||||
|
||||
STATE_FUNC_DECLARE(dAcItem_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcItem_c, Carry);
|
||||
STATE_FUNC_DECLARE(dAcItem_c, GetBeetle);
|
||||
@@ -84,11 +156,35 @@ public:
|
||||
static bool isSlingshot(ITEM_ID item);
|
||||
static bool isRupee(ITEM_ID item);
|
||||
static bool isKeyPiece(ITEM_ID item);
|
||||
static bool isTreasure2(ITEM_ID item);
|
||||
static bool isTreasure(ITEM_ID item);
|
||||
static bool isTear(ITEM_ID item);
|
||||
|
||||
bool isLightFruit() const;
|
||||
bool isSingleArrow() const;
|
||||
bool isArrowBundle() const;
|
||||
bool isTriforce() const;
|
||||
bool isGratitudeCrystal() const;
|
||||
bool is5GratitudeCrystals() const;
|
||||
bool isHeart() const;
|
||||
bool isSmallKey() const;
|
||||
bool isGreenRupee() const;
|
||||
bool isBlueRupee() const;
|
||||
bool isRedRupee() const;
|
||||
bool isRupoor() const;
|
||||
bool isSilverRupee() const;
|
||||
bool isGoldRupee() const;
|
||||
bool isSlingshot() const;
|
||||
bool isEldinOre() const;
|
||||
bool isJellyBlob() const;
|
||||
bool isUnkTreasureGroup1() const;
|
||||
bool isHeartPiece() const;
|
||||
bool isTreasure3() const;
|
||||
bool isInsect() const;
|
||||
bool isHeart2() const;
|
||||
bool isAnyRupee() const;
|
||||
bool isAnyTear() const;
|
||||
bool isBabyRattle() const;
|
||||
|
||||
u32 getParams2Lower_shift1_0x7() const;
|
||||
|
||||
@@ -138,7 +234,238 @@ private:
|
||||
static bool sIsPerformingInitialCollection;
|
||||
static s32 sCollectionCurrentCount;
|
||||
|
||||
/* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system
|
||||
static s32 sGetItemPouchSlot;
|
||||
static s32 sGetItemQuantity;
|
||||
|
||||
static const mVec3_c sFreestandingDowsingOffset;
|
||||
|
||||
typedef bool (dAcItem_c::*sStaticPtmf)();
|
||||
static const sStaticPtmf sStaticPtmfs[];
|
||||
|
||||
static const ItemInitStruct *getItemInitStructForId(u16 itemId);
|
||||
const ItemInitStruct *getItemInitStruct() const;
|
||||
bool isItemDropFromEnemy() const;
|
||||
static u16 determineActualItemIdFromItem(u16);
|
||||
u16 getItemId2() const;
|
||||
static s32 getSubtypeFromParam(u32 params);
|
||||
void setupUnkColliderFlags2();
|
||||
static bool hitCallback(dAcObjBase_c *i_actorA, cCcD_Obj *i_objInfA, dAcObjBase_c *i_actorB, cCcD_Obj *i_objInfB);
|
||||
void fn_80253F90(bool);
|
||||
void fn_80256790();
|
||||
void fn_802567D0();
|
||||
void onTouchLink();
|
||||
void fn_80255DF0();
|
||||
void fn_80254BB0();
|
||||
void setDespawnTimer(u16 timer);
|
||||
void applyBoundingBox();
|
||||
s32 getTearIdx();
|
||||
void setFreestandingYOffset(f32);
|
||||
void fn_8024DF30(u32 flags);
|
||||
|
||||
// static PTMF callbacks
|
||||
bool fn_80248020();
|
||||
bool fn_80248010();
|
||||
bool fn_80255B30();
|
||||
bool fn_80255BA0();
|
||||
bool fn_80248040();
|
||||
bool fn_80248030();
|
||||
bool fn_80255BD0();
|
||||
bool fn_80255C40();
|
||||
|
||||
// PTMF callbacks
|
||||
f32 fn_80254DE0();
|
||||
f32 fn_80254DF0();
|
||||
|
||||
f32 getSmallKeyFreestandingScale();
|
||||
f32 getLowValueRupeeFreestandingScale();
|
||||
f32 getHighValueRupeeFreestandingScale();
|
||||
f32 getSlingshotFreestandingScale();
|
||||
f32 getEldinOreFreestandingScale();
|
||||
f32 getJellyBlobFreestandingScale();
|
||||
f32 getUnkTreasureGroup1FreestandingScale();
|
||||
f32 getHeartPieceFreestandingScale();
|
||||
f32 getGratitudeCrystalFreestandingScale();
|
||||
f32 getDefaultFreestandingScale();
|
||||
|
||||
f32 callGetFreestandingModelScale();
|
||||
|
||||
f32 getTreasure3Scale();
|
||||
f32 getInsectScale();
|
||||
f32 getDefaultScale();
|
||||
|
||||
f32 getHighValueRupeePickupScale();
|
||||
f32 getDefaultPickupScale();
|
||||
|
||||
void moveNormal0();
|
||||
void moveNormal1();
|
||||
void moveSpecial();
|
||||
|
||||
void fn_802555D0();
|
||||
void fn_802555F0();
|
||||
|
||||
void bounceNone();
|
||||
void bounceNormal();
|
||||
void bounceRupee();
|
||||
|
||||
void fn_802558F0();
|
||||
void fn_80255AE0();
|
||||
void fn_802558E0();
|
||||
|
||||
bool fn_80248060();
|
||||
bool fn_80248050();
|
||||
bool fn_80255D50();
|
||||
bool fn_80255DB0();
|
||||
|
||||
void setLowValueRupeeBoundingBox();
|
||||
void setHighValueRupeeBoundingBox();
|
||||
void setArrowBundleBoundingBox();
|
||||
void setDefaultBoundingBox();
|
||||
|
||||
f32 getSmallKeyGravity1();
|
||||
f32 getGreenRupeeGravity1();
|
||||
f32 getBlueRupeeGravity1();
|
||||
f32 getRedRupeeGravity1();
|
||||
f32 getHeartGravity1();
|
||||
f32 getSingleArrowGravity1();
|
||||
f32 getArrowBundleGravity1();
|
||||
f32 getSilverRupeeGravity1();
|
||||
f32 getGoldRupeeGravity1();
|
||||
f32 getRupoorGravity1();
|
||||
f32 get5BombsGravity1();
|
||||
f32 get10BombsGravity1();
|
||||
f32 getFaroreTearGravity1();
|
||||
f32 get5SeedsGravity1();
|
||||
f32 getDefaultGravity1();
|
||||
|
||||
f32 getHeartGravity2();
|
||||
|
||||
f32 getGreenRupeeGravity3();
|
||||
f32 getBlueRupeeGravity3();
|
||||
f32 getRedRupeeGravity3();
|
||||
f32 getRupoorGravity3();
|
||||
f32 getSilverRupeeGravity3();
|
||||
f32 getGoldRupeeGravity3();
|
||||
|
||||
f32 getSmallKeyGravity4();
|
||||
f32 getGreenRupeeGravity4();
|
||||
f32 getBlueRupeeGravity4();
|
||||
f32 getRedRupeeGravity4();
|
||||
f32 getHeartGravity4();
|
||||
f32 getSingleArrowGravity4();
|
||||
f32 getArrowBundleGravity4();
|
||||
f32 getSilverRupeeGravity4();
|
||||
f32 getGoldRupeeGravity4();
|
||||
f32 getRupoorGravity4();
|
||||
f32 get5BombsGravity4();
|
||||
f32 get10BombsGravity4();
|
||||
f32 getFaroreTearGravity4();
|
||||
f32 get5SeedsGravity4();
|
||||
f32 getDefaultGravit4();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockback();
|
||||
f32 getBlueRupeeDirHitKnockback();
|
||||
f32 getRedRupeeDirHitKnockback();
|
||||
f32 getSilverRupeeDirHitKnockback();
|
||||
f32 getGoldRupeeDirHitKnockback();
|
||||
f32 getRupoorDirHitKnockback();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockbackRand();
|
||||
f32 getBlueRupeeDirHitKnockbackRand();
|
||||
f32 getRedRupeeDirHitKnockbackRand();
|
||||
f32 getSilverRupeeDirHitKnockbackRand();
|
||||
f32 getGoldRupeeDirHitKnockbackRand();
|
||||
f32 getRupoorDirHitKnockbackRand();
|
||||
|
||||
f32 getGreenRupeeHitKnockback();
|
||||
f32 getBlueRupeeHitKnockback();
|
||||
f32 getRedRupeeHitKnockback();
|
||||
f32 getSilverRupeeHitKnockback();
|
||||
f32 getGoldRupeeHitKnockback();
|
||||
f32 getRupoorHitKnockback();
|
||||
|
||||
f32 getGreenRupeeHitKnockbackRand();
|
||||
f32 getBlueRupeeHitKnockbackRand();
|
||||
f32 getRedRupeeHitKnockbackRand();
|
||||
f32 getSilverRupeeHitKnockbackRand();
|
||||
f32 getGoldRupeeHitKnockbackRand();
|
||||
f32 getRupoorHitKnockbackRand();
|
||||
|
||||
f32 getGreenRupeeHitSquareDistance2();
|
||||
f32 getBlueRupeeHitSquareDistance2();
|
||||
f32 getRedRupeeHitSquareDistance2();
|
||||
f32 getSilverRupeeHitSquareDistance2();
|
||||
f32 getGoldRupeeHitSquareDistance2();
|
||||
f32 getRupoorHitSquareDistance2();
|
||||
f32 getHeartHitSquareDistance2();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockback2();
|
||||
f32 getBlueRupeeDirHitKnockback2();
|
||||
f32 getRedRupeeDirHitKnockback2();
|
||||
f32 getSilverRupeeDirHitKnockback2();
|
||||
f32 getGoldRupeeDirHitKnockback2();
|
||||
f32 getRupoorDirHitKnockback2();
|
||||
f32 getHeartDirHitKnockback2();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockbackRand2();
|
||||
f32 getBlueRupeeDirHitKnockbackRand2();
|
||||
f32 getRedRupeeDirHitKnockbackRand2();
|
||||
f32 getSilverRupeeDirHitKnockbackRand2();
|
||||
f32 getGoldRupeeDirHitKnockbackRand2();
|
||||
f32 getRupoorDirHitKnockbackRand2();
|
||||
f32 getHeartDirHitKnockbackRand2();
|
||||
|
||||
f32 getGreenRupeeHitKnockback2();
|
||||
f32 getBlueRupeeHitKnockback2();
|
||||
f32 getRedRupeeHitKnockback2();
|
||||
f32 getSilverRupeeHitKnockback2();
|
||||
f32 getGoldRupeeHitKnockback2();
|
||||
f32 getRupoorHitKnockback2();
|
||||
f32 getHeartHitKnockback2();
|
||||
|
||||
f32 getGreenRupeeHitKnockbackRand2();
|
||||
f32 getBlueRupeeHitKnockbackRand2();
|
||||
f32 getRedRupeeHitKnockbackRand2();
|
||||
f32 getSilverRupeeHitKnockbackRand2();
|
||||
f32 getGoldRupeeHitKnockbackRand2();
|
||||
f32 getRupoorHitKnockbackRand2();
|
||||
f32 getHeartHitKnockbackRand2();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockback3();
|
||||
f32 getBlueRupeeDirHitKnockback3();
|
||||
f32 getRedRupeeDirHitKnockback3();
|
||||
f32 getSilverRupeeDirHitKnockback3();
|
||||
f32 getGoldRupeeDirHitKnockback3();
|
||||
f32 getRupoorDirHitKnockback3();
|
||||
f32 getHeartDirHitKnockback3();
|
||||
|
||||
f32 getGreenRupeeDirHitKnockbackRand3();
|
||||
f32 getBlueRupeeDirHitKnockbackRand3();
|
||||
f32 getRedRupeeDirHitKnockbackRand3();
|
||||
f32 getSilverRupeeDirHitKnockbackRand3();
|
||||
f32 getGoldRupeeDirHitKnockbackRand3();
|
||||
f32 getRupoorDirHitKnockbackRand3();
|
||||
f32 getHeartDirHitKnockbackRand3();
|
||||
|
||||
f32 getGreenRupeeHitKnockback3();
|
||||
f32 getBlueRupeeHitKnockback3();
|
||||
f32 getRedRupeeHitKnockback3();
|
||||
f32 getSilverRupeeHitKnockback3();
|
||||
f32 getGoldRupeeHitKnockback3();
|
||||
f32 getRupoorHitKnockback3();
|
||||
f32 getHeartHitKnockback3();
|
||||
|
||||
f32 getGreenRupeeHitKnockbackRand3();
|
||||
f32 getBlueRupeeHitKnockbackRand3();
|
||||
f32 getRedRupeeHitKnockbackRand3();
|
||||
f32 getSilverRupeeHitKnockbackRand3();
|
||||
f32 getGoldRupeeHitKnockbackRand3();
|
||||
f32 getRupoorHitKnockbackRand3();
|
||||
f32 getHeartHitKnockbackRand3();
|
||||
|
||||
f32 fn_802577C0();
|
||||
f32 fn_802577D0();
|
||||
|
||||
/* 0x334 */ dItemMdl_c *mpMdl;
|
||||
/* 0x338 */ dShadowCircle_c mShdw;
|
||||
/* 0x340 */ mVec3_c field_0x340;
|
||||
/* 0x34C */ nw4r::ut::Color mColorFilter;
|
||||
@@ -157,45 +484,45 @@ private:
|
||||
/* 0xA2C */ dEmitter_c mEff_0xA2C;
|
||||
/* 0xA60 */ dEmitter_c mEff_0xA60;
|
||||
/* 0xA94 */ dAcRef_c<dAcOScatterSand> mCoveredSand;
|
||||
/* 0xAA0 */ dAcRef_c<dAcObjBase_c> mUnkRef;
|
||||
/* 0xAA0 */ dAcRef_c<dAcObjBase_c> mForceSignRef;
|
||||
/* 0xAAC */ mVec3_c posCopy;
|
||||
/* 0xAB8 */ fLiNdBa_c mNode;
|
||||
/* 0xAC4 */ ActorEventRelated mEventRelated;
|
||||
/* 0xB14 */ DowsingTarget mDowsingTarget;
|
||||
/* 0xB34 */ dAcItem_0xB34 *field_0xB34[2];
|
||||
/* 0xB34 */ dAcItem_0xB34 *field_0xB3C;
|
||||
/* 0xB40 */ UNKTYPE (dAcItem_c::*mFunc_0xB40)(UNKTYPE);
|
||||
/* 0xB4C */ UNKTYPE (dAcItem_c::*mFunc_0xB4C)(UNKTYPE);
|
||||
/* 0xB58 */ UNKTYPE (dAcItem_c::*mFunc_0xB58)(UNKTYPE);
|
||||
/* 0xB64 */ UNKTYPE (dAcItem_c::*mFunc_0xB64)(UNKTYPE);
|
||||
/* 0xB70 */ UNKTYPE (dAcItem_c::*mFunc_0xB70)(UNKTYPE);
|
||||
/* 0xB7C */ UNKTYPE (dAcItem_c::*mFunc_0xB7C)(UNKTYPE);
|
||||
/* 0xB88 */ UNKTYPE (dAcItem_c::*mFunc_0xB88)(UNKTYPE);
|
||||
/* 0xB94 */ UNKTYPE (dAcItem_c::*mFunc_0xB94)(UNKTYPE);
|
||||
/* 0xBA0 */ UNKTYPE (dAcItem_c::*mFunc_0xBA0)(UNKTYPE);
|
||||
/* 0xB34 */ dAcItem_0xB3C *field_0xB3C;
|
||||
/* 0xB40 */ void (dAcItem_c::*mFnAction)();
|
||||
/* 0xB4C */ void (dAcItem_c::*mFnBounce)();
|
||||
/* 0xB58 */ void (dAcItem_c::*mFunc_0xB58)();
|
||||
/* 0xB64 */ void (dAcItem_c::*mFnAction3)();
|
||||
/* 0xB70 */ bool (dAcItem_c::*mFnAction4)();
|
||||
/* 0xB7C */ f32 (dAcItem_c::*mFnGetGravity1)();
|
||||
/* 0xB88 */ f32 (dAcItem_c::*mFnGetHeartGravity)();
|
||||
/* 0xB94 */ f32 (dAcItem_c::*mFnGetRupeeGravity)();
|
||||
/* 0xBA0 */ f32 (dAcItem_c::*mFnGetGravity4)();
|
||||
/* 0xBAC */ UNKTYPE (dAcItem_c::*mFunc_0xBAC)(UNKTYPE);
|
||||
/* 0xBB8 */ UNKTYPE (dAcItem_c::*mFunc_0xBB8)(UNKTYPE);
|
||||
/* 0xBC4 */ UNKTYPE (dAcItem_c::*mFunc_0xBC4)(UNKTYPE);
|
||||
/* 0xBD0 */ UNKTYPE (dAcItem_c::*mFunc_0xBD0)(UNKTYPE);
|
||||
/* 0xBDC */ UNKTYPE (dAcItem_c::*mFunc_0xBDC)(UNKTYPE);
|
||||
/* 0xBE8 */ UNKTYPE (dAcItem_c::*mFunc_0xBE8)(UNKTYPE);
|
||||
/* 0xBF4 */ UNKTYPE (dAcItem_c::*mFunc_0xBF4)(UNKTYPE);
|
||||
/* 0xC00 */ UNKTYPE (dAcItem_c::*mFunc_0xC00)(UNKTYPE);
|
||||
/* 0xC0C */ UNKTYPE (dAcItem_c::*mFunc_0xC0C)(UNKTYPE);
|
||||
/* 0xC18 */ UNKTYPE (dAcItem_c::*mFunc_0xC18)(UNKTYPE);
|
||||
/* 0xC24 */ UNKTYPE (dAcItem_c::*mFunc_0xC24)(UNKTYPE);
|
||||
/* 0xC30 */ UNKTYPE (dAcItem_c::*mFunc_0xC30)(UNKTYPE);
|
||||
/* 0xC3C */ UNKTYPE (dAcItem_c::*mFunc_0xC3C)(UNKTYPE);
|
||||
/* 0xC48 */ UNKTYPE (dAcItem_c::*mFunc_0xC48)(UNKTYPE);
|
||||
/* 0xC54 */ UNKTYPE (dAcItem_c::*mFunc_0xC54)(UNKTYPE);
|
||||
/* 0xC60 */ UNKTYPE (dAcItem_c::*mFunc_0xC60)(UNKTYPE);
|
||||
/* 0xC6C */ UNKTYPE (dAcItem_c::*mFunc_0xC6C)(UNKTYPE);
|
||||
/* 0xC78 */ UNKTYPE (dAcItem_c::*mFunc_0xC78)(UNKTYPE);
|
||||
/* 0xC84 */ UNKTYPE (dAcItem_c::*mFunc_0xC84)(UNKTYPE);
|
||||
/* 0xC90 */ UNKTYPE (dAcItem_c::*mFunc_0xC90)(UNKTYPE);
|
||||
/* 0xBC4 */ f32 (dAcItem_c::*mFnGetFreestandingScale)();
|
||||
/* 0xBD0 */ f32 (dAcItem_c::*mFnGetScale)();
|
||||
/* 0xBDC */ f32 (dAcItem_c::*mFnGetPickupDemoScale)();
|
||||
/* 0xBE8 */ f32 (dAcItem_c::*mFnCallGetFreestandingScale)();
|
||||
/* 0xBF4 */ f32 (dAcItem_c::*mFnGetDirHitKnockback)();
|
||||
/* 0xC00 */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand)();
|
||||
/* 0xC0C */ f32 (dAcItem_c::*mFnGetHitKnockback)();
|
||||
/* 0xC18 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand)();
|
||||
/* 0xC24 */ f32 (dAcItem_c::*mFnGetHitSquareDistance2)();
|
||||
/* 0xC30 */ f32 (dAcItem_c::*mFnGetDirHitKnockback2)();
|
||||
/* 0xC3C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand2)();
|
||||
/* 0xC48 */ f32 (dAcItem_c::*mFnGetHitKnockback2)();
|
||||
/* 0xC54 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand2)();
|
||||
/* 0xC60 */ f32 (dAcItem_c::*mFnGetDirHitKnockback3)();
|
||||
/* 0xC6C */ f32 (dAcItem_c::*mFnGetDirHitKnockbackRand3)();
|
||||
/* 0xC78 */ f32 (dAcItem_c::*mFnGetHitKnockback3)();
|
||||
/* 0xC84 */ f32 (dAcItem_c::*mFnGetHitKnockbackRand3)();
|
||||
/* 0xC90 */ f32 (dAcItem_c::*mFn_0xC90)();
|
||||
/* 0xC9C */ UNKTYPE (dAcItem_c::*mFunc_0xC9C)(UNKTYPE);
|
||||
/* 0xCA8 */ UNKTYPE (dAcItem_c::*mFunc_0xCA8)(UNKTYPE);
|
||||
/* 0xCB4 */ UNKTYPE (dAcItem_c::*mFunc_0xCB4)(UNKTYPE);
|
||||
/* 0xCA8 */ void (dAcItem_c::*mFnSetBoundingBox)();
|
||||
/* 0xCB4 */ f32 (dAcItem_c::*mFn_0xCB4)(void);
|
||||
/* 0xCC0 */ dAcRef_c<dAcItem_c> mItemQueuePrev;
|
||||
/* 0xCCC */ dAcRef_c<dAcItem_c> mItemQueueNext;
|
||||
/* 0xCD8 */ f32 field_0xCD8;
|
||||
@@ -210,11 +537,11 @@ private:
|
||||
/* 0xD08 */ u8 _D08[0xD14 - 0xD08];
|
||||
/* 0xD14 */ f32 mFreestandingOffsetH;
|
||||
/* 0xD18 */ f32 field_0xD18;
|
||||
/* 0xD1C */ int mGetItemPouchSlot;
|
||||
/* 0xD20 */ int field_0xD20;
|
||||
/* 0xD1C */ s32 mGetItemPouchSlot;
|
||||
/* 0xD20 */ s32 field_0xD20;
|
||||
/* 0xD24 */ u8 _D24[0xD2C - 0xD24];
|
||||
/* 0xD2C */ u32 mFramesInAir;
|
||||
/* 0xD30 */ int mItemQuantity;
|
||||
/* 0xD30 */ s32 mItemQuantity;
|
||||
/* 0xD34 */ u32 mItemFlags;
|
||||
/* 0xD38 */ mAng3_c field_0xD38;
|
||||
/* 0xD3E */ u16 field_0xD3E;
|
||||
@@ -222,8 +549,7 @@ private:
|
||||
/* 0xD42 */ s16 field_0xD42;
|
||||
/* 0xD44 */ u16 mRealItemId;
|
||||
/* 0xD46 */ s16 mDespawnTimer;
|
||||
/* 0xD48 */ u8 field_0xD48;
|
||||
/* 0xD49 */ u8 field_0xD49;
|
||||
/* 0xD48 */ u16 field_0xD48;
|
||||
/* 0xD4A */ u8 field_0xD4A;
|
||||
/* 0xD4B */ u8 field_0xD4B;
|
||||
/* 0xD4C */ u8 field_0xD4C;
|
||||
|
||||
@@ -234,11 +234,17 @@ struct ItemFlagStruct {
|
||||
u8 mFlagKind;
|
||||
u8 field_0x07;
|
||||
};
|
||||
|
||||
struct ItemInitStruct {
|
||||
u8 _0x00[0x0D - 0x00];
|
||||
};
|
||||
|
||||
class dAcItemBase_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcItemBase_c() {}
|
||||
virtual ~dAcItemBase_c() {}
|
||||
virtual u16 getItemId();
|
||||
virtual u16 getItemIdFromParams() = 0;
|
||||
|
||||
static bool isValidItemTypeIdx(int itemId);
|
||||
static bool getItemTypeFromId(u16 itemID, u32 *pOutType);
|
||||
@@ -254,9 +260,12 @@ public:
|
||||
return mId;
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
u16 mId;
|
||||
|
||||
const ItemFlagStruct* getItemFlagStruct() const;
|
||||
static const ItemFlagStruct* getItemFlagStruct(u16 id);
|
||||
|
||||
static const ItemFlagStruct sDefaultFlagStruct;
|
||||
static const ItemFlagStruct sItemFlagStructs[167];
|
||||
static const u32 sItemTypeFlags[MAX_ITEM_ID - 1];
|
||||
|
||||
@@ -388,7 +388,7 @@ public:
|
||||
// bool ChkRoofHit() {
|
||||
// return MaskRoofHit();
|
||||
// }
|
||||
void OffClrSpeedY() {
|
||||
void SetClrSpeedY() {
|
||||
mFlags |= CLR_SPEED_Y;
|
||||
}
|
||||
bool ChkClrSpeedY() {
|
||||
|
||||
@@ -461,6 +461,10 @@ public:
|
||||
void OffRPrm(u32 m) {
|
||||
mRPrm = (mRPrm & ~m) | m;
|
||||
}
|
||||
|
||||
void SetCallback(cCcD_HitCallback cb) {
|
||||
mHit_cb = cb;
|
||||
}
|
||||
};
|
||||
|
||||
class cCcD_ObjAt : public cCcD_GAtTgCoCommonBase {
|
||||
@@ -491,10 +495,6 @@ public:
|
||||
return MskSPrm(1);
|
||||
}
|
||||
|
||||
void SetCallback(cCcD_HitCallback cb) {
|
||||
mHit_cb = cb;
|
||||
}
|
||||
|
||||
u32 MskType(u32 mask) const {
|
||||
return mSrc.mType & mask;
|
||||
}
|
||||
@@ -657,6 +657,10 @@ public:
|
||||
field_0x4B = val;
|
||||
}
|
||||
|
||||
void SetSrcField_0x0C(u16 val) {
|
||||
mSrc.field_0x0C = val;
|
||||
}
|
||||
|
||||
void SetInfo_0x1(u8 val) {
|
||||
mSrc.mInfo.field_0x1 = val;
|
||||
}
|
||||
@@ -665,6 +669,10 @@ public:
|
||||
mSrc.mInfo.field_0x2 = val;
|
||||
}
|
||||
|
||||
void OnInfo_0x2(u16 val) {
|
||||
mSrc.mInfo.field_0x2 |= val;
|
||||
}
|
||||
|
||||
public:
|
||||
/* 0x1C */ cCcD_SrcGObjTg mSrc;
|
||||
/* 0x2C */ mVec3_c mAtHitDir;
|
||||
@@ -858,6 +866,10 @@ public:
|
||||
mTg.SetFlag_0xA(flag);
|
||||
}
|
||||
|
||||
void SetTgSrcField_0x0C(u16 val) {
|
||||
mTg.SetSrcField_0x0C(val);
|
||||
}
|
||||
|
||||
bool ChkTgHit() {
|
||||
return mTg.MskRPrm(1) != 0 && mTg.GetActor() != nullptr;
|
||||
}
|
||||
@@ -917,6 +929,10 @@ public:
|
||||
mAt.SetCallback(cb);
|
||||
}
|
||||
|
||||
void SetCoCallback(cCcD_HitCallback cb) {
|
||||
mCo.SetCallback(cb);
|
||||
}
|
||||
|
||||
u32 ChkTgNoAtHitInfSet() const {
|
||||
return mTg.MskSPrm(0x40);
|
||||
}
|
||||
@@ -997,6 +1013,12 @@ public:
|
||||
void OnTgElectric() {
|
||||
return mTg.OnSPrm(0x40000);
|
||||
}
|
||||
void OnTg_0x800000() {
|
||||
return mTg.OnSPrm(0x800000);
|
||||
}
|
||||
void OnTg_0x1000000() {
|
||||
return mTg.OnSPrm(0x1000000);
|
||||
}
|
||||
void OnTg_0x8000000() {
|
||||
return mTg.OnSPrm(0x8000000);
|
||||
}
|
||||
@@ -1006,6 +1028,9 @@ public:
|
||||
void ClrTg_0x10000() {
|
||||
return mTg.OffSPrm(0x10000);
|
||||
}
|
||||
void ClrTg_0x800000() {
|
||||
return mTg.OffSPrm(0x800000);
|
||||
}
|
||||
void ClrTg_0x8000000() {
|
||||
return mTg.OffSPrm(0x8000000);
|
||||
}
|
||||
@@ -1016,6 +1041,9 @@ public:
|
||||
void OnTg_0x200000() {
|
||||
mTg.OnSPrm(0x200000);
|
||||
}
|
||||
void ClrTg_0x200000() {
|
||||
mTg.OffSPrm(0x200000);
|
||||
}
|
||||
|
||||
void SetTg_0x4B(u8 val) {
|
||||
mTg.Set_0x4B(val);
|
||||
@@ -1026,6 +1054,9 @@ public:
|
||||
void SetTgInfo_0x2(u16 val) {
|
||||
mTg.SetInfo_0x2(val);
|
||||
}
|
||||
void OnTgInfo_0x2(u16 val) {
|
||||
mTg.OnInfo_0x2(val);
|
||||
}
|
||||
void SetTg_0x40000000() {
|
||||
mTg.OnSPrm(0x40000000);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef D_T_FORCE_GET_FLAG_H
|
||||
#define D_T_FORCE_GET_FLAG_H
|
||||
|
||||
#include "d/t/d_tg.h"
|
||||
|
||||
class dTgForceGetFlag_c : public dTg_c {
|
||||
public:
|
||||
static u32 tearIdxToParam(s32 tearNumber);
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -14,6 +14,7 @@ class dAcItem_c;
|
||||
// vtable at 80533eb0
|
||||
class dItemMdl_c : public dMdl_c {
|
||||
public:
|
||||
dItemMdl_c() : field_0x14(ITEM_MDL_UNK0x14_0) {}
|
||||
/* 0x08 */ virtual ~dItemMdl_c() {}
|
||||
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) = 0;
|
||||
/* 0x10 */ virtual void vt_0x10(u8) = 0;
|
||||
|
||||
@@ -69,6 +69,7 @@ private:
|
||||
// Maybe a bad name because fairies etc. are also supported
|
||||
class dItemMdlBottle_c : public dItemMdl_c {
|
||||
public:
|
||||
dItemMdlBottle_c() : mFlags(0) {}
|
||||
/* 0x08 */ virtual ~dItemMdlBottle_c() {}
|
||||
/* 0x0C */ virtual bool init(u16 itemId, dAcItem_c *item, mAllocator_c *allocator) override;
|
||||
/* 0x10 */ virtual void vt_0x10(u8) override;
|
||||
|
||||
@@ -185,7 +185,7 @@ int dAcOBarrel_c::actorCreate() {
|
||||
}
|
||||
mSph.Set(sSrcSph);
|
||||
mSph.SetStts(mStts);
|
||||
mObjAcch.OffClrSpeedY();
|
||||
mObjAcch.SetClrSpeedY();
|
||||
|
||||
mAcceleration = -4.f;
|
||||
mMaxSpeed = -40.f;
|
||||
|
||||
@@ -51,7 +51,7 @@ int dAcOTumbleWeed_c::actorCreate() {
|
||||
|
||||
mObjAcch.Set(this, 1, &mAcchCir);
|
||||
mAcchCir.SetWall(20.f, 60.f);
|
||||
mObjAcch.OffClrSpeedY();
|
||||
mObjAcch.SetClrSpeedY();
|
||||
mObjAcch.SetGndThinCellingOff();
|
||||
|
||||
mStts.SetRank(3);
|
||||
|
||||
@@ -53,10 +53,8 @@ dAcBase_c::dAcBase_c()
|
||||
mViewClipIdx(s_Create_ViewClipIdx),
|
||||
mActorNode(nullptr),
|
||||
mRoomID(s_Create_RoomId),
|
||||
mActorSubtype(s_Create_Subtype) {
|
||||
mJStudioActor = 0;
|
||||
someStr[0] = 0;
|
||||
|
||||
mActorSubtype(s_Create_Subtype),
|
||||
mJStudioActor(0) {
|
||||
if (s_Create_Position) {
|
||||
setPosition(*s_Create_Position);
|
||||
}
|
||||
@@ -80,7 +78,7 @@ dAcBase_c::dAcBase_c()
|
||||
if (mpActorInfo == nullptr) {
|
||||
mpActorInfo = getActorInfoByProfileAndSubtype(mProfileName, mActorSubtype);
|
||||
}
|
||||
someStr[0] = '\0';
|
||||
mSomeStr.empty();
|
||||
}
|
||||
|
||||
dAcBase_c::~dAcBase_c() {}
|
||||
|
||||
+705
-14
@@ -1,12 +1,28 @@
|
||||
#include "d/a/d_a_item.h"
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_itembase.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_pouch.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/flag/dungeonflag_manager.h"
|
||||
#include "d/flag/flag_index.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "d/snd/d_snd_small_effect_mgr.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "d/t/d_t_force_get_flag.h"
|
||||
#include "f/f_list_mg.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
#include "toBeSorted/item_mdl_item.h"
|
||||
#include "toBeSorted/item_mdl_light_fruit.h"
|
||||
#include "toBeSorted/item_mdl_misc.h"
|
||||
#include "toBeSorted/item_mdl_rupee.h"
|
||||
#include "toBeSorted/item_mdl_stamina_fruit.h"
|
||||
|
||||
const ItemFlagStruct dAcItemBase_c::sDefaultFlagStruct = {0x28, 0x3C, 0x1E, 0xFF, 0x0000, 0x02, 0x01};
|
||||
const ItemFlagStruct dAcItemBase_c::sItemFlagStructs[167] = {
|
||||
@@ -219,6 +235,42 @@ const u32 dAcItemBase_c::sItemTypeFlags[MAX_ITEM_ID - 1] = {
|
||||
0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
};
|
||||
|
||||
static const dCcD_SrcCyl sSrcCyl = {
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 0x08, 0x407},
|
||||
0,
|
||||
0},
|
||||
{0xE9}},
|
||||
{40.0f, 60.0f}
|
||||
};
|
||||
|
||||
static const char *const sResNodeName = "Set";
|
||||
/* static */ extern const char *const sDefaultGetItem = "DefaultGetItem";
|
||||
/* static */ extern const char *const sItemGetGorgeous = "ItemGetGorgeous";
|
||||
/* static */ extern const char *const sItemGetDefaultTbox = "ItemGetDefaultTBox";
|
||||
/* static */ extern const char *const sItemGetGorgeousTbox = "ItemGetGorgeousTBox";
|
||||
/* static */ extern const char *const sItemGetBird = "ItemGetBird";
|
||||
|
||||
struct TearIdIdx {
|
||||
s32 idx;
|
||||
u16 itemId;
|
||||
u32 _0x04;
|
||||
u32 _0x08;
|
||||
};
|
||||
|
||||
/* static */ extern "C" TearIdIdx sTearIdxes[] = {
|
||||
{0, ITEM_FARORE_TEAR},
|
||||
{1, ITEM_DIN_TEAR},
|
||||
{2, ITEM_NAYRU_TEAR},
|
||||
{3, ITEM_SACRED_TEAR},
|
||||
};
|
||||
|
||||
/* static */ extern const char *const sGetFairyBody = "GetFairy_body";
|
||||
/* static */ extern const char *const sBottleFairy_body = "BottleFairy_body";
|
||||
|
||||
|
||||
bool dAcItemBase_c::isValidItemTypeIdx(int itemId) {
|
||||
return itemId < ARRAY_LENGTH(sItemTypeFlags);
|
||||
}
|
||||
@@ -306,18 +358,22 @@ fLiMgBa_c dAcItem_c::sItemList;
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(ITEM, dAcItem_c, fProfile::ITEM, 0x2B, 0, 2);
|
||||
|
||||
STATE_DEFINE(dAcItem_c, Wait);
|
||||
STATE_DEFINE(dAcItem_c, Carry);
|
||||
STATE_DEFINE(dAcItem_c, GetBeetle);
|
||||
STATE_DEFINE(dAcItem_c, WaitGet);
|
||||
STATE_DEFINE(dAcItem_c, Get);
|
||||
STATE_DEFINE(dAcItem_c, WaitGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitForcedGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, GetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitTBoxGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, ResurgeWait);
|
||||
STATE_DEFINE(dAcItem_c, WaitTurnOff);
|
||||
STATE_DEFINE(dAcItem_c, WaitSacredDewGetEffect);
|
||||
const mVec3_c dAcItem_c::sFreestandingDowsingOffset(0.0f, 25.0f, 0.0f);
|
||||
|
||||
const dAcItem_c::sStaticPtmf dAcItem_c::sStaticPtmfs[] = {
|
||||
&dAcItem_c::fn_80248020,
|
||||
nullptr,
|
||||
&dAcItem_c::fn_80248010,
|
||||
nullptr,
|
||||
&dAcItem_c::fn_80255B30,
|
||||
&dAcItem_c::fn_80255BA0,
|
||||
&dAcItem_c::fn_80248040,
|
||||
nullptr,
|
||||
&dAcItem_c::fn_80248030,
|
||||
nullptr,
|
||||
&dAcItem_c::fn_80255BD0,
|
||||
&dAcItem_c::fn_80255C40,
|
||||
};
|
||||
|
||||
dAcItem_c::dAcItem_c()
|
||||
: mStateMgr(*this),
|
||||
@@ -360,14 +416,649 @@ dAcItem_c::dAcItem_c()
|
||||
sItemList.append(&mNode);
|
||||
mTargetFiRelated = 3;
|
||||
}
|
||||
|
||||
dAcItem_c::~dAcItem_c() {
|
||||
delete field_0xB3C;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
delete field_0xB34[i];
|
||||
}
|
||||
delete mpMdl;
|
||||
mDowsingTarget.doUnregister();
|
||||
}
|
||||
|
||||
bool dAcItem_c::createHeap() {
|
||||
if (dItemMdlPut_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlPut_c();
|
||||
} else if (dItemMdlShield_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlShield_c();
|
||||
} else if (dItemMdlBottle_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlBottle_c();
|
||||
} else if (dItemMdlTear_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlTear_c();
|
||||
} else if (dItemMdlFirefly_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlFirefly_c();
|
||||
} else if (dItemMdlPotion_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlPotion_c();
|
||||
} else if (dItemMdlItem_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlItem_c();
|
||||
} else if (dItemMdlRupee_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlRupee_c();
|
||||
} else if (dItemMdlLightFruit_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlLightFruit_c();
|
||||
} else if (dItemMdlStaminaFruit_c::isMdlForItemId(mRealItemId)) {
|
||||
mpMdl = new dItemMdlStaminaFruit_c();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mpMdl == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!mpMdl->init(mRealItemId, this, &mAllocator)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
field_0xB34[0] = new dAcItem_0xB34_1();
|
||||
if (field_0xB34[0] == nullptr) {
|
||||
return false;
|
||||
}
|
||||
field_0xB34[1] = new dAcItem_0xB34_2();
|
||||
if (field_0xB34[1] == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getItemInitStruct()->_0x00[6] != 0) {
|
||||
field_0xB3C = new dAcItem_0xB3C_2(getItemInitStruct()->_0x00[4], getItemInitStruct()->_0x00[5]);
|
||||
if (mId == ITEM_STAMINA_FRUIT) {
|
||||
// TODO ...
|
||||
field_0xB3C->vt_0x0C(150 /* 0x96 */);
|
||||
} else if (isLightFruit()) {
|
||||
field_0xB3C->vt_0x0C(0 /* 0x0 */);
|
||||
}
|
||||
} else {
|
||||
field_0xB3C = new dAcItem_0xB3C_1(getItemInitStruct()->_0x00[4], getItemInitStruct()->_0x00[5]);
|
||||
}
|
||||
|
||||
if (field_0xB3C == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO this function pools .data but doesn't pool .bss for some reason
|
||||
int dAcItem_c::create() {
|
||||
u32 flag = getFromParams(0xA, 0xFF);
|
||||
if (flag < 0xFF && SceneflagManager::sInstance->checkBoolFlag(mRoomID, flag)) {
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
u32 paramId = getItemIdFromParams();
|
||||
if (paramId == ITEM_NONE) {
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (isItemDropFromEnemy()) {
|
||||
mId = determineActualItemIdFromItem(paramId);
|
||||
} else {
|
||||
mId = paramId;
|
||||
}
|
||||
|
||||
if (isGratitudeCrystal()) {
|
||||
if (!StoryflagManager::sInstance->getCounterOrFlag(STORYFLAG_GRATITUDE_QUEST_STARTED) || !dScGame_c::currentSpawnInfo.isNight()) {
|
||||
return FAILED;
|
||||
}
|
||||
} else if (isHeart()) {
|
||||
if (isItemDropFromEnemy() && dScGame_c::isHeroMode()) {
|
||||
switch (adventurePouchCountItem(ITEM_HEART_MEDAL)) {
|
||||
case 0: return FAILED;
|
||||
case 1:
|
||||
if (cM::rndInt(2) < 1) {
|
||||
return FAILED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setItemId(getItemId2());
|
||||
|
||||
switch (getItemInitStruct()->_0x00[9]) {
|
||||
case 0:
|
||||
mFn_0xC90 = &dAcItem_c::fn_80254DE0;
|
||||
break;
|
||||
case 1:
|
||||
mFn_0xC90 = &dAcItem_c::fn_80254DF0;
|
||||
break;
|
||||
default:
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (isSmallKey()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getSmallKeyFreestandingScale;
|
||||
} else if (isGreenRupee() || isBlueRupee() || isRedRupee() || isRupoor()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getLowValueRupeeFreestandingScale;
|
||||
} else if (isSilverRupee() || isGoldRupee()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getHighValueRupeeFreestandingScale;
|
||||
} else if (isSlingshot()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getSlingshotFreestandingScale;
|
||||
} else if (isEldinOre()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getEldinOreFreestandingScale;
|
||||
} else if (isJellyBlob()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getJellyBlobFreestandingScale;
|
||||
} else if (isUnkTreasureGroup1()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getUnkTreasureGroup1FreestandingScale;
|
||||
} else if (isHeartPiece()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getHeartPieceFreestandingScale;
|
||||
} else if (isGratitudeCrystal()) {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getGratitudeCrystalFreestandingScale;
|
||||
} else {
|
||||
mFnGetFreestandingScale = &dAcItem_c::getDefaultFreestandingScale;
|
||||
}
|
||||
|
||||
if (isTreasure3()) {
|
||||
mFnGetScale = &dAcItem_c::getTreasure3Scale;
|
||||
} else if (isInsect()) {
|
||||
mFnGetScale = &dAcItem_c::getInsectScale;
|
||||
} else {
|
||||
mFnGetScale = &dAcItem_c::getDefaultScale;
|
||||
}
|
||||
|
||||
if (isSilverRupee() || isGoldRupee()) {
|
||||
mFnGetPickupDemoScale = &dAcItem_c::getHighValueRupeePickupScale;
|
||||
} else {
|
||||
mFnGetPickupDemoScale = &dAcItem_c::getDefaultPickupScale;
|
||||
}
|
||||
|
||||
mFnCallGetFreestandingScale = &dAcItem_c::callGetFreestandingModelScale;
|
||||
|
||||
switch (getItemInitStruct()->_0x00[10]) {
|
||||
case 0:
|
||||
mFnAction = &dAcItem_c::moveNormal0;
|
||||
break;
|
||||
case 1:
|
||||
mFnAction = &dAcItem_c::moveNormal1;
|
||||
break;
|
||||
case 2:
|
||||
mFnAction = &dAcItem_c::moveSpecial;
|
||||
break;
|
||||
default:
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
if (isHeart2()) {
|
||||
mFunc_0xB58 = &dAcItem_c::fn_802555F0;
|
||||
} else {
|
||||
mFunc_0xB58 = &dAcItem_c::fn_802555D0;
|
||||
}
|
||||
|
||||
if (isAnyRupee()) {
|
||||
mFnBounce = &dAcItem_c::bounceRupee;
|
||||
} else if (isHeart2()) {
|
||||
mFnBounce = &dAcItem_c::bounceNone;
|
||||
} else {
|
||||
mFnBounce = &dAcItem_c::bounceNormal;
|
||||
}
|
||||
|
||||
if (isAnyRupee()) {
|
||||
mFnAction3 = &dAcItem_c::fn_802558F0;
|
||||
} else if (isAnyTear() || isTriforce() || isHeartPiece()) {
|
||||
mFnAction3 = &dAcItem_c::fn_80255AE0;
|
||||
} else {
|
||||
mFnAction3 = &dAcItem_c::fn_802558E0;
|
||||
}
|
||||
|
||||
if (getItemInitStruct()->_0x00[8] == 0) {
|
||||
mFnAction4 = &dAcItem_c::fn_80248060;
|
||||
} else if (getItemInitStruct()->_0x00[8] == 1) {
|
||||
mFnAction4 = &dAcItem_c::fn_80248050;
|
||||
} else if (getItemInitStruct()->_0x00[8] == 2) {
|
||||
mFnAction4 = &dAcItem_c::fn_80255D50;
|
||||
} else if (getItemInitStruct()->_0x00[8] == 3) {
|
||||
mFnAction4 = &dAcItem_c::fn_80255DB0;
|
||||
} else if (getItemInitStruct()->_0x00[8] == 4) {
|
||||
mFnAction4 = &dAcItem_c::fn_80248060;
|
||||
} else {
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
mSubtype = mId;
|
||||
|
||||
CREATE_ALLOCATOR(dAcItem_c);
|
||||
|
||||
if (!getFromParams(0x13, 0x1)) {
|
||||
mpMdl->setPriorityDraw();
|
||||
}
|
||||
mStts.SetRank(1);
|
||||
mCyl.Set(sSrcCyl);
|
||||
mCyl.SetStts(mStts);
|
||||
mCyl.SetR(getItemFlagStruct(mId)->field_0x00);
|
||||
mCyl.SetH(getItemFlagStruct(mId)->field_0x01);
|
||||
|
||||
setupUnkColliderFlags2();
|
||||
|
||||
if (isAnyRupee()) {
|
||||
mCyl.OnTgInfo_0x2(0x8);
|
||||
mCyl.SetTgSrcField_0x0C(0x8);
|
||||
}
|
||||
|
||||
u32 unk = getParams2Lower_shift1_0x7();
|
||||
if ((mId == ITEM_STAMINA_FRUIT && unk) || isLightFruit() || isAnyTear() || isTriforce() || isGratitudeCrystal()) {
|
||||
mCyl.SetCoGrp(0x2);
|
||||
} else {
|
||||
mCyl.SetCoGrp(0xE);
|
||||
}
|
||||
|
||||
if (mId == ITEM_STAMINA_FRUIT || isHeartPiece() || isTriforce()) {
|
||||
mCyl.ClrTg_0x800000();
|
||||
} else {
|
||||
mCyl.OnTg_0x800000();
|
||||
}
|
||||
|
||||
if (isHeartPiece()) {
|
||||
mCyl.OnTg_0x1000000();
|
||||
}
|
||||
|
||||
if (isHeartPiece()) {
|
||||
mCyl.SetTg_0x4C(0x6CC0);
|
||||
} else if (isBabyRattle()) {
|
||||
mCyl.SetTg_0x4C(0x6480);
|
||||
} else if (!isAnyRupee() && !isHeart2() && mId != ITEM_STAMINA_FRUIT) {
|
||||
mCyl.SetTg_0x4C(0x6480);
|
||||
}
|
||||
|
||||
if (isBabyRattle()) {
|
||||
mCyl.SetTgInfo_0x1(0x13);
|
||||
} else if (isHeartPiece()) {
|
||||
mCyl.SetTgInfo_0x1(0x15);
|
||||
} else if (!isAnyRupee() && !isHeart2() && mId != ITEM_STAMINA_FRUIT) {
|
||||
mCyl.SetTgInfo_0x1(0x13);
|
||||
}
|
||||
|
||||
if (isHeartPiece()) {
|
||||
mCyl.ClrTg_0x200000();
|
||||
} else {
|
||||
mCyl.OnTg_0x200000();
|
||||
}
|
||||
|
||||
mCyl.SetCoCallback(hitCallback);
|
||||
mAcchCir.SetWall(getItemFlagStruct(getItemId())->field_0x01 * 0.5f, getItemFlagStruct(getItemId())->field_0x00 * 0.6f);
|
||||
mObjAcch.Set(this, 1, &mAcchCir);
|
||||
mObjAcch.field_0x0D4 = 50.0f;
|
||||
mObjAcch.SetClrSpeedY();
|
||||
mObjAcch.SetField_0xC(4);
|
||||
mAcceleration = -2.0f;
|
||||
mMaxSpeed = -80.0f;
|
||||
|
||||
mGetItemPouchSlot = sGetItemPouchSlot;
|
||||
mItemQuantity = sGetItemQuantity;
|
||||
s32 subType = getSubtypeFromParam(mParams);
|
||||
if (subType != 1 && subType != 2 && subType != 3 && subType != 4 && subType != 5 && subType != 6) {
|
||||
fn_80253F90(true);
|
||||
} else {
|
||||
fn_80253F90(false);
|
||||
}
|
||||
|
||||
if (getSubtypeFromParam(mParams) == 2) {
|
||||
fn_80256790();
|
||||
} else {
|
||||
fn_802567D0();
|
||||
}
|
||||
|
||||
// These need to not pool...
|
||||
switch (getSubtypeFromParam(mParams)) {
|
||||
default:
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
break;
|
||||
case 1:
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
break;
|
||||
case 2:
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
break;
|
||||
case 3:
|
||||
onTouchLink();
|
||||
break;
|
||||
case 4:
|
||||
mStateMgr.changeState(StateID_Get);
|
||||
break;
|
||||
case 5:
|
||||
mStateMgr.changeState(StateID_WaitForcedGetDemo);
|
||||
break;
|
||||
case 6:
|
||||
mStateMgr.changeState(StateID_GetBeetle);
|
||||
break;
|
||||
case 7:
|
||||
mStateMgr.changeState(StateID_WaitTBoxGetDemo);
|
||||
break;
|
||||
}
|
||||
|
||||
fn_80255DF0();
|
||||
fn_80254BB0();
|
||||
|
||||
if (isHeart()) {
|
||||
setDespawnTimer(600);
|
||||
} else {
|
||||
setDespawnTimer(300);
|
||||
}
|
||||
|
||||
if (isGreenRupee() || isBlueRupee() || isRedRupee() || isRupoor()) {
|
||||
mFnSetBoundingBox = &dAcItem_c::setLowValueRupeeBoundingBox;
|
||||
} else if (isSilverRupee() || isGoldRupee()) {
|
||||
mFnSetBoundingBox = &dAcItem_c::setHighValueRupeeBoundingBox;
|
||||
} else if (isArrowBundle()) {
|
||||
mFnSetBoundingBox = &dAcItem_c::setArrowBundleBoundingBox;
|
||||
} else {
|
||||
mFnSetBoundingBox = &dAcItem_c::setDefaultBoundingBox;
|
||||
}
|
||||
|
||||
applyBoundingBox();
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_SMALL_KEY: mFnGetGravity1 = &dAcItem_c::getSmallKeyGravity1; break;
|
||||
case ITEM_GREEN_RUPEE: mFnGetGravity1 = &dAcItem_c::getGreenRupeeGravity1; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetGravity1 = &dAcItem_c::getBlueRupeeGravity1; break;
|
||||
case ITEM_RED_RUPEE: mFnGetGravity1 = &dAcItem_c::getRedRupeeGravity1; break;
|
||||
case ITEM_HEART: mFnGetGravity1 = &dAcItem_c::getHeartGravity1; break;
|
||||
case ITEM_SINGLE_ARROW: mFnGetGravity1 = &dAcItem_c::getSingleArrowGravity1; break;
|
||||
case ITEM_BUNDLE_ARROWS: mFnGetGravity1 = &dAcItem_c::getArrowBundleGravity1; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetGravity1 = &dAcItem_c::getSilverRupeeGravity1; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetGravity1 = &dAcItem_c::getGoldRupeeGravity1; break;
|
||||
case ITEM_RUPOOR: mFnGetGravity1 = &dAcItem_c::getRupoorGravity1; break;
|
||||
case ITEM_5_BOMBS: mFnGetGravity1 = &dAcItem_c::get5BombsGravity1; break;
|
||||
case ITEM_10_BOMBS: mFnGetGravity1 = &dAcItem_c::get10BombsGravity1; break;
|
||||
case ITEM_FARORE_TEAR: mFnGetGravity1 = &dAcItem_c::getFaroreTearGravity1; break;
|
||||
case ITEM_5_DEKU_SEEDS: mFnGetGravity1 = &dAcItem_c::get5SeedsGravity1; break;
|
||||
default: mFnGetGravity1 = &dAcItem_c::getDefaultGravity1; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_HEART: mFnGetHeartGravity = &dAcItem_c::getHeartGravity2; break;
|
||||
default: mFnGetHeartGravity = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetRupeeGravity = &dAcItem_c::getGreenRupeeGravity3; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetRupeeGravity = &dAcItem_c::getBlueRupeeGravity3; break;
|
||||
case ITEM_RED_RUPEE: mFnGetRupeeGravity = &dAcItem_c::getRedRupeeGravity3; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetRupeeGravity = &dAcItem_c::getSilverRupeeGravity3; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetRupeeGravity = &dAcItem_c::getGoldRupeeGravity3; break;
|
||||
case ITEM_RUPOOR: mFnGetRupeeGravity = &dAcItem_c::getRupoorGravity3; break;
|
||||
default: mFnGetRupeeGravity = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_SMALL_KEY: mFnGetGravity4 = &dAcItem_c::getSmallKeyGravity4; break;
|
||||
case ITEM_GREEN_RUPEE: mFnGetGravity4 = &dAcItem_c::getGreenRupeeGravity4; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetGravity4 = &dAcItem_c::getBlueRupeeGravity4; break;
|
||||
case ITEM_RED_RUPEE: mFnGetGravity4 = &dAcItem_c::getRedRupeeGravity4; break;
|
||||
case ITEM_HEART: mFnGetGravity4 = &dAcItem_c::getHeartGravity4; break;
|
||||
case ITEM_SINGLE_ARROW: mFnGetGravity4 = &dAcItem_c::getSingleArrowGravity4; break;
|
||||
case ITEM_BUNDLE_ARROWS: mFnGetGravity4 = &dAcItem_c::getArrowBundleGravity4; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetGravity4 = &dAcItem_c::getSilverRupeeGravity4; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetGravity4 = &dAcItem_c::getGoldRupeeGravity4; break;
|
||||
case ITEM_RUPOOR: mFnGetGravity4 = &dAcItem_c::getRupoorGravity4; break;
|
||||
case ITEM_5_BOMBS: mFnGetGravity4 = &dAcItem_c::get5BombsGravity4; break;
|
||||
case ITEM_10_BOMBS: mFnGetGravity4 = &dAcItem_c::get10BombsGravity4; break;
|
||||
case ITEM_FARORE_TEAR: mFnGetGravity4 = &dAcItem_c::getFaroreTearGravity4; break;
|
||||
case ITEM_5_DEKU_SEEDS: mFnGetGravity4 = &dAcItem_c::get5SeedsGravity4; break;
|
||||
default: mFnGetGravity4 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockback = &dAcItem_c::getGreenRupeeDirHitKnockback; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockback = &dAcItem_c::getBlueRupeeDirHitKnockback; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockback = &dAcItem_c::getRedRupeeDirHitKnockback; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockback = &dAcItem_c::getSilverRupeeDirHitKnockback; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockback = &dAcItem_c::getGoldRupeeDirHitKnockback; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockback = &dAcItem_c::getRupoorDirHitKnockback; break;
|
||||
default: mFnGetDirHitKnockback = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockbackRand = &dAcItem_c::getGreenRupeeDirHitKnockbackRand; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockbackRand = &dAcItem_c::getBlueRupeeDirHitKnockbackRand; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockbackRand = &dAcItem_c::getRedRupeeDirHitKnockbackRand; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockbackRand = &dAcItem_c::getSilverRupeeDirHitKnockbackRand; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockbackRand = &dAcItem_c::getGoldRupeeDirHitKnockbackRand; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockbackRand = &dAcItem_c::getRupoorDirHitKnockbackRand; break;
|
||||
default: mFnGetDirHitKnockbackRand = nullptr; break;
|
||||
}
|
||||
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockback = &dAcItem_c::getGreenRupeeHitKnockback; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockback = &dAcItem_c::getBlueRupeeHitKnockback; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockback = &dAcItem_c::getRedRupeeHitKnockback; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockback = &dAcItem_c::getSilverRupeeHitKnockback; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockback = &dAcItem_c::getGoldRupeeHitKnockback; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockback = &dAcItem_c::getRupoorHitKnockback; break;
|
||||
default: mFnGetHitKnockback = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockbackRand = &dAcItem_c::getGreenRupeeHitKnockbackRand; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockbackRand = &dAcItem_c::getBlueRupeeHitKnockbackRand; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockbackRand = &dAcItem_c::getRedRupeeHitKnockbackRand; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockbackRand = &dAcItem_c::getSilverRupeeHitKnockbackRand; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockbackRand = &dAcItem_c::getGoldRupeeHitKnockbackRand; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockbackRand = &dAcItem_c::getRupoorHitKnockbackRand; break;
|
||||
default: mFnGetHitKnockbackRand = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitSquareDistance2 = &dAcItem_c::getGreenRupeeHitSquareDistance2; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitSquareDistance2 = &dAcItem_c::getBlueRupeeHitSquareDistance2; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitSquareDistance2 = &dAcItem_c::getRedRupeeHitSquareDistance2; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitSquareDistance2 = &dAcItem_c::getSilverRupeeHitSquareDistance2; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitSquareDistance2 = &dAcItem_c::getGoldRupeeHitSquareDistance2; break;
|
||||
case ITEM_RUPOOR: mFnGetHitSquareDistance2 = &dAcItem_c::getRupoorHitSquareDistance2; break;
|
||||
case ITEM_HEART: mFnGetHitSquareDistance2 = &dAcItem_c::getHeartHitSquareDistance2; break;
|
||||
default: mFnGetHitSquareDistance2 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockback2 = &dAcItem_c::getGreenRupeeDirHitKnockback2; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockback2 = &dAcItem_c::getBlueRupeeDirHitKnockback2; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockback2 = &dAcItem_c::getRedRupeeDirHitKnockback2; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockback2 = &dAcItem_c::getSilverRupeeDirHitKnockback2; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockback2 = &dAcItem_c::getGoldRupeeDirHitKnockback2; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockback2 = &dAcItem_c::getRupoorDirHitKnockback2; break;
|
||||
case ITEM_HEART: mFnGetDirHitKnockback2 = &dAcItem_c::getHeartDirHitKnockback2; break;
|
||||
default: mFnGetDirHitKnockback2 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getGreenRupeeDirHitKnockbackRand2; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getBlueRupeeDirHitKnockbackRand2; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getRedRupeeDirHitKnockbackRand2; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getSilverRupeeDirHitKnockbackRand2; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getGoldRupeeDirHitKnockbackRand2; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getRupoorDirHitKnockbackRand2; break;
|
||||
case ITEM_HEART: mFnGetDirHitKnockbackRand2 = &dAcItem_c::getHeartDirHitKnockbackRand2; break;
|
||||
default: mFnGetDirHitKnockbackRand2 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockback2 = &dAcItem_c::getGreenRupeeHitKnockback2; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockback2 = &dAcItem_c::getBlueRupeeHitKnockback2; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockback2 = &dAcItem_c::getRedRupeeHitKnockback2; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockback2 = &dAcItem_c::getSilverRupeeHitKnockback2; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockback2 = &dAcItem_c::getGoldRupeeHitKnockback2; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockback2 = &dAcItem_c::getRupoorHitKnockback2; break;
|
||||
case ITEM_HEART: mFnGetHitKnockback2 = &dAcItem_c::getHeartHitKnockback2; break;
|
||||
default: mFnGetHitKnockback2 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockbackRand2 = &dAcItem_c::getGreenRupeeHitKnockbackRand2; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockbackRand2 = &dAcItem_c::getBlueRupeeHitKnockbackRand2; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockbackRand2 = &dAcItem_c::getRedRupeeHitKnockbackRand2; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockbackRand2 = &dAcItem_c::getSilverRupeeHitKnockbackRand2; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockbackRand2 = &dAcItem_c::getGoldRupeeHitKnockbackRand2; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockbackRand2 = &dAcItem_c::getRupoorHitKnockbackRand2; break;
|
||||
case ITEM_HEART: mFnGetHitKnockbackRand2 = &dAcItem_c::getHeartHitKnockbackRand2; break;
|
||||
default: mFnGetHitKnockbackRand2 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockback3 = &dAcItem_c::getGreenRupeeDirHitKnockback3; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockback3 = &dAcItem_c::getBlueRupeeDirHitKnockback3; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockback3 = &dAcItem_c::getRedRupeeDirHitKnockback3; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockback3 = &dAcItem_c::getSilverRupeeDirHitKnockback3; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockback3 = &dAcItem_c::getGoldRupeeDirHitKnockback3; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockback3 = &dAcItem_c::getRupoorDirHitKnockback3; break;
|
||||
case ITEM_HEART: mFnGetDirHitKnockback3 = &dAcItem_c::getHeartDirHitKnockback3; break;
|
||||
default: mFnGetDirHitKnockbackRand2 = nullptr; break; // @bug copypasta mistake
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getGreenRupeeDirHitKnockbackRand3; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getBlueRupeeDirHitKnockbackRand3; break;
|
||||
case ITEM_RED_RUPEE: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getRedRupeeDirHitKnockbackRand3; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getSilverRupeeDirHitKnockbackRand3; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getGoldRupeeDirHitKnockbackRand3; break;
|
||||
case ITEM_RUPOOR: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getRupoorDirHitKnockbackRand3; break;
|
||||
case ITEM_HEART: mFnGetDirHitKnockbackRand3 = &dAcItem_c::getHeartDirHitKnockbackRand3; break;
|
||||
default: mFnGetDirHitKnockbackRand2 = nullptr; break; // @bug copypasta mistake
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockback3 = &dAcItem_c::getGreenRupeeHitKnockback3; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockback3 = &dAcItem_c::getBlueRupeeHitKnockback3; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockback3 = &dAcItem_c::getRedRupeeHitKnockback3; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockback3 = &dAcItem_c::getSilverRupeeHitKnockback3; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockback3 = &dAcItem_c::getGoldRupeeHitKnockback3; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockback3 = &dAcItem_c::getRupoorHitKnockback3; break;
|
||||
case ITEM_HEART: mFnGetHitKnockback3 = &dAcItem_c::getHeartHitKnockback3; break;
|
||||
default: mFnGetHitKnockback3 = nullptr; break;
|
||||
}
|
||||
|
||||
switch (mId) {
|
||||
case ITEM_GREEN_RUPEE: mFnGetHitKnockbackRand3 = &dAcItem_c::getGreenRupeeHitKnockbackRand3; break;
|
||||
case ITEM_BLUE_RUPEE: mFnGetHitKnockbackRand3 = &dAcItem_c::getBlueRupeeHitKnockbackRand3; break;
|
||||
case ITEM_RED_RUPEE: mFnGetHitKnockbackRand3 = &dAcItem_c::getRedRupeeHitKnockbackRand3; break;
|
||||
case ITEM_SILVER_RUPEE: mFnGetHitKnockbackRand3 = &dAcItem_c::getSilverRupeeHitKnockbackRand3; break;
|
||||
case ITEM_GOLD_RUPEE: mFnGetHitKnockbackRand3 = &dAcItem_c::getGoldRupeeHitKnockbackRand3; break;
|
||||
case ITEM_RUPOOR: mFnGetHitKnockbackRand3 = &dAcItem_c::getRupoorHitKnockbackRand3; break;
|
||||
case ITEM_HEART: mFnGetHitKnockbackRand3 = &dAcItem_c::getHeartHitKnockbackRand3; break;
|
||||
default: mFnGetHitKnockbackRand3 = nullptr; break;
|
||||
}
|
||||
|
||||
if (isHeart2()) {
|
||||
mFn_0xCB4 = &dAcItem_c::fn_802577C0;
|
||||
} else {
|
||||
mFn_0xCB4 = &dAcItem_c::fn_802577D0;
|
||||
}
|
||||
|
||||
if (mbNoDespawn) {
|
||||
dBgS::GetInstance()->SetLightingCode(this, 10.0f);
|
||||
} else if (isHeart2()) {
|
||||
mLinkage.bushTpFunc(mObjAcch);
|
||||
}
|
||||
|
||||
if (isHeart2()) {
|
||||
field_0xD20 = 6;
|
||||
}
|
||||
|
||||
if (isAnyTear()) {
|
||||
mSomeStr = "force";
|
||||
}
|
||||
|
||||
if (isAnyTear()) {
|
||||
s32 type = getTearSubtype((ITEM_ID)mId);
|
||||
if (type == TEAR_MAX) {
|
||||
type = TEAR_0;
|
||||
}
|
||||
dAcObjBase_c *forceSign = dAcObjBase_c::create(this, fProfile::OBJ_FORCE_SIGN, type & 0xFF, nullptr, nullptr, nullptr, nullptr, 0x3F);
|
||||
if (forceSign != nullptr) {
|
||||
mForceSignRef.link(forceSign);
|
||||
}
|
||||
}
|
||||
|
||||
if (isAnyTear()) {
|
||||
dAcBase_c *forceGetFlag = dAcBase_c::createActorStage(fProfile::TAG_FORCE_GET_FLAG, dTgForceGetFlag_c::tearIdxToParam(getTearIdx()), &mPosition, &mRotation, &mScale, 0, mRoomID, this);
|
||||
if (forceGetFlag == nullptr) {
|
||||
return FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
if (mId == ITEM_STAMINA_FRUIT && unk) {
|
||||
// ((getFirstBitParams2__9dAcBase_cCFv((dAcBase_c *) this) << 8) & 0x100 & ~1) | (((u32) this->unk4 >> 0x13U) & 1)
|
||||
|
||||
u32 p1 = (getFirstBitParams2() & 0x1) << 8;
|
||||
u32 parms = ((mParams >> 0x13) & 0x1) | (p1 & ~0x1);
|
||||
dAcObjBase_c *leaves = dAcObjBase_c::create(fProfile::OBJ_FRUIT_GUTS_LEAF, mRoomID, parms, &mPosition, &mRotation, &mScale, -1);
|
||||
if (leaves == nullptr) {
|
||||
return FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
if (isGreenRupee() || isBlueRupee() || isRedRupee() || isSilverRupee() || isGoldRupee()) {
|
||||
mDowsingTarget.initialize(DowsingTarget::SLOT_RUPEE, 0, &sFreestandingDowsingOffset, 0.0f);
|
||||
mDowsingTarget.doRegister();
|
||||
} else if (isHeart()) {
|
||||
mDowsingTarget.initialize(DowsingTarget::SLOT_HEART, 0, &sFreestandingDowsingOffset, 0.0f);
|
||||
mDowsingTarget.doRegister();
|
||||
} else if (is5GratitudeCrystals() || isGratitudeCrystal()) {
|
||||
mDowsingTarget.initialize(DowsingTarget::SLOT_CRYSTAL, 0, &sFreestandingDowsingOffset, 0.0f);
|
||||
mDowsingTarget.doRegister();
|
||||
} else if (isTreasure2((ITEM_ID)mId)) {
|
||||
mDowsingTarget.initialize(DowsingTarget::SLOT_TREASURE, 0, &sFreestandingDowsingOffset, 0.0f);
|
||||
mDowsingTarget.doRegister();
|
||||
}
|
||||
|
||||
if (isGratitudeCrystal() || isUnkTreasureGroup1()) {
|
||||
setFreestandingYOffset(-mpMdl->getMdl()->getResMdl().GetResNode(sResNodeName).GetTranslate().y);
|
||||
}
|
||||
|
||||
if (mId == ITEM_STAMINA_FRUIT && unk == 0) {
|
||||
mItemFlags |= 4;
|
||||
}
|
||||
|
||||
if ((isGratitudeCrystal() || is5GratitudeCrystals()) && !isItemDropFromEnemy() && mStateMgr.isState(StateID_Wait)) {
|
||||
dSndSmallEffectMgr_c::GetInstance()->playSound(SE_S_ENERGY_SOURCE_OUTWELL);
|
||||
}
|
||||
|
||||
if (EventManager::isInEvent() && EventManager::isCurrentEvent("GetGenkiItem")) {
|
||||
fn_8024DF30(mItemFlags | 0x20);
|
||||
}
|
||||
|
||||
// okay
|
||||
bool is = isHeartPiece();
|
||||
if (is) {
|
||||
is = dScGame_c::isCurrentStage("D100");
|
||||
}
|
||||
if (is) {
|
||||
is = mPosition.squareDistance(mVec3_c(0.0f, -190.0f, -9590.0f)) < 10000.0f;
|
||||
}
|
||||
if (is) {
|
||||
// Skyview Temple - Heart Piece behind bars in main room
|
||||
fn_8024DF30(mItemFlags | 0x80);
|
||||
}
|
||||
|
||||
field_0xD48 = cM::rndInt(0x10000);
|
||||
mColorFilter.r = 0;
|
||||
mColorFilter.g = 0;
|
||||
mColorFilter.b = 0;
|
||||
mLightLevelMaybe = 0.0f;
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
STATE_DEFINE(dAcItem_c, Wait);
|
||||
STATE_DEFINE(dAcItem_c, Carry);
|
||||
STATE_DEFINE(dAcItem_c, GetBeetle);
|
||||
STATE_DEFINE(dAcItem_c, WaitGet);
|
||||
STATE_DEFINE(dAcItem_c, Get);
|
||||
STATE_DEFINE(dAcItem_c, WaitGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitForcedGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, GetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitTBoxGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, ResurgeWait);
|
||||
STATE_DEFINE(dAcItem_c, WaitTurnOff);
|
||||
STATE_DEFINE(dAcItem_c, WaitSacredDewGetEffect);
|
||||
|
||||
void dAcItem_c::initializeState_Wait() {}
|
||||
void dAcItem_c::executeState_Wait() {}
|
||||
void dAcItem_c::finalizeState_Wait() {}
|
||||
|
||||
Reference in New Issue
Block a user