Add Golden Wolf item checks

This commit is contained in:
Luke Street
2026-08-21 20:45:43 -06:00
parent 5a8622c6b2
commit c53f3f774b
5 changed files with 31 additions and 1 deletions
+1
View File
@@ -92,6 +92,7 @@ private:
u8 mOriginalItemNo;
bool mItemOverridden;
bool mOverrideHover;
bool mGoldenWolfItem;
#endif
};
+1
View File
@@ -8,6 +8,7 @@
#define ITEM_CHECK_BUG_PREFIX "bug:" /* <insect_item> */
#define ITEM_CHECK_CHEST_PREFIX "chest:" /* <stage>:<box> */
#define ITEM_CHECK_FREESTANDING_PREFIX "freestanding:" /* <stage>:<bit> */
#define ITEM_CHECK_GOLDEN_WOLF_PREFIX "golden_wolf:" /* <event_flag> */
#define ITEM_CHECK_POE_PREFIX "poe:" /* <stage>:<switch> */
#define ITEM_CHECK_SHOP_PREFIX "shop:" /* <stage>:<item> */
#define ITEM_CHECK_SKY_PREFIX "sky:" /* <stage>:<room> */
+11 -1
View File
@@ -159,9 +159,19 @@ int daObjLife_c::create() {
if (mItemOverridden) {
fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem);
}
} else if (mGoldenWolfItem) {
mOriginalItemNo = mItemGiveOriginalNo;
const u16 obtainedItemFlag = static_cast<u16>(field_0x938);
const u8 resolvedItem =
dusk::mods::item_check_golden_wolf(obtainedItemFlag, mOriginalItemNo, this);
mItemGiveTag = dusk::mods::item_give_tag_golden_wolf(obtainedItemFlag);
mItemOverridden = resolvedItem != mOriginalItemNo;
if (resolvedItem != parameterItemNo) {
fopAcM_SetParam(this, (params & 0xFFFFFF00) | resolvedItem);
}
} else {
mOriginalItemNo = mItemGiveOriginalNo;
mItemOverridden = parameterItemNo != mItemGiveOriginalNo;
mItemOverridden = parameterItemNo != mOriginalItemNo;
}
mOverrideHover =
mItemOverridden &&
+2
View File
@@ -25,12 +25,14 @@ ItemCheckResult item_check_commit(uint32_t giveTag, uint8_t itemNo, fopAc_ac_c*
uint8_t item_check_chest(uint8_t boxNo, uint8_t itemNo, fopAc_ac_c* chest);
uint8_t item_check_boss(uint8_t itemNo, fopAc_ac_c* boss);
uint8_t item_check_freestanding(uint8_t bitNo, uint8_t itemNo, fopAc_ac_c* item);
uint8_t item_check_golden_wolf(uint16_t eventFlag, uint8_t itemNo, fopAc_ac_c* item);
uint8_t item_check_shop(uint8_t itemNo, fopAc_ac_c* giver);
uint32_t item_give_tag(const char* name);
uint32_t item_give_tag_chest(uint8_t boxNo);
uint32_t item_give_tag_boss();
uint32_t item_give_tag_freestanding(uint8_t bitNo);
uint32_t item_give_tag_golden_wolf(uint16_t eventFlag);
uint32_t item_give_tag_poe(uint8_t bitNo);
uint32_t item_give_tag_shop(uint8_t itemNo);
uint32_t item_give_tag_bug(uint8_t insectId);
+16
View File
@@ -143,6 +143,10 @@ std::string freestanding_check_name(uint8_t bitNo) {
return fmt::format("freestanding:{}:{}", current_stage_name(), bitNo);
}
std::string golden_wolf_check_name(uint16_t eventFlag) {
return fmt::format("golden_wolf:{}", eventFlag);
}
std::string poe_check_name(uint8_t bitNo) {
return fmt::format("poe:{}:{}", current_stage_name(), bitNo);
}
@@ -274,6 +278,14 @@ uint8_t item_check_freestanding(uint8_t bitNo, uint8_t itemNo, fopAc_ac_c* item)
return item_check(name.c_str(), itemNo, item);
}
uint8_t item_check_golden_wolf(uint16_t eventFlag, uint8_t itemNo, fopAc_ac_c* item) {
if (s_modChecks.empty()) {
return itemNo;
}
const auto name = golden_wolf_check_name(eventFlag);
return item_check(name.c_str(), itemNo, item);
}
uint8_t item_check_shop(uint8_t itemNo, fopAc_ac_c* giver) {
if (s_modChecks.empty()) {
return itemNo;
@@ -314,6 +326,10 @@ uint32_t item_give_tag_freestanding(uint8_t bitNo) {
return item_give_tag(freestanding_check_name(bitNo).c_str());
}
uint32_t item_give_tag_golden_wolf(uint16_t eventFlag) {
return item_give_tag(golden_wolf_check_name(eventFlag).c_str());
}
uint32_t item_give_tag_poe(uint8_t bitNo) {
return item_give_tag(poe_check_name(bitNo).c_str());
}