pokecrystal-board/data/trainers/attributes.asm
Rangi 40902ffe24 Verify data table sizes with table_width and assert_table_length macros
This was discussed in #706

It also uncovered some off-by-one issues with defining some constants.

A few structs now use rsreset/_RS to define their offset constants, as discussed in #739
2021-03-04 00:15:03 -05:00

408 lines
11 KiB
NASM

TrainerClassAttributes:
; entries correspond to trainer classes (see constants/trainer_constants.asm)
table_width NUM_TRAINER_ATTRIBUTES, TrainerClassAttributes
; Falkner
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Whitney
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Bugsy
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Morty
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Pryce
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Jasmine
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Chuck
db FULL_HEAL, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Clair
db FULL_HEAL, HYPER_POTION ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Rival1
db NO_ITEM, NO_ITEM ; items
db 15 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Pokemon Prof
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_AGGRESSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Will
db MAX_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Cal
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Bruno
db MAX_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Karen
db FULL_HEAL, MAX_POTION ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Koga
db FULL_HEAL, FULL_RESTORE ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Champion
db FULL_HEAL, FULL_RESTORE ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Brock
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Misty
db FULL_HEAL, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Lt Surge
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Scientist
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Erika
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Youngster
db NO_ITEM, NO_ITEM ; items
db 4 ; base reward
dw AI_BASIC | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Schoolboy
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_OFTEN
; Bird Keeper
db NO_ITEM, NO_ITEM ; items
db 6 ; base reward
dw AI_BASIC | AI_TYPES | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Lass
db NO_ITEM, NO_ITEM ; items
db 6 ; base reward
dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_OFTEN
; Janine
db DIRE_HIT, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Cooltrainerm
db NO_ITEM, NO_ITEM ; items
db 12 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Cooltrainerf
db NO_ITEM, NO_ITEM ; items
db 12 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Beauty
db NO_ITEM, NO_ITEM ; items
db 22 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Pokemaniac
db NO_ITEM, NO_ITEM ; items
db 15 ; base reward
dw AI_BASIC | AI_SETUP | AI_OFFENSIVE | AI_AGGRESSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Gruntm
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Gentleman
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_SETUP | AI_AGGRESSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Skier
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Teacher
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_OPPORTUNIST | AI_AGGRESSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Sabrina
db HYPER_POTION, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Bug Catcher
db NO_ITEM, NO_ITEM ; items
db 4 ; base reward
dw AI_BASIC | AI_SETUP | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Fisher
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_OFTEN
; Swimmerm
db NO_ITEM, NO_ITEM ; items
db 2 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_OFFENSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Swimmerf
db NO_ITEM, NO_ITEM ; items
db 5 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Sailor
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Super Nerd
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Rival2
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Guitarist
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Hiker
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_OFFENSIVE | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Biker
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_TYPES | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Blaine
db MAX_POTION, FULL_HEAL ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Burglar
db NO_ITEM, NO_ITEM ; items
db 22 ; base reward
dw AI_BASIC | AI_OFFENSIVE | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Firebreather
db NO_ITEM, NO_ITEM ; items
db 12 ; base reward
dw AI_BASIC | AI_SETUP | AI_OFFENSIVE | AI_OPPORTUNIST | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Juggler
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Blackbelt T
db NO_ITEM, NO_ITEM ; items
db 6 ; base reward
dw AI_BASIC | AI_OFFENSIVE | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Executivem
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Psychic T
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Picnicker
db NO_ITEM, NO_ITEM ; items
db 5 ; base reward
dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Camper
db NO_ITEM, NO_ITEM ; items
db 5 ; base reward
dw AI_BASIC | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Executivef
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_SMART | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Sage
db NO_ITEM, NO_ITEM ; items
db 8 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Medium
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_SETUP | AI_TYPES | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Boarder
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Pokefanm
db NO_ITEM, NO_ITEM ; items
db 20 ; base reward
dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Kimono Girl
db NO_ITEM, NO_ITEM ; items
db 18 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Twins
db NO_ITEM, NO_ITEM ; items
db 5 ; base reward
dw NO_AI
dw CONTEXT_USE | SWITCH_OFTEN
; Pokefanf
db NO_ITEM, NO_ITEM ; items
db 20 ; base reward
dw AI_BASIC | AI_TYPES | AI_SMART | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Red
db FULL_RESTORE, FULL_RESTORE ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Blue
db FULL_RESTORE, FULL_RESTORE ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Officer
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_STATUS
dw CONTEXT_USE | SWITCH_SOMETIMES
; Gruntf
db NO_ITEM, NO_ITEM ; items
db 10 ; base reward
dw AI_BASIC | AI_TYPES | AI_OPPORTUNIST | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
; Mysticalman
db NO_ITEM, NO_ITEM ; items
db 25 ; base reward
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES
assert_table_length NUM_TRAINER_CLASSES