mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-19 13:00:11 -07:00
Rando: Infinite upgrades (Rando V3) (#3942)
* Infinite Upgrades * Add "Condensed Progressive" * VB & fix build * Update settings.cpp
This commit is contained in:
parent
081a55ab29
commit
3bcd93428e
16 changed files with 499 additions and 50 deletions
|
@ -2768,6 +2768,8 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
|||
if (INV_CONTENT(ITEM_BOMBCHU) == ITEM_NONE) {
|
||||
INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU;
|
||||
AMMO(ITEM_BOMBCHU) = 20;
|
||||
} else if (Randomizer_GetSettingValue(RSK_INFINITE_UPGRADES)) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_BOMBCHUS);
|
||||
} else {
|
||||
AMMO(ITEM_BOMBCHU) += AMMO(ITEM_BOMBCHU) < 5 ? 10 : 5;
|
||||
if (AMMO(ITEM_BOMBCHU) > 50) {
|
||||
|
@ -2796,6 +2798,46 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
|||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_QUIVER_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_QUIVER);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_BOMB_BAG_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_BOMB_BAG);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_BULLET_BAG_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_BULLET_BAG);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_STICK_UPGRADE_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_STICK_UPGRADE);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_NUT_UPGRADE_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_NUT_UPGRADE);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_MAGIC_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_MAGIC_METER);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_BOMBCHU_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_BOMBCHUS);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_WALLET_INF) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_INFINITE_MONEY);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
}
|
||||
|
||||
if (item == RG_SKELETON_KEY) {
|
||||
Flags_SetRandomizerInf(RAND_INF_HAS_SKELETON_KEY);
|
||||
return Return_Item_Entry(giEntry, RG_NONE);
|
||||
|
@ -3578,21 +3620,23 @@ void Interface_UpdateMagicBar(PlayState* play) {
|
|||
break;
|
||||
|
||||
case MAGIC_STATE_CONSUME:
|
||||
gSaveContext.magic -= 2;
|
||||
if (gSaveContext.magic <= 0) {
|
||||
gSaveContext.magic = 0;
|
||||
gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
|
||||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicBorder.Changed"), 0)) {
|
||||
sMagicBorder = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicBorder.Value"), sMagicBorder_ori);
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
}
|
||||
} else if (gSaveContext.magic == gSaveContext.magicTarget) {
|
||||
gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
|
||||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicBorder.Changed"), 0)) {
|
||||
sMagicBorder = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicBorder.Value"), sMagicBorder_ori);
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
if (!Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_MAGIC_METER)) {
|
||||
gSaveContext.magic -= 2;
|
||||
if (gSaveContext.magic <= 0) {
|
||||
gSaveContext.magic = 0;
|
||||
gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
|
||||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicBorder.Changed"), 0)) {
|
||||
sMagicBorder = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicBorder.Value"), sMagicBorder_ori);
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
}
|
||||
} else if (gSaveContext.magic == gSaveContext.magicTarget) {
|
||||
gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
|
||||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicBorder.Changed"), 0)) {
|
||||
sMagicBorder = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicBorder.Value"), sMagicBorder_ori);
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
}
|
||||
}
|
||||
}
|
||||
case MAGIC_STATE_METER_FLASH_1:
|
||||
|
@ -3756,6 +3800,7 @@ void Interface_DrawMagicBar(PlayState* play) {
|
|||
s16 magicBarY;
|
||||
Color_RGB8 magicbar_yellow = {250,250,0}; //Magic bar being used
|
||||
Color_RGB8 magicbar_green = {R_MAGIC_FILL_COLOR(0),R_MAGIC_FILL_COLOR(1),R_MAGIC_FILL_COLOR(2)}; //Magic bar fill
|
||||
Color_RGB8 magicbar_blue = {0,0,200};//Infinite magic bar
|
||||
|
||||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.MagicActive.Changed"), 0)) {
|
||||
magicbar_yellow = CVarGetColor24(CVAR_COSMETIC("Consumable.MagicActive.Value"), magicbar_yellow);
|
||||
|
@ -3763,6 +3808,9 @@ void Interface_DrawMagicBar(PlayState* play) {
|
|||
if (CVarGetInteger(CVAR_COSMETIC("Consumable.Magic.Changed"), 0)) {
|
||||
magicbar_green = CVarGetColor24(CVAR_COSMETIC("Consumable.Magic.Value"), magicbar_green);
|
||||
}
|
||||
if (CVarGetInteger("gCosmetics.Consumable_MagicInfinite.Changed", 0)) {
|
||||
magicbar_blue = CVarGetColor24("gCosmetics.Consumable_MagicInfinite.Value", magicbar_blue);
|
||||
}
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
|
@ -3870,14 +3918,26 @@ void Interface_DrawMagicBar(PlayState* play) {
|
|||
|
||||
// Fill the rest of the bar with the normal magic color
|
||||
gDPPipeSync(OVERLAY_DISP++);
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_green.r, magicbar_green.g, magicbar_green.b, interfaceCtx->magicAlpha);
|
||||
if (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_MAGIC_METER)) {
|
||||
// Blue magic
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_blue.r, magicbar_blue.g, magicbar_blue.b, interfaceCtx->magicAlpha);
|
||||
} else {
|
||||
// Green magic (default)
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_green.r, magicbar_green.g, magicbar_green.b, interfaceCtx->magicAlpha);
|
||||
}
|
||||
|
||||
gSPWideTextureRectangle(OVERLAY_DISP++, rMagicFillX << 2, (magicBarY + 3) << 2,
|
||||
(rMagicFillX + gSaveContext.magicTarget) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE,
|
||||
0, 0, 1 << 10, 1 << 10);
|
||||
} else {
|
||||
// Fill the whole bar with the normal magic color
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_green.r, magicbar_green.g, magicbar_green.b, interfaceCtx->magicAlpha);
|
||||
if (Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_MAGIC_METER)) {
|
||||
// Blue magic
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_blue.r, magicbar_blue.g, magicbar_blue.b, interfaceCtx->magicAlpha);
|
||||
} else {
|
||||
// Green magic (default)
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_green.r, magicbar_green.g, magicbar_green.b, interfaceCtx->magicAlpha);
|
||||
}
|
||||
|
||||
gDPLoadMultiBlock_4b(OVERLAY_DISP++, gMagicMeterFillTex, 0, G_TX_RENDERTILE, G_IM_FMT_I, 16, 16, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
|
||||
|
@ -5021,10 +5081,25 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) {
|
|||
|
||||
i = gSaveContext.equips.buttonItems[button];
|
||||
|
||||
if ((i == ITEM_STICK) || (i == ITEM_NUT) || (i == ITEM_BOMB) || (i == ITEM_BOW) ||
|
||||
((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) || (i == ITEM_SLINGSHOT) || (i == ITEM_BOMBCHU) ||
|
||||
(i == ITEM_BEAN)) {
|
||||
|
||||
if (
|
||||
GameInteractor_Should(
|
||||
VB_DRAW_AMMO_COUNT,
|
||||
(
|
||||
(i == ITEM_STICK) ||
|
||||
(i == ITEM_NUT) ||
|
||||
(i == ITEM_BOMB) ||
|
||||
(i == ITEM_BOW) ||
|
||||
(
|
||||
(i >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(i <= ITEM_BOW_ARROW_LIGHT)
|
||||
) ||
|
||||
(i == ITEM_SLINGSHOT) ||
|
||||
(i == ITEM_BOMBCHU) ||
|
||||
(i == ITEM_BEAN)
|
||||
),
|
||||
&i
|
||||
)
|
||||
) {
|
||||
if ((i >= ITEM_BOW_ARROW_FIRE) && (i <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
i = ITEM_BOW;
|
||||
}
|
||||
|
@ -5297,8 +5372,8 @@ void Interface_Draw(PlayState* play) {
|
|||
if (fullUi) {
|
||||
s16 PosX_RC;
|
||||
s16 PosY_RC;
|
||||
//when not having a wallet in rando, don't calculate the ruppe icon
|
||||
if (!IS_RANDO || Flags_GetRandomizerInf(RAND_INF_HAS_WALLET)) {
|
||||
//when not having a wallet (or infinite money) in rando, don't calculate the ruppe icon
|
||||
if (!IS_RANDO || (Flags_GetRandomizerInf(RAND_INF_HAS_WALLET) && !Flags_GetRandomizerInf(RAND_INF_HAS_INFINITE_MONEY))) {
|
||||
// Rupee Icon
|
||||
if (CVarGetInteger(CVAR_ENHANCEMENT("DynamicWalletIcon"), 0)) {
|
||||
switch (CUR_UPG_VALUE(UPG_WALLET)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue