Add Fell Stinger

This commit is contained in:
DizzyEggg 2018-07-26 23:40:55 +02:00
parent d991d669da
commit f51812d0fe
7 changed files with 54 additions and 8 deletions

View File

@ -1389,6 +1389,10 @@
various \battler, VARIOUS_TRY_ACTIVATE_MOXIE
.endm
.macro tryactivatefellstinger battler
various \battler, VARIOUS_TRY_ACTIVATE_FELL_STINGER
.endm
@ helpful macros
.macro setstatchanger stat, stages, down
setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7

View File

@ -155,7 +155,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
.4byte BattleScript_EffectDefenseUpHit
.4byte BattleScript_EffectAttackUpHit
.4byte BattleScript_EffectAllStatsUpHit
.4byte BattleScript_EffectUnused8d
.4byte BattleScript_EffectFellStinger
.4byte BattleScript_EffectBellyDrum
.4byte BattleScript_EffectPsychUp
.4byte BattleScript_EffectMirrorCoat
@ -590,7 +590,7 @@ BattleScript_EffectUnused60:
BattleScript_EffectFalseSwipe:
BattleScript_EffectAlwaysCrit:
BattleScript_EffectPursuit:
BattleScript_EffectUnused8d:
BattleScript_EffectFellStinger:
BattleScript_EffectPlaceholder209:
BattleScript_EffectHit::
BattleScript_EffectLowKick:
@ -3202,6 +3202,7 @@ BattleScript_FaintTarget::
cleareffectsonfaint BS_TARGET
printstring STRINGID_TARGETFAINTED
tryactivatemoxie BS_ATTACKER
tryactivatefellstinger BS_ATTACKER
return
BattleScript_GiveExp::
@ -4829,6 +4830,16 @@ BattleScript_AttackerAbilityStatRaise::
waitmessage 0x40
return
BattleScript_FellStingerRaisesStat::
statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_FellStingerRaisesAtkEnd
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_FellStingerRaisesAtkEnd
setgraphicalstatchangevalues
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_FellStingerRaisesAtkEnd:
return
BattleScript_AttackerAbilityStatRaiseEnd3::
call BattleScript_AttackerAbilityStatRaise
end3

View File

@ -321,5 +321,6 @@ extern const u8 BattleScript_SolarPowerActivates[];
extern const u8 BattleScript_CursedBodyActivates[];
extern const u8 BattleScript_MummyActivates[];
extern const u8 BattleScript_WeakArmorActivates[];
extern const u8 BattleScript_FellStingerRaisesStat[];
#endif // GUARD_BATTLE_SCRIPTS_H

View File

@ -142,7 +142,7 @@
#define EFFECT_DEFENSE_UP_HIT 138
#define EFFECT_ATTACK_UP_HIT 139
#define EFFECT_ALL_STATS_UP_HIT 140
#define EFFECT_UNUSED_8D 141
#define EFFECT_FELL_STINGER 141
#define EFFECT_BELLY_DRUM 142
#define EFFECT_PSYCH_UP 143
#define EFFECT_MIRROR_COAT 144

View File

@ -80,6 +80,7 @@
#define VARIOUS_CLEAR_STATUS 32
#define VARIOUS_RESTORE_PP 33
#define VARIOUS_TRY_ACTIVATE_MOXIE 34
#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35
// atk80, dmg manipulation
#define ATK80_DMG_CHANGE_SIGN 0

View File

@ -6784,7 +6784,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_GEN6] =
.split = SPLIT_STATUS,
},
{ // MOVE_FELL_STINGER
.effect = EFFECT_PLACEHOLDER_209,
.effect = EFFECT_FELL_STINGER,
.power = 50,
.type = TYPE_BUG,
.accuracy = 100,

View File

@ -6160,6 +6160,20 @@ static void atk75_useitemonopponent(void)
gBattlescriptCurrInstr += 1;
}
static bool32 HasAttackerFaintedTarget(void)
{
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& gBattleMoves[gCurrentMove].power != 0
&& (gLastHitBy[gBattlerTarget] == 0xFF || gLastHitBy[gBattlerTarget] == gBattlerAttacker)
&& gBattleStruct->moveTarget[gBattlerAttacker] == gBattlerTarget
&& gBattlerTarget != gBattlerAttacker
&& gCurrentTurnActionNumber == GetBattlerTurnOrderNum(gBattlerAttacker)
&& gChosenMove == gChosenMoveByBattler[gBattlerAttacker])
return TRUE;
else
return FALSE;
}
static void atk76_various(void)
{
u8 side;
@ -6372,10 +6386,7 @@ static void atk76_various(void)
break;
case VARIOUS_TRY_ACTIVATE_MOXIE:
if (GetBattlerAbility(gActiveBattler) == ABILITY_MOXIE
&& (gLastHitBy[gBattlerTarget] == 0xFF || gLastHitBy[gBattlerTarget] == gBattlerAttacker)
&& gBattleStruct->moveTarget[gBattlerAttacker] == gBattlerTarget
&& gBattlerTarget != gBattlerAttacker
&& gCurrentTurnActionNumber == GetBattlerTurnOrderNum(gBattlerAttacker)
&& HasAttackerFaintedTarget()
&& !IsBattleLostForPlayer()
&& !IsBattleWonForPlayer()
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 0xC)
@ -6388,6 +6399,24 @@ static void atk76_various(void)
return;
}
break;
case VARIOUS_TRY_ACTIVATE_FELL_STINGER:
if (gBattleMoves[gCurrentMove].effect == EFFECT_FELL_STINGER
&& HasAttackerFaintedTarget()
&& !IsBattleLostForPlayer()
&& !IsBattleWonForPlayer()
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 0xC)
{
if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] >= 0xB)
SET_STATCHANGER(STAT_ATK, 1, FALSE);
else
SET_STATCHANGER(STAT_ATK, 2, FALSE);
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
BattleScriptPush(gBattlescriptCurrInstr + 3);
gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat;
return;
}
break;
}
gBattlescriptCurrInstr += 3;