diff --git a/constants/event_flags.asm b/constants/event_flags.asm index 3ee9147..caa497f 100644 --- a/constants/event_flags.asm +++ b/constants/event_flags.asm @@ -1090,7 +1090,19 @@ const EVENT_BEAT_SAGE_MASA const EVENT_BEAT_SAGE_KOJI ; New trainers - const EVENT_BEAT_CHANNELER_SHANNA ; unused + const EVENT_BEAT_CHANNELER_SHANNA + const EVENT_BEAT_CHANNELER_GENMEI + const EVENT_BEAT_CHANNELER_HIMIKO + const EVENT_BEAT_CHANNELER_ARE + const EVENT_BEAT_CHANNELER_AMANDA + const EVENT_BEAT_CHANNELER_KARINA + const EVENT_BEAT_CHANNELER_LAUREL + const EVENT_BEAT_CHANNELER_JANAE + const EVENT_BEAT_CHANNELER_TAMMY + const EVENT_BEAT_CHANNELER_TASHA + const EVENT_BEAT_CHANNELER_REIMU + const EVENT_BEAT_CHANNELER_SANAE + const EVENT_BEAT_CUE_BALL_KIRBY ; unused const EVENT_BEAT_ENGINEER_DASHU const EVENT_BEAT_ROCKER_BOWIE ; unused @@ -1098,7 +1110,7 @@ const EVENT_BEAT_FIREFIGHTER_REMY ; unused const EVENT_BEAT_TEACHERM_DORNYEI ; unused const EVENT_BEAT_PAINTER_RACHEL ; unused - const EVENT_BEAT_PAINTER_DALI ; unused + const EVENT_BEAT_PAINTER_DALI const EVENT_BEAT_SOLDIER_PEPPINO ; unused const EVENT_BEAT_SPORTSMAN_JACQUES ; unused const EVENT_BEAT_ELDER_LI diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm index 52d8902..8a30a27 100644 --- a/constants/trainer_constants.asm +++ b/constants/trainer_constants.asm @@ -730,8 +730,20 @@ DEF KRIS EQU __trainer_class__ trainerclass MYSTICALMAN ; 43 const EUSINE + ; Some names are often taken from historical women in Shinto faith, given the appearance of the Channeler. Others are taken from FRLG/LGPE, which use consistent trainer names. trainerclass CHANNELER ; 44 - const SHANNA ; unused + const SHANNA ; a random name i came up with when adding the classes that stuck, any fire emblem fans? + const GENMEI ; 43rd monarch of japan associated with shintoism + const HIMIKO ; shaman queen of japan from yamatai, japan, in c.180-247 AD + const ARE ; a Shinto shrine maiden said to have assisted in the creation of Kojiki, a famous Japanese text. + const AMANDA ; FRLG/LGPE + const KARINA ; FRLG/LGPE + const LAUREL ; FRLG/LGPE + const JANAE ; FRLG/LGPE + const TAMMY ; FRLG/LGPE + const TASHA ; FRLG/LGPE + const REIMU ; Touhou character known to carry a Gohei, which Channelers carry. + const SANAE ; Likewise. trainerclass CUE_BALL ; 45 const KIRBY ; unused, that one Cleffa trainer. diff --git a/data/trainers/parties_new_classes.asm b/data/trainers/parties_new_classes.asm index 9164034..351d6da 100644 --- a/data/trainers/parties_new_classes.asm +++ b/data/trainers/parties_new_classes.asm @@ -1,11 +1,96 @@ SECTION "Enemy Trainer Parties 4", ROMX ; RBY / unused trainer types. Mostly placeholders. + +; Channelers are possessed by the spirits they are using. +; Thus, we will keep to the 1-2 Pokemon limit seen in RBY/FRLG/LGPE. +; Also because Lavender Crypt is ridiculous, but that's another story. +; However, with more ghosts and general associations, they're a bit more varied this time. ChannelerGroup: next_list_item ; CHANNELER (1) db "SHANNA@", TRAINERTYPE_NORMAL - db 23 - dw GASTLY + db 40 + dw HAUNTER + db -1 ; end + + ; These next three will be stronger than usual. + next_list_item ; CHANNELER (2) + db "GENMEI@", TRAINERTYPE_ITEM + db 45 + dw MAROWAK ; references the Cubone's mother from RBY. + db THICK_CLUB ; jumpscare + db -1 ; end + + next_list_item ; CHANNELER (3) + db "HIMIKO@", TRAINERTYPE_NORMAL + db 45 + dw NINETALES ; Inari, the vixen kitsune rice goddess. + db -1 ; end + + next_list_item ; CHANNELER (4) + db "ARE@", TRAINERTYPE_NORMAL + db 45 + dw MISMAGIUS + db -1 ; end + + next_list_item ; CHANNELER (5) + db "AMANDA@", TRAINERTYPE_NORMAL + db 40 + dw GASTLY ; keep in mind this Pokemon isn't exactly weak + db 40 + dw HAUNTER + db -1 ; end + + next_list_item ; CHANNELER (6) + db "KARINA@", TRAINERTYPE_NORMAL + db 40 + dw BIPULLA + db 40 + dw HAUNTER + db -1 ; end + + next_list_item ; CHANNELER (7) + db "LAUREL@", TRAINERTYPE_NORMAL + db 40 + dw WISPIRIT + db -1 ; end + + next_list_item ; CHANNELER (8) + db "JANAE@", TRAINERTYPE_NORMAL + db 40 + dw WISPIRIT + db -1 ; end + + next_list_item ; CHANNELER (9) + db "TAMMY@", TRAINERTYPE_NORMAL + db 40 + dw HAUNTER + db 40 + dw HAUNTER + db -1 ; end + + next_list_item ; CHANNELER (10) + db "TASHA@", TRAINERTYPE_NORMAL + db 40 + dw STROMEN + db -1 ; end + + ; These two aren't possessed, they're Shinto priestesses trying to seal the boss of the Lavender Crypt. + ; They're also Touhou references. + next_list_item ; CHANNELER (11) + db "REIMU@", TRAINERTYPE_NORMAL + db 40 + dw GOROTORA + db 40 + dw GAVILLAIN + db -1 ; end + + next_list_item ; CHANNELER (12) + db "SANAE@", TRAINERTYPE_NORMAL + db 40 + dw ARBOK + db 40 + dw POLITOED db -1 ; end end_list_items diff --git a/maps/EcruteakGym.asm b/maps/EcruteakGym.asm index c797e39..2c2e71e 100644 --- a/maps/EcruteakGym.asm +++ b/maps/EcruteakGym.asm @@ -432,7 +432,7 @@ EcruteakGym_MapEvents: object_event 5, 1, SPRITE_MORTY, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_SCRIPT, 0, EcruteakGymMortyScript, -1 object_event 2, 7, SPRITE_SAGE, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 1, TrainerSageJeffrey, -1 object_event 3, 13, SPRITE_SAGE, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_TRAINER, 3, TrainerSagePing, -1 - object_event 7, 5, SPRITE_MEDIUM, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 1, TrainerMediumMartha, -1 - object_event 7, 9, SPRITE_MEDIUM, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 1, TrainerMediumGrace, -1 + object_event 7, 5, SPRITE_MEDIUM, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 1, TrainerMediumMartha, -1 + object_event 7, 9, SPRITE_MEDIUM, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 1, TrainerMediumGrace, -1 object_event 7, 15, SPRITE_GYM_GUIDE, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, EcruteakGymGuideScript, -1 object_event 4, 14, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_SCRIPT, 0, ObjectEvent, EVENT_ECRUTEAK_GYM_GRAMPS diff --git a/maps/LavenderCrypt.asm b/maps/LavenderCrypt.asm index 338ab57..490683b 100644 --- a/maps/LavenderCrypt.asm +++ b/maps/LavenderCrypt.asm @@ -5,6 +5,60 @@ LavenderCrypt_MapScripts: def_callbacks +TrainerChannelerReimu: + trainer CHANNELER, REIMU, EVENT_BEAT_CHANNELER_REIMU, ChannelerReimuSeenText, ChannelerReimuBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerReimuAfterBattleText + waitbutton + closetext + end + +ChannelerReimuSeenText: + text "Halt! This place" + line "is full of GHOSTs!" + done + +ChannelerReimuBeatenText: + text "What the--" + done + +ChannelerReimuAfterBattleText: + text "To be honest, I" + line "didn't want to" + cont "work today!" + + para "Thank you!" + done + +TrainerChannelerSanae: + trainer CHANNELER, SANAE, EVENT_BEAT_CHANNELER_SANAE, ChannelerSanaeSeenText, ChannelerReimuBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerSanaeAfterBattleText + waitbutton + closetext + end + +ChannelerSanaeSeenText: + text "Hey! That monster" + line "is mine!" + done + +ChannelerSanaeBeatenText: + text "Grr…" + done + +ChannelerSanaeAfterBattleText: + text "Tch! I wanted" + line "to seal that" + cont "beast myself!" + done + LavenderCrypt_MapEvents: db 0, 0 ; filler @@ -20,4 +74,6 @@ LavenderCrypt_MapEvents: def_bg_events - def_object_events \ No newline at end of file + def_object_events + object_event 6, 6, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 4, TrainerChannelerReimu, -1 + object_event 3, 6, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 4, TrainerChannelerSanae, -1 \ No newline at end of file diff --git a/maps/LavenderCryptSet1.asm b/maps/LavenderCryptSet1.asm index 0d9b9aa..79fcb40 100644 --- a/maps/LavenderCryptSet1.asm +++ b/maps/LavenderCryptSet1.asm @@ -5,6 +5,126 @@ LavenderCryptSet1_MapScripts: def_callbacks +TrainerChannelerGenmei: ; top left + trainer CHANNELER, GENMEI, EVENT_BEAT_CHANNELER_GENMEI, ChannelerGenmeiSeenText, ChannelerReimuBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerGenmeiAfterBattleText + waitbutton + closetext + end + +ChannelerGenmeiSeenText: + text "Ke… ke…" + line "Ke… ke…" + done + +ChannelerGenmeiBeatenText: + text "Kwah!" + done + +ChannelerGenmeiAfterBattleText: + text "Was that a GHOST?" + + para "GHOST? Ah…" + + para "I saw something" + line "go in the left" + cont "hole!" + done + +TrainerChannelerAmanda: ; top right + trainer CHANNELER, AMANDA, EVENT_BEAT_CHANNELER_AMANDA, ChannelerAmandaSeenText, ChannelerAmandaBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerAmandaAfterBattleText + waitbutton + closetext + end + +ChannelerAmandaSeenText: + text "Ngh… Kwaaah!" + done + +ChannelerAmandaBeatenText: + text "You saved me!" + done + +ChannelerAmandaAfterBattleText: + text "Bwaaah! That was" + line "too scary!" + + para "It went left!" + line "Or was it down…?" ; They won't always be reliable. + done + +TrainerChannelerLaurel: ; bottom left + trainer CHANNELER, LAUREL, EVENT_BEAT_CHANNELER_LAUREL, ChannelerLaurelSeenText, ChannelerLaurelBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerLaurelAfterBattleText + waitbutton + closetext + end + +ChannelerLaurelSeenText: + text "Kuh! Kuh! Fresh" + line "meat!" + done + +ChannelerLaurelBeatenText: + text "Eeyowch!" + done + +ChannelerLaurelAfterBattleText: + text "What was I saying?" + line "Such nonsense!" + + para "That cur went…" + line "err…south!" + done + +TrainerChannelerTasha: ; bottom right + trainer CHANNELER, TASHA, EVENT_BEAT_CHANNELER_TASHA, ChannelerTashaSeenText, ChannelerTashaBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerTashaAfterBattleText + waitbutton + closetext + end + +; This Channeler is possessed by a Stromen. +; Thus, I want her to be more aggressive than usual. +ChannelerTashaSeenText: + text "Grrrr! I hate" + line "you! I hate you!" + + para "Let the horror" + line "end!" + done + +ChannelerTashaBeatenText: + text "Huh? Who are you?" + done + +ChannelerTashaAfterBattleText: + text "I was overcome" + line "with such emotion…" + + para "I pity that GHOST." + + para "It retreated to" + line "the centre." + done + LavenderCryptSet1_MapEvents: db 0, 0 ; filler @@ -46,3 +166,7 @@ LavenderCryptSet1_MapEvents: def_bg_events def_object_events + object_event 5, 3, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 3, TrainerChannelerGenmei, -1 + object_event 20, 3, SPRITE_CHANNELER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 3, TrainerChannelerAmanda, -1 + object_event 21, 16, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 3, TrainerChannelerLaurel, -1 + object_event 3, 17, SPRITE_CHANNELER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerChannelerTasha, -1 diff --git a/maps/LavenderCryptSet2.asm b/maps/LavenderCryptSet2.asm index cb6b113..ccdcf8e 100644 --- a/maps/LavenderCryptSet2.asm +++ b/maps/LavenderCryptSet2.asm @@ -5,6 +5,94 @@ LavenderCryptSet2_MapScripts: def_callbacks +TrainerChannelerHimiko: ; Left + trainer CHANNELER, HIMIKO, EVENT_BEAT_CHANNELER_HIMIKO, ChannelerHimikoSeenText, ChannelerHimikoBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerHimikoAfterBattleText + waitbutton + closetext + end + +ChannelerHimikoSeenText: + text "Gagagak! This" + line "power is like" + cont "no other!" + done + +ChannelerHimikoBeatenText: + text "Bwoooah!" + done + +ChannelerHimikoAfterBattleText: + text "My sincerest apo-" + line "logies. I don't" + cont "know what came" + cont "over me." + + para "That GHOST didn't" + line "go too far. You" + cont "can catch it." + done + +TrainerChannelerShanna:; right + trainer CHANNELER, SHANNA, EVENT_BEAT_CHANNELER_SHANNA, ChannelerShannaSeenText, ChannelerShannaBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerShannaAfterBattleText + waitbutton + closetext + end + +ChannelerShannaSeenText: + text "Too much! Ack!" + line "Get awayyyy!" + done + +ChannelerShannaBeatenText: + text "Gasp… pant…" + done + +ChannelerShannaAfterBattleText: + text "Where did that" + line "thing come from?" + + para "I don't know!" + line "It's all too" + cont "much!" ; They don't all need to give hints either. + done + +TrainerChannelerKarina: ; bottom + trainer CHANNELER, KARINA, EVENT_BEAT_CHANNELER_KARINA, ChannelerKarinaSeenText, ChannelerKarinaBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerKarinaAfterBattleText + waitbutton + closetext + end + +ChannelerKarinaSeenText: + text "Light, light," + line "light, light…" + done + +ChannelerKarinaBeatenText: + text "Bright! Toooo" + line "bright!" + done + +ChannelerKarinaAfterBattleText: + text "Right! I mean" + line "right! It went" + cont "right!" + done + LavenderCryptSet2_MapEvents: db 0, 0 ; filler @@ -44,3 +132,6 @@ LavenderCryptSet2_MapEvents: def_bg_events def_object_events + object_event 8, 1, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 1, TrainerChannelerHimiko, -1 + object_event 12, 17, SPRITE_CHANNELER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerChannelerShanna, -1 + object_event 20, 6, SPRITE_CHANNELER, SPRITEMOVEDATA_SPINRANDOM_FAST, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerChannelerKarina, -1 diff --git a/maps/LavenderCryptSet3.asm b/maps/LavenderCryptSet3.asm index c55ffbb..36d74b1 100644 --- a/maps/LavenderCryptSet3.asm +++ b/maps/LavenderCryptSet3.asm @@ -5,6 +5,123 @@ LavenderCryptSet3_MapScripts: def_callbacks +TrainerChannelerAre: ; top left + trainer CHANNELER, ARE, EVENT_BEAT_CHANNELER_ARE, ChannelerAreSeenText, ChannelerAreBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerAreAfterBattleText + waitbutton + closetext + end + +ChannelerAreSeenText: + text "Ku… ku… ku…" + done + +ChannelerAreBeatenText: + text "Ah!" + done + +ChannelerAreAfterBattleText: + text "Keeeheheheh!" + line "Be cursed," + cont "mortal!" + + para "Just kidding." + line "That GHOST" + cont "went right." + done + +TrainerChannelerJanae: ; right + trainer CHANNELER, JANAE, EVENT_BEAT_CHANNELER_JANAE, ChannelerJanaeSeenText, ChannelerAmandaBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerJanaeAfterBattleText + waitbutton + closetext + end + +ChannelerJanaeSeenText: + text "Ngh…" + + para "Come with me!" + done + +ChannelerJanaeBeatenText: + text "Come! Now!" + + para "…huh?" + done + +ChannelerJanaeAfterBattleText: + text "What was that?" + + para "Um…I don't know" + line "where it went…" + done + +; spare, previous revision +;ChannelerTashaSeenText: +; text "Kyaah! Be cursed" +; line "with me, child!" +; done + +;ChannelerTashaBeatenText: +; text "Something fell" +; line "out!" ; RBY reference +; done + +;ChannelerTashaAfterBattleText: +; text "Eek! Eeeeek!" + +; para "I don't know!" + +; para "I looked over" +; line "some big hole" +; cont "and--" + +; para "Aghhh! I don't" +; line "want to remember!" +; done + +TrainerChannelerTammy: ; right + trainer CHANNELER, TAMMY, EVENT_BEAT_CHANNELER_TAMMY, ChannelerTammySeenText, ChannelerTammyBeatenText, 0, .AfterScript + +.AfterScript: + endifjustbattled + opentext + writetext ChannelerTammyAfterBattleText + waitbutton + closetext + end + +ChannelerTammySeenText: + text "Kyaah! Be cursed" + line "with me, child!" + done + +ChannelerTammyBeatenText: + text "Something fell" + line "out!" ; RBY reference + done + +ChannelerTammyAfterBattleText: + text "Eek! Eeeeek!" + + para "I don't know!" + + para "I looked over" + line "some big hole" + cont "and--" + + para "Aghhh! I don't" + line "want to remember!" + done + LavenderCryptSet3_MapEvents: db 0, 0 ; filler @@ -37,3 +154,6 @@ LavenderCryptSet3_MapEvents: def_bg_events def_object_events + object_event 4, 4, SPRITE_CHANNELER, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerChannelerAre, -1 + object_event 18, 12, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 3, TrainerChannelerJanae, -1 + object_event 22, 18, SPRITE_CHANNELER, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 4, TrainerChannelerTammy, -1 diff --git a/maps/PokemonPagoda2F.asm b/maps/PokemonPagoda2F.asm index 0c1117a..574f2bf 100644 --- a/maps/PokemonPagoda2F.asm +++ b/maps/PokemonPagoda2F.asm @@ -171,7 +171,7 @@ PokemonPagoda2F_MapEvents: bg_event 4, 0, BGEVENT_READ, PokemonPagoda2FStatue def_object_events - object_event 6, 6, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerMediumBethany, -1 - object_event 3, 6, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerMediumMargret, -1 - object_event 6, 3, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerMediumEthel, -1 - object_event 3, 3, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_BROWN, OBJECTTYPE_TRAINER, 2, TrainerMediumElsie, -1 + object_event 6, 6, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerMediumBethany, -1 + object_event 3, 6, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerMediumMargret, -1 + object_event 6, 3, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerMediumEthel, -1 + object_event 3, 3, SPRITE_MEDIUM, SPRITEMOVEDATA_SPINRANDOM_SLOW, 0, 0, -1, -1, PAL_NPC_EMOTE, OBJECTTYPE_TRAINER, 2, TrainerMediumElsie, -1