Misc Stuff 5 (#63)

* name item 31 to 34

* name item 25 to 29

* decompile PassengerManager (95%)

* started cargo manager

* local attribute

* passenger/cargo manager ov001 functions

* name item manager functions

* fix build issues & more docs on 027e0cd8

* format
This commit is contained in:
Yanis
2026-05-11 17:27:59 +02:00
committed by GitHub
parent 645ed65b76
commit 0f74fd4201
82 changed files with 1838 additions and 878 deletions
+28 -42
View File
@@ -14,35 +14,32 @@ const u8 gBombBagCapacities[UpgradeCapacity_Max] = {
CAPACITY_BOMB_BAG_TIER_3,
};
// SetInventoryFlag?
ARM void ItemManager::func_ov000_020a863c(ItemFlag itemFlag) {
SET_FLAG(this->mUnk_08, itemFlag);
ARM void ItemManager::SetFlag(ItemFlag itemFlag) {
SET_FLAG(this->mFlags, itemFlag);
}
// removeEquipmentItem
ARM void ItemManager::func_ov000_020a865c(ItemFlag itemFlag) {
UNSET_FLAG(this->mUnk_08, itemFlag);
ARM void ItemManager::ClearFlag(ItemFlag itemFlag) {
UNSET_FLAG(this->mFlags, itemFlag);
}
ARM bool ItemManager::func_ov000_020a8680() {
return GET_FLAG(this->mUnk_08, ItemFlag_RecruitUniform) && (this->mUnk_12 & 1);
ARM bool ItemManager::HasRecruitUniform() {
return GET_FLAG(this->mFlags, ItemFlag_RecruitUniform) && (this->mUnk_12 & 1);
}
ARM unk32 ItemManager::func_ov000_020a86a4() {
if (GET_FLAG(this->mUnk_08, ItemFlag_AncientShield) && (this->mUnk_12 & 2)) {
if (GET_FLAG(this->mFlags, ItemFlag_AncientShield) && (this->mUnk_12 & 2)) {
return 1;
}
if (GET_FLAG(this->mUnk_08, ItemFlag_Shield)) {
if (GET_FLAG(this->mFlags, ItemFlag_Shield)) {
return 0;
}
return -1;
}
// getItemAmmo
ARM u32 ItemManager::func_ov000_020a86d0(ItemFlag itemFlag) {
bool canUse = GET_FLAG(this->mUnk_08, itemFlag);
ARM u32 ItemManager::GetItemAmount(ItemFlag itemFlag) {
bool canUse = GET_FLAG(this->mFlags, itemFlag);
switch (itemFlag) {
case ItemFlag_Bow:
@@ -56,18 +53,16 @@ ARM u32 ItemManager::func_ov000_020a86d0(ItemFlag itemFlag) {
return canUse;
}
// getMaxArrows
ARM u8 ItemManager::func_ov000_020a8728() {
if (GET_FLAG(this->mUnk_08, ItemFlag_Bow) == 0) {
ARM u8 ItemManager::GetQuiverCapacity() {
if (GET_FLAG(this->mFlags, ItemFlag_Bow) == 0) {
return 0;
}
return gQuiverCapacities[this->mQuiverCapacity];
}
// getMaxBombs
ARM u8 ItemManager::func_ov000_020a8748() {
if (GET_FLAG(this->mUnk_08, ItemFlag_Bombs) == 0) {
ARM u8 ItemManager::GetBombBagCapacity() {
if (GET_FLAG(this->mFlags, ItemFlag_Bombs) == 0) {
return 0;
}
@@ -91,8 +86,7 @@ ARM void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) {
}
}
// addKeys
ARM void ItemManager::func_ov000_020a87c8(s32 amount) {
ARM void ItemManager::GiveSmallKeys(s32 amount) {
s32 newAmount = this->mKeyAmount + amount;
if (newAmount > MAX_KEYS) {
@@ -104,9 +98,8 @@ ARM void ItemManager::func_ov000_020a87c8(s32 amount) {
this->mKeyAmount = newAmount;
}
// gainArrows
ARM void ItemManager::func_ov000_020a87ec(s32 amount) {
s32 maxArrows = this->func_ov000_020a8728();
ARM void ItemManager::GiveArrows(s32 amount) {
s32 maxArrows = this->GetQuiverCapacity();
s32 newAmount = this->mArrowAmount + amount;
if (newAmount > maxArrows) {
@@ -118,9 +111,8 @@ ARM void ItemManager::func_ov000_020a87ec(s32 amount) {
this->mArrowAmount = newAmount;
}
// gainBombs
ARM void ItemManager::func_ov000_020a8820(s32 amount) {
s32 maxBombs = this->func_ov000_020a8748();
ARM void ItemManager::GiveBombs(s32 amount) {
s32 maxBombs = this->GetBombBagCapacity();
s32 newAmount = this->mBombAmount + amount;
if (newAmount > maxBombs) {
@@ -132,7 +124,7 @@ ARM void ItemManager::func_ov000_020a8820(s32 amount) {
this->mBombAmount = newAmount;
}
ARM bool ItemManager::func_ov000_020a8854() {
ARM bool ItemManager::TryEquipForcedItem() {
if (this->mForcedItem != ItemFlag_None) {
this->mEquippedItem = this->mForcedItem;
this->mForcedItem = ItemFlag_None;
@@ -143,8 +135,7 @@ ARM bool ItemManager::func_ov000_020a8854() {
return false;
}
// gainPotion
ARM void ItemManager::func_ov000_020a888c(PotionType type) {
ARM void ItemManager::GivePotion(PotionType type) {
switch (type) {
case PotionType_Red:
case PotionType_Purple:
@@ -161,8 +152,7 @@ ARM void ItemManager::func_ov000_020a888c(PotionType type) {
}
}
// hasPotion
ARM bool ItemManager::func_ov000_020a88c8() {
ARM bool ItemManager::HasPotion() {
for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) {
if (this->mPotions[i] != PotionType_None) {
return true;
@@ -172,8 +162,7 @@ ARM bool ItemManager::func_ov000_020a88c8() {
return false;
}
// hasPurplePotion
ARM bool ItemManager::func_ov000_020a88f4() {
ARM bool ItemManager::HasPurplePotion() {
for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) {
if (this->mPotions[i] == PotionType_Purple) {
return true;
@@ -183,8 +172,7 @@ ARM bool ItemManager::func_ov000_020a88f4() {
return false;
}
// removePurplePotion
ARM void ItemManager::func_ov000_020a8920() {
ARM void ItemManager::RemovePurplePotion() {
for (s32 i = ARRAY_LEN(this->mPotions) - 1; i >= 0; i--) {
if (this->mPotions[i] == PotionType_Purple) {
this->mPotions[i] = PotionType_None;
@@ -193,13 +181,13 @@ ARM void ItemManager::func_ov000_020a8920() {
}
}
// potionInventoryFull
ARM bool ItemManager::func_ov000_020a8948() {
ARM bool ItemManager::PotionSlotsFull() {
for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) {
if (this->mPotions[i] == PotionType_None) {
return false;
}
}
return true;
}
@@ -207,8 +195,7 @@ ARM UnkStruct_ov000_020afc48 *ItemManager::func_ov000_020a8974(ItemFlag itemFlag
return &data_ov000_020afc48[itemFlag];
}
// GetEquipItemFlag?
ARM ItemFlag ItemManager::func_ov000_020a8984(ItemId itemId) {
ARM ItemFlag ItemManager::GetEquippedItemFlag(ItemId itemId) {
ItemFlag itemFlag;
for (itemFlag = 0; itemFlag < ItemFlag_EQUIP_COUNT; itemFlag++) {
@@ -238,8 +225,7 @@ ARM bool ItemManager::func_ov000_020a89d4() {
ARM bool ItemManager::func_ov000_020a8a0c() {
if (this->mUnk_20 == NULL || this->mEquippedItem == ItemFlag_None ||
IS_ITEM_RESTRICTED(this->mItemRestrictions, this->mEquippedItem) ||
this->func_ov000_020a86d0(this->mEquippedItem) == 0) {
IS_ITEM_RESTRICTED(this->mItemRestrictions, this->mEquippedItem) || this->GetItemAmount(this->mEquippedItem) == 0) {
return false;
}
+9 -9
View File
@@ -28,16 +28,16 @@ const u32 data_ov000_020af58c[] = {
GIModel_litB, // ItemId_SnowGlyph
GIModel_litC, // ItemId_OceanGlyph
GIModel_litD, // ItemId_FireGlyph
GIModel_litA, // ItemId_25
GIModel_litB, // ItemId_26
GIModel_litC, // ItemId_27
GIModel_litD, // ItemId_28
GIModel_litC, // ItemId_29
GIModel_litA, // ItemId_RestoredForestGlyph
GIModel_litB, // ItemId_RestoredSnowGlyph
GIModel_litC, // ItemId_RestoredOceanGlyph
GIModel_litD, // ItemId_RestoredFireGlyph
GIModel_litC, // ItemId_RestoredDesertOceanGlyph
GIModel_litA, // ItemId_FinalTrack
GIModel_None, // ItemId_31
GIModel_None, // ItemId_32
GIModel_None, // ItemId_33
GIModel_None, // ItemId_34
GIModel_None, // ItemId_SpiritTrain
GIModel_None, // ItemId_TrainCannon
GIModel_None, // ItemId_SpiritTrainCar
GIModel_None, // ItemId_TrainWagon
GIModel_frcY, // ItemId_ForceGem_35
GIModel_frcY, // ItemId_ForceGem_36
GIModel_frcY, // ItemId_ForceGem_37
+32
View File
@@ -0,0 +1,32 @@
#include "MainGame/CargoManager.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "global.h"
THUMB_BEGIN
CargoManager::CargoManager() {
this->mUnk_18 = 0;
this->mUnk_1C = 0;
}
CargoManager::~CargoManager() {}
void CargoManager::func_ov001_020bf830() {
if (this->mCargo.mAmount == 0 && data_027e09a4->func_01ffd3d8() == 0) {
this->mCargo.mType = CargoType_None;
}
this->mUnk_18 = 0;
this->mUnk_1C = 0;
}
void CargoManager::SetInstance(CargoManager *pInstance) {
gpCargoManager = pInstance;
}
bool CargoManager::ClearInstance() {
gpCargoManager = NULL;
//! @bug: missing return
}
THUMB_END
@@ -0,0 +1,90 @@
#include "MainGame/PassengerManager.hpp"
THUMB_BEGIN
inline bool Test(s32 val) {
bool ret = false;
if (val > 18 || val >= 16) {
ret = true;
}
return ret;
}
inline bool Test2(s32 val) {
bool ret = true;
if (val != 15 && !Test(val)) {
ret = false;
}
return ret;
}
inline bool Test3(s32 val) {
bool ret = true;
if (!Test2(val)) {
if (*((volatile unk32 *) &data_027e09a4->mSceneIndex) != 36) {
ret = false;
}
}
return ret;
}
// https://decomp.me/scratch/svwnb
bool PassengerManager::func_ov001_020bf870() {
s32 sceneIndex = data_027e09a4->mSceneIndex;
bool ret = true;
if (!Test3(sceneIndex)) {
if (*((volatile unk32 *) &data_027e09a4->mSceneIndex) != 37) {
ret = false;
}
}
return ret;
}
PassengerManager::PassengerManager() {
this->mDate = 0;
this->mUnk_2C = -1;
this->mUnk_30 = -1;
}
PassengerManager::~PassengerManager() {}
void PassengerManager::func_ov001_020bf8e4() {
this->func_ov001_020bf910();
if (this->CanCompleteTrip() && this->func_ov001_020bf870()) {
this->SetFailedFlag();
this->Reset();
}
}
void PassengerManager::func_ov001_020bf90c() {}
void PassengerManager::func_ov001_020bf910() {}
// non-matching
bool PassengerManager::func_ov001_020bfa1c() {
volatile u16 date[2];
u16 date2;
date[1] = date[0] = this->GetDate();
return !((date2 << 0x1B) & 1);
}
void PassengerManager::SetInstance(PassengerManager *pInstance) {
gpPassengerManager = pInstance;
}
bool PassengerManager::ClearInstance() {
gpPassengerManager = NULL;
//! @bug missing return
}
THUMB_END
+180
View File
@@ -0,0 +1,180 @@
#include "MainGame/CargoManager.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_020d8698.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_027e0d00.hpp"
struct CargoInfos {
/* 00 */ u16 timerMax;
/* 02 */ s8 amountDecr;
/* 03 */ s8 amountDamageDecr;
/* 04 */ s16 amount;
/* 06 */
};
static const CargoInfos sCargoInfos[] = {
{
// CargoType_MegaIce
.timerMax = 600,
.amountDecr = 1,
.amountDamageDecr = 3,
.amount = 5,
},
{
// CargoType_Wood
.timerMax = 0,
.amountDecr = 3,
.amountDamageDecr = 3,
.amount = 5,
},
{
// CargoType_Iron
.timerMax = 0,
.amountDecr = 3,
.amountDamageDecr = 3,
.amount = 5,
},
{
// CargoType_Fish
.timerMax = 900,
.amountDecr = 3,
.amountDamageDecr = 3,
.amount = 5,
},
{
// CargoType_Cuccos
.timerMax = 0,
.amountDecr = 1,
.amountDamageDecr = 1,
.amount = 1,
},
{
// CargoType_Vessel
.timerMax = 0,
.amountDecr = 1,
.amountDamageDecr = 1,
.amount = 0,
},
{
// CargoType_DarkOre
.timerMax = 900,
.amountDecr = 1,
.amountDamageDecr = 3,
.amount = 5,
},
};
void CargoManager::DoUpdate() {
gpCargoManager->Update();
}
bool CargoManager::IsNotUsingTimer(unk32 type) {
if (type == CargoType_None) {
return true;
}
if (sCargoInfos[type].timerMax == 0) {
return true;
}
return false;
}
void CargoManager::Update() {
if (UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3dcc() == 0) {
return;
}
if (!CargoManager::IsNotUsingTimer(this->mCargo.mType)) {
if (this->mCargo.mType != CargoType_None && this->mCargo.mAmount != 0) {
//! TODO: fake match?
unk32 type = *((volatile unk32 *) &this->mCargo.mType);
if (type == CargoType_DarkOre) {
if (this->func_ov017_020bec9c()) {
this->mCargo.mDecayTimer++;
}
} else if (type == CargoType_MegaIce || type == CargoType_Fish) {
// the timer won't increase if we are in snow realm
if (data_027e09a4->func_01ffd400()->mUnk_1B & 0x20) {
this->mCargo.mDecayTimer++;
}
} else {
this->mCargo.mDecayTimer++;
}
if (this->mCargo.mDecayTimer >= sCargoInfos[this->mCargo.mType].timerMax) {
this->RemoveAmount(1);
this->mCargo.mDecayTimer = 0;
data_ov024_020d8698->func_ov024_020cd3f0(1);
}
}
}
if (this->mCargo.mAmount <= sCargoInfos[this->mCargo.mType].amount) {
data_ov024_020d8698->func_ov024_020cd3e0(1);
} else {
data_ov024_020d8698->func_ov024_020cd3e0(0);
}
if (this->mUnk_18 > 0) {
this->mUnk_18--;
}
}
void CargoManager::Reset() {
this->mCargo.Clear();
this->mCargo2.Clear();
UnkStruct_027e0d00::func_ov000_0205c944()->func_ov024_020d4d10();
}
void CargoManager::Init(unk32 type, unk32 amount) {
this->mCargo.Set(type, amount);
this->mCargo2.Set(type, amount);
UnkStruct_027e0d00 *pUnkStruct_027e0d00 = UnkStruct_027e0d00::func_ov000_0205c944();
pUnkStruct_027e0d00->func_ov024_020d4d10();
pUnkStruct_027e0d00->func_ov024_020d4cc0(this->mCargo.mType);
data_ov024_020d8698->func_ov024_020cd410();
data_ov024_020d8698->func_ov024_020cd3f0(1);
}
void CargoManager::func_ov017_020bebdc() {
if (this->mCargo.mType > CargoType_None && this->mCargo.mType < CargoType_Max) {
this->RemoveAmount(sCargoInfos[this->mCargo.mType].amountDecr);
data_ov024_020d8698->func_ov024_020cd3d0();
}
}
void CargoManager::func_ov017_020bec20() {
if (this->mCargo.mType > CargoType_None && this->mCargo.mType < CargoType_Max) {
this->mUnk_18 = 0x1E;
this->RemoveAmount(sCargoInfos[this->mCargo.mType].amountDamageDecr);
data_ov024_020d8698->func_ov024_020cd3d0();
}
}
void CargoManager::RemoveAmount(unk32 decr) {
unk32 prevAmount = this->mCargo.mAmount;
if (prevAmount >= decr) {
this->mCargo.mAmount = prevAmount - decr;
} else {
this->mCargo.mAmount = 0;
}
if (prevAmount > 0 && this->mCargo.mAmount == 0) {
this->mUnk_1C = true;
}
}
bool CargoManager::func_ov017_020bec9c() {
if (data_027e09a4->func_01ffd3d8() != 0) {
return data_027e0cd8->mUnk_0C->mUnk_160->func_ov026_02106aa8();
}
return false;
}
+2 -2
View File
@@ -24,7 +24,7 @@ ARM UnkSubStruct9::UnkSubStruct9(stack_struct1 param1) :
mUnk_614(0x89, 0x07),
mUnk_68C(0x89, 0x08),
mUnk_704(0x89, 0x09) {
// Vec2s stack;
// Vec2s stack;
void *stack;
if (this->mSaveSlotIndex == 0) {
this->mUnk_004.func_ov000_020633c0(0x40, 0x89, 0x02, 0x1F, 0x89, 0x00);
@@ -32,7 +32,7 @@ ARM UnkSubStruct9::UnkSubStruct9(stack_struct1 param1) :
this->mUnk_77C.y = 0;
} else if (this->mSaveSlotIndex == 1) {
this->mUnk_004.func_ov000_020633c0(0x41, 0x89, 0x01, 0x1F, 0x89, 0x01);
UnkStruct_ov019_020d24c8_28_258 local_40(0x89, 0x02); // sp28
UnkStruct_ov019_020d24c8_28_258 local_40(0x89, 0x02); // sp28
UnkStruct_ov019_020d24c8_28_258 local_58(0x89, 0x01); // sp10
s16 temp_r2 = local_58.mPos.x - local_40.mPos.x;
+2 -2
View File
@@ -282,7 +282,7 @@ ARM void FileSelectMain::func_ov019_020c6e3c() {
Vec2p auStack_50[2];
Vec2s local_44;
Vec2us auStack_60[2]; // c e
Vec2us local_64; // 4 6
Vec2us local_64; // 4 6
int fileIndex;
fileIndex = this->mSaveSlotIndex == 0;
@@ -977,7 +977,7 @@ ARM void FileSelectMain::func_ov019_020c7dc8() {
unk32 var_r10;
unk32 var_r2;
unk32 var_r1;
Vec2p local_48; // sp8 spC
Vec2p local_48; // sp8 spC
Vec2us sp10_sp12[2]; // sp4 sp6 sp10 sp12
if (this->mState == FileSelectState_ChooseModeToContactMode) {
+29
View File
@@ -0,0 +1,29 @@
#include "MainGame/CargoManager.hpp"
#include "System/SysNew.hpp"
CargoManager *CargoManager::Create() {
return new(HeapIndex_1) CargoManager();
}
void CargoManager::SetCargo(unk32 type, unk32 amount) {
this->mCargo.Set(type, amount);
this->func_ov024_020d5900();
}
void CargoManager::GetTypeAndAmount(unk32 *pType, unk32 *pAmount) {
volatile Cargo *pCargo = &this->mCargo2;
unk32 type = pCargo->mType;
unk32 amount = pCargo->mAmount;
*pType = type;
*pAmount = amount;
}
void CargoManager::func_ov024_020d5900() {
this->mCargo2 = this->mCargo;
}
void CargoManager::func_ov024_020d591c() {
this->mCargo = this->mCargo2;
}
+357
View File
@@ -0,0 +1,357 @@
#include "MainGame/PassengerManager.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_02049bac.hpp"
#include "Unknown/UnkStruct_027e09b8.hpp"
extern "C" SceneIndex func_ov000_0205c984();
extern "C" u32 func_ov000_0205c9b4();
struct PassengerInfos {
ActorId actorId;
AdventureFlag_Half flagBoard;
AdventureFlag_Half flagFail;
};
static const PassengerInfos sPassengerInfos[] = {
{
.actorId = ActorId_SYWA,
.flagBoard = AdventureFlag_CarbenBoardsTrain,
.flagFail = AdventureFlag_FailedCarbenTrainRide,
},
{
.actorId = ActorId_WAMA,
.flagBoard = AdventureFlag_WadatsumiBoardsTrain,
.flagFail = AdventureFlag_FailedWadatsumiTrainRide,
},
{
.actorId = ActorId_FOMA,
.flagBoard = AdventureFlag_MorrisBoardsTrain,
.flagFail = AdventureFlag_FailedMorrisTrainRide,
},
{
.actorId = ActorId_FOMB,
.flagBoard = AdventureFlag_MashBoardsTrain,
.flagFail = AdventureFlag_FailedMashTrainRide,
},
{
.actorId = ActorId_FOMC,
.flagBoard = AdventureFlag_YamahikoBoardsTrain,
.flagFail = AdventureFlag_FailedYamahikoTrainRide,
},
{
.actorId = ActorId_FOPD,
.flagBoard = AdventureFlag_Unk_1B1,
.flagFail = AdventureFlag_Unk_1C9,
},
{
.actorId = ActorId_FOMR,
.flagBoard = AdventureFlag_DovokBoardsTrain,
.flagFail = AdventureFlag_FailedDovokTrainRide,
},
{
.actorId = ActorId_YKAP,
.flagBoard = AdventureFlag_KofuBoardsTrain,
.flagFail = AdventureFlag_FailedKofuTrainRide,
},
{
.actorId = ActorId_GORP,
.flagBoard = AdventureFlag_GoronAdultBoardsTrain,
.flagFail = AdventureFlag_FailedGoronAdultTrainRide,
},
{
.actorId = ActorId_GOCP,
.flagBoard = AdventureFlag_ChildGoronBoardsTrain,
.flagFail = AdventureFlag_FailedChildGoronTrainRide,
},
{
.actorId = ActorId_YKCP,
.flagBoard = AdventureFlag_NokoBoardsTrain,
.flagFail = AdventureFlag_FailedNokoTrainRide,
},
{
.actorId = ActorId_TMNA,
.flagBoard = AdventureFlag_FerrusBoardsTrainToOutset,
.flagFail = AdventureFlag_FailedFerrusTrainRideToOutset,
},
{
.actorId = ActorId_TMNP,
.flagBoard = AdventureFlag_FerrusBoardsTrainToMarineTemple,
.flagFail = AdventureFlag_FailedFerrusTrainRideToMarineTemple,
},
{
.actorId = ActorId_CAWB,
.flagBoard = AdventureFlag_MonaBoardsTrain,
.flagFail = AdventureFlag_FailedMonaTrainRide,
},
{
.actorId = ActorId_NCCA,
.flagBoard = AdventureFlag_JoeBoardsTrain,
.flagFail = AdventureFlag_FailedJoeTrainRide,
},
{
.actorId = ActorId_CRFP,
.flagBoard = AdventureFlag_KenzoBoardsTrainToBuildFence,
.flagFail = AdventureFlag_FailedKenzoTrainRideToAnouki,
},
};
u32 PassengerManager::GetPassengerInfoIndex(ActorId actorId) {
for (u32 i = 0; i < ARRAY_LEN(sPassengerInfos); i++) {
if (actorId == sPassengerInfos[i].actorId) {
return i;
}
}
return -1;
}
AdventureFlag PassengerManager::GetBoardFlag(ActorId actorId) {
u32 index = PassengerManager::GetPassengerInfoIndex(actorId);
if (index != -1) {
return sPassengerInfos[index].flagBoard;
}
return AdventureFlag_Nothing;
}
AdventureFlag PassengerManager::GetFailFlag(ActorId actorId) {
u32 index = PassengerManager::GetPassengerInfoIndex(actorId);
if (index != -1) {
return sPassengerInfos[index].flagFail;
}
return AdventureFlag_Nothing;
}
PassengerManager *PassengerManager::Create() {
return new(HeapIndex_1) PassengerManager();
}
// non-matching
void PassengerManager::func_ov024_020d41bc(UnkStruct_Param1 *param1) {
ActorId actorId = param1->actorId;
s16 mUnk_04 = param1->mUnk_04;
s16 sceneIndex = param1->sceneIndex;
this->mPassenger.mActorId = actorId;
this->mPassenger.mUnk_04 = mUnk_04;
u8 roomIndex = param1->roomIndex;
unk32 happiness = param1->happiness;
u16 mUnk_14 = param1->mUnk_14;
this->mPassenger.mSceneIndex = sceneIndex;
this->mPassenger.mRoomIndex = roomIndex;
this->mPassenger.mHappiness = happiness;
this->mDate = mUnk_14;
this->func_ov024_020d4228();
}
void PassengerManager::func_ov024_020d41f4(UnkStruct_Param1 *param1) {
param1->actorId = this->mPassenger2.mActorId;
param1->mUnk_04 = this->mPassenger2.mUnk_04;
param1->sceneIndex = this->mPassenger2.mSceneIndex;
param1->roomIndex = this->mPassenger2.mRoomIndex;
param1->happiness = this->mPassenger2.mHappiness;
param1->mUnk_14 = this->mDate;
}
void PassengerManager::func_ov024_020d4228() {
this->mPassenger2.mActorId = this->mPassenger.mActorId;
this->mPassenger2.mUnk_04 = this->mPassenger.mUnk_04;
this->mPassenger2.mSceneIndex = this->mPassenger.mSceneIndex;
this->mPassenger2.mRoomIndex = this->mPassenger.mRoomIndex;
this->mPassenger2.mHappiness = this->mPassenger.mHappiness;
}
void PassengerManager::func_ov024_020d4258() {
this->mPassenger.mActorId = this->mPassenger2.mActorId;
this->mPassenger.mUnk_04 = this->mPassenger2.mUnk_04;
this->mPassenger.mSceneIndex = this->mPassenger2.mSceneIndex;
this->mPassenger.mRoomIndex = this->mPassenger2.mRoomIndex;
this->mPassenger.mHappiness = this->mPassenger2.mHappiness;
}
bool PassengerManager::TryBoardTrain(ActorId actorId, SceneIndex sceneIndex, u32 roomIndex) {
if (!this->CanCompleteTrip() && !this->IsCaughtByPirates()) {
this->mPassenger.mActorId = actorId;
this->mPassenger.mUnk_04 = 0;
this->mPassenger.mSceneIndex = sceneIndex;
this->mPassenger.mRoomIndex = roomIndex;
this->mPassenger.mHappiness = HappinessLevel_5;
this->func_ov024_020d4228();
if (this->mPassenger.mActorId == ActorId_OLDS) {
this->func_ov024_020d4554();
}
return true;
}
return false;
}
bool PassengerManager::TryReset() {
if (this->CanCompleteTrip()) {
this->Reset();
return true;
}
return false;
}
bool PassengerManager::TryResetAtDestination() {
if (this->CanCompleteTrip()) {
if (this->ReachedDestination(func_ov000_0205c984(), func_ov000_0205c9b4())) {
this->Reset();
return true;
}
}
return false;
}
bool PassengerManager::ReachedDestination(SceneIndex sceneIndex, u32 roomIndex) {
if (this->mPassenger.mRoomIndex == 0xFF) {
return this->mPassenger.mSceneIndex == sceneIndex;
}
return this->mPassenger.mSceneIndex == sceneIndex && this->mPassenger.mRoomIndex == roomIndex;
}
bool PassengerManager::TrySetCaughtByPirates() {
if (this->CanCompleteTrip()) {
SET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_Unk_2CC);
this->mPassenger.mUnk_04 = 1;
return true;
}
return false;
}
bool PassengerManager::CaughtByPiratesTryReset() {
if (this->IsCaughtByPirates()) {
UNSET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_Unk_2CC);
this->SetFailedFlag();
this->Reset();
return true;
}
return false;
}
void PassengerManager::GiveHappiness(unk32 amount) {
if (this->CanCompleteTrip() || this->IsCaughtByPirates()) {
if (this->mPassenger.mHappiness != HappinessLevel_0) {
unk32 newHappiness = this->mPassenger.mHappiness + amount;
if (newHappiness > HappinessLevel_5) {
newHappiness = HappinessLevel_5;
} else if (newHappiness < HappinessLevel_0) {
newHappiness = HappinessLevel_0;
}
this->mPassenger.mHappiness = newHappiness;
}
}
}
unk32 PassengerManager::GetHappiness() {
return this->mPassenger.mHappiness;
}
unk32 PassengerManager::GetHappinessCond() {
if (!this->CanCompleteTrip() && !this->IsCaughtByPirates()) {
return -1;
}
return this->mPassenger.mHappiness;
}
bool PassengerManager::CanCompleteTrip() {
bool result = false;
if (this->mPassenger.mActorId != ActorId_None && this->mPassenger.mUnk_04 == 0 &&
data_027e09a4->mSceneIndex != SceneIndex_t_minigame) {
result = true;
}
return result;
}
bool PassengerManager::IsCaughtByPirates() {
if (this->mPassenger.mActorId != ActorId_None && this->mPassenger.mUnk_04 == 1) {
return true;
}
return false;
}
ActorId PassengerManager::GetActorId() {
return this->mPassenger.mActorId;
}
PassengerManager *PassengerManager::GetInstance() {
PassengerManager *pPassengerManager = this;
if (!this->CanCompleteTrip() && !this->IsCaughtByPirates()) {
pPassengerManager = NULL;
}
return pPassengerManager;
}
void PassengerManager::func_ov024_020d4554() {
this->mUnk_2C = -1;
this->mUnk_30 = -1;
}
void PassengerManager::Reset() {
if (this->mPassenger.mActorId == ActorId_OLDS) {
//! TODO: fake match
volatile u16 date[2];
date[0] = this->GetDate();
u16 date2 = date[0];
date[1] = date2;
this->mDate = date2;
}
this->mPassenger.Reset();
this->mPassenger2.Reset();
}
bool PassengerManager::IsDateUnset() {
return this->mDate == 0;
}
s16 PassengerManager::GetDate() {
u16 date;
data_02049bac.func_02014a34(&date);
return date;
}
// non-matching
u32 PassengerManager::GetRandomIndex(u32 arg1, s32 arg2) {
u64 factor = 0x5D588B656C078965;
u64 addend = 0x00269EC3;
u64 seed = (u32) arg2;
u64 seed2 = addend + (factor * seed);
u32 thing = seed2 >> 32;
return thing % arg1;
}
void PassengerManager::SetFailedFlag() {
if (this->mPassenger.mActorId != ActorId_OLDS) {
AdventureFlag flagBoard = PassengerManager::GetBoardFlag(this->mPassenger.mActorId);
AdventureFlag flagFail = PassengerManager::GetFailFlag(this->mPassenger.mActorId);
UNSET_FLAG(data_027e09b8->mAdventureFlags, flagBoard);
SET_FLAG(data_027e09b8->mAdventureFlags, flagFail);
}
}
@@ -213,7 +213,7 @@ ARM ItemId MapObjectChestBase::func_ov031_021037d0() {
this->vfunc_38(7, 0);
if ((u32) this->mItemId - ItemId_RedPotion <= 2 && data_027e0ce0->mUnk_2C->func_ov000_020a8948()) {
if ((u32) this->mItemId - ItemId_RedPotion <= 2 && data_027e0ce0->mUnk_2C->PotionSlotsFull()) {
return ItemId_BigGreenRupee;
}
+1 -1
View File
@@ -98,7 +98,7 @@ ARM void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) {
switch (this->mUnk_16) {
case 3:
if (param2 == 0) {
data_027e0ce0->mUnk_2C->func_ov000_020a87c8(-1);
data_027e0ce0->mUnk_2C->GiveSmallKeys(-1);
}
UNSET_FLAG(this->mFlags, MapObjFlag_9);
+9 -9
View File
@@ -177,7 +177,7 @@ ARM bool ActorUnkSHIT::func_ov036_0211d2dc(void) {
switch (this->mItemId) {
case ItemId_NormalShield:
if (GET_FLAG(pIVar4->mUnk_08, ItemFlag_Shield)) {
if (GET_FLAG(pIVar4->mFlags, ItemFlag_Shield)) {
return false;
}
@@ -185,7 +185,7 @@ ARM bool ActorUnkSHIT::func_ov036_0211d2dc(void) {
case ItemId_RedPotion:
case ItemId_PurplePotion:
case ItemId_YellowPotion:
if (pIVar4->func_ov000_020a8948()) {
if (pIVar4->PotionSlotsFull()) {
return false;
}
@@ -231,26 +231,26 @@ ARM bool ActorUnkSHIT::func_ov036_0211d2dc(void) {
break;
case ItemId_BombsRefill:
if (!GET_FLAG(pIVar4->mUnk_08, ItemFlag_Bombs)) {
if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bombs)) {
return false;
}
{
u8 amount = pIVar4->mBombAmount;
if (amount >= pIVar4->func_ov000_020a8748()) {
if (amount >= pIVar4->GetBombBagCapacity()) {
return false;
}
}
break;
case ItemId_ArrowsRefill:
if (!GET_FLAG(pIVar4->mUnk_08, ItemFlag_Bow)) {
if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bow)) {
return false;
}
{
u8 amount = pIVar4->mArrowAmount;
if (amount >= pIVar4->func_ov000_020a8728()) {
if (amount >= pIVar4->GetQuiverCapacity()) {
return false;
}
}
@@ -258,7 +258,7 @@ ARM bool ActorUnkSHIT::func_ov036_0211d2dc(void) {
break;
case ItemId_QuiverMedium:
case ItemId_QuiverLarge:
if (!GET_FLAG(pIVar4->mUnk_08, ItemFlag_Bow)) {
if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bow)) {
return false;
}
@@ -324,10 +324,10 @@ ARM void ActorUnkSHIT::func_ov036_0211d570(unk32 param1) {
this->mUnk_2D3 = true;
break;
case ItemId_BombsRefill:
pIVar4->func_ov000_020a8820(10);
pIVar4->GiveBombs(10);
break;
case ItemId_ArrowsRefill:
pIVar4->func_ov000_020a87ec(10);
pIVar4->GiveArrows(10);
break;
case ItemId_QuiverMedium:
case ItemId_QuiverLarge:
+258 -258
View File
@@ -73,7 +73,7 @@ static inline s16 GetItemFlag(ItemId itemId) {
ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
switch (itemId) {
case ItemId_NormalKey:
this->func_ov000_020a87c8(1);
this->GiveSmallKeys(1);
break;
case ItemId_GreenRupee:
this->GiveRupees(1, true, true);
@@ -102,7 +102,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
this->mQuiverCapacity++;
}
this->mArrowAmount = this->func_ov000_020a8728();
this->mArrowAmount = this->GetQuiverCapacity();
break;
case ItemId_BombBagMedium:
case ItemId_BombBagLarge:
@@ -110,22 +110,22 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
this->mBombBagCapacity++;
}
this->mBombAmount = this->func_ov000_020a8748();
this->mBombAmount = this->GetBombBagCapacity();
break;
case ItemId_RedPotion:
this->func_ov000_020a888c(PotionType_Red);
this->GivePotion(PotionType_Red);
break;
case ItemId_PurplePotion:
this->func_ov000_020a888c(PotionType_Purple);
this->GivePotion(PotionType_Purple);
break;
case ItemId_YellowPotion:
this->func_ov000_020a888c(PotionType_Yellow);
this->GivePotion(PotionType_Yellow);
break;
case ItemId_ArrowsRefill:
this->func_ov000_020a87ec(10);
this->GiveArrows(10);
break;
case ItemId_BombsRefill:
this->func_ov000_020a8820(10);
this->GiveBombs(10);
break;
case ItemId_TearLight:
if (this->mTearsAmount >= 3) {
@@ -135,10 +135,10 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
}
break;
default:
ItemFlag itemFlag = ItemManager::func_ov000_020a8984(itemId);
ItemFlag itemFlag = ItemManager::GetEquippedItemFlag(itemId);
if (itemFlag != ItemFlag_None) {
this->func_ov000_020a863c(itemFlag);
this->SetFlag(itemFlag);
switch (itemFlag) {
case ItemFlag_Bombs:
@@ -161,7 +161,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
itemFlag = GetItemFlag(itemId);
if (itemFlag != ItemFlag_None) {
this->func_ov000_020a863c(itemFlag);
this->SetFlag(itemFlag);
}
}
break;
@@ -178,7 +178,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
data_ov000_020b6510->func_ov000_020aa0ac(itemId);
gpMiscAdvManager->GiveLetterOrPriceCard(itemId);
if (!GET_FLAG(this->mUnk_08, ItemFlag_LokomoSword) && itemId == ItemId_TearLight &&
if (!GET_FLAG(this->mFlags, ItemFlag_LokomoSword) && itemId == ItemId_TearLight &&
this->mTearsAmount == MAX_TEARS_OF_LIGHT && (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower)) {
return true;
}
@@ -188,244 +188,244 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
// BMG IDs
static const u32 sBMGItemMap[] = {
BMG_ID(BMGGroup_maingame, 0x01), // ItemId_Nothing
BMG_ID(BMGGroup_maingame, 0x02), // ItemId_NormalShield
BMG_ID(BMGGroup_castle, 0xD6), // ItemId_NormalSword
BMG_ID(BMGGroup_dungeon, 0x7A), // ItemId_Whirlwind
BMG_ID(BMGGroup_maingame, 0x03), // 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, 0x04), // ItemId_9
BMG_ID(BMGGroup_maingame, 0x05), // ItemId_NormalKey
BMG_ID(BMGGroup_maingame, 0x06), // ItemId_BossKey
BMG_ID(BMGGroup_maingame, 0x07), // ItemId_GreenRupee
BMG_ID(BMGGroup_maingame, 0x08), // ItemId_BlueRupee
BMG_ID(BMGGroup_maingame, 0x09), // ItemId_RedRupee
BMG_ID(BMGGroup_maingame, 0x0A), // ItemId_BigGreenRupee
BMG_ID(BMGGroup_maingame, 0x0B), // ItemId_BigRedRupee
BMG_ID(BMGGroup_maingame, 0x0C), // ItemId_BigGoldRupee
BMG_ID(BMGGroup_maingame, 0x0D), // ItemId_ForceGem_18
BMG_ID(BMGGroup_maingame, 0x0E), // ItemId_ForceGem_19
BMG_ID(BMGGroup_maingame, 0x0F), // 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_25
BMG_ID(BMGGroup_snow, 0x00), // ItemId_26
BMG_ID(BMGGroup_water, 0x00), // ItemId_27
BMG_ID(BMGGroup_flame_fld, 0x8E), // ItemId_28
BMG_ID(BMGGroup_desert, 0x48), // ItemId_29
BMG_ID(BMGGroup_maingame, 0x10), // ItemId_FinalTrack
BMG_ID(BMGGroup_maingame, 0x11), // ItemId_31
BMG_ID(BMGGroup_maingame, 0x12), // ItemId_32
BMG_ID(BMGGroup_maingame, 0x13), // ItemId_33
BMG_ID(BMGGroup_maingame, 0x14), // ItemId_34
BMG_ID(BMGGroup_maingame, 0x15), // ItemId_ForceGem_35
BMG_ID(BMGGroup_maingame, 0x16), // ItemId_ForceGem_36
BMG_ID(BMGGroup_maingame, 0x17), // ItemId_ForceGem_37
BMG_ID(BMGGroup_castle, 0xD7), // ItemId_RecruitUniform
BMG_ID(BMGGroup_maingame, 0x18), // ItemId_PostmasterLetter
BMG_ID(BMGGroup_maingame, 0x19), // ItemId_HeartContainer
BMG_ID(BMGGroup_maingame, 0x1A), // ItemId_QuiverMedium
BMG_ID(BMGGroup_maingame, 0x1B), // ItemId_BombBagMedium
BMG_ID(BMGGroup_maingame, 0x1C), // ItemId_ForceGem_43
BMG_ID(BMGGroup_maingame, 0x1D), // ItemId_ForceGem_44
BMG_ID(BMGGroup_maingame, 0x1E), // ItemId_ForceGem_45
BMG_ID(BMGGroup_maingame, 0x1F), // ItemId_ForceGem_46
BMG_ID(BMGGroup_maingame, 0x20), // ItemId_ForceGem_47
BMG_ID(BMGGroup_maingame, 0x21), // ItemId_ForceGem_48
BMG_ID(BMGGroup_maingame, 0x22), // ItemId_ForceGem_49
BMG_ID(BMGGroup_maingame, 0x23), // ItemId_ForceGem_50
BMG_ID(BMGGroup_maingame, 0x24), // ItemId_ForceGem_51
BMG_ID(BMGGroup_maingame, 0x25), // ItemId_ForceGem_52
BMG_ID(BMGGroup_maingame, 0x26), // ItemId_ForceGem_53
BMG_ID(BMGGroup_maingame, 0x27), // ItemId_ForceGem_54
BMG_ID(BMGGroup_maingame, 0x28), // ItemId_ForceGem_55
BMG_ID(BMGGroup_maingame, 0x29), // ItemId_ForceGem_56
BMG_ID(BMGGroup_maingame, 0x2A), // ItemId_ForceGem_57
BMG_ID(BMGGroup_maingame, 0x2B), // ItemId_ForceGem_58
BMG_ID(BMGGroup_maingame, 0x2C), // ItemId_ForceGem_59
BMG_ID(BMGGroup_maingame, 0x2D), // ItemId_ForceGem_60
BMG_ID(BMGGroup_maingame, 0x2E), // ItemId_ForceGem_61
BMG_ID(BMGGroup_maingame, 0x2F), // ItemId_PanFlute
BMG_ID(BMGGroup_village, 0xF7), // ItemId_StampBook
BMG_ID(BMGGroup_dungeon, 0x7F), // ItemId_LightBow
BMG_ID(BMGGroup_maingame, 0x30), // ItemId_LokomoSword
BMG_ID(BMGGroup_maingame, 0x31), // ItemId_TenPriceCard
BMG_ID(BMGGroup_maingame, 0x32), // ItemId_RedPotion
BMG_ID(BMGGroup_maingame, 0x33), // ItemId_PurplePotion
BMG_ID(BMGGroup_maingame, 0x34), // ItemId_YellowPotion
BMG_ID(BMGGroup_maingame, 0x35), // ItemId_DemonFossil
BMG_ID(BMGGroup_maingame, 0x36), // ItemId_StalfosSkull
BMG_ID(BMGGroup_maingame, 0x37), // ItemId_StarFragment
BMG_ID(BMGGroup_maingame, 0x38), // ItemId_BeeLarvae
BMG_ID(BMGGroup_maingame, 0x39), // ItemId_WoodHeart
BMG_ID(BMGGroup_maingame, 0x3A), // ItemId_DarkPearlLoop
BMG_ID(BMGGroup_maingame, 0x3B), // ItemId_WhitePearlLoop
BMG_ID(BMGGroup_maingame, 0x3C), // ItemId_RutoCrown
BMG_ID(BMGGroup_maingame, 0x3D), // ItemId_DragonScale
BMG_ID(BMGGroup_maingame, 0x3E), // ItemId_PirateNecklace
BMG_ID(BMGGroup_maingame, 0x3F), // ItemId_PalaceDish
BMG_ID(BMGGroup_maingame, 0x40), // ItemId_GoronAmber
BMG_ID(BMGGroup_maingame, 0x41), // ItemId_MysticJade
BMG_ID(BMGGroup_maingame, 0x42), // ItemId_AncientCoin
BMG_ID(BMGGroup_maingame, 0x43), // ItemId_PricelessStone
BMG_ID(BMGGroup_maingame, 0x44), // ItemId_RegalRing
BMG_ID(BMGGroup_maingame, 0x45), // ItemId_ArrowsRefill
BMG_ID(BMGGroup_maingame, 0x46), // ItemId_BombsRefill
BMG_ID(BMGGroup_maingame, 0x47), // ItemId_SoldOutSign
BMG_ID(BMGGroup_village, 0xF8), // ItemId_AncientShield
BMG_ID(BMGGroup_maingame, 0x48), // ItemId_QuiverLarge
BMG_ID(BMGGroup_maingame, 0x49), // ItemId_BombBagLarge
BMG_ID(BMGGroup_maingame, 0x4A), // ItemId_RandCommonTreasure
BMG_ID(BMGGroup_maingame, 0x4B), // ItemId_RandUncommonTreasure
BMG_ID(BMGGroup_maingame, 0x4C), // ItemId_RandRareTreasure
BMG_ID(BMGGroup_maingame, 0x4D), // ItemId_RandLegendaryTreasure
BMG_ID(BMGGroup_tower, 0x04), // ItemId_TearLight
BMG_ID(BMGGroup_tower, 0x05), // ItemId_LightCompass
BMG_ID(BMGGroup_maingame, 0x4E), // ItemId_ScrollSpinAttack
BMG_ID(BMGGroup_maingame, 0x4F), // 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, 0x50), // ItemId_RabbitNet
BMG_ID(BMGGroup_maingame, 0x51), // ItemId_BeedleCard
BMG_ID(BMGGroup_maingame, 0x52), // ItemId_SilverCard
BMG_ID(BMGGroup_maingame, 0x53), // ItemId_GoldCard
BMG_ID(BMGGroup_maingame, 0x54), // ItemId_PlatinumCard
BMG_ID(BMGGroup_maingame, 0x55), // ItemId_DiamondCard
BMG_ID(BMGGroup_maingame, 0x56), // ItemId_FreebieCard
BMG_ID(BMGGroup_maingame, 0x57), // ItemId_QuintupleCard
BMG_ID(BMGGroup_maingame, 0x58), // ItemId_CarbenLetter
BMG_ID(BMGGroup_maingame, 0x59), // ItemId_RecruitUniform2
BMG_ID(BMGGroup_maingame, 0x5A), // ItemId_EngineerUniform
BMG_ID(BMGGroup_maingame, 0x01), // ItemId_Nothing
BMG_ID(BMGGroup_maingame, 0x02), // ItemId_NormalShield
BMG_ID(BMGGroup_castle, 0xD6), // ItemId_NormalSword
BMG_ID(BMGGroup_dungeon, 0x7A), // ItemId_Whirlwind
BMG_ID(BMGGroup_maingame, 0x03), // 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, 0x04), // ItemId_9
BMG_ID(BMGGroup_maingame, 0x05), // ItemId_NormalKey
BMG_ID(BMGGroup_maingame, 0x06), // ItemId_BossKey
BMG_ID(BMGGroup_maingame, 0x07), // ItemId_GreenRupee
BMG_ID(BMGGroup_maingame, 0x08), // ItemId_BlueRupee
BMG_ID(BMGGroup_maingame, 0x09), // ItemId_RedRupee
BMG_ID(BMGGroup_maingame, 0x0A), // ItemId_BigGreenRupee
BMG_ID(BMGGroup_maingame, 0x0B), // ItemId_BigRedRupee
BMG_ID(BMGGroup_maingame, 0x0C), // ItemId_BigGoldRupee
BMG_ID(BMGGroup_maingame, 0x0D), // ItemId_ForceGem_18
BMG_ID(BMGGroup_maingame, 0x0E), // ItemId_ForceGem_19
BMG_ID(BMGGroup_maingame, 0x0F), // 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, 0x10), // ItemId_FinalTrack
BMG_ID(BMGGroup_maingame, 0x11), // ItemId_SpiritTrain
BMG_ID(BMGGroup_maingame, 0x12), // ItemId_TrainCannon
BMG_ID(BMGGroup_maingame, 0x13), // ItemId_SpiritTrainCar
BMG_ID(BMGGroup_maingame, 0x14), // ItemId_TrainWagon
BMG_ID(BMGGroup_maingame, 0x15), // ItemId_ForceGem_35
BMG_ID(BMGGroup_maingame, 0x16), // ItemId_ForceGem_36
BMG_ID(BMGGroup_maingame, 0x17), // ItemId_ForceGem_37
BMG_ID(BMGGroup_castle, 0xD7), // ItemId_RecruitUniform
BMG_ID(BMGGroup_maingame, 0x18), // ItemId_PostmasterLetter
BMG_ID(BMGGroup_maingame, 0x19), // ItemId_HeartContainer
BMG_ID(BMGGroup_maingame, 0x1A), // ItemId_QuiverMedium
BMG_ID(BMGGroup_maingame, 0x1B), // ItemId_BombBagMedium
BMG_ID(BMGGroup_maingame, 0x1C), // ItemId_ForceGem_43
BMG_ID(BMGGroup_maingame, 0x1D), // ItemId_ForceGem_44
BMG_ID(BMGGroup_maingame, 0x1E), // ItemId_ForceGem_45
BMG_ID(BMGGroup_maingame, 0x1F), // ItemId_ForceGem_46
BMG_ID(BMGGroup_maingame, 0x20), // ItemId_ForceGem_47
BMG_ID(BMGGroup_maingame, 0x21), // ItemId_ForceGem_48
BMG_ID(BMGGroup_maingame, 0x22), // ItemId_ForceGem_49
BMG_ID(BMGGroup_maingame, 0x23), // ItemId_ForceGem_50
BMG_ID(BMGGroup_maingame, 0x24), // ItemId_ForceGem_51
BMG_ID(BMGGroup_maingame, 0x25), // ItemId_ForceGem_52
BMG_ID(BMGGroup_maingame, 0x26), // ItemId_ForceGem_53
BMG_ID(BMGGroup_maingame, 0x27), // ItemId_ForceGem_54
BMG_ID(BMGGroup_maingame, 0x28), // ItemId_ForceGem_55
BMG_ID(BMGGroup_maingame, 0x29), // ItemId_ForceGem_56
BMG_ID(BMGGroup_maingame, 0x2A), // ItemId_ForceGem_57
BMG_ID(BMGGroup_maingame, 0x2B), // ItemId_ForceGem_58
BMG_ID(BMGGroup_maingame, 0x2C), // ItemId_ForceGem_59
BMG_ID(BMGGroup_maingame, 0x2D), // ItemId_ForceGem_60
BMG_ID(BMGGroup_maingame, 0x2E), // ItemId_ForceGem_61
BMG_ID(BMGGroup_maingame, 0x2F), // ItemId_PanFlute
BMG_ID(BMGGroup_village, 0xF7), // ItemId_StampBook
BMG_ID(BMGGroup_dungeon, 0x7F), // ItemId_LightBow
BMG_ID(BMGGroup_maingame, 0x30), // ItemId_LokomoSword
BMG_ID(BMGGroup_maingame, 0x31), // ItemId_TenPriceCard
BMG_ID(BMGGroup_maingame, 0x32), // ItemId_RedPotion
BMG_ID(BMGGroup_maingame, 0x33), // ItemId_PurplePotion
BMG_ID(BMGGroup_maingame, 0x34), // ItemId_YellowPotion
BMG_ID(BMGGroup_maingame, 0x35), // ItemId_DemonFossil
BMG_ID(BMGGroup_maingame, 0x36), // ItemId_StalfosSkull
BMG_ID(BMGGroup_maingame, 0x37), // ItemId_StarFragment
BMG_ID(BMGGroup_maingame, 0x38), // ItemId_BeeLarvae
BMG_ID(BMGGroup_maingame, 0x39), // ItemId_WoodHeart
BMG_ID(BMGGroup_maingame, 0x3A), // ItemId_DarkPearlLoop
BMG_ID(BMGGroup_maingame, 0x3B), // ItemId_WhitePearlLoop
BMG_ID(BMGGroup_maingame, 0x3C), // ItemId_RutoCrown
BMG_ID(BMGGroup_maingame, 0x3D), // ItemId_DragonScale
BMG_ID(BMGGroup_maingame, 0x3E), // ItemId_PirateNecklace
BMG_ID(BMGGroup_maingame, 0x3F), // ItemId_PalaceDish
BMG_ID(BMGGroup_maingame, 0x40), // ItemId_GoronAmber
BMG_ID(BMGGroup_maingame, 0x41), // ItemId_MysticJade
BMG_ID(BMGGroup_maingame, 0x42), // ItemId_AncientCoin
BMG_ID(BMGGroup_maingame, 0x43), // ItemId_PricelessStone
BMG_ID(BMGGroup_maingame, 0x44), // ItemId_RegalRing
BMG_ID(BMGGroup_maingame, 0x45), // ItemId_ArrowsRefill
BMG_ID(BMGGroup_maingame, 0x46), // ItemId_BombsRefill
BMG_ID(BMGGroup_maingame, 0x47), // ItemId_SoldOutSign
BMG_ID(BMGGroup_village, 0xF8), // ItemId_AncientShield
BMG_ID(BMGGroup_maingame, 0x48), // ItemId_QuiverLarge
BMG_ID(BMGGroup_maingame, 0x49), // ItemId_BombBagLarge
BMG_ID(BMGGroup_maingame, 0x4A), // ItemId_RandCommonTreasure
BMG_ID(BMGGroup_maingame, 0x4B), // ItemId_RandUncommonTreasure
BMG_ID(BMGGroup_maingame, 0x4C), // ItemId_RandRareTreasure
BMG_ID(BMGGroup_maingame, 0x4D), // ItemId_RandLegendaryTreasure
BMG_ID(BMGGroup_tower, 0x04), // ItemId_TearLight
BMG_ID(BMGGroup_tower, 0x05), // ItemId_LightCompass
BMG_ID(BMGGroup_maingame, 0x4E), // ItemId_ScrollSpinAttack
BMG_ID(BMGGroup_maingame, 0x4F), // 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, 0x50), // ItemId_RabbitNet
BMG_ID(BMGGroup_maingame, 0x51), // ItemId_BeedleCard
BMG_ID(BMGGroup_maingame, 0x52), // ItemId_SilverCard
BMG_ID(BMGGroup_maingame, 0x53), // ItemId_GoldCard
BMG_ID(BMGGroup_maingame, 0x54), // ItemId_PlatinumCard
BMG_ID(BMGGroup_maingame, 0x55), // ItemId_DiamondCard
BMG_ID(BMGGroup_maingame, 0x56), // ItemId_FreebieCard
BMG_ID(BMGGroup_maingame, 0x57), // ItemId_QuintupleCard
BMG_ID(BMGGroup_maingame, 0x58), // ItemId_CarbenLetter
BMG_ID(BMGGroup_maingame, 0x59), // ItemId_RecruitUniform2
BMG_ID(BMGGroup_maingame, 0x5A), // ItemId_EngineerUniform
};
// 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_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_25
AdventureFlag_CompletedOceanRestorationSong, // ItemId_26
AdventureFlag_CompletedSnowRestorationSong, // ItemId_27
AdventureFlag_CompletedFireRestorationSong, // ItemId_28
AdventureFlag_CompletedSandRestorationSong, // ItemId_29
AdventureFlag_OpenedDarkRealmPortal, // ItemId_FinalTrack
AdventureFlag_ObtainedSpiritTrain, // ItemId_31
AdventureFlag_ObtainedTrainCannon, // ItemId_32
AdventureFlag_Unk_020, // ItemId_33
AdventureFlag_ObtainedTrainWagon, // ItemId_34
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_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
AdventureFlag_ReceivedCarbensLetter, // ItemId_CarbenLetter
AdventureFlag_Nothing, // ItemId_RecruitUniform2
AdventureFlag_Nothing, // ItemId_EngineerUniform
};
// non-matching
@@ -514,7 +514,7 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) {
case ItemId_BombBag:
case ItemId_BombBagMedium:
case ItemId_BombBagLarge:
if (GET_FLAG(pItemManager->mUnk_08, ItemFlag_Bombs) == 0) {
if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bombs) == 0) {
itemId = ItemId_BombBag;
} else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier1) {
itemId = ItemId_BombBagMedium;
@@ -525,7 +525,7 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) {
case ItemId_NormalBow:
case ItemId_QuiverMedium:
case ItemId_QuiverLarge:
if (GET_FLAG(pItemManager->mUnk_08, ItemFlag_Bow) == 0) {
if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bow) == 0) {
itemId = ItemId_NormalBow;
} else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier1) {
itemId = ItemId_QuiverMedium;
@@ -679,11 +679,11 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) {
this->mUnk_73 = 0;
switch (this->mUnk_54.mItemId) {
case ItemId_25:
case ItemId_26:
case ItemId_27:
case ItemId_28:
case ItemId_29:
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;
@@ -777,11 +777,11 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
case ItemId_FireGlyph:
var_r1 = 0x68;
break;
case ItemId_25:
case ItemId_26:
case ItemId_27:
case ItemId_28:
case ItemId_29:
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:
@@ -1022,13 +1022,13 @@ THUMB void UnkStruct_027e0ce0_34::func_ov110_02185d3c(ItemId itemId) {
u16 auStack_18[2];
switch (itemId) {
case ItemId_31:
case ItemId_SpiritTrain:
this->func_ov024_020d3d98(0, 0);
this->mUnk_2C = 1;
this->mUnk_00 = 0;
this->mUnk_10 = 0;
break;
case ItemId_33:
case ItemId_SpiritTrainCar:
this->func_ov024_020d3d98(2, 0);
this->mUnk_2C = 2;
this->mUnk_04 = 2;