mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-14 02:27:21 -07:00
Item SaveContext Logic (#4237)
* Port initial framework up to latest dev-rando. Includes about 15 items using the SCL structure for tracking. * Most other item variables ported to SaveContext in UpdateHelpers. * Removed individual Context retrievals in favor of single local variable in Logic to reference. * start of some diagnostics. caught some reverse logic with ApplyItemEffect. * more diagnostics * Resolve major logic issue with SetInventory flow in ApplyItemEffect. Other small logic issues in ApplyItemEffect. * Added a bit of logging. Add Double Defense to item effects. * revert hint gen bypass * item_list *actually* divorced from logicVar pointers. Several missed options for ApplyItemEffect, HasItem, and UpdateHelpers added in. Changed HasItem to a switch block for more performance. Seeds generate within 10-20 seconds in release mode. Further optimization is assumed possible. * Some formatting * Bit more formatting. * Couple review changes. * Incorporate progressive upgrades and skeleton key into SCL. Bit of cleanup. * Change `inLogic` to static array. * Fix bug in `BottleCount()` preventing Jabu Jabu from ever being in logic. * Fix bomb bag HasItem check. * Fix Gerudo Fortress and Ganon's Castle SmallKeys checks. * Change all logic use of `bool remove` to be `bool state` and work on the affirmative assumption. * Forgot the `Set(x)` uses in `Logic::Reset()`. * Fix fishing pole effect application. * fishing pole tweak * Add `RG_BOMB_BAG`, `RG_NUTS` and `RG_STICKS` to `HasItem()`. Fix silver and gold gauntlet checks in `HasItem()`. Change Nuts and Sticks helpers to use non-progressive RGs in `UpdateHelpers()`. * Change mSaveContext to simple pointer. Set `mSaveContext` to `&gSaveContext` when loading a save file. Modify `Item::GetGIEntry()` to use rando context's SaveContext pointer instead of the gSaveContext macros. Utilize `Item::GetGIEntry()` to get real RG of infinite upgrades and set rando infs accordingly, skipping upgrade level incrementing (which was causing overflow of wallets for some reason). * Rename all remaining references of LogicVar to variants of LogicVal. * Change final references to song LogicVars to CanUse calls, and remove them. * Separate equip and rand inf flag maps. Add Zelda's Letter and Weird Egg rand infs to map. Consolidate `HasItem` rand inf lookups using rand inf map and equips using equip flag map. Maps are static, so can be referenced with `Context::` instead of ctx pointer.
This commit is contained in:
parent
cab0871fe7
commit
aeb85c81aa
15 changed files with 1713 additions and 532 deletions
|
@ -94,6 +94,7 @@ extern "C"
|
|||
extern u16 gEquipMasks[4];
|
||||
extern u16 gEquipNegMasks[4];
|
||||
extern u32 gUpgradeMasks[8];
|
||||
extern u32 gUpgradeNegMasks[8];
|
||||
extern u8 gEquipShifts[4];
|
||||
extern u8 gUpgradeShifts[8];
|
||||
extern u16 gUpgradeCapacities[8][4];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue