mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-21 11:43:37 +01:00
Merge pull request #134 from thechurchofcage/epsilon
Baneful Bunker + King's Shield
This commit is contained in:
commit
5b43a9289d
@ -6428,6 +6428,7 @@ BattleScript_RoughSkinActivates::
|
|||||||
|
|
||||||
BattleScript_SpikyShieldEffect::
|
BattleScript_SpikyShieldEffect::
|
||||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
||||||
|
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||||
healthbarupdate BS_ATTACKER
|
healthbarupdate BS_ATTACKER
|
||||||
datahpupdate BS_ATTACKER
|
datahpupdate BS_ATTACKER
|
||||||
printstring STRINGID_PKMNHURTSWITH
|
printstring STRINGID_PKMNHURTSWITH
|
||||||
@ -6435,6 +6436,23 @@ BattleScript_SpikyShieldEffect::
|
|||||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||||
return
|
return
|
||||||
|
|
||||||
|
BattleScript_KingsShieldEffect::
|
||||||
|
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
|
||||||
|
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||||
|
seteffectsecondary
|
||||||
|
setmoveeffect 0
|
||||||
|
copybyte sBATTLER, gBattlerTarget
|
||||||
|
copybyte gBattlerTarget, gBattlerAttacker
|
||||||
|
copybyte gBattlerAttacker, sBATTLER
|
||||||
|
return
|
||||||
|
|
||||||
|
BattleScript_BanefulBunkerEffect::
|
||||||
|
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_x100000
|
||||||
|
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||||
|
seteffectsecondary
|
||||||
|
setmoveeffect 0
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_CuteCharmActivates::
|
BattleScript_CuteCharmActivates::
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
status2animation BS_ATTACKER, STATUS2_INFATUATION
|
status2animation BS_ATTACKER, STATUS2_INFATUATION
|
||||||
|
@ -300,6 +300,8 @@ extern const u8 BattleScript_PowderMoveNoEffect[];
|
|||||||
extern const u8 BattleScript_GrassyTerrainLoop[];
|
extern const u8 BattleScript_GrassyTerrainLoop[];
|
||||||
extern const u8 BattleScript_VCreateStatLoss[];
|
extern const u8 BattleScript_VCreateStatLoss[];
|
||||||
extern const u8 BattleScript_SpikyShieldEffect[];
|
extern const u8 BattleScript_SpikyShieldEffect[];
|
||||||
|
extern const u8 BattleScript_KingsShieldEffect[];
|
||||||
|
extern const u8 BattleScript_BanefulBunkerEffect[];
|
||||||
extern const u8 BattleScript_FlowerVeilProtectsRet[];
|
extern const u8 BattleScript_FlowerVeilProtectsRet[];
|
||||||
extern const u8 BattleScript_SweetVeilProtectsRet[];
|
extern const u8 BattleScript_SweetVeilProtectsRet[];
|
||||||
extern const u8 BattleScript_MoveEffectCoreEnforcer[];
|
extern const u8 BattleScript_MoveEffectCoreEnforcer[];
|
||||||
|
@ -162,7 +162,7 @@
|
|||||||
#define ATK48_DONT_CHECK_LOWER 0x8
|
#define ATK48_DONT_CHECK_LOWER 0x8
|
||||||
|
|
||||||
// atk49, moveend cases
|
// atk49, moveend cases
|
||||||
#define ATK49_SPIKY_SHIELD 0
|
#define ATK49_PROTECT_LIKE_EFFECT 0
|
||||||
#define ATK49_RAGE 1
|
#define ATK49_RAGE 1
|
||||||
#define ATK49_DEFROST 2
|
#define ATK49_DEFROST 2
|
||||||
#define ATK49_SYNCHRONIZE_TARGET 3
|
#define ATK49_SYNCHRONIZE_TARGET 3
|
||||||
|
@ -87,7 +87,7 @@ static const u8 sText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalre
|
|||||||
static const u8 sText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!");
|
static const u8 sText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!");
|
||||||
static const u8 sText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!");
|
static const u8 sText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn't affected!");
|
||||||
static const u8 sText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!");
|
static const u8 sText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!");
|
||||||
static const u8 sText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!");
|
static const u8 sText_PkmnPoisonedBy[] = _("{B_EFF_NAME_WITH_PREFIX} was poisoned by\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1}!");
|
||||||
static const u8 sText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!");
|
static const u8 sText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!");
|
||||||
static const u8 sText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned.");
|
static const u8 sText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned.");
|
||||||
static const u8 sText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!");
|
static const u8 sText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!");
|
||||||
|
@ -4221,19 +4221,37 @@ static void atk49_moveend(void)
|
|||||||
{
|
{
|
||||||
switch (gBattleScripting.atk49_state)
|
switch (gBattleScripting.atk49_state)
|
||||||
{
|
{
|
||||||
case ATK49_SPIKY_SHIELD:
|
case ATK49_PROTECT_LIKE_EFFECT:
|
||||||
if (gProtectStructs[gBattlerTarget].spikyShielded
|
if (gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT)
|
||||||
&& gBattleMoves[gCurrentMove].flags & FLAG_MAKES_CONTACT
|
|
||||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD)
|
|
||||||
{
|
{
|
||||||
gMoveResultFlags &= ~(MOVE_RESULT_NO_EFFECT);
|
if (gProtectStructs[gBattlerTarget].spikyShielded && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD)
|
||||||
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8;
|
{
|
||||||
if (gBattleMoveDamage == 0)
|
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8;
|
||||||
gBattleMoveDamage = 1;
|
if (gBattleMoveDamage == 0)
|
||||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD);
|
gBattleMoveDamage = 1;
|
||||||
BattleScriptPushCursor();
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD);
|
||||||
gBattlescriptCurrInstr = BattleScript_SpikyShieldEffect;
|
BattleScriptPushCursor();
|
||||||
effect = 1;
|
gBattlescriptCurrInstr = BattleScript_SpikyShieldEffect;
|
||||||
|
effect = 1;
|
||||||
|
}
|
||||||
|
else if (gProtectStructs[gBattlerTarget].kingsShielded)
|
||||||
|
{
|
||||||
|
i = gBattlerAttacker;
|
||||||
|
gBattlerAttacker = gBattlerTarget;
|
||||||
|
gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable
|
||||||
|
gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2;
|
||||||
|
BattleScriptPushCursor();
|
||||||
|
gBattlescriptCurrInstr = BattleScript_KingsShieldEffect;
|
||||||
|
effect = 1;
|
||||||
|
}
|
||||||
|
else if (gProtectStructs[gBattlerTarget].banefulBunkered)
|
||||||
|
{
|
||||||
|
gBattleScripting.moveEffect = MOVE_EFFECT_POISON | MOVE_EFFECT_AFFECTS_USER;
|
||||||
|
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BANEFUL_BUNKER);
|
||||||
|
BattleScriptPushCursor();
|
||||||
|
gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect;
|
||||||
|
effect = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
gBattleScripting.atk49_state++;
|
gBattleScripting.atk49_state++;
|
||||||
break;
|
break;
|
||||||
|
@ -3275,6 +3275,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
|||||||
gBattleScripting.moveEffect += MOVE_EFFECT_AFFECTS_USER;
|
gBattleScripting.moveEffect += MOVE_EFFECT_AFFECTS_USER;
|
||||||
BattleScriptPushCursor();
|
BattleScriptPushCursor();
|
||||||
gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect;
|
gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect;
|
||||||
|
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_EFFECT_SPORE);
|
||||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
@ -3288,6 +3289,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
|||||||
&& (Random() % 3) == 0)
|
&& (Random() % 3) == 0)
|
||||||
{
|
{
|
||||||
gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON;
|
gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON;
|
||||||
|
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_POISON_POINT);
|
||||||
BattleScriptPushCursor();
|
BattleScriptPushCursor();
|
||||||
gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect;
|
gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect;
|
||||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||||
@ -5629,6 +5631,9 @@ static inline void MulByTypeEffectiveness(u16 *modifier, u16 move, u8 moveType,
|
|||||||
mod = UQ_4_12(2.0);
|
mod = UQ_4_12(2.0);
|
||||||
if (moveType == TYPE_GROUND && defType == TYPE_FLYING && IsBattlerGrounded(battlerDef))
|
if (moveType == TYPE_GROUND && defType == TYPE_FLYING && IsBattlerGrounded(battlerDef))
|
||||||
mod = UQ_4_12(1.0);
|
mod = UQ_4_12(1.0);
|
||||||
|
|
||||||
|
if (gProtectStructs[battlerDef].kingsShielded && gBattleMoves[move].effect != EFFECT_FEINT)
|
||||||
|
mod = UQ_4_12(1.0);
|
||||||
|
|
||||||
MulModifier(modifier, mod);
|
MulModifier(modifier, mod);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user