mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Clean up some data, using macros for multiline list entries
This commit is contained in:
parent
aa97e196dd
commit
f37cf959c9
298 changed files with 5274 additions and 5646 deletions
|
|
@ -3,50 +3,50 @@ TrainerAIPointers:
|
|||
; first byte, number of times (per Pokémon) it can occur
|
||||
; next two bytes, pointer to AI subroutine for trainer class
|
||||
; subroutines are defined in engine/battle/trainer_ai.asm
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,JugglerAI ; juggler_x
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 3,JugglerAI ; juggler
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 2,BlackbeltAI ; blackbelt
|
||||
dbw 3,GenericAI
|
||||
dbw 3,GenericAI
|
||||
dbw 1,GenericAI ; chief
|
||||
dbw 3,GenericAI
|
||||
dbw 1,GiovanniAI ; giovanni
|
||||
dbw 3,GenericAI
|
||||
dbw 2,CooltrainerMAI ; cooltrainerm
|
||||
dbw 1,CooltrainerFAI ; cooltrainerf
|
||||
dbw 2,BrunoAI ; bruno
|
||||
dbw 5,BrockAI ; brock
|
||||
dbw 1,MistyAI ; misty
|
||||
dbw 1,LtSurgeAI ; surge
|
||||
dbw 1,ErikaAI ; erika
|
||||
dbw 2,KogaAI ; koga
|
||||
dbw 2,BlaineAI ; blaine
|
||||
dbw 1,SabrinaAI ; sabrina
|
||||
dbw 3,GenericAI
|
||||
dbw 1,Sony2AI ; sony2
|
||||
dbw 1,Sony3AI ; sony3
|
||||
dbw 2,LoreleiAI ; lorelei
|
||||
dbw 3,GenericAI
|
||||
dbw 2,AgathaAI ; agatha
|
||||
dbw 1,LanceAI ; lance
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, JugglerAI ; juggler_x
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 3, JugglerAI ; juggler
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 2, BlackbeltAI ; blackbelt
|
||||
dbw 3, GenericAI
|
||||
dbw 3, GenericAI
|
||||
dbw 1, GenericAI ; chief
|
||||
dbw 3, GenericAI
|
||||
dbw 1, GiovanniAI ; giovanni
|
||||
dbw 3, GenericAI
|
||||
dbw 2, CooltrainerMAI ; cooltrainerm
|
||||
dbw 1, CooltrainerFAI ; cooltrainerf
|
||||
dbw 2, BrunoAI ; bruno
|
||||
dbw 5, BrockAI ; brock
|
||||
dbw 1, MistyAI ; misty
|
||||
dbw 1, LtSurgeAI ; surge
|
||||
dbw 1, ErikaAI ; erika
|
||||
dbw 2, KogaAI ; koga
|
||||
dbw 2, BlaineAI ; blaine
|
||||
dbw 1, SabrinaAI ; sabrina
|
||||
dbw 3, GenericAI
|
||||
dbw 1, Sony2AI ; sony2
|
||||
dbw 1, Sony3AI ; sony3
|
||||
dbw 2, LoreleiAI ; lorelei
|
||||
dbw 3, GenericAI
|
||||
dbw 2, AgathaAI ; agatha
|
||||
dbw 1, LanceAI ; lance
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ FemaleTrainerList::
|
|||
db OPP_JR_TRAINER_F
|
||||
db OPP_BEAUTY
|
||||
db OPP_COOLTRAINER_F
|
||||
db $FF
|
||||
db -1 ; end
|
||||
|
||||
EvilTrainerList::
|
||||
db OPP_JUGGLER_X
|
||||
|
|
@ -14,4 +14,4 @@ EvilTrainerList::
|
|||
db OPP_SCIENTIST
|
||||
db OPP_GIOVANNI
|
||||
db OPP_ROCKET
|
||||
db $FF
|
||||
db -1 ; end
|
||||
|
|
|
|||
|
|
@ -1,50 +1,57 @@
|
|||
move_choices: MACRO
|
||||
REPT _NARG
|
||||
db \1
|
||||
shift
|
||||
ENDR
|
||||
db 0 ; end
|
||||
ENDM
|
||||
|
||||
; move choice modification methods that are applied for each trainer class
|
||||
; 0 is sentinel value
|
||||
TrainerClassMoveChoiceModifications:
|
||||
db 0 ; YOUNGSTER
|
||||
db 1,0 ; BUG CATCHER
|
||||
db 1,0 ; LASS
|
||||
db 1,3,0 ; SAILOR
|
||||
db 1,0 ; JR_TRAINER_M
|
||||
db 1,0 ; JR_TRAINER_F
|
||||
db 1,2,3,0; POKEMANIAC
|
||||
db 1,2,0 ; SUPER_NERD
|
||||
db 1,0 ; HIKER
|
||||
db 1,0 ; BIKER
|
||||
db 1,3,0 ; BURGLAR
|
||||
db 1,0 ; ENGINEER
|
||||
db 1,2,0 ; JUGGLER_X
|
||||
db 1,3,0 ; FISHER
|
||||
db 1,3,0 ; SWIMMER
|
||||
db 0 ; CUE_BALL
|
||||
db 1,0 ; GAMBLER
|
||||
db 1,3,0 ; BEAUTY
|
||||
db 1,2,0 ; PSYCHIC_TR
|
||||
db 1,3,0 ; ROCKER
|
||||
db 1,0 ; JUGGLER
|
||||
db 1,0 ; TAMER
|
||||
db 1,0 ; BIRD_KEEPER
|
||||
db 1,0 ; BLACKBELT
|
||||
db 1,0 ; SONY1
|
||||
db 1,3,0 ; PROF_OAK
|
||||
db 1,2,0 ; CHIEF
|
||||
db 1,2,0 ; SCIENTIST
|
||||
db 1,3,0 ; GIOVANNI
|
||||
db 1,0 ; ROCKET
|
||||
db 1,3,0 ; COOLTRAINER_M
|
||||
db 1,3,0 ; COOLTRAINER_F
|
||||
db 1,0 ; BRUNO
|
||||
db 1,0 ; BROCK
|
||||
db 1,3,0 ; MISTY
|
||||
db 1,3,0 ; LT_SURGE
|
||||
db 1,3,0 ; ERIKA
|
||||
db 1,3,0 ; KOGA
|
||||
db 1,3,0 ; BLAINE
|
||||
db 1,3,0 ; SABRINA
|
||||
db 1,2,0 ; GENTLEMAN
|
||||
db 1,3,0 ; SONY2
|
||||
db 1,3,0 ; SONY3
|
||||
db 1,2,3,0; LORELEI
|
||||
db 1,0 ; CHANNELER
|
||||
db 1,0 ; AGATHA
|
||||
db 1,3,0 ; LANCE
|
||||
move_choices ; YOUNGSTER
|
||||
move_choices 1 ; BUG CATCHER
|
||||
move_choices 1 ; LASS
|
||||
move_choices 1, 3 ; SAILOR
|
||||
move_choices 1 ; JR_TRAINER_M
|
||||
move_choices 1 ; JR_TRAINER_F
|
||||
move_choices 1, 2, 3 ; POKEMANIAC
|
||||
move_choices 1, 2 ; SUPER_NERD
|
||||
move_choices 1 ; HIKER
|
||||
move_choices 1 ; BIKER
|
||||
move_choices 1, 3 ; BURGLAR
|
||||
move_choices 1 ; ENGINEER
|
||||
move_choices 1, 2 ; JUGGLER_X
|
||||
move_choices 1, 3 ; FISHER
|
||||
move_choices 1, 3 ; SWIMMER
|
||||
move_choices ; CUE_BALL
|
||||
move_choices 1 ; GAMBLER
|
||||
move_choices 1, 3 ; BEAUTY
|
||||
move_choices 1, 2 ; PSYCHIC_TR
|
||||
move_choices 1, 3 ; ROCKER
|
||||
move_choices 1 ; JUGGLER
|
||||
move_choices 1 ; TAMER
|
||||
move_choices 1 ; BIRD_KEEPER
|
||||
move_choices 1 ; BLACKBELT
|
||||
move_choices 1 ; SONY1
|
||||
move_choices 1, 3 ; PROF_OAK
|
||||
move_choices 1, 2 ; CHIEF
|
||||
move_choices 1, 2 ; SCIENTIST
|
||||
move_choices 1, 3 ; GIOVANNI
|
||||
move_choices 1 ; ROCKET
|
||||
move_choices 1, 3 ; COOLTRAINER_M
|
||||
move_choices 1, 3 ; COOLTRAINER_F
|
||||
move_choices 1 ; BRUNO
|
||||
move_choices 1 ; BROCK
|
||||
move_choices 1, 3 ; MISTY
|
||||
move_choices 1, 3 ; LT_SURGE
|
||||
move_choices 1, 3 ; ERIKA
|
||||
move_choices 1, 3 ; KOGA
|
||||
move_choices 1, 3 ; BLAINE
|
||||
move_choices 1, 3 ; SABRINA
|
||||
move_choices 1, 2 ; GENTLEMAN
|
||||
move_choices 1, 3 ; SONY2
|
||||
move_choices 1, 3 ; SONY3
|
||||
move_choices 1, 2, 3 ; LORELEI
|
||||
move_choices 1 ; CHANNELER
|
||||
move_choices 1 ; AGATHA
|
||||
move_choices 1, 3 ; LANCE
|
||||
|
|
|
|||
|
|
@ -1,37 +1,37 @@
|
|||
TrainerNamePointers:
|
||||
; what is the point of these?
|
||||
dw YoungsterName
|
||||
dw BugCatcherName
|
||||
dw LassName
|
||||
dw .YoungsterName
|
||||
dw .BugCatcherName
|
||||
dw .LassName
|
||||
dw wTrainerName
|
||||
dw JrTrainerMName
|
||||
dw JrTrainerFName
|
||||
dw PokemaniacName
|
||||
dw SuperNerdName
|
||||
dw .JrTrainerMName
|
||||
dw .JrTrainerFName
|
||||
dw .PokemaniacName
|
||||
dw .SuperNerdName
|
||||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
dw BurglarName
|
||||
dw EngineerName
|
||||
dw JugglerXName
|
||||
dw .BurglarName
|
||||
dw .EngineerName
|
||||
dw .JugglerXName
|
||||
dw wTrainerName
|
||||
dw SwimmerName
|
||||
dw .SwimmerName
|
||||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
dw BeautyName
|
||||
dw .BeautyName
|
||||
dw wTrainerName
|
||||
dw RockerName
|
||||
dw JugglerName
|
||||
dw .RockerName
|
||||
dw .JugglerName
|
||||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
dw BlackbeltName
|
||||
dw .BlackbeltName
|
||||
dw wTrainerName
|
||||
dw ProfOakName
|
||||
dw ChiefName
|
||||
dw ScientistName
|
||||
dw .ProfOakName
|
||||
dw .ChiefName
|
||||
dw .ScientistName
|
||||
dw wTrainerName
|
||||
dw RocketName
|
||||
dw CooltrainerMName
|
||||
dw CooltrainerFName
|
||||
dw .RocketName
|
||||
dw .CooltrainerMName
|
||||
dw .CooltrainerFName
|
||||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
|
|
@ -48,45 +48,24 @@ TrainerNamePointers:
|
|||
dw wTrainerName
|
||||
dw wTrainerName
|
||||
|
||||
YoungsterName:
|
||||
db "YOUNGSTER@"
|
||||
BugCatcherName:
|
||||
db "BUG CATCHER@"
|
||||
LassName:
|
||||
db "LASS@"
|
||||
JrTrainerMName:
|
||||
db "JR.TRAINER♂@"
|
||||
JrTrainerFName:
|
||||
db "JR.TRAINER♀@"
|
||||
PokemaniacName:
|
||||
db "POKéMANIAC@"
|
||||
SuperNerdName:
|
||||
db "SUPER NERD@"
|
||||
BurglarName:
|
||||
db "BURGLAR@"
|
||||
EngineerName:
|
||||
db "ENGINEER@"
|
||||
JugglerXName:
|
||||
db "JUGGLER@"
|
||||
SwimmerName:
|
||||
db "SWIMMER@"
|
||||
BeautyName:
|
||||
db "BEAUTY@"
|
||||
RockerName:
|
||||
db "ROCKER@"
|
||||
JugglerName:
|
||||
db "JUGGLER@"
|
||||
BlackbeltName:
|
||||
db "BLACKBELT@"
|
||||
ProfOakName:
|
||||
db "PROF.OAK@"
|
||||
ChiefName:
|
||||
db "CHIEF@"
|
||||
ScientistName:
|
||||
db "SCIENTIST@"
|
||||
RocketName:
|
||||
db "ROCKET@"
|
||||
CooltrainerMName:
|
||||
db "COOLTRAINER♂@"
|
||||
CooltrainerFName:
|
||||
db "COOLTRAINER♀@"
|
||||
.YoungsterName: db "YOUNGSTER@"
|
||||
.BugCatcherName: db "BUG CATCHER@"
|
||||
.LassName: db "LASS@"
|
||||
.JrTrainerMName: db "JR.TRAINER♂@"
|
||||
.JrTrainerFName: db "JR.TRAINER♀@"
|
||||
.PokemaniacName: db "POKéMANIAC@"
|
||||
.SuperNerdName: db "SUPER NERD@"
|
||||
.BurglarName: db "BURGLAR@"
|
||||
.EngineerName: db "ENGINEER@"
|
||||
.JugglerXName: db "JUGGLER@"
|
||||
.SwimmerName: db "SWIMMER@"
|
||||
.BeautyName: db "BEAUTY@"
|
||||
.RockerName: db "ROCKER@"
|
||||
.JugglerName: db "JUGGLER@"
|
||||
.BlackbeltName: db "BLACKBELT@"
|
||||
.ProfOakName: db "PROF.OAK@"
|
||||
.ChiefName: db "CHIEF@"
|
||||
.ScientistName: db "SCIENTIST@"
|
||||
.RocketName: db "ROCKET@"
|
||||
.CooltrainerMName: db "COOLTRAINER♂@"
|
||||
.CooltrainerFName: db "COOLTRAINER♀@"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,143 +1,55 @@
|
|||
pic_money: MACRO
|
||||
dw \1
|
||||
money \2
|
||||
ENDM
|
||||
|
||||
TrainerPicAndMoneyPointers::
|
||||
; trainer pic pointers and base money.
|
||||
; pic pointer, base reward money
|
||||
; money received after battle = base money × level of highest-level enemy mon
|
||||
dw YoungsterPic
|
||||
money 1500
|
||||
|
||||
dw BugCatcherPic
|
||||
money 1000
|
||||
|
||||
dw LassPic
|
||||
money 1500
|
||||
|
||||
dw SailorPic
|
||||
money 3000
|
||||
|
||||
dw JrTrainerMPic
|
||||
money 2000
|
||||
|
||||
dw JrTrainerFPic
|
||||
money 2000
|
||||
|
||||
dw PokemaniacPic
|
||||
money 5000
|
||||
|
||||
dw SuperNerdPic
|
||||
money 2500
|
||||
|
||||
dw HikerPic
|
||||
money 3500
|
||||
|
||||
dw BikerPic
|
||||
money 2000
|
||||
|
||||
dw BurglarPic
|
||||
money 9000
|
||||
|
||||
dw EngineerPic
|
||||
money 5000
|
||||
|
||||
dw JugglerPic
|
||||
money 3500
|
||||
|
||||
dw FisherPic
|
||||
money 3500
|
||||
|
||||
dw SwimmerPic
|
||||
money 500
|
||||
|
||||
dw CueBallPic
|
||||
money 2500
|
||||
|
||||
dw GamblerPic
|
||||
money 7000
|
||||
|
||||
dw BeautyPic
|
||||
money 7000
|
||||
|
||||
dw PsychicPic
|
||||
money 1000
|
||||
|
||||
dw RockerPic
|
||||
money 2500
|
||||
|
||||
dw JugglerPic
|
||||
money 3500
|
||||
|
||||
dw TamerPic
|
||||
money 4000
|
||||
|
||||
dw BirdKeeperPic
|
||||
money 2500
|
||||
|
||||
dw BlackbeltPic
|
||||
money 2500
|
||||
|
||||
dw Rival1Pic
|
||||
money 3500
|
||||
|
||||
dw ProfOakPic
|
||||
money 9900
|
||||
|
||||
dw ChiefPic
|
||||
money 3000
|
||||
|
||||
dw ScientistPic
|
||||
money 5000
|
||||
|
||||
dw GiovanniPic
|
||||
money 9900
|
||||
|
||||
dw RocketPic
|
||||
money 3000
|
||||
|
||||
dw CooltrainerMPic
|
||||
money 3500
|
||||
|
||||
dw CooltrainerFPic
|
||||
money 3500
|
||||
|
||||
dw BrunoPic
|
||||
money 9900
|
||||
|
||||
dw BrockPic
|
||||
money 9900
|
||||
|
||||
dw MistyPic
|
||||
money 9900
|
||||
|
||||
dw LtSurgePic
|
||||
money 9900
|
||||
|
||||
dw ErikaPic
|
||||
money 9900
|
||||
|
||||
dw KogaPic
|
||||
money 9900
|
||||
|
||||
dw BlainePic
|
||||
money 9900
|
||||
|
||||
dw SabrinaPic
|
||||
money 9900
|
||||
|
||||
dw GentlemanPic
|
||||
money 7000
|
||||
|
||||
dw Rival2Pic
|
||||
money 6500
|
||||
|
||||
dw Rival3Pic
|
||||
money 9900
|
||||
|
||||
dw LoreleiPic
|
||||
money 9900
|
||||
|
||||
dw ChannelerPic
|
||||
money 3000
|
||||
|
||||
dw AgathaPic
|
||||
money 9900
|
||||
|
||||
dw LancePic
|
||||
money 9900
|
||||
pic_money YoungsterPic, 1500
|
||||
pic_money BugCatcherPic, 1000
|
||||
pic_money LassPic, 1500
|
||||
pic_money SailorPic, 3000
|
||||
pic_money JrTrainerMPic, 2000
|
||||
pic_money JrTrainerFPic, 2000
|
||||
pic_money PokemaniacPic, 5000
|
||||
pic_money SuperNerdPic, 2500
|
||||
pic_money HikerPic, 3500
|
||||
pic_money BikerPic, 2000
|
||||
pic_money BurglarPic, 9000
|
||||
pic_money EngineerPic, 5000
|
||||
pic_money JugglerPic, 3500
|
||||
pic_money FisherPic, 3500
|
||||
pic_money SwimmerPic, 500
|
||||
pic_money CueBallPic, 2500
|
||||
pic_money GamblerPic, 7000
|
||||
pic_money BeautyPic, 7000
|
||||
pic_money PsychicPic, 1000
|
||||
pic_money RockerPic, 2500
|
||||
pic_money JugglerPic, 3500
|
||||
pic_money TamerPic, 4000
|
||||
pic_money BirdKeeperPic, 2500
|
||||
pic_money BlackbeltPic, 2500
|
||||
pic_money Rival1Pic, 3500
|
||||
pic_money ProfOakPic, 9900
|
||||
pic_money ChiefPic, 3000
|
||||
pic_money ScientistPic, 5000
|
||||
pic_money GiovanniPic, 9900
|
||||
pic_money RocketPic, 3000
|
||||
pic_money CooltrainerMPic, 3500
|
||||
pic_money CooltrainerFPic, 3500
|
||||
pic_money BrunoPic, 9900
|
||||
pic_money BrockPic, 9900
|
||||
pic_money MistyPic, 9900
|
||||
pic_money LtSurgePic, 9900
|
||||
pic_money ErikaPic, 9900
|
||||
pic_money KogaPic, 9900
|
||||
pic_money BlainePic, 9900
|
||||
pic_money SabrinaPic, 9900
|
||||
pic_money GentlemanPic, 7000
|
||||
pic_money Rival2Pic, 6500
|
||||
pic_money Rival3Pic, 9900
|
||||
pic_money LoreleiPic, 9900
|
||||
pic_money ChannelerPic, 3000
|
||||
pic_money AgathaPic, 9900
|
||||
pic_money LancePic, 9900
|
||||
|
|
|
|||
|
|
@ -1,32 +1,25 @@
|
|||
; unique moves for gym leaders
|
||||
LoneMoves:
|
||||
; these are used for gym leaders.
|
||||
; this is not automatic! you have to write the number you want to wLoneAttackNo
|
||||
; first. e.g., erika's script writes 4 to wLoneAttackNo to get mega drain,
|
||||
; pokemon index, move to give nth pokemon
|
||||
; this is not automatic! you have to write the index you want to [wLoneAttackNo]
|
||||
; first. e.g., erika's script writes 4 to [wLoneAttackNo] to get mega drain,
|
||||
; the fourth entry in the list.
|
||||
db 1, BIDE
|
||||
db 1, BUBBLEBEAM
|
||||
db 2, THUNDERBOLT
|
||||
db 2, MEGA_DRAIN
|
||||
db 3, TOXIC
|
||||
db 3, PSYWAVE
|
||||
db 3, FIRE_BLAST
|
||||
db 4, FISSURE
|
||||
|
||||
; first byte: pokemon in the trainer's party that gets the move
|
||||
; second byte: move
|
||||
; unterminated
|
||||
db 1,BIDE
|
||||
db 1,BUBBLEBEAM
|
||||
db 2,THUNDERBOLT
|
||||
db 2,MEGA_DRAIN
|
||||
db 3,TOXIC
|
||||
db 3,PSYWAVE
|
||||
db 3,FIRE_BLAST
|
||||
db 4,FISSURE
|
||||
|
||||
; unique moves for elite 4
|
||||
TeamMoves:
|
||||
; these are used for elite four.
|
||||
; this is automatic, based on trainer class.
|
||||
; don't be confused by LoneMoves above, the two data structures are
|
||||
; _completely_ unrelated.
|
||||
|
||||
; first byte: trainer (all trainers in this class have this move)
|
||||
; second byte: move
|
||||
; ff-terminated
|
||||
db LORELEI,BLIZZARD
|
||||
db BRUNO,FISSURE
|
||||
db AGATHA,TOXIC
|
||||
db LANCE,BARRIER
|
||||
db $FF
|
||||
; trainer, move
|
||||
; all trainers in this class are given this move automatically
|
||||
; (unrelated to LoneMoves)
|
||||
db LORELEI, BLIZZARD
|
||||
db BRUNO, FISSURE
|
||||
db AGATHA, TOXIC
|
||||
db LANCE, BARRIER
|
||||
db -1 ; end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue