implemented G-Max Chi Strike, finished G-Max Gold Rush

This commit is contained in:
AgustinGDLV 2023-02-27 22:01:19 -08:00
parent da24b717e4
commit 3cdcf2a356
5 changed files with 45 additions and 3 deletions

View file

@ -10496,6 +10496,7 @@ BattleScript_Status2FoesIncrement:
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_Status2FoesLoop
BattleScript_Status2FoesEnd: BattleScript_Status2FoesEnd:
restoretarget restoretarget
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_DoConfuseAnim: BattleScript_DoConfuseAnim:
@ -10506,11 +10507,34 @@ BattleScript_DoInfatuationAnim:
status2animation BS_TARGET, STATUS2_INFATUATION status2animation BS_TARGET, STATUS2_INFATUATION
goto BattleScript_Status2FoesPrintMessage goto BattleScript_Status2FoesPrintMessage
BattleScript_PrintCoinsScattered:
printstring STRINGID_COINSSCATTERED
goto BattleScript_MoveEnd
BattleScript_TormentEnds:: BattleScript_TormentEnds::
printstring STRINGID_TORMENTEDNOMORE printstring STRINGID_TORMENTEDNOMORE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
end2 end2
BattleScript_EffectRaiseCritAlliesAnim::
savetarget
setbyte gBattlerTarget, 0
BattleScript_RaiseCritAlliesLoop:
jumpiftargetnotally BattleScript_RaiseCritAlliesIncrement
jumpiftargetabsent BattleScript_RaiseCritAlliesIncrement
setstatchanger STAT_ATK, 0, FALSE @ for animation
setgraphicalstatchangevalues
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNGETTINGPUMPED
waitmessage B_WAIT_TIME_LONG
BattleScript_RaiseCritAlliesIncrement:
setbyte sSTAT_ANIM_PLAYED, FALSE
addbyte gBattlerTarget, 1
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RaiseCritAlliesLoop
BattleScript_RaiseCritAlliesEnd:
restoretarget
return
BattleScript_PokemonCantUseTheMove:: BattleScript_PokemonCantUseTheMove::
attackstring attackstring
ppreduce ppreduce

View file

@ -677,6 +677,7 @@ struct BattleStruct
u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party.
u8 storedHealingWish:4; // Each battler as a bit. u8 storedHealingWish:4; // Each battler as a bit.
u8 storedLunarDance:4; // Each battler as a bit. u8 storedLunarDance:4; // Each battler as a bit.
u8 sideCritStages[NUM_BATTLE_SIDES]; // G-Max Chi Strike boosts crit stages of allies.
}; };
#define F_DYNAMIC_TYPE_1 (1 << 6) #define F_DYNAMIC_TYPE_1 (1 << 6)

View file

@ -481,5 +481,6 @@ extern const u8 BattleScript_EffectTryReducePP[];
extern const u8 BattleScript_EffectStatus1Foes[]; extern const u8 BattleScript_EffectStatus1Foes[];
extern const u8 BattleScript_EffectStatus2Foes[]; extern const u8 BattleScript_EffectStatus2Foes[];
extern const u8 BattleScript_TormentEnds[]; extern const u8 BattleScript_TormentEnds[];
extern const u8 BattleScript_EffectRaiseCritAlliesAnim[];
#endif // GUARD_BATTLE_SCRIPTS_H #endif // GUARD_BATTLE_SCRIPTS_H

View file

@ -29,7 +29,7 @@ static const u16 sMaxMoveTable[] =
[TYPE_STEEL] = MOVE_MAX_STEELSPIKE, [TYPE_STEEL] = MOVE_MAX_STEELSPIKE,
[TYPE_FIRE] = MOVE_MAX_FLARE, [TYPE_FIRE] = MOVE_MAX_FLARE,
[TYPE_WATER] = MOVE_MAX_GEYSER, [TYPE_WATER] = MOVE_MAX_GEYSER,
[TYPE_GRASS] = MOVE_MAX_OVERGROWTH, [TYPE_GRASS] = MOVE_G_MAX_CHI_STRIKE,
[TYPE_ELECTRIC] = MOVE_G_MAX_DEPLETION, [TYPE_ELECTRIC] = MOVE_G_MAX_DEPLETION,
[TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM,
[TYPE_ICE] = MOVE_MAX_HAILSTORM, [TYPE_ICE] = MOVE_MAX_HAILSTORM,
@ -92,7 +92,7 @@ bool8 ShouldUseMaxMove(u16 battlerId, u16 baseMove)
// return !IsRaidBossUsingRegularMove(battlerId, baseMove); // return !IsRaidBossUsingRegularMove(battlerId, baseMove);
if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0) if (gBattleStruct->dynamax.dynamaxTurns[battlerId] > 0)
return TRUE; return TRUE;
return FALSE; return battlerId == B_POSITION_PLAYER_LEFT;
} }
// Returns the appropriate Max Move or G-Max Move for a battler to use. // Returns the appropriate Max Move or G-Max Move for a battler to use.
@ -494,6 +494,15 @@ u16 SetMaxMoveEffect(u16 move)
effect++; effect++;
break; break;
case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: case MAX_EFFECT_CONFUSE_FOES_PAY_DAY:
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
u16 payday = gPaydayMoney;
gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100);
if (payday > gPaydayMoney)
gPaydayMoney = 0xFFFF;
gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message
}
// fall through
case MAX_EFFECT_CONFUSE_FOES: case MAX_EFFECT_CONFUSE_FOES:
case MAX_EFFECT_INFATUATE_FOES: case MAX_EFFECT_INFATUATE_FOES:
case MAX_EFFECT_TORMENT_FOES: case MAX_EFFECT_TORMENT_FOES:
@ -502,6 +511,12 @@ u16 SetMaxMoveEffect(u16 move)
gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes;
effect++; effect++;
break; break;
case MAX_EFFECT_CRIT_PLUS:
gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)]++;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim;
effect++;
break;
} }
return effect; return effect;
} }

View file

@ -2054,7 +2054,8 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi
#if B_AFFECTION_MECHANICS == TRUE #if B_AFFECTION_MECHANICS == TRUE
+ 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254) + 2 * (GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_200_TO_254)
#endif #endif
+ (abilityAtk == ABILITY_SUPER_LUCK); + (abilityAtk == ABILITY_SUPER_LUCK)
+ gBattleStruct->sideCritStages[GetBattlerSide(gBattlerAttacker)];
if (critChance >= ARRAY_COUNT(sCriticalHitChance)) if (critChance >= ARRAY_COUNT(sCriticalHitChance))
critChance = ARRAY_COUNT(sCriticalHitChance) - 1; critChance = ARRAY_COUNT(sCriticalHitChance) - 1;