19#define MAX_ACTIVE_JOKERS 8
21#define MAX_DEFINABLE_JOKERS 150
23#define JOKER_SPRITE_OFFSET 16
24#define JOKER_STARTING_LAYER 26
26#define JOKER_TID (JOKER_STARTING_LAYER * JOKER_SPRITE_OFFSET)
27#define JOKER_BASE_PB 4
28#define JOKER_LAST_PB (NUM_PALETTES - 1)
37#define NEGATIVE_EDITION 4
42#define UNCOMMON_JOKER 1
44#define LEGENDARY_JOKER 3
46#define MAX_RARITIES (LEGENDARY_JOKER + 1)
51#define COMMON_JOKER_CHANCE 70
52#define UNCOMMON_JOKER_CHANCE 25
53#define RARE_JOKER_CHANCE 5
54#define LEGENDARY_JOKER_CHANCE 0
60 JOKER_EVENT_ON_JOKER_CREATED,
62 JOKER_EVENT_ON_HAND_PLAYED,
64 JOKER_EVENT_ON_CARD_SCORED,
66 JOKER_EVENT_ON_CARD_SCORED_END,
68 JOKER_EVENT_ON_CARD_HELD,
69 JOKER_EVENT_INDEPENDENT,
71 JOKER_EVENT_ON_HAND_SCORED_END,
73 JOKER_EVENT_ON_HAND_DISCARDED,
74 JOKER_EVENT_ON_ROUND_END,
75 JOKER_EVENT_ON_BLIND_SELECTED,
82#define JOKER_EFFECT_FLAG_NONE 0
83#define JOKER_EFFECT_FLAG_CHIPS (1 << 0)
84#define JOKER_EFFECT_FLAG_MULT (1 << 1)
85#define JOKER_EFFECT_FLAG_XMULT (1 << 2)
86#define JOKER_EFFECT_FLAG_MONEY (1 << 3)
87#define JOKER_EFFECT_FLAG_RETRIGGER (1 << 4)
88#define JOKER_EFFECT_FLAG_EXPIRE (1 << 5)
89#define JOKER_EFFECT_FLAG_MESSAGE (1 << 6)
91#define MAX_JOKER_OBJECTS 32
94#define STENCIL_JOKER_ID 15
95#define SHORTCUT_JOKER_ID 48
96#define BRAINSTORM_JOKER_ID 41
97#define PAREIDOLIA_JOKER_ID 46
98#define FOUR_FINGERS_JOKER_ID 50
99#define BLUEPRINT_JOKER_ID 52
111 s32 persistent_state;
136typedef u32 (*JokerEffectFunc)(
139 enum JokerEvent joker_event,
143typedef int (*JokerDescFunc)(
Joker* joker, Rect dest_rect);
150 bool is_desc_dynamic;
152 JokerDescFunc joker_print_desc;
153 JokerEffectFunc joker_effect_func;
155const JokerInfo* get_joker_registry_entry(
int joker_id);
156size_t get_joker_registry_size(
void);
160Joker* joker_new(u8
id);
161void joker_destroy(
Joker** joker);
167u32 joker_get_score_effect(
170 enum JokerEvent joker_event,
174const char* joker_get_rarity_string(u8 rarity);
195int joker_get_sell_value(
const Joker* joker);
198void joker_object_destroy(
JokerObject** joker_object);
200void joker_object_shake(
JokerObject* joker_object, mm_word sound_id);
252bool joker_object_score(
255 enum JokerEvent joker_event
Graphic utility functions.
The core structure for items in the shop and inventory. Provides a common API for the shop and invent...
void joker_object_dispose(Item **joker_object)
Destroy a JokerObject item, free its resources, and make it available to be rolled.
u16 joker_get_rarity_color(u8 rarity, bool main_color)
Get Joker rarity panel color.
Item * joker_object_roll_new(enum RngSequence key)
Roll and create a new JokerObject item.
int joker_object_get_buy_price(Item *joker_object)
Returns the buy price of the joker object.
void joker_object_add_to_owned(Item *joker_object)
Add a Joker to the list of owned Jokers and place it in the joker row.
void joker_reset_rollable_jokers(void)
Reset rollable jokers to include all jokers in the registry.
void joker_set_rollable(int joker_id, bool rollable)
Set whether a Joker is available to be rolled for the shop, packs, etc.
Common functions to handle RNG manipulation. Using this interface has three goals:
RngSequence
Keys to different independent RNG sequences.
A generic interface for all items that can appear in the shop or be in the inventory....
Sprite struct for GBA hardware specifics.