add terrain seeds
This commit is contained in:
parent
c1dd3fca21
commit
7fffe23e63
@ -1760,6 +1760,11 @@
|
|||||||
various BS_ABILITY_BATTLER, VARIOUS_DESTROY_ABILITY_POPUP
|
various BS_ABILITY_BATTLER, VARIOUS_DESTROY_ABILITY_POPUP
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro doterrainseed battler:req, ptr:req
|
||||||
|
various \battler, VARIOUS_TERRAIN_SEED
|
||||||
|
.4byte \ptr
|
||||||
|
.endm
|
||||||
|
|
||||||
@ helpful macros
|
@ helpful macros
|
||||||
.macro setstatchanger stat:req, stages:req, down:req
|
.macro setstatchanger stat:req, stages:req, down:req
|
||||||
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7
|
||||||
|
|||||||
@ -1520,6 +1520,7 @@ BattleScript_EffectPsychicTerrain:
|
|||||||
waitanimation
|
waitanimation
|
||||||
printfromtable gTerrainStringIds
|
printfromtable gTerrainStringIds
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
|
call BattleScript_TerrainSeedLoop
|
||||||
goto BattleScript_MoveEnd
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_EffectTopsyTurvy:
|
BattleScript_EffectTopsyTurvy:
|
||||||
@ -1862,10 +1863,6 @@ RoomServiceLoop:
|
|||||||
playanimation BS_TARGET, B_ANIM_HELD_ITEM_EFFECT, NULL
|
playanimation BS_TARGET, B_ANIM_HELD_ITEM_EFFECT, NULL
|
||||||
waitanimation
|
waitanimation
|
||||||
playstatchangeanimation BS_TARGET, BIT_SPEED, STAT_CHANGE_NEGATIVE
|
playstatchangeanimation BS_TARGET, BIT_SPEED, STAT_CHANGE_NEGATIVE
|
||||||
|
|
||||||
@ setgraphicalstatchangevalues
|
|
||||||
@ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
|
||||||
@ waitanimation
|
|
||||||
printstring STRINGID_USINGXTHEYOFZN
|
printstring STRINGID_USINGXTHEYOFZN
|
||||||
waitmessage 0x40
|
waitmessage 0x40
|
||||||
removeitem BS_TARGET
|
removeitem BS_TARGET
|
||||||
@ -6883,12 +6880,26 @@ BattleScript_SnowWarningActivates::
|
|||||||
call BattleScript_WeatherFormChanges
|
call BattleScript_WeatherFormChanges
|
||||||
end3
|
end3
|
||||||
|
|
||||||
|
BattleScript_TerrainSeedLoop:
|
||||||
|
savetarget
|
||||||
|
setbyte gBattlerTarget, 0
|
||||||
|
TerrainSeedLoop:
|
||||||
|
copybyte sBATTLER, gBattlerTarget
|
||||||
|
doterrainseed BS_TARGET, TerrainSeedLoop_NextBattler
|
||||||
|
removeitem BS_TARGET
|
||||||
|
TerrainSeedLoop_NextBattler:
|
||||||
|
addbyte gBattlerTarget, 0x1
|
||||||
|
jumpifbytenotequal gBattlerTarget, gBattlersCount, TerrainSeedLoop
|
||||||
|
restoretarget
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_ElectricSurgeActivates::
|
BattleScript_ElectricSurgeActivates::
|
||||||
pause 0x20
|
pause 0x20
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
printstring STRINGID_TERRAINBECOMESELECTRIC
|
printstring STRINGID_TERRAINBECOMESELECTRIC
|
||||||
waitstate
|
waitstate
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_ELECTRIC, NULL
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_ELECTRIC, NULL
|
||||||
|
call BattleScript_TerrainSeedLoop
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_MistySurgeActivates::
|
BattleScript_MistySurgeActivates::
|
||||||
@ -6897,6 +6908,7 @@ BattleScript_MistySurgeActivates::
|
|||||||
printstring STRINGID_TERRAINBECOMESMISTY
|
printstring STRINGID_TERRAINBECOMESMISTY
|
||||||
waitstate
|
waitstate
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_MISTY, NULL
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_MISTY, NULL
|
||||||
|
call BattleScript_TerrainSeedLoop
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_GrassySurgeActivates::
|
BattleScript_GrassySurgeActivates::
|
||||||
@ -6905,6 +6917,7 @@ BattleScript_GrassySurgeActivates::
|
|||||||
printstring STRINGID_TERRAINBECOMESGRASSY
|
printstring STRINGID_TERRAINBECOMESGRASSY
|
||||||
waitstate
|
waitstate
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_GRASSY, NULL
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_GRASSY, NULL
|
||||||
|
call BattleScript_TerrainSeedLoop
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_PsychicSurgeActivates::
|
BattleScript_PsychicSurgeActivates::
|
||||||
@ -6913,6 +6926,7 @@ BattleScript_PsychicSurgeActivates::
|
|||||||
printstring STRINGID_TERRAINBECOMESPSYCHIC
|
printstring STRINGID_TERRAINBECOMESPSYCHIC
|
||||||
waitstate
|
waitstate
|
||||||
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_PSYCHIC, NULL
|
playanimation BS_SCRIPTING, B_ANIM_TERRAIN_PSYCHIC, NULL
|
||||||
|
call BattleScript_TerrainSeedLoop
|
||||||
end3
|
end3
|
||||||
|
|
||||||
BattleScript_BadDreamsActivates::
|
BattleScript_BadDreamsActivates::
|
||||||
@ -7613,6 +7627,20 @@ BattleScript_82DB85B::
|
|||||||
removeitem BS_ATTACKER
|
removeitem BS_ATTACKER
|
||||||
end2
|
end2
|
||||||
|
|
||||||
|
BattleScript_BerryStatRaiseRet::
|
||||||
|
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryStatRaiseRet_AbilityPopup
|
||||||
|
goto BattleScript_BerryStatRaiseRet_Anim
|
||||||
|
BattleScript_BerryStatRaiseRet_AbilityPopup:
|
||||||
|
call BattleScript_AbilityPopUp
|
||||||
|
BattleScript_BerryStatRaiseRet_Anim:
|
||||||
|
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
|
||||||
|
statbuffchange STAT_BUFF_ALLOW_PTR, BattleScript_BerryStatRaiseRet_End
|
||||||
|
BattleScript_BerryStatRaiseRet_End:
|
||||||
|
setbyte cMULTISTRING_CHOOSER, 0x4
|
||||||
|
call BattleScript_StatUp
|
||||||
|
removeitem BS_SCRIPTING
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_BerryFocusEnergyEnd2::
|
BattleScript_BerryFocusEnergyEnd2::
|
||||||
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
|
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
|
||||||
printstring STRINGID_PKMNUSEDXTOGETPUMPED
|
printstring STRINGID_PKMNUSEDXTOGETPUMPED
|
||||||
|
|||||||
@ -209,6 +209,7 @@ extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
|
|||||||
extern const u8 BattleScript_HangedOnMsg[];
|
extern const u8 BattleScript_HangedOnMsg[];
|
||||||
extern const u8 BattleScript_BerryConfuseHealEnd2[];
|
extern const u8 BattleScript_BerryConfuseHealEnd2[];
|
||||||
extern const u8 BattleScript_BerryStatRaiseEnd2[];
|
extern const u8 BattleScript_BerryStatRaiseEnd2[];
|
||||||
|
extern const u8 BattleScript_BerryStatRaiseRet[];
|
||||||
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
|
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
|
||||||
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
|
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
|
||||||
extern const u8 BattleScript_ArenaTurnBeginning[];
|
extern const u8 BattleScript_ArenaTurnBeginning[];
|
||||||
|
|||||||
@ -130,5 +130,6 @@ void ClearIllusionMon(u32 battlerId);
|
|||||||
bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId);
|
bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId);
|
||||||
bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
|
bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
|
||||||
u8 GetBattleMoveSplit(u32 moveId);
|
u8 GetBattleMoveSplit(u32 moveId);
|
||||||
|
u8 TryHandleSeed(u8 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 execute);
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_UTIL_H
|
#endif // GUARD_BATTLE_UTIL_H
|
||||||
|
|||||||
@ -167,6 +167,7 @@
|
|||||||
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100
|
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100
|
||||||
#define VARIOUS_JUMP_IF_ABSENT 101
|
#define VARIOUS_JUMP_IF_ABSENT 101
|
||||||
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
#define VARIOUS_DESTROY_ABILITY_POPUP 102
|
||||||
|
#define VARIOUS_TERRAIN_SEED 103
|
||||||
|
|
||||||
// Cmd_manipulatedamage
|
// Cmd_manipulatedamage
|
||||||
#define DMG_CHANGE_SIGN 0
|
#define DMG_CHANGE_SIGN 0
|
||||||
|
|||||||
@ -146,4 +146,10 @@
|
|||||||
|
|
||||||
#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))
|
||||||
|
|
||||||
|
// terrain seed params
|
||||||
|
#define HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN 0
|
||||||
|
#define HOLD_EFFECT_PARAM_GRASSY_TERRAIN 1
|
||||||
|
#define HOLD_EFFECT_PARAM_MISTY_TERRAIN 2
|
||||||
|
#define HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN 3
|
||||||
|
|
||||||
#endif // GUARD_HOLD_EFFECTS_H
|
#endif // GUARD_HOLD_EFFECTS_H
|
||||||
|
|||||||
@ -8322,6 +8322,34 @@ static void Cmd_various(void)
|
|||||||
case VARIOUS_DESTROY_ABILITY_POPUP:
|
case VARIOUS_DESTROY_ABILITY_POPUP:
|
||||||
DestroyAbilityPopUp(gActiveBattler);
|
DestroyAbilityPopUp(gActiveBattler);
|
||||||
break;
|
break;
|
||||||
|
case VARIOUS_TERRAIN_SEED:
|
||||||
|
if (GetBattlerHoldEffect(gActiveBattler, TRUE) == HOLD_EFFECT_SEEDS)
|
||||||
|
{
|
||||||
|
u8 effect = 0;
|
||||||
|
u16 item = gBattleMons[gActiveBattler].item;
|
||||||
|
switch (GetBattlerHoldEffectParam(gActiveBattler))
|
||||||
|
{
|
||||||
|
case HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN:
|
||||||
|
effect = TryHandleSeed(gActiveBattler, STATUS_FIELD_ELECTRIC_TERRAIN, STAT_DEF, item, FALSE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_GRASSY_TERRAIN:
|
||||||
|
effect = TryHandleSeed(gActiveBattler, STATUS_FIELD_GRASSY_TERRAIN, STAT_DEF, item, FALSE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_MISTY_TERRAIN:
|
||||||
|
effect = TryHandleSeed(gActiveBattler, STATUS_FIELD_MISTY_TERRAIN, STAT_SPDEF, item, FALSE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN:
|
||||||
|
effect = TryHandleSeed(gActiveBattler, STATUS_FIELD_PSYCHIC_TERRAIN, STAT_SPDEF, item, FALSE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (effect)
|
||||||
|
{
|
||||||
|
//gBattlescriptCurrInstr += 7;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattlescriptCurrInstr += 3;
|
gBattlescriptCurrInstr += 3;
|
||||||
|
|||||||
@ -5073,6 +5073,33 @@ static u8 RandomStatRaiseBerry(u32 battlerId, u32 itemId)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 TryHandleSeed(u8 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 execute)
|
||||||
|
{
|
||||||
|
if (gFieldStatuses & terrainFlag && gBattleMons[battler].statStages[statId] < MAX_STAT_STAGE)
|
||||||
|
{
|
||||||
|
PREPARE_STAT_BUFFER(gBattleTextBuff1, statId);
|
||||||
|
PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
|
||||||
|
|
||||||
|
gLastUsedItem = itemId; // for surge abilities
|
||||||
|
gEffectBattler = battler;
|
||||||
|
gBattleScripting.battler = battler;
|
||||||
|
SET_STATCHANGER(statId, 1, FALSE);
|
||||||
|
gBattleScripting.animArg1 = 0xE + statId;
|
||||||
|
gBattleScripting.animArg2 = 0;
|
||||||
|
if (execute)
|
||||||
|
{
|
||||||
|
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BattleScriptPushCursor();
|
||||||
|
gBattlescriptCurrInstr = BattleScript_BerryStatRaiseRet;
|
||||||
|
}
|
||||||
|
return ITEM_STATS_CHANGE;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static u8 ItemHealHp(u32 battlerId, u32 itemId, bool32 end2, bool32 percentHeal)
|
static u8 ItemHealHp(u32 battlerId, u32 itemId, bool32 end2, bool32 percentHeal)
|
||||||
{
|
{
|
||||||
if (HasEnoughHpToEatBerry(battlerId, 2, itemId))
|
if (HasEnoughHpToEatBerry(battlerId, 2, itemId))
|
||||||
@ -5312,6 +5339,23 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
|||||||
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
|
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
|
||||||
effect = ITEM_STATS_CHANGE;
|
effect = ITEM_STATS_CHANGE;
|
||||||
}
|
}
|
||||||
|
case HOLD_EFFECT_SEEDS:
|
||||||
|
switch (GetBattlerHoldEffectParam(battlerId))
|
||||||
|
{
|
||||||
|
case HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN:
|
||||||
|
effect = TryHandleSeed(battlerId, STATUS_FIELD_ELECTRIC_TERRAIN, STAT_DEF, gLastUsedItem, TRUE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_GRASSY_TERRAIN:
|
||||||
|
effect = TryHandleSeed(battlerId, STATUS_FIELD_GRASSY_TERRAIN, STAT_DEF, gLastUsedItem, TRUE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_MISTY_TERRAIN:
|
||||||
|
effect = TryHandleSeed(battlerId, STATUS_FIELD_MISTY_TERRAIN, STAT_SPDEF, gLastUsedItem, TRUE);
|
||||||
|
break;
|
||||||
|
case HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN:
|
||||||
|
effect = TryHandleSeed(battlerId, STATUS_FIELD_PSYCHIC_TERRAIN, STAT_SPDEF, gLastUsedItem, TRUE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user