Add Roost endturn effect
This commit is contained in:
parent
ad6fa078c9
commit
1468107002
@ -137,7 +137,8 @@ struct UnknownFlags
|
||||
u32 flags[4];
|
||||
};
|
||||
|
||||
#define UNKNOWN_FLAG_FLASH_FIRE 1
|
||||
#define RESOURCE_FLAG_FLASH_FIRE 0x1
|
||||
#define RESOURCE_FLAG_ROOST 0x2
|
||||
|
||||
struct DisableStruct
|
||||
{
|
||||
@ -578,6 +579,7 @@ struct BattleStruct
|
||||
u8 debugBattler;
|
||||
u8 magnitudeBasePower;
|
||||
u8 presentBasePower;
|
||||
u8 roostTypes[MAX_BATTLERS_COUNT][3];
|
||||
};
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
|
||||
@ -2358,7 +2358,7 @@ static void BattleAICmd_if_flash_fired(void)
|
||||
{
|
||||
u8 battlerId = BattleAI_GetWantedBattler(gAIScriptPtr[1]);
|
||||
|
||||
if (gBattleResources->flags->flags[battlerId] & UNKNOWN_FLAG_FLASH_FIRE)
|
||||
if (gBattleResources->flags->flags[battlerId] & RESOURCE_FLAG_FLASH_FIRE)
|
||||
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
|
||||
else
|
||||
gAIScriptPtr += 6;
|
||||
|
||||
@ -1025,6 +1025,7 @@ enum
|
||||
ENDTURN_TAUNT,
|
||||
ENDTURN_YAWN,
|
||||
ENDTURN_ITEMS2,
|
||||
ENDTURN_ROOST,
|
||||
ENDTURN_BATTLER_COUNT
|
||||
};
|
||||
|
||||
@ -1408,6 +1409,15 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
}
|
||||
gBattleStruct->turnEffectsTracker++;
|
||||
break;
|
||||
case ENDTURN_ROOST: // Return flying type.
|
||||
if (gBattleResources->flags->flags[gActiveBattler] & RESOURCE_FLAG_ROOST)
|
||||
{
|
||||
gBattleResources->flags->flags[gActiveBattler] &= ~(RESOURCE_FLAG_ROOST);
|
||||
gBattleMons[gActiveBattler].type1 = gBattleStruct->roostTypes[gActiveBattler][0];
|
||||
gBattleMons[gActiveBattler].type2 = gBattleStruct->roostTypes[gActiveBattler][1];
|
||||
}
|
||||
gBattleStruct->turnEffectsTracker++;
|
||||
break;
|
||||
case ENDTURN_BATTLER_COUNT: // done
|
||||
gBattleStruct->turnEffectsTracker = 0;
|
||||
gBattleStruct->turnEffectsBattlerId++;
|
||||
@ -2338,7 +2348,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
case ABILITY_FLASH_FIRE:
|
||||
if (moveType == TYPE_FIRE && !(gBattleMons[battler].status1 & STATUS1_FREEZE))
|
||||
{
|
||||
if (!(gBattleResources->flags->flags[battler] & UNKNOWN_FLAG_FLASH_FIRE))
|
||||
if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE))
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
if (gProtectStructs[gBattlerAttacker].notFirstStrike)
|
||||
@ -2346,7 +2356,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
else
|
||||
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
|
||||
|
||||
gBattleResources->flags->flags[battler] |= UNKNOWN_FLAG_FLASH_FIRE;
|
||||
gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE;
|
||||
effect = 2;
|
||||
}
|
||||
else
|
||||
@ -4387,7 +4397,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b
|
||||
MulModifier(&modifier, UQ_4_12(0.5));
|
||||
break;
|
||||
case ABILITY_FLASH_FIRE:
|
||||
if (moveType == TYPE_FIRE && gBattleResources->flags->flags[battlerAtk] & UNKNOWN_FLAG_FLASH_FIRE)
|
||||
if (moveType == TYPE_FIRE && gBattleResources->flags->flags[battlerAtk] & RESOURCE_FLAG_FLASH_FIRE)
|
||||
MulModifier(&modifier, UQ_4_12(1.5));
|
||||
break;
|
||||
case ABILITY_SWARM:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user