Split "Do nothing" move effects (#5613)

This commit is contained in:
Eduardo Quezada 2024-12-02 05:05:04 -03:00 committed by GitHub
parent 42b94e378b
commit 0322d51887
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 80 additions and 9 deletions

View file

@ -3868,26 +3868,39 @@ BattleScript_EffectDoNothing::
attackcanceler
attackstring
ppreduce
jumpifmove MOVE_HOLD_HANDS, BattleScript_EffectHoldHands
attackanimation
waitanimation
jumpifmove MOVE_CELEBRATE, BattleScript_EffectCelebrate
jumpifmove MOVE_HAPPY_HOUR, BattleScript_EffectHappyHour
incrementgamestat GAME_STAT_USED_SPLASH
printstring STRINGID_BUTNOTHINGHAPPENED
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_EffectHoldHands:
BattleScript_EffectHoldHands::
attackcanceler
attackstring
ppreduce
jumpifsideaffecting BS_TARGET, SIDE_STATUS_CRAFTY_SHIELD, BattleScript_ButItFailed
jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_ButItFailed
attackanimation
waitanimation
goto BattleScript_MoveEnd
BattleScript_EffectCelebrate:
BattleScript_EffectCelebrate::
attackcanceler
attackstring
ppreduce
attackanimation
waitanimation
printstring STRINGID_CELEBRATEMESSAGE
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_EffectHappyHour:
BattleScript_EffectHappyHour::
attackcanceler
attackstring
ppreduce
attackanimation
waitanimation
seteffectprimary MOVE_EFFECT_HAPPY_HOUR
goto BattleScript_MoveEnd

View file

@ -624,6 +624,9 @@ extern const u8 BattleScript_EffectMimic[];
extern const u8 BattleScript_EffectMetronome[];
extern const u8 BattleScript_EffectLeechSeed[];
extern const u8 BattleScript_EffectDoNothing[];
extern const u8 BattleScript_EffectHoldHands[];
extern const u8 BattleScript_EffectCelebrate[];
extern const u8 BattleScript_EffectHappyHour[];
extern const u8 BattleScript_EffectDisable[];
extern const u8 BattleScript_EffectLevelDamage[];
extern const u8 BattleScript_EffectPsywave[];

View file

@ -67,6 +67,9 @@ enum {
EFFECT_METRONOME,
EFFECT_LEECH_SEED,
EFFECT_DO_NOTHING,
EFFECT_HOLD_HANDS,
EFFECT_CELEBRATE,
EFFECT_HAPPY_HOUR,
EFFECT_DISABLE,
EFFECT_LEVEL_DAMAGE,
EFFECT_PSYWAVE,

View file

@ -2412,6 +2412,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
ADJUST_SCORE(-10);
break;
case EFFECT_DO_NOTHING:
case EFFECT_HOLD_HANDS:
case EFFECT_CELEBRATE:
case EFFECT_HAPPY_HOUR:
ADJUST_SCORE(-10);
break;
case EFFECT_INSTRUCT:
@ -3513,6 +3516,9 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
ADJUST_SCORE(DECENT_EFFECT);
break;
case EFFECT_DO_NOTHING:
case EFFECT_HOLD_HANDS:
case EFFECT_CELEBRATE:
case EFFECT_HAPPY_HOUR:
//todo - check z splash, z celebrate, z happy hour (lol)
break;
case EFFECT_TELEPORT: // Either remove or add better logic

View file

@ -425,6 +425,27 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
.encourageEncore = TRUE,
},
[EFFECT_HOLD_HANDS] =
{
.battleScript = BattleScript_EffectHoldHands,
.battleTvScore = 1,
.encourageEncore = TRUE,
},
[EFFECT_CELEBRATE] =
{
.battleScript = BattleScript_EffectCelebrate,
.battleTvScore = 1,
.encourageEncore = TRUE,
},
[EFFECT_HAPPY_HOUR] =
{
.battleScript = BattleScript_EffectHappyHour,
.battleTvScore = 1,
.encourageEncore = TRUE,
},
[EFFECT_DISABLE] =
{
.battleScript = BattleScript_EffectDisable,

View file

@ -15010,7 +15010,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] =
.description = COMPOUND_STRING(
"Doubles the amount of\n"
"Prize Money received."),
.effect = EFFECT_DO_NOTHING,
.effect = EFFECT_HAPPY_HOUR,
.power = 0,
.type = TYPE_NORMAL,
.accuracy = 0,
@ -15080,7 +15080,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] =
.description = COMPOUND_STRING(
"Congratulates you on your\n"
"special day."),
.effect = EFFECT_DO_NOTHING,
.effect = EFFECT_CELEBRATE,
.power = 0,
.type = TYPE_NORMAL,
.accuracy = 0,
@ -15110,7 +15110,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] =
.description = COMPOUND_STRING(
"The user and ally hold hands\n"
"making them happy."),
.effect = EFFECT_DO_NOTHING,
.effect = EFFECT_HOLD_HANDS,
.power = 0,
.type = TYPE_NORMAL,
.accuracy = 0,

View file

@ -0,0 +1,25 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_HOLD_HANDS].effect == EFFECT_HOLD_HANDS);
}
DOUBLE_BATTLE_TEST("Hold Hands is blocked by Crafty Shield")
{
GIVEN {
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN {
MOVE(playerLeft, MOVE_CRAFTY_SHIELD, target: opponentLeft);
MOVE(playerRight, MOVE_HOLD_HANDS, target: playerLeft);
}
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HOLD_HANDS, playerLeft);
MESSAGE("Wynaut protected itself!");
}
}