mirror of
https://github.com/zeldaret/st
synced 2026-09-07 11:11:37 -04:00
Overlay 110 - PlayerGet (#2)
* delink overlay 110 * mangled functions names in symbols * improve how versions are defined in the compiler's command * add version-exclusive function + fix data_ov110_021861ec size * match .rodata * dsd sig apply * progress * vfunc_18 & func_ov110_02185d3c + format * symbols renames * remove force_data pragma * started func_ov110_02184a40 * improve vfunc_18 match thanks to nepecam * fixed relocs issues * match func_ov110_02186b8c * continue the awful function (and rename the folder) * format * build issues * almost match func_ov110_02184a40!!! * start vfunc_10 + misc * vfunc_10 progress (91%) * symbol fix * vfunc_10 big switch fix * turn some structs into a class * update symbols * vfunc_10 prog, move func_ov110_02185da4 to itemmanaager and some docs/cleanup * progress on playerget and itemmanager * fix build issues * remove accidental header from merge and name mUnk_60 * add hex value comment in item id enum * random stuff * started vfunc_0c * move externs around * match/docs stuff related to item usage in PlayerGet * format * vfunc_10 version diff * improve func_ov110_02186b8c handling and fix broken matches * vfunc_0c small improvements * progress on item manager * complete item manager and add upgrade capacities * some cleanup * header cleanup * match data (kind of) * symbol naming * name more symbols 1 * name more symbols 2 * name more symbols 3 * more jp syncing * mystery actor stuff * rename the file and fix build errors
This commit is contained in:
@@ -41,8 +41,8 @@ ARM void Actor::func_ov000_0209848c(UnkStruct_ov000_020b539c_30 *param1) {
|
||||
temp_r3 = ¶m1->mUnk_04;
|
||||
|
||||
this->mUnk_90 = param1;
|
||||
this->mUnk_30 = this->mUnk_34 = temp_r3;
|
||||
this->mUnk_4e = unk_1c;
|
||||
this->mUnk_30 = (unk32 *) this->mUnk_34 = temp_r3;
|
||||
this->mUnk_4e = unk_1c;
|
||||
}
|
||||
|
||||
ARM unk32 Actor::vfunc_18() {
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
#include "Actor/ActorUnk_ov000_020a8bb0.hpp"
|
||||
#include "global.h"
|
||||
|
||||
ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(unk32 param1, unk32 param2) {
|
||||
unk32 uVar2;
|
||||
|
||||
this->mUnk_0b0 = 0;
|
||||
this->mUnk_094.mUnk_0c = param2;
|
||||
this->mUnk_094.mUnk_10 = param1;
|
||||
this->mUnk_094.mUnk_14 = 0;
|
||||
this->mUnk_094.mUnk_18 = 0;
|
||||
this->mUnk_0b4 = -1;
|
||||
this->mUnk_0b8 = 0;
|
||||
this->mUnk_0bc = 0;
|
||||
this->mUnk_0c0 = 0;
|
||||
this->mUnk_0c4 = 0;
|
||||
this->mUnk_0c8 = 0;
|
||||
this->mUnk_0cc = 0;
|
||||
this->mUnk_0ce = 0;
|
||||
this->mUnk_0d0 = 0;
|
||||
this->mUnk_0d4 = 0;
|
||||
this->mUnk_0d8 = 0;
|
||||
this->mUnk_0da = 0;
|
||||
this->mUnk_0dc = 0x2AAB;
|
||||
this->mUnk_0de = 0xEAAB;
|
||||
this->mUnk_0e0 = 0x1555;
|
||||
this->mUnk_0e4 = 0;
|
||||
this->mUnk_0e8 = 0;
|
||||
this->mUnk_0ea = 0;
|
||||
this->mUnk_0ec.func_ov024_020d6668();
|
||||
uVar2 = this->mUnk_34->mUnk_0c;
|
||||
this->mUnk_114 = -1;
|
||||
this->mUnk_118 = 0x1000;
|
||||
this->mUnk_11c = 0x019A;
|
||||
this->mUnk_104 = 0;
|
||||
this->mUnk_108 = uVar2;
|
||||
this->mUnk_10c = 0;
|
||||
this->mUnk_110 = uVar2;
|
||||
this->mUnk_30 = &this->mUnk_104;
|
||||
this->mUnk_4a = 5;
|
||||
this->mUnk_44 = 0x1f;
|
||||
this->mUnk_094.mUnk_08 = 3;
|
||||
this->mUnk_38 = &this->mUnk_094.mUnk_00;
|
||||
this->mUnk_0b0 |= 8;
|
||||
}
|
||||
|
||||
ARM ActorUnk_ov000_020a8bb0::~ActorUnk_ov000_020a8bb0() {}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_18() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_1c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8db0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8dd0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8df0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_b4() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8e9c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_b0() {}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_88() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_8c() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_90() {
|
||||
return 0x7B;
|
||||
}
|
||||
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_94() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_60() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_64() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ff4() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_6c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_68() {}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_7c() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_80() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_84() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a91b8() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9200() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_70() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_74() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_78() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9248() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_5c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_98() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a94b0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_9c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_a0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_ac() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a95d8() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_a4() {}
|
||||
|
||||
ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_a8() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9804() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_20() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_24() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_2c() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_b8() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::vfunc_14() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a20() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a34() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a50() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a94() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9abc() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9ae0() {}
|
||||
ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9afc() {}
|
||||
@@ -1,10 +1,23 @@
|
||||
#include "Item/ItemManager.hpp"
|
||||
#include "Unknown/UnkStruct_020d8698.hpp"
|
||||
#include "global.h"
|
||||
|
||||
// quiver and bomb bag tiers
|
||||
extern u8 data_ov000_020afc40[3];
|
||||
extern u8 data_ov000_020afc43[3];
|
||||
extern unk32 data_ov000_020afde8[];
|
||||
const u8 gQuiverCapacities[UpgradeCapacity_Max] = {
|
||||
CAPACITY_QUIVER_TIER_1,
|
||||
CAPACITY_QUIVER_TIER_2,
|
||||
CAPACITY_QUIVER_TIER_3,
|
||||
};
|
||||
|
||||
const u8 gBombBagCapacities[UpgradeCapacity_Max] = {
|
||||
CAPACITY_BOMB_BAG_TIER_1,
|
||||
CAPACITY_BOMB_BAG_TIER_2,
|
||||
CAPACITY_BOMB_BAG_TIER_3,
|
||||
};
|
||||
|
||||
// SetInventoryFlag?
|
||||
ARM void ItemManager::func_ov000_020a863c(ItemFlag itemFlag) {
|
||||
SET_FLAG(this->mUnk_08, itemFlag);
|
||||
}
|
||||
|
||||
// removeEquipmentItem
|
||||
ARM void ItemManager::func_ov000_020a865c(ItemFlag itemFlag) {
|
||||
@@ -49,7 +62,7 @@ ARM u8 ItemManager::func_ov000_020a8728() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return data_ov000_020afc40[this->mQuiverCapacity];
|
||||
return gQuiverCapacities[this->mQuiverCapacity];
|
||||
}
|
||||
|
||||
// getMaxBombs
|
||||
@@ -58,7 +71,24 @@ ARM u8 ItemManager::func_ov000_020a8748() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return data_ov000_020afc43[this->mBombBagCapacity];
|
||||
return gBombBagCapacities[this->mBombBagCapacity];
|
||||
}
|
||||
|
||||
ARM void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) {
|
||||
u16 prevNumRupees = this->mNumRupees;
|
||||
s32 newAmount = this->mNumRupees + amount;
|
||||
|
||||
if (newAmount > 9999) {
|
||||
newAmount = 9999;
|
||||
} else if (newAmount < 0) {
|
||||
newAmount = 0;
|
||||
}
|
||||
|
||||
this->mNumRupees = newAmount;
|
||||
|
||||
if (param3) {
|
||||
data_ov024_020d8698->func_ov024_020cd368(param2 && prevNumRupees != this->mNumRupees, 1);
|
||||
}
|
||||
}
|
||||
|
||||
// addKeys
|
||||
@@ -102,6 +132,17 @@ ARM void ItemManager::func_ov000_020a8820(s32 amount) {
|
||||
this->mBombAmount = newAmount;
|
||||
}
|
||||
|
||||
ARM bool ItemManager::func_ov000_020a8854() {
|
||||
if (this->mForcedItem != ItemFlag_None) {
|
||||
this->mEquippedItem = this->mForcedItem;
|
||||
this->mForcedItem = ItemFlag_None;
|
||||
data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// gainPotion
|
||||
ARM void ItemManager::func_ov000_020a888c(PotionType type) {
|
||||
switch (type) {
|
||||
@@ -162,222 +203,77 @@ ARM bool ItemManager::func_ov000_020a8948() {
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void ItemManager::func_ov000_020a8974() {}
|
||||
ARM void ItemManager::func_ov000_020a8984() {}
|
||||
THUMB void ItemManager::func_ov000_020a89bc() {}
|
||||
ARM void ItemManager::func_ov000_020a89d4() {}
|
||||
ARM void ItemManager::func_ov000_020a8a0c() {}
|
||||
ARM void ItemManager::func_ov000_020a8a5c() {}
|
||||
ARM void ItemManager::func_ov000_020a8a74() {}
|
||||
ARM void ItemManager::func_ov000_020a8a90() {}
|
||||
ARM void ItemManager::func_ov000_020a8aa4() {}
|
||||
ARM void ItemManager::func_ov000_020a8ab8() {}
|
||||
ARM void ItemManager::func_ov000_020a8acc() {}
|
||||
ARM void ItemManager::func_ov000_020a8ae0() {}
|
||||
ARM void ItemManager::func_ov000_020a8af4() {}
|
||||
ARM void ItemManager::func_ov000_020a8b48() {}
|
||||
ARM void ItemManager::func_ov000_020a8b7c() {}
|
||||
ARM void ItemManager::func_ov000_020a8bb0() {}
|
||||
ARM void ItemManager::func_ov000_020a8cc0() {}
|
||||
ARM void ItemManager::func_ov000_020a8ce0() {}
|
||||
ARM void ItemManager::func_ov000_020a8d08() {}
|
||||
ARM void ItemManager::func_ov000_020a8d28() {}
|
||||
ARM void ItemManager::func_ov000_020a8da0() {}
|
||||
ARM void ItemManager::func_ov000_020a8da4() {}
|
||||
ARM void ItemManager::func_ov000_020a8db0() {}
|
||||
ARM void ItemManager::func_ov000_020a8dd0() {}
|
||||
ARM void ItemManager::func_ov000_020a8df0() {}
|
||||
ARM void ItemManager::func_ov000_020a8e84() {}
|
||||
ARM void ItemManager::func_ov000_020a8e9c() {}
|
||||
ARM void ItemManager::func_ov000_020a8ec0() {}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8f54() {
|
||||
return 1;
|
||||
ARM UnkStruct_ov000_020afc48 *ItemManager::func_ov000_020a8974(ItemFlag itemFlag) {
|
||||
return &data_ov000_020afc48[itemFlag];
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8f5c() {
|
||||
return 1;
|
||||
}
|
||||
// GetEquipItemFlag?
|
||||
ARM ItemFlag ItemManager::func_ov000_020a8984(ItemId itemId) {
|
||||
ItemFlag itemFlag;
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8f64() {
|
||||
return 0x7B;
|
||||
}
|
||||
for (itemFlag = 0; itemFlag < ItemFlag_EQUIP_COUNT; itemFlag++) {
|
||||
UnkStruct_ov000_020afc48 *pEquipItem = ItemManager::func_ov000_020a8974(itemFlag);
|
||||
|
||||
ARM void ItemManager::func_ov000_020a8f6c() {}
|
||||
ARM void ItemManager::func_ov000_020a8f78() {}
|
||||
ARM void ItemManager::func_ov000_020a8fe0() {}
|
||||
ARM void ItemManager::func_ov000_020a8ff4() {}
|
||||
ARM void ItemManager::func_ov000_020a914c() {}
|
||||
ARM void ItemManager::func_ov000_020a9150() {}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a91a0() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a91a8() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a91b0() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM void ItemManager::func_ov000_020a91b8() {}
|
||||
ARM void ItemManager::func_ov000_020a9200() {}
|
||||
ARM void ItemManager::func_ov000_020a921c() {}
|
||||
ARM void ItemManager::func_ov000_020a9240() {}
|
||||
ARM void ItemManager::func_ov000_020a9244() {}
|
||||
ARM void ItemManager::func_ov000_020a9248() {}
|
||||
ARM void ItemManager::func_ov000_020a92d0() {}
|
||||
ARM void ItemManager::func_ov000_020a9448() {}
|
||||
ARM void ItemManager::func_ov000_020a94b0() {}
|
||||
ARM void ItemManager::func_ov000_020a9598() {}
|
||||
ARM void ItemManager::func_ov000_020a95c4() {}
|
||||
ARM void ItemManager::func_ov000_020a95d4() {}
|
||||
ARM void ItemManager::func_ov000_020a95d8() {}
|
||||
ARM void ItemManager::func_ov000_020a95e4() {}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a97fc() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
ARM void ItemManager::func_ov000_020a9804() {}
|
||||
ARM void ItemManager::func_ov000_020a98f0() {}
|
||||
ARM void ItemManager::func_ov000_020a98f4() {}
|
||||
ARM void ItemManager::func_ov000_020a995c() {}
|
||||
ARM void ItemManager::func_ov000_020a99a4() {}
|
||||
ARM void ItemManager::func_ov000_020a99d8() {}
|
||||
ARM void ItemManager::func_ov000_020a9a20() {}
|
||||
ARM void ItemManager::func_ov000_020a9a34() {}
|
||||
ARM void ItemManager::func_ov000_020a9a50() {}
|
||||
ARM void ItemManager::func_ov000_020a9a94() {}
|
||||
ARM void ItemManager::func_ov000_020a9abc() {}
|
||||
ARM void ItemManager::func_ov000_020a9ae0() {}
|
||||
ARM void ItemManager::func_ov000_020a9afc() {}
|
||||
ARM void ItemManager::func_ov000_020a9b10() {}
|
||||
ARM void ItemManager::func_ov000_020a9b2c() {}
|
||||
ARM void ItemManager::func_ov000_020a9b3c() {}
|
||||
ARM void ItemManager::func_ov000_020a9b4c() {}
|
||||
ARM void ItemManager::func_ov000_020a9c4c() {}
|
||||
|
||||
// hasAnyTreasure
|
||||
ARM bool ItemManager::func_ov000_020a9c64() {
|
||||
for (s32 i = 0; i < ARRAY_LEN(this->mUnk_3c); i++) {
|
||||
if (this->mUnk_3c[i] >= 0) {
|
||||
return true;
|
||||
if (itemId == pEquipItem->mItemId) {
|
||||
return itemFlag;
|
||||
}
|
||||
}
|
||||
|
||||
return ItemFlag_None;
|
||||
}
|
||||
|
||||
THUMB void ItemManager::func_ov000_020a89bc() {
|
||||
if (this->mUnk_20->mUnk_14.func_ov053_0213caf0() != 0) {
|
||||
this->mUnk_24 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool ItemManager::func_ov000_020a89d4() {
|
||||
if (this->mUnk_20 != NULL) {
|
||||
return (this->mUnk_20->mUnk_14.mUnk_08 & 0xFFFF) != 0xFFFF;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// getTreasureAmount
|
||||
ARM unk32 ItemManager::func_ov000_020a9c90(TreasureType type) {
|
||||
if (this->mUnk_3c[type] >= 0) {
|
||||
return this->mUnk_3c[type];
|
||||
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) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return this->mUnk_20->func_ov031_020db874(this->mEquippedItem);
|
||||
}
|
||||
|
||||
// isTreasureAmountMaxed
|
||||
ARM bool ItemManager::func_ov000_020a9ca4(TreasureType type) {
|
||||
return this->func_ov000_020a9c90(type) >= MAX_TREASURE;
|
||||
}
|
||||
|
||||
// gainTreasure
|
||||
ARM void ItemManager::func_ov000_020a9cbc(TreasureType type, s32 amount) {
|
||||
s32 newAmount;
|
||||
|
||||
if (this->mUnk_3c[type] < 0) {
|
||||
this->mUnk_3c[type] = 0;
|
||||
ARM void ItemManager::func_ov000_020a8a5c() {
|
||||
if (this->mUnk_20 == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
newAmount = this->mUnk_3c[type] + amount;
|
||||
|
||||
if (newAmount > MAX_TREASURE) {
|
||||
newAmount = MAX_TREASURE;
|
||||
} else if (newAmount < 0) {
|
||||
newAmount = 0;
|
||||
}
|
||||
|
||||
this->mUnk_3c[type] = newAmount;
|
||||
this->mUnk_20->func_ov031_020db8cc();
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a9d78(unk32 param1) {}
|
||||
ARM unk32 ItemManager::func_ov000_020a9e14(unk32 param1) {}
|
||||
ARM unk32 ItemManager::func_ov000_020a9eb0(unk32 param1) {}
|
||||
ARM unk32 ItemManager::func_ov000_020a9f4c(unk32 param1) {}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020aa02c(ItemId itemId) {
|
||||
switch (itemId) {
|
||||
case ItemId_RandCommonTreasure:
|
||||
return data_ov000_020afde8[ItemManager::func_ov000_020a9d78(-1)];
|
||||
case ItemId_RandUncommonTreasure:
|
||||
return data_ov000_020afde8[ItemManager::func_ov000_020a9e14(-1)];
|
||||
case ItemId_RandRareTreasure:
|
||||
return data_ov000_020afde8[ItemManager::func_ov000_020a9eb0(-1)];
|
||||
case ItemId_RandLegendaryTreasure:
|
||||
return data_ov000_020afde8[ItemManager::func_ov000_020a9f4c(-1)];
|
||||
default:
|
||||
break;
|
||||
ARM bool ItemManager::func_ov000_020a8a74() {
|
||||
if (this->mUnk_20 == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return itemId;
|
||||
return this->mUnk_20->func_ov031_020db8f8();
|
||||
}
|
||||
|
||||
// gainTreasureFromItem
|
||||
ARM void ItemManager::func_ov000_020aa0ac(ItemId itemId) {
|
||||
switch (itemId) {
|
||||
case ItemId_DemonFossil:
|
||||
this->func_ov000_020a9cbc(TreasureType_DemonFossil, 1);
|
||||
break;
|
||||
case ItemId_StalfosSkull:
|
||||
this->func_ov000_020a9cbc(TreasureType_StalfosSkull, 1);
|
||||
break;
|
||||
case ItemId_StarFragment:
|
||||
this->func_ov000_020a9cbc(TreasureType_StarFragment, 1);
|
||||
break;
|
||||
case ItemId_BeeLarvae:
|
||||
this->func_ov000_020a9cbc(TreasureType_BeeLarvae, 1);
|
||||
break;
|
||||
case ItemId_WoodHeart:
|
||||
this->func_ov000_020a9cbc(TreasureType_WoodHeart, 1);
|
||||
break;
|
||||
case ItemId_DarkPearlLoop:
|
||||
this->func_ov000_020a9cbc(TreasureType_DarkPearlLoop, 1);
|
||||
break;
|
||||
case ItemId_WhitePearlLoop:
|
||||
this->func_ov000_020a9cbc(TreasureType_WhitePearlLoop, 1);
|
||||
break;
|
||||
case ItemId_RutoCrown:
|
||||
this->func_ov000_020a9cbc(TreasureType_RutoCrown, 1);
|
||||
break;
|
||||
case ItemId_DragonScale:
|
||||
this->func_ov000_020a9cbc(TreasureType_DragonScale, 1);
|
||||
break;
|
||||
case ItemId_PirateNecklace:
|
||||
this->func_ov000_020a9cbc(TreasureType_PirateNecklace, 1);
|
||||
break;
|
||||
case ItemId_PalaceDish:
|
||||
this->func_ov000_020a9cbc(TreasureType_PalaceDish, 1);
|
||||
break;
|
||||
case ItemId_GoronAmber:
|
||||
this->func_ov000_020a9cbc(TreasureType_GoronAmber, 1);
|
||||
break;
|
||||
case ItemId_MysticJade:
|
||||
this->func_ov000_020a9cbc(TreasureType_MysticJade, 1);
|
||||
break;
|
||||
case ItemId_AncientCoin:
|
||||
this->func_ov000_020a9cbc(TreasureType_AncientCoin, 1);
|
||||
break;
|
||||
case ItemId_PricelessStone:
|
||||
this->func_ov000_020a9cbc(TreasureType_PricelessStone, 1);
|
||||
break;
|
||||
case ItemId_RegalRing:
|
||||
this->func_ov000_020a9cbc(TreasureType_RegalRing, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ARM unk32 ItemManager::func_ov000_020a8a90() {
|
||||
return this->mUnk_20 != NULL ? this->mUnk_20->mUnk_00 : 0;
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8aa4() {
|
||||
return this->mUnk_20 != NULL ? this->mUnk_20->mUnk_04 : 0;
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8ab8() {
|
||||
return this->mUnk_20 != NULL ? this->mUnk_20->mUnk_0c : 0;
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov000_020a8acc() {
|
||||
return this->mUnk_20 != NULL ? this->mUnk_20->mUnk_10 : 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
#include "Item/ItemManager.hpp"
|
||||
#include "global.h"
|
||||
|
||||
extern ItemId data_ov000_020afde8[];
|
||||
|
||||
ARM void TreasureManager::func_ov000_020a9b10() {}
|
||||
ARM void TreasureManager::func_ov000_020a9b2c() {}
|
||||
ARM void TreasureManager::func_ov000_020a9b3c() {}
|
||||
ARM void TreasureManager::func_ov000_020a9b4c() {}
|
||||
|
||||
ARM bool TreasureManager::func_ov000_020a9c4c(TreasureType type) {
|
||||
return this->mUnk_3c[type] >= 0;
|
||||
}
|
||||
|
||||
// hasAnyTreasure
|
||||
ARM bool TreasureManager::func_ov000_020a9c64() {
|
||||
for (s32 i = 0; i < ARRAY_LEN(this->mUnk_3c); i++) {
|
||||
if (this->mUnk_3c[i] >= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// getTreasureAmount
|
||||
ARM unk32 TreasureManager::func_ov000_020a9c90(TreasureType type) {
|
||||
if (this->mUnk_3c[type] >= 0) {
|
||||
return this->mUnk_3c[type];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// isTreasureAmountMaxed
|
||||
ARM bool TreasureManager::func_ov000_020a9ca4(TreasureType type) {
|
||||
return this->func_ov000_020a9c90(type) >= MAX_TREASURE;
|
||||
}
|
||||
|
||||
// gainTreasure
|
||||
ARM void TreasureManager::func_ov000_020a9cbc(TreasureType type, s32 amount) {
|
||||
s32 newAmount;
|
||||
|
||||
if (this->mUnk_3c[type] < 0) {
|
||||
this->mUnk_3c[type] = 0;
|
||||
}
|
||||
|
||||
newAmount = this->mUnk_3c[type] + amount;
|
||||
|
||||
if (newAmount > MAX_TREASURE) {
|
||||
newAmount = MAX_TREASURE;
|
||||
} else if (newAmount < 0) {
|
||||
newAmount = 0;
|
||||
}
|
||||
|
||||
this->mUnk_3c[type] = newAmount;
|
||||
}
|
||||
|
||||
ARM unk32 TreasureManager::func_ov000_020a9d78(unk32 param1) {}
|
||||
ARM unk32 TreasureManager::func_ov000_020a9e14(unk32 param1) {}
|
||||
ARM unk32 TreasureManager::func_ov000_020a9eb0(unk32 param1) {}
|
||||
ARM unk32 TreasureManager::func_ov000_020a9f4c(unk32 param1) {}
|
||||
|
||||
ARM ItemId TreasureManager::func_ov000_020aa02c(ItemId itemId) {
|
||||
switch (itemId) {
|
||||
case ItemId_RandCommonTreasure:
|
||||
return data_ov000_020afde8[TreasureManager::func_ov000_020a9d78(-1)];
|
||||
case ItemId_RandUncommonTreasure:
|
||||
return data_ov000_020afde8[TreasureManager::func_ov000_020a9e14(-1)];
|
||||
case ItemId_RandRareTreasure:
|
||||
return data_ov000_020afde8[TreasureManager::func_ov000_020a9eb0(-1)];
|
||||
case ItemId_RandLegendaryTreasure:
|
||||
return data_ov000_020afde8[TreasureManager::func_ov000_020a9f4c(-1)];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return itemId;
|
||||
}
|
||||
|
||||
// gainTreasureFromItem
|
||||
ARM void TreasureManager::func_ov000_020aa0ac(ItemId itemId) {
|
||||
switch (itemId) {
|
||||
case ItemId_DemonFossil:
|
||||
this->func_ov000_020a9cbc(TreasureType_DemonFossil, 1);
|
||||
break;
|
||||
case ItemId_StalfosSkull:
|
||||
this->func_ov000_020a9cbc(TreasureType_StalfosSkull, 1);
|
||||
break;
|
||||
case ItemId_StarFragment:
|
||||
this->func_ov000_020a9cbc(TreasureType_StarFragment, 1);
|
||||
break;
|
||||
case ItemId_BeeLarvae:
|
||||
this->func_ov000_020a9cbc(TreasureType_BeeLarvae, 1);
|
||||
break;
|
||||
case ItemId_WoodHeart:
|
||||
this->func_ov000_020a9cbc(TreasureType_WoodHeart, 1);
|
||||
break;
|
||||
case ItemId_DarkPearlLoop:
|
||||
this->func_ov000_020a9cbc(TreasureType_DarkPearlLoop, 1);
|
||||
break;
|
||||
case ItemId_WhitePearlLoop:
|
||||
this->func_ov000_020a9cbc(TreasureType_WhitePearlLoop, 1);
|
||||
break;
|
||||
case ItemId_RutoCrown:
|
||||
this->func_ov000_020a9cbc(TreasureType_RutoCrown, 1);
|
||||
break;
|
||||
case ItemId_DragonScale:
|
||||
this->func_ov000_020a9cbc(TreasureType_DragonScale, 1);
|
||||
break;
|
||||
case ItemId_PirateNecklace:
|
||||
this->func_ov000_020a9cbc(TreasureType_PirateNecklace, 1);
|
||||
break;
|
||||
case ItemId_PalaceDish:
|
||||
this->func_ov000_020a9cbc(TreasureType_PalaceDish, 1);
|
||||
break;
|
||||
case ItemId_GoronAmber:
|
||||
this->func_ov000_020a9cbc(TreasureType_GoronAmber, 1);
|
||||
break;
|
||||
case ItemId_MysticJade:
|
||||
this->func_ov000_020a9cbc(TreasureType_MysticJade, 1);
|
||||
break;
|
||||
case ItemId_AncientCoin:
|
||||
this->func_ov000_020a9cbc(TreasureType_AncientCoin, 1);
|
||||
break;
|
||||
case ItemId_PricelessStone:
|
||||
this->func_ov000_020a9cbc(TreasureType_PricelessStone, 1);
|
||||
break;
|
||||
case ItemId_RegalRing:
|
||||
this->func_ov000_020a9cbc(TreasureType_RegalRing, 1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TreasureManager::func_ov000_020aa200() {
|
||||
data_ov000_020b6510 = this;
|
||||
}
|
||||
|
||||
void TreasureManager::func_ov000_020aa210() {
|
||||
data_ov000_020b6510 = NULL;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
#include "Actor/ActorRupee.hpp"
|
||||
#include "System/Random.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
extern "C" unk32 func_01ffd420(unk32 *);
|
||||
extern "C" void func_01ffedac(u16 *, Vec3p *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, Vec3p *);
|
||||
extern "C" unk32 func_02017158();
|
||||
@@ -17,7 +17,6 @@ extern void func_ov031_0210b0e4(u16, unk32);
|
||||
extern "C" unk32 func_ov031_020d9834(unk32 *);
|
||||
|
||||
extern UnkStruct_ov000_020b539c_30 data_ov031_021166e8;
|
||||
extern unk32 *data_027e09b8;
|
||||
extern unk32 *data_027e0d34;
|
||||
|
||||
ARM UnkStruct_ov000_020b539c_30 *ActorRupee::func_ov031_020e8cb8() {
|
||||
@@ -90,7 +89,7 @@ ARM void ActorRupee::func_ov031_020e9068() {
|
||||
break;
|
||||
default: {
|
||||
ItemManager *pItemManager = data_027e0ce0->mUnk_2c;
|
||||
pItemManager->func_ov000_020a8768(func_02017158(), 0, 1);
|
||||
pItemManager->GiveRupees(func_02017158(), false, true);
|
||||
var_r4 = true;
|
||||
break;
|
||||
}
|
||||
@@ -265,29 +264,29 @@ ARM void ActorRupee::func_ov031_020e94d4() {
|
||||
}
|
||||
|
||||
ARM void ActorRupee::func_ov031_020e951c() {
|
||||
s32 var_r1;
|
||||
ItemId itemId;
|
||||
|
||||
if (func_01ffd420(data_027e09b8) != 0) {
|
||||
if (data_027e09b8->func_01ffd420() != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var_r1 = -1;
|
||||
itemId = ItemId_None;
|
||||
|
||||
switch (this->mUnk_6c) {
|
||||
case RupeeId_Gold:
|
||||
var_r1 = 0x11;
|
||||
itemId = ItemId_BigGoldRupee;
|
||||
break;
|
||||
case RupeeId_BigGreen:
|
||||
var_r1 = 0x0F;
|
||||
itemId = ItemId_BigGreenRupee;
|
||||
break;
|
||||
case RupeeId_BigRed:
|
||||
var_r1 = 0x10;
|
||||
itemId = ItemId_BigRedRupee;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (var_r1 != -1 && func_ov031_020d9834(data_027e0d34) == 0) {
|
||||
if (itemId != ItemId_None && func_ov031_020d9834(data_027e0d34) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,835 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "Actor/ActorId.hpp"
|
||||
#include "Player/PlayerGet.hpp"
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "Unknown/UnkStruct_020d8698.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09bc.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce4.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b51c0.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "versions.h"
|
||||
|
||||
struct UnkStruct_02186240 {
|
||||
/* 0000 */ unk8 mUnk_0000[0x3F68];
|
||||
/* 3f68 */
|
||||
};
|
||||
UnkStruct_02186240 data_ov110_02186240;
|
||||
|
||||
extern "C" void func_ov000_0205ca74(unk32);
|
||||
extern "C" void func_01ffb6e4(unk32, const void *, void *);
|
||||
extern "C" void func_01ffc5a0(UnkStruct_PlayerGet_8c *, unk32, u16, void *, unk32);
|
||||
extern "C" void func_ov000_0208f820();
|
||||
extern "C" unk32 func_ov024_020d5354(unk32 *, u16 *);
|
||||
extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, Vec3p *);
|
||||
extern unk32 *data_027e0958;
|
||||
extern "C" void func_ov024_020d6370(unk32 *, ItemId);
|
||||
extern unk32 *data_ov024_020d86b0;
|
||||
extern "C" unk32 func_01fff584();
|
||||
extern "C" ActorId func_01fff458(void *);
|
||||
extern "C" void func_ov000_0208ba10(char *, void *, unk32);
|
||||
extern "C" unk32 func_ov000_020a4c00(ItemId itemId);
|
||||
extern "C" void func_02015ea8(unk32, unk16 *);
|
||||
extern "C" void func_02015628(char *, char *, unk32, void *, size_t);
|
||||
extern "C" void func_02015664(char *, unk32);
|
||||
extern "C" void func_020156c8(char *, char *, unk32);
|
||||
extern "C" void func_020156f4(char *);
|
||||
extern "C" void func_02015644(char *);
|
||||
struct func_ov000_0205abcc_ret {
|
||||
unk32 mUnk_00;
|
||||
unk32 mUnk_04;
|
||||
unk8 mUnk_08;
|
||||
unk8 mUnk_09;
|
||||
unk8 mUnk_0a;
|
||||
unk8 mUnk_0b;
|
||||
unk8 mUnk_0c;
|
||||
unk8 mUnk_0d;
|
||||
unk8 mUnk_0e;
|
||||
};
|
||||
extern "C" func_ov000_0205abcc_ret *func_ov000_0205abcc(char *, char *, unk32, unk32, unk32);
|
||||
extern "C" unk32 func_ov000_02077590(unk32);
|
||||
|
||||
static const unk32 data_ov110_02185dc4[1] = {8};
|
||||
|
||||
static const UnkStruct_ov110_02185dc8 data_ov110_02185dc8[] = {
|
||||
{ItemId_NormalSword, ItemFlag_Sword}, {ItemId_NormalShield, ItemFlag_Shield},
|
||||
{ItemId_LokomoSword, ItemFlag_LokomoSword}, {ItemId_RecruitUniform, ItemFlag_RecruitUniform},
|
||||
{ItemId_ScrollBeam, ItemFlag_ScrollBeam}, {ItemId_ScrollSpinAttack, ItemFlag_ScrollSpinAttack},
|
||||
{ItemId_AncientShield, ItemFlag_AncientShield}, {ItemId_PanFlute, ItemFlag_PanFlute},
|
||||
};
|
||||
|
||||
// non-matching
|
||||
ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
|
||||
s16 itemFlag_s16;
|
||||
ItemFlag itemFlag;
|
||||
ItemFlag temp_r0_5;
|
||||
u32 temp_r2;
|
||||
u32 i;
|
||||
|
||||
switch (itemId) {
|
||||
case ItemId_NormalKey:
|
||||
this->func_ov000_020a87c8(1);
|
||||
break;
|
||||
case ItemId_GreenRupee:
|
||||
this->GiveRupees(1, true, true);
|
||||
break;
|
||||
case ItemId_BlueRupee:
|
||||
this->GiveRupees(5, true, true);
|
||||
break;
|
||||
case ItemId_RedRupee:
|
||||
this->GiveRupees(20, true, true);
|
||||
break;
|
||||
case ItemId_BigGreenRupee:
|
||||
this->GiveRupees(100, true, true);
|
||||
break;
|
||||
case ItemId_BigRedRupee:
|
||||
this->GiveRupees(200, true, true);
|
||||
break;
|
||||
case ItemId_BigGoldRupee:
|
||||
this->GiveRupees(300, true, true);
|
||||
break;
|
||||
case ItemId_HeartContainer:
|
||||
data_027e0ce0->func_ov000_0208a318(4, 1, 1);
|
||||
break;
|
||||
case ItemId_QuiverMedium:
|
||||
case ItemId_QuiverLarge:
|
||||
if (this->mQuiverCapacity < UpgradeCapacity_Tier3) {
|
||||
this->mQuiverCapacity++;
|
||||
}
|
||||
|
||||
this->mArrowAmount = this->func_ov000_020a8728();
|
||||
break;
|
||||
case ItemId_BombBagMedium:
|
||||
case ItemId_BombBagLarge:
|
||||
if (this->mBombBagCapacity < UpgradeCapacity_Tier3) {
|
||||
this->mBombBagCapacity++;
|
||||
}
|
||||
|
||||
this->mBombAmount = this->func_ov000_020a8748();
|
||||
break;
|
||||
case ItemId_RedPotion:
|
||||
this->func_ov000_020a888c(PotionType_Red);
|
||||
break;
|
||||
case ItemId_PurplePotion:
|
||||
this->func_ov000_020a888c(PotionType_Purple);
|
||||
break;
|
||||
case ItemId_YellowPotion:
|
||||
this->func_ov000_020a888c(PotionType_Yellow);
|
||||
break;
|
||||
case ItemId_ArrowsRefill:
|
||||
this->func_ov000_020a87ec(10);
|
||||
break;
|
||||
case ItemId_BombsRefill:
|
||||
this->func_ov000_020a8820(10);
|
||||
break;
|
||||
case ItemId_TearLight:
|
||||
if (this->mTearsAmount >= 3) {
|
||||
this->mTearsAmount = 3;
|
||||
} else {
|
||||
this->mTearsAmount++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
itemFlag = ItemManager::func_ov000_020a8984(itemId);
|
||||
|
||||
if (itemFlag != ItemFlag_None) {
|
||||
this->func_ov000_020a863c(itemFlag);
|
||||
|
||||
switch (itemFlag) {
|
||||
case ItemFlag_Bombs:
|
||||
this->mBombBagCapacity = UpgradeCapacity_Tier1;
|
||||
this->mBombAmount = gBombBagCapacities[UpgradeCapacity_Tier1];
|
||||
break;
|
||||
case ItemFlag_Bow:
|
||||
this->mQuiverCapacity = UpgradeCapacity_Tier1;
|
||||
this->mArrowAmount = gQuiverCapacities[UpgradeCapacity_Tier1];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->mEquippedItem == ItemFlag_None) {
|
||||
this->mEquippedItem = itemFlag;
|
||||
data_ov024_020d8698->func_ov024_020cd458(itemFlag, 0);
|
||||
}
|
||||
} else {
|
||||
itemFlag_s16 = ItemFlag_None;
|
||||
|
||||
for (i = 0; i < ARRAY_LEN(data_ov110_02185dc8); i++) {
|
||||
if (itemId == data_ov110_02185dc8[i].mItemId) {
|
||||
itemFlag_s16 = data_ov110_02185dc8[i].mItemFlag;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (itemFlag_s16 != ItemFlag_None) {
|
||||
this->func_ov000_020a863c(itemFlag_s16);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
temp_r0_5 = ItemManager::func_ov110_02185db4(itemId);
|
||||
|
||||
if (temp_r0_5 != 0) {
|
||||
temp_r0_5 &= 0xFFFF;
|
||||
SET_FLAG(data_027e09b8->mUnk_14, temp_r0_5);
|
||||
}
|
||||
|
||||
data_027e0ce0->mUnk_34->func_ov110_02185d3c(itemId);
|
||||
data_ov000_020b6510->func_ov000_020aa0ac(itemId);
|
||||
func_ov024_020d6370(data_ov024_020d86b0, itemId);
|
||||
|
||||
if (!GET_FLAG(this->mUnk_08, ItemFlag_LokomoSword) && itemId == ItemId_TearLight &&
|
||||
this->mTearsAmount == MAX_TEARS_OF_LIGHT && (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static const unk32 data_ov110_02185de8[] = {
|
||||
0x30001, 0x30002, 0xB00D6, 0x8007A, 0x30003, 0x8007B, 0x8007C, 0x8007D, 0x8007E, 0x30004, 0x30005, 0x30006, 0x30007,
|
||||
0x30008, 0x30009, 0x3000A, 0x3000B, 0x3000C, 0x3000D, 0x3000E, 0x3000F, 0xD0000, 0xD0001, 0xD0002, 0xD0003, 0xF00EB,
|
||||
0x100000, 0x110000, 0x1C008E, 0x1E0048, 0x30010, 0x30011, 0x30012, 0x30013, 0x30014, 0x30015, 0x30016, 0x30017, 0xB00D7,
|
||||
0x30018, 0x30019, 0x3001A, 0x3001B, 0x3001C, 0x3001D, 0x3001E, 0x3001F, 0x30020, 0x30021, 0x30022, 0x30023, 0x30024,
|
||||
0x30025, 0x30026, 0x30027, 0x30028, 0x30029, 0x3002A, 0x3002B, 0x3002C, 0x3002D, 0x3002E, 0x3002F, 0x1400F7, 0x8007F,
|
||||
0x30030, 0x30031, 0x30032, 0x30033, 0x30034, 0x30035, 0x30036, 0x30037, 0x30038, 0x30039, 0x3003A, 0x3003B, 0x3003C,
|
||||
0x3003D, 0x3003E, 0x3003F, 0x30040, 0x30041, 0x30042, 0x30043, 0x30044, 0x30045, 0x30046, 0x30047, 0x1400F8, 0x30048,
|
||||
0x30049, 0x3004A, 0x3004B, 0x3004C, 0x3004D, 0xD0004, 0xD0005, 0x3004E, 0x3004F, 0x1400F9, 0xF00EC, 0x80080, 0x110001,
|
||||
0x1400FA, 0x100001, 0x30050, 0x30051, 0x30052, 0x30053, 0x30054, 0x30055, 0x30056, 0x30057, 0x30058, 0x030059, 0x3005A,
|
||||
};
|
||||
|
||||
static const unk32 data_ov110_02185fbc[] = {
|
||||
0x000, 0x000, 0x003, 0x000, 0x000, 0x1A3, 0x000, 0x27B, 0x0CB, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
|
||||
0x000, 0x076, 0x077, 0x078, 0x00F, 0x010, 0x011, 0x012, 0x008, 0x009, 0x00A, 0x00B, 0x00C, 0x00D, 0x002, 0x01F, 0x020,
|
||||
0x021, 0x079, 0x07A, 0x07B, 0x000, 0x000, 0x000, 0x000, 0x000, 0x068, 0x069, 0x06A, 0x06B, 0x06C, 0x06D, 0x06E, 0x06F,
|
||||
0x070, 0x071, 0x072, 0x073, 0x074, 0x075, 0x0A6, 0x0A7, 0x0A8, 0x0A9, 0x0AA, 0x000, 0x000, 0x0B0, 0x0B1,
|
||||
};
|
||||
|
||||
static const unk32 data_ov110_021860c4[] = {
|
||||
0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
|
||||
0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x12D, 0x000, 0x000,
|
||||
0x03C, 0x000, 0x000, 0x000, 0x000, 0x000, 0x0D6, 0x194, 0x18E, 0x18F, 0x190, 0x191, 0x192, 0x193, 0x046, 0x000, 0x000,
|
||||
};
|
||||
|
||||
// non-matching
|
||||
ARM void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2, unk32 param3) {
|
||||
PlayerGet *unk_14 = (PlayerGet *) this->mUnk_14;
|
||||
|
||||
func_01ffc5a0(&unk_14->mUnk_8c, unk_14->mUnk_6c, unk_14->mUnk_70, &this->mUnk_04, param3);
|
||||
}
|
||||
|
||||
ARM PlayerGet::PlayerGet() :
|
||||
mUnk_54(0, 0, -1, ItemId_None),
|
||||
mUnk_64(mUnk_44, -1),
|
||||
mUnk_6c(0x1000),
|
||||
mUnk_70(0),
|
||||
mUnk_72(0),
|
||||
mUnk_73(0),
|
||||
mUnk_74(this),
|
||||
mUnk_8c(0) {}
|
||||
|
||||
ARM PlayerGet::~PlayerGet() {
|
||||
func_ov000_0205ca74(this->mUnk_54.mUnk_08);
|
||||
|
||||
UnkStruct_027e0cec *pData_027e0cec = data_027e0cec;
|
||||
if (pData_027e0cec != NULL) {
|
||||
UnkStruct_PlayerGet_ec *pUnk_ec = &this->mUnk_ec[0];
|
||||
|
||||
while (pUnk_ec != (UnkStruct_PlayerGet_ec *) &this->mUnk_fc) {
|
||||
pData_027e0cec->func_ov000_020a0110(pUnk_ec);
|
||||
pUnk_ec++;
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_ov000_0208f820_28_98 *pUnk_28_98 = this->mUnk_28->mUnk_98;
|
||||
if (pUnk_28_98 != 0) {
|
||||
pUnk_28_98->mUnk_40 &= ~0x10;
|
||||
|
||||
if (pUnk_28_98->mUnk_40 == 0) {
|
||||
// real?
|
||||
pUnk_28_98->mUnk_38.~UnkStruct_PlayerGet_64();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if IS_JP
|
||||
ARM bool PlayerGet::func_ov110_02186b8c() {
|
||||
switch (this->mUnk_54.mItemId) {
|
||||
case ItemId_NormalShield:
|
||||
if (this->mUnk_28->pItemManager->mUnk_12 & 2) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case ItemId_AncientShield:
|
||||
if (!(this->mUnk_28->pItemManager->mUnk_12 & 2)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) {
|
||||
ItemManager *pItemManager;
|
||||
ItemId itemId;
|
||||
UnkStruct_func_01fff3b4_ret *iVar10;
|
||||
UnkStruct_ov000_0208f820_38 *pUnk_38;
|
||||
UnkStruct_ov000_0208f820_3c *pUnk_3c;
|
||||
char auStack_108[12];
|
||||
Vec3p VStack_fc;
|
||||
unk32 uStack_f0[4];
|
||||
unk32 auStack_30[5];
|
||||
|
||||
switch (param1->mUnk_04) {
|
||||
case 0x39:
|
||||
*(u32 *) this->mUnk_54.mUnk_00 = param1->mUnk_10;
|
||||
*(u32 *) this->mUnk_54.mUnk_04 = param1->mUnk_14;
|
||||
this->mUnk_54.mUnk_08 = param1->mUnk_18;
|
||||
pItemManager = this->mUnk_28->pItemManager;
|
||||
itemId = param1->mUnk_1c;
|
||||
|
||||
switch (itemId) {
|
||||
case ItemId_BombBag:
|
||||
case ItemId_BombBagMedium:
|
||||
case ItemId_BombBagLarge:
|
||||
if (GET_FLAG(pItemManager->mUnk_08, ItemFlag_Bombs) == 0) {
|
||||
itemId = ItemId_BombBag;
|
||||
} else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier1) {
|
||||
itemId = ItemId_BombBagMedium;
|
||||
} else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier2) {
|
||||
itemId = ItemId_BombBagLarge;
|
||||
}
|
||||
break;
|
||||
case ItemId_NormalBow:
|
||||
case ItemId_QuiverMedium:
|
||||
case ItemId_QuiverLarge:
|
||||
if (GET_FLAG(pItemManager->mUnk_08, ItemFlag_Bow) == 0) {
|
||||
itemId = ItemId_NormalBow;
|
||||
} else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier1) {
|
||||
itemId = ItemId_QuiverMedium;
|
||||
} else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier2) {
|
||||
itemId = ItemId_QuiverLarge;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
itemId = data_ov000_020b6510->func_ov000_020aa02c(itemId);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_54.mItemId = itemId;
|
||||
this->mUnk_70 = 0;
|
||||
this->mUnk_2c->mUnk_58 = 0;
|
||||
func_ov000_0208ba10(auStack_108, &this->mUnk_24->mUnk_25, 0);
|
||||
this->mUnk_40->mUnk_00 = 0x8000;
|
||||
|
||||
pUnk_38 = this->mUnk_38;
|
||||
pUnk_38->mUnk_00 = 0;
|
||||
pUnk_38->mUnk_08 = 0;
|
||||
|
||||
pUnk_3c = this->mUnk_3c;
|
||||
pUnk_3c->mUnk_00 = 0;
|
||||
pUnk_3c->mUnk_04 = 0;
|
||||
pUnk_3c->mUnk_08 = 0;
|
||||
|
||||
if (((*(u16 *) this->mUnk_54.mUnk_00 << 0x10) >> 0x1E) != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
iVar10 = data_027e0ce4->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00);
|
||||
|
||||
if (iVar10 == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (func_01fff458(iVar10) == ActorId_NormalShield) {
|
||||
iVar10->mUnk_58 &= ~2;
|
||||
iVar10->mUnk_4a = 0;
|
||||
}
|
||||
break;
|
||||
case 0x3A:
|
||||
if (this->mUnk_54.mItemId != ItemId_Nothing) {
|
||||
if (func_ov000_020a4c00(this->mUnk_54.mItemId) == 0) {
|
||||
this->mUnk_8c.vfunc_08(0);
|
||||
} else {
|
||||
unk32 niVar10;
|
||||
|
||||
if (this->mUnk_54.mItemId == ItemId_LokomoSword) {
|
||||
niVar10 = func_ov000_020a4c00(ItemId_NormalSword);
|
||||
}
|
||||
|
||||
unk16 auStack_110[2];
|
||||
unk16 acStack_a6[2];
|
||||
unk16 auStack_48[2];
|
||||
unk16 auStack_64[2];
|
||||
unk16 acStack_e0[2];
|
||||
size_t len;
|
||||
|
||||
auStack_110[0] = 0;
|
||||
auStack_110[1] = 0;
|
||||
func_02015ea8(niVar10, auStack_110);
|
||||
acStack_a6[1] = 0;
|
||||
strncpy((char *) acStack_e0, "Player/get/", 0x39);
|
||||
len = strlen((char *) acStack_e0);
|
||||
strncpy((char *) acStack_e0 + len, (char *) auStack_110, 0x39 - len);
|
||||
auStack_64[1] = 0;
|
||||
strncpy((char *) acStack_a6, (char *) acStack_e0, 0x3f);
|
||||
len = strlen((char *) acStack_a6);
|
||||
// strncpy((char *) acStack_a6 + len, ".nsbmd", 0x3f - len);
|
||||
func_02015628((char *) auStack_64, (char *) acStack_a6, 0, &data_ov110_02186240,
|
||||
sizeof(UnkStruct_02186240));
|
||||
func_02015664((char *) auStack_64, 0x10);
|
||||
strncpy((char *) acStack_a6, (char *) acStack_e0, 0x3f);
|
||||
len = strlen((char *) acStack_a6);
|
||||
// strncpy((char *) acStack_a6 + len, ".nsbtx", 0x3f - len);
|
||||
func_020156c8((char *) auStack_48, (char *) acStack_a6, 0);
|
||||
|
||||
void *var_r1_3;
|
||||
unk32 var_r1_2;
|
||||
func_ov000_0205abcc_ret *ret =
|
||||
func_ov000_0205abcc((char *) auStack_64, (char *) auStack_48, 0, 1, this->mUnk_30->mUnk_24);
|
||||
if (ret != NULL) {
|
||||
if (ret->mUnk_08 != 0 && ret->mUnk_09 > 0) {
|
||||
var_r1_2 = ret->mUnk_08 + ret->mUnk_0e + 4;
|
||||
} else {
|
||||
var_r1_2 = 0;
|
||||
}
|
||||
|
||||
if (var_r1_2 != 0) {
|
||||
var_r1_3 = ret + var_r1_2;
|
||||
} else {
|
||||
var_r1_3 = NULL;
|
||||
}
|
||||
} else {
|
||||
var_r1_3 = NULL;
|
||||
}
|
||||
|
||||
this->mUnk_8c.vfunc_08((unk32) var_r1_3);
|
||||
func_020156f4((char *) auStack_48);
|
||||
func_02015644((char *) auStack_64);
|
||||
}
|
||||
|
||||
switch (this->mUnk_54.mItemId) {
|
||||
case ItemId_BigGreenRupee:
|
||||
case ItemId_BigRedRupee:
|
||||
case ItemId_BigGoldRupee:
|
||||
this->mUnk_6c = 0x1666;
|
||||
break;
|
||||
default:
|
||||
this->mUnk_6c = 0x1000;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_027e09bc_0c *uVar11 = data_027e09bc->mUnk_0c;
|
||||
unk32 uVar6 = func_ov000_02077590(4);
|
||||
uVar11->func_ov000_0207834c(this->mUnk_34, uVar6, 0);
|
||||
|
||||
UnkStruct_PlayerGet_48 *pUnk_48 = this->mUnk_48;
|
||||
pUnk_48->mUnk_42 = 0x1000;
|
||||
pUnk_48->mUnk_47 = 0;
|
||||
pUnk_48->mUnk_5e = 0x1000;
|
||||
pUnk_48->mUnk_63 = 0;
|
||||
|
||||
if (this->mUnk_44 != NULL) {
|
||||
this->mUnk_64.func_ov000_0208a100();
|
||||
}
|
||||
|
||||
// pUnk24 = this->mUnk_24;
|
||||
bool bVar8;
|
||||
|
||||
// ...
|
||||
|
||||
UnkStruct_ov000_0208f820_28_98 *pUnk28_98 = this->mUnk_28->mUnk_98;
|
||||
if (!bVar8 && pUnk28_98 != NULL) {
|
||||
pUnk28_98->mUnk_40 |= 0x10;
|
||||
this->mUnk_64.func_ov000_0208a100();
|
||||
}
|
||||
|
||||
this->mUnk_73 = 0;
|
||||
|
||||
switch (this->mUnk_54.mItemId) {
|
||||
case ItemId_25:
|
||||
case ItemId_26:
|
||||
case ItemId_27:
|
||||
case ItemId_28:
|
||||
case ItemId_29:
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
data_ov000_020b51b8.func_ov000_0206c96c(data_027e0cd8->mUnk_0c->func_ov000_02080a44());
|
||||
this->mUnk_73 = 1;
|
||||
break;
|
||||
case 0x3B:
|
||||
this->mUnk_72 = 0;
|
||||
|
||||
if (this->mUnk_54.mItemId != ItemId_Nothing) {
|
||||
Vec3p_Add(this->mUnk_34, &data_ov110_021861ec.mUnk_00, &VStack_fc);
|
||||
uStack_f0[1] = 0x871;
|
||||
uStack_f0[2] = 0x872;
|
||||
uStack_f0[0] = 0x870;
|
||||
uStack_f0[3] = 0x873;
|
||||
data_027e0cec->func_ov000_020a0000(this->mUnk_ec, this->mUnk_fc, uStack_f0, &VStack_fc, 1);
|
||||
}
|
||||
|
||||
auStack_30[0] = 0;
|
||||
auStack_30[3] = 0;
|
||||
auStack_30[4] = 0;
|
||||
auStack_30[1] = 0;
|
||||
auStack_30[2] = -1;
|
||||
data_ov000_020b504c.func_ov000_02067cf8(ItemManager::func_ov110_02185da4(this->mUnk_54.mItemId), 0, auStack_30);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const UnkStruct_ov110_021861ec data_ov110_021861ec = UnkStruct_ov110_021861ec(0x5E3, 0x152D, 0xCD);
|
||||
|
||||
ARM void PlayerGet::vfunc_10(unk32 param1) {
|
||||
unk32 var_r1;
|
||||
UnkStruct_func_01fff520_ret **temp_r0_6;
|
||||
s32 temp_r5;
|
||||
bool temp_r6;
|
||||
s32 var_r0;
|
||||
s32 var_r0_2;
|
||||
bool var_r1_2;
|
||||
u32 var_r5_2;
|
||||
UnkStruct_func_01fff3b4_ret *temp_r0_3;
|
||||
|
||||
switch (param1) {
|
||||
case 0x39:
|
||||
if (data_027e09b8->func_ov000_020732ec(this->mUnk_54.mUnk_08) == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->mUnk_30->mUnk_70 < 0xF) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_30->func_ov000_020921e4(0x3A);
|
||||
break;
|
||||
case 0x3A:
|
||||
if (this->mUnk_50->func_01ff8fa8() != 0) {
|
||||
this->mUnk_30->func_ov000_020921e4(0x3B);
|
||||
break;
|
||||
}
|
||||
if (this->mUnk_50->func_02015080(0x1C000) == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
var_r1 = 0x64;
|
||||
switch (this->mUnk_54.mItemId) {
|
||||
case ItemId_Nothing:
|
||||
case ItemId_NormalShield:
|
||||
case ItemId_NormalSword:
|
||||
case ItemId_Whirlwind:
|
||||
break;
|
||||
case ItemId_NormalKey:
|
||||
case ItemId_GreenRupee:
|
||||
case ItemId_BlueRupee:
|
||||
case ItemId_RedRupee:
|
||||
case ItemId_DemonFossil:
|
||||
case ItemId_StalfosSkull:
|
||||
case ItemId_StarFragment:
|
||||
case ItemId_BeeLarvae:
|
||||
case ItemId_WoodHeart:
|
||||
var_r1 = 0x65;
|
||||
break;
|
||||
case ItemId_HeartContainer:
|
||||
var_r1 = 0x67;
|
||||
break;
|
||||
case ItemId_ForestGlyph:
|
||||
case ItemId_SnowGlyph:
|
||||
case ItemId_OceanGlyph:
|
||||
case ItemId_FireGlyph:
|
||||
var_r1 = 0x68;
|
||||
break;
|
||||
case ItemId_25:
|
||||
case ItemId_26:
|
||||
case ItemId_27:
|
||||
case ItemId_28:
|
||||
case ItemId_29:
|
||||
case ItemId_PanFluteSong_101:
|
||||
case ItemId_PanFluteSong_102:
|
||||
case ItemId_PanFluteSong_103:
|
||||
case ItemId_PanFluteSong_104:
|
||||
case ItemId_PanFluteSong_105:
|
||||
var_r1 = 0x66;
|
||||
break;
|
||||
case ItemId_ForceGem_18:
|
||||
case ItemId_ForceGem_19:
|
||||
case ItemId_ForceGem_20:
|
||||
case ItemId_ForceGem_35:
|
||||
case ItemId_ForceGem_36:
|
||||
case ItemId_ForceGem_37:
|
||||
case ItemId_ForceGem_43:
|
||||
case ItemId_ForceGem_44:
|
||||
case ItemId_ForceGem_45:
|
||||
case ItemId_ForceGem_46:
|
||||
case ItemId_ForceGem_47:
|
||||
case ItemId_ForceGem_48:
|
||||
case ItemId_ForceGem_49:
|
||||
case ItemId_ForceGem_50:
|
||||
case ItemId_ForceGem_51:
|
||||
case ItemId_ForceGem_52:
|
||||
case ItemId_ForceGem_53:
|
||||
case ItemId_ForceGem_54:
|
||||
case ItemId_ForceGem_55:
|
||||
case ItemId_ForceGem_56:
|
||||
case ItemId_ForceGem_57:
|
||||
case ItemId_ForceGem_58:
|
||||
case ItemId_ForceGem_59:
|
||||
case ItemId_ForceGem_60:
|
||||
case ItemId_ForceGem_61:
|
||||
var_r1 = 0x6A;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
data_ov000_020b51b8.func_ov000_0206d274(var_r1);
|
||||
break;
|
||||
case 0x3B:
|
||||
var_r1_2 = false;
|
||||
|
||||
if (data_ov000_020b504c.func_ov000_02067bc4(0)->vfunc_08() == 0) {
|
||||
var_r1_2 = true;
|
||||
}
|
||||
|
||||
if (var_r1_2) {
|
||||
if (this->mUnk_54.mItemId == ItemId_Nothing) {
|
||||
var_r1_2 = true;
|
||||
} else {
|
||||
if (this->mUnk_30->mUnk_70 >= 0x1E) {
|
||||
var_r1_2 = true;
|
||||
} else {
|
||||
goto todo_remove_me;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
todo_remove_me:
|
||||
var_r1_2 = false;
|
||||
}
|
||||
|
||||
if (this->mUnk_72 == 0 && var_r1_2) {
|
||||
temp_r6 = this->mUnk_28->pItemManager->func_ov110_02184a40(this->mUnk_54.mItemId);
|
||||
|
||||
switch (this->mUnk_54.mItemId) {
|
||||
case ItemId_NormalShield:
|
||||
case ItemId_AncientShield:
|
||||
this->mUnk_30->func_ov000_020936ec();
|
||||
|
||||
if (((*(u16 *) this->mUnk_54.mUnk_00 << 0x10) >> 0x1E) == 1) {
|
||||
temp_r0_3 = data_027e0ce4->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00);
|
||||
if ((temp_r0_3 != NULL) && (func_01fff458(temp_r0_3) == ActorId_NormalShield)) {
|
||||
if (this->func_ov110_02186b8c()) {
|
||||
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
|
||||
}
|
||||
|
||||
temp_r0_3->func_ov062_02158ce8();
|
||||
}
|
||||
} else {
|
||||
if (this->mUnk_54.mItemId == ItemId_AncientShield) {
|
||||
if (this->func_ov110_02186b8c()) {
|
||||
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
|
||||
}
|
||||
} else if (this->mUnk_54.mItemId == ItemId_NormalShield) {
|
||||
if (this->func_ov110_02186b8c()) {
|
||||
this->mUnk_28->pItemManager->mUnk_12 ^= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->mUnk_30->func_ov000_02093a04();
|
||||
break;
|
||||
case ItemId_NormalSword:
|
||||
case ItemId_LokomoSword:
|
||||
this->mUnk_30->func_ov000_020936ec();
|
||||
this->mUnk_30->mUnk_10->func_ov031_020e076c();
|
||||
break;
|
||||
case ItemId_RecruitUniform2:
|
||||
case ItemId_EngineerUniform:
|
||||
if (data_027e09a4->mUnk_00 == 0x2F) {
|
||||
this->mUnk_28->func_ov058_02152a24();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (*(u16 *) this->mUnk_54.mUnk_00 == 0x1000) {
|
||||
UnkStruct_ov000_0208f820_04 structure;
|
||||
structure.mUnk_00[0] = this->mUnk_54.mUnk_00[0];
|
||||
structure.mUnk_00[1] = this->mUnk_54.mUnk_00[1];
|
||||
// structure.mUnk_08 = this->mUnk_54.mUnk_08;
|
||||
// structure.mItemId = this->mUnk_54.mItemId;
|
||||
|
||||
if (data_027e0ce8->func_01fff498(structure) != 0) {
|
||||
var_r5_2 = '\0';
|
||||
|
||||
switch (func_01fff584()) {
|
||||
case 'TRLN':
|
||||
var_r5_2 = 'TREN';
|
||||
break;
|
||||
case 'TREN':
|
||||
var_r5_2 = 'TRLN';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (var_r5_2 != 0) {
|
||||
// data_ov000_020b34c4.mUnk_04 = var_r5_2;
|
||||
temp_r0_6 = data_027e0ce8->func_01fff520(&data_ov000_020b34c4, data_027e0ce8->mUnk_00);
|
||||
if (temp_r0_6 == data_027e0ce8->mUnk_08) {
|
||||
(*temp_r0_6)->func_ov031_02103878();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->mUnk_54.mItemId == ItemId_ForestGlyph) {
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(0x29, 0);
|
||||
} else if (this->mUnk_54.mItemId == ItemId_FireGlyph) {
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(0x14, 0);
|
||||
}
|
||||
|
||||
if (this->mUnk_72 != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (!temp_r6) {
|
||||
data_027e09bc->mUnk_0c->func_ov000_02078230(0);
|
||||
}
|
||||
|
||||
if (data_027e09b8->func_ov000_020732fc(this->mUnk_54.mUnk_08) != 0) {
|
||||
this->mUnk_54.mUnk_08 = -1;
|
||||
}
|
||||
|
||||
this->mUnk_40->mUnk_00 = 0;
|
||||
|
||||
if (temp_r6) {
|
||||
this->mUnk_30->func_ov000_020921e4(0x49);
|
||||
break;
|
||||
}
|
||||
|
||||
if ((((u32) (*(u16 *) this->mUnk_54.mUnk_04 << 0x10) >> 0x1E) == 1) &&
|
||||
(data_027e09b8->func_ov000_020732dc(2) != 0)) {
|
||||
*(u32 *) this->mUnk_04.mUnk_00 = *(u32 *) this->mUnk_54.mUnk_04;
|
||||
this->mUnk_30->func_ov000_020921e4(0x57);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_30->func_ov000_020921e4(0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_70 += 0x10E;
|
||||
|
||||
if (this->mUnk_73 == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
temp_r5 = data_027e0cd8->mUnk_0c->func_ov000_02080a44();
|
||||
|
||||
if (data_ov000_020b51b8.mUnk_10 != 0) {
|
||||
var_r0 = 1;
|
||||
} else {
|
||||
var_r0 = 0;
|
||||
}
|
||||
|
||||
if (var_r0 != 0) {
|
||||
var_r0_2 = 1;
|
||||
} else {
|
||||
var_r0_2 = 0;
|
||||
}
|
||||
|
||||
if (var_r0_2 != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (temp_r5 == data_ov000_020b51c0.func_02002f04()) {
|
||||
break;
|
||||
}
|
||||
|
||||
data_ov000_020b51b8.func_ov000_0206c9a8(temp_r5, 0x3C, 0x7F, 0);
|
||||
this->mUnk_73 = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) {
|
||||
Vec3p auStack_18;
|
||||
|
||||
switch (param2) {
|
||||
case 0x39:
|
||||
case 0x3A:
|
||||
break;
|
||||
case 0x3B:
|
||||
if (param3 != 0 && this->mUnk_54.mItemId != ItemId_Nothing && this->mUnk_90 != 0) {
|
||||
Vec3p_Add(this->mUnk_34, (Vec3p *) &data_ov110_021861ec.mUnk_00, &auStack_18);
|
||||
func_ov000_02058fc4(data_027e0958, &this->mUnk_74, &auStack_18);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM UnkStruct_PlayerGet_ec::UnkStruct_PlayerGet_ec() {
|
||||
this->mUnk_00 = 0;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
THUMB void UnkStruct_027e0ce0_34::func_ov110_02185d3c(ItemId itemId) {
|
||||
unk32 uStack_14;
|
||||
u16 auStack_18[2];
|
||||
|
||||
switch (itemId) {
|
||||
case ItemId_31:
|
||||
this->func_ov024_020d3d98(0, 0);
|
||||
this->mUnk_2c = 1;
|
||||
this->mUnk_00 = 0;
|
||||
this->mUnk_10 = 0;
|
||||
break;
|
||||
case ItemId_33:
|
||||
this->func_ov024_020d3d98(2, 0);
|
||||
this->mUnk_2c = 2;
|
||||
this->mUnk_04 = 2;
|
||||
this->mUnk_14 = 0;
|
||||
break;
|
||||
default:
|
||||
uStack_14 = -1;
|
||||
auStack_18[0] = 0;
|
||||
|
||||
if (func_ov024_020d5354(&uStack_14, auStack_18) != 0) {
|
||||
this->func_ov024_020d3ee8(uStack_14, auStack_18[0], 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM unk32 ItemManager::func_ov110_02185da4(unk32 param1) {
|
||||
return data_ov110_02185de8[param1];
|
||||
}
|
||||
|
||||
ARM ItemFlag ItemManager::func_ov110_02185db4(ItemId itemId) {
|
||||
return data_ov110_02185fbc[itemId];
|
||||
}
|
||||
Reference in New Issue
Block a user