diff --git a/README.md b/README.md index 6e30776..abcb542 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,12 @@ The Fairy-type does exist. - There is a new Nihon region, based on the 1998 version before it got scrapped for Johto. - The Fairy-type is now available, though Pokemon are not retroactively changed, per the Kanto Expansion Pak philosophy (you wouldn't want a Fairy-type Granbull pre-split, would you?) +## New Things +- 11 new Trainer classes, including; + - RBY classes not in GSC, such as the Rocker, Channeler, and even the beta Firefighter + - Prototype GSC classes such as the Male Teacher, Sportsman, and Soldier + - The Painter from FRLG! + ## QoL Changes - A Trader NPC is available in a new Lake of Rage town area, allowing you to access trade evolutions natively. - Kurt now makes Apricorn Balls instantly. He's had his coffee and is listening to his favourite music. @@ -32,6 +38,8 @@ The Fairy-type does exist. - Clock reset procedure is now like vanilla GS, requiring just Down + B. - Tilesets now handle up to 255 titles (from 192), allowing for slightly nicer maps. - Can now have up to 17 object events. +- Gen 6 Experience System! +- Poke Balls now all have unique palettes. ## Map Changes In general, there have been many wild encounter tweaks. View this document for details. (will link when hack is in a playable state) @@ -44,10 +52,12 @@ In general, there have been many wild encounter tweaks. View this document for d - Cerulean Cave has been restored, complete with a Mewtwo fight! - The Kanto Safari Zone map from the prototype has been restored. - The prototype Lake of Rage village has been restored, complete with an Evolution Stone shop and Trader NPC! In general, it's themed around Pokemon evolution. +- The Pokemon Communications Centre from JP GSC has been added and tweaked into a Regional Variant Trade hub, increasing with badge count. ## Item Changes - Many evolution stones have been added to accomodate the Pokemon featured here, including the Heart and Poison Stones from the SpaceWorld demo! - The Fairy Feather from Scarlet and Violet has been added to accomodate the Fairy type. +- The Antique Pot has been added to accomodate a Shuckle evolution! # Credits - Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps) diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index f3c769b..f7b60a4 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -710,6 +710,36 @@ DEF KRIS EQU __trainer_class__ trainerclass MYSTICALMAN ; 43 const EUSINE + + trainerclass CHANNELER ; 44 + const SHANNA + + trainerclass CUE_BALL ; 45 + const KIRBY ; That one Cleffa trainer. + + trainerclass ENGINEER ; 46 + const DASHU ; From Mandarin 大叔, literally meaning "uncle". Affectionately refers to middle-aged men, and is the name for the class in Chinese. + + trainerclass ROCKER ; 47 + const BOWIE ; David Bowie! + + trainerclass TAMER ; 48 + const MOE ; Ace Attorney reference + + trainerclass FIREFIGHTER ; 49 + const REMY ; I am in France and larping at the time of doing this + + trainerclass TEACHERM ; 50 + const DORNYEI ; Zoltan Dornyei, famous ELT teacher + + trainerclass PAINTER ; 51 + const RACHEL ; Could use Salvador Dali later, a surrealist painter. + + trainerclass SOLDIER ; 52 + const PEPPINO ; come on. COME ON. + + trainerclass SPORTSMAN ; 53 + const JACQUES ; also an ace attorney reference. DEF TOPAZ EQU __trainer_class__ DEF NUM_TRAINER_CLASSES EQU __trainer_class__ - 1 diff --git a/data/trainers/attributes.asm b/data/trainers/attributes.asm index 7054497..57dbefd 100644 --- a/data/trainers/attributes.asm +++ b/data/trainers/attributes.asm @@ -404,4 +404,64 @@ TrainerClassAttributes: dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY dw CONTEXT_USE | SWITCH_SOMETIMES +; Channeler + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS + dw CONTEXT_USE | SWITCH_SOMETIMES + +; Cue Ball + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS + dw CONTEXT_USE | SWITCH_SOMETIMES + +; ENGINEER + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS + dw CONTEXT_USE | SWITCH_SOMETIMES + +; Rocker + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS + dw CONTEXT_USE | SWITCH_SOMETIMES + +; Tamer + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS | AI_AGGRESSIVE + dw CONTEXT_USE | SWITCH_OFTEN + +; Firefighter + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS | AI_TYPES + dw CONTEXT_USE | SWITCH_SOMETIMES + +; Male 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 + +; Painter + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS | AI_SMART + dw CONTEXT_USE | SWITCH_SOMETIMES + +; Soldier + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS | AI_RISKY + dw CONTEXT_USE | SWITCH_SOMETIMES + +; SPORTSMAN + db NO_ITEM, NO_ITEM ; items + db 10 ; base reward + dw AI_BASIC | AI_CAUTIOUS | AI_STATUS + dw CONTEXT_USE | SWITCH_SOMETIMES + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/class_names.asm b/data/trainers/class_names.asm index 513d15e..69c2ae2 100644 --- a/data/trainers/class_names.asm +++ b/data/trainers/class_names.asm @@ -34,7 +34,7 @@ TrainerClassNames:: li "ROCKET" li "GENTLEMAN" li "SKIER" - li "TEACHER" + li "TEACHER♀" li "LEADER" li "BUG CATCHER" li "FISHER" @@ -68,4 +68,14 @@ TrainerClassNames:: li "OFFICER" li "ROCKET" li "MYSTICALMAN" + li "CHANNELER" + li "CUE BALL" + li "ENGINEER" + li "ROCKER" + li "TAMER" + li "FIREFIGHTER" + li "TEACHER♂" + li "PAINTER" + li "SOLDIER" + li "SPORTSMAN" assert_list_length NUM_TRAINER_CLASSES diff --git a/data/trainers/dvs.asm b/data/trainers/dvs.asm index 3e4999a..8a57c8a 100644 --- a/data/trainers/dvs.asm +++ b/data/trainers/dvs.asm @@ -43,8 +43,7 @@ TrainerClassDVs: dn 7, 8, 8, 8 ; SWIMMERF dn 9, 8, 8, 8 ; SAILOR dn 9, 8, 8, 8 ; SUPER_NERD -; BUG: RIVAL2 has lower DVs than RIVAL1 (see docs/bugs_and_glitches.md) - dn 9, 8, 8, 8 ; RIVAL2 + dn 13, 13, 13, 13 ; RIVAL2 dn 9, 8, 8, 8 ; GUITARIST dn 10, 8, 8, 8 ; HIKER dn 9, 8, 8, 8 ; BIKER @@ -70,4 +69,14 @@ TrainerClassDVs: dn 9, 8, 8, 8 ; OFFICER dn 7, 14, 10, 8 ; GRUNTF dn 9, 8, 8, 8 ; MYSTICALMAN + dn 7, 8, 8, 8 ; CHANNELER + dn 9, 8, 8, 8 ; CUE_BALL + dn 9, 8, 8, 8 ; ENGINEER + dn 9, 8, 8, 8 ; ROCKER + dn 9, 8, 8, 8 ; TAMER + dn 9, 8, 8, 8 ; FIREFIGHTER + dn 6, 8, 8, 8 ; TEACHERM + dn 9, 8, 8, 8 ; PAINTER + dn 9, 8, 8, 8 ; SOLDIER + dn 9, 8, 8, 8 ; SPORTSMAN assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/encounter_music.asm b/data/trainers/encounter_music.asm index 0266469..2cc6e62 100644 --- a/data/trainers/encounter_music.asm +++ b/data/trainers/encounter_music.asm @@ -71,7 +71,14 @@ TrainerEncounterMusic:: db MUSIC_HIKER_ENCOUNTER ; officer db MUSIC_ROCKET_ENCOUNTER ; gruntf db MUSIC_HIKER_ENCOUNTER ; mysticalman + db MUSIC_SAGE_ENCOUNTER ; channeler + db MUSIC_HIKER_ENCOUNTER ; cue ball + db MUSIC_HIKER_ENCOUNTER ; engineer + db MUSIC_HIKER_ENCOUNTER ; rocker + db MUSIC_HIKER_ENCOUNTER ; tamer + db MUSIC_HIKER_ENCOUNTER ; firefighter + db MUSIC_HIKER_ENCOUNTER ; teacherm + db MUSIC_LASS_ENCOUNTER ; painter + db MUSIC_HIKER_ENCOUNTER ; soldier + db MUSIC_HIKER_ENCOUNTER ; sportsman assert_table_length NUM_TRAINER_CLASSES + 1 - db MUSIC_HIKER_ENCOUNTER ; unused - db MUSIC_HIKER_ENCOUNTER ; unused - db MUSIC_HIKER_ENCOUNTER ; unused diff --git a/data/trainers/gendered_trainers.asm b/data/trainers/gendered_trainers.asm index c3ff6ff..6349738 100644 --- a/data/trainers/gendered_trainers.asm +++ b/data/trainers/gendered_trainers.asm @@ -26,6 +26,15 @@ MaleTrainers: db SAGE db BIKER db SCIENTIST + db MYSTICALMAN ; required when adding more trainers - imo though, they transcend gender + db CUE_BALL + db ENGINEER + db ROCKER + db TAMER + db FIREFIGHTER + db TEACHERM + db SOLDIER + db SPORTSMAN .End FemaleTrainers: @@ -39,4 +48,6 @@ FemaleTrainers: db KIMONO_GIRL db POKEFANF db COOLTRAINERF + db CHANNELER + db PAINTER .End diff --git a/data/trainers/genders.asm b/data/trainers/genders.asm index 230b292..9713543 100644 --- a/data/trainers/genders.asm +++ b/data/trainers/genders.asm @@ -69,4 +69,15 @@ BTTrainerClassGenders: db MALE ; BLUE db MALE ; OFFICER db FEMALE ; GRUNTF - assert_table_length NUM_TRAINER_CLASSES - 1 ; exclude MYSTICALMAN + db MALE ; MYSTICALMAN sorry gamer + db FEMALE ; CHANNELER + db MALE ; CUE_BALL + db MALE ; ENGINEER + db MALE ; ROCKER + db MALE ; TAMER + db MALE ; FIREFIGHTER + db MALE ; TEACHERM + db FEMALE ; PAINTER + db MALE ; SOLDIER + db MALE ; SPORTSMAN + assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/palettes.asm b/data/trainers/palettes.asm index d61b8c9..5473a6d 100644 --- a/data/trainers/palettes.asm +++ b/data/trainers/palettes.asm @@ -77,6 +77,16 @@ INCBIN "gfx/trainers/blue.gbcpal", middle_colors INCBIN "gfx/trainers/officer.gbcpal", middle_colors INCBIN "gfx/trainers/grunt_f.gbcpal", middle_colors INCBIN "gfx/trainers/mysticalman.gbcpal", middle_colors +INCBIN "gfx/trainers/channeler.gbcpal", middle_colors +INCBIN "gfx/trainers/cue_ball.gbcpal", middle_colors +INCBIN "gfx/trainers/engineer.gbcpal", middle_colors +INCBIN "gfx/trainers/rocker.gbcpal", middle_colors +INCBIN "gfx/trainers/tamer.gbcpal", middle_colors +INCBIN "gfx/trainers/firefighter.gbcpal", middle_colors +INCBIN "gfx/trainers/teacherm.gbcpal", middle_colors +INCBIN "gfx/trainers/painter.gbcpal", middle_colors +INCBIN "gfx/trainers/soldier.gbcpal", middle_colors +INCBIN "gfx/trainers/sportsman.gbcpal", middle_colors EnbyPalette: INCLUDE "gfx/player/topaz.pal" diff --git a/data/trainers/parties.asm b/data/trainers/parties.asm index 0e4f73d..0984190 100644 --- a/data/trainers/parties.asm +++ b/data/trainers/parties.asm @@ -5307,5 +5307,85 @@ MysticalmanGroup: dw ELECTRODE dw SCREECH, SONICBOOM, THUNDER, ROLLOUT db -1 ; end - + end_list_items + +; RBY / unused trainer types. Mostly placeholders. +ChannelerGroup: + next_list_item ; CHANNELER (1) + db "SHANNA@", TRAINERTYPE_NORMAL + db 23 + dw GASTLY + db -1 ; end + end_list_items + +CueBallGroup: + next_list_item ; CUE_BALL (1) + db "KIRBY@", TRAINERTYPE_NORMAL + db 23 + dw CLEFFA + db -1 ; end + end_list_items + +EngineerGroup: + next_list_item ; ENGINEER (1) + db "DASHU@", TRAINERTYPE_NORMAL + db 23 + dw MAGNEMITE + db -1 ; end + end_list_items + +RockerGroup: + next_list_item ; ROCKER (1) + db "BOWIE@", TRAINERTYPE_NORMAL + db 23 + dw VOLTORB + db -1 ; end + end_list_items + +TamerGroup: + next_list_item ; TAMER (1) + db "MOE@", TRAINERTYPE_NORMAL + db 23 + dw TAUROS + db -1 ; end + end_list_items + +FirefighterGroup: + next_list_item ; FIREFIGHTER (1) + db "REMY@", TRAINERTYPE_NORMAL + db 23 + dw POLIWAG + db -1 ; end + end_list_items + +TeacherMGroup: + next_list_item ; TEACHERM (1) + db "DORNYEI@", TRAINERTYPE_NORMAL + db 23 + dw BLISSEY + db -1 ; end + end_list_items + +PainterGroup: + next_list_item ; PAINTER (1) + db "RACHEL@", TRAINERTYPE_NORMAL + db 23 + dw SMEARGLE + db -1 ; end + end_list_items + +SoldierGroup: + next_list_item ; SOLDIER (1) + db "PEPPINO@", TRAINERTYPE_NORMAL + db 23 + dw FORRETRESS + db -1 ; end + end_list_items + +SportsmanGroup: + next_list_item ; SPORTSMAN (1) + db "JACQUES@", TRAINERTYPE_NORMAL + db 23 + dw DODUO + db -1 ; end end_list_items diff --git a/data/trainers/party_pointers.asm b/data/trainers/party_pointers.asm index c811b14..af75877 100644 --- a/data/trainers/party_pointers.asm +++ b/data/trainers/party_pointers.asm @@ -70,4 +70,14 @@ TrainerGroups: dba OfficerGroup dba GruntFGroup dba MysticalmanGroup + dba ChannelerGroup + dba CueBallGroup + dba EngineerGroup + dba RockerGroup + dba TamerGroup + dba FirefighterGroup + dba TeacherMGroup + dba PainterGroup + dba SoldierGroup + dba SportsmanGroup assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/pic_pointers.asm b/data/trainers/pic_pointers.asm index c22072c..435395b 100644 --- a/data/trainers/pic_pointers.asm +++ b/data/trainers/pic_pointers.asm @@ -70,4 +70,14 @@ TrainerPicPointers:: dba OfficerPic dba GruntfPic dba MysticalmanPic + dba ChannelerPic + dba CueBallPic + dba EngineerPic + dba RockerPic + dba TamerPic + dba FirefighterPic + dba TeacherMPic + dba PainterPic + dba SoldierPic + dba SportsmanPic assert_table_length NUM_TRAINER_CLASSES diff --git a/data/trainers/sprites.asm b/data/trainers/sprites.asm index e1ce653..da1fa4e 100644 --- a/data/trainers/sprites.asm +++ b/data/trainers/sprites.asm @@ -67,4 +67,15 @@ BTTrainerClassSprites: db SPRITE_BLUE db SPRITE_OFFICER db SPRITE_ROCKET_GIRL - assert_table_length NUM_TRAINER_CLASSES - 1 ; exclude MYSTICALMAN + db SPRITE_SUPER_NERD ; placeholder for mysticalman eusine + db SPRITE_KAREN ; placeholder until the channeler overworld sprite is added. + db SPRITE_BIKER ; Cue Ball + db SPRITE_POKEFAN_M ; Engineer + db SPRITE_ROCKER ; Rocker + db SPRITE_POKEFAN_M ; Tamer + db SPRITE_POKEFAN_M ; Firefighter + db SPRITE_POKEFAN_M ; Teacher M + db SPRITE_LASS ; Painter + db SPRITE_ROCKER ; Soldier + db SPRITE_SAILOR ; Sportsman uhhh + assert_table_length NUM_TRAINER_CLASSES diff --git a/gfx/pics.asm b/gfx/pics.asm index dd0df88..addd8cc 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -950,3 +950,15 @@ MagipreyFrontpic: INCBIN "gfx/pokemon/magiprey/front.animated.2bpp.lz" MagipreyBackpic: INCBIN "gfx/pokemon/magiprey/back.2bpp.lz" TerradosFrontpic: INCBIN "gfx/pokemon/terrados/front.animated.2bpp.lz" TerradosBackpic: INCBIN "gfx/pokemon/terrados/back.2bpp.lz" + +; RBY/unused trainer Pics +ChannelerPic: INCBIN "gfx/trainers/channeler.2bpp.lz" +CueBallPic: INCBIN "gfx/trainers/cue_ball.2bpp.lz" +EngineerPic: INCBIN "gfx/trainers/engineer.2bpp.lz" +RockerPic: INCBIN "gfx/trainers/rocker.2bpp.lz" +TamerPic: INCBIN "gfx/trainers/tamer.2bpp.lz" +FirefighterPic: INCBIN "gfx/trainers/firefighter.2bpp.lz" +TeacherMPic: INCBIN "gfx/trainers/teacherm.2bpp.lz" +PainterPic: INCBIN "gfx/trainers/painter.2bpp.lz" +SoldierPic: INCBIN "gfx/trainers/soldier.2bpp.lz" +SportsmanPic: INCBIN "gfx/trainers/sportsman.2bpp.lz" diff --git a/gfx/trainers/channeler.png b/gfx/trainers/channeler.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/channeler.png differ diff --git a/gfx/trainers/cue_ball.png b/gfx/trainers/cue_ball.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/cue_ball.png differ diff --git a/gfx/trainers/engineer.png b/gfx/trainers/engineer.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/engineer.png differ diff --git a/gfx/trainers/firefighter.png b/gfx/trainers/firefighter.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/firefighter.png differ diff --git a/gfx/trainers/painter.png b/gfx/trainers/painter.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/painter.png differ diff --git a/gfx/trainers/rocker.png b/gfx/trainers/rocker.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/rocker.png differ diff --git a/gfx/trainers/soldier.png b/gfx/trainers/soldier.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/soldier.png differ diff --git a/gfx/trainers/sportsman.png b/gfx/trainers/sportsman.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/sportsman.png differ diff --git a/gfx/trainers/tamer.png b/gfx/trainers/tamer.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/tamer.png differ diff --git a/gfx/trainers/teacherm.png b/gfx/trainers/teacherm.png new file mode 100644 index 0000000..76a1e81 Binary files /dev/null and b/gfx/trainers/teacherm.png differ