mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-27 13:53:52 +01:00
Add Surge Abilities
This commit is contained in:
parent
872389b15c
commit
3d616dfffe
@ -678,6 +678,10 @@ gBattleAnims_General::
|
|||||||
.4byte General_IngrainHeal
|
.4byte General_IngrainHeal
|
||||||
.4byte General_WishHeal
|
.4byte General_WishHeal
|
||||||
.4byte General_MegaEvolution
|
.4byte General_MegaEvolution
|
||||||
|
.4byte General_TerrainMisty
|
||||||
|
.4byte General_TerrainGrassy
|
||||||
|
.4byte General_TerrainElectric
|
||||||
|
.4byte General_TerrainPsychic
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gBattleAnims_Special::
|
gBattleAnims_Special::
|
||||||
@ -12790,6 +12794,18 @@ General_MegaEvolution:
|
|||||||
blendoff
|
blendoff
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
|
|
||||||
|
General_TerrainMisty:
|
||||||
|
end
|
||||||
|
|
||||||
|
General_TerrainGrassy:
|
||||||
|
end
|
||||||
|
|
||||||
|
General_TerrainElectric:
|
||||||
|
end
|
||||||
|
|
||||||
|
General_TerrainPsychic:
|
||||||
|
end
|
||||||
|
|
||||||
AnimScript_82D85A3:
|
AnimScript_82D85A3:
|
||||||
createvisualtask sub_8172E9C, 2
|
createvisualtask sub_8172E9C, 2
|
||||||
|
@ -1602,7 +1602,7 @@ BattleScript_EffectHitEscape:
|
|||||||
setbyte sMOVEEND_STATE, 0x0
|
setbyte sMOVEEND_STATE, 0x0
|
||||||
moveend 0x0, 0x0
|
moveend 0x0, 0x0
|
||||||
jumpifbattleend BattleScript_HitEscapeEnd
|
jumpifbattleend BattleScript_HitEscapeEnd
|
||||||
jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0 BattleScript_HitEscapeEnd
|
jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0, BattleScript_HitEscapeEnd
|
||||||
jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | BS_ATTACKER, BattleScript_HitEscapeEnd
|
jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | BS_ATTACKER, BattleScript_HitEscapeEnd
|
||||||
openpartyscreen 0x1, BattleScript_HitEscapeEnd
|
openpartyscreen 0x1, BattleScript_HitEscapeEnd
|
||||||
switchoutabilities BS_ATTACKER
|
switchoutabilities BS_ATTACKER
|
||||||
@ -5880,6 +5880,38 @@ BattleScript_SnowWarningActivates::
|
|||||||
call BattleScript_WeatherFormChanges
|
call BattleScript_WeatherFormChanges
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_ElectricSurgeActivates::
|
||||||
|
pause 0x20
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_TERRAINBECOMESELECTRIC
|
||||||
|
waitstate
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_ELECTRIC, NULL
|
||||||
|
end3
|
||||||
|
|
||||||
|
BattleScript_MistySurgeActivates::
|
||||||
|
pause 0x20
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_TERRAINBECOMESMISTY
|
||||||
|
waitstate
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_MISTY, NULL
|
||||||
|
end3
|
||||||
|
|
||||||
|
BattleScript_GrassySurgeActivates::
|
||||||
|
pause 0x20
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_TERRAINBECOMESGRASSY
|
||||||
|
waitstate
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_GRASSY, NULL
|
||||||
|
end3
|
||||||
|
|
||||||
|
BattleScript_PsychicSurgeActivates::
|
||||||
|
pause 0x20
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
printstring STRINGID_TERRAINBECOMESPSYCHIC
|
||||||
|
waitstate
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_PSYCHIC, NULL
|
||||||
|
end3
|
||||||
|
|
||||||
BattleScript_BadDreamsActivates::
|
BattleScript_BadDreamsActivates::
|
||||||
setbyte gBattlerTarget, 0
|
setbyte gBattlerTarget, 0
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
|
@ -289,5 +289,9 @@ extern const u8 BattleScript_MoveUsedPsychicTerrainPrevents[];
|
|||||||
extern const u8 BattleScript_MoveUsedPowder[];
|
extern const u8 BattleScript_MoveUsedPowder[];
|
||||||
extern const u8 BattleScript_SelectingNotAllowedBelch[];
|
extern const u8 BattleScript_SelectingNotAllowedBelch[];
|
||||||
extern const u8 BattleScript_SelectingNotAllowedBelchInPalace[];
|
extern const u8 BattleScript_SelectingNotAllowedBelchInPalace[];
|
||||||
|
extern const u8 BattleScript_PsychicSurgeActivates[];
|
||||||
|
extern const u8 BattleScript_GrassySurgeActivates[];
|
||||||
|
extern const u8 BattleScript_MistySurgeActivates[];
|
||||||
|
extern const u8 BattleScript_ElectricSurgeActivates[];
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||||
|
@ -316,7 +316,7 @@
|
|||||||
// . .
|
// . .
|
||||||
// . .
|
// . .
|
||||||
// 127
|
// 127
|
||||||
//
|
//
|
||||||
#define SOUND_PAN_ATTACKER -64
|
#define SOUND_PAN_ATTACKER -64
|
||||||
#define SOUND_PAN_TARGET 63
|
#define SOUND_PAN_TARGET 63
|
||||||
|
|
||||||
@ -374,6 +374,10 @@
|
|||||||
#define B_ANIM_INGRAIN_HEAL 0x15
|
#define B_ANIM_INGRAIN_HEAL 0x15
|
||||||
#define B_ANIM_WISH_HEAL 0x16
|
#define B_ANIM_WISH_HEAL 0x16
|
||||||
#define B_ANIM_MEGA_EVOLUTION 0x17
|
#define B_ANIM_MEGA_EVOLUTION 0x17
|
||||||
|
#define B_ANIM_TERRAIN_MISTY 0x18
|
||||||
|
#define B_ANIM_TERRAIN_GRASSY 0x19
|
||||||
|
#define B_ANIM_TERRAIN_ELECTRIC 0x1A
|
||||||
|
#define B_ANIM_TERRAIN_PSYCHIC 0x1B
|
||||||
|
|
||||||
// special animations table
|
// special animations table
|
||||||
#define B_ANIM_LVL_UP 0x0
|
#define B_ANIM_LVL_UP 0x0
|
||||||
@ -415,32 +419,32 @@
|
|||||||
#define ANIM_WEATHER_HAIL 4
|
#define ANIM_WEATHER_HAIL 4
|
||||||
|
|
||||||
// Battle mon back animations.
|
// Battle mon back animations.
|
||||||
#define BACK_ANIM_NONE 0x00
|
#define BACK_ANIM_NONE 0x00
|
||||||
#define BACK_ANIM_H_SLIDE_QUICK 0x01
|
#define BACK_ANIM_H_SLIDE_QUICK 0x01
|
||||||
#define BACK_ANIM_H_SLIDE 0x02
|
#define BACK_ANIM_H_SLIDE 0x02
|
||||||
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
|
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
|
||||||
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
|
#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
|
||||||
#define BACK_ANIM_SHRINK_GROW_1 0x05
|
#define BACK_ANIM_SHRINK_GROW_1 0x05
|
||||||
#define BACK_ANIM_GROW_1 0x06
|
#define BACK_ANIM_GROW_1 0x06
|
||||||
#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
|
#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
|
||||||
#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
|
#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
|
||||||
#define BACK_ANIM_VERTICAL_SHAKE 0x09
|
#define BACK_ANIM_VERTICAL_SHAKE 0x09
|
||||||
#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
|
#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
|
||||||
#define BACK_ANIM_VERTICAL_STRETCH 0x0b
|
#define BACK_ANIM_VERTICAL_STRETCH 0x0b
|
||||||
#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
|
#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
|
||||||
#define BACK_ANIM_GROW_2 0x0d
|
#define BACK_ANIM_GROW_2 0x0d
|
||||||
#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
|
#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
|
||||||
#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
|
#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
|
||||||
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
|
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
|
||||||
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
|
#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
|
||||||
#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
|
#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
|
||||||
#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
|
#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
|
||||||
#define BACK_ANIM_SHRINK_GROW_2 0x14
|
#define BACK_ANIM_SHRINK_GROW_2 0x14
|
||||||
#define BACK_ANIM_JOLT_RIGHT 0x15
|
#define BACK_ANIM_JOLT_RIGHT 0x15
|
||||||
#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
|
#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
|
||||||
#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
|
#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
|
||||||
#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
|
#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
|
||||||
#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
|
#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
|
||||||
|
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H
|
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H
|
||||||
|
@ -113,7 +113,8 @@
|
|||||||
#define HOLD_EFFECT_MEGA_STONE 130
|
#define HOLD_EFFECT_MEGA_STONE 130
|
||||||
|
|
||||||
// Gen7 hold effects
|
// Gen7 hold effects
|
||||||
#define HOLD_EFFECT_PROTECTIVE_PADS 149
|
#define HOLD_EFFECT_PROTECTIVE_PADS 149
|
||||||
|
#define HOLD_EFFECT_TERRAIN_EXTENDER 150
|
||||||
|
|
||||||
#define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS))
|
#define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS))
|
||||||
|
|
||||||
|
@ -6245,9 +6245,12 @@ static void HandleTerrainMove(u32 moveEffect)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | EFFECT_ELECTRIC_TERRAIN | EFFECT_PSYCHIC_TERRAIN);
|
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN);
|
||||||
gFieldStatuses |= statusFlag;
|
gFieldStatuses |= statusFlag;
|
||||||
*timer = 5;
|
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER)
|
||||||
|
*timer = 8;
|
||||||
|
else
|
||||||
|
*timer = 5;
|
||||||
gBattlescriptCurrInstr += 7;
|
gBattlescriptCurrInstr += 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2568,10 +2568,27 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility)
|
|||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer)
|
||||||
|
{
|
||||||
|
if (!(gFieldStatuses & statusFlag))
|
||||||
{
|
{
|
||||||
return FALSE;
|
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | EFFECT_ELECTRIC_TERRAIN | EFFECT_PSYCHIC_TERRAIN);
|
||||||
|
gFieldStatuses |= statusFlag;
|
||||||
|
|
||||||
|
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER)
|
||||||
|
*timer = 8;
|
||||||
|
else
|
||||||
|
*timer = 5;
|
||||||
|
|
||||||
|
gBattlerAttacker = gBattleScripting.battler = battler;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg)
|
u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg)
|
||||||
@ -2780,6 +2797,34 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
|||||||
effect++;
|
effect++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ABILITY_ELECTRIC_SURGE:
|
||||||
|
if (TryChangeBattleTerrain(battler, STATUS_FIELD_ELECTRIC_TERRAIN, &gFieldTimers.electricTerrainTimer))
|
||||||
|
{
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_ElectricSurgeActivates);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ABILITY_GRASSY_SURGE:
|
||||||
|
if (TryChangeBattleTerrain(battler, STATUS_FIELD_GRASSY_TERRAIN, &gFieldTimers.grassyTerrainTimer))
|
||||||
|
{
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_GrassySurgeActivates);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ABILITY_MISTY_SURGE:
|
||||||
|
if (TryChangeBattleTerrain(battler, STATUS_FIELD_MISTY_TERRAIN, &gFieldTimers.mistyTerrainTimer))
|
||||||
|
{
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_MistySurgeActivates);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ABILITY_PSYCHIC_SURGE:
|
||||||
|
if (TryChangeBattleTerrain(battler, STATUS_FIELD_PSYCHIC_TERRAIN, &gFieldTimers.psychicTerrainTimer))
|
||||||
|
{
|
||||||
|
BattleScriptPushCursorAndCallback(BattleScript_PsychicSurgeActivates);
|
||||||
|
effect++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case ABILITY_INTIMIDATE:
|
case ABILITY_INTIMIDATE:
|
||||||
if (!(gSpecialStatuses[battler].intimidatedMon))
|
if (!(gSpecialStatuses[battler].intimidatedMon))
|
||||||
{
|
{
|
||||||
@ -3454,7 +3499,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
|||||||
{
|
{
|
||||||
BattleScriptPushCursorAndCallback(BattleScript_TraceActivates);
|
BattleScriptPushCursorAndCallback(BattleScript_TraceActivates);
|
||||||
gStatuses3[i] &= ~(STATUS3_TRACE);
|
gStatuses3[i] &= ~(STATUS3_TRACE);
|
||||||
gBattleScripting.battler = i;
|
gBattlerAbility = gBattleScripting.battler = i;
|
||||||
|
|
||||||
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
|
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
|
||||||
PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
|
PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user