summaryrefslogtreecommitdiff
path: root/src/constants/card_data_constants.asm
blob: 15c3e582db8bcd876c2a7712f32b19c5505b62fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
NONE EQU $0

; sCardCollection constants
CARD_COLLECTION_SIZE EQU $100 ; cards
MAX_AMOUNT_OF_CARD   EQU 99
CARD_NOT_OWNED_F     EQU 7
CARD_NOT_OWNED       EQU 1 << CARD_NOT_OWNED_F
CARD_COUNT_MASK      EQU $7f

; sDeck* and generic deck constants
NUM_DECKS                EQU 4
DECK_NAME_SIZE           EQU 24
DECK_NAME_SIZE_WO_SUFFIX EQU 21 ; name part before "deck"
DECK_SIZE                EQU 60
DECK_STRUCT_SIZE         EQU DECK_NAME_SIZE + DECK_SIZE
DECK_CONFIG_BUFFER_SIZE  EQU 80
MAX_NUM_SAME_NAME_CARDS  EQU 4
MAX_UNNAMED_DECK_NUM     EQU 999

; card data offsets (data/cards.asm and card_data_struct)

; all card types
CARD_DATA_TYPE                  EQU $00
CARD_DATA_GFX                   EQU $01
CARD_DATA_NAME                  EQU $03
CARD_DATA_RARITY                EQU $05
CARD_DATA_SET                   EQU $06
CARD_DATA_ID                    EQU $07
CARD_DATA_EFFECT_COMMANDS       EQU $08 ; !TYPE_PKMN
CARD_DATA_HP                    EQU $08 ; TYPE_PKMN
CARD_DATA_STAGE                 EQU $09 ; TYPE_PKMN
CARD_DATA_NONPKMN_DESCRIPTION   EQU $0a ; !TYPE_PKMN
CARD_DATA_PREEVO_NAME           EQU $0a ; TYPE_PKMN

TRN_CARD_DATA_LENGTH    EQU $0e
ENERGY_CARD_DATA_LENGTH EQU $0e

; TYPE_PKMN card only
CARD_DATA_ATTACK1                 EQU $0c
CARD_DATA_ATTACK1_ENERGY_COST     EQU $0c
CARD_DATA_ATTACK1_NAME            EQU $10
CARD_DATA_ATTACK1_DESCRIPTION     EQU $12
CARD_DATA_ATTACK1_DAMAGE          EQU $16
CARD_DATA_ATTACK1_CATEGORY        EQU $17
CARD_DATA_ATTACK1_EFFECT_COMMANDS EQU $18
CARD_DATA_ATTACK1_FLAG1           EQU $1a
CARD_DATA_ATTACK1_FLAG2           EQU $1b
CARD_DATA_ATTACK1_FLAG3           EQU $1c
CARD_DATA_ATTACK1_EFFECT_PARAM    EQU $1d
CARD_DATA_ATTACK1_ANIMATION       EQU $1e

; TYPE_PKMN card only
CARD_DATA_ATTACK2                 EQU $1f
CARD_DATA_ATTACK2_ENERGY_COST     EQU $1f
CARD_DATA_ATTACK2_NAME            EQU $23
CARD_DATA_ATTACK2_DESCRIPTION     EQU $25
CARD_DATA_ATTACK2_DAMAGE          EQU $29
CARD_DATA_ATTACK2_CATEGORY        EQU $2a
CARD_DATA_ATTACK2_EFFECT_COMMANDS EQU $2b
CARD_DATA_ATTACK2_FLAG1           EQU $2d
CARD_DATA_ATTACK2_FLAG2           EQU $2e
CARD_DATA_ATTACK2_FLAG3           EQU $2f
CARD_DATA_ATTACK2_EFFECT_PARAM    EQU $30
CARD_DATA_ATTACK2_ANIMATION       EQU $31

; TYPE_PKMN card only
CARD_DATA_RETREAT_COST          EQU $32
CARD_DATA_WEAKNESS              EQU $33
CARD_DATA_RESISTANCE            EQU $34
CARD_DATA_CATEGORY              EQU $35
CARD_DATA_POKEDEX_NUMBER        EQU $37
CARD_DATA_UNKNOWN1              EQU $38
CARD_DATA_LEVEL                 EQU $39
CARD_DATA_LENGTH                EQU $3a
CARD_DATA_WEIGHT                EQU $3c
CARD_DATA_PKMN_DESCRIPTION      EQU $3e
CARD_DATA_UNKNOWN2              EQU $40

PKMN_CARD_DATA_LENGTH EQU $41

; generic type (color) constants
	const_def
	const FIRE        ; $00
	const GRASS       ; $01
	const LIGHTNING   ; $02
	const WATER       ; $03
	const FIGHTING    ; $04
	const PSYCHIC     ; $05
NUM_COLORED_TYPES EQU const_value
	const COLORLESS   ; $06
	const UNUSED_TYPE ; $07
NUM_TYPES EQU const_value

; generic type (color) flag constants
FIRE_F      EQU $1 << FIRE      ; $01
GRASS_F     EQU $1 << GRASS     ; $02
LIGHTNING_F EQU $1 << LIGHTNING ; $04
WATER_F     EQU $1 << WATER     ; $08
FIGHTING_F  EQU $1 << FIGHTING  ; $10
PSYCHIC_F   EQU $1 << PSYCHIC   ; $20
COLORLESS_F EQU $1 << COLORLESS ; $40

; CARD_DATA_TYPE constants
TYPE_PKMN_FIRE      EQU FIRE
TYPE_PKMN_GRASS     EQU GRASS
TYPE_PKMN_LIGHTNING EQU LIGHTNING
TYPE_PKMN_WATER     EQU WATER
TYPE_PKMN_FIGHTING  EQU FIGHTING
TYPE_PKMN_PSYCHIC   EQU PSYCHIC
TYPE_PKMN_COLORLESS EQU COLORLESS
TYPE_PKMN_UNUSED    EQU UNUSED_TYPE
	const_def TYPE_PKMN_UNUSED + 1 - TYPE_PKMN_FIRE
TYPE_ENERGY EQU const_value
	const TYPE_ENERGY_FIRE             ; $08
	const TYPE_ENERGY_GRASS            ; $09
	const TYPE_ENERGY_LIGHTNING        ; $0a
	const TYPE_ENERGY_WATER            ; $0b
	const TYPE_ENERGY_FIGHTING         ; $0c
	const TYPE_ENERGY_PSYCHIC          ; $0d
	const TYPE_ENERGY_DOUBLE_COLORLESS ; $0e
	const TYPE_ENERGY_UNUSED           ; $0f
	const TYPE_TRAINER                 ; $10
	const TYPE_TRAINER_UNUSED          ; $11
NUM_CARD_TYPES EQU const_value - 1

TYPE_PKMN      EQU %111
TYPE_ENERGY_F  EQU 3
TYPE_TRAINER_F EQU 4

; CARD_DATA_RARITY constants
CIRCLE    EQU $0
DIAMOND   EQU $1
STAR      EQU $2
PROMOSTAR EQU $ff

; card set constants (set 1)
	const_def
	const CARD_SET_COLOSSEUM   ; $0
	const CARD_SET_EVOLUTION   ; $1
	const CARD_SET_MYSTERY     ; $2
	const CARD_SET_LABORATORY  ; $3
	const CARD_SET_PROMOTIONAL ; $4
	const CARD_SET_ENERGY      ; $5
NUM_CARD_SETS EQU const_value - 1

; CARD_DATA_SET constants (set 1)
COLOSSEUM   EQU CARD_SET_COLOSSEUM   << 4
EVOLUTION   EQU CARD_SET_EVOLUTION   << 4
MYSTERY     EQU CARD_SET_MYSTERY     << 4
LABORATORY  EQU CARD_SET_LABORATORY  << 4
PROMOTIONAL EQU CARD_SET_PROMOTIONAL << 4
ENERGY      EQU CARD_SET_ENERGY      << 4

; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
FOSSIL EQU $2
GB     EQU $7
PRO    EQU $8

; CARD_DATA_STAGE constants
BASIC  EQU $00
STAGE1 EQU $01
STAGE2 EQU $02
STAGE2_WITHOUT_STAGE1 EQU $03

; CARD_DATA_WEAKNESS and CARD_DATA_RESISTANCE constants
WR_FIRE      EQU $80
WR_GRASS     EQU $40
WR_LIGHTNING EQU $20
WR_WATER     EQU $10
WR_FIGHTING  EQU $08
WR_PSYCHIC   EQU $04

; CARD_DATA_ATTACK*_CATEGORY constants
DAMAGE_NORMAL EQU $00
DAMAGE_PLUS   EQU $01
DAMAGE_MINUS  EQU $02
DAMAGE_X      EQU $03
POKEMON_POWER EQU $04
RESIDUAL_F    EQU 7
RESIDUAL      EQU 1 << RESIDUAL_F

; Bit mask for CheckLoadedAttackFlag
; for flag address from wLoadedAttackFlag1
ATTACK_FLAG1_ADDRESS EQU $0 << 3
ATTACK_FLAG2_ADDRESS EQU $1 << 3
ATTACK_FLAG3_ADDRESS EQU $2 << 3

; CARD_DATA_ATTACK*_FLAG1 constants
INFLICT_POISON_F           EQU %000
INFLICT_SLEEP_F            EQU %001
INFLICT_PARALYSIS_F        EQU %010
INFLICT_CONFUSION_F        EQU %011
LOW_RECOIL_F               EQU %100
DAMAGE_TO_OPPONENT_BENCH_F EQU %101
HIGH_RECOIL_F              EQU %110
DRAW_CARD_F                EQU %111

; CARD_DATA_ATTACK*_FLAG2 constants
; bits 5, 6 and 7 cover a wide variety of effects
SWITCH_OPPONENT_POKEMON_F  EQU %000
HEAL_USER_F                EQU %001
NULLIFY_OR_WEAKEN_ATTACK_F EQU %010
DISCARD_ENERGY_F           EQU %011
ATTACHED_ENERGY_BOOST_F    EQU %100
FLAG_2_BIT_5_F             EQU %101
FLAG_2_BIT_6_F             EQU %110
FLAG_2_BIT_7_F             EQU %111

; CARD_DATA_ATTACK*_FLAG3 constants
; bit 1 covers a wide variety of effects
; bits 2-7 are unused
BOOST_IF_TAKEN_DAMAGE_F    EQU %000
SPECIAL_AI_HANDLING_F      EQU %001

; CARD_DATA_ATTACK*_FLAG1_F constants
INFLICT_POISON           EQU $1 << INFLICT_POISON_F
INFLICT_SLEEP            EQU $1 << INFLICT_SLEEP_F
INFLICT_PARALYSIS        EQU $1 << INFLICT_PARALYSIS_F
INFLICT_CONFUSION        EQU $1 << INFLICT_CONFUSION_F
LOW_RECOIL               EQU $1 << LOW_RECOIL_F
DAMAGE_TO_OPPONENT_BENCH EQU $1 << DAMAGE_TO_OPPONENT_BENCH_F
HIGH_RECOIL              EQU $1 << HIGH_RECOIL_F
DRAW_CARD                EQU $1 << DRAW_CARD_F

; CARD_DATA_ATTACK*_FLAG2_F constants
; bits 5, 6 and 7 cover a wide variety of effects
SWITCH_OPPONENT_POKEMON  EQU $1 << SWITCH_OPPONENT_POKEMON_F
HEAL_USER                EQU $1 << HEAL_USER_F
NULLIFY_OR_WEAKEN_ATTACK EQU $1 << NULLIFY_OR_WEAKEN_ATTACK_F
DISCARD_ENERGY           EQU $1 << DISCARD_ENERGY_F
ATTACHED_ENERGY_BOOST    EQU $1 << ATTACHED_ENERGY_BOOST_F
FLAG_2_BIT_5             EQU $1 << FLAG_2_BIT_5_F
FLAG_2_BIT_6             EQU $1 << FLAG_2_BIT_6_F
FLAG_2_BIT_7             EQU $1 << FLAG_2_BIT_7_F

; CARD_DATA_ATTACK*_FLAG3_F constants
; bit 1 covers a wide variety of effects
; bits 2-7 are unused
BOOST_IF_TAKEN_DAMAGE    EQU $1 << BOOST_IF_TAKEN_DAMAGE_F
SPECIAL_AI_HANDLING      EQU $1 << SPECIAL_AI_HANDLING_F

; special CARD_DATA_RETREAT_COST values
UNABLE_RETREAT EQU $64

; attack index constants
FIRST_ATTACK_OR_PKMN_POWER EQU $0
SECOND_ATTACK              EQU $1

; whether attack with the ATTACHED_ENERGY_BOOST flag
; has limit on attached energy cards boost.
MAX_ENERGY_BOOST_IS_LIMITED     EQU $2
MAX_ENERGY_BOOST_IS_NOT_LIMITED EQU $3