Files
Yanis 0698c28bb0 Vector improvements (#67)
* clean up math.h and attempt to improve existing vector maths

* fix broken matches and match new stuff
2026-05-24 01:33:53 +02:00

1061 lines
47 KiB
C++

#include <string.h>
#include "Actor/ActorId.hpp"
#include "Actor/ActorManager.hpp"
#include "Actor/ActorUnkNSHD.hpp"
#include "MainGame/MiscAdvManager.hpp"
#include "MapObject/MapObjectChestBase.hpp"
#include "MapObject/MapObjectManager.hpp"
#include "Player/PlayerGet.hpp"
#include "System/OverlayManager.hpp"
#include "Unknown/Common.hpp"
#include "Unknown/UnkStruct_020d8698.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkStruct_027e09b8.hpp"
#include "Unknown/UnkStruct_027e09bc.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0cec.hpp"
#include "Unknown/UnkStruct_027e0cf8.hpp"
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
#include "Unknown/UnkStruct_ov000_020b51c0.hpp"
#include "versions.h"
#include "math.hpp"
struct UnkStruct_02186240 {
/* 0000 */ unk8 mUnk_0000[0x3F68];
/* 3F68 */
};
UnkStruct_02186240 data_ov110_02186240;
extern const char *data_ov000_020aa240; // .nsbtx
extern const char *data_ov000_020aa248; // .nsbmd
extern "C" void func_ov000_0205ca74(unk32);
extern "C" void func_01ffb6e4(unk32, const void *, void *);
extern "C" void func_01ffc5a0(UnkSystem4 *, unk32, u16, void *, unk32);
extern "C" void func_ov000_0208f820();
extern "C" unk32 func_ov024_020d5354(unk32 *, u16 *);
extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, Vec3p *);
extern unk32 *data_027e0958;
extern "C" void func_ov000_0208ba10(void *, void *, unk32);
extern "C" void func_02015ea8(unk32, void *);
extern "C" void func_02015628(char *, char *, unk32, void *, size_t);
extern "C" void func_02015664(char *, unk32);
extern "C" void func_020156c8(char *, char *, unk32);
extern "C" void func_020156f4(char *);
extern "C" void func_02015644(char *);
extern "C" UnkResourceStruct *func_ov000_0205abcc(void *, void *, unk32, unk32, unk32);
extern "C" unk32 func_ov000_02077590(unk32);
static const unk32 data_ov110_02185dc4[1] = {8};
static const UnkStruct_ov110_02185dc8 data_ov110_02185dc8[] = {
{ItemId_NormalSword, ItemFlag_Sword}, {ItemId_NormalShield, ItemFlag_Shield},
{ItemId_LokomoSword, ItemFlag_LokomoSword}, {ItemId_RecruitUniform, ItemFlag_RecruitUniform},
{ItemId_ScrollBeam, ItemFlag_ScrollBeam}, {ItemId_ScrollSpinAttack, ItemFlag_ScrollSpinAttack},
{ItemId_AncientShield, ItemFlag_AncientShield}, {ItemId_PanFlute, ItemFlag_PanFlute},
};
static inline s16 GetItemFlag(ItemId itemId) {
for (u32 i = 0; i < ARRAY_LEN(data_ov110_02185dc8); i++) {
if (itemId == data_ov110_02185dc8[i].mItemId) {
return data_ov110_02185dc8[i].mItemFlag;
}
}
return ItemFlag_None;
}
ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
switch (itemId) {
case ItemId_NormalKey:
this->GiveSmallKeys(1);
break;
case ItemId_GreenRupee:
this->GiveRupees(1, true, true);
break;
case ItemId_BlueRupee:
this->GiveRupees(5, true, true);
break;
case ItemId_RedRupee:
this->GiveRupees(20, true, true);
break;
case ItemId_BigGreenRupee:
this->GiveRupees(100, true, true);
break;
case ItemId_BigRedRupee:
this->GiveRupees(200, true, true);
break;
case ItemId_BigGoldRupee:
this->GiveRupees(300, true, true);
break;
case ItemId_HeartContainer:
data_027e0ce0->func_ov000_0208a318(4, 1, 1);
break;
case ItemId_QuiverMedium:
case ItemId_QuiverLarge:
if (this->mQuiverCapacity < UpgradeCapacity_Tier3) {
this->mQuiverCapacity++;
}
this->mArrowAmount = this->GetQuiverCapacity();
break;
case ItemId_BombBagMedium:
case ItemId_BombBagLarge:
if (this->mBombBagCapacity < UpgradeCapacity_Tier3) {
this->mBombBagCapacity++;
}
this->mBombAmount = this->GetBombBagCapacity();
break;
case ItemId_RedPotion:
this->GivePotion(PotionType_Red);
break;
case ItemId_PurplePotion:
this->GivePotion(PotionType_Purple);
break;
case ItemId_YellowPotion:
this->GivePotion(PotionType_Yellow);
break;
case ItemId_ArrowsRefill:
this->GiveArrows(10);
break;
case ItemId_BombsRefill:
this->GiveBombs(10);
break;
case ItemId_TearLight:
if (this->mTearsAmount >= 3) {
this->mTearsAmount = 3;
} else {
this->mTearsAmount++;
}
break;
default:
ItemFlag itemFlag = ItemManager::GetEquippedItemFlag(itemId);
if (itemFlag != ItemFlag_None) {
this->SetFlag(itemFlag);
switch (itemFlag) {
case ItemFlag_Bombs:
this->mBombBagCapacity = UpgradeCapacity_Tier1;
this->mBombAmount = gBombBagCapacities[UpgradeCapacity_Tier1];
break;
case ItemFlag_Bow:
this->mQuiverCapacity = UpgradeCapacity_Tier1;
this->mArrowAmount = gQuiverCapacities[UpgradeCapacity_Tier1];
break;
default:
break;
}
if (this->mEquippedItem == ItemFlag_None) {
this->mEquippedItem = itemFlag;
data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, 0);
}
} else {
itemFlag = GetItemFlag(itemId);
if (itemFlag != ItemFlag_None) {
this->SetFlag(itemFlag);
}
}
break;
}
AdventureFlag advFlag = ItemManager::GetAdvFlagFromItem(itemId);
if (advFlag != AdventureFlag_Nothing) {
advFlag &= 0xFFFF;
SET_FLAG(data_027e09b8->mAdventureFlags, advFlag);
}
data_027e0ce0->mUnk_34->func_ov110_02185d3c(itemId);
gpTreasureManager->func_ov000_020aa0ac(itemId);
gpMiscAdvManager->GiveLetterOrPriceCard(itemId);
if (!GET_FLAG(this->mFlags, ItemFlag_LokomoSword) && itemId == ItemId_TearLight &&
this->mTearsAmount == MAX_TEARS_OF_LIGHT && (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower)) {
return true;
}
return false;
}
// BMG IDs
static const u32 sBMGItemMap[] = {
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemNothing), // ItemId_Nothing
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemNormalShield), // ItemId_NormalShield
BMG_ID(BMGGroup_castle, 0xD6), // ItemId_NormalSword
BMG_ID(BMGGroup_dungeon, 0x7A), // ItemId_Whirlwind
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBombBag), // ItemId_BombBag
BMG_ID(BMGGroup_dungeon, 0x7B), // ItemId_NormalBow
BMG_ID(BMGGroup_dungeon, 0x7C), // ItemId_Boomerang
BMG_ID(BMGGroup_dungeon, 0x7D), // ItemId_Whip
BMG_ID(BMGGroup_dungeon, 0x7E), // ItemId_SandRod
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_04), // ItemId_9
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemSmallKey), // ItemId_NormalKey
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_06), // ItemId_BossKey
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemGreenRupee), // ItemId_GreenRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBlueRupee), // ItemId_BlueRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRedRupee), // ItemId_RedRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBigGreenRupee), // ItemId_BigGreenRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBigRedRupee), // ItemId_BigRedRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBigGoldRupee), // ItemId_BigGoldRupee
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_18), // ItemId_ForceGem_18
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_19), // ItemId_ForceGem_19
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_20), // ItemId_ForceGem_20
BMG_ID(BMGGroup_tower, 0x00), // ItemId_ForestGlyph
BMG_ID(BMGGroup_tower, 0x01), // ItemId_SnowGlyph
BMG_ID(BMGGroup_tower, 0x02), // ItemId_OceanGlyph
BMG_ID(BMGGroup_tower, 0x03), // ItemId_FireGlyph
BMG_ID(BMGGroup_forest, 0xEB), // ItemId_RestoredForestGlyph
BMG_ID(BMGGroup_snow, 0x00), // ItemId_RestoredSnowGlyph
BMG_ID(BMGGroup_water, 0x00), // ItemId_RestoredOceanGlyph
BMG_ID(BMGGroup_flame_fld, 0x8E), // ItemId_RestoredFireGlyph
BMG_ID(BMGGroup_desert, 0x48), // ItemId_RestoredDesertOceanGlyph
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemFinalTrack), // ItemId_FinalTrack
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_11), // ItemId_SpiritTrain
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_12), // ItemId_TrainCannon
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_13), // ItemId_SpiritTrainCar
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_14), // ItemId_TrainWagon
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_35), // ItemId_ForceGem_35
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_36), // ItemId_ForceGem_36
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_37), // ItemId_ForceGem_37
BMG_ID(BMGGroup_castle, 0xD7), // ItemId_RecruitUniform
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemLetter), // ItemId_PostmasterLetter
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemHeartContainer), // ItemId_HeartContainer
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemMediumQuiver), // ItemId_QuiverMedium
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemMediumBombBag), // ItemId_BombBagMedium
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_43), // ItemId_ForceGem_43
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_44), // ItemId_ForceGem_44
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_45), // ItemId_ForceGem_45
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_46), // ItemId_ForceGem_46
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_47), // ItemId_ForceGem_47
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_48), // ItemId_ForceGem_48
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_49), // ItemId_ForceGem_49
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_50), // ItemId_ForceGem_50
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_51), // ItemId_ForceGem_51
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_52), // ItemId_ForceGem_52
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_53), // ItemId_ForceGem_53
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_54), // ItemId_ForceGem_54
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_55), // ItemId_ForceGem_55
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_56), // ItemId_ForceGem_56
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemForceGem_57), // ItemId_ForceGem_57
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_2B), // ItemId_ForceGem_58
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_2C), // ItemId_ForceGem_59
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_2D), // ItemId_ForceGem_60
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_2E), // ItemId_ForceGem_61
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_2F), // ItemId_PanFlute
BMG_ID(BMGGroup_village, 0xF7), // ItemId_StampBook
BMG_ID(BMGGroup_dungeon, 0x7F), // ItemId_LightBow
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_30), // ItemId_LokomoSword
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemTenPriceCard), // ItemId_TenPriceCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRedPotion), // ItemId_RedPotion
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemPurplePotion), // ItemId_PurplePotion
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemYellowPotion), // ItemId_YellowPotion
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemDemonFossil), // ItemId_DemonFossil
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemStalfosSkull), // ItemId_StalfosSkull
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemStarFragment), // ItemId_StarFragment
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBeeLarvae), // ItemId_BeeLarvae
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemWoodHeart), // ItemId_WoodHeart
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemDarkPearlLoop), // ItemId_DarkPearlLoop
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemWhitePearlLoop), // ItemId_WhitePearlLoop
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRutoCrown), // ItemId_RutoCrown
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemDragonScale), // ItemId_DragonScale
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemPirateNecklace), // ItemId_PirateNecklace
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemPalaceDish), // ItemId_PalaceDish
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemGoronAmber), // ItemId_GoronAmber
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemMysticJade), // ItemId_MysticJade
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemAncientCoin), // ItemId_AncientCoin
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemPricelessStone), // ItemId_PricelessStone
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRegalRing), // ItemId_RegalRing
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_45), // ItemId_ArrowsRefill
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_46), // ItemId_BombsRefill
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_47), // ItemId_SoldOutSign
BMG_ID(BMGGroup_village, 0xF8), // ItemId_AncientShield
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemLargeQuiver), // ItemId_QuiverLarge
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemLargeBombBag), // ItemId_BombBagLarge
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_4A), // ItemId_RandCommonTreasure
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_4B), // ItemId_RandUncommonTreasure
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_4C), // ItemId_RandRareTreasure
BMG_ID(BMGGroup_maingame, MsgIndex_Empty_4D), // ItemId_RandLegendaryTreasure
BMG_ID(BMGGroup_tower, 0x04), // ItemId_TearLight
BMG_ID(BMGGroup_tower, 0x05), // ItemId_LightCompass
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemScrollSpinAttack), // ItemId_ScrollSpinAttack
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemScrollBeam), // ItemId_ScrollBeam
BMG_ID(BMGGroup_village, 0xF9), // ItemId_LinebeckLetter
BMG_ID(BMGGroup_forest, 0xEC), // ItemId_PanFluteSong_101
BMG_ID(BMGGroup_dungeon, 0x80), // ItemId_PanFluteSong_102
BMG_ID(BMGGroup_water, 0x01), // ItemId_PanFluteSong_103
BMG_ID(BMGGroup_village, 0xFA), // ItemId_PanFluteSong_104
BMG_ID(BMGGroup_snow, 0x01), // ItemId_PanFluteSong_105
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRabbitNet), // ItemId_RabbitNet
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemBeedleCard), // ItemId_BeedleCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemSilverCard), // ItemId_SilverCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemGoldCard), // ItemId_GoldCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemPlatinumCard), // ItemId_PlatinumCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemDiamondCard), // ItemId_DiamondCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemFreebieCard), // ItemId_FreebieCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemQuintupleCard), // ItemId_QuintupleCard
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemCarbenLetter), // ItemId_CarbenLetter
#if IS_JP
BMG_ID(BMGGroup_village, 0xFB), // ItemId_RecruitUniform2
BMG_ID(BMGGroup_village, 0xFC), // ItemId_EngineerUniform
#else
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemRecruitUniform2), // ItemId_RecruitUniform2
BMG_ID(BMGGroup_maingame, MsgIndex_GetItemEngineerUniform), // ItemId_EngineerUniform
#endif
};
// Adventure Flags
static const AdventureFlag sAdvFlagItemMap[] = {
AdventureFlag_Nothing, // ItemId_Nothing
AdventureFlag_Nothing, // ItemId_NormalShield
AdventureFlag_ObtainedRecruitSword, // ItemId_NormalSword
AdventureFlag_Nothing, // ItemId_Whirlwind
AdventureFlag_Nothing, // ItemId_BombBag
AdventureFlag_ObtainedBowAndArrows, // ItemId_NormalBow
AdventureFlag_Nothing, // ItemId_Boomerang
AdventureFlag_ObtainedWhip, // ItemId_Whip
AdventureFlag_ObtainedSandWand, // ItemId_SandRod
AdventureFlag_Nothing, // ItemId_9
AdventureFlag_Nothing, // ItemId_NormalKey
AdventureFlag_Nothing, // ItemId_BossKey
AdventureFlag_Nothing, // ItemId_GreenRupee
AdventureFlag_Nothing, // ItemId_BlueRupee
AdventureFlag_Nothing, // ItemId_RedRupee
AdventureFlag_Nothing, // ItemId_BigGreenRupee
AdventureFlag_Nothing, // ItemId_BigRedRupee
AdventureFlag_Nothing, // ItemId_BigGoldRupee
AdventureFlag_ObtainedWadatsumiForceGem, // ItemId_ForceGem_18
AdventureFlag_ObtainedNiboshiForceGem, // ItemId_ForceGem_19
AdventureFlag_ObtainedGoronAdultMegaIceForceGem, // ItemId_ForceGem_20
AdventureFlag_ObtainedForestGlyph, // ItemId_ForestGlyph
AdventureFlag_ObtainedSnowGlyph, // ItemId_SnowGlyph
AdventureFlag_ObtainedOceanGlyph, // ItemId_OceanGlyph
AdventureFlag_ObtainedFireGlyph, // ItemId_FireGlyph
AdventureFlag_CompletedForestRestorationSong, // ItemId_RestoredForestGlyph
AdventureFlag_CompletedOceanRestorationSong, // ItemId_RestoredSnowGlyph
AdventureFlag_CompletedSnowRestorationSong, // ItemId_RestoredOceanGlyph
AdventureFlag_CompletedFireRestorationSong, // ItemId_RestoredFireGlyph
AdventureFlag_CompletedSandRestorationSong, // ItemId_RestoredDesertOceanGlyph
AdventureFlag_OpenedDarkRealmPortal, // ItemId_FinalTrack
AdventureFlag_ObtainedSpiritTrain, // ItemId_SpiritTrain
AdventureFlag_ObtainedTrainCannon, // ItemId_TrainCannon
AdventureFlag_ObtainedSpiritTrainCar, // ItemId_SpiritTrainCar
AdventureFlag_ObtainedTrainWagon, // ItemId_TrainWagon
AdventureFlag_ObtainedFerrusForceGem2, // ItemId_ForceGem_35
AdventureFlag_ObtainedKofuForceGem, // ItemId_ForceGem_36
AdventureFlag_ObtainedChildGoronForceGem, // ItemId_ForceGem_37
AdventureFlag_Nothing, // ItemId_RecruitUniform
AdventureFlag_Nothing, // ItemId_PostmasterLetter
AdventureFlag_Nothing, // ItemId_HeartContainer
AdventureFlag_Nothing, // ItemId_QuiverMedium
AdventureFlag_Nothing, // ItemId_BombBagMedium
AdventureFlag_ObtainedLuciaForceGem, // ItemId_ForceGem_43
AdventureFlag_ObtainedOrcaForceGem, // ItemId_ForceGem_44
AdventureFlag_ObtainedCarbenForceGem, // ItemId_ForceGem_45
AdventureFlag_ObtainedRaelForceGem, // ItemId_ForceGem_46
AdventureFlag_ObtainedJoeForceGem, // ItemId_ForceGem_47
AdventureFlag_ObtainedMonaForceGem, // ItemId_ForceGem_48
AdventureFlag_ObtainedHarryForceGem, // ItemId_ForceGem_49
AdventureFlag_ObtainedMashForceGem, // ItemId_ForceGem_50
AdventureFlag_ObtainedFerrusForceGem1, // ItemId_ForceGem_51
AdventureFlag_ObtainedYekoForceGem, // ItemId_ForceGem_52
AdventureFlag_ObtainedNokoForceGem, // ItemId_ForceGem_53
AdventureFlag_ObtainedGoronAdultAnoukiForceGem, // ItemId_ForceGem_54
AdventureFlag_ObtainedSteemForceGem, // ItemId_ForceGem_55
AdventureFlag_ObtainedLinebeckForceGem, // ItemId_ForceGem_56
AdventureFlag_ObtainedAnjeanDesertForceGem, // ItemId_ForceGem_57
AdventureFlag_Unk_0A7, // ItemId_ForceGem_58
AdventureFlag_Unk_0A8, // ItemId_ForceGem_59
AdventureFlag_Unk_0A9, // ItemId_ForceGem_60
AdventureFlag_Unk_0AA, // ItemId_ForceGem_61
AdventureFlag_Nothing, // ItemId_PanFlute
AdventureFlag_Nothing, // ItemId_StampBook
AdventureFlag_ObtainedBowOfLight, // ItemId_LightBow
AdventureFlag_Unk_0B1, // ItemId_LokomoSword
AdventureFlag_Nothing, // ItemId_TenPriceCard
AdventureFlag_Nothing, // ItemId_RedPotion
AdventureFlag_Nothing, // ItemId_PurplePotion
AdventureFlag_Nothing, // ItemId_YellowPotion
AdventureFlag_Nothing, // ItemId_DemonFossil
AdventureFlag_Nothing, // ItemId_StalfosSkull
AdventureFlag_Nothing, // ItemId_StarFragment
AdventureFlag_Nothing, // ItemId_BeeLarvae
AdventureFlag_Nothing, // ItemId_WoodHeart
AdventureFlag_Nothing, // ItemId_DarkPearlLoop
AdventureFlag_Nothing, // ItemId_WhitePearlLoop
AdventureFlag_Nothing, // ItemId_RutoCrown
AdventureFlag_Nothing, // ItemId_DragonScale
AdventureFlag_Nothing, // ItemId_PirateNecklace
AdventureFlag_Nothing, // ItemId_PalaceDish
AdventureFlag_Nothing, // ItemId_GoronAmber
AdventureFlag_Nothing, // ItemId_MysticJade
AdventureFlag_Nothing, // ItemId_AncientCoin
AdventureFlag_Nothing, // ItemId_PricelessStone
AdventureFlag_Nothing, // ItemId_RegalRing
AdventureFlag_Nothing, // ItemId_ArrowsRefill
AdventureFlag_Nothing, // ItemId_BombsRefill
AdventureFlag_Nothing, // ItemId_SoldOutSign
AdventureFlag_Nothing, // ItemId_AncientShield
AdventureFlag_Nothing, // ItemId_QuiverLarge
AdventureFlag_Nothing, // ItemId_BombBagLarge
AdventureFlag_Nothing, // ItemId_RandCommonTreasure
AdventureFlag_Nothing, // ItemId_RandUncommonTreasure
AdventureFlag_Nothing, // ItemId_RandRareTreasure
AdventureFlag_Nothing, // ItemId_RandLegendaryTreasure
AdventureFlag_Nothing, // ItemId_TearLight
AdventureFlag_ObtainedCompassOfLight, // ItemId_LightCompass
AdventureFlag_Nothing, // ItemId_ScrollSpinAttack
AdventureFlag_Nothing, // ItemId_ScrollBeam
AdventureFlag_ObtainedLinebecksLetter, // ItemId_LinebeckLetter
AdventureFlag_Nothing, // ItemId_PanFluteSong_101
AdventureFlag_Nothing, // ItemId_PanFluteSong_102
AdventureFlag_Nothing, // ItemId_PanFluteSong_103
AdventureFlag_Nothing, // ItemId_PanFluteSong_104
AdventureFlag_Nothing, // ItemId_PanFluteSong_105
AdventureFlag_ObtainedRabbitNet, // ItemId_RabbitNet
AdventureFlag_ObtainedBeedlePointsCard, // ItemId_BeedleCard
AdventureFlag_Unk_18E, // ItemId_SilverCard
AdventureFlag_Unk_18F, // ItemId_GoldCard
AdventureFlag_Unk_190, // ItemId_PlatinumCard
AdventureFlag_Unk_191, // ItemId_DiamondCard
AdventureFlag_ObtainedBeedleFreebieCard, // ItemId_FreebieCard
AdventureFlag_ObtainedBeedleQuintuplePointsCard, // ItemId_QuintupleCard
AdventureFlag_ReceivedCarbensLetter, // ItemId_CarbenLetter
AdventureFlag_Nothing, // ItemId_RecruitUniform2
AdventureFlag_Nothing, // ItemId_EngineerUniform
};
// non-matching
ARM void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2, unk32 param3) {
PlayerGet *unk_14 = (PlayerGet *) this->mUnk_14;
func_01ffc5a0(&unk_14->mUnk_8C, unk_14->mUnk_6C, unk_14->mUnk_70, &this->mUnk_04, param3);
}
ARM PlayerGet::PlayerGet() :
mUnk_54(0, 0, -1, ItemId_None),
mUnk_64(mUnk_44, -1),
mUnk_6C(0x1000),
mUnk_70(0),
mUnk_72(0),
mUnk_73(0),
mUnk_74(this),
mUnk_8C(0) {}
ARM PlayerGet::~PlayerGet() {
func_ov000_0205ca74(this->mUnk_54.mUnk_08);
UnkStruct_027e0cec *pData_027e0cec = data_027e0cec;
if (pData_027e0cec != NULL) {
UnkStruct_PlayerGet_ec *pUnk_ec = &this->mUnk_EC[0];
while (pUnk_ec != (UnkStruct_PlayerGet_ec *) &this->mUnk_FC) {
pData_027e0cec->func_ov000_020a0110(pUnk_ec);
pUnk_ec++;
}
}
UnkStruct_ov000_0208f820_28_98 *pUnk_28_98 = this->mUnk_28->mUnk_98;
if (pUnk_28_98 != 0) {
pUnk_28_98->mUnk_38.mUnk_40 &= ~0x10;
if (pUnk_28_98->mUnk_38.mUnk_40 == 0) {
// real?
pUnk_28_98->mUnk_38.~UnkStruct_PlayerGet_64();
}
}
}
#if IS_JP
ARM bool PlayerGet::func_ov110_02186b8c() {
switch (this->mUnk_54.mItemId) {
case ItemId_NormalShield:
if (this->mUnk_28->pItemManager->mUnk_12 & 2) {
return true;
}
break;
case ItemId_AncientShield:
if (!(this->mUnk_28->pItemManager->mUnk_12 & 2)) {
return true;
}
break;
default:
break;
}
return false;
}
#endif
// https://decomp.me/scratch/ZAW2N
ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) {
ItemId itemId;
ItemManager *pItemManager;
Actor *iVar10;
Vec3p *pUnk_38;
Vec3p *pUnk_3c;
switch (param1->mUnk_04) {
case 0x39:
Vec3p temp;
itemId = param1->mUnk_1C;
temp.x = param1->mUnk_10.x;
temp.y = param1->mUnk_10.y;
temp.z = param1->mUnk_10.z;
this->mUnk_54.mUnk_08 = temp.z;
this->mUnk_54.mUnk_00_s32 = temp.x;
this->mUnk_54.mUnk_04_s32 = temp.y;
pItemManager = this->mUnk_28->pItemManager;
switch (itemId) {
case ItemId_BombBag:
case ItemId_BombBagMedium:
case ItemId_BombBagLarge:
if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bombs) == 0) {
itemId = ItemId_BombBag;
} else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier1) {
itemId = ItemId_BombBagMedium;
} else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier2) {
itemId = ItemId_BombBagLarge;
}
break;
case ItemId_NormalBow:
case ItemId_QuiverMedium:
case ItemId_QuiverLarge:
if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bow) == 0) {
itemId = ItemId_NormalBow;
} else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier1) {
itemId = ItemId_QuiverMedium;
} else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier2) {
itemId = ItemId_QuiverLarge;
}
break;
default:
itemId = gpTreasureManager->func_ov000_020aa02c(itemId);
break;
}
this->mUnk_54.mItemId = itemId;
this->mUnk_70 = 0;
this->mUnk_2C->mUnk_58 = 0;
char auStack_108[12];
func_ov000_0208ba10(auStack_108, &this->mUnk_24->mUnk_94, 0);
*(s16 *) &this->mUnk_40->mUnk_00 = 0x8000;
pUnk_38 = this->mUnk_38;
pUnk_38->x = 0;
pUnk_38->z = 0;
pUnk_3c = this->mUnk_3C;
pUnk_3c->x = 0;
pUnk_3c->y = 0;
pUnk_3c->z = 0;
if (((u32) (u16) this->mUnk_54.mUnk_00_s16 << 16) >> 30 != 1) {
return;
}
iVar10 = gpActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00);
if (iVar10 == NULL) {
return;
}
if (iVar10->GetActorId() == ActorId_NormalShield) {
UNSET_FLAG(iVar10->mFlags, ActorFlag_Visible);
iVar10->mUnk_4A = 0;
}
break;
case 0x3A:
if (this->mUnk_54.mItemId != ItemId_Nothing) {
u32 niVar10 = func_ov000_020a4c00(this->mUnk_54.mItemId);
if (niVar10 == GIModel_None) {
this->mUnk_8C.vfunc_08(NULL);
} else {
if (this->mUnk_54.mItemId == ItemId_LokomoSword) {
niVar10 = func_ov000_020a4c00(ItemId_NormalSword);
}
wchar_t pathBuffer[32];
char modelPath[64];
u16 idStr[5];
idStr[0] = 0;
idStr[1] = 0;
func_02015ea8(niVar10, idStr);
idStr[4] = '\0';
strncpy((char *) pathBuffer, "Player/get/", 0x39);
size_t l = strlen((char *) pathBuffer);
strncpy((char *) pathBuffer + l, (char *) idStr, 0x39 - l);
pathBuffer[31] = '\0';
strncpy(modelPath, (char *) pathBuffer, 0x3F);
l = strlen(modelPath);
strncpy(modelPath + l, data_ov000_020aa248, 0x3F - l);
UnkFileSystem4 fs4(modelPath, 0, (unk32) &data_ov110_02186240, sizeof(UnkStruct_02186240));
fs4.vfunc_08(0x10);
strncpy(modelPath, (char *) pathBuffer, 0x3F);
l = strlen(modelPath);
strncpy(modelPath + l, data_ov000_020aa240, 0x3F - l);
UnkFileSystem2 fs2(modelPath, 0);
UnkResourceStruct *res = func_ov000_0205abcc((void *) &fs4, (void *) &fs2, 0, 1, this->mUnk_30->mUnk_24);
this->mUnk_8C.vfunc_08(GetUnkPointer1_Impl(res));
}
switch (this->mUnk_54.mItemId) {
case ItemId_BigGreenRupee:
case ItemId_BigRedRupee:
case ItemId_BigGoldRupee:
this->mUnk_6C = 0x1666;
break;
default:
this->mUnk_6C = 0x1000;
break;
}
}
UnkStruct_027e09bc_0c *uVar11 = data_027e09bc->mUnk_0C;
uVar11->func_ov000_0207834c(this->mUnk_34, func_ov000_02077590(4), 0);
UnkStruct_PlayerGet_48 *pUnk_48 = this->mUnk_48;
pUnk_48->mUnk_42 = 0x1000;
pUnk_48->mUnk_47 = 0;
pUnk_48->mUnk_5E = 0x1000;
pUnk_48->mUnk_63 = 0;
if (this->mUnk_44->mUnk_00 != NULL) {
this->mUnk_64.func_ov000_0208a100();
}
bool var_r1_4 = 0;
void **temp_r5_2 = this->mUnk_24->mUnk_78;
if (temp_r5_2 != NULL) {
u16 temp_r6 = *(u16 *) temp_r5_2;
bool var_r3 = 1;
bool var_r2 = 0;
if ((temp_r6 != 0x100) && (temp_r6 != 0x101)) {
var_r3 = 0;
}
if (var_r3 != 0) {
bool var_r0_2;
if (temp_r6 == 0x101) {
var_r0_2 = 0;
} else {
var_r0_2 = ((u16 *) temp_r5_2)[1];
}
if (var_r0_2 == 1) {
var_r2 = 1;
}
}
if (var_r2 != 0) {
var_r1_4 = 1;
}
}
if (!var_r1_4) {
UnkStruct_ov000_0208f820_28_98 *pUnk28_98 = this->mUnk_28->mUnk_98;
if (pUnk28_98 != NULL) {
UnkStruct_PlayerGet_64 *ptr = &pUnk28_98->mUnk_38;
ptr->mUnk_40 |= 0x10;
this->mUnk_64.func_ov000_0208a100();
}
}
this->mUnk_73 = 0;
switch (this->mUnk_54.mItemId) {
case ItemId_RestoredForestGlyph:
case ItemId_RestoredSnowGlyph:
case ItemId_RestoredOceanGlyph:
case ItemId_RestoredFireGlyph:
case ItemId_RestoredDesertOceanGlyph:
data_ov000_020b51b8.func_ov000_0206c96c(data_027e0cd8->mUnk_0C->func_ov000_02080a44());
this->mUnk_73 = 1;
break;
default:
break;
}
break;
case 0x3B:
this->mUnk_72 = 0;
if (this->mUnk_54.mItemId != ItemId_Nothing) {
unk32 uStack_f0[4];
Vec3p VStack_fc;
Vec3p_Add(this->mUnk_34, &data_ov110_021861ec.mUnk_00, &VStack_fc);
data_027e0cec->func_ov000_0209feac(0x874, &VStack_fc, 1, 0, 0);
uStack_f0[0] = 0x870;
uStack_f0[1] = 0x871;
uStack_f0[2] = 0x872;
uStack_f0[3] = 0x873;
data_027e0cec->func_ov000_020a0000(this->mUnk_EC, &this->mUnk_FC, uStack_f0, &VStack_fc, 1);
}
data_027e0cf8->func_ov024_020c7828(this->mUnk_54.mItemId);
UnkStruct_ov000_02067bc4::UnkStruct1 auStack_30;
data_ov000_020b504c.func_ov000_02067cf8(ItemManager::GetBmgIDFromItem(this->mUnk_54.mItemId), 0, &auStack_30);
break;
default:
break;
}
}
const UnkStruct_ov110_021861ec data_ov110_021861ec(0x5E3, 0x152D, 0xCD);
ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
unk32 var_r1;
s32 temp_r5;
bool temp_r6;
s32 var_r0;
s32 var_r0_2;
bool var_r1_2;
u32 var_r5_2;
ActorUnkNSHD *temp_r0_3;
switch (param1) {
case 0x39:
if (data_027e09b8->func_ov000_020732ec(this->mUnk_54.mUnk_08) == 0) {
break;
}
if (this->mUnk_30->mUnk_70 < 0xF) {
break;
}
this->mUnk_30->func_ov000_020921e4(0x3A);
break;
case 0x3A:
if (this->mUnk_50->func_01ff8fa8() != 0) {
this->mUnk_30->func_ov000_020921e4(0x3B);
break;
}
if (this->mUnk_50->func_02015080(0x1C000) == 0) {
break;
}
var_r1 = 0x64;
switch (this->mUnk_54.mItemId) {
case ItemId_Nothing:
case ItemId_NormalShield:
case ItemId_NormalSword:
case ItemId_Whirlwind:
break;
case ItemId_NormalKey:
case ItemId_GreenRupee:
case ItemId_BlueRupee:
case ItemId_RedRupee:
case ItemId_DemonFossil:
case ItemId_StalfosSkull:
case ItemId_StarFragment:
case ItemId_BeeLarvae:
case ItemId_WoodHeart:
var_r1 = 0x65;
break;
case ItemId_HeartContainer:
var_r1 = 0x67;
break;
case ItemId_ForestGlyph:
case ItemId_SnowGlyph:
case ItemId_OceanGlyph:
case ItemId_FireGlyph:
var_r1 = 0x68;
break;
case ItemId_RestoredForestGlyph:
case ItemId_RestoredSnowGlyph:
case ItemId_RestoredOceanGlyph:
case ItemId_RestoredFireGlyph:
case ItemId_RestoredDesertOceanGlyph:
case ItemId_PanFluteSong_101:
case ItemId_PanFluteSong_102:
case ItemId_PanFluteSong_103:
case ItemId_PanFluteSong_104:
case ItemId_PanFluteSong_105:
var_r1 = 0x66;
break;
case ItemId_ForceGem_18:
case ItemId_ForceGem_19:
case ItemId_ForceGem_20:
case ItemId_ForceGem_35:
case ItemId_ForceGem_36:
case ItemId_ForceGem_37:
case ItemId_ForceGem_43:
case ItemId_ForceGem_44:
case ItemId_ForceGem_45:
case ItemId_ForceGem_46:
case ItemId_ForceGem_47:
case ItemId_ForceGem_48:
case ItemId_ForceGem_49:
case ItemId_ForceGem_50:
case ItemId_ForceGem_51:
case ItemId_ForceGem_52:
case ItemId_ForceGem_53:
case ItemId_ForceGem_54:
case ItemId_ForceGem_55:
case ItemId_ForceGem_56:
case ItemId_ForceGem_57:
case ItemId_ForceGem_58:
case ItemId_ForceGem_59:
case ItemId_ForceGem_60:
case ItemId_ForceGem_61:
var_r1 = 0x6A;
break;
default:
break;
}
data_ov000_020b51b8.func_ov000_0206d274(var_r1);
break;
case 0x3B:
var_r1_2 = false;
if (data_ov000_020b504c.func_ov000_02067bc4(0)->vfunc_08() == 0) {
var_r1_2 = true;
}
if (var_r1_2) {
if (this->mUnk_54.mItemId == ItemId_Nothing) {
var_r1_2 = true;
} else {
if (this->mUnk_30->mUnk_70 >= 0x1E) {
var_r1_2 = true;
} else {
goto todo_remove_me;
}
}
} else {
todo_remove_me:
var_r1_2 = false;
}
if (this->mUnk_72 == 0 && var_r1_2) {
temp_r6 = this->mUnk_28->pItemManager->func_ov110_02184a40(this->mUnk_54.mItemId);
switch (this->mUnk_54.mItemId) {
case ItemId_NormalShield:
case ItemId_AncientShield:
this->mUnk_30->func_ov000_020936ec();
if (((*(u16 *) this->mUnk_54.mUnk_00 << 0x10) >> 0x1E) == 1) {
temp_r0_3 = (ActorUnkNSHD *) gpActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00);
if ((temp_r0_3 != NULL) && (temp_r0_3->GetActorId() == ActorId_NormalShield)) {
if (this->func_ov110_02186b8c()) {
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
}
temp_r0_3->func_ov062_02158ce8();
}
} else {
if (this->mUnk_54.mItemId == ItemId_AncientShield) {
if (this->func_ov110_02186b8c()) {
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
}
} else if (this->mUnk_54.mItemId == ItemId_NormalShield) {
if (this->func_ov110_02186b8c()) {
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
}
}
}
this->mUnk_30->func_ov000_02093a04();
break;
case ItemId_NormalSword:
case ItemId_LokomoSword:
this->mUnk_30->func_ov000_020936ec();
this->mUnk_30->mUnk_10->func_ov031_020e076c();
break;
case ItemId_RecruitUniform2:
case ItemId_EngineerUniform:
if (data_027e09a4->mUnk_00.mSceneIndex == SceneIndex_f_first) {
this->mUnk_28->func_ov058_02152a24();
}
break;
default:
break;
}
if (*(u16 *) this->mUnk_54.mUnk_00 == 0x1000) {
Vec2b stack;
stack.x = this->mUnk_54.mUnk_00[0];
stack.y = this->mUnk_54.mUnk_00[1];
MapObject *pMapObj = gpMapObjManager->func_01fff498(stack);
if (pMapObj != NULL) {
var_r5_2 = MapObjectId_None;
switch (pMapObj->GetMapObjectId()) {
case MapObjectId_TRLN:
var_r5_2 = MapObjectId_TREN;
break;
case MapObjectId_TREN:
var_r5_2 = MapObjectId_TRLN;
break;
default:
break;
}
if (var_r5_2 != MapObjectId_None) {
data_ov000_020b34c4.mUnk_04 = var_r5_2;
MapObjectChestBase **temp_r0_6 = (MapObjectChestBase **) gpMapObjManager->func_01fff520(
&data_ov000_020b34c4, gpMapObjManager->mMapObjTable);
if ((MapObject **) temp_r0_6 == gpMapObjManager->mUnk_08) {
(*temp_r0_6)->func_ov031_02103878();
}
}
}
}
if (this->mUnk_54.mItemId == ItemId_ForestGlyph) {
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(CutsceneIndex_ForestTracksRestoredFromGlyph, 0);
} else if (this->mUnk_54.mItemId == ItemId_FireGlyph) {
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(CutsceneIndex_StavenInTOSAfterFireGlyph_01, 0);
}
if (this->mUnk_72 != 0) {
break;
}
if (!temp_r6) {
data_027e09bc->mUnk_0C->func_ov000_02078230(0);
}
if (data_027e09b8->func_ov000_020732fc(this->mUnk_54.mUnk_08) != 0) {
this->mUnk_54.mUnk_08 = -1;
}
this->mUnk_40->mUnk_00 = 0;
if (temp_r6) {
this->mUnk_30->func_ov000_020921e4(0x49);
break;
}
if ((((u32) (*(u16 *) this->mUnk_54.mUnk_04 << 0x10) >> 0x1E) == 1) &&
(data_027e09b8->func_ov000_020732dc(2) != 0)) {
*(u32 *) this->mUnk_04.mUnk_00 = *(u32 *) this->mUnk_54.mUnk_04;
this->mUnk_30->func_ov000_020921e4(0x57);
break;
}
this->mUnk_30->func_ov000_020921e4(0);
break;
}
this->mUnk_70 += 0x10E;
if (this->mUnk_73 == 0) {
break;
}
temp_r5 = data_027e0cd8->mUnk_0C->func_ov000_02080a44();
if (data_ov000_020b51b8.mUnk_08[2] != NULL) {
var_r0 = 1;
} else {
var_r0 = 0;
}
if (var_r0 != 0) {
var_r0_2 = 1;
} else {
var_r0_2 = 0;
}
if (var_r0_2 != 0) {
break;
}
if (temp_r5 == data_ov000_020b51c0.func_02002f04()) {
break;
}
data_ov000_020b51b8.func_ov000_0206c9a8(temp_r5, 0x3C, 0x7F, 0);
this->mUnk_73 = 0;
break;
default:
break;
}
}
ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) {
Vec3p auStack_18;
switch (param2) {
case 0x39:
case 0x3A:
break;
case 0x3B:
if (param3 != 0 && this->mUnk_54.mItemId != ItemId_Nothing && this->mUnk_8C.mUnk_04 != 0) {
Vec3p_Add(this->mUnk_34, (Vec3p *) &data_ov110_021861ec.mUnk_00, &auStack_18);
func_ov000_02058fc4(data_027e0958, &this->mUnk_74, &auStack_18);
}
break;
default:
break;
}
}
ARM UnkStruct_PlayerGet_ec::UnkStruct_PlayerGet_ec() :
UnkSystem7(NULL) {}
// non-matching
THUMB void UnkStruct_027e0ce0_34::func_ov110_02185d3c(ItemId itemId) {
unk32 uStack_14;
u16 auStack_18[2];
switch (itemId) {
case ItemId_SpiritTrain:
this->func_ov024_020d3d98(0, 0);
this->mUnk_2C = 1;
this->mUnk_00 = 0;
this->mUnk_10 = 0;
break;
case ItemId_SpiritTrainCar:
this->func_ov024_020d3d98(2, 0);
this->mUnk_2C = 2;
this->mUnk_04 = 2;
this->mUnk_14 = 0;
break;
default:
uStack_14 = -1;
auStack_18[0] = 0;
if (func_ov024_020d5354(&uStack_14, auStack_18) != 0) {
this->func_ov024_020d3ee8(uStack_14, auStack_18[0], 1);
}
break;
}
}
ARM u32 ItemManager::GetBmgIDFromItem(ItemId itemId) {
return sBMGItemMap[itemId];
}
ARM AdventureFlag ItemManager::GetAdvFlagFromItem(ItemId itemId) {
return sAdvFlagItemMap[itemId];
}