mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-29 15:49:10 -04:00
Merge remote-tracking branch 'origin/main' into rando-mod
This commit is contained in:
@@ -93,50 +93,50 @@ bool lookup_override(const Map& map, u16 key, uint8_t* out_item) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool resolve_check(ModContext*, const ItemCheckInfo* info, uint8_t* out_item, void*) {
|
||||
bool resolve_check(ModContext*, const ItemCheckInfo* info, ItemCheckResolution* out, void*) {
|
||||
auto& ctx = randomizer_GetContext();
|
||||
|
||||
if (auto it = ctx.mItemLocations.find(info->name); it != ctx.mItemLocations.end()) {
|
||||
*out_item = static_cast<uint8_t>(verifyProgressiveItem(it->second.itemId));
|
||||
out->item = static_cast<uint8_t>(verifyProgressiveItem(it->second.itemId));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (auto key = parse_derived(info->name, ITEM_CHECK_CHEST_PREFIX)) {
|
||||
return lookup_override(ctx.mTreasureChestOverrides, key->key, out_item);
|
||||
return lookup_override(ctx.mTreasureChestOverrides, key->key, &out->item);
|
||||
}
|
||||
if (auto key = parse_derived(info->name, ITEM_CHECK_FREESTANDING_PREFIX)) {
|
||||
if (key->stage_id == Ook) {
|
||||
if (auto it = ctx.mItemLocations.find("Forest Temple Gale Boomerang");
|
||||
it != ctx.mItemLocations.end()) {
|
||||
*out_item = static_cast<uint8_t>(verifyProgressiveItem(it->second.itemId));
|
||||
out->item = static_cast<uint8_t>(verifyProgressiveItem(it->second.itemId));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return lookup_override(ctx.mFreestandingItemOverrides, key->key, out_item);
|
||||
return lookup_override(ctx.mFreestandingItemOverrides, key->key, &out->item);
|
||||
}
|
||||
if (auto flag = parse_flag_check(info->name, ITEM_CHECK_GOLDEN_WOLF_PREFIX)) {
|
||||
return lookup_override(ctx.mGoldenWolfOverrides, *flag, out_item);
|
||||
return lookup_override(ctx.mGoldenWolfOverrides, *flag, &out->item);
|
||||
}
|
||||
if (auto key = parse_derived(info->name, ITEM_CHECK_POE_PREFIX)) {
|
||||
return lookup_override(ctx.mPoeOverrides, key->key, out_item);
|
||||
return lookup_override(ctx.mPoeOverrides, key->key, &out->item);
|
||||
}
|
||||
if (auto stageId = parse_stage_check(info->name, ITEM_CHECK_BOSS_PREFIX)) {
|
||||
const u16 key = static_cast<u16>((*stageId << 8) | 0x9F);
|
||||
return lookup_override(ctx.mFreestandingItemOverrides, key, out_item);
|
||||
return lookup_override(ctx.mFreestandingItemOverrides, key, &out->item);
|
||||
}
|
||||
if (auto key = parse_derived(info->name, ITEM_CHECK_SHOP_PREFIX)) {
|
||||
return lookup_override(ctx.mShopOverrides, key->key, out_item);
|
||||
return lookup_override(ctx.mShopOverrides, key->key, &out->item);
|
||||
}
|
||||
if (auto key = parse_derived(info->name, ITEM_CHECK_SKY_PREFIX)) {
|
||||
return lookup_override(ctx.mSkyCharacterOverrides, key->key, out_item);
|
||||
return lookup_override(ctx.mSkyCharacterOverrides, key->key, &out->item);
|
||||
}
|
||||
|
||||
constexpr std::string_view bugPrefix{ITEM_CHECK_BUG_PREFIX};
|
||||
if (std::strncmp(info->name, bugPrefix.data(), bugPrefix.size()) == 0) {
|
||||
const u8 insect = static_cast<u8>(std::atoi(info->name + bugPrefix.size()));
|
||||
if (auto it = ctx.mBugRewardOverrides.find(insect); it != ctx.mBugRewardOverrides.end()) {
|
||||
*out_item = static_cast<uint8_t>(verifyProgressiveItem(it->second));
|
||||
out->item = static_cast<uint8_t>(verifyProgressiveItem(it->second));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user