11 new trainer classes

This adds the lost RBY trainer classes and a few unused ones. No sprites because I keep messing up the alpha channels among other things. I shall simply ask Martha.

Also spruced up the readme slightly.
This commit is contained in:
Llinos Evans 2024-07-08 00:14:17 +01:00
parent f53559e4e4
commit 1e629ebc1a
24 changed files with 290 additions and 9 deletions

View file

@ -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. - 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?) - 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 ## QoL Changes
- A Trader NPC is available in a new Lake of Rage town area, allowing you to access trade evolutions natively. - 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. - 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. - 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. - Tilesets now handle up to 255 titles (from 192), allowing for slightly nicer maps.
- Can now have up to 17 object events. - Can now have up to 17 object events.
- Gen 6 Experience System!
- Poke Balls now all have unique palettes.
## Map Changes ## 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) 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! - Cerulean Cave has been restored, complete with a Mewtwo fight!
- The Kanto Safari Zone map from the prototype has been restored. - 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 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 ## Item Changes
- Many evolution stones have been added to accomodate the Pokemon featured here, including the Heart and Poison Stones from the SpaceWorld demo! - 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 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 # Credits
- Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps) - Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps)

View file

@ -711,5 +711,35 @@ DEF KRIS EQU __trainer_class__
trainerclass MYSTICALMAN ; 43 trainerclass MYSTICALMAN ; 43
const EUSINE 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 TOPAZ EQU __trainer_class__
DEF NUM_TRAINER_CLASSES EQU __trainer_class__ - 1 DEF NUM_TRAINER_CLASSES EQU __trainer_class__ - 1

View file

@ -404,4 +404,64 @@ TrainerClassAttributes:
dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY dw AI_BASIC | AI_SETUP | AI_SMART | AI_AGGRESSIVE | AI_CAUTIOUS | AI_STATUS | AI_RISKY
dw CONTEXT_USE | SWITCH_SOMETIMES 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 assert_table_length NUM_TRAINER_CLASSES

View file

@ -34,7 +34,7 @@ TrainerClassNames::
li "ROCKET" li "ROCKET"
li "GENTLEMAN" li "GENTLEMAN"
li "SKIER" li "SKIER"
li "TEACHER" li "TEACHER"
li "LEADER" li "LEADER"
li "BUG CATCHER" li "BUG CATCHER"
li "FISHER" li "FISHER"
@ -68,4 +68,14 @@ TrainerClassNames::
li "OFFICER" li "OFFICER"
li "ROCKET" li "ROCKET"
li "MYSTICALMAN" 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 assert_list_length NUM_TRAINER_CLASSES

View file

@ -43,8 +43,7 @@ TrainerClassDVs:
dn 7, 8, 8, 8 ; SWIMMERF dn 7, 8, 8, 8 ; SWIMMERF
dn 9, 8, 8, 8 ; SAILOR dn 9, 8, 8, 8 ; SAILOR
dn 9, 8, 8, 8 ; SUPER_NERD dn 9, 8, 8, 8 ; SUPER_NERD
; BUG: RIVAL2 has lower DVs than RIVAL1 (see docs/bugs_and_glitches.md) dn 13, 13, 13, 13 ; RIVAL2
dn 9, 8, 8, 8 ; RIVAL2
dn 9, 8, 8, 8 ; GUITARIST dn 9, 8, 8, 8 ; GUITARIST
dn 10, 8, 8, 8 ; HIKER dn 10, 8, 8, 8 ; HIKER
dn 9, 8, 8, 8 ; BIKER dn 9, 8, 8, 8 ; BIKER
@ -70,4 +69,14 @@ TrainerClassDVs:
dn 9, 8, 8, 8 ; OFFICER dn 9, 8, 8, 8 ; OFFICER
dn 7, 14, 10, 8 ; GRUNTF dn 7, 14, 10, 8 ; GRUNTF
dn 9, 8, 8, 8 ; MYSTICALMAN 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 assert_table_length NUM_TRAINER_CLASSES

View file

@ -71,7 +71,14 @@ TrainerEncounterMusic::
db MUSIC_HIKER_ENCOUNTER ; officer db MUSIC_HIKER_ENCOUNTER ; officer
db MUSIC_ROCKET_ENCOUNTER ; gruntf db MUSIC_ROCKET_ENCOUNTER ; gruntf
db MUSIC_HIKER_ENCOUNTER ; mysticalman 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 assert_table_length NUM_TRAINER_CLASSES + 1
db MUSIC_HIKER_ENCOUNTER ; unused
db MUSIC_HIKER_ENCOUNTER ; unused
db MUSIC_HIKER_ENCOUNTER ; unused

View file

@ -26,6 +26,15 @@ MaleTrainers:
db SAGE db SAGE
db BIKER db BIKER
db SCIENTIST 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 .End
FemaleTrainers: FemaleTrainers:
@ -39,4 +48,6 @@ FemaleTrainers:
db KIMONO_GIRL db KIMONO_GIRL
db POKEFANF db POKEFANF
db COOLTRAINERF db COOLTRAINERF
db CHANNELER
db PAINTER
.End .End

View file

@ -69,4 +69,15 @@ BTTrainerClassGenders:
db MALE ; BLUE db MALE ; BLUE
db MALE ; OFFICER db MALE ; OFFICER
db FEMALE ; GRUNTF 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

View file

@ -77,6 +77,16 @@ INCBIN "gfx/trainers/blue.gbcpal", middle_colors
INCBIN "gfx/trainers/officer.gbcpal", middle_colors INCBIN "gfx/trainers/officer.gbcpal", middle_colors
INCBIN "gfx/trainers/grunt_f.gbcpal", middle_colors INCBIN "gfx/trainers/grunt_f.gbcpal", middle_colors
INCBIN "gfx/trainers/mysticalman.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: EnbyPalette:
INCLUDE "gfx/player/topaz.pal" INCLUDE "gfx/player/topaz.pal"

View file

@ -5307,5 +5307,85 @@ MysticalmanGroup:
dw ELECTRODE dw ELECTRODE
dw SCREECH, SONICBOOM, THUNDER, ROLLOUT dw SCREECH, SONICBOOM, THUNDER, ROLLOUT
db -1 ; end 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 end_list_items

View file

@ -70,4 +70,14 @@ TrainerGroups:
dba OfficerGroup dba OfficerGroup
dba GruntFGroup dba GruntFGroup
dba MysticalmanGroup 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 assert_table_length NUM_TRAINER_CLASSES

View file

@ -70,4 +70,14 @@ TrainerPicPointers::
dba OfficerPic dba OfficerPic
dba GruntfPic dba GruntfPic
dba MysticalmanPic 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 assert_table_length NUM_TRAINER_CLASSES

View file

@ -67,4 +67,15 @@ BTTrainerClassSprites:
db SPRITE_BLUE db SPRITE_BLUE
db SPRITE_OFFICER db SPRITE_OFFICER
db SPRITE_ROCKET_GIRL 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

View file

@ -950,3 +950,15 @@ MagipreyFrontpic: INCBIN "gfx/pokemon/magiprey/front.animated.2bpp.lz"
MagipreyBackpic: INCBIN "gfx/pokemon/magiprey/back.2bpp.lz" MagipreyBackpic: INCBIN "gfx/pokemon/magiprey/back.2bpp.lz"
TerradosFrontpic: INCBIN "gfx/pokemon/terrados/front.animated.2bpp.lz" TerradosFrontpic: INCBIN "gfx/pokemon/terrados/front.animated.2bpp.lz"
TerradosBackpic: INCBIN "gfx/pokemon/terrados/back.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"

BIN
gfx/trainers/channeler.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/cue_ball.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/engineer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/painter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/rocker.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/soldier.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/sportsman.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/tamer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

BIN
gfx/trainers/teacherm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B