mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-13 01:57:18 -07:00
Bombchu logic fixes, Add BetterBombchShopping enhancment and some adjacent cleanups (#3733)
* Initial Bombchu rework implementation * Finish bombchus in logic overhaul * address reviews * Post resolution fixes * fix git being dumb * Readd Child Wallet To Bombchu Bowling Logic * post merge fixes * fix some oversights in bombchu shopping logic * doesn't work, linker errors * cleanup old reviews * Make it build, likely broken by VB * attempt to fix carpet man second purchse text * commit to change branch * mostly have carpet guy working * badly fix carpet salesman * fix better bombchu shopping * fix bombchu drops * remember you need bombchus in inventory to get drops * Address reviews * post-SCL clean up and redo the bombchu ammo logic to apply better to the spirit edge case * fix oversight which could have allowed for bombchus to logical exist when they shouldn't * Remove special bombchu playthrough checks which are causing bugs and no longer needed * fix Slingshot logic reset * Convert helpers I touched into CanUse and HasItem * last cleanups
This commit is contained in:
parent
d3edbcd042
commit
9c2e773ce4
45 changed files with 521 additions and 414 deletions
|
@ -1454,6 +1454,7 @@ void EnItem00_DrawHeartPiece(EnItem00* this, PlayState* play) {
|
|||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
// #region [Randomizer] [Enchancment]
|
||||
/**
|
||||
* Sometimes convert the given drop ID into a bombchu.
|
||||
* Returns the new drop type ID.
|
||||
|
@ -1483,6 +1484,7 @@ s16 EnItem00_ConvertBombDropToBombchu(s16 dropId) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// #endregion
|
||||
|
||||
/**
|
||||
* Converts a given drop type ID based on link's current age, health and owned items.
|
||||
|
@ -1501,11 +1503,14 @@ s16 func_8001F404(s16 dropId) {
|
|||
}
|
||||
}
|
||||
|
||||
if ((CVarGetInteger(CVAR_ENHANCEMENT("BombchuDrops"), 0) ||
|
||||
// #region [Randomizer] [Enchancment]
|
||||
if ((CVarGetInteger(CVAR_ENHANCEMENT("EnableBombchuDrops"), 0) ||
|
||||
(IS_RANDO && Randomizer_GetSettingValue(RSK_ENABLE_BOMBCHU_DROPS) == 1)) &&
|
||||
(dropId == ITEM00_BOMBS_A || dropId == ITEM00_BOMBS_B || dropId == ITEM00_BOMBS_SPECIAL)) {
|
||||
(dropId == ITEM00_BOMBS_A || dropId == ITEM00_BOMBS_B || dropId == ITEM00_BOMBS_SPECIAL) &&
|
||||
(!IS_RANDO || Randomizer_GetSettingValue(RSK_BOMBCHUS_IN_LOGIC) || INV_CONTENT(ITEM_BOMB) != ITEM_NONE)) {
|
||||
dropId = EnItem00_ConvertBombDropToBombchu(dropId);
|
||||
}
|
||||
// #endregion
|
||||
|
||||
// This is convoluted but it seems like it must be a single condition to match
|
||||
// clang-format off
|
||||
|
|
|
@ -1870,7 +1870,7 @@ void Randomizer_GameplayStats_SetTimestamp(uint16_t item) {
|
|||
return;
|
||||
}
|
||||
// Count any bombchu pack as bombchus
|
||||
if ((item >= RG_BOMBCHU_5 && item <= RG_BOMBCHU_DROP) || item == RG_PROGRESSIVE_BOMBCHUS) {
|
||||
if ((item >= RG_BOMBCHU_5 && item <= RG_BOMBCHU_20) || item == RG_PROGRESSIVE_BOMBCHUS) {
|
||||
if (gSaveContext.sohStats.itemTimestamp[ITEM_BOMBCHU] = 0) {
|
||||
gSaveContext.sohStats.itemTimestamp[ITEM_BOMBCHU] = time;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue