mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-19 01:44:20 +01:00
Geomancy
This commit is contained in:
parent
9c44adba98
commit
2daf1fbbf8
@ -261,6 +261,11 @@ AI_CheckBadMove_CheckEffect: @ 82DC045
|
|||||||
if_effect EFFECT_TAUNT, AI_CBM_Taunt
|
if_effect EFFECT_TAUNT, AI_CBM_Taunt
|
||||||
if_effect EFFECT_HEAL_BELL, AI_CBM_HealBell
|
if_effect EFFECT_HEAL_BELL, AI_CBM_HealBell
|
||||||
if_effect EFFECT_FOLLOW_ME, AI_CBM_FollowMe
|
if_effect EFFECT_FOLLOW_ME, AI_CBM_FollowMe
|
||||||
|
if_effect EFFECT_GEOMANCY, AI_CBM_QuiverDance
|
||||||
|
end
|
||||||
|
|
||||||
|
AI_CBM_Geomancy:
|
||||||
|
call AI_CBM_QuiverDance
|
||||||
end
|
end
|
||||||
|
|
||||||
AI_CBM_FollowMe:
|
AI_CBM_FollowMe:
|
||||||
@ -3452,6 +3457,7 @@ AI_SetupFirstTurn_SetupEffectsToEncourage:
|
|||||||
.2byte EFFECT_SUNNY_DAY
|
.2byte EFFECT_SUNNY_DAY
|
||||||
.2byte EFFECT_SANDSTORM
|
.2byte EFFECT_SANDSTORM
|
||||||
.2byte EFFECT_HAIL
|
.2byte EFFECT_HAIL
|
||||||
|
.2byte EFFECT_GEOMANCY
|
||||||
.2byte -1
|
.2byte -1
|
||||||
|
|
||||||
AI_PreferStrongestMove:
|
AI_PreferStrongestMove:
|
||||||
|
@ -360,6 +360,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
|
|||||||
.4byte BattleScript_EffectPurify
|
.4byte BattleScript_EffectPurify
|
||||||
.4byte BattleScript_EffectBurnUp
|
.4byte BattleScript_EffectBurnUp
|
||||||
.4byte BattleScript_EffectShoreUp
|
.4byte BattleScript_EffectShoreUp
|
||||||
|
.4byte BattleScript_EffectGeomancy
|
||||||
|
|
||||||
BattleScript_EffectBurnUp:
|
BattleScript_EffectBurnUp:
|
||||||
attackcanceler
|
attackcanceler
|
||||||
@ -3048,6 +3049,48 @@ BattleScript_EffectTwoTurnsAttackFreezeShock:
|
|||||||
setbyte sTWOTURN_STRINGID, 0x0
|
setbyte sTWOTURN_STRINGID, 0x0
|
||||||
goto BattleScript_EffectTwoTurnsAttackContinue
|
goto BattleScript_EffectTwoTurnsAttackContinue
|
||||||
|
|
||||||
|
BattleScript_EffectGeomancy:
|
||||||
|
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_GeomancySecondTurn
|
||||||
|
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_GeomancySecondTurn
|
||||||
|
setbyte sTWOTURN_STRINGID, 0x9
|
||||||
|
call BattleScriptFirstChargingTurn
|
||||||
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
|
BattleScript_GeomancySecondTurn:
|
||||||
|
attackcanceler
|
||||||
|
setmoveeffect MOVE_EFFECT_CHARGING
|
||||||
|
setbyte sB_ANIM_TURN, 0x1
|
||||||
|
clearstatusfromeffect BS_ATTACKER
|
||||||
|
orword gHitMarker, HITMARKER_NO_PPDEDUCT
|
||||||
|
attackstring
|
||||||
|
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_GeomancyDoMoveAnim
|
||||||
|
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPDEF, 0xC, BattleScript_GeomancyDoMoveAnim
|
||||||
|
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, 0xC, BattleScript_CantRaiseMultipleStats
|
||||||
|
BattleScript_GeomancyDoMoveAnim::
|
||||||
|
attackanimation
|
||||||
|
waitanimation
|
||||||
|
setbyte sSTAT_ANIM_PLAYED, FALSE
|
||||||
|
playstatchangeanimation BS_ATTACKER, BIT_SPATK | BIT_SPDEF | BIT_SPEED, 0x0
|
||||||
|
setstatchanger STAT_SPATK, 2, FALSE
|
||||||
|
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_GeomancyTrySpDef
|
||||||
|
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_GeomancyTrySpDef
|
||||||
|
printfromtable gStatUpStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
BattleScript_GeomancyTrySpDef::
|
||||||
|
setstatchanger STAT_SPDEF, 2, FALSE
|
||||||
|
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_GeomancyTrySpeed
|
||||||
|
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_GeomancyTrySpeed
|
||||||
|
printfromtable gStatUpStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
BattleScript_GeomancyTrySpeed::
|
||||||
|
setstatchanger STAT_SPEED, 2, FALSE
|
||||||
|
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_GeomancyEnd
|
||||||
|
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_GeomancyEnd
|
||||||
|
printfromtable gStatUpStringIds
|
||||||
|
waitmessage 0x40
|
||||||
|
BattleScript_GeomancyEnd::
|
||||||
|
goto BattleScript_MoveEnd
|
||||||
|
|
||||||
BattleScript_EffectConfuseHit::
|
BattleScript_EffectConfuseHit::
|
||||||
setmoveeffect MOVE_EFFECT_CONFUSION
|
setmoveeffect MOVE_EFFECT_CONFUSION
|
||||||
goto BattleScript_EffectHit
|
goto BattleScript_EffectHit
|
||||||
|
@ -348,5 +348,6 @@
|
|||||||
#define EFFECT_PURIFY 342
|
#define EFFECT_PURIFY 342
|
||||||
#define EFFECT_BURN_UP 343
|
#define EFFECT_BURN_UP 343
|
||||||
#define EFFECT_SHORE_UP 344
|
#define EFFECT_SHORE_UP 344
|
||||||
|
#define EFFECT_GEOMANCY 345
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||||
|
@ -545,7 +545,8 @@
|
|||||||
#define STRINGID_HEALERCURE 541
|
#define STRINGID_HEALERCURE 541
|
||||||
#define STRINGID_SCRIPTINGABILITYSTATRAISE 542
|
#define STRINGID_SCRIPTINGABILITYSTATRAISE 542
|
||||||
#define STRINGID_RECEIVERABILITYTAKEOVER 543
|
#define STRINGID_RECEIVERABILITYTAKEOVER 543
|
||||||
|
#define STRINGID_PKNMABSORBINGPOWER 544
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 544
|
#define BATTLESTRINGS_COUNT 545
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H
|
#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H
|
||||||
|
@ -666,9 +666,11 @@ static const u8 sText_AttackerCuredTargetStatus[] = _("{B_ATK_NAME_WITH_PREFIX}
|
|||||||
static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!");
|
static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!");
|
||||||
static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!");
|
static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!");
|
||||||
static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!");
|
static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!");
|
||||||
|
static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is absorbing power!");
|
||||||
|
|
||||||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||||
{
|
{
|
||||||
|
[STRINGID_PKNMABSORBINGPOWER - 12] = sText_PkmnAbsorbingPower,
|
||||||
[STRINGID_RECEIVERABILITYTAKEOVER - 12] = sText_ReceiverAbilityTakeOver,
|
[STRINGID_RECEIVERABILITYTAKEOVER - 12] = sText_ReceiverAbilityTakeOver,
|
||||||
[STRINGID_SCRIPTINGABILITYSTATRAISE - 12] = sText_ScriptingAbilityRaisedStat,
|
[STRINGID_SCRIPTINGABILITYSTATRAISE - 12] = sText_ScriptingAbilityRaisedStat,
|
||||||
[STRINGID_HEALERCURE - 12] = sText_HealerCure,
|
[STRINGID_HEALERCURE - 12] = sText_HealerCure,
|
||||||
@ -1334,7 +1336,8 @@ const u16 gStatDownStringIds[] =
|
|||||||
const u16 gFirstTurnOfTwoStringIds[] =
|
const u16 gFirstTurnOfTwoStringIds[] =
|
||||||
{
|
{
|
||||||
STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
|
STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
|
||||||
STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP, STRINGID_VANISHEDINSTANTLY
|
STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP, STRINGID_VANISHEDINSTANTLY,
|
||||||
|
STRINGID_PKNMABSORBINGPOWER
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gWrappedStringIds[] =
|
const u16 gWrappedStringIds[] =
|
||||||
|
@ -7257,9 +7257,7 @@ static void Cmd_various(void)
|
|||||||
&& !NoAliveMonsForEitherParty()
|
&& !NoAliveMonsForEitherParty()
|
||||||
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 12)
|
&& gBattleMons[gBattlerAttacker].statStages[STAT_ATK] != 12)
|
||||||
{
|
{
|
||||||
if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] >= 11)
|
if (B_FELL_STINGER_STAT_RAISE >= GEN_7)
|
||||||
SET_STATCHANGER(STAT_ATK, 1, FALSE);
|
|
||||||
else if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] <= 9 && B_FELL_STINGER_STAT_RAISE >= GEN_7)
|
|
||||||
SET_STATCHANGER(STAT_ATK, 3, FALSE);
|
SET_STATCHANGER(STAT_ATK, 3, FALSE);
|
||||||
else
|
else
|
||||||
SET_STATCHANGER(STAT_ATK, 2, FALSE);
|
SET_STATCHANGER(STAT_ATK, 2, FALSE);
|
||||||
@ -8592,6 +8590,10 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
|
|||||||
else // try to decrease
|
else // try to decrease
|
||||||
{
|
{
|
||||||
statValue = -GET_STAT_BUFF_VALUE(statValue);
|
statValue = -GET_STAT_BUFF_VALUE(statValue);
|
||||||
|
if (gBattleMons[gActiveBattler].statStages[statId] == 1)
|
||||||
|
statValue = -1;
|
||||||
|
else if (gBattleMons[gActiveBattler].statStages[statId] == 2)
|
||||||
|
statValue = -2;
|
||||||
gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
||||||
index = 1;
|
index = 1;
|
||||||
if (statValue == -2)
|
if (statValue == -2)
|
||||||
@ -8620,12 +8622,15 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
|
|||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
|
||||||
else
|
else
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
|
gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // stat increase
|
else // stat increase
|
||||||
{
|
{
|
||||||
statValue = GET_STAT_BUFF_VALUE(statValue);
|
statValue = GET_STAT_BUFF_VALUE(statValue);
|
||||||
|
if (gBattleMons[gActiveBattler].statStages[statId] == 11)
|
||||||
|
statValue = 1;
|
||||||
|
else if (gBattleMons[gActiveBattler].statStages[statId] == 10)
|
||||||
|
statValue = 2;
|
||||||
gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
||||||
index = 1;
|
index = 1;
|
||||||
if (statValue == 2)
|
if (statValue == 2)
|
||||||
|
@ -3192,7 +3192,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
|||||||
{
|
{
|
||||||
i = (Random() % statsNum) + STAT_ATK;
|
i = (Random() % statsNum) + STAT_ATK;
|
||||||
} while (!(validToRaise & gBitTable[i]));
|
} while (!(validToRaise & gBitTable[i]));
|
||||||
SET_STATCHANGER(i, (gBattleMons[battler].statStages[i] < 11) ? 2 : 1, FALSE);
|
SET_STATCHANGER(i, 2, FALSE);
|
||||||
validToLower &= ~(gBitTable[i]); // Can't lower the same stat as raising.
|
validToLower &= ~(gBitTable[i]); // Can't lower the same stat as raising.
|
||||||
}
|
}
|
||||||
if (validToLower != 0) // Find stat to lower
|
if (validToLower != 0) // Find stat to lower
|
||||||
|
@ -8436,7 +8436,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
|||||||
|
|
||||||
[MOVE_GEOMANCY] =
|
[MOVE_GEOMANCY] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect
|
.effect = EFFECT_GEOMANCY,
|
||||||
.power = 0,
|
.power = 0,
|
||||||
.type = TYPE_FAIRY,
|
.type = TYPE_FAIRY,
|
||||||
.accuracy = 0,
|
.accuracy = 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user