Added movements to follower messages. Movement credit: SonikkuA-DatH

This commit is contained in:
Ariel A 2021-12-31 16:10:01 -05:00
parent 149f4436c1
commit cf673fda9f
5 changed files with 883 additions and 304 deletions

View File

@ -7,45 +7,9 @@ gText_FollowerLostInThought::
gText_FollowerDefault::
.string "ERROR 404: Script not found.$"
gText_FollowerUnhappyToBeWet::
.string "{STR_VAR_1} looks unhappy to be wet.$"
gText_FollowerSplashesAround::
.string "{STR_VAR_1} splashes around happily!$"
gText_WantsToFly::
.string "{STR_VAR_1} looks up at the\nsky restlessly.\pWould you like to use FLY?$"
gText_FollowerUnhappyFace::
.string "{STR_VAR_1} is making an unhappy face...$"
gText_FollowerHappyRain::
.string "{STR_VAR_1} seems to be happy\nabout the rain!$"
gText_FollowerMetLocation::
.string "{STR_VAR_1} looks around fondly.\nIt seems familiar with this place.$"
gText_FollowerSkeptical::
.string "{STR_VAR_1} looks skeptical...\pWhat could it mean?$"
gText_FollowerAppraising::
.string "{STR_VAR_1} carefully follows behind.$"
gText_FollowerHappyWalk::
.string "{STR_VAR_1} skips happily behind you!$"
gText_FollowerAboutToFall::
.string "{STR_VAR_1} seems to be about\nto fall over!$"
gText_FollowerTryingToKeepUp::
.string "{STR_VAR_1} is trying very hard\nto keep up with you...$"
gText_FollowerIsShivering::
.string "{STR_VAR_1} is shivering.$"
gText_FollowerBurnPainful::
.string "{STR_VAR_1}'s burn looks painful!$'"
.macro playfirstmoncry
callfunc ScrFunc_playfirstmoncry
.endm
@ -83,49 +47,6 @@ EventScript_FollowerEnd::
release
end
EventScript_FollowerHappyWalk::
msgbox gText_FollowerHappyWalk, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerAppraising::
msgbox gText_FollowerAppraising, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerSkeptical::
msgbox gText_FollowerSkeptical, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerMetLocation::
applymovement 0xFE Common_Movement_QuestionMark
waitmoncry
waitmovement 0xFE
msgbox gText_FollowerMetLocation, MSGBOX_DEFAULT
return
EventScript_FollowerUnhappyFace::
msgbox gText_FollowerUnhappyFace, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerHappyRain::
msgbox gText_FollowerHappyRain, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerUnhappyToBeWet::
msgbox gText_FollowerUnhappyToBeWet, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerSplashesAbout::
applymovement 0xFE FollowerSplashMovement
waitmovement 0xFE
msgbox gText_FollowerSplashesAround, MSGBOX_DEFAULT
return
EventScript_FollowerLovesYou::
applymovement 0xFE ContestHall_Movement_Heart
waitmovement 0xFE
@ -133,26 +54,6 @@ EventScript_FollowerLovesYou::
msgbox gText_FollowerLovesYou, MSGBOX_DEFAULT
return
EventScript_FollowerAboutToFall::
msgbox gText_FollowerAboutToFall, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerTryingToKeepUp::
msgbox gText_FollowerTryingToKeepUp, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerIsShivering::
msgbox gText_FollowerIsShivering, MSGBOX_DEFAULT
waitmoncry
return
EventScript_FollowerBurnPainful::
msgbox gText_FollowerBurnPainful, MSGBOX_DEFAULT
waitmoncry
return
@ Message address must be loaded into bank 0
EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault
waitfieldeffect FLDEFF_EMOTE
@ -174,9 +75,573 @@ EnterPokeballMovement::
.byte 0x9F @ EnterPokeball
step_end
FollowerSplashMovement:: @ defined in movement.inc
@ Movement scripts below, movements are defined in movement.inc
FollowerSplashMovement::
jump_in_place_down
delay_4
jump_in_place_down
face_player
step_end
FollowerShiverVerticalMovement:
lock_facing_direction
slide_left
slide_right
slide_right
slide_left
unlock_facing_direction
step_end
FollowerShiverHorizontalMovement:
lock_facing_direction
slide_up
slide_down
slide_down
slide_up
unlock_facing_direction
step_end
FollowerNostalgiaMovement:
face_away_player
lock_facing_direction
jump_in_place_down
jump_in_place_down
jump_in_place_down
unlock_facing_direction
face_player
lock_facing_direction
jump_in_place_down
unlock_facing_direction
step_end
FollowerSkippingMovement:
lock_facing_direction
jump_in_place_down
delay_4
jump_in_place_down
unlock_facing_direction
step_end
FollowerJumpOnPlayerNorth:
jump_up
delay_4
lock_facing_direction
walk_fast_down
unlock_facing_direction
step_end
FollowerJumpOnPlayerSouth:
jump_down
delay_4
lock_facing_direction
walk_fast_up
unlock_facing_direction
step_end
FollowerJumpOnPlayerEast:
jump_right
delay_4
lock_facing_direction
walk_fast_left
unlock_facing_direction
step_end
FollowerJumpOnPlayerWest:
jump_left
delay_4
lock_facing_direction
walk_fast_right
unlock_facing_direction
step_end
FollowerCuddlingNorth:
face_left
lock_facing_direction
walk_up
walk_in_place_left
walk_in_place_left
unlock_facing_direction
walk_down
face_player
step_end
FollowerCuddlingSouth:
face_right
lock_facing_direction
walk_down
walk_in_place_right
walk_in_place_right
unlock_facing_direction
walk_up
face_player
step_end
FollowerCuddlingEast:
face_down
lock_facing_direction
walk_right
walk_in_place_down
walk_in_place_down
unlock_facing_direction
walk_left
face_player
step_end
FollowerCuddlingWest:
face_down
lock_facing_direction
walk_left
walk_in_place_down
walk_in_place_down
unlock_facing_direction
walk_right
face_player
step_end
FollowerGetCloserNorth:
walk_up
delay_16
lock_facing_direction
walk_down
unlock_facing_direction
step_end
FollowerGetCloserSouth:
walk_down
delay_16
lock_facing_direction
walk_up
unlock_facing_direction
step_end
FollowerGetCloserEast:
walk_right
delay_16
lock_facing_direction
walk_left
unlock_facing_direction
step_end
FollowerGetCloserWest:
walk_left
delay_16
lock_facing_direction
walk_right
unlock_facing_direction
step_end
FollowerPokeNorth:
walk_faster_up
delay_8
lock_facing_direction
walk_faster_down
delay_4
walk_faster_up
delay_4
walk_faster_down
unlock_facing_direction
step_end
FollowerPokeSouth:
walk_faster_down
delay_8
lock_facing_direction
walk_faster_up
delay_4
walk_faster_down
delay_4
walk_faster_up
unlock_facing_direction
step_end
FollowerPokeEast:
walk_faster_right
delay_8
lock_facing_direction
walk_faster_left
delay_4
walk_faster_right
delay_4
walk_faster_left
unlock_facing_direction
step_end
FollowerPokeWest:
walk_faster_left
delay_8
lock_facing_direction
walk_faster_right
delay_4
walk_faster_left
delay_4
walk_faster_right
unlock_facing_direction
step_end
FollowerLookAround:
face_away_player
delay_16
delay_16
face_left
delay_16
delay_16
face_up
delay_16
delay_16
face_down
delay_16
delay_16
step_end
FollowerLookAway:
face_away_player
delay_16
delay_16
step_end
FollowerLookAwayBark:
face_away_player
lock_facing_direction
jump_in_place_down
jump_in_place_down
unlock_facing_direction
step_end
FollowerLookAwayPokeG:
face_away_player
lock_facing_direction
walk_in_place_down
walk_in_place_down
walk_in_place_down
unlock_facing_direction
step_end
FollowerPokeGround:
lock_facing_direction
walk_in_place_down
walk_in_place_down
walk_in_place_down
unlock_facing_direction
step_end
FollowerStartled:
face_away_player
lock_facing_direction
jump_in_place_down
unlock_facing_direction
face_player
step_end
FollowerHopFast:
jump_in_place_up
jump_in_place_down
jump_in_place_left
jump_in_place_right
face_player
step_end
FollowerDizzy:
walk_in_place_left
walk_in_place_fast_right
walk_in_place_slow_up
walk_in_place_fast_down
delay_4
face_away_player
step_end
FollowerLookAroundScared:
face_up
delay_16
face_down
delay_16
face_left
delay_16
face_right
delay_16
face_up
delay_16
face_down
delay_16
face_left
delay_16
face_right
delay_16
face_player
step_end
FollowerDance:
lock_facing_direction
jump_in_place_up
unlock_facing_direction
walk_in_place_faster_up
walk_in_place_faster_left
walk_in_place_faster_down
walk_in_place_faster_right
walk_in_place_faster_up
walk_in_place_faster_left
walk_in_place_faster_down
walk_in_place_faster_right
walk_in_place_faster_up
walk_in_place_faster_left
walk_in_place_faster_down
walk_in_place_faster_right
walk_in_place_faster_up
walk_in_place_faster_left
walk_in_place_faster_down
walk_in_place_faster_right
walk_in_place_faster_up
walk_in_place_faster_left
walk_in_place_faster_down
walk_in_place_faster_right
jump_in_place_up
jump_in_place_down
jump_in_place_up
face_player
step_end
@ Movement scripts
EventScript_FollowerIsShivering::
compare VAR_FACING, DIR_NORTH
call_if_eq ShiverVertical
compare VAR_FACING, DIR_SOUTH
call_if_eq ShiverVertical
compare VAR_FACING, DIR_WEST
call_if_eq ShiverHorizontal
compare VAR_FACING, DIR_EAST
call_if_eq ShiverHorizontal
goto EventScript_FollowerGeneric
ShiverVertical:
applymovement 0xFE FollowerShiverVerticalMovement
waitmovement 0xFE
return
ShiverHorizontal:
applymovement 0xFE FollowerShiverHorizontalMovement
waitmovement 0xFE
return
EventScript_FollowerNostalgia::
applymovement 0xFE FollowerNostalgiaMovement
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerHopping::
applymovement 0xFE FollowerSkippingMovement
waitmovement 0xFE
goto EventScript_FollowerGeneric
JumpOnN:
applymovement 0xFE FollowerJumpOnPlayerNorth
waitmovement 0xFE
return
JumpOnS:
applymovement 0xFE FollowerJumpOnPlayerSouth
waitmovement 0xFE
return
JumpOnE:
applymovement 0xFE FollowerJumpOnPlayerEast
waitmovement 0xFE
return
JumpOnW:
applymovement 0xFE FollowerJumpOnPlayerWest
waitmovement 0xFE
return
EventScript_FollowerJumpOnPlayer::
compare VAR_FACING, DIR_NORTH
call_if_eq JumpOnS
compare VAR_FACING, DIR_SOUTH
call_if_eq JumpOnN
compare VAR_FACING, DIR_WEST
call_if_eq JumpOnE
compare VAR_FACING, DIR_EAST
call_if_eq JumpOnW
goto EventScript_FollowerGeneric
CuddleN:
applymovement 0xFE FollowerCuddlingNorth
waitmovement 0xFE
return
CuddleS:
applymovement 0xFE FollowerCuddlingSouth
waitmovement 0xFE
return
CuddleE:
applymovement 0xFE FollowerCuddlingEast
waitmovement 0xFE
return
CuddleW:
applymovement 0xFE FollowerCuddlingWest
waitmovement 0xFE
return
EventScript_FollowerCuddling:: @ similar to Std_MsgboxDefault
compare VAR_FACING, DIR_NORTH
call_if_eq CuddleS
compare VAR_FACING, DIR_SOUTH
call_if_eq CuddleN
compare VAR_FACING, DIR_WEST
call_if_eq CuddleE
compare VAR_FACING, DIR_EAST
call_if_eq CuddleW
goto EventScript_FollowerGeneric
ShCuddleN:
applymovement 0xFE FollowerShiverVerticalMovement
waitmovement 0xFE
applymovement 0xFE FollowerCuddlingNorth
waitmovement 0xFE
return
ShCuddleS:
applymovement 0xFE FollowerShiverVerticalMovement
waitmovement 0xFE
applymovement 0xFE FollowerCuddlingSouth
waitmovement 0xFE
return
ShCuddleE:
applymovement 0xFE FollowerShiverHorizontalMovement
waitmovement 0xFE
applymovement 0xFE FollowerCuddlingEast
waitmovement 0xFE
return
ShCuddleW:
applymovement 0xFE FollowerShiverHorizontalMovement
waitmovement 0xFE
applymovement 0xFE FollowerCuddlingWest
waitmovement 0xFE
return
EventScript_FollowerShiverCuddling::
compare VAR_FACING, DIR_NORTH
call_if_eq ShCuddleS
compare VAR_FACING, DIR_SOUTH
call_if_eq ShCuddleN
compare VAR_FACING, DIR_WEST
call_if_eq ShCuddleE
compare VAR_FACING, DIR_EAST
call_if_eq ShCuddleW
goto EventScript_FollowerGeneric
CreepCloserN:
applymovement 0xFE FollowerGetCloserNorth
waitmovement 0xFE
return
CreepCloserS:
applymovement 0xFE FollowerGetCloserSouth
waitmovement 0xFE
return
CreepCloserE:
applymovement 0xFE FollowerGetCloserEast
waitmovement 0xFE
return
CreepCloserW:
applymovement 0xFE FollowerGetCloserWest
waitmovement 0xFE
return
EventScript_FollowerGetCloser::
compare VAR_FACING, DIR_NORTH
call_if_eq CreepCloserS
compare VAR_FACING, DIR_SOUTH
call_if_eq CreepCloserN
compare VAR_FACING, DIR_WEST
call_if_eq CreepCloserE
compare VAR_FACING, DIR_EAST
call_if_eq CreepCloserW
goto EventScript_FollowerGeneric
PokePlayerN:
applymovement 0xFE FollowerGetCloserNorth
waitmovement 0xFE
return
PokePlayerS:
applymovement 0xFE FollowerGetCloserSouth
waitmovement 0xFE
return
PokePlayerE:
applymovement 0xFE FollowerGetCloserEast
waitmovement 0xFE
return
PokePlayerW:
applymovement 0xFE FollowerGetCloserWest
waitmovement 0xFE
return
EventScript_FollowerPokingPlayer::
compare VAR_FACING, DIR_NORTH
call_if_eq PokePlayerS
compare VAR_FACING, DIR_SOUTH
call_if_eq PokePlayerN
compare VAR_FACING, DIR_WEST
call_if_eq PokePlayerE
compare VAR_FACING, DIR_EAST
call_if_eq PokePlayerW
goto EventScript_FollowerGeneric
EventScript_FollowerLookAround::
applymovement 0xFE FollowerLookAround
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerLookAway::
applymovement 0xFE FollowerLookAway
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerLookAwayBark::
applymovement 0xFE FollowerLookAwayBark
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerLookAwayPoke::
applymovement 0xFE FollowerLookAwayPokeG
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerPokeGround::
applymovement 0xFE FollowerPokeGround
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerStartled::
applymovement 0xFE FollowerStartled
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerFastHopping::
applymovement 0xFE FollowerHopFast
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerDizzy::
applymovement 0xFE FollowerDizzy
waitmovement 0
goto EventScript_FollowerGeneric
EventScript_FollowerLookAroundScared::
applymovement 0xFE FollowerLookAroundScared
waitmovement 0xFE
goto EventScript_FollowerGeneric
EventScript_FollowerDance::
applymovement 0xFE FollowerDance
waitmovement 0
goto EventScript_FollowerGeneric

View File

@ -5,7 +5,7 @@
#define SPECIES_SHINY_TAG 500
#define N_FOLLOWER_HAPPY_MESSAGES 31
#define N_FOLLOWER_NEUTRAL_MESSAGES 15
#define N_FOLLOWER_NEUTRAL_MESSAGES 14
#define N_FOLLOWER_SAD_MESSAGES 3
#define N_FOLLOWER_UPSET_MESSAGES 3
#define N_FOLLOWER_ANGRY_MESSAGES 5
@ -13,7 +13,7 @@
#define N_FOLLOWER_LOVE_MESSAGES 10
#define N_FOLLOWER_SURPRISE_MESSAGES 20
#define N_FOLLOWER_CURIOUS_MESSAGES 7
#define N_FOLLOWER_MUSIC_MESSAGES 15
#define N_FOLLOWER_MUSIC_MESSAGES 14
#define N_FOLLOWER_POISONED_MESSAGES 1
#define MAX_TRAINER_ITEMS 4
@ -92,13 +92,19 @@ struct Trainer
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
struct FollowerMsgInfo {
const u8 *text;
const u8 *script;
};
struct FollowerMessagePool
{
const char * const * messages;
const struct FollowerMsgInfo * messages;
const u8 * script;
u16 length;
};
extern const u16 gMinigameDigits_Pal[];
extern const u32 gMinigameDigits_Gfx[];
@ -146,16 +152,16 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1];
// Follower text messages
extern const char * const gFollowerHappyMessages[];
extern const char * const gFollowerNeutralMessages[];
extern const char * const gFollowerSadMessages[];
extern const char * const gFollowerUpsetMessages[];
extern const char * const gFollowerAngryMessages[];
extern const char * const gFollowerPensiveMessages[];
extern const char * const gFollowerLoveMessages[];
extern const char * const gFollowerSurpriseMessages[];
extern const char * const gFollowerCuriousMessages[];
extern const char * const gFollowerMusicMessages[];
extern const char * const gFollowerPoisonedMessages[];
extern const struct FollowerMsgInfo gFollowerHappyMessages[];
extern const struct FollowerMsgInfo gFollowerNeutralMessages[];
extern const struct FollowerMsgInfo gFollowerSadMessages[];
extern const struct FollowerMsgInfo gFollowerUpsetMessages[];
extern const struct FollowerMsgInfo gFollowerAngryMessages[];
extern const struct FollowerMsgInfo gFollowerPensiveMessages[];
extern const struct FollowerMsgInfo gFollowerLoveMessages[];
extern const struct FollowerMsgInfo gFollowerSurpriseMessages[];
extern const struct FollowerMsgInfo gFollowerCuriousMessages[];
extern const struct FollowerMsgInfo gFollowerMusicMessages[];
extern const struct FollowerMsgInfo gFollowerPoisonedMessages[];
#endif // GUARD_DATA_H

View File

@ -2,22 +2,28 @@
#define GUARD_EVENT_SCRIPTS_H
extern const u8 EventScript_Follower[];
extern const u8 EventScript_FollowerUnhappyToBeWet[];
extern const u8 EventScript_FollowerSplashesAbout[];
extern const u8 EventScript_FollowerLovesYou[];
extern const u8 EventScript_FollowerUnhappyFace[];
extern const u8 EventScript_FollowerHappyRain[];
extern const u8 EventScript_FollowerMetLocation[];
extern const u8 EventScript_FollowerEnd[];
extern const u8 EventScript_FollowerSkeptical[];
extern const u8 EventScript_FollowerAppraising[];
extern const u8 EventScript_FollowerHappyWalk[];
extern const u8 EventScript_FollowerAboutToFall[];
extern const u8 EventScript_FollowerTryingToKeepUp[];
extern const u8 EventScript_FollowerIsShivering[];
extern const u8 EventScript_FollowerBurnPainful[];
extern const u8 EventScript_FollowerGeneric[];
extern const u8 EventScript_FollowerLove[];
extern const u8 EventScript_FollowerLovesYou[];
extern const u8 EventScript_FollowerIsShivering[];
extern const u8 EventScript_FollowerNostalgia[];
extern const u8 EventScript_FollowerHopping[];
extern const u8 EventScript_FollowerJumpOnPlayer[];
extern const u8 EventScript_FollowerCuddling[];
extern const u8 EventScript_FollowerShiverCuddling[];
extern const u8 EventScript_FollowerGetCloser[];
extern const u8 EventScript_FollowerPokingPlayer[];
extern const u8 EventScript_FollowerLookAround[];
extern const u8 EventScript_FollowerLookAway[];
extern const u8 EventScript_FollowerLookAwayBark[];
extern const u8 EventScript_FollowerLookAwayPoke[];
extern const u8 EventScript_FollowerPokeGround[];
extern const u8 EventScript_FollowerStartled[];
extern const u8 EventScript_FollowerFastHopping[];
extern const u8 EventScript_FollowerDizzy[];
extern const u8 EventScript_FollowerLookAroundScared[];
extern const u8 EventScript_FollowerDance[];
extern const u8 EnterPokeballMovement[];
extern const u8 EventScript_TestSignpostMsg[];

View File

@ -1,183 +1,298 @@
extern const u8 EventScript_FollowerIsShivering[];
extern const u8 EventScript_FollowerNostalgia[];
extern const u8 EventScript_FollowerHopping[];
extern const u8 EventScript_FollowerJumpOnPlayer[];
extern const u8 EventScript_FollowerCuddling[];
extern const u8 EventScript_FollowerShiverCuddling[];
extern const u8 EventScript_FollowerGetCloser[];
extern const u8 EventScript_FollowerPokingPlayer[];
extern const u8 EventScript_FollowerLookAround[];
extern const u8 EventScript_FollowerLookAway[];
extern const u8 EventScript_FollowerLookAwayBark[];
extern const u8 EventScript_FollowerLookAwayPoke[];
extern const u8 EventScript_FollowerPokeGround[];
extern const u8 EventScript_FollowerStartled[];
extern const u8 EventScript_FollowerFastHopping[];
extern const u8 EventScript_FollowerDizzy[];
extern const u8 EventScript_FollowerLookAroundScared[];
extern const u8 EventScript_FollowerDance[];
// 'Generic', unconditional happy messages
const char * const gFollowerHappyMessages[] = {
(const char []) _("{STR_VAR_1} began poking you in the\nstomach."),
(const char []) _("{STR_VAR_1} is happy but shy."),
(const char []) _("{STR_VAR_1} is coming along happily."),
(const char []) _("{STR_VAR_1} is composed."),
(const char []) _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!"),
(const char []) _("{STR_VAR_1} is glowing with health."),
(const char []) _("{STR_VAR_1} looks very happy."),
(const char []) _("{STR_VAR_1} put in extra effort."),
(const char []) _("{STR_VAR_1} is smelling the scents\nof the surrounding air."),
(const char []) _("{STR_VAR_1} is jumping for joy!"),
(const char []) _("{STR_VAR_1} is still feeling great!"),
(const char []) _("Your pokemon has caught the scent of\nsmoke."),
(const char []) _("{STR_VAR_1} is poking at your belly."),
(const char []) _("Your pokemon stretched out its body\nand is relaxing."),
(const char []) _("{STR_VAR_1} looks like it wants to\nlead!"),
(const char []) _("{STR_VAR_1} is doing it's best to\nkeep up with you."),
(const char []) _("{STR_VAR_1} is happily cuddling up\nto you!"),
(const char []) _("{STR_VAR_1} is full of life!"),
(const char []) _("{STR_VAR_1} seems to be very happy!"),
(const char []) _("{STR_VAR_1} is so happy that it\ncan't stand still!"),
(const char []) _("{STR_VAR_1} nodded slowly."),
(const char []) _("{STR_VAR_1} is very eager!"),
(const char []) _("{STR_VAR_1} is wandering around and\nlistening to the different sounds."),
(const char []) _("{STR_VAR_1} looks very interested."),
(const char []) _("{STR_VAR_1} is somehow forcing\nitself to keep going."),
(const char []) _("{STR_VAR_1} gave you a sunny look!"),
(const char []) _("{STR_VAR_1} gives you a happy look\nand a smile."),
(const char []) _("Your pokemon is smelling the scent\nof flowers."),
(const char []) _("{STR_VAR_1} seems very happy to see\nyou!"),
(const char []) _("{STR_VAR_1} faced this way and\ngrinned."),
(const char []) _("{STR_VAR_1} happily cuddled up to\nyou!"),
static const u8 sHappyMsg00[] = _("{STR_VAR_1} began poking you in the\nstomach.");
static const u8 sHappyMsg01[] = _("{STR_VAR_1} is happy but shy.");
static const u8 sHappyMsg02[] = _("{STR_VAR_1} is coming along happily.");
static const u8 sHappyMsg03[] = _("{STR_VAR_1} is composed.");
static const u8 sHappyMsg04[] = _("{STR_VAR_1} seems to be feeling\ngreat about walking with you!");
static const u8 sHappyMsg05[] = _("{STR_VAR_1} is glowing with health.");
static const u8 sHappyMsg06[] = _("{STR_VAR_1} looks very happy.");
static const u8 sHappyMsg07[] = _("{STR_VAR_1} put in extra effort.");
static const u8 sHappyMsg08[] = _("{STR_VAR_1} is smelling the scents\nof the surrounding air.");
static const u8 sHappyMsg09[] = _("{STR_VAR_1} is jumping for joy!");
static const u8 sHappyMsg10[] = _("{STR_VAR_1} is still feeling great!");
static const u8 sHappyMsg11[] = _("Your pokemon has caught the scent of\nsmoke.");
static const u8 sHappyMsg12[] = _("{STR_VAR_1} is poking at your belly.");
static const u8 sHappyMsg13[] = _("Your pokemon stretched out its body\nand is relaxing.");
static const u8 sHappyMsg14[] = _("{STR_VAR_1} looks like it wants to\nlead!");
static const u8 sHappyMsg15[] = _("{STR_VAR_1} is doing it's best to\nkeep up with you.");
static const u8 sHappyMsg16[] = _("{STR_VAR_1} is happily cuddling up\nto you!");
static const u8 sHappyMsg17[] = _("{STR_VAR_1} is full of life!");
static const u8 sHappyMsg18[] = _("{STR_VAR_1} seems to be very happy!");
static const u8 sHappyMsg19[] = _("{STR_VAR_1} is so happy that it\ncan't stand still!");
static const u8 sHappyMsg20[] = _("{STR_VAR_1} nodded slowly.");
static const u8 sHappyMsg21[] = _("{STR_VAR_1} is very eager!");
static const u8 sHappyMsg22[] = _("{STR_VAR_1} is wandering around and\nlistening to the different sounds.");
static const u8 sHappyMsg23[] = _("{STR_VAR_1} looks very interested.");
static const u8 sHappyMsg24[] = _("{STR_VAR_1} is somehow forcing\nitself to keep going.");
static const u8 sHappyMsg25[] = _("{STR_VAR_1} gave you a sunny look!");
static const u8 sHappyMsg26[] = _("{STR_VAR_1} gives you a happy look\nand a smile.");
static const u8 sHappyMsg27[] = _("Your pokemon is smelling the scent\nof flowers.");
static const u8 sHappyMsg28[] = _("{STR_VAR_1} seems very happy to see\nyou!");
static const u8 sHappyMsg29[] = _("{STR_VAR_1} faced this way and\ngrinned.");
static const u8 sHappyMsg30[] = _("{STR_VAR_1} happily cuddled up to\nyou!");
// Conditional messages begin here, index 31
(const char []) _("Your pokemon seems happy about the\ngreat weather."),
static const u8 sHappyMsg31[] = _("Your pokemon seems happy about the\ngreat weather.");
const struct FollowerMsgInfo gFollowerHappyMessages[] = {
{sHappyMsg00, EventScript_FollowerPokingPlayer},
{sHappyMsg01}, {sHappyMsg02}, {sHappyMsg03}, {sHappyMsg04}, {sHappyMsg05}, {sHappyMsg06}, {sHappyMsg07},
{sHappyMsg08, EventScript_FollowerLookAround},
{sHappyMsg09, EventScript_FollowerHopping},
{sHappyMsg10}, {sHappyMsg11},
{sHappyMsg12, EventScript_FollowerPokingPlayer},
{sHappyMsg13, EventScript_FollowerLookAround},
{sHappyMsg14}, {sHappyMsg15},
{sHappyMsg16, EventScript_FollowerCuddling},
{sHappyMsg17}, {sHappyMsg18},
{sHappyMsg19, EventScript_FollowerFastHopping},
{sHappyMsg20}, {sHappyMsg21}, {sHappyMsg22}, {sHappyMsg23}, {sHappyMsg24}, {sHappyMsg25}, {sHappyMsg26}, {sHappyMsg27}, {sHappyMsg28}, {sHappyMsg29},
{sHappyMsg30, EventScript_FollowerCuddling},
{sHappyMsg31},
};
// Unconditional neutral messages
const char * const gFollowerNeutralMessages[] = {
(const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."),
(const char []) _("{STR_VAR_1} is standing guard."),
(const char []) _("{STR_VAR_1} is staring patiently at\nnothing at all."),
(const char []) _("{STR_VAR_1} is wandering around."),
(const char []) _("Your pokemon yawned loudly!"),
(const char []) _("Your pokemon is looking around\nrestlessly."),
(const char []) _("{STR_VAR_1} is steadily poking at\nthe ground."),
(const char []) _("{STR_VAR_1} is looking this way and\nsmiling."),
(const char []) _("{STR_VAR_1} is gazing around\nrestlessly."),
(const char []) _("{STR_VAR_1} let out a battle cry."),
(const char []) _("{STR_VAR_1} danced a wonderful\ndance!"),
(const char []) _("{STR_VAR_1} is very eager."),
(const char []) _("{STR_VAR_1} is staring intently into\nthe distance."),
(const char []) _("{STR_VAR_1} is on the lookout!"),
(const char []) _("{STR_VAR_1} looked off into the\ndistance and barked!"),
static const u8 sNeutralMsg00[] = _("{STR_VAR_1} is steadily poking at\nthe ground.");
static const u8 sNeutralMsg01[] = _("{STR_VAR_1} is standing guard.");
static const u8 sNeutralMsg02[] = _("{STR_VAR_1} is staring patiently at\nnothing at all.");
static const u8 sNeutralMsg03[] = _("{STR_VAR_1} is wandering around.");
static const u8 sNeutralMsg04[] = _("Your pokemon yawned loudly!");
static const u8 sNeutralMsg05[] = _("Your pokemon is looking around\nrestlessly.");
static const u8 sNeutralMsg06[] = _("{STR_VAR_1} is looking this way and\nsmiling.");
static const u8 sNeutralMsg07[] = _("{STR_VAR_1} is gazing around\nrestlessly.");
static const u8 sNeutralMsg08[] = _("{STR_VAR_1} let out a battle cry.");
static const u8 sNeutralMsg09[] = _("{STR_VAR_1} danced a wonderful\ndance!");
static const u8 sNeutralMsg10[] = _("{STR_VAR_1} is very eager.");
static const u8 sNeutralMsg11[] = _("{STR_VAR_1} is staring intently into\nthe distance.");
static const u8 sNeutralMsg12[] = _("{STR_VAR_1} is on the lookout!");
static const u8 sNeutralMsg13[] = _("{STR_VAR_1} looked off into the\ndistance and barked!");
const struct FollowerMsgInfo gFollowerNeutralMessages[] = {
{sNeutralMsg00, EventScript_FollowerPokeGround},
{sNeutralMsg01},
{sNeutralMsg02, EventScript_FollowerLookAway},
{sNeutralMsg03, EventScript_FollowerLookAround},
{sNeutralMsg04},
{sNeutralMsg05, EventScript_FollowerLookAround},
{sNeutralMsg06}, {sNeutralMsg07}, {sNeutralMsg08},
{sNeutralMsg09, EventScript_FollowerDance},
{sNeutralMsg10},
{sNeutralMsg11, EventScript_FollowerLookAway},
{sNeutralMsg12},
{sNeutralMsg13, EventScript_FollowerLookAwayBark},
};
// Unconditional sad messages
const char * const gFollowerSadMessages[] = {
(const char []) _("{STR_VAR_1} is dizzy."),
(const char []) _("{STR_VAR_1} is stepping on your\nfeet!"),
(const char []) _("{STR_VAR_1} seems a little tired."),
static const u8 sSadMsg00[] = _("{STR_VAR_1} is dizzy.");
static const u8 sSadMsg01[] = _("{STR_VAR_1} is stepping on your\nfeet!");
static const u8 sSadMsg02[] = _("{STR_VAR_1} seems a little tired.");
// Conditional messages begin, index 3
(const char []) _("{STR_VAR_1} is not happy."),
(const char []) _("{STR_VAR_1} is going to fall down!\n"),
(const char []) _("{STR_VAR_1} seems to be about to\nfall over!"),
(const char []) _("{STR_VAR_1} is trying very hard to\nkeep up with you..."),
static const u8 sSadMsg03[] = _("{STR_VAR_1} is not happy.");
static const u8 sSadMsg04[] = _("{STR_VAR_1} is going to fall down!\n");
static const u8 sSadMsg05[] = _("{STR_VAR_1} seems to be about to\nfall over!");
static const u8 sSadMsg06[] = _("{STR_VAR_1} is trying very hard to\nkeep up with you...");
const struct FollowerMsgInfo gFollowerSadMessages[] = {
{sSadMsg00, EventScript_FollowerDizzy},
{sSadMsg01}, {sSadMsg02},
{sSadMsg03}, {sSadMsg04}, {sSadMsg05}, {sSadMsg06},
};
// Unconditional upset messages
const char * const gFollowerUpsetMessages[] = {
(const char []) _("{STR_VAR_1} seems unhappy somehow..."),
(const char []) _("{STR_VAR_1} is making an unhappy\nface."),
(const char []) _(".....Your pokemon seems a little\ncold."),
static const u8 sUpsetMsg00[] = _("{STR_VAR_1} seems unhappy somehow...");
static const u8 sUpsetMsg01[] = _("{STR_VAR_1} is making an unhappy\nface.");
static const u8 sUpsetMsg02[] = _(".....Your pokemon seems a little\ncold.");
// Conditional messages, index 3
(const char []) _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."),
static const u8 sUpsetMsg03[] = _("{STR_VAR_1} is taking shelter in the\ngrass from the rain.");
const struct FollowerMsgInfo gFollowerUpsetMessages[] = {
{sUpsetMsg00}, {sUpsetMsg01},
{sUpsetMsg02, EventScript_FollowerIsShivering},
{sUpsetMsg03},
};
// Unconditional angry messages
const char * const gFollowerAngryMessages[] = {
(const char []) _("{STR_VAR_1} let out a roar!"),
(const char []) _("{STR_VAR_1} is making a face like\nits angry!"),
(const char []) _("{STR_VAR_1} seems to be angry for\nsome reason."),
(const char []) _("Your pokemon turned to face the\nother way, showing a defiant\pexpression."),
(const char []) _("{STR_VAR_1} cried out."),
static const u8 sAngryMsg00[] = _("{STR_VAR_1} let out a roar!");
static const u8 sAngryMsg01[] = _("{STR_VAR_1} is making a face like\nits angry!");
static const u8 sAngryMsg02[] = _("{STR_VAR_1} seems to be angry for\nsome reason.");
static const u8 sAngryMsg03[] = _("Your pokemon turned to face the\nother way, showing a defiant\pexpression.");
static const u8 sAngryMsg04[] = _("{STR_VAR_1} cried out.");
const struct FollowerMsgInfo gFollowerAngryMessages[] = {
{sAngryMsg00}, {sAngryMsg01}, {sAngryMsg02},
{sAngryMsg03, EventScript_FollowerLookAway},
{sAngryMsg04},
};
// Unconditional pensive messages
const char * const gFollowerPensiveMessages[] = {
(const char []) _("{STR_VAR_1} is looking down\nsteadily."),
(const char []) _("{STR_VAR_1} is surveying the area."),
(const char []) _("{STR_VAR_1} is peering down."),
(const char []) _("{STR_VAR_1} is somehow fighting off\nsleep..."),
(const char []) _("{STR_VAR_1} seems to be wandering\naround."),
(const char []) _("{STR_VAR_1} is looking around\nabsentmindedly."),
(const char []) _("{STR_VAR_1} yawned very loudly!"),
(const char []) _("{STR_VAR_1} is relaxing comfortably."),
(const char []) _("{STR_VAR_1} is staring steadfastly\nat your face."),
(const char []) _("{STR_VAR_1} is staring intently at\nyour face."),
(const char []) _("{STR_VAR_1} is focusing its\nattention on you."),
(const char []) _("{STR_VAR_1} is staring into the\ndepths."),
(const char []) _("{STR_VAR_1} is sniffing at the\nground."),
(const char []) _("Your pokemon is staring intently at\nnothing."),
(const char []) _("{STR_VAR_1} focused with a sharp\ngaze!"),
(const char []) _("{STR_VAR_1} is concentrating."),
(const char []) _("{STR_VAR_1} faced this way and\nnodded."),
(const char []) _("{STR_VAR_1} seems a bit nervous..."),
(const char []) _("{STR_VAR_1} is looking at your\nfootprints."),
(const char []) _("{STR_VAR_1} is staring straight into\nyour eyes."),
static const u8 sPensiveMsg00[] = _("{STR_VAR_1} is looking down\nsteadily.");
static const u8 sPensiveMsg01[] = _("{STR_VAR_1} is surveying the area.");
static const u8 sPensiveMsg02[] = _("{STR_VAR_1} is peering down.");
static const u8 sPensiveMsg03[] = _("{STR_VAR_1} is somehow fighting off\nsleep...");
static const u8 sPensiveMsg04[] = _("{STR_VAR_1} seems to be wandering\naround.");
static const u8 sPensiveMsg05[] = _("{STR_VAR_1} is looking around\nabsentmindedly.");
static const u8 sPensiveMsg06[] = _("{STR_VAR_1} yawned very loudly!");
static const u8 sPensiveMsg07[] = _("{STR_VAR_1} is relaxing comfortably.");
static const u8 sPensiveMsg08[] = _("{STR_VAR_1} is staring steadfastly\nat your face.");
static const u8 sPensiveMsg09[] = _("{STR_VAR_1} is staring intently at\nyour face.");
static const u8 sPensiveMsg10[] = _("{STR_VAR_1} is focusing its\nattention on you.");
static const u8 sPensiveMsg11[] = _("{STR_VAR_1} is staring into the\ndepths.");
static const u8 sPensiveMsg12[] = _("{STR_VAR_1} is sniffing at the\nground.");
static const u8 sPensiveMsg13[] = _("Your pokemon is staring intently at\nnothing.");
static const u8 sPensiveMsg14[] = _("{STR_VAR_1} focused with a sharp\ngaze!");
static const u8 sPensiveMsg15[] = _("{STR_VAR_1} is concentrating.");
static const u8 sPensiveMsg16[] = _("{STR_VAR_1} faced this way and\nnodded.");
static const u8 sPensiveMsg17[] = _("{STR_VAR_1} seems a bit nervous...");
static const u8 sPensiveMsg18[] = _("{STR_VAR_1} is looking at your\nfootprints.");
static const u8 sPensiveMsg19[] = _("{STR_VAR_1} is staring straight into\nyour eyes.");
const struct FollowerMsgInfo gFollowerPensiveMessages[] = {
{sPensiveMsg00},
{sPensiveMsg01, EventScript_FollowerLookAround},
{sPensiveMsg02}, {sPensiveMsg03}, {sPensiveMsg04},
{sPensiveMsg05, EventScript_FollowerLookAround},
{sPensiveMsg06}, {sPensiveMsg07}, {sPensiveMsg08}, {sPensiveMsg09}, {sPensiveMsg10},
{sPensiveMsg11, EventScript_FollowerLookAway},
{sPensiveMsg12, EventScript_FollowerPokeGround},
{sPensiveMsg13, EventScript_FollowerLookAway},
{sPensiveMsg14}, {sPensiveMsg15}, {sPensiveMsg16}, {sPensiveMsg17}, {sPensiveMsg18}, {sPensiveMsg19},
};
// All 'love' messages are unconditional
const char * const gFollowerLoveMessages[] = {
(const char []) _("{STR_VAR_1} suddenly started walking\ncloser!"),
(const char []) _("{STR_VAR_1} cheeks are becoming\nrosy!"),
(const char []) _("Woah! {STR_VAR_1} suddenly hugged\nyou!"),
(const char []) _("Woah! {STR_VAR_1} is suddenly\nplayful!"),
(const char []) _("{STR_VAR_1} is rubbing against your\nlegs!"),
(const char []) _("{STR_VAR_1} blushes."),
(const char []) _("Ah! {STR_VAR_1} cuddles you!"),
(const char []) _("{STR_VAR_1} is regarding you with\nadoration!"),
(const char []) _("{STR_VAR_1} got closer to you."),
(const char []) _("{STR_VAR_1} is keeping close to your\nfeet."),
static const u8 sLoveMsg00[] = _("{STR_VAR_1} suddenly started walking\ncloser!");
static const u8 sLoveMsg01[] = _("{STR_VAR_1} cheeks are becoming\nrosy!");
static const u8 sLoveMsg02[] = _("Woah! {STR_VAR_1} suddenly hugged\nyou!");
static const u8 sLoveMsg03[] = _("Woah! {STR_VAR_1} is suddenly\nplayful!");
static const u8 sLoveMsg04[] = _("{STR_VAR_1} is rubbing against your\nlegs!");
static const u8 sLoveMsg05[] = _("{STR_VAR_1} blushes.");
static const u8 sLoveMsg06[] = _("Ah! {STR_VAR_1} cuddles you!");
static const u8 sLoveMsg07[] = _("{STR_VAR_1} is regarding you with\nadoration!");
static const u8 sLoveMsg08[] = _("{STR_VAR_1} got closer to you.");
static const u8 sLoveMsg09[] = _("{STR_VAR_1} is keeping close to your\nfeet.");
const struct FollowerMsgInfo gFollowerLoveMessages[] = {
{sLoveMsg00, EventScript_FollowerGetCloser},
{sLoveMsg01},
{sLoveMsg02, EventScript_FollowerCuddling},
{sLoveMsg03},
{sLoveMsg04, EventScript_FollowerCuddling},
{sLoveMsg05},
{sLoveMsg06, EventScript_FollowerCuddling},
{sLoveMsg07},
{sLoveMsg08, EventScript_FollowerGetCloser},
{sLoveMsg09},
};
// Unconditional surprised messages
const char * const gFollowerSurpriseMessages[] = {
(const char []) _("{STR_VAR_1} is in danger of falling\nover!"),
(const char []) _("{STR_VAR_1} bumped into you!"),
(const char []) _("{STR_VAR_1} doesn't seem to be used\nto its own name yet."),
(const char []) _("{STR_VAR_1} is peering down."),
(const char []) _("Your pokemon stumbled and nearly\nfell!"),
(const char []) _("{STR_VAR_1} feels something and is\nhowling!"),
(const char []) _("{STR_VAR_1} seems refreshed!"),
(const char []) _("{STR_VAR_1} suddenly turned around\nand started barking!"),
(const char []) _("{STR_VAR_1} suddenly turned around!"),
(const char []) _("Your pokemon was surprised that you\nsuddenly spoke to it!"),
(const char []) _("Sniff sniff, something smells really\ngood!"),
(const char []) _("{STR_VAR_1} feels refreshed."),
(const char []) _("{STR_VAR_1} is wobbling and seems\nabout to fall over."),
(const char []) _("{STR_VAR_1} is in danger of falling\nover."),
(const char []) _("{STR_VAR_1} is walking along\ncautiously."),
(const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."),
(const char []) _("{STR_VAR_1} sensed something strange\nand was surprised!"),
(const char []) _("{STR_VAR_1} is scared and snuggled\nup to you!"),
(const char []) _("{STR_VAR_1} is feeling an unusual\npresence..."),
(const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."),
static const u8 sSurpriseMsg00[] = _("{STR_VAR_1} is in danger of falling\nover!");
static const u8 sSurpriseMsg01[] = _("{STR_VAR_1} bumped into you!");
static const u8 sSurpriseMsg02[] = _("{STR_VAR_1} doesn't seem to be used\nto its own name yet.");
static const u8 sSurpriseMsg03[] = _("{STR_VAR_1} is peering down.");
static const u8 sSurpriseMsg04[] = _("Your pokemon stumbled and nearly\nfell!");
static const u8 sSurpriseMsg05[] = _("{STR_VAR_1} feels something and is\nhowling!");
static const u8 sSurpriseMsg06[] = _("{STR_VAR_1} seems refreshed!");
static const u8 sSurpriseMsg07[] = _("{STR_VAR_1} suddenly turned around\nand started barking!");
static const u8 sSurpriseMsg08[] = _("{STR_VAR_1} suddenly turned around!");
static const u8 sSurpriseMsg09[] = _("Your pokemon was surprised that you\nsuddenly spoke to it!");
static const u8 sSurpriseMsg10[] = _("Sniff sniff, something smells really\ngood!");
static const u8 sSurpriseMsg11[] = _("{STR_VAR_1} feels refreshed.");
static const u8 sSurpriseMsg12[] = _("{STR_VAR_1} is wobbling and seems\nabout to fall over.");
static const u8 sSurpriseMsg13[] = _("{STR_VAR_1} is in danger of falling\nover.");
static const u8 sSurpriseMsg14[] = _("{STR_VAR_1} is walking along\ncautiously.");
static const u8 sSurpriseMsg15[] = _("{STR_VAR_1} is getting tense with\nnervous energy.");
static const u8 sSurpriseMsg16[] = _("{STR_VAR_1} sensed something strange\nand was surprised!");
static const u8 sSurpriseMsg17[] = _("{STR_VAR_1} is scared and snuggled\nup to you!");
static const u8 sSurpriseMsg18[] = _("{STR_VAR_1} is feeling an unusual\npresence...");
static const u8 sSurpriseMsg19[] = _("{STR_VAR_1} is getting tense with\nnervous energy.");
// Conditional messages, index 20
(const char []) _("{STR_VAR_1} seems to be very\nsurprised that it is raining!"),
static const u8 sSurpriseMsg20[] = _("{STR_VAR_1} seems to be very\nsurprised that it is raining!");
const struct FollowerMsgInfo gFollowerSurpriseMessages[] = {
{sSurpriseMsg00},
{sSurpriseMsg01, EventScript_FollowerPokingPlayer},
{sSurpriseMsg02}, {sSurpriseMsg03}, {sSurpriseMsg04}, {sSurpriseMsg05}, {sSurpriseMsg06},
{sSurpriseMsg07, EventScript_FollowerLookAwayBark},
{sSurpriseMsg08, EventScript_FollowerLookAway},
{sSurpriseMsg09},
{sSurpriseMsg10, EventScript_FollowerLookAround},
{sSurpriseMsg11}, {sSurpriseMsg12}, {sSurpriseMsg13}, {sSurpriseMsg14}, {sSurpriseMsg15}, {sSurpriseMsg16},
{sSurpriseMsg17, EventScript_FollowerCuddling},
{sSurpriseMsg18},
{sSurpriseMsg19, EventScript_FollowerLookAround},
{sSurpriseMsg20},
};
// Unconditional curious messages
const char * const gFollowerCuriousMessages[] = {
(const char []) _("Your pokemon is looking around\nrestlessly for something."),
(const char []) _("Your pokemon wasn't watching where\nit was going and ran into you!"),
(const char []) _("Sniff, sniff! Is there something\nnearby?"),
(const char []) _("{STR_VAR_1} is rolling a pebble\naround playfully."),
(const char []) _("{STR_VAR_1} is wandering around and\nsearching for something."),
(const char []) _("{STR_VAR_1} is sniffing at you."),
(const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."),
static const u8 sCuriousMsg00[] = _("Your pokemon is looking around\nrestlessly for something.");
static const u8 sCuriousMsg01[] = _("Your pokemon wasn't watching where\nit was going and ran into you!");
static const u8 sCuriousMsg02[] = _("Sniff, sniff! Is there something\nnearby?");
static const u8 sCuriousMsg03[] = _("{STR_VAR_1} is rolling a pebble\naround playfully.");
static const u8 sCuriousMsg04[] = _("{STR_VAR_1} is wandering around and\nsearching for something.");
static const u8 sCuriousMsg05[] = _("{STR_VAR_1} is sniffing at you.");
static const u8 sCuriousMsg06[] = _("{STR_VAR_1} seems to be a little\nhesitant...");
const struct FollowerMsgInfo gFollowerCuriousMessages[] = {
{sCuriousMsg00, EventScript_FollowerLookAround},
{sCuriousMsg01, EventScript_FollowerPokingPlayer},
{sCuriousMsg02}, {sCuriousMsg03},
{sCuriousMsg04, EventScript_FollowerLookAround},
{sCuriousMsg05}, {sCuriousMsg06},
};
// Unconditional music messages
const char * const gFollowerMusicMessages[] = {
(const char []) _("{STR_VAR_1} is showing off its\nagility!"),
(const char []) _("{STR_VAR_1} is moving around\nhappily!"),
(const char []) _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!"),
(const char []) _("{STR_VAR_1} is steadily keeping up\nwith you!"),
(const char []) _("{STR_VAR_1} is very happy about the\nrain."),
(const char []) _("{STR_VAR_1} seems to want to play\nwith you."),
(const char []) _("{STR_VAR_1} is happy skipping about."),
(const char []) _("{STR_VAR_1} is singing and humming."),
(const char []) _("{STR_VAR_1} is nipping at your feet!"),
(const char []) _("{STR_VAR_1} turns around and looks\nat you."),
(const char []) _("{STR_VAR_1} is working hard to show\noff its mighty power!"),
(const char []) _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!"),
(const char []) _("{STR_VAR_1} is cheerful!"),
(const char []) _("{STR_VAR_1} is jumping around in a\ncarefree way!"),
(const char []) _("Your pokemon seems to be smelling a\nnostalgically familiar scent..."),
static const u8 sMusicMsg00[] = _("{STR_VAR_1} is showing off its\nagility!");
static const u8 sMusicMsg01[] = _("{STR_VAR_1} is moving around\nhappily!");
static const u8 sMusicMsg02[] = _("Woah! {STR_VAR_1} suddenly started\ndancing in happiness!");
static const u8 sMusicMsg03[] = _("{STR_VAR_1} is steadily keeping up\nwith you!");
static const u8 sMusicMsg04[] = _("{STR_VAR_1} seems to want to play\nwith you.");
static const u8 sMusicMsg05[] = _("{STR_VAR_1} is happy skipping about.");
static const u8 sMusicMsg06[] = _("{STR_VAR_1} is singing and humming.");
static const u8 sMusicMsg07[] = _("{STR_VAR_1} is nipping at your feet!");
static const u8 sMusicMsg08[] = _("{STR_VAR_1} turns around and looks\nat you.");
static const u8 sMusicMsg09[] = _("{STR_VAR_1} is working hard to show\noff its mighty power!");
static const u8 sMusicMsg10[] = _("Whoa! {STR_VAR_1} suddenly danced in\nhappiness!");
static const u8 sMusicMsg11[] = _("{STR_VAR_1} is cheerful!");
static const u8 sMusicMsg12[] = _("{STR_VAR_1} is jumping around in a\ncarefree way!");
static const u8 sMusicMsg13[] = _("Your pokemon seems to be smelling a\nnostalgically familiar scent...");
// Conditional music messages, index 14
static const u8 sMusicMsg14[] = _("{STR_VAR_1} is very happy about the\nrain.");
const struct FollowerMsgInfo gFollowerMusicMessages[] = {
{sMusicMsg00, EventScript_FollowerLookAround},
{sMusicMsg01},
{sMusicMsg02, EventScript_FollowerDance},
{sMusicMsg03},
{sMusicMsg04, EventScript_FollowerHopping},
{sMusicMsg05, EventScript_FollowerHopping},
{sMusicMsg06}, {sMusicMsg07}, {sMusicMsg08}, {sMusicMsg09},
{sMusicMsg10, EventScript_FollowerDance},
{sMusicMsg11},
{sMusicMsg12, EventScript_FollowerHopping},
{sMusicMsg13, EventScript_FollowerNostalgia},
{sMusicMsg14}
};
const char * const gFollowerPoisonedMessages[] = {
(const char []) _("{STR_VAR_1} is shivering with the\neffects of being poisoned."),
static const u8 sPoisonedMsg00[] = _("{STR_VAR_1} is shivering with the\neffects of being poisoned.");
const struct FollowerMsgInfo gFollowerPoisonedMessages[] = {
{sPoisonedMsg00, EventScript_FollowerIsShivering},
};

View File

@ -1855,7 +1855,6 @@ bool8 ScrFunc_emote(struct ScriptContext *ctx) {
}
struct SpecialEmote { // Used for storing conditional emotes
const u8 * script;
u16 index;
u8 emotion;
};
@ -1864,7 +1863,7 @@ struct SpecialEmote { // Used for storing conditional emotes
bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big switch for follower messages
{
u16 species;
u32 behavior;
s32 multi;
s16 health_percent;
u8 friendship;
struct SpecialEmote cond_emotes[16] = {0};
@ -1880,16 +1879,9 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
// If map is not flyable, set the script to jump past the fly check TODO: Should followers ask to fly?
if (TRUE || !Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType))
ScriptJump(ctx, EventScript_FollowerEnd);
behavior = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y);
multi = MapGridGetMetatileBehaviorAt(objEvent->currentCoords.x, objEvent->currentCoords.y);
species = GetMonData(mon, MON_DATA_SPECIES);
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
// // 1. Puddle splash or wet feet
// if (MetatileBehavior_IsPuddle(behavior) || MetatileBehavior_IsShallowFlowingWater(behavior)) {
// if (SpeciesHasType(species, TYPE_FIRE))
// message_choices[n_choices++] = EventScript_FollowerUnhappyToBeWet;
// else if (SpeciesToGraphicsInfo(species, 0)->tracks) // if follower is grounded
// message_choices[n_choices++] = EventScript_FollowerSplashesAbout;
// }
// Happy weights
emotion_weight[FOLLOWER_EMOTION_HAPPY] = 10;
if (friendship > 170)
@ -1924,10 +1916,11 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31};
else if (GetCurrentWeather() == WEATHER_RAIN || GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM) {
if (SpeciesHasType(species, TYPE_FIRE)) {
emotion_weight[FOLLOWER_EMOTION_SAD] = 30;
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3};
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3};
}
emotion_weight[FOLLOWER_EMOTION_SAD] = 30;
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=3};
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_UPSET, .index=3};
} else
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion = FOLLOWER_EMOTION_MUSIC, .index=14};
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SURPRISE, .index=20};
}
// Health & status-related
@ -1946,26 +1939,20 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
if (mon->status & 0x8) // STATUS1_POISON
emotion = FOLLOWER_EMOTION_POISONED;
ObjectEventEmote(objEvent, emotion);
multi = Random() % followerBasicMessages[emotion].length;
if (Random() & 1) { // With 50% chance, select special message using reservoir sampling
u8 i, j = 1;
struct SpecialEmote *choice = 0;
for (i = 0; i < n_choices; i++) {
if (cond_emotes[i].emotion == emotion) {
if (Random() < 0x10000 / (j++)) // Replace item with 1/j chance
choice = &cond_emotes[i];
}
}
if (choice) { // Only continue if a script was actually chosen
ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index];
if (choice->script)
ScriptCall(ctx, choice->script);
else
ScriptCall(ctx, followerBasicMessages[emotion].script);
return FALSE;
if (cond_emotes[i].emotion == emotion && (Random() < 0x10000 / (j++))) // Replace item with 1/j chance
choice = &cond_emotes[i];
}
if (choice)
multi = choice->index;
}
ctx->data[0] = (u32) followerBasicMessages[emotion].messages[Random() % followerBasicMessages[emotion].length];
ScriptCall(ctx, followerBasicMessages[emotion].script);
ctx->data[0] = (u32) followerBasicMessages[emotion].messages[multi].text; // Load message text
ScriptCall(ctx, followerBasicMessages[emotion].messages[multi].script ?
followerBasicMessages[emotion].messages[multi].script : followerBasicMessages[emotion].script);
return FALSE;
}