mirror of https://github.com/zeldaret/oot.git
Document upgrades
This commit is contained in:
parent
4c2a451b9c
commit
1acc53cfc6
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "ultra64.h"
|
||||
#include "item.h"
|
||||
#include "upgrade.h"
|
||||
|
||||
struct PlayState;
|
||||
|
||||
|
|
|
@ -76,18 +76,6 @@ typedef enum EquipValueBoots {
|
|||
/* 4 */ EQUIP_VALUE_BOOTS_MAX
|
||||
} EquipValueBoots;
|
||||
|
||||
typedef enum UpgradeType {
|
||||
/* 0x00 */ UPG_QUIVER,
|
||||
/* 0x01 */ UPG_BOMB_BAG,
|
||||
/* 0x02 */ UPG_STRENGTH,
|
||||
/* 0x03 */ UPG_SCALE,
|
||||
/* 0x04 */ UPG_WALLET,
|
||||
/* 0x05 */ UPG_BULLET_BAG,
|
||||
/* 0x06 */ UPG_DEKU_STICKS,
|
||||
/* 0x07 */ UPG_DEKU_NUTS,
|
||||
/* 0x08 */ UPG_MAX
|
||||
} UpgradeType;
|
||||
|
||||
typedef enum QuestItem {
|
||||
/* 0x00 */ QUEST_MEDALLION_FOREST,
|
||||
/* 0x01 */ QUEST_MEDALLION_FIRE,
|
||||
|
|
|
@ -485,10 +485,6 @@ typedef enum LinkAge {
|
|||
#define TUNIC_EQUIP_TO_PLAYER(tunicEquip) ((tunicEquip) - 1)
|
||||
#define BOOTS_EQUIP_TO_PLAYER(bootsEquip) ((bootsEquip) - 1)
|
||||
|
||||
#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.save.info.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
#define CHECK_QUEST_ITEM(item) (gSaveContext.save.info.inventory.questItems & gBitFlags[item])
|
||||
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.info.inventory.dungeonItems[dungeonIndex] & gBitFlags[item])
|
||||
|
||||
|
|
|
@ -0,0 +1,163 @@
|
|||
#ifndef UPGRADE_H
|
||||
#define UPGRADE_H
|
||||
|
||||
#include "assert.h"
|
||||
#include "ultra64/ultratypes.h"
|
||||
|
||||
typedef enum UpgradeType {
|
||||
/* 0x00 */ UPG_QUIVER,
|
||||
/* 0x01 */ UPG_BOMB_BAG,
|
||||
/* 0x02 */ UPG_STRENGTH,
|
||||
/* 0x03 */ UPG_SCALE,
|
||||
/* 0x04 */ UPG_WALLET,
|
||||
/* 0x05 */ UPG_BULLET_BAG,
|
||||
/* 0x06 */ UPG_DEKU_STICKS,
|
||||
/* 0x07 */ UPG_DEKU_NUTS,
|
||||
/* 0x08 */ UPG_MAX
|
||||
} UpgradeType;
|
||||
|
||||
#define BIT_WIDTH_UPG_QUIVER 3
|
||||
|
||||
typedef enum QuiverUpgrades {
|
||||
/* 0 */ UPG_QUIVER_NONE,
|
||||
/* 1 */ UPG_QUIVER_NORMAL,
|
||||
/* 2 */ UPG_QUIVER_BIG,
|
||||
/* 3 */ UPG_QUIVER_BIGGEST,
|
||||
/* 4 */ UPG_QUIVER_MAX
|
||||
} QuiverUpgrades;
|
||||
|
||||
static_assert(UPG_QUIVER_MAX <= 1 << BIT_WIDTH_UPG_QUIVER, "All quiver upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_BOMB_BAG 3
|
||||
|
||||
typedef enum BombBagUpgrades {
|
||||
/* 0 */ UPG_BOMB_BAG_NONE,
|
||||
/* 1 */ UPG_BOMB_BAG_NORMAL,
|
||||
/* 2 */ UPG_BOMB_BAG_BIG,
|
||||
/* 3 */ UPG_BOMB_BAG_BIGGEST,
|
||||
/* 4 */ UPG_BOMB_BAG_MAX
|
||||
} BombBagUpgrades;
|
||||
|
||||
static_assert(UPG_BOMB_BAG_MAX <= 1 << BIT_WIDTH_UPG_BOMB_BAG, "All bomb bag upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_STRENGTH 3
|
||||
|
||||
typedef enum StrengthUpgrades {
|
||||
/* 0 */ UPG_STRENGTH_NONE,
|
||||
/* 1 */ UPG_STRENGTH_GORON_BRACELET,
|
||||
/* 2 */ UPG_STRENGTH_SILVER_GAUNTLETS,
|
||||
/* 3 */ UPG_STRENGTH_GOLD_GAUNTLETS,
|
||||
/* 4 */ UPG_STRENGTH_MAX
|
||||
} StrengthUpgrades;
|
||||
|
||||
static_assert(UPG_STRENGTH_MAX <= 1 << BIT_WIDTH_UPG_STRENGTH, "All strength upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_SCALE 3
|
||||
|
||||
typedef enum ScaleUpgrades {
|
||||
/* 0 */ UPG_SCALE_NONE,
|
||||
/* 1 */ UPG_SCALE_SILVER,
|
||||
/* 2 */ UPG_SCALE_GOLD,
|
||||
/* 3 */ UPG_SCALE_MAX
|
||||
} ScaleUpgrades;
|
||||
|
||||
static_assert(UPG_SCALE_MAX <= 1 << BIT_WIDTH_UPG_SCALE, "All scale upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_WALLET 2
|
||||
|
||||
typedef enum WalletUpgrades {
|
||||
/* 0 */ UPG_WALLET_CHILD,
|
||||
/* 1 */ UPG_WALLET_ADULT,
|
||||
/* 2 */ UPG_WALLET_GIANT,
|
||||
/* 3 */ UPG_WALLET_MAX
|
||||
} WalletUpgrades;
|
||||
|
||||
static_assert(UPG_WALLET_MAX <= 1 << BIT_WIDTH_UPG_WALLET, "All wallet upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_BULLET_BAG 3
|
||||
|
||||
typedef enum BulletBagUpgrades {
|
||||
/* 0 */ UPG_BULLET_BAG_NONE,
|
||||
/* 1 */ UPG_BULLET_BAG_NORMAL,
|
||||
/* 2 */ UPG_BULLET_BAG_BIG,
|
||||
/* 3 */ UPG_BULLET_BAG_BIGGEST,
|
||||
/* 4 */ UPG_BULLET_BAG_MAX
|
||||
} BulletBagUpgrades;
|
||||
|
||||
static_assert(UPG_BULLET_BAG_MAX <= 1 << BIT_WIDTH_UPG_BULLET_BAG, "All bullet bag upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_DEKU_STICKS 3
|
||||
|
||||
typedef enum DekuStickUpgrades {
|
||||
/* 0 */ UPG_DEKU_STICKS_NONE,
|
||||
/* 1 */ UPG_DEKU_STICKS_10,
|
||||
/* 2 */ UPG_DEKU_STICKS_20,
|
||||
/* 3 */ UPG_DEKU_STICKS_30,
|
||||
/* 4 */ UPG_DEKU_STICKS_MAX
|
||||
} DekuStickUpgrades;
|
||||
|
||||
static_assert(UPG_DEKU_STICKS_MAX <= 1 << BIT_WIDTH_UPG_DEKU_STICKS, "All deku stick upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BIT_WIDTH_UPG_DEKU_NUTS 3
|
||||
|
||||
typedef enum DekuNutUpgrades {
|
||||
/* 0 */ UPG_DEKU_NUTS_NONE,
|
||||
/* 1 */ UPG_DEKU_NUTS_20,
|
||||
/* 2 */ UPG_DEKU_NUTS_30,
|
||||
/* 3 */ UPG_DEKU_NUTS_40,
|
||||
/* 4 */ UPG_DEKU_NUTS_MAX
|
||||
} DekuNutUpgrades;
|
||||
|
||||
static_assert(UPG_DEKU_NUTS_MAX <= 1 << BIT_WIDTH_UPG_DEKU_NUTS, "All deku nut upgrade values should fit in its assigned bitwidth");
|
||||
|
||||
#define BITS_PER_BYTE 8
|
||||
|
||||
static_assert(
|
||||
BIT_WIDTH_UPG_QUIVER +
|
||||
BIT_WIDTH_UPG_BOMB_BAG +
|
||||
BIT_WIDTH_UPG_STRENGTH +
|
||||
BIT_WIDTH_UPG_SCALE +
|
||||
BIT_WIDTH_UPG_WALLET +
|
||||
BIT_WIDTH_UPG_BULLET_BAG +
|
||||
BIT_WIDTH_UPG_DEKU_STICKS +
|
||||
BIT_WIDTH_UPG_DEKU_NUTS < sizeof(u32) * BITS_PER_BYTE,
|
||||
"Upgrades must fit in a u32"
|
||||
);
|
||||
|
||||
#define SHIFT_UPG_QUIVER 0
|
||||
#define SHIFT_UPG_BOMB_BAG (SHIFT_UPG_QUIVER + BIT_WIDTH_UPG_QUIVER)
|
||||
#define SHIFT_UPG_STRENGTH (SHIFT_UPG_BOMB_BAG + BIT_WIDTH_UPG_BOMB_BAG)
|
||||
#define SHIFT_UPG_SCALE (SHIFT_UPG_STRENGTH + BIT_WIDTH_UPG_STRENGTH)
|
||||
#define SHIFT_UPG_WALLET (SHIFT_UPG_SCALE + BIT_WIDTH_UPG_SCALE)
|
||||
#define SHIFT_UPG_BULLET_BAG (SHIFT_UPG_WALLET + BIT_WIDTH_UPG_WALLET)
|
||||
#define SHIFT_UPG_DEKU_STICKS (SHIFT_UPG_BULLET_BAG + BIT_WIDTH_UPG_BULLET_BAG)
|
||||
#define SHIFT_UPG_DEKU_NUTS (SHIFT_UPG_DEKU_STICKS + BIT_WIDTH_UPG_DEKU_STICKS)
|
||||
|
||||
#ifndef GLUE
|
||||
# define GLUE(a, b) a##b
|
||||
#endif
|
||||
#ifndef GLUE2
|
||||
# define GLUE2(a, b) GLUE(a, b)
|
||||
#endif
|
||||
|
||||
#define GET_UPGRADE_BITMASK(upg) (((1 << GLUE2(BIT_WIDTH_, upg)) - 1) << GLUE2(SHIFT_, upg))
|
||||
|
||||
#define GET_PACKED_UPGRADE_VALUE(upgValue, upg) ((upgValue & ((1 << GLUE2(BIT_WIDTH_, upg)) - 1)) << GLUE2(SHIFT_, upg))
|
||||
|
||||
#define GET_PACKED_UPGRADES_VALUE(quiver, bombBag, strength, scale, wallet, bulletBag, dekuSticks, dekuNuts) \
|
||||
( \
|
||||
GET_PACKED_UPGRADE_VALUE(quiver, UPG_QUIVER) | \
|
||||
GET_PACKED_UPGRADE_VALUE(bombBag, UPG_BOMB_BAG) | \
|
||||
GET_PACKED_UPGRADE_VALUE(strength, UPG_STRENGTH) | \
|
||||
GET_PACKED_UPGRADE_VALUE(scale, UPG_SCALE) | \
|
||||
GET_PACKED_UPGRADE_VALUE(wallet, UPG_WALLET) | \
|
||||
GET_PACKED_UPGRADE_VALUE(bulletBag, UPG_BULLET_BAG) | \
|
||||
GET_PACKED_UPGRADE_VALUE(dekuSticks, UPG_DEKU_STICKS) | \
|
||||
GET_PACKED_UPGRADE_VALUE(dekuNuts, UPG_DEKU_NUTS) \
|
||||
)
|
||||
|
||||
#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.save.info.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg))
|
||||
|
||||
#endif
|
|
@ -31,24 +31,25 @@ u16 gEquipNegMasks[EQUIP_TYPE_MAX] = {
|
|||
};
|
||||
|
||||
u32 gUpgradeMasks[UPG_MAX] = {
|
||||
0x00000007, // UPG_QUIVER
|
||||
0x00000038, // UPG_BOMB_BAG
|
||||
0x000001C0, // UPG_STRENGTH
|
||||
0x00000E00, // UPG_SCALE
|
||||
0x00003000, // UPG_WALLET
|
||||
0x0001C000, // UPG_BULLET_BAG
|
||||
0x000E0000, // UPG_DEKU_STICKS
|
||||
0x00700000, // UPG_DEKU_NUTS
|
||||
GET_UPGRADE_BITMASK(UPG_QUIVER),
|
||||
GET_UPGRADE_BITMASK(UPG_BOMB_BAG),
|
||||
GET_UPGRADE_BITMASK(UPG_STRENGTH),
|
||||
GET_UPGRADE_BITMASK(UPG_SCALE),
|
||||
GET_UPGRADE_BITMASK(UPG_WALLET),
|
||||
GET_UPGRADE_BITMASK(UPG_BULLET_BAG),
|
||||
GET_UPGRADE_BITMASK(UPG_DEKU_STICKS),
|
||||
GET_UPGRADE_BITMASK(UPG_DEKU_NUTS),
|
||||
};
|
||||
|
||||
u32 gUpgradeNegMasks[UPG_MAX] = {
|
||||
~0x00000007, // UPG_QUIVER
|
||||
~0x00000038, // UPG_BOMB_BAG
|
||||
~0x000001C0, // UPG_STRENGTH
|
||||
~0x00000E00, // UPG_SCALE
|
||||
~0x00003000, // UPG_WALLET
|
||||
~0x0001C000, // UPG_BULLET_BAG
|
||||
~0x000E0000, // UPG_DEKU_STICKS
|
||||
~0x00700000, // UPG_DEKU_NUTS
|
||||
~GET_UPGRADE_BITMASK(UPG_QUIVER),
|
||||
~GET_UPGRADE_BITMASK(UPG_BOMB_BAG),
|
||||
~GET_UPGRADE_BITMASK(UPG_STRENGTH),
|
||||
~GET_UPGRADE_BITMASK(UPG_SCALE),
|
||||
~GET_UPGRADE_BITMASK(UPG_WALLET),
|
||||
~GET_UPGRADE_BITMASK(UPG_BULLET_BAG),
|
||||
~GET_UPGRADE_BITMASK(UPG_DEKU_STICKS),
|
||||
~GET_UPGRADE_BITMASK(UPG_DEKU_NUTS),
|
||||
};
|
||||
|
||||
u8 gEquipShifts[EQUIP_TYPE_MAX] = {
|
||||
|
@ -59,14 +60,14 @@ u8 gEquipShifts[EQUIP_TYPE_MAX] = {
|
|||
};
|
||||
|
||||
u8 gUpgradeShifts[UPG_MAX] = {
|
||||
0, // UPG_QUIVER
|
||||
3, // UPG_BOMB_BAG
|
||||
6, // UPG_STRENGTH
|
||||
9, // UPG_SCALE
|
||||
12, // UPG_WALLET
|
||||
14, // UPG_BULLET_BAG
|
||||
17, // UPG_DEKU_STICKS
|
||||
20, // UPG_DEKU_NUTS
|
||||
SHIFT_UPG_QUIVER,
|
||||
SHIFT_UPG_BOMB_BAG,
|
||||
SHIFT_UPG_STRENGTH,
|
||||
SHIFT_UPG_SCALE,
|
||||
SHIFT_UPG_WALLET,
|
||||
SHIFT_UPG_BULLET_BAG,
|
||||
SHIFT_UPG_DEKU_STICKS,
|
||||
SHIFT_UPG_DEKU_NUTS,
|
||||
};
|
||||
|
||||
u16 gUpgradeCapacities[UPG_MAX][4] = {
|
||||
|
|
|
@ -1503,10 +1503,10 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
return ITEM_NONE;
|
||||
}
|
||||
} else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) {
|
||||
if (CUR_UPG_VALUE(UPG_QUIVER) == 0) {
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, 1);
|
||||
if (CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_NORMAL);
|
||||
INV_CONTENT(ITEM_BOW) = ITEM_BOW;
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 1);
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_NORMAL);
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
AMMO(ITEM_BOW)++;
|
||||
|
@ -1515,26 +1515,26 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
}
|
||||
}
|
||||
} else if (item == ITEM_QUIVER_40) {
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, 2);
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 2);
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_BIG);
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_BIG);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_QUIVER_50) {
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, 3);
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 3);
|
||||
Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_BIGGEST);
|
||||
AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_BIGGEST);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_BULLET_BAG_40) {
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, 2);
|
||||
AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, 2);
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_BIG);
|
||||
AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, UPG_BULLET_BAG_BIG);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_BULLET_BAG_50) {
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, 3);
|
||||
AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, 3);
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_BIGGEST);
|
||||
AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, UPG_BULLET_BAG_BIGGEST);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_BOMB_BAG_20) {
|
||||
if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) {
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, 1);
|
||||
if (CUR_UPG_VALUE(UPG_BOMB_BAG) == UPG_BOMB_BAG_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_NORMAL);
|
||||
INV_CONTENT(ITEM_BOMB) = ITEM_BOMB;
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 1);
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_NORMAL);
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
AMMO(ITEM_BOMB)++;
|
||||
|
@ -1543,61 +1543,61 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
}
|
||||
}
|
||||
} else if (item == ITEM_BOMB_BAG_30) {
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, 2);
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 2);
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_BIG);
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_BIG);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_BOMB_BAG_40) {
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, 3);
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 3);
|
||||
Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_BIGGEST);
|
||||
AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_BIGGEST);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_STRENGTH_GORONS_BRACELET) {
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, 1);
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_GORON_BRACELET);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_STRENGTH_SILVER_GAUNTLETS) {
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, 2);
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_SILVER_GAUNTLETS);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_STRENGTH_GOLD_GAUNTLETS) {
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, 3);
|
||||
Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_GOLD_GAUNTLETS);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_SCALE_SILVER) {
|
||||
Inventory_ChangeUpgrade(UPG_SCALE, 1);
|
||||
Inventory_ChangeUpgrade(UPG_SCALE, UPG_SCALE_SILVER);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_SCALE_GOLDEN) {
|
||||
Inventory_ChangeUpgrade(UPG_SCALE, 2);
|
||||
Inventory_ChangeUpgrade(UPG_SCALE, UPG_SCALE_GOLD);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_ADULTS_WALLET) {
|
||||
Inventory_ChangeUpgrade(UPG_WALLET, 1);
|
||||
Inventory_ChangeUpgrade(UPG_WALLET, UPG_WALLET_ADULT);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_GIANTS_WALLET) {
|
||||
Inventory_ChangeUpgrade(UPG_WALLET, 2);
|
||||
Inventory_ChangeUpgrade(UPG_WALLET, UPG_WALLET_GIANT);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_DEKU_STICK_UPGRADE_20) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK;
|
||||
}
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 2);
|
||||
AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 2);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_20);
|
||||
AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, UPG_DEKU_STICKS_20);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_DEKU_STICK_UPGRADE_30) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK;
|
||||
}
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 3);
|
||||
AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 3);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_30);
|
||||
AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, UPG_DEKU_STICKS_30);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_DEKU_NUT_UPGRADE_30) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT;
|
||||
}
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 2);
|
||||
AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, 2);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_30);
|
||||
AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, UPG_DEKU_NUTS_30);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_DEKU_NUT_UPGRADE_40) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT;
|
||||
}
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 3);
|
||||
AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, 3);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_40);
|
||||
AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, UPG_DEKU_NUTS_40);
|
||||
return ITEM_NONE;
|
||||
} else if (item == ITEM_LONGSHOT) {
|
||||
INV_CONTENT(item) = item;
|
||||
|
@ -1610,7 +1610,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
return ITEM_NONE;
|
||||
} else if (item == ITEM_DEKU_STICK) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_10);
|
||||
AMMO(ITEM_DEKU_STICK) = 1;
|
||||
} else {
|
||||
AMMO(ITEM_DEKU_STICK)++;
|
||||
|
@ -1620,7 +1620,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
}
|
||||
} else if ((item == ITEM_DEKU_STICKS_5) || (item == ITEM_DEKU_STICKS_10)) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_10);
|
||||
AMMO(ITEM_DEKU_STICK) = sAmmoRefillCounts[item - ITEM_DEKU_STICKS_5];
|
||||
} else {
|
||||
AMMO(ITEM_DEKU_STICK) += sAmmoRefillCounts[item - ITEM_DEKU_STICKS_5];
|
||||
|
@ -1631,7 +1631,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
item = ITEM_DEKU_STICK;
|
||||
} else if (item == ITEM_DEKU_NUT) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_20);
|
||||
AMMO(ITEM_DEKU_NUT) = ITEM_DEKU_NUT;
|
||||
} else {
|
||||
AMMO(ITEM_DEKU_NUT)++;
|
||||
|
@ -1641,7 +1641,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
}
|
||||
} else if ((item == ITEM_DEKU_NUTS_5) || (item == ITEM_DEKU_NUTS_10)) {
|
||||
if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) {
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1);
|
||||
Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_20);
|
||||
AMMO(ITEM_DEKU_NUT) += sAmmoRefillCounts[item - ITEM_DEKU_NUTS_5];
|
||||
PRINTF(T("デクの実 %d(%d)=%d BS_count=%d\n", "Deku Nuts %d(%d)=%d BS_count=%d\n"), item, ITEM_DEKU_NUTS_5,
|
||||
item - ITEM_DEKU_NUTS_5, sAmmoRefillCounts[item - ITEM_DEKU_NUTS_5]);
|
||||
|
@ -1696,7 +1696,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
|||
|
||||
return ITEM_BOW;
|
||||
} else if (item == ITEM_SLINGSHOT) {
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, 1);
|
||||
Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_NORMAL);
|
||||
INV_CONTENT(ITEM_SLINGSHOT) = ITEM_SLINGSHOT;
|
||||
AMMO(ITEM_SLINGSHOT) = 30;
|
||||
return ITEM_NONE;
|
||||
|
@ -1938,7 +1938,7 @@ u8 Item_CheckObtainability(u8 item) {
|
|||
} else if ((item == ITEM_BOMBCHUS_5) || (item == ITEM_BOMBCHUS_20)) {
|
||||
return ITEM_NONE;
|
||||
} else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) {
|
||||
if (CUR_UPG_VALUE(UPG_QUIVER) == 0) {
|
||||
if (CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE) {
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -1948,7 +1948,7 @@ u8 Item_CheckObtainability(u8 item) {
|
|||
} else if ((item == ITEM_BULLET_BAG_40) || (item == ITEM_BULLET_BAG_50)) {
|
||||
return ITEM_NONE;
|
||||
} else if ((item == ITEM_BOMB_BAG_20) || (item == ITEM_BOMB)) {
|
||||
if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) {
|
||||
if (CUR_UPG_VALUE(UPG_BOMB_BAG) == UPG_BOMB_BAG_NONE) {
|
||||
return ITEM_NONE;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -3186,8 +3186,16 @@ void Interface_Draw(PlayState* play) {
|
|||
static s16 D_80125B1C[][3] = {
|
||||
{ 0, 150, 0 }, { 100, 255, 0 }, { 255, 255, 255 }, { 0, 0, 0 }, { 255, 255, 255 },
|
||||
};
|
||||
static s16 rupeeDigitsFirst[] = { 1, 0, 0 };
|
||||
static s16 rupeeDigitsCount[] = { 2, 3, 3 };
|
||||
static s16 rupeeDigitsFirst[] = {
|
||||
1, // UPG_WALLET_CHILD
|
||||
0, // UPG_WALLET_ADULT
|
||||
0 // UPG_WALLET_GIANT
|
||||
};
|
||||
static s16 rupeeDigitsCount[] = {
|
||||
2, // UPG_WALLET_CHILD
|
||||
3, // UPG_WALLET_ADULT
|
||||
3 // UPG_WALLET_GIANT
|
||||
};
|
||||
static s16 spoilingItemEntrances[] = { ENTR_LOST_WOODS_2, ENTR_ZORAS_DOMAIN_3, ENTR_ZORAS_DOMAIN_3 };
|
||||
static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused
|
||||
static s16 D_80125B5C[] = { 91, 91 }; // unused
|
||||
|
|
|
@ -815,7 +815,7 @@ s32 Player_GetStrength(void) {
|
|||
|
||||
if (LINK_IS_ADULT) {
|
||||
return strengthUpgrade;
|
||||
} else if (strengthUpgrade != 0) {
|
||||
} else if (strengthUpgrade != UPG_STRENGTH_NONE) {
|
||||
return PLAYER_STR_BRACELET;
|
||||
} else {
|
||||
return PLAYER_STR_NONE;
|
||||
|
@ -1132,10 +1132,10 @@ void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dL
|
|||
if (LINK_IS_ADULT) {
|
||||
s32 strengthUpgrade = CUR_UPG_VALUE(UPG_STRENGTH);
|
||||
|
||||
if (strengthUpgrade >= 2) { // silver or gold gauntlets
|
||||
if (strengthUpgrade >= UPG_STRENGTH_SILVER_GAUNTLETS) {
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
||||
color = &sGauntletColors[strengthUpgrade - 2];
|
||||
color = &sGauntletColors[strengthUpgrade - UPG_STRENGTH_SILVER_GAUNTLETS];
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0);
|
||||
|
||||
gSPDisplayList(POLY_OPA_DISP++, gLinkAdultLeftGauntletPlate1DL);
|
||||
|
|
|
@ -185,7 +185,16 @@ static Inventory sNewSaveInventory = {
|
|||
// equipment
|
||||
(((1 << EQUIP_INV_TUNIC_KOKIRI) << (EQUIP_TYPE_TUNIC * 4)) |
|
||||
((1 << EQUIP_INV_BOOTS_KOKIRI) << (EQUIP_TYPE_BOOTS * 4))),
|
||||
0, // upgrades
|
||||
GET_PACKED_UPGRADES_VALUE(
|
||||
UPG_QUIVER_NONE,
|
||||
UPG_BOMB_BAG_NONE,
|
||||
UPG_STRENGTH_NONE,
|
||||
UPG_SCALE_NONE,
|
||||
UPG_WALLET_CHILD,
|
||||
UPG_BULLET_BAG_NONE,
|
||||
UPG_DEKU_STICKS_NONE,
|
||||
UPG_DEKU_NUTS_NONE
|
||||
), // upgrades
|
||||
0, // questItems
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems
|
||||
{
|
||||
|
@ -345,7 +354,16 @@ static Inventory sDebugSaveInventory = {
|
|||
(((1 << EQUIP_INV_BOOTS_KOKIRI) << (EQUIP_TYPE_BOOTS * 4)) |
|
||||
((1 << EQUIP_INV_BOOTS_IRON) << (EQUIP_TYPE_BOOTS * 4)) |
|
||||
((1 << EQUIP_INV_BOOTS_HOVER) << (EQUIP_TYPE_BOOTS * 4)))),
|
||||
0x125249, // upgrades
|
||||
GET_PACKED_UPGRADES_VALUE(
|
||||
UPG_QUIVER_NORMAL,
|
||||
UPG_BOMB_BAG_NORMAL,
|
||||
UPG_STRENGTH_GORON_BRACELET,
|
||||
UPG_SCALE_SILVER,
|
||||
UPG_WALLET_ADULT,
|
||||
UPG_BULLET_BAG_NORMAL,
|
||||
UPG_DEKU_STICKS_10,
|
||||
UPG_DEKU_NUTS_20
|
||||
), // upgrades
|
||||
0x1E3FFFF, // questItems
|
||||
{ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems
|
||||
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 }, // dungeonKeys
|
||||
|
|
|
@ -410,13 +410,13 @@ void EnDns_Talk(EnDns* this, PlayState* play) {
|
|||
|
||||
void EnDns_OfferSaleItem(EnDns* this, PlayState* play) {
|
||||
if (DNS_GET_TYPE(&this->actor) == DNS_TYPE_DEKU_STICK_UPGRADE) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < 2) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < UPG_DEKU_STICKS_20) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f);
|
||||
} else {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_30, 130.0f, 100.0f);
|
||||
}
|
||||
} else if (DNS_GET_TYPE(&this->actor) == DNS_TYPE_DEKU_NUT_UPGRADE) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < 2) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < UPG_DEKU_NUTS_30) {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f);
|
||||
} else {
|
||||
Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_40, 130.0f, 100.0f);
|
||||
|
|
|
@ -205,7 +205,7 @@ void EnDntJiji_Walk(EnDntJiji* this, PlayState* play) {
|
|||
this->actor.speed = 3.0f;
|
||||
}
|
||||
if (this->actor.xzDistToPlayer < 100.0f) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == 1) {
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == UPG_DEKU_STICKS_10) {
|
||||
this->getItemId = GI_DEKU_STICK_UPGRADE_20;
|
||||
} else {
|
||||
this->getItemId = GI_DEKU_STICK_UPGRADE_30;
|
||||
|
@ -237,7 +237,7 @@ void EnDntJiji_SetupCower(EnDntJiji* this, PlayState* play) {
|
|||
EffectSsHahen_SpawnBurst(play, &this->actor.world.pos, 3.0f, 0, 9, 3, 10, HAHEN_OBJECT_DEFAULT, 10, NULL);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_UP);
|
||||
|
||||
if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == 1) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == 0)) {
|
||||
if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == UPG_DEKU_NUTS_20) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == UPG_DEKU_NUTS_NONE)) {
|
||||
this->getItemId = GI_DEKU_NUT_UPGRADE_30;
|
||||
} else {
|
||||
this->getItemId = GI_DEKU_NUT_UPGRADE_40;
|
||||
|
|
|
@ -117,7 +117,7 @@ u16 EnDu_GetTextId(PlayState* play, Actor* actor) {
|
|||
if (textId != 0) {
|
||||
return textId;
|
||||
}
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) != 0) {
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) {
|
||||
return 0x301E;
|
||||
} else {
|
||||
|
@ -522,7 +522,7 @@ void func_809FEB08(EnDu* this, PlayState* play) {
|
|||
EnDu_SetupAction(this, func_809FE3C0);
|
||||
return;
|
||||
}
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) <= 0) {
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) < UPG_STRENGTH_GORON_BRACELET) {
|
||||
this->actor.textId = 0x301C;
|
||||
EnDu_SetupAction(this, func_809FEC14);
|
||||
} else {
|
||||
|
|
|
@ -405,7 +405,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) {
|
|||
this->actor.draw = NULL;
|
||||
Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_7);
|
||||
this->actor.parent = NULL;
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) == 1) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_NORMAL) {
|
||||
getItemId = GI_BULLET_BAG_40;
|
||||
} else {
|
||||
getItemId = GI_BULLET_BAG_50;
|
||||
|
@ -421,7 +421,7 @@ void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) {
|
|||
if (Actor_HasParent(&this->actor, play)) {
|
||||
this->actionFunc = EnExItem_TargetPrizeFinish;
|
||||
} else {
|
||||
getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == 2) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40;
|
||||
getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_BIG) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40;
|
||||
|
||||
Actor_OfferGetItem(&this->actor, play, getItemId, 2000.0f, 1000.0f);
|
||||
}
|
||||
|
|
|
@ -516,10 +516,10 @@ void EnGe1_WaitTillItemGiven_Archery(EnGe1* this, PlayState* play) {
|
|||
if (this->stateFlags & GE1_STATE_GIVE_QUIVER) {
|
||||
switch (CUR_UPG_VALUE(UPG_QUIVER)) {
|
||||
//! @bug Asschest. See next function for details
|
||||
case 1:
|
||||
case UPG_QUIVER_NORMAL:
|
||||
getItemId = GI_QUIVER_40;
|
||||
break;
|
||||
case 2:
|
||||
case UPG_QUIVER_BIG:
|
||||
getItemId = GI_QUIVER_50;
|
||||
break;
|
||||
}
|
||||
|
@ -544,10 +544,10 @@ void EnGe1_BeginGiveItem_Archery(EnGe1* this, PlayState* play) {
|
|||
//! over from the previous function run in EnGe1_Update, namely EnGe1_CueUpAnimation. The top stack variable
|
||||
//! in that function is &this->skelAnime = thisx + 198, and depending on where this loads in memory, the
|
||||
//! getItemId changes.
|
||||
case 1:
|
||||
case UPG_QUIVER_NORMAL:
|
||||
getItemId = GI_QUIVER_40;
|
||||
break;
|
||||
case 2:
|
||||
case UPG_QUIVER_BIG:
|
||||
getItemId = GI_QUIVER_50;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -275,7 +275,7 @@ s16 EnGo_UpdateTalkState(PlayState* play, Actor* thisx) {
|
|||
switch (thisx->textId) {
|
||||
case 0x300A:
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) != 0 || GET_INFTABLE(INFTABLE_EB)) {
|
||||
if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE || GET_INFTABLE(INFTABLE_EB)) {
|
||||
thisx->textId = 0x300B;
|
||||
} else {
|
||||
thisx->textId = 0x300C;
|
||||
|
|
|
@ -383,7 +383,7 @@ s16 EnGo2_UpdateTalkStateGoronDmtBombFlower(PlayState* play, EnGo2* this) {
|
|||
// Ask question to DMT Goron by bomb flower
|
||||
if (this->actor.textId == 0x300A) {
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
this->actor.textId = CUR_UPG_VALUE(UPG_STRENGTH) != 0 ? 0x300B : 0x300C;
|
||||
this->actor.textId = CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE ? 0x300B : 0x300C;
|
||||
} else {
|
||||
this->actor.textId = 0x300D;
|
||||
}
|
||||
|
@ -482,10 +482,10 @@ u16 EnGo2_GetTextIdGoronCityLowestFloor(PlayState* play, EnGo2* this) {
|
|||
} else if (CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) {
|
||||
return 0x3027;
|
||||
} else {
|
||||
return CUR_UPG_VALUE(UPG_STRENGTH) != 0 ? 0x302C
|
||||
: !Flags_GetSwitch(play, 0x1B) ? 0x3017
|
||||
: GET_INFTABLE(INFTABLE_F8) ? 0x3019
|
||||
: 0x3018;
|
||||
return CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE ? 0x302C
|
||||
: !Flags_GetSwitch(play, 0x1B) ? 0x3017
|
||||
: GET_INFTABLE(INFTABLE_F8) ? 0x3019
|
||||
: 0x3018;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -536,7 +536,7 @@ void EnOssan_TalkGoronShopkeeper(PlayState* play) {
|
|||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
if (GET_EVENTCHKINF(EVENTCHKINF_25)) {
|
||||
Message_ContinueTextbox(play, 0x3028);
|
||||
} else if (CUR_UPG_VALUE(UPG_STRENGTH) != 0) {
|
||||
} else if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE) {
|
||||
Message_ContinueTextbox(play, 0x302D);
|
||||
} else {
|
||||
Message_ContinueTextbox(play, 0x300F);
|
||||
|
|
|
@ -247,11 +247,11 @@ void EnSth_GivePlayerItem(EnSth* this, PlayState* play) {
|
|||
case 1:
|
||||
case 3:
|
||||
switch (CUR_UPG_VALUE(UPG_WALLET)) {
|
||||
case 0:
|
||||
case UPG_WALLET_CHILD:
|
||||
getItemId = GI_WALLET_ADULT;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case UPG_WALLET_ADULT:
|
||||
getItemId = GI_WALLET_GIANT;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -360,7 +360,7 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) {
|
|||
if (!GET_ITEMGETINF(ITEMGETINF_0D)) {
|
||||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ Equip_Pachinko ☆☆☆☆☆ %d\n" VT_RST,
|
||||
CUR_UPG_VALUE(UPG_BULLET_BAG));
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) == 1) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_NORMAL) {
|
||||
this->getItemId = GI_BULLET_BAG_40;
|
||||
} else {
|
||||
this->getItemId = GI_BULLET_BAG_50;
|
||||
|
@ -372,13 +372,13 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) {
|
|||
if (!GET_ITEMGETINF(ITEMGETINF_0E)) {
|
||||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ Equip_Bow ☆☆☆☆☆ %d\n" VT_RST, CUR_UPG_VALUE(UPG_QUIVER));
|
||||
switch (CUR_UPG_VALUE(UPG_QUIVER)) {
|
||||
case 0:
|
||||
case UPG_QUIVER_NONE:
|
||||
this->getItemId = GI_RUPEE_PURPLE;
|
||||
break;
|
||||
case 1:
|
||||
case UPG_QUIVER_NORMAL:
|
||||
this->getItemId = GI_QUIVER_40;
|
||||
break;
|
||||
case 2:
|
||||
case UPG_QUIVER_BIG:
|
||||
this->getItemId = GI_QUIVER_50;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -10888,7 +10888,11 @@ void func_80847298(Player* this) {
|
|||
this->unk_6AE_rotFlags = 0;
|
||||
}
|
||||
|
||||
static f32 D_80854784[] = { 120.0f, 240.0f, 360.0f };
|
||||
static f32 sDiveDepths[] = {
|
||||
120.0f, // UPG_SCALE_NONE
|
||||
240.0f, // UPG_SCALE_SILVER
|
||||
360.0f // UPG_SCALE_GOLD
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates the two main interface elements that player is responsible for:
|
||||
|
@ -10970,7 +10974,7 @@ void Player_UpdateInterface(PlayState* play, Player* this) {
|
|||
static u8 sDiveNumberDoActions[] = { DO_ACTION_1, DO_ACTION_2, DO_ACTION_3, DO_ACTION_4,
|
||||
DO_ACTION_5, DO_ACTION_6, DO_ACTION_7, DO_ACTION_8 };
|
||||
|
||||
sp24 = (D_80854784[CUR_UPG_VALUE(UPG_SCALE)] - this->actor.depthInWater) / 40.0f;
|
||||
sp24 = (sDiveDepths[CUR_UPG_VALUE(UPG_SCALE)] - this->actor.depthInWater) / 40.0f;
|
||||
sp24 = CLAMP(sp24, 0, 7);
|
||||
doAction = sDiveNumberDoActions[sp24];
|
||||
} else if (sp1C && !(this->stateFlags2 & PLAYER_STATE2_10)) {
|
||||
|
@ -13637,7 +13641,7 @@ void Player_Action_8084DC48(Player* this, PlayState* play) {
|
|||
|
||||
if (CHECK_BTN_ALL(sControlInput->cur.button, BTN_A) && !Player_ActionHandler_2(this, play) &&
|
||||
!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) &&
|
||||
(this->actor.depthInWater < D_80854784[CUR_UPG_VALUE(UPG_SCALE)])) {
|
||||
(this->actor.depthInWater < sDiveDepths[CUR_UPG_VALUE(UPG_SCALE)])) {
|
||||
func_8084DBC4(play, this, -2.0f);
|
||||
} else {
|
||||
this->av1.actionVar1++;
|
||||
|
|
|
@ -239,7 +239,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
|||
if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
|
||||
if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
|
||||
//! @bug Assumes adult always has bullet bag (as adult this should rely on `UPG_QUIVER`)
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) {
|
||||
cursorMoveResult = 1;
|
||||
}
|
||||
} else {
|
||||
|
@ -329,7 +329,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
|||
|
||||
if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
|
||||
if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) {
|
||||
cursorMoveResult = 1;
|
||||
}
|
||||
} else {
|
||||
|
@ -383,7 +383,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
|||
while (true) {
|
||||
if (cursorX == EQUIP_CURSOR_X_UPG) {
|
||||
if (cursorY == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
|
||||
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) {
|
||||
pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
|
||||
pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
|
||||
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
|
||||
|
@ -466,7 +466,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
|||
|
||||
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
|
||||
if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) &&
|
||||
(CUR_UPG_VALUE(UPG_BULLET_BAG) != 0)) {
|
||||
(CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE)) {
|
||||
cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1;
|
||||
} else {
|
||||
cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] +
|
||||
|
@ -475,7 +475,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
|||
}
|
||||
} else {
|
||||
if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) &&
|
||||
(CUR_UPG_VALUE(UPG_QUIVER) == 0)) {
|
||||
(CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE)) {
|
||||
cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1;
|
||||
} else {
|
||||
cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] +
|
||||
|
|
|
@ -3916,7 +3916,7 @@ void KaleidoScope_Update(PlayState* play) {
|
|||
pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_SHOW;
|
||||
}
|
||||
|
||||
if (CUR_UPG_VALUE(UPG_SCALE)) {
|
||||
if (CUR_UPG_VALUE(UPG_SCALE) != UPG_SCALE_NONE) {
|
||||
pauseCtx->worldMapPoints[WORLD_MAP_POINT_LAKE_HYLIA] = WORLD_MAP_POINT_STATE_SHOW;
|
||||
}
|
||||
if (CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON)) {
|
||||
|
|
Loading…
Reference in New Issue