mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-04 18:28:45 -04:00
Foolish items
This commit is contained in:
@@ -75,7 +75,7 @@ void daItem_c::setBaseMtx() {
|
||||
if (mpModel != NULL) {
|
||||
mpModel->setBaseScale(scale);
|
||||
|
||||
switch (m_itemNo) {
|
||||
switch (M_ITEMNO_MODEL_ITEM_ID) {
|
||||
case dItemNo_GREEN_RUPEE_e:
|
||||
case dItemNo_BLUE_RUPEE_e:
|
||||
case dItemNo_YELLOW_RUPEE_e:
|
||||
@@ -162,8 +162,8 @@ void daItem_c::CreateInit() {
|
||||
mCcCyl.SetCoHitCallback(itemGetCoCallBack);
|
||||
mCcCyl.SetTgHitCallback(itemGetTgCallBack);
|
||||
|
||||
f32 cylHeight = dItem_data::getH(m_itemNo);
|
||||
f32 cylRadius = dItem_data::getR(m_itemNo);
|
||||
f32 cylHeight = dItem_data::getH(M_ITEMNO_MODEL_ITEM_ID);
|
||||
f32 cylRadius = dItem_data::getR(M_ITEMNO_MODEL_ITEM_ID);
|
||||
|
||||
if (scale.x > 1.0f) {
|
||||
cylHeight *= scale.x;
|
||||
@@ -184,7 +184,7 @@ void daItem_c::CreateInit() {
|
||||
#if TARGET_PC
|
||||
if (randomizer_IsActive()) {
|
||||
// Adjust item scale based on item ID
|
||||
switch(m_itemNo)
|
||||
switch(M_ITEMNO_MODEL_ITEM_ID)
|
||||
{
|
||||
case dItemNo_Randomizer_KAKERA_HEART_e:
|
||||
case dItemNo_Randomizer_UTAWA_HEART_e:
|
||||
@@ -260,7 +260,7 @@ void daItem_c::CreateInit() {
|
||||
|
||||
if (m_itemNo == dItemNo_BOOMERANG_e IF_DUSK(&& !randomizer_IsActive())) {
|
||||
itemGetNextExecute();
|
||||
} else if ((m_itemNo == dItemNo_ORANGE_RUPEE_e || m_itemNo == dItemNo_SILVER_RUPEE_e) &&
|
||||
} else if ((M_ITEMNO_MODEL_ITEM_ID == dItemNo_ORANGE_RUPEE_e || M_ITEMNO_MODEL_ITEM_ID == dItemNo_SILVER_RUPEE_e) &&
|
||||
mSparkleEmtr.getEmitter() == NULL)
|
||||
{
|
||||
dComIfGp_particle_set(0x0C14, &mSparklePos, NULL, NULL, -1, &mSparkleEmtr, -1, NULL, NULL,
|
||||
@@ -316,7 +316,7 @@ int daItem_c::_daItem_create() {
|
||||
shape_angle.z = 0;
|
||||
shape_angle.x = 0;
|
||||
#if TARGET_PC
|
||||
setRandomizerItem();
|
||||
setRandomizerItem(/*setFoolishItemModel = */true);
|
||||
#endif
|
||||
field_0x95d = true;
|
||||
}
|
||||
@@ -359,10 +359,12 @@ int daItem_c::_daItem_create() {
|
||||
if (flag) {
|
||||
CreateInit();
|
||||
} else {
|
||||
phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(m_itemNo));
|
||||
#if TARGET_PC
|
||||
#endif
|
||||
phase_state = dComIfG_resLoad(&mPhase, dItem_data::getFieldArc(M_ITEMNO_MODEL_ITEM_ID));
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
if (!fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap,
|
||||
dItem_data::getFieldHeapSize(m_itemNo)))
|
||||
dItem_data::getFieldHeapSize(M_ITEMNO_MODEL_ITEM_ID)))
|
||||
{
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
@@ -379,7 +381,7 @@ int daItem_c::_daItem_execute() {
|
||||
CountTimer();
|
||||
|
||||
eyePos = current.pos;
|
||||
eyePos.y += (f32)dItem_data::getH(m_itemNo) / 2;
|
||||
eyePos.y += (f32)dItem_data::getH(M_ITEMNO_MODEL_ITEM_ID) / 2;
|
||||
|
||||
attention_info.position = current.pos;
|
||||
|
||||
@@ -421,7 +423,7 @@ int daItem_c::_daItem_execute() {
|
||||
mLastPos = current.pos;
|
||||
field_0x95f = (fopAcM_checkHookCarryNow(this) >> 0x14) & 1;
|
||||
|
||||
if (m_itemNo == dItemNo_ORANGE_RUPEE_e || m_itemNo == dItemNo_SILVER_RUPEE_e) {
|
||||
if (M_ITEMNO_MODEL_ITEM_ID == dItemNo_ORANGE_RUPEE_e || M_ITEMNO_MODEL_ITEM_ID == dItemNo_SILVER_RUPEE_e) {
|
||||
mSparklePos = current.pos;
|
||||
mSparklePos.y += 18.0f;
|
||||
}
|
||||
@@ -448,11 +450,11 @@ int daItem_c::_daItem_draw() {
|
||||
int daItem_c::_daItem_delete() {
|
||||
mSound.deleteObject();
|
||||
|
||||
if (m_itemNo == dItemNo_ORANGE_RUPEE_e || m_itemNo == dItemNo_SILVER_RUPEE_e) {
|
||||
if (M_ITEMNO_MODEL_ITEM_ID == dItemNo_ORANGE_RUPEE_e || M_ITEMNO_MODEL_ITEM_ID == dItemNo_SILVER_RUPEE_e) {
|
||||
mSparkleEmtr.remove();
|
||||
}
|
||||
|
||||
DeleteBase(dItem_data::getFieldArc(m_itemNo));
|
||||
DeleteBase(dItem_data::getFieldArc(M_ITEMNO_MODEL_ITEM_ID));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -550,7 +552,7 @@ void daItem_c::procMainSimpleGetDemo() {
|
||||
void daItem_c::procInitGetDemoEvent() {
|
||||
hide();
|
||||
|
||||
if (m_itemNo == dItemNo_ORANGE_RUPEE_e || m_itemNo == dItemNo_SILVER_RUPEE_e) {
|
||||
if (M_ITEMNO_MODEL_ITEM_ID == dItemNo_ORANGE_RUPEE_e || M_ITEMNO_MODEL_ITEM_ID == dItemNo_SILVER_RUPEE_e) {
|
||||
mSparkleEmtr.remove();
|
||||
}
|
||||
|
||||
@@ -561,12 +563,19 @@ void daItem_c::procInitGetDemoEvent() {
|
||||
#if TARGET_PC
|
||||
// Set rando item again incase this item is progressive and
|
||||
// player picked up another one before this one on the same stage
|
||||
u8 oldItemNo = m_itemNo;
|
||||
setRandomizerItem();
|
||||
#endif
|
||||
m_item_id = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this),
|
||||
NULL, NULL);
|
||||
JUT_ASSERT(0, m_item_id != fpcM_ERROR_PROCESS_ID_e);
|
||||
|
||||
#if TARGET_PC
|
||||
// Set the itemNo back to the old one since the game relies on this
|
||||
// to properly delete the arc it loaded
|
||||
m_itemNo = oldItemNo;
|
||||
#endif
|
||||
|
||||
setStatus(STATUS_WAIT_GET_DEMO_EVENT_e);
|
||||
}
|
||||
|
||||
@@ -623,8 +632,8 @@ void daItem_c::procInitBoomerangCarry() {
|
||||
scale = mItemScale;
|
||||
mBoomerangMove.initOffset(¤t.pos);
|
||||
|
||||
u8 height = dItem_data::getH(m_itemNo);
|
||||
u8 radius = dItem_data::getR(m_itemNo);
|
||||
u8 height = dItem_data::getH(M_ITEMNO_MODEL_ITEM_ID);
|
||||
u8 radius = dItem_data::getR(M_ITEMNO_MODEL_ITEM_ID);
|
||||
mCcCyl.SetR((f32)radius * 2.0f);
|
||||
mCcCyl.SetH((f32)height * 2.0f);
|
||||
mCcCyl.OnCoSPrmBit(1);
|
||||
@@ -807,7 +816,7 @@ void daItem_c::mode_wait() {
|
||||
mAcch.SetGrndNone();
|
||||
}
|
||||
|
||||
switch (m_itemNo) {
|
||||
switch (M_ITEMNO_MODEL_ITEM_ID) {
|
||||
case dItemNo_HEART_e:
|
||||
itemActionForHeart();
|
||||
break;
|
||||
@@ -851,7 +860,7 @@ void daItem_c::mode_water() {
|
||||
}
|
||||
|
||||
f32 scale = 1.0f;
|
||||
switch (m_itemNo) {
|
||||
switch (M_ITEMNO_MODEL_ITEM_ID) {
|
||||
case dItemNo_HEART_e:
|
||||
scale = 0.5f;
|
||||
break;
|
||||
@@ -902,6 +911,7 @@ void daItem_c::itemGetNextExecute() {
|
||||
case dItemNo_ARROW_1_e:
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
break;
|
||||
case dItemNo_BLUE_RUPEE_e:
|
||||
case dItemNo_YELLOW_RUPEE_e:
|
||||
case dItemNo_RED_RUPEE_e:
|
||||
@@ -994,6 +1004,7 @@ void daItem_c::itemGet() {
|
||||
#if TARGET_PC
|
||||
// Set rando item again incase this item is progressive and
|
||||
// player picked up another one before this one on the same stage
|
||||
u8 oldItemNo = m_itemNo;
|
||||
setRandomizerItem();
|
||||
#endif
|
||||
switch (m_itemNo) {
|
||||
@@ -1058,6 +1069,9 @@ void daItem_c::itemGet() {
|
||||
OS_REPORT_ERROR("[daItem_c]ゲット処理が定義されていません[%d]\n", m_itemNo);
|
||||
break;
|
||||
}
|
||||
#if TARGET_PC
|
||||
m_itemNo = oldItemNo;
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOL daItem_c::checkCountTimer() {
|
||||
@@ -1221,7 +1235,7 @@ void daItem_c::set_bound_se() {
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void daItem_c::setRandomizerItem() {
|
||||
void daItem_c::setRandomizerItem(bool setFoolishItemModel) {
|
||||
if (randomizer_IsActive()) {
|
||||
u32 params = fopAcM_GetParam(this);
|
||||
u8 flag = daItem_prm::getItemBitNo(this);
|
||||
@@ -1236,6 +1250,10 @@ void daItem_c::setRandomizerItem() {
|
||||
params |= verifyProgressiveItem(newItemId);
|
||||
fopAcM_SetParam(this, params);
|
||||
m_itemNo = daItem_prm::getItemNo(this);
|
||||
// Set the ice trap model if this is an ice trap, and it isn't set
|
||||
if (setFoolishItemModel && m_itemNo == dItemNo_Randomizer_FOOLISH_ITEM_e && home.angle.z == 0) {
|
||||
home.angle.z = randomizer_getRandomFoolishItemModelID();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user