mirror of
https://github.com/zeldaret/ss
synced 2026-09-12 20:26:28 -04:00
d_a_item -> Layout and Enum (#92)
* mostly done * Update d_t_tumble_weed.cpp * remove cM::calcTimer * just regswap on adjustSpeed * checkpoint * file setup * fix incorrect symbol * some tidbits i guess * fixup merge * fix merge 2.0 * Item Renames from Esme * fix d_t_tumble_weed * fixup merge
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include "d/a/obj/d_a_obj_toD3_stone_figure.h"
|
||||
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/event.h"
|
||||
@@ -165,5 +165,5 @@ void dAcOtoD3StoneFigure_c::doInteraction(s32 arg) {
|
||||
}
|
||||
|
||||
bool dAcOtoD3StoneFigure_c::hasStoneOfTrials() const {
|
||||
return dAcItem_c::checkFlag(0xB4);
|
||||
return dAcItem_c::checkFlag(ITEM_STONE_OF_TRIALS);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "d/a/obj/d_a_obj_tower_hand_D101.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
|
||||
@@ -2,23 +2,20 @@
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_itembase.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_s_gnd_chk.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_pla.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "egg/math/eggMath.h"
|
||||
#include "egg/math/eggQuat.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_quat.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
#include "rvl/MTX/mtx.h"
|
||||
#include "rvl/MTX/vec.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
@@ -118,7 +115,7 @@ int dAcOTumbleWeed_c::actorExecute() {
|
||||
mObjAcch.CrrPos(*dBgS::GetInstance());
|
||||
mField_0x974 += position.y - mOldPosition.y;
|
||||
if (checkCollect()) {
|
||||
dAcPy_c::LINK->bugNetCollectTreasure(0xA3 /* TODO(Item Id) ITEM_TUMBLEWEED */);
|
||||
dAcPy_c::LINK->bugNetCollectTreasure(ITEM_TUMBLE_WEED);
|
||||
FUN_8002dcd0();
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "d/t/d_t_dowsing.h"
|
||||
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/flag/itemflag_manager.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(T_DOWSING, dTgDowsing_c, fProfile::T_DOWSING, 0x0293, 0, 0);
|
||||
|
||||
@@ -56,13 +56,17 @@ bool dTgDowsing_c::checkDowsing() const {
|
||||
|
||||
switch (mDowsingOption) {
|
||||
case TRIAL_0:
|
||||
return ItemflagManager::sInstance->getFlagDirect(187) && !StoryflagManager::sInstance->getCounterOrFlag(93);
|
||||
return ItemflagManager::sInstance->getFlagDirect(ITEM_FARORES_COURAGE) &&
|
||||
!StoryflagManager::sInstance->getCounterOrFlag(93); // TOOD (Counter ID)
|
||||
case TRIAL_1:
|
||||
return ItemflagManager::sInstance->getFlagDirect(188) && !StoryflagManager::sInstance->getCounterOrFlag(97);
|
||||
return ItemflagManager::sInstance->getFlagDirect(ITEM_NAYRUS_WISDOM) &&
|
||||
!StoryflagManager::sInstance->getCounterOrFlag(97); // TOOD (Counter ID)
|
||||
case TRIAL_2:
|
||||
return ItemflagManager::sInstance->getFlagDirect(189) && !StoryflagManager::sInstance->getCounterOrFlag(98);
|
||||
return ItemflagManager::sInstance->getFlagDirect(ITEM_DINS_POWER) &&
|
||||
!StoryflagManager::sInstance->getCounterOrFlag(98); // TOOD (Counter ID)
|
||||
case TRIAL_3:
|
||||
return ItemflagManager::sInstance->getFlagDirect(193) && !StoryflagManager::sInstance->getCounterOrFlag(99);
|
||||
return ItemflagManager::sInstance->getFlagDirect(ITEM_SOTH) &&
|
||||
!StoryflagManager::sInstance->getCounterOrFlag(99); // TOOD (Counter ID)
|
||||
case PROPELLER: return DowsingTarget::hasPropellerDowsing();
|
||||
case WATER_BASIN: return DowsingTarget::hasWaterBasinDowsing();
|
||||
case CRYSTAL_BALL: return DowsingTarget::hasCrystalBallDowsing();
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
#include "c/c_lib.h"
|
||||
#include "c/c_math.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(TAG_REACTION, dTgReaction_c, fProfile::TAG_REACTION, 0x0151, 0, 0);
|
||||
|
||||
STATE_DEFINE(dTgReaction_c, Wait);
|
||||
@@ -64,7 +66,7 @@ int dTgReaction_c::create() {
|
||||
}
|
||||
|
||||
if (field_0x4DE) {
|
||||
u32 heartMedalCount = adventurePouchCountItem(/* HEART_MEDAL*/ 100);
|
||||
u32 heartMedalCount = adventurePouchCountItem(ITEM_HEART_MEDAL);
|
||||
if (heartMedalCount == 0) {
|
||||
return FAILED;
|
||||
} else if (heartMedalCount == 1 && cM::rnd() < 0.5f) {
|
||||
@@ -176,11 +178,11 @@ void dTgReaction_c::checkForBonkItem() {
|
||||
c.rotY(rotation.y);
|
||||
c2 += c;
|
||||
c2.y += field_0x4E4;
|
||||
u32 newItemParms = dAcItem_c::createItemParams(/* HEART_PIECE */ 0x5E, 1, 0, getSceneFlag(), 1, 0xFF);
|
||||
u32 newItemParms = dAcItem_c::createItemParams(ITEM_HEART_PIECE, 1, 0, getSceneFlag(), 1, 0xFF);
|
||||
if (dAcObjBase_c::create(fProfile::ITEM, roomid, newItemParms, &c2, nullptr, nullptr, 0xFFFFFFFF)) {
|
||||
field_0x4DD = 1;
|
||||
onDelete();
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AD);
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AD); // TODO (Sound ID)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -202,7 +204,7 @@ void dTgReaction_c::checkForBonkItem() {
|
||||
|
||||
pos.y += field_0x4E4;
|
||||
if (fn_578_DB0(pos, uVar3)) {
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE);
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE); // TODO (Sound ID)
|
||||
}
|
||||
SceneflagManager::sInstance->setFlag(roomid, getSceneFlag());
|
||||
onDelete();
|
||||
@@ -211,7 +213,7 @@ void dTgReaction_c::checkForBonkItem() {
|
||||
}
|
||||
|
||||
void dTgReaction_c::checkForBubble() {
|
||||
if (mCollision.ChkTgHit() && mCollision.ChkTgAtHitType(0x100000)) {
|
||||
if (mCollision.ChkTgHit() && mCollision.ChkTgAtHitType(AT_TYPE_0x100000)) {
|
||||
if (dAcPy_c::LINK != nullptr && dAcPy_c::LINK->checkFlags0x350(0x40)) {
|
||||
mVec3_c spawnPos = position;
|
||||
dAcObjBase_c::create(fProfile::OBJ_BUBBLE, roomid, 0x4, &spawnPos, nullptr, nullptr, 0xFFFFFFFF);
|
||||
@@ -236,7 +238,7 @@ void dTgReaction_c::checkForSlingBellowsItem() {
|
||||
mVec3_c spawnPos = position;
|
||||
spawnPos.y += field_0x4E4;
|
||||
if (fn_578_DB0(spawnPos, uVar3)) {
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE);
|
||||
SmallSoundManager__playSound(SOUND_EFFECT_SOUND_MGR, 0x13AE); // TODO (Sound ID)
|
||||
}
|
||||
SceneflagManager::sInstance->setFlag(roomid, getSceneFlag());
|
||||
onDelete();
|
||||
@@ -282,11 +284,11 @@ bool dTgReaction_c::spawnHearts(s32 params, const mVec3_c &pos, s32 arg, mAng an
|
||||
mAng offset = cM::rndRange(-tmp2, tmp2);
|
||||
ang.y = mAng(step) + offset;
|
||||
if (arg == 5) {
|
||||
dAcItem_c::spawnItem(/* HEART */ 0x6, roomid, pos, ang, 0xFFFFFFFF, 1);
|
||||
dAcItem_c::spawnItem(ITEM_HEART, roomid, pos, ang, 0xFFFFFFFF, 1);
|
||||
} else if (arg == 6) {
|
||||
dAcItem_c::spawnItem(/* HEART */ 0x6, roomid, pos, ang, 0xFFFFFFFF, 0);
|
||||
dAcItem_c::spawnItem(ITEM_HEART, roomid, pos, ang, 0xFFFFFFFF, 0);
|
||||
} else {
|
||||
dAcItem_c::spawnDrop(/* HEART */ 0x6, roomid, pos, ang);
|
||||
dAcItem_c::spawnDrop(ITEM_HEART, roomid, pos, ang);
|
||||
}
|
||||
step = mAng(step) - stepSize;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_Math.h"
|
||||
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(TUMBLE_WEED_TAG, dTgTumbleWeed_c, fProfile::TUMBLE_WEED_TAG, 0x0244, 0, 0);
|
||||
|
||||
STATE_DEFINE(dTgTumbleWeed_c, AreaOut);
|
||||
|
||||
@@ -0,0 +1,409 @@
|
||||
#include "d/a/d_a_item.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_itembase.h"
|
||||
#include "d/flag/dungeonflag_manager.h"
|
||||
#include "d/flag/flag_index.h"
|
||||
#include "f/f_list_mg.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
#include "toBeSorted/file_manager.h"
|
||||
|
||||
const ItemFlagStruct dAcItemBase_c::sDefaultFlagStruct = {0x28, 0x3C, 0x1E, 0xFF, 0x0000, 0x02, 0x01};
|
||||
const ItemFlagStruct dAcItemBase_c::sItemFlagStructs[167] = {
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0001, 0x00, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0002, 0x02, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0003, 0x02, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0004, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0005, 0x02, 0x00},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0006, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0007, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0008, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0009, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000a, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000b, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000d, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000e, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000f, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0010, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0011, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0013, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0014, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0015, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x001c, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x000c, 0x00, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0020, 0x00, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0021, 0x00, 0x01},
|
||||
{0x32, 0x46, 0x1e, 0xff, 0x0022, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0023, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0024, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0028, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0029, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x002a, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x002b, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x002c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x002d, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x002e, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0046, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0030, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0031, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0002, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0033, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0034, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0035, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0036, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0037, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0038, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0039, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x003c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0041, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0042, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0044, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0046, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0047, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0048, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004a, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004b, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004c, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004d, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004e, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x004f, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0051, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0054, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0055, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0056, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0057, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0058, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005a, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005b, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005c, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005d, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005e, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x005f, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0060, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0061, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0062, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0063, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0064, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0065, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0066, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0067, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0068, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0069, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x006b, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x006c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x006d, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x006e, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x006f, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0070, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0071, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0072, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0074, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0075, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0076, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0077, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0078, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0079, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007a, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007b, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007c, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007d, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007e, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x007f, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0080, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0081, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0082, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0083, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0084, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0085, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0086, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0087, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0088, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0089, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x008a, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x008c, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0x00, 0x008d, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x01, 0x008e, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x02, 0x007a, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x03, 0x0090, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x04, 0x0091, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x05, 0x0092, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x06, 0x0093, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x07, 0x0094, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x08, 0x0095, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x09, 0x0096, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x0a, 0x0097, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x0b, 0x0098, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x0099, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x009e, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x009f, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00a0, 0x00, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0x0c, 0x02f1, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x0d, 0x02f2, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x0e, 0x02f3, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x0f, 0x02f4, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x10, 0x02f5, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x11, 0x02f6, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x12, 0x02f7, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x13, 0x02f8, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x14, 0x02f9, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x15, 0x02fa, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x16, 0x02fb, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x17, 0x02fc, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x18, 0x02fd, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x19, 0x02fe, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x1a, 0x02ff, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0x1b, 0x0300, 0x00, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00b1, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00b2, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00b3, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00b4, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00ba, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00bb, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00bc, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00bd, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00be, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00bf, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c0, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c1, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c2, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c3, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c4, 0x02, 0x00},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c5, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c6, 0x02, 0x01},
|
||||
{0x28, 0x3c, 0x1e, 0xff, 0x00c7, 0x00, 0x00},
|
||||
};
|
||||
|
||||
const u32 dAcItemBase_c::sItemTypeFlags[MAX_ITEM_ID - 1] = {
|
||||
0x2000, 0x0, 0x3000, 0x3000, 0x0, 0x1000, 0x3000, 0x3000, 0x0, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x1000, 0x1000, 0x0, 0x0, 0x1000, 0x1000, 0x1000, 0x3000, 0x3000, 0x3000, 0x1000, 0x1000, 0x1000,
|
||||
0x0, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x2000, 0x0, 0x2, 0x1000, 0x1000, 0x1000, 0x3000, 0x0,
|
||||
0x3000, 0x0, 0x0, 0x0, 0x0, 0x3000, 0x0, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x3002, 0x3002,
|
||||
0x1000, 0x3000, 0x0, 0x0, 0x0, 0x3000, 0x3000, 0x3000, 0x0, 0x220, 0x220, 0x1000, 0x1000, 0x0,
|
||||
0x10, 0x1000, 0x0, 0x0, 0x2, 0x1000, 0x1000, 0x1000, 0x10, 0x20, 0x0, 0x20, 0x0, 0x0,
|
||||
0x111, 0x111, 0x11, 0x11, 0x120, 0x0, 0x1000, 0x1000, 0x1000, 0x1000, 0x0, 0x1000, 0x1000, 0x1000,
|
||||
0x0, 0x1000, 0x121, 0x2, 0x2, 0x222, 0x4, 0x1000, 0x1000, 0x0, 0x0, 0x0, 0x0, 0x1000,
|
||||
0x1000, 0x0, 0x0, 0x3, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x1120,
|
||||
0x110, 0x110, 0x101, 0x202, 0x203, 0x300, 0x400, 0x500, 0x201, 0x302, 0x303, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x21,
|
||||
0x3, 0x3, 0x3, 0x3, 0x0, 0x0, 0x0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000,
|
||||
0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0, 0x0, 0x0, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
|
||||
0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x110, 0x110,
|
||||
0x110, 0x0, 0x1000, 0x4, 0x0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0,
|
||||
0xFFFF, 0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xFFFF, 0xFFFF, 0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFFF,
|
||||
0xFFFF, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
};
|
||||
|
||||
bool dAcItemBase_c::isValidItemTypeIdx(int itemId) {
|
||||
return itemId < ARRAY_LENGTH(sItemTypeFlags);
|
||||
}
|
||||
|
||||
bool dAcItemBase_c::getItemTypeFromId(u16 itemID, u32 *pOutType) {
|
||||
bool valid = isValidItemTypeIdx(itemID);
|
||||
if (valid) {
|
||||
*pOutType = sItemTypeFlags[itemID];
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
bool dAcItemBase_c::getItemAnimType(u16 itemId, u32 *pOutType) {
|
||||
u32 type;
|
||||
bool valid = getItemTypeFromId(itemId, &type);
|
||||
if (valid) {
|
||||
*pOutType = type >> 12 & 0xF;
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
int dAcItemBase_c::getHeartContainerHeartIncrease() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int dAcItemBase_c::getCompletedHeartPieceHeartIncrease() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 dAcItemBase_c::getTearIdx(int tearNum) {
|
||||
return tearNum / 15;
|
||||
}
|
||||
bool dAcItemBase_c::getFlagIdxForTear(int tearNum, u32 *pOutFlag) {
|
||||
u8 idx = getTearIdx(tearNum);
|
||||
if (idx == 0) {
|
||||
*pOutFlag = 0xd;
|
||||
return true;
|
||||
} else if (idx == 1) {
|
||||
*pOutFlag = 0xe;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
u16 dAcItemBase_c::getTearBit(int tearNum) {
|
||||
return 1 << tearNum % 15;
|
||||
}
|
||||
|
||||
bool dAcItemBase_c::setDungeonFlagForTear(int tearNum) {
|
||||
u32 flag_idx;
|
||||
if (!getFlagIdxForTear(tearNum, &flag_idx)) {
|
||||
return false;
|
||||
}
|
||||
// idk
|
||||
int idx = DungeonflagManager::sInstance->mStageIndex;
|
||||
const u16 *pData = FileManager::sInstance->getDungeonFlagsConst() + ((idx & 0x1FFF) * 4);
|
||||
u32 counterMask = DungeonflagManager::sInstance->mpFlagIndex->getCounterOrFlag(flag_idx, pData, 8);
|
||||
u32 tearMask = getTearBit(tearNum);
|
||||
DungeonflagManager::sInstance->setToValue(flag_idx, tearMask | counterMask);
|
||||
return true;
|
||||
}
|
||||
|
||||
u16 dAcItemBase_c::getItemId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
// TODO: Incorrect location
|
||||
bool isItemThatHasStruct(u16 itemId) {
|
||||
return itemId;
|
||||
}
|
||||
|
||||
// TODO: Incorrect location
|
||||
u16 getIndex(u16 itemId) {
|
||||
return itemId;
|
||||
}
|
||||
|
||||
// TODO: Incorrect location
|
||||
// const ItemFlagStruct *getItemFlagStruct(u16 itemId) {
|
||||
// if (isItemThatHasStruct(itemId)) {
|
||||
// return &sItemFlagStructs[getIndex(itemId)];
|
||||
// } else {
|
||||
// return &sDefaultFlagStruct;
|
||||
// }
|
||||
// }
|
||||
|
||||
fLiMgBa_c dAcItem_c::sItemList;
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(ITEM, dAcItem_c, fProfile::ITEM, 0x2B, 0, 2);
|
||||
|
||||
STATE_DEFINE(dAcItem_c, Wait);
|
||||
STATE_DEFINE(dAcItem_c, Carry);
|
||||
STATE_DEFINE(dAcItem_c, GetBeetle);
|
||||
STATE_DEFINE(dAcItem_c, WaitGet);
|
||||
STATE_DEFINE(dAcItem_c, Get);
|
||||
STATE_DEFINE(dAcItem_c, WaitGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitForcedGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, GetDemo);
|
||||
STATE_DEFINE(dAcItem_c, WaitTBoxGetDemo);
|
||||
STATE_DEFINE(dAcItem_c, ResurgeWait);
|
||||
STATE_DEFINE(dAcItem_c, WaitTurnOff);
|
||||
STATE_DEFINE(dAcItem_c, WaitSacredDewGetEffect);
|
||||
|
||||
dAcItem_c::dAcItem_c()
|
||||
: mStateMgr(*this, sStateID::null), mEff_0x8F4(this), mEff_0x928(this), mEff_0x95C(this), mEff_0x990(this),
|
||||
mEff_0x9C4(this), mEff_0x9F8(this), mEff_0xA2C(this), mEff_0xA60(this), mNode(this),
|
||||
mEventRelated(*this, nullptr), mDowsingTarget(this, DowsingTarget::SLOT_NONE), mItemQueuePrev(nullptr),
|
||||
mItemQueueNext(nullptr) {
|
||||
mField_0xCD8 = 1.0f;
|
||||
mBaseScale = 1.0f;
|
||||
mCurrentScale = 1.0f;
|
||||
mField_0xCE4 = 1.0f;
|
||||
mField_0xCE8 = 1.0f;
|
||||
mField_0xCEC = 1.0f;
|
||||
|
||||
mItemFlags = 0;
|
||||
mField_0xD4C = 0;
|
||||
|
||||
mbNoDespawn = false;
|
||||
mbNoGravity = false;
|
||||
|
||||
mField_0xD51 = 0;
|
||||
mField_0xD56 = 0;
|
||||
|
||||
mbShowItemLighting = false;
|
||||
|
||||
mField_0xD62 = 0;
|
||||
mField_0xD63 = 0;
|
||||
mField_0xD65 = 0;
|
||||
mField_0xD66 = 0;
|
||||
|
||||
sItemList.append(&mNode);
|
||||
unkByteTargetFiRelated = 3;
|
||||
}
|
||||
dAcItem_c::~dAcItem_c() {
|
||||
delete mField_0xB3C;
|
||||
for (int i = 0; i < 2; i++) {
|
||||
delete mField_0xB34[i];
|
||||
}
|
||||
mDowsingTarget.doUnregister();
|
||||
}
|
||||
|
||||
void dAcItem_c::initializeState_Wait() {}
|
||||
void dAcItem_c::executeState_Wait() {}
|
||||
void dAcItem_c::finalizeState_Wait() {}
|
||||
|
||||
void dAcItem_c::initializeState_Carry() {}
|
||||
void dAcItem_c::executeState_Carry() {}
|
||||
void dAcItem_c::finalizeState_Carry() {}
|
||||
|
||||
void dAcItem_c::initializeState_GetBeetle() {}
|
||||
void dAcItem_c::executeState_GetBeetle() {}
|
||||
void dAcItem_c::finalizeState_GetBeetle() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitGet() {}
|
||||
void dAcItem_c::executeState_WaitGet() {}
|
||||
void dAcItem_c::finalizeState_WaitGet() {}
|
||||
|
||||
void dAcItem_c::initializeState_Get() {}
|
||||
void dAcItem_c::executeState_Get() {}
|
||||
void dAcItem_c::finalizeState_Get() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitGetDemo() {}
|
||||
void dAcItem_c::executeState_WaitGetDemo() {}
|
||||
void dAcItem_c::finalizeState_WaitGetDemo() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitForcedGetDemo() {}
|
||||
void dAcItem_c::executeState_WaitForcedGetDemo() {}
|
||||
void dAcItem_c::finalizeState_WaitForcedGetDemo() {}
|
||||
|
||||
void dAcItem_c::initializeState_GetDemo() {}
|
||||
void dAcItem_c::executeState_GetDemo() {}
|
||||
void dAcItem_c::finalizeState_GetDemo() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitTBoxGetDemo() {}
|
||||
void dAcItem_c::executeState_WaitTBoxGetDemo() {}
|
||||
void dAcItem_c::finalizeState_WaitTBoxGetDemo() {}
|
||||
|
||||
void dAcItem_c::initializeState_ResurgeWait() {}
|
||||
void dAcItem_c::executeState_ResurgeWait() {}
|
||||
void dAcItem_c::finalizeState_ResurgeWait() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitTurnOff() {}
|
||||
void dAcItem_c::executeState_WaitTurnOff() {}
|
||||
void dAcItem_c::finalizeState_WaitTurnOff() {}
|
||||
|
||||
void dAcItem_c::initializeState_WaitSacredDewGetEffect() {}
|
||||
void dAcItem_c::executeState_WaitSacredDewGetEffect() {}
|
||||
void dAcItem_c::finalizeState_WaitSacredDewGetEffect() {}
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "toBeSorted/counters/counter.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/flag/itemflag_manager.h"
|
||||
#include "toBeSorted/counters/counter.h"
|
||||
|
||||
static u16 getBaseCapacity();
|
||||
static u16 getExtraWalletCapacity();
|
||||
@@ -21,10 +22,10 @@ struct WalletStruct {
|
||||
/* 8016DE10 */ static u16 getBaseCapacity() {
|
||||
int i = 0;
|
||||
/* 804E91B0 */ WalletStruct wallet_definitions[4] = {
|
||||
{0x6c, 500},
|
||||
{0x6d, 1000},
|
||||
{0x6e, 5000},
|
||||
{0x6f, 9000},
|
||||
{ITEM_MEDIUM_WALLET, 500},
|
||||
{ ITEM_BIG_WALLET, 1000},
|
||||
{ ITEM_GIANT_WALLET, 5000},
|
||||
{ITEM_TYCOON_WALLET, 9000},
|
||||
};
|
||||
const WalletStruct *wallet = &wallet_definitions[3];
|
||||
for (; i < 4; i++, wallet--) {
|
||||
@@ -39,7 +40,7 @@ struct WalletStruct {
|
||||
extern "C" u16 getCounterByIndex(u16);
|
||||
|
||||
/* 8016DEC0 */ static u16 getExtraWalletCapacity() {
|
||||
return 300 * getCounterByIndex(0x27);
|
||||
return 300 * getCounterByIndex(0x27); // Maybe 0x27 corresponds to item 27 -> small wallet?
|
||||
}
|
||||
|
||||
/* 80575610 */ RupeeCounter RUPEE_COUNTER;
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "d/flag/itemflag_manager.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "toBeSorted/tlist.h"
|
||||
|
||||
|
||||
typedef TList<DowsingTarget, offsetof(DowsingTarget, mLink)> DowsingList;
|
||||
|
||||
DowsingList DOWSING_LISTS[8];
|
||||
|
||||
static const int DOWSING_TARGET_STORY_FLAGS[8] = {
|
||||
100, 105, 100, 104, 108, 110, 109, 102,
|
||||
};
|
||||
}; // TODO (Story Flag ID)
|
||||
|
||||
DowsingTarget::~DowsingTarget() {
|
||||
doUnregister();
|
||||
@@ -56,6 +55,8 @@ void DowsingTarget::getPosition(mVec3_c &position) {
|
||||
PSMTXMultVec(mtx.m, mOffset, position);
|
||||
}
|
||||
|
||||
// TODO (Story Flag IDs)
|
||||
|
||||
bool DowsingTarget::hasZeldaDowsing() {
|
||||
return StoryflagManager::sInstance->getCounterOrFlag(100);
|
||||
}
|
||||
@@ -73,14 +74,15 @@ bool DowsingTarget::hasDesertNodeDowsing() {
|
||||
}
|
||||
|
||||
inline bool checkTrial(u16 itemflag, u16 storyflag) {
|
||||
return (ItemflagManager::sInstance->getFlagDirect(itemflag) && !StoryflagManager::sInstance->getCounterOrFlag(storyflag)) ? true : false;
|
||||
return (ItemflagManager::sInstance->getFlagDirect(itemflag) &&
|
||||
!StoryflagManager::sInstance->getCounterOrFlag(storyflag)) ?
|
||||
true :
|
||||
false;
|
||||
}
|
||||
|
||||
// TODO (Story Flag IDs) (you get the point lmao)
|
||||
bool DowsingTarget::hasAnyTrialDowsing() {
|
||||
return checkTrial(187, 93) ||
|
||||
checkTrial(188, 97) ||
|
||||
checkTrial(189, 98) ||
|
||||
checkTrial(193, 99);
|
||||
return checkTrial(187, 93) || checkTrial(188, 97) || checkTrial(189, 98) || checkTrial(193, 99);
|
||||
}
|
||||
|
||||
bool DowsingTarget::hasSacredWaterDowsing() {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
// clang-format off
|
||||
#include "sized_string.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
// clang-format on
|
||||
|
||||
// This class here makes no sense and the name might
|
||||
@@ -111,14 +112,15 @@ u16 *FileManager::getStoryFlagsMut() {
|
||||
if (fileNum != 0) {
|
||||
file = &mFileB;
|
||||
}
|
||||
|
||||
file->new_file = 0;
|
||||
file->health_capacity = 0x18;
|
||||
file->unused_heart_related = 0x18;
|
||||
file->current_health = 0x18;
|
||||
file->health_capacity = 24; // 6 hearts * 4 quarters
|
||||
file->unused_heart_related = 24;
|
||||
file->current_health = 24;
|
||||
file->shield_pouch_slot = 8;
|
||||
file->equipped_b_item = 0xb;
|
||||
file->selectedDowsingSlot = 0x8;
|
||||
file->lastUsedPouchItemSlot = 0x8;
|
||||
file->equipped_b_item = 0xb; // TODO (B Wheel Id)
|
||||
file->selectedDowsingSlot = DowsingTarget::SLOT_NONE;
|
||||
file->lastUsedPouchItemSlot = 8;
|
||||
|
||||
SizedString<32> buf;
|
||||
buf = "F405";
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
#include "c/c_lib.h"
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/d_a_itembase.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
@@ -366,34 +367,11 @@ const LowHealthReplacement LOW_HEALTH_REPLACEMENTS[] = {
|
||||
},
|
||||
};
|
||||
|
||||
// TODO: Convert to enum once work on items has started
|
||||
static const u16 SPECIAL_ITEM_ARRAY[] = {
|
||||
0, // None
|
||||
6, // Heart
|
||||
6, // Heart
|
||||
2, // Green Rupee
|
||||
3, // Blue Rupee
|
||||
4, // Red Rupee
|
||||
0x2b, // Farore Tear
|
||||
0x28, // 5 Bombs
|
||||
0x29, // 10 Bombs
|
||||
7, // Single Arrow
|
||||
8, // Bundle Arrows
|
||||
0x39, // 5 Deku Seeds
|
||||
0, // None
|
||||
0, // None
|
||||
0x1c, // ET Key Piece
|
||||
0xa5, // Eldin Ore
|
||||
58, // ???
|
||||
59, // ???
|
||||
183, // ???
|
||||
184, // ???
|
||||
185, // ???
|
||||
72, // Fairy
|
||||
72, // Fairy
|
||||
1, // Small Key
|
||||
34, // Rupoor
|
||||
};
|
||||
int SPECIAL_ITEM_ARRAY[] = {ITEM_NONE, ITEM_HEART, ITEM_HEART, ITEM_GREEN_RUPEE, ITEM_BLUE_RUPEE,
|
||||
ITEM_RED_RUPEE, ITEM_FARORE_TEAR, ITEM_5_BOMBS, ITEM_10_BOMBS, ITEM_SINGLE_ARROW,
|
||||
ITEM_BUNDLE_ARROWS, ITEM_5_DEKU_SEEDS, ITEM_NONE, ITEM_NONE, ITEM_KEY_PIECE,
|
||||
ITEM_ELDIN_ORE, ITEM_UNK_58, ITEM_UNK_59, ITEM_UNK_183, ITEM_UNK_184,
|
||||
ITEM_UNK_185, ITEM_FAIRY, ITEM_FAIRY, ITEM_SMALL_KEY, ITEM_RUPOOR};
|
||||
|
||||
static const u32 sNumDropEntries = 0x36;
|
||||
static const struct {
|
||||
@@ -403,8 +381,7 @@ static const struct {
|
||||
0x36,
|
||||
sList,
|
||||
};
|
||||
|
||||
static const u16 RAND_RUPEE_ARRAY[] = {2, 3, 4};
|
||||
static const int RAND_RUPEE_ARRAY[3] = {ITEM_GREEN_RUPEE, ITEM_BLUE_RUPEE, ITEM_RED_RUPEE};
|
||||
|
||||
extern "C" int getCurrentBowType();
|
||||
extern "C" int getCurrentSlingshotType();
|
||||
@@ -435,7 +412,7 @@ int SpecialItemDropMgr::fn_800C7BB0(int specialItemId) {
|
||||
} else if (specialItemId != 0x27 && (entryIdx == 1 || entryIdx == 2) && isHeroMode()) {
|
||||
// Hearts generally don't drop on Hero Mode unless it's a special kind of heart (which?)
|
||||
weight = 0;
|
||||
} else if ((entryIdx == 7 || entryIdx == 8) && !dAcItem_c::checkFlag(/* Bomb Bag */ 92)) {
|
||||
} else if ((entryIdx == 7 || entryIdx == 8) && !dAcItem_c::checkFlag(ITEM_BOMB_BAG)) {
|
||||
// Bombs won't drop until you get the Bomb Bag
|
||||
weight = 0;
|
||||
}
|
||||
@@ -487,15 +464,14 @@ int SpecialItemDropMgr::giveSpecialDropItem(
|
||||
|
||||
bool ret = spawnSpecialDropItem(specialItemId, roomid, pos, subtype, rot);
|
||||
if (shouldTryExtraHearts(specialItemId)) {
|
||||
for (u32 i = 0; i < adventurePouchCountItem(/* HEART_MEDAL */ 100); i++) {
|
||||
for (u32 i = 0; i < adventurePouchCountItem(ITEM_HEART_MEDAL); i++) {
|
||||
bool ok = spawnSpecialDropItem(0x27, roomid, pos, subtype, rot);
|
||||
ret |= ok;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldTryExtraRupees(specialItemId)) {
|
||||
for (u32 i = 0;
|
||||
i < adventurePouchCountItem(/* RUPEE_MEDAL */ 101) + adventurePouchCountItem(/* CURSED_MEDAL */ 104);
|
||||
for (u32 i = 0; i < adventurePouchCountItem(ITEM_RUPEE_MEDAL) + adventurePouchCountItem(ITEM_CURSED_MEDAL);
|
||||
i++) {
|
||||
bool ok = spawnSpecialDropItem(0x28, roomid, pos, subtype, rot);
|
||||
ret |= ok;
|
||||
|
||||
Reference in New Issue
Block a user