Added music messages.

This commit is contained in:
Ariel Antonitis 2021-04-18 20:45:19 -04:00
parent 875c4edd50
commit fbbd58a823
7 changed files with 127 additions and 88 deletions

View File

@ -161,6 +161,15 @@ EventScript_FollowerGeneric:: @ similar to Std_MsgboxDefault
waitbuttonpress waitbuttonpress
return return
EventScript_FollowerJump::
applymovement 0xFE FollowerSplashMovement
waitmovement 0xFE
waitfieldeffect FLDEFF_EMOTE
message 0x0
waitmessage
waitbuttonpress
return
EnterPokeballMovement:: EnterPokeballMovement::
.byte 0x9F @ EnterPokeball .byte 0x9F @ EnterPokeball
step_end step_end

View File

@ -39,10 +39,6 @@ Your pokemon is staring intently at the sea!
{STR_VAR_1} is looking outside and frolicking! {STR_VAR_1} is looking outside and frolicking!
{STR_VAR_1} spun around in a circle! {STR_VAR_1} spun around in a circle!
Sad (Special): Sad (Special):
{STR_VAR_1} is going to fall down! (when HP is red).
{STR_VAR_1} is not happy. (During rain if the pokemon is a fire type).
{STR_VAR_1} seems to be about to fall over! (When HP is red.).
{STR_VAR_1} is trying very hard to keep up with you... (When HP is yellow or paralyzed).
{STR_VAR_1}'s burn looks painful! (when burnt). {STR_VAR_1}'s burn looks painful! (when burnt).
Upset (Special): Upset (Special):
{STR_VAR_1} is taking shelter in the grass from the rain. {STR_VAR_1} is taking shelter in the grass from the rain.
@ -54,7 +50,7 @@ It seems to have eaten something strange. It's making an odd face... (Olivine Ca
{STR_VAR_1} is a bit nervous about the narrow space! {STR_VAR_1} is a bit nervous about the narrow space!
{STR_VAR_1} is splashing around in the grass (must be fire type). {STR_VAR_1} is splashing around in the grass (must be fire type).
Your pokemon doesn't like splashing around on the ground (must be fire type). Your pokemon doesn't like splashing around on the ground (must be fire type).
{STR_VAR_1} is taking shelter in the grass from the rain (must be fire type).
{STR_VAR_1} seems very cold (when frozen). {STR_VAR_1} seems very cold (when frozen).
{STR_VAR_1} seems uneasy and is poking (PLAYER). {STR_VAR_1} seems uneasy and is poking (PLAYER).
{STR_VAR_1} is trembling with fear (Cemetery). {STR_VAR_1} is trembling with fear (Cemetery).
@ -83,27 +79,38 @@ Your pokemon is drooling a little (Olivine Cafe).
{STR_VAR_1} seems very interested in the bicycles (bike shop). {STR_VAR_1} seems very interested in the bicycles (bike shop).
{STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower). {STR_VAR_1} is preoccupied by the floor, which seems like it may collapse (burnt tower).
{STR_VAR_1} is nervous ( in a gym before beating gym leader ) ( must have type disadvantage ). {STR_VAR_1} is nervous ( in a gym before beating gym leader ) ( must have type disadvantage ).
Music: Music (Special):
{STR_VAR_1} is showing off its agility!
{STR_VAR_1} is moving around happily!
Woah! {STR_VAR_1} suddenly started dancing in happiness!
{STR_VAR_1} is steadily keeping up with you!
{STR_VAR_1} is very happy about the rain.
{STR_VAR_1} seems to want to play with (Player).
{STR_VAR_1} is pulling out the grass. {STR_VAR_1} is pulling out the grass.
{STR_VAR_1} is happy skipping about. Waah! your pokemon suddenly splashed water! (on a shore).
{STR_VAR_1} is playing in the puddle. {STR_VAR_1} is happy to see what's out doors!
{STR_VAR_1} is gazing restlessly at the building ( in goldenrod). {STR_VAR_1} seems to want to touch the machine! (Power plant).
{STR_VAR_1} is singing and humming. {STR_VAR_1} is listening intently to the sound of the waves.
{STR_VAR_1} is looking around restlessly at the Forest. {STR_VAR_1} is swaying with the boat!
{STR_VAR_1} is playfully nibbling at the ground. {STR_VAR_1} is dancing along with the rolling of the ship.
(CYNDAQUIL) blew out a fireball. ( Pokemon Exclusive ). {STR_VAR_1} doesn't want to get off the boat yet!
(CYNDAQUIL) blew out a couple of fireballs. ( Pokemon Exclusive ). {STR_VAR_1} is listening to the sound of the machine.
(CHIKORITA) is waving its leaf around ( Pokemon Exclusive ). {STR_VAR_1} seems happy at the sight of water on the window!
(CHIKORITA) is making its leaf twitch ( Pokemon Exclusive ). Your pokemon is blowing sand in the air!
(TODADILE) is moving its jaw ( Pokemon Exclusive ). Your pokemon is staring spellbound at the night sky!
(TODADILE) is opening and closing its mouth ( Pokemon Exclusive ). Your pokemon seems to be enjoying sliding around!
{STR_VAR_1} is nipping at your feet! {STR_VAR_1} is touching the ice.
{STR_VAR_1} is steadily observing the flow of the river.
{STR_VAR_1} is noticing the scent of the grass.
{STR_VAR_1} is playing around, plucking bits of grass.
{STR_VAR_1} is looking up at the ceiling.
{STR_VAR_1} seems to be enjoying this a little bit!
{STR_VAR_1} is wandering around enjoying the forest scenery.
{STR_VAR_1} is playing around in the fallen leaves.
{STR_VAR_1} is playing around with a leaf.
{STR_VAR_1} is playing around, touching the leaves.
Your pokemon is happily gazing at the beautiful, starry sky!
{STR_VAR_1} is pulling out the grass.
{STR_VAR_1} is rolling around in the grass.
{STR_VAR_1} seems to want to return to the lab (after you receive the Mystery egg).
Your pokemon is staring at the various items.
{STR_VAR_1} is listening to the sound of the waterfall ( Mt. Mortar).
{STR_VAR_1} is looking up the tall mountain... (Mt. Mortar).
{STR_VAR_1} seems concerned about the waterfall.
{STR_VAR_1} is sniffing around the room. (Inside Hero's Room). {STR_VAR_1} is sniffing around the room. (Inside Hero's Room).
{STR_VAR_1} is dancing around the pillar! (Seems to occur more for Bellsprout)(sprout tower). {STR_VAR_1} is dancing around the pillar! (Seems to occur more for Bellsprout)(sprout tower).
{STR_VAR_1} swayed around, dancing in a strange manner.(Seems to occur more for Bellsprout)(sprout tower). {STR_VAR_1} swayed around, dancing in a strange manner.(Seems to occur more for Bellsprout)(sprout tower).
@ -117,43 +124,17 @@ Your pokemon is rolling a screw from a bicycle around.
{STR_VAR_1} is looking up at the sky. {STR_VAR_1} is looking up at the sky.
{STR_VAR_1} seems to be happy about the rain! ( during rain, must not have type disadvantage to water). {STR_VAR_1} seems to be happy about the rain! ( during rain, must not have type disadvantage to water).
{STR_VAR_1} is clawing the grass! {STR_VAR_1} is clawing the grass!
{STR_VAR_1} turns around and looks at you. {STR_VAR_1} is looking around restlessly at the Forest.
{STR_VAR_1} is listening to the sound of the waterfall ( Mt. Mortar). {STR_VAR_1} is playfully nibbling at the ground.
{STR_VAR_1} is looking up the tall mountain... (Mt. Mortar). (CYNDAQUIL) blew out a fireball. ( Pokemon Exclusive ).
{STR_VAR_1} seems concerned about the waterfall. (CYNDAQUIL) blew out a couple of fireballs. ( Pokemon Exclusive ).
{STR_VAR_1} is working hard to show off its mighty power! (CHIKORITA) is waving its leaf around ( Pokemon Exclusive ).
{STR_VAR_1} pulled back to run! (CHIKORITA) is making its leaf twitch ( Pokemon Exclusive ).
Whoa! {STR_VAR_1} suddenly danced in happiness! (TODADILE) is moving its jaw ( Pokemon Exclusive ).
{STR_VAR_1} is rolling around in the grass. (TODADILE) is opening and closing its mouth ( Pokemon Exclusive ).
{STR_VAR_1} seems to want to return to the lab (after you receive the Mystery egg). {STR_VAR_1} is playing in the puddle.
Your pokemon is staring at the various items. {STR_VAR_1} is gazing restlessly at the building ( in goldenrod).
{STR_VAR_1} is wandering around enjoying the forest scenery.
{STR_VAR_1} is playing around in the fallen leaves.
{STR_VAR_1} is playing around with a leaf.
{STR_VAR_1} is playing around, touching the leaves.
Your pokemon is happily gazing at the beautiful, starry sky!
{STR_VAR_1} is pulling out the grass.
{STR_VAR_1} seems to be enjoying this a little bit!
{STR_VAR_1} is looking up at the ceiling.
{STR_VAR_1} is cheerful!
{STR_VAR_1} is swaying with the boat!
{STR_VAR_1} is dancing along with the rolling of the ship.
{STR_VAR_1} doesn't want to get off the boat yet!
{STR_VAR_1} is listening to the sound of the machine.
{STR_VAR_1} seems happy at the sight of water on the window!
Your pokemon is blowing sand in the air!
Your pokemon is staring spellbound at the night sky!
Your pokemon seems to be enjoying sliding around!
{STR_VAR_1} is touching the ice.
{STR_VAR_1} is steadily observing the flow of the river.
{STR_VAR_1} is noticing the scent of the grass.
{STR_VAR_1} is playing around, plucking bits of grass.
{STR_VAR_1} is happy to see what's out doors!
{STR_VAR_1} seems to want to touch the machine! (Power plant).
{STR_VAR_1} is listening intently to the sound of the waves.
{STR_VAR_1} is jumping around in a carefree way!
Waah! your pokemon suddenly splashed water! (on a shore).
Your pokemon seems to be smelling a nostalgically familiar scent...
Surprised (Special): Surprised (Special):
Your pokemon has a flower petal on its face! (Newbark Town). Your pokemon has a flower petal on its face! (Newbark Town).
{STR_VAR_1} seems to have gotten caught in the clumps of grass. {STR_VAR_1} seems to have gotten caught in the clumps of grass.
@ -164,7 +145,6 @@ Careful! seems like the floor could collapse, and it might fall.
{STR_VAR_1} gazed surprisingly at the rock! {STR_VAR_1} gazed surprisingly at the rock!
Huh? your pokemon found something in top of the mountain ( outside Mt. Mortar) (!). Huh? your pokemon found something in top of the mountain ( outside Mt. Mortar) (!).
{STR_VAR_1} is cautious about the confined area! {STR_VAR_1} is cautious about the confined area!
{STR_VAR_1} seems to be very surprised that it is raining!
{STR_VAR_1} got tangled up in the branches and almost fell down! {STR_VAR_1} got tangled up in the branches and almost fell down!
{STR_VAR_1} looked up at the sky and shouted loudly. {STR_VAR_1} looked up at the sky and shouted loudly.
{STR_VAR_1} seems to have found something! {STR_VAR_1} seems to have found something!

View File

@ -47,4 +47,4 @@ def export_messages(infile, outfile, n=None, indent=2):
if __name__ == '__main__': if __name__ == '__main__':
export_messages('emotions.txt', 'emotions.h', n=1) export_messages('emotions.txt', 'emotions.h', n=15)

View File

@ -13,6 +13,7 @@
#define N_FOLLOWER_LOVE_MESSAGES 10 #define N_FOLLOWER_LOVE_MESSAGES 10
#define N_FOLLOWER_SURPRISE_MESSAGES 20 #define N_FOLLOWER_SURPRISE_MESSAGES 20
#define N_FOLLOWER_CURIOUS_MESSAGES 7 #define N_FOLLOWER_CURIOUS_MESSAGES 7
#define N_FOLLOWER_MUSIC_MESSAGES 15
#define N_FOLLOWER_POISONED_MESSAGES 1 #define N_FOLLOWER_POISONED_MESSAGES 1
struct MonCoords struct MonCoords
@ -142,6 +143,7 @@ extern const char * const gFollowerPensiveMessages[];
extern const char * const gFollowerLoveMessages[]; extern const char * const gFollowerLoveMessages[];
extern const char * const gFollowerSurpriseMessages[]; extern const char * const gFollowerSurpriseMessages[];
extern const char * const gFollowerCuriousMessages[]; extern const char * const gFollowerCuriousMessages[];
extern const char * const gFollowerMusicMessages[];
extern const char * const gFollowerPoisonedMessages[]; extern const char * const gFollowerPoisonedMessages[];
#endif // GUARD_DATA_H #endif // GUARD_DATA_H

View File

@ -59,6 +59,11 @@ const char * const gFollowerSadMessages[] = {
(const char []) _("{STR_VAR_1} is dizzy."), (const char []) _("{STR_VAR_1} is dizzy."),
(const char []) _("{STR_VAR_1} is stepping on your\nfeet!"), (const char []) _("{STR_VAR_1} is stepping on your\nfeet!"),
(const char []) _("{STR_VAR_1} seems a little tired."), (const char []) _("{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..."),
}; };
// Unconditional upset messages // Unconditional upset messages
@ -66,6 +71,8 @@ const char * const gFollowerUpsetMessages[] = {
(const char []) _("{STR_VAR_1} seems unhappy somehow..."), (const char []) _("{STR_VAR_1} seems unhappy somehow..."),
(const char []) _("{STR_VAR_1} is making an unhappy\nface."), (const char []) _("{STR_VAR_1} is making an unhappy\nface."),
(const char []) _(".....Your pokemon seems a little\ncold."), (const char []) _(".....Your pokemon seems a little\ncold."),
// Conditional messages, index 3
(const char []) _("{STR_VAR_1} is taking shelter in the\ngrass from the rain."),
}; };
// Unconditional angry messages // Unconditional angry messages
@ -137,6 +144,8 @@ const char * const gFollowerSurpriseMessages[] = {
(const char []) _("{STR_VAR_1} is scared and snuggled\nup to you!"), (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 feeling an unusual\npresence..."),
(const char []) _("{STR_VAR_1} is getting tense with\nnervous energy."), (const char []) _("{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!"),
}; };
// Unconditional curious messages // Unconditional curious messages
@ -150,6 +159,25 @@ const char * const gFollowerCuriousMessages[] = {
(const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."), (const char []) _("{STR_VAR_1} seems to be a little\nhesitant..."),
}; };
// 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..."),
};
const char * const gFollowerPoisonedMessages[] = { const char * const gFollowerPoisonedMessages[] = {
(const char []) _("{STR_VAR_1} is shivering with the\neffects of being poisoned."), (const char []) _("{STR_VAR_1} is shivering with the\neffects of being poisoned."),
}; };

View File

@ -1749,6 +1749,7 @@ static const struct FollowerMessagePool followerBasicMessages[] = {
[FOLLOWER_EMOTION_LOVE] = {gFollowerLoveMessages, EventScript_FollowerGeneric, N_FOLLOWER_LOVE_MESSAGES}, [FOLLOWER_EMOTION_LOVE] = {gFollowerLoveMessages, EventScript_FollowerGeneric, N_FOLLOWER_LOVE_MESSAGES},
[FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, N_FOLLOWER_SURPRISE_MESSAGES}, [FOLLOWER_EMOTION_SURPRISE] = {gFollowerSurpriseMessages, EventScript_FollowerGeneric, N_FOLLOWER_SURPRISE_MESSAGES},
[FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, N_FOLLOWER_CURIOUS_MESSAGES}, [FOLLOWER_EMOTION_CURIOUS] = {gFollowerCuriousMessages, EventScript_FollowerGeneric, N_FOLLOWER_CURIOUS_MESSAGES},
[FOLLOWER_EMOTION_MUSIC] = {gFollowerMusicMessages, EventScript_FollowerGeneric, N_FOLLOWER_MUSIC_MESSAGES},
[FOLLOWER_EMOTION_POISONED] = {gFollowerPoisonedMessages, EventScript_FollowerGeneric, N_FOLLOWER_POISONED_MESSAGES}, [FOLLOWER_EMOTION_POISONED] = {gFollowerPoisonedMessages, EventScript_FollowerGeneric, N_FOLLOWER_POISONED_MESSAGES},
}; };
@ -1813,15 +1814,10 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30; emotion_weight[FOLLOWER_EMOTION_HAPPY] = 30;
else if (friendship > 80) else if (friendship > 80)
emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20; emotion_weight[FOLLOWER_EMOTION_HAPPY] = 20;
if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS)
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_HAPPY, .index=31};
// Neutral weights // Neutral weights
emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15; emotion_weight[FOLLOWER_EMOTION_NEUTRAL] = 15;
// Sad weights // Sad weights
emotion_weight[FOLLOWER_EMOTION_SAD] = 5; emotion_weight[FOLLOWER_EMOTION_SAD] = 5;
health_percent = mon->hp * 100 / mon->maxHP;
if (health_percent < 50 || mon->status & 0x40) // STATUS1_PARALYSIS
emotion_weight[FOLLOWER_EMOTION_SAD] = 30;
// Upset weights // Upset weights
emotion_weight[FOLLOWER_EMOTION_UPSET] = friendship < 80 ? 15 : 5; emotion_weight[FOLLOWER_EMOTION_UPSET] = friendship < 80 ? 15 : 5;
// Angry weights // Angry weights
@ -1833,12 +1829,37 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
emotion_weight[FOLLOWER_EMOTION_LOVE] = 30; emotion_weight[FOLLOWER_EMOTION_LOVE] = 30;
else if (friendship > 80) else if (friendship > 80)
emotion_weight[FOLLOWER_EMOTION_LOVE] = 20; emotion_weight[FOLLOWER_EMOTION_LOVE] = 20;
// Surprise weights // Surprise weights TODO: Scale this with how long the follower has been out
// TODO: Scale this with how long the follower has been out
emotion_weight[FOLLOWER_EMOTION_SURPRISE] = 10; emotion_weight[FOLLOWER_EMOTION_SURPRISE] = 10;
// Curious weights // Curious weights TODO: Increase this if there is an item nearby, or if the pokemon has pickup
// TODO: Increase this if there is an item nearby, or if the pokemon has pickup emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 10;
emotion_weight[FOLLOWER_EMOTION_CURIOUS] = 5; // Music weights TODO: Change this depending on music ?
emotion_weight[FOLLOWER_EMOTION_MUSIC] = friendship > 80 ? 20 : 15;
// Conditional messages follow
// Weather-related
if (GetCurrentWeather() == WEATHER_SUNNY || GetCurrentWeather() == WEATHER_SUNNY_CLOUDS)
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};
}
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SURPRISE, .index=20};
}
// Health & status-related
health_percent = mon->hp * 100 / mon->maxHP;
if (health_percent < 20) {
emotion_weight[FOLLOWER_EMOTION_SAD] = 30;
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=4};
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=5};
}
if (health_percent < 50 || mon->status & 0x40) { // STATUS1_PARALYSIS
emotion_weight[FOLLOWER_EMOTION_SAD] = 30;
cond_emotes[n_choices++] = (struct SpecialEmote) {.emotion=FOLLOWER_EMOTION_SAD, .index=6};
}
emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH); emotion = RandomWeightedIndex(emotion_weight, FOLLOWER_EMOTION_LENGTH);
if (mon->status & 0x8) // STATUS1_POISON if (mon->status & 0x8) // STATUS1_POISON
emotion = FOLLOWER_EMOTION_POISONED; emotion = FOLLOWER_EMOTION_POISONED;
@ -1853,12 +1874,11 @@ bool8 ScrFunc_getfolloweraction(struct ScriptContext *ctx) // Essentially a big
} }
} }
if (choice) { // Only continue if a script was actually chosen if (choice) { // Only continue if a script was actually chosen
ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index];
if (choice->script) if (choice->script)
ScriptCall(ctx, choice->script); ScriptCall(ctx, choice->script);
else { else
ctx->data[0] = (u32) followerBasicMessages[emotion].messages[choice->index];
ScriptCall(ctx, followerBasicMessages[emotion].script); ScriptCall(ctx, followerBasicMessages[emotion].script);
}
return FALSE; return FALSE;
} }
} }

View File

@ -178,77 +178,77 @@ static const struct SpriteFrameImage sSpriteImageTable_Emotes[] =
static const union AnimCmd sSpriteAnim_Emotes0[] = { static const union AnimCmd sSpriteAnim_Emotes0[] = {
ANIMCMD_FRAME(0*2, 30), ANIMCMD_FRAME(0*2, 30),
ANIMCMD_FRAME(0*2+1, 30), ANIMCMD_FRAME(0*2+1, 25),
ANIMCMD_FRAME(0*2, 30), ANIMCMD_FRAME(0*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes1[] = { static const union AnimCmd sSpriteAnim_Emotes1[] = {
ANIMCMD_FRAME(1*2, 30), ANIMCMD_FRAME(1*2, 30),
ANIMCMD_FRAME(1*2+1, 30), ANIMCMD_FRAME(1*2+1, 25),
ANIMCMD_FRAME(1*2, 30), ANIMCMD_FRAME(1*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes2[] = { static const union AnimCmd sSpriteAnim_Emotes2[] = {
ANIMCMD_FRAME(2*2, 30), ANIMCMD_FRAME(2*2, 30),
ANIMCMD_FRAME(2*2+1, 30), ANIMCMD_FRAME(2*2+1, 25),
ANIMCMD_FRAME(2*2, 30), ANIMCMD_FRAME(2*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes3[] = { static const union AnimCmd sSpriteAnim_Emotes3[] = {
ANIMCMD_FRAME(3*2, 30), ANIMCMD_FRAME(3*2, 30),
ANIMCMD_FRAME(3*2+1, 30), ANIMCMD_FRAME(3*2+1, 25),
ANIMCMD_FRAME(3*2, 30), ANIMCMD_FRAME(3*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes4[] = { static const union AnimCmd sSpriteAnim_Emotes4[] = {
ANIMCMD_FRAME(4*2, 30), ANIMCMD_FRAME(4*2, 30),
ANIMCMD_FRAME(4*2+1, 30), ANIMCMD_FRAME(4*2+1, 25),
ANIMCMD_FRAME(4*2, 30), ANIMCMD_FRAME(4*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes5[] = { static const union AnimCmd sSpriteAnim_Emotes5[] = {
ANIMCMD_FRAME(5*2, 30), ANIMCMD_FRAME(5*2, 30),
ANIMCMD_FRAME(5*2+1, 30), ANIMCMD_FRAME(5*2+1, 25),
ANIMCMD_FRAME(5*2, 30), ANIMCMD_FRAME(5*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes6[] = { static const union AnimCmd sSpriteAnim_Emotes6[] = {
ANIMCMD_FRAME(6*2, 30), ANIMCMD_FRAME(6*2, 30),
ANIMCMD_FRAME(6*2+1, 30), ANIMCMD_FRAME(6*2+1, 25),
ANIMCMD_FRAME(6*2, 30), ANIMCMD_FRAME(6*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes7[] = { static const union AnimCmd sSpriteAnim_Emotes7[] = {
ANIMCMD_FRAME(7*2, 30), ANIMCMD_FRAME(7*2, 30),
ANIMCMD_FRAME(7*2+1, 30), ANIMCMD_FRAME(7*2+1, 25),
ANIMCMD_FRAME(7*2, 30), ANIMCMD_FRAME(7*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes8[] = { static const union AnimCmd sSpriteAnim_Emotes8[] = {
ANIMCMD_FRAME(8*2, 30), ANIMCMD_FRAME(8*2, 30),
ANIMCMD_FRAME(8*2+1, 30), ANIMCMD_FRAME(8*2+1, 25),
ANIMCMD_FRAME(8*2, 30), ANIMCMD_FRAME(8*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes9[] = { static const union AnimCmd sSpriteAnim_Emotes9[] = {
ANIMCMD_FRAME(9*2, 30), ANIMCMD_FRAME(9*2, 30),
ANIMCMD_FRAME(9*2+1, 30), ANIMCMD_FRAME(9*2+1, 25),
ANIMCMD_FRAME(9*2, 30), ANIMCMD_FRAME(9*2, 30),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Emotes10[] = { static const union AnimCmd sSpriteAnim_Emotes10[] = {
ANIMCMD_FRAME(10*2, 30), ANIMCMD_FRAME(10*2, 30),
ANIMCMD_FRAME(10*2+1, 30), ANIMCMD_FRAME(10*2+1, 25),
ANIMCMD_FRAME(10*2, 30), ANIMCMD_FRAME(10*2, 30),
ANIMCMD_END ANIMCMD_END
}; };