mirror of
https://github.com/zeldaret/st
synced 2026-07-11 23:20:17 -04:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user