Shell Smash move effect

This commit is contained in:
DizzyEggg 2018-09-22 11:13:17 +02:00
parent 1284bb94f1
commit f455f663f4
5 changed files with 69 additions and 5 deletions

View File

@ -303,6 +303,56 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
.4byte BattleScript_EffectLastResort
.4byte BattleScript_EffectRecoil33WithStatus
.4byte BattleScript_EffectFlinchWithStatus
.4byte BattleScript_EffectRecoil50
.4byte BattleScript_EffectShellSmash
BattleScript_EffectShellSmash:
attackcanceler
attackstring
ppreduce
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_ShellSmashTryDef
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_ShellSmashTryDef
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPEED, 0xC, BattleScript_ShellSmashTryDef
jumpifstat BS_ATTACKER, CMP_GREATER_THAN, STAT_DEF, 0, BattleScript_ShellSmashTryDef
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0, BattleScript_ButItFailed
BattleScript_ShellSmashTryDef::
attackanimation
waitanimation
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, ATK48_STAT_NEGATIVE | ATK48_DONT_CHECK_LOWER
setstatchanger STAT_DEF, 1, TRUE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_ShellSmashTrySpDef
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_ShellSmashTrySpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_ShellSmashTrySpDef:
setstatchanger STAT_SPDEF, 1, TRUE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_ShellSmashTryAttack
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_ShellSmashTryAttack
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_ShellSmashTryAttack:
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_SPATK | BIT_ATK | BIT_SPEED, ATK48_STAT_BY_TWO
setstatchanger STAT_ATK, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_ShellSmashTrySpAtk
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_ShellSmashTrySpAtk
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_ShellSmashTrySpAtk:
setstatchanger STAT_SPATK, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_ShellSmashTrySpeed
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_ShellSmashTrySpeed
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_ShellSmashTrySpeed:
setstatchanger STAT_SPEED, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_ShellSmashEnd
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_ShellSmashEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_ShellSmashEnd:
goto BattleScript_MoveEnd
BattleScript_EffectLastResort:
attackcanceler
@ -397,7 +447,7 @@ BattleScript_CoilDoMoveAnim:
attackanimation
waitanimation
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_SPATK | BIT_SPDEF | BIT_SPEED, 0x0
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_ACC, 0x0
setstatchanger STAT_ATK, 1, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CoilTryDef
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CoilTryDef
@ -3388,6 +3438,10 @@ BattleScript_EffectDoubleEdge::
BattleScript_EffectRecoil33WithStatus:
setmoveeffect MOVE_EFFECT_RECOIL_33_STATUS | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectRecoil50:
setmoveeffect MOVE_EFFECT_RECOIL_50 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectTeeterDance::
attackcanceler

View File

@ -311,7 +311,7 @@
#define MOVE_EFFECT_KNOCK_OFF 0x36
#define MOVE_EFFECT_DEF_SPDEF_DOWN 0x37
#define MOVE_EFFECT_RECOIL_33_STATUS 0x38
#define MOVE_EFFECT_NOTHING_39 0x39
#define MOVE_EFFECT_RECOIL_50 0x39
#define MOVE_EFFECT_NOTHING_3A 0x3A
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
#define MOVE_EFFECT_NOTHING_3C 0x3C

View File

@ -292,5 +292,7 @@
#define EFFECT_LAST_RESORT 286
#define EFFECT_RECOIL_33_STATUS 287
#define EFFECT_FLINCH_STATUS 288
#define EFFECT_RECOIL_50 289
#define EFFECT_SHELL_SMASH 290
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -2606,6 +2606,14 @@ void SetMoveEffect(bool8 primary, u8 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case MOVE_EFFECT_RECOIL_50: // Head Smash
gBattleMoveDamage = gHpDealt / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil;
break;
case MOVE_EFFECT_RECOIL_33_STATUS: // Flare Blitz - can burn, Volt Tackle - can paralyze
gBattleScripting.savedDmg = gHpDealt / 3;
if (gBattleScripting.savedDmg == 0)

View File

@ -5493,7 +5493,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_GEN6] =
.split = SPLIT_STATUS,
},
{ // MOVE_HEAD_SMASH
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect (1/2 recoil instead of 1/3 recoil)
.effect = EFFECT_RECOIL_50,
.power = 150,
.type = TYPE_ROCK,
.accuracy = 80,
@ -5961,7 +5961,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_GEN6] =
.split = SPLIT_STATUS,
},
{ // MOVE_ROUND
.effect = EFFECT_ROUND, // Needs a custom move effect
.effect = EFFECT_ROUND,
.power = 60,
.type = TYPE_NORMAL,
.accuracy = 100,
@ -6057,7 +6057,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_GEN6] =
.split = SPLIT_SPECIAL,
},
{ // MOVE_SHELL_SMASH
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect
.effect = EFFECT_SHELL_SMASH,
.power = 0,
.type = TYPE_NORMAL,
.accuracy = 0,