mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-24 15:07:47 -05:00
Document Check/TriggerRedirectionAbilities
This commit is contained in:
parent
81eb400724
commit
a43f2c0365
|
|
@ -173,7 +173,7 @@ enum {
|
|||
#define HOLD_EFFECT_ARCEUS_ELECTRIC 128
|
||||
#define HOLD_EFFECT_ARCEUS_GRASS 129
|
||||
#define HOLD_EFFECT_ARCEUS_ICE 130
|
||||
#define HOLD_EFFECT_ARCEUS_FIGHT 131
|
||||
#define HOLD_EFFECT_ARCEUS_FIGHTING 131
|
||||
#define HOLD_EFFECT_ARCEUS_POISON 132
|
||||
#define HOLD_EFFECT_ARCEUS_GROUND 133
|
||||
#define HOLD_EFFECT_ARCEUS_FLYING 134
|
||||
|
|
|
|||
|
|
@ -356,8 +356,31 @@ BOOL BattleSystem_TriggerSecondaryEffect(BattleSystem *battleSys, BattleContext
|
|||
* @return The chosen defender for the move
|
||||
*/
|
||||
int BattleSystem_Defender(BattleSystem *battleSys, BattleContext *battleCtx, int attacker, u16 move, BOOL randomize, int inRange);
|
||||
void BattleSystem_RedirectTarget(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
|
||||
BOOL BattleMove_TriggerRedirectionAbilities(BattleSystem * param0, BattleContext * param1);
|
||||
|
||||
/**
|
||||
* @brief Check for redirection abilities given an attacker using a certain move.
|
||||
*
|
||||
* This routine will update the appropriate flags and the current target if the
|
||||
* used move is Electric- or Water-type, has single-target range, and at least
|
||||
* one other battler on the field has Lightning Rod or Storm Drain, respectively.
|
||||
*
|
||||
* @param battleSys
|
||||
* @param battleCtx
|
||||
* @param attacker
|
||||
* @param move
|
||||
*/
|
||||
void BattleSystem_CheckRedirectionAbilities(BattleSystem *battleSys, BattleContext *battleCtx, int attacker, u16 move);
|
||||
|
||||
/**
|
||||
* @brief Trigger a redirection ability's effect and load the appropriate
|
||||
* subscript for execution.
|
||||
*
|
||||
* @param battleSys
|
||||
* @param battleCtx
|
||||
* @return TRUE if a subscript was loaded and should be executed for the effect,
|
||||
* FALSE otherwise.
|
||||
*/
|
||||
BOOL BattleSystem_TriggerRedirectionAbilities(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
void BattleMon_CopyToParty(BattleSystem * param0, BattleContext * param1, int param2);
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ ITEM_SPLASH_PLATE,1000,HOLD_EFFECT_ARCEUS_WATER,20,0,0,90,0,31,false,false,POCKE
|
|||
ITEM_ZAP_PLATE,1000,HOLD_EFFECT_ARCEUS_ELECTRIC,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_MEADOW_PLATE,1000,HOLD_EFFECT_ARCEUS_GRASS,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_ICICLE_PLATE,1000,HOLD_EFFECT_ARCEUS_ICE,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_FIST_PLATE,1000,HOLD_EFFECT_ARCEUS_FIGHT,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_FIST_PLATE,1000,HOLD_EFFECT_ARCEUS_FIGHTING,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_TOXIC_PLATE,1000,HOLD_EFFECT_ARCEUS_POISON,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_EARTH_PLATE,1000,HOLD_EFFECT_ARCEUS_GROUND,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
ITEM_SKY_PLATE,1000,HOLD_EFFECT_ARCEUS_FLYING,20,0,0,90,0,31,false,false,POCKET_ITEMS,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,false,false,false,false,false,false,false,false,false,false,false,false,false,false,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
|
|
|||
|
|
|
@ -3203,7 +3203,7 @@ static void BattleController_BeforeMove(BattleSystem *battleSys, BattleContext *
|
|||
battleCtx->beforeMoveCheckState++;
|
||||
|
||||
case BEFORE_MOVE_STATE_REDIRECT_TARGET:
|
||||
BattleSystem_RedirectTarget(battleSys, battleCtx, battleCtx->attacker, battleCtx->moveCur);
|
||||
BattleSystem_CheckRedirectionAbilities(battleSys, battleCtx, battleCtx->attacker, battleCtx->moveCur);
|
||||
battleCtx->beforeMoveCheckState = BEFORE_MOVE_START;
|
||||
}
|
||||
|
||||
|
|
@ -3248,7 +3248,7 @@ static void BattleController_TryMove(BattleSystem *battleSys, BattleContext *bat
|
|||
case TRY_MOVE_STATE_TRIGGER_REDIRECTION_ABILITIES:
|
||||
battleCtx->tryMoveCheckState++;
|
||||
|
||||
if (BattleMove_TriggerRedirectionAbilities(battleSys, battleCtx) == TRUE) {
|
||||
if (BattleSystem_TriggerRedirectionAbilities(battleSys, battleCtx) == TRUE) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2357,7 +2357,7 @@ static BOOL BtlCmd_JumpToMove(BattleSystem *battleSys, BattleContext *battleCtx)
|
|||
|
||||
if (targetIsSet == FALSE) {
|
||||
battleCtx->defender = BattleSystem_Defender(battleSys, battleCtx, battleCtx->attacker, battleCtx->msgMoveTemp, TRUE, 0);
|
||||
BattleSystem_RedirectTarget(battleSys, battleCtx, battleCtx->attacker, battleCtx->msgMoveTemp);
|
||||
BattleSystem_CheckRedirectionAbilities(battleSys, battleCtx, battleCtx->attacker, battleCtx->msgMoveTemp);
|
||||
ATTACKER_ACTION[BATTLE_ACTION_CHOOSE_TARGET] = battleCtx->defender;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@ static void BattleAI_ClearKnownMoves(BattleContext *battleCtx, u8 battler);
|
|||
static void BattleAI_ClearKnownAbility(BattleContext *battleCtx, u8 battler);
|
||||
static void BattleAI_ClearKnownItem(BattleContext *battleCtx, u8 battler);
|
||||
static int ChooseTraceTarget(BattleSystem *battleSys, BattleContext *battleCtx, int defender1, int defender2);
|
||||
static BOOL MoveCannotTriggerAnticipation(BattleContext * param0, int param1);
|
||||
static int BattleMove_Type(BattleSystem * param0, BattleContext * param1, int param2, int param3);
|
||||
static BOOL MoveCannotTriggerAnticipation(BattleContext *battleCtx, int move);
|
||||
static int CalcMoveType(BattleSystem *battleSys, BattleContext *battleCtx, int item, int move);
|
||||
|
||||
static const Fraction sStatStageBoosts[];
|
||||
|
||||
|
|
@ -1732,71 +1732,72 @@ int BattleSystem_Defender(BattleSystem *battleSys, BattleContext *battleCtx, int
|
|||
return defender;
|
||||
}
|
||||
|
||||
void BattleSystem_RedirectTarget (BattleSystem * param0, BattleContext * param1, int param2, u16 param3)
|
||||
void BattleSystem_CheckRedirectionAbilities(BattleSystem *battleSys, BattleContext *battleCtx, int attacker, u16 move)
|
||||
{
|
||||
int v0;
|
||||
int v1;
|
||||
int v2;
|
||||
int v3;
|
||||
int v4;
|
||||
int battler, moveType; // must declare these first to match
|
||||
|
||||
if (param1->defender == 0xff) {
|
||||
if (battleCtx->defender == BATTLER_NONE
|
||||
|| Battler_Ability(battleCtx, attacker) == ABILITY_NORMALIZE
|
||||
|| Battler_Ability(battleCtx, attacker) == ABILITY_MOLD_BREAKER) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((Battler_Ability(param1, param2) == 96) || (Battler_Ability(param1, param2) == 104)) {
|
||||
int defSide = Battler_Side(battleSys, attacker) ^ 1;
|
||||
if (battleCtx->sideConditions[defSide].followMe && FOLLOW_ME_MON(defSide).curHP) {
|
||||
return;
|
||||
}
|
||||
|
||||
v0 = Battler_Side(param0, param2) ^ 1;
|
||||
|
||||
if ((param1->sideConditions[v0].followMe) && (param1->battleMons[param1->sideConditions[v0].followMeUser].curHP)) {
|
||||
return;
|
||||
moveType = CalcMoveType(battleSys, battleCtx, attacker, move);
|
||||
if (moveType == TYPE_NORMAL) {
|
||||
moveType = MOVE_DATA(move).type;
|
||||
}
|
||||
|
||||
v3 = BattleMove_Type(param0, param1, param2, param3);
|
||||
int maxBattlers = BattleSystem_MaxBattlers(battleSys);
|
||||
if (moveType == TYPE_ELECTRIC
|
||||
&& (MOVE_DATA(move).range == RANGE_SINGLE_TARGET || MOVE_DATA(move).range == RANGE_RANDOM_OPPONENT)
|
||||
&& (battleCtx->battleStatusMask & SYSCTL_FIRST_OF_MULTI_TURN) == FALSE
|
||||
&& BattleSystem_CountAbility(battleSys, battleCtx, COUNT_ALIVE_BATTLERS_EXCEPT_ME, attacker, ABILITY_LIGHTNING_ROD)) {
|
||||
for (int i = 0; i < maxBattlers; i++) {
|
||||
battler = battleCtx->monSpeedOrder[i];
|
||||
|
||||
if (v3 == 0) {
|
||||
v3 = param1->aiContext.moveTable[param3].type;
|
||||
}
|
||||
|
||||
v4 = BattleSystem_MaxBattlers(param0);
|
||||
|
||||
if ((v3 == 13) && ((param1->aiContext.moveTable[param3].range == 0x0) || (param1->aiContext.moveTable[param3].range == 0x2)) && ((param1->battleStatusMask & 0x20) == 0) && (BattleSystem_CountAbility(param0, param1, 9, param2, 31))) {
|
||||
for (v1 = 0; v1 < v4; v1++) {
|
||||
v2 = param1->monSpeedOrder[v1];
|
||||
|
||||
if ((Battler_Ability(param1, v2) == 31) && (param1->battleMons[v2].curHP) && (param2 != v2)) {
|
||||
if (Battler_Ability(battleCtx, battler) == ABILITY_LIGHTNING_ROD
|
||||
&& battleCtx->battleMons[battler].curHP
|
||||
&& attacker != battler) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v2 != param1->defender) {
|
||||
param1->selfTurnFlags[v2].lightningRodActivated = 1;
|
||||
param1->defender = v2;
|
||||
if (battler != battleCtx->defender) {
|
||||
battleCtx->selfTurnFlags[battler].lightningRodActivated = TRUE;
|
||||
battleCtx->defender = battler;
|
||||
}
|
||||
} else if ((v3 == 11) && ((param1->aiContext.moveTable[param3].range == 0x0) || (param1->aiContext.moveTable[param3].range == 0x2)) && ((param1->battleStatusMask & 0x20) == 0) && (BattleSystem_CountAbility(param0, param1, 9, param2, 114))) {
|
||||
for (v1 = 0; v1 < v4; v1++) {
|
||||
v2 = param1->monSpeedOrder[v1];
|
||||
} else if (moveType == TYPE_WATER
|
||||
&& (MOVE_DATA(move).range == RANGE_SINGLE_TARGET || MOVE_DATA(move).range == RANGE_RANDOM_OPPONENT)
|
||||
&& (battleCtx->battleStatusMask & SYSCTL_FIRST_OF_MULTI_TURN) == FALSE
|
||||
&& BattleSystem_CountAbility(battleSys, battleCtx, COUNT_ALIVE_BATTLERS_EXCEPT_ME, attacker, ABILITY_STORM_DRAIN)) {
|
||||
for (int i = 0; i < maxBattlers; i++) {
|
||||
battler = battleCtx->monSpeedOrder[i];
|
||||
|
||||
if ((Battler_Ability(param1, v2) == 114) && (param1->battleMons[v2].curHP) && (param2 != v2)) {
|
||||
if (Battler_Ability(battleCtx, battler) == ABILITY_STORM_DRAIN
|
||||
&& battleCtx->battleMons[battler].curHP
|
||||
&& attacker != battler) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v2 != param1->defender) {
|
||||
param1->selfTurnFlags[v2].stormDrainActivated = 1;
|
||||
param1->defender = v2;
|
||||
if (battler != battleCtx->defender) {
|
||||
battleCtx->selfTurnFlags[battler].stormDrainActivated = TRUE;
|
||||
battleCtx->defender = battler;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BOOL BattleMove_TriggerRedirectionAbilities(BattleSystem *battleSys, BattleContext *battleCtx)
|
||||
BOOL BattleSystem_TriggerRedirectionAbilities(BattleSystem *battleSys, BattleContext *battleCtx)
|
||||
{
|
||||
BOOL result = FALSE;
|
||||
|
||||
if ((battleCtx->moveStatusFlags & MOVE_STATUS_NO_EFFECTS) == FALSE && DEFENDER_SELF_TURN_FLAGS.lightningRodActivated) {
|
||||
battleCtx->selfTurnFlags[battleCtx->defender].lightningRodActivated = 0;
|
||||
battleCtx->selfTurnFlags[battleCtx->defender].lightningRodActivated = FALSE;
|
||||
|
||||
LOAD_SUBSEQ(BATTLE_SUBSEQ_LIGHTNING_ROD_REDIRECTED);
|
||||
battleCtx->commandNext = battleCtx->command;
|
||||
|
|
@ -1806,7 +1807,7 @@ BOOL BattleMove_TriggerRedirectionAbilities(BattleSystem *battleSys, BattleConte
|
|||
}
|
||||
|
||||
if ((battleCtx->moveStatusFlags & MOVE_STATUS_NO_EFFECTS) == FALSE && DEFENDER_SELF_TURN_FLAGS.stormDrainActivated) {
|
||||
battleCtx->selfTurnFlags[battleCtx->defender].stormDrainActivated = 0;
|
||||
battleCtx->selfTurnFlags[battleCtx->defender].stormDrainActivated = FALSE;
|
||||
|
||||
LOAD_SUBSEQ(BATTLE_SUBSEQ_LIGHTNING_ROD_REDIRECTED);
|
||||
battleCtx->commandNext = battleCtx->command;
|
||||
|
|
@ -6537,7 +6538,7 @@ static const ItemEffectTypePair sTypeBoostingItems[] = {
|
|||
{ HOLD_EFFECT_ARCEUS_ELECTRIC, TYPE_ELECTRIC },
|
||||
{ HOLD_EFFECT_ARCEUS_GRASS, TYPE_GRASS },
|
||||
{ HOLD_EFFECT_ARCEUS_ICE, TYPE_ICE },
|
||||
{ HOLD_EFFECT_ARCEUS_FIGHT, TYPE_FIGHTING },
|
||||
{ HOLD_EFFECT_ARCEUS_FIGHTING, TYPE_FIGHTING },
|
||||
{ HOLD_EFFECT_ARCEUS_POISON, TYPE_POISON },
|
||||
{ HOLD_EFFECT_ARCEUS_GROUND, TYPE_GROUND },
|
||||
{ HOLD_EFFECT_ARCEUS_FLYING, TYPE_FLYING },
|
||||
|
|
@ -7646,7 +7647,7 @@ static u8 Battler_MonType(BattleContext *battleCtx, int battler, enum BattleMonP
|
|||
type = TYPE_ICE;
|
||||
break;
|
||||
|
||||
case HOLD_EFFECT_ARCEUS_FIGHT:
|
||||
case HOLD_EFFECT_ARCEUS_FIGHTING:
|
||||
type = TYPE_FIGHTING;
|
||||
break;
|
||||
|
||||
|
|
@ -7797,104 +7798,122 @@ static BOOL MoveCannotTriggerAnticipation(BattleContext *battleCtx, int move)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static int BattleMove_Type (BattleSystem * param0, BattleContext * param1, int param2, int param3)
|
||||
/**
|
||||
* @brief Compute the type of a move which has variable typing.
|
||||
*
|
||||
* @param battleSys
|
||||
* @param battleCtx
|
||||
* @param item The attacker's held item. Affects the typing of Natural Gift
|
||||
* and Judgment.
|
||||
* @param move The move being used.
|
||||
* @return The variable-type of the given move.
|
||||
*/
|
||||
static int CalcMoveType(BattleSystem *battleSys, BattleContext *battleCtx, int item, int move)
|
||||
{
|
||||
int v0;
|
||||
int type;
|
||||
|
||||
switch (param3) {
|
||||
case 363:
|
||||
v0 = Battler_NaturalGiftType(param1, param2);
|
||||
switch (move) {
|
||||
case MOVE_NATURAL_GIFT:
|
||||
type = Battler_NaturalGiftType(battleCtx, item);
|
||||
break;
|
||||
case 449:
|
||||
switch (Battler_HeldItemEffect(param1, param2)) {
|
||||
case 131:
|
||||
v0 = 1;
|
||||
|
||||
case MOVE_JUDGMENT:
|
||||
switch (Battler_HeldItemEffect(battleCtx, item)) {
|
||||
case HOLD_EFFECT_ARCEUS_FIGHTING:
|
||||
type = TYPE_FIGHTING;
|
||||
break;
|
||||
case 134:
|
||||
v0 = 2;
|
||||
case HOLD_EFFECT_ARCEUS_FLYING:
|
||||
type = TYPE_FLYING;
|
||||
break;
|
||||
case 132:
|
||||
v0 = 3;
|
||||
case HOLD_EFFECT_ARCEUS_POISON:
|
||||
type = TYPE_POISON;
|
||||
break;
|
||||
case 133:
|
||||
v0 = 4;
|
||||
case HOLD_EFFECT_ARCEUS_GROUND:
|
||||
type = TYPE_GROUND;
|
||||
break;
|
||||
case 137:
|
||||
v0 = 5;
|
||||
case HOLD_EFFECT_ARCEUS_ROCK:
|
||||
type = TYPE_ROCK;
|
||||
break;
|
||||
case 136:
|
||||
v0 = 6;
|
||||
case HOLD_EFFECT_ARCEUS_BUG:
|
||||
type = TYPE_BUG;
|
||||
break;
|
||||
case 138:
|
||||
v0 = 7;
|
||||
case HOLD_EFFECT_ARCEUS_GHOST:
|
||||
type = TYPE_GHOST;
|
||||
break;
|
||||
case 141:
|
||||
v0 = 8;
|
||||
case HOLD_EFFECT_ARCEUS_STEEL:
|
||||
type = TYPE_STEEL;
|
||||
break;
|
||||
case 126:
|
||||
v0 = 10;
|
||||
case HOLD_EFFECT_ARCEUS_FIRE:
|
||||
type = TYPE_FIRE;
|
||||
break;
|
||||
case 127:
|
||||
v0 = 11;
|
||||
case HOLD_EFFECT_ARCEUS_WATER:
|
||||
type = TYPE_WATER;
|
||||
break;
|
||||
case 129:
|
||||
v0 = 12;
|
||||
case HOLD_EFFECT_ARCEUS_GRASS:
|
||||
type = TYPE_GRASS;
|
||||
break;
|
||||
case 128:
|
||||
v0 = 13;
|
||||
case HOLD_EFFECT_ARCEUS_ELECTRIC:
|
||||
type = TYPE_ELECTRIC;
|
||||
break;
|
||||
case 135:
|
||||
v0 = 14;
|
||||
case HOLD_EFFECT_ARCEUS_PSYCHIC:
|
||||
type = TYPE_PSYCHIC;
|
||||
break;
|
||||
case 130:
|
||||
v0 = 15;
|
||||
case HOLD_EFFECT_ARCEUS_ICE:
|
||||
type = TYPE_ICE;
|
||||
break;
|
||||
case 139:
|
||||
v0 = 16;
|
||||
case HOLD_EFFECT_ARCEUS_DRAGON:
|
||||
type = TYPE_DRAGON;
|
||||
break;
|
||||
case 140:
|
||||
v0 = 17;
|
||||
case HOLD_EFFECT_ARCEUS_DARK:
|
||||
type = TYPE_DARK;
|
||||
break;
|
||||
default:
|
||||
v0 = 0;
|
||||
type = TYPE_NORMAL;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 237:
|
||||
v0 = ((param1->battleMons[param2].hpIV & 1) >> 0) | ((param1->battleMons[param2].attackIV & 1) << 1) | ((param1->battleMons[param2].defenseIV & 1) << 2) | ((param1->battleMons[param2].speedIV & 1) << 3) | ((param1->battleMons[param2].spAttackIV & 1) << 4) | ((param1->battleMons[param2].spDefenseIV & 1) << 5);
|
||||
v0 = (v0 * 15 / 63) + 1;
|
||||
|
||||
if (v0 >= 9) {
|
||||
v0++;
|
||||
case MOVE_HIDDEN_POWER:
|
||||
type = ((battleCtx->battleMons[item].hpIV & 1) >> 0)
|
||||
| ((battleCtx->battleMons[item].attackIV & 1) << 1)
|
||||
| ((battleCtx->battleMons[item].defenseIV & 1) << 2)
|
||||
| ((battleCtx->battleMons[item].speedIV & 1) << 3)
|
||||
| ((battleCtx->battleMons[item].spAttackIV & 1) << 4)
|
||||
| ((battleCtx->battleMons[item].spDefenseIV & 1) << 5);
|
||||
type = (type * 15 / 63) + 1;
|
||||
|
||||
if (type >= TYPE_MYSTERY) {
|
||||
type++;
|
||||
}
|
||||
break;
|
||||
case 311:
|
||||
if ((BattleSystem_CountAbility(param0, param1, 8, 0, 13) == 0) && (BattleSystem_CountAbility(param0, param1, 8, 0, 76) == 0)) {
|
||||
if (param1->fieldConditionsMask & (0x3 | 0xc | 0x30 | 0xc0 | 0x8000)) {
|
||||
if (param1->fieldConditionsMask & 0x3) {
|
||||
v0 = 11;
|
||||
}
|
||||
|
||||
if (param1->fieldConditionsMask & 0xc) {
|
||||
v0 = 5;
|
||||
}
|
||||
case MOVE_WEATHER_BALL:
|
||||
if (NO_CLOUD_NINE
|
||||
&& battleCtx->fieldConditionsMask & FIELD_CONDITION_WEATHER) {
|
||||
if (WEATHER_IS_RAIN) {
|
||||
type = TYPE_WATER;
|
||||
}
|
||||
|
||||
if (param1->fieldConditionsMask & 0x30) {
|
||||
v0 = 10;
|
||||
}
|
||||
if (WEATHER_IS_SAND) {
|
||||
type = TYPE_ROCK;
|
||||
}
|
||||
|
||||
if (param1->fieldConditionsMask & 0xc0) {
|
||||
v0 = 15;
|
||||
}
|
||||
if (WEATHER_IS_SUN) {
|
||||
type = TYPE_FIRE;
|
||||
}
|
||||
|
||||
if (WEATHER_IS_HAIL) {
|
||||
type = TYPE_ICE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
v0 = 0;
|
||||
type = TYPE_NORMAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return v0;
|
||||
return type;
|
||||
}
|
||||
|
||||
int ov16_0225BA88 (BattleSystem * param0, int param1)
|
||||
|
|
|
|||
|
|
@ -3881,7 +3881,7 @@ u8 Pokemon_GetArceusTypeOf(u16 itemHoldEffect)
|
|||
case HOLD_EFFECT_ARCEUS_ICE:
|
||||
type = TYPE_ICE;
|
||||
break;
|
||||
case HOLD_EFFECT_ARCEUS_FIGHT:
|
||||
case HOLD_EFFECT_ARCEUS_FIGHTING:
|
||||
type = TYPE_FIGHTING;
|
||||
break;
|
||||
case HOLD_EFFECT_ARCEUS_POISON:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user