Merge pull request #59 from lhearachel/battle-dev

Document + clean up the pre-move-execution state machine
This commit is contained in:
Rachel 2023-09-16 11:36:36 -07:00 committed by GitHub
commit 12af46c19d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 1190 additions and 661 deletions

View File

@ -31,8 +31,14 @@ enum BattleControlSequence {
BATTLE_CONTROL_EXEC_SCRIPT,
BATTLE_CONTROL_BEFORE_MOVE,
BATTLE_CONTROL_AFTER_MOVE,
BATTLE_CONTROL_AFTER_MOVE = 39,
BATTLE_CONTROL_NO_EFFECTS = 25,
BATTLE_CONTROL_CHECK_FAINTED = 33,
BATTLE_CONTROL_UPDATE_MOVE_BUFFERS = 38,
BATTLE_CONTROL_MOVE_END,
BATTLE_CONTROL_AFTER_SWITCH,
BATTLE_CONTROL_RESULT,

View File

@ -3,6 +3,13 @@
#define ATTACKING_MON (battleCtx->battleMons[battleCtx->attacker])
#define DEFENDING_MON (battleCtx->battleMons[battleCtx->defender])
#define ATTACKING_MOVE (battleCtx->moveSlot[battleCtx->attacker])
#define ATTACKER_ACTION (battleCtx->battlerActions[battleCtx->attacker])
#define ATTACKER_TURN_FLAGS (battleCtx->turnFlags[battleCtx->attacker])
#define DEFENDER_TURN_FLAGS (battleCtx->turnFlags[battleCtx->defender])
#define CURRENT_MOVE_DATA (battleCtx->aiContext.moveTable[battleCtx->moveCur])
#define LOAD_SUBSEQ(script) (BattleSystem_LoadScript(battleCtx, NARC_INDEX_BATTLE__SKILL__SUB_SEQ, script))
@ -10,4 +17,30 @@
#define BATTLER_US 0
#define BATTLER_THEM 1
#define CALC_SELF_HIT(move, power) (BattleSystem_CalcMoveDamage(\
battleSys,\
battleCtx,\
move,\
0,\
0,\
power,\
0,\
battleCtx->attacker,\
battleCtx->attacker,\
1))
#define MON_IS_UPROARING(mon) (battleCtx->fieldConditionsMask & (FlagIndex(mon) << FIELD_CONDITION_UPROAR_SHIFT))
#define NO_TARGET_SINGLE_TURN (battleCtx->defender == BATTLER_NONE && BattleMove_IsMultiTurn(battleCtx, battleCtx->moveCur) == FALSE)
#define NO_TARGET_MULTI_TURN (battleCtx->defender == BATTLER_NONE \
&& BattleMove_IsMultiTurn(battleCtx, battleCtx->moveCur) == TRUE \
&& ( \
(ATTACKING_MON.statusVolatile & VOLATILE_CONDITION_CHARGE_TURN) \
|| (battleCtx->battleStatusMask & SYSCTL_LAST_OF_MULTI_TURN) \
))
#define NO_TARGET (NO_TARGET_SINGLE_TURN || NO_TARGET_MULTI_TURN)
#define NO_CLOUD_NINE (BattleSystem_CountAbility(battleSys, battleCtx, 8, 0, ABILITY_CLOUD_NINE) == FALSE \
&& BattleSystem_CountAbility(battleSys, battleCtx, 8, 0, ABILITY_AIR_LOCK) == FALSE)
#endif // POKEPLATINUM_BATTLE_COMMON_H

View File

@ -23,6 +23,7 @@
#define BATTLE_TYPE_NO_ITEMS (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define BATTLE_TYPE_AI_PARTNER (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_2vs2 | BATTLE_TYPE_AI)
#define BATTLE_TYPE_SPECIAL_WILD (BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER | BATTLE_TYPE_PAL_PARK | BATTLE_TYPE_CATCH_TUTORIAL)
#define BATTLE_TYPE_NO_OBEDIENCE_CHECK (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER)
#define MAX_LINK_BATTLERS 4
#define MAX_BATTLERS 4
@ -64,6 +65,7 @@
#define BATTLER_ENEMY_SLOT_1 1
#define BATTLER_PLAYER_SLOT_2 2
#define BATTLER_ENEMY_SLOT_2 3
#define BATTLER_NONE 0xFF
#define BATTLE_SIDE_PLAYER 0
#define BATTLE_SIDE_ENEMY 1
@ -101,8 +103,6 @@
#define STRUGGLING_MOVE_4 (1 << 3)
#define STRUGGLING_ALL (STRUGGLING_MOVE_1 | STRUGGLING_MOVE_2 | STRUGGLING_MOVE_3 | STRUGGLING_MOVE_4)
#define SYSTEM_CONTROL_SKIP_DAMAGE_SPRITE_BLINK (1 << 6)
enum BattleActions {
BATTLE_ACTION_PICK_COMMAND = 0,
BATTLE_ACTION_CHOOSE_TARGET,

View File

@ -0,0 +1,284 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_EFFECTS_H
#define POKEPLATINUM_CONSTANTS_BATTLE_EFFECTS_H
enum {
BATTLE_EFFECT_HIT = 0,
BATTLE_EFFECT_STATUS_SLEEP,
BATTLE_EFFECT_POISON_HIT,
BATTLE_EFFECT_RECOVER_HALF_DAMAGE_DEALT,
BATTLE_EFFECT_BURN_HIT,
BATTLE_EFFECT_FREEZE_HIT,
BATTLE_EFFECT_PARALYZE_HIT,
BATTLE_EFFECT_HALVE_DEFENSE,
BATTLE_EFFECT_RECOVER_DAMAGE_SLEEP,
BATTLE_EFFECT_COPY_MOVE,
BATTLE_EFFECT_ATK_UP,
BATTLE_EFFECT_DEF_UP,
BATTLE_EFFECT_SPEED_UP,
BATTLE_EFFECT_SP_ATK_UP,
BATTLE_EFFECT_SP_DEF_UP,
BATTLE_EFFECT_ACC_UP,
BATTLE_EFFECT_EVA_UP,
BATTLE_EFFECT_BYPASS_ACCURACY,
BATTLE_EFFECT_ATK_DOWN,
BATTLE_EFFECT_DEF_DOWN,
BATTLE_EFFECT_SPEED_DOWN,
BATTLE_EFFECT_SP_ATK_DOWN,
BATTLE_EFFECT_SP_DEF_DOWN,
BATTLE_EFFECT_ACC_DOWN,
BATTLE_EFFECT_EVA_DOWN,
BATTLE_EFFECT_RESET_STAT_CHANGES,
BATTLE_EFFECT_BIDE,
BATTLE_EFFECT_CONTINUE_AND_CONFUSE_SELF,
BATTLE_EFFECT_FORCE_SWITCH,
BATTLE_EFFECT_MULTI_HIT,
BATTLE_EFFECT_CONVERSION,
BATTLE_EFFECT_FLINCH_HIT,
BATTLE_EFFECT_RESTORE_HALF_HP,
BATTLE_EFFECT_STATUS_BADLY_POISON,
BATTLE_EFFECT_INCREASE_PRIZE_MONEY,
BATTLE_EFFECT_SET_LIGHT_SCREEN,
BATTLE_EFFECT_TRI_ATTACK,
BATTLE_EFFECT_REST,
BATTLE_EFFECT_ONE_HIT_KO,
BATTLE_EFFECT_CHARGE_TURN_HIGH_CRIT,
BATTLE_EFFECT_HALVE_HP,
BATTLE_EFFECT_40_DAMAGE_FLAT,
BATTLE_EFFECT_BIND_HIT,
BATTLE_EFFECT_HIGH_CRITICAL,
BATTLE_EFFECT_HIT_TWICE,
BATTLE_EFFECT_CRASH_ON_MISS,
BATTLE_EFFECT_PREVENT_STAT_REDUCTION,
BATTLE_EFFECT_CRIT_UP_2,
BATTLE_EFFECT_RECOIL_QUARTER,
BATTLE_EFFECT_STATUS_CONFUSE,
BATTLE_EFFECT_ATK_UP_2,
BATTLE_EFFECT_DEF_UP_2,
BATTLE_EFFECT_SPEED_UP_2,
BATTLE_EFFECT_SP_ATK_UP_2,
BATTLE_EFFECT_SP_DEF_UP_2,
BATTLE_EFFECT_ACC_UP_2,
BATTLE_EFFECT_EVA_UP_2,
BATTLE_EFFECT_TRANSFORM,
BATTLE_EFFECT_ATK_DOWN_2,
BATTLE_EFFECT_DEF_DOWN_2,
BATTLE_EFFECT_SPEED_DOWN_2,
BATTLE_EFFECT_SP_ATK_DOWN_2,
BATTLE_EFFECT_SP_DEF_DOWN_2,
BATTLE_EFFECT_EVA_DOWN_2,
BATTLE_EFFECT_ACC_DOWN_2,
BATTLE_EFFECT_SET_REFLECT,
BATTLE_EFFECT_STATUS_POISON,
BATTLE_EFFECT_STATUS_PARALYZE,
BATTLE_EFFECT_LOWER_ATTACK_HIT,
BATTLE_EFFECT_LOWER_DEFENSE_HIT,
BATTLE_EFFECT_LOWER_SPEED_HIT,
BATTLE_EFFECT_LOWER_SP_ATK_HIT,
BATTLE_EFFECT_LOWER_SP_DEF_HIT,
BATTLE_EFFECT_LOWER_ACCURACY_HIT,
BATTLE_EFFECT_LOWER_EVASION_HIT,
BATTLE_EFFECT_CHARGE_TURN_HIGH_CRIT_FLINCH,
BATTLE_EFFECT_CONFUSE_HIT,
BATTLE_EFFECT_POISON_MULTI_HIT,
BATTLE_EFFECT_PRIORITY_NEG_1_BYPASS_ACCURACY,
BATTLE_EFFECT_SET_SUBSTITUTE,
BATTLE_EFFECT_RECHARGE_AFTER,
BATTLE_EFFECT_RAISE_ATK_WHEN_HIT,
BATTLE_EFFECT_COPY_MOVE_FOR_BATTLE,
BATTLE_EFFECT_CALL_RANDOM_MOVE,
BATTLE_EFFECT_STATUS_LEECH_SEED,
BATTLE_EFFECT_DO_NOTHING,
BATTLE_EFFECT_DISABLE,
BATTLE_EFFECT_LEVEL_DAMAGE_FLAT,
BATTLE_EFFECT_RANDOM_DAMAGE_1_TO_150_LEVEL,
BATTLE_EFFECT_COUNTER,
BATTLE_EFFECT_ENCORE,
BATTLE_EFFECT_AVERAGE_HP,
BATTLE_EFFECT_DAMAGE_WHILE_ASLEEP,
BATTLE_EFFECT_CONVERSION2,
BATTLE_EFFECT_NEXT_ATTACK_ALWAYS_HITS,
BATTLE_EFFECT_LEARN_MOVE_PERMANENT,
BATTLE_EFFECT_UNUSED_96,
BATTLE_EFFECT_USE_RANDOM_LEARNED_MOVE_SLEEP,
BATTLE_EFFECT_KO_MON_THAT_DEFEATED_USER,
BATTLE_EFFECT_INCREASE_POWER_WITH_LESS_HP,
BATTLE_EFFECT_DECREASE_LAST_MOVE_PP,
BATTLE_EFFECT_LEAVE_WITH_1_HP,
BATTLE_EFFECT_CURE_PARTY_STATUS,
BATTLE_EFFECT_PRIORITY_1,
BATTLE_EFFECT_HIT_THREE_TIMES,
BATTLE_EFFECT_STEAL_HELD_ITEM,
BATTLE_EFFECT_PREVENT_ESCAPE,
BATTLE_EFFECT_STATUS_NIGHTMARE,
BATTLE_EFFECT_EVA_UP_2_MINIMIZE,
BATTLE_EFFECT_CURSE,
BATTLE_EFFECT_UNUSED_110,
BATTLE_EFFECT_PROTECT,
BATTLE_EFFECT_SET_SPIKES,
BATTLE_EFFECT_IGNORE_EVASION_REMOVE_GHOST_IMMUNE,
BATTLE_EFFECT_ALL_FAINT_3_TURNS,
BATTLE_EFFECT_WEATHER_SANDSTORM,
BATTLE_EFFECT_SURVIVE_WITH_1_HP,
BATTLE_EFFECT_DOUBLE_POWER_EACH_TURN_LOCK_INTO,
BATTLE_EFFECT_ATK_UP_2_STATUS_CONFUSION,
BATTLE_EFFECT_DOUBLE_POWER_EACH_TURN,
BATTLE_EFFECT_INFATUATE,
BATTLE_EFFECT_POWER_BASED_ON_FRIENDSHIP,
BATTLE_EFFECT_RANDOM_POWER_MAYBE_HEAL,
BATTLE_EFFECT_POWER_BASED_ON_LOW_FRIENDSHIP,
BATTLE_EFFECT_PREVENT_STATUS,
BATTLE_EFFECT_THAW_AND_BURN_HIT,
BATTLE_EFFECT_RANDOM_POWER_10_CASES,
BATTLE_EFFECT_PASS_STATS_AND_STATUS,
BATTLE_EFFECT_HIT_BEFORE_SWITCH,
BATTLE_EFFECT_REMOVE_HAZARDS_AND_BINDING,
BATTLE_EFFECT_10_DAMAGE_FLAT,
BATTLE_EFFECT_UNUSED_131,
BATTLE_EFFECT_HEAL_HALF_MORE_IN_SUN,
BATTLE_EFFECT_UNUSED_133,
BATTLE_EFFECT_UNUSED_134,
BATTLE_EFFECT_RANDOM_POWER_BASED_ON_IVS,
BATTLE_EFFECT_WEATHER_RAIN,
BATTLE_EFFECT_WEATHER_SUN,
BATTLE_EFFECT_RAISE_DEF_HIT,
BATTLE_EFFECT_RAISE_ATTACK_HIT,
BATTLE_EFFECT_RAISE_ALL_STATS_HIT,
BATTLE_EFFECT_UNUSED_141,
BATTLE_EFFECT_MAX_ATK_LOSE_HALF_MAX_HP,
BATTLE_EFFECT_COPY_STAT_CHANGES,
BATTLE_EFFECT_MIRROR_COAT,
BATTLE_EFFECT_CHARGE_TURN_DEF_UP,
BATTLE_EFFECT_FLINCH_DOUBLE_DAMAGE_FLY_OR_BOUNCE,
BATTLE_EFFECT_DOUBLE_DAMAGE_DIG,
BATTLE_EFFECT_HIT_IN_3_TURNS,
BATTLE_EFFECT_DOUBLE_DAMAGE_FLY_OR_BOUNCE,
BATTLE_EFFECT_FLINCH_MINIMIZE_DOUBLE_HIT,
BATTLE_EFFECT_SKIP_CHARGE_TURN_IN_SUN,
BATTLE_EFFECT_THUNDER,
BATTLE_EFFECT_FLEE_FROM_WILD_BATTLE,
BATTLE_EFFECT_BEAT_UP,
BATTLE_EFFECT_FLY,
BATTLE_EFFECT_DEF_UP_DOUBLE_ROLLOUT_POWER,
BATTLE_EFFECT_UNUSED_157,
BATTLE_EFFECT_ALWAYS_FLINCH_FIRST_TURN_ONLY,
BATTLE_EFFECT_UPROAR,
BATTLE_EFFECT_STOCKPILE,
BATTLE_EFFECT_SPIT_UP,
BATTLE_EFFECT_SWALLOW,
BATTLE_EFFECT_UNUSED_163,
BATTLE_EFFECT_WEATHER_HAIL,
BATTLE_EFFECT_TORMENT,
BATTLE_EFFECT_SP_ATK_UP_CAUSE_CONFUSION,
BATTLE_EFFECT_STATUS_BURN,
BATTLE_EFFECT_FAINT_AND_ATK_SP_ATK_DOWN_2,
BATTLE_EFFECT_DOUBLE_POWER_WHEN_STATUSED,
BATTLE_EFFECT_HIT_LAST_WHIFF_IF_HIT,
BATTLE_EFFECT_DOUBLE_POWER_AND_CURE_PARALYSIS,
BATTLE_EFFECT_MAKE_GLOBAL_TARGET,
BATTLE_EFFECT_NATURE_POWER,
BATTLE_EFFECT_SP_DEF_UP_DOUBLE_ELECTRIC_POWER,
BATTLE_EFFECT_TAUNT,
BATTLE_EFFECT_BOOST_ALLY_POWER_BY_50_PERCENT,
BATTLE_EFFECT_SWITCH_HELD_ITEMS,
BATTLE_EFFECT_COPY_ABILITY,
BATTLE_EFFECT_HEAL_IN_3_TURNS,
BATTLE_EFFECT_USE_RANDOM_ALLY_MOVE,
BATTLE_EFFECT_GROUND_TRAP_USER_CONTINUOUS_HEAL,
BATTLE_EFFECT_LOWER_OWN_ATK_AND_DEF,
BATTLE_EFFECT_APPLY_MAGIC_COAT,
BATTLE_EFFECT_RECYCLE,
BATTLE_EFFECT_DOUBLE_POWER_IF_HIT,
BATTLE_EFFECT_REMOVE_SCREENS,
BATTLE_EFFECT_STATUS_SLEEP_NEXT_TURN,
BATTLE_EFFECT_REMOVE_HELD_ITEM,
BATTLE_EFFECT_SET_HP_EQUAL_TO_USER,
BATTLE_EFFECT_DECREASE_POWER_WITH_LESS_USER_HP,
BATTLE_EFFECT_SWITCH_ABILITIES,
BATTLE_EFFECT_MAKE_SHARED_MOVES_UNUSEABLE,
BATTLE_EFFECT_HEAL_STATUS,
BATTLE_EFFECT_REMOVE_ALL_PP_ON_DEFEAT,
BATTLE_EFFECT_STEAL_STATUS_MOVE,
BATTLE_EFFECT_INCREASE_POWER_WITH_WEIGHT,
BATTLE_EFFECT_SECRET_POWER,
BATTLE_EFFECT_RECOIL_THIRD,
BATTLE_EFFECT_CONFUSE_ALL,
BATTLE_EFFECT_HIGH_CRITICAL_BURN_HIT,
BATTLE_EFFECT_HALVE_ELECTRIC_DAMAGE,
BATTLE_EFFECT_BADLY_POISON_HIT,
BATTLE_EFFECT_CHANGE_TYPE_WITH_WEATHER,
BATTLE_EFFECT_USER_SP_ATK_DOWN_2,
BATTLE_EFFECT_ATK_DEF_DOWN,
BATTLE_EFFECT_DEF_SPD_UP,
BATTLE_EFFECT_HIT_FLY,
BATTLE_EFFECT_ATK_DEF_UP,
BATTLE_EFFECT_HIGH_CRITICAL_POISON_HIT,
BATTLE_EFFECT_HALVE_FIRE_DAMAGE,
BATTLE_EFFECT_SP_ATK_SP_DEF_UP,
BATTLE_EFFECT_ATK_SPD_UP,
BATTLE_EFFECT_CAMOUFLAGE,
BATTLE_EFFECT_HEAL_HALF_REMOVE_FLYING_TYPE,
BATTLE_EFFECT_GRAVITY,
BATTLE_EFFECT_IGNORE_EVATION_REMOVE_DARK_IMMUNE,
BATTLE_EFFECT_DOUBLE_POWER_HEAL_SLEEP,
BATTLE_EFFECT_SPEED_DOWN_HIT,
BATTLE_EFFECT_POWER_BASED_ON_LOW_SPEED,
BATTLE_EFFECT_FAINT_AND_FULL_HEAL_NEXT_MON,
BATTLE_EFFECT_DOUBLE_POWER_WHEN_BELOW_HALF,
BATTLE_EFFECT_NATURAL_GIFT,
BATTLE_EFFECT_REMOVE_PROTECT,
BATTLE_EFFECT_EAT_BERRY,
BATTLE_EFFECT_DOUBLE_SPEED_3_TURNS,
BATTLE_EFFECT_RANDOM_STAT_UP_2,
BATTLE_EFFECT_METAL_BURST,
BATTLE_EFFECT_SWITCH_HIT,
BATTLE_EFFECT_DEF_SPD_DOWN_HIT,
BATTLE_EFFECT_DOUBLE_POWER_IF_MOVING_SECOND,
BATTLE_EFFECT_DOUBLE_POWER_IF_TARGET_HIT,
BATTLE_EFFECT_PREVENT_ITEM_USE,
BATTLE_EFFECT_FLING,
BATTLE_EFFECT_TRANSFER_STATUS,
BATTLE_EFFECT_HIGHER_POWER_WHEN_LOW_PP,
BATTLE_EFFECT_PREVENT_HEALING,
BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_HP,
BATTLE_EFFECT_SWAP_ATK_DEF,
BATTLE_EFFECT_SUPRESS_ABILITY,
BATTLE_EFFECT_PREVENT_CRITS,
BATTLE_EFFECT_USE_MOVE_FIRST,
BATTLE_EFFECT_USE_LAST_USED_MOVE,
BATTLE_EFFECT_SWAP_ATK_SP_ATK_STAT_CHANGES,
BATTLE_EFFECT_SWAP_DEF_SP_DEF_STAT_CHANGES,
BATTLE_EFFECT_INCREASE_POWER_WITH_MORE_STAT_UP,
BATTLE_EFFECT_FAIL_IF_NOT_USED_ALL_OTHER_MOVES,
BATTLE_EFFECT_SET_ABILITY_TO_INSOMNIA,
BATTLE_EFFECT_HIT_FIRST_IF_TARGET_ATTACKING,
BATTLE_EFFECT_TOXIC_SPIKES,
BATTLE_EFFECT_SWAP_STAT_CHANGES,
BATTLE_EFFECT_RESTORE_HP_EVERY_TURN,
BATTLE_EFFECT_GIVE_GROUND_IMMUNITY,
BATTLE_EFFECT_RECOIL_BURN_HIT,
BATTLE_EFFECT_STRUGGLE,
BATTLE_EFFECT_DIVE,
BATTLE_EFFECT_DIG,
BATTLE_EFFECT_DOUBLE_DAMAGE_DIVE,
BATTLE_EFFECT_REMOVE_HAZARDS_SCREENS_EVA_DOWN,
BATTLE_EFFECT_TRICK_ROOM,
BATTLE_EFFECT_BLIZZARD,
BATTLE_EFFECT_WHIRLPOOL,
BATTLE_EFFECT_RECOIL_PARALYZE_HIT,
BATTLE_EFFECT_BOUNCE,
BATTLE_EFFECT_UNUSED_264,
BATTLE_EFFECT_SP_ATK_DOWN_2_OPPOSITE_GENDER,
BATTLE_EFFECT_STEALTH_ROCK,
BATTLE_EFFECT_CHATTER,
BATTLE_EFFECT_JUDGEMENT,
BATTLE_EFFECT_RECOIL_HALF,
BATTLE_EFFECT_FAINT_FULL_RESTORE_NEXT_MON,
BATTLE_EFFECT_LOWER_SP_DEF_2_HIT,
BATTLE_EFFECT_SHADOW_FORCE,
BATTLE_EFFECT_FLINCH_BURN_HIT,
BATTLE_EFFECT_FLINCH_FREEZE_HIT,
BATTLE_EFFECT_FLINCH_PARALYZE_HIT,
BATTLE_EFFECT_RAISE_SP_ATK_HIT,
};
#endif // POKEPLATINUM_CONSTANTS_BATTLE_EFFECTS_H

View File

@ -11,11 +11,11 @@
#define MON_CONDITION_TOXIC_COUNTER ((1 << 8) | (1 << 9) | (1 << 10) | (1 << 11)) // counter for increasing Toxic damage
#define MON_CONDITION_TOXIC_COUNT_INC ((1 << 8)) // increment value for the Toxic counter
#define MON_CONDITION_ANY_POISON (CONDITION_POISON | CONDITION_TOXIC | CONDITION_TOXIC_COUNTER)
#define MON_CONDITION_ANY (CONDITION_SLEEP | CONDITION_POISON | CONDITION_BURN | CONDITION_FREEZE | CONDITION_PARALYSIS | CONDITION_TOXIC)
#define MON_CONDITION_ANY_POISON (MON_CONDITION_POISON | MON_CONDITION_TOXIC | MON_CONDITION_TOXIC_COUNTER)
#define MON_CONDITION_ANY (MON_CONDITION_SLEEP | MON_CONDITION_POISON | MON_CONDITION_BURN | MON_CONDITION_FREEZE | MON_CONDITION_PARALYSIS | MON_CONDITION_TOXIC)
#define MON_CONDITION_CAN_SYNCHRONIZE (CONDITION_POISON | CONDITION_BURN | CONDITION_PARALYSIS)
#define MON_CONDITION_FACADE_BOOST (CONDITION_TOXIC | CONDITION_POISON | CONDITION_BURN | CONDITION_PARALYSIS)
#define MON_CONDITION_CAN_SYNCHRONIZE (MON_CONDITION_POISON | MON_CONDITION_BURN | MON_CONDITION_PARALYSIS)
#define MON_CONDITION_FACADE_BOOST (MON_CONDITION_TOXIC | MON_CONDITION_POISON | MON_CONDITION_BURN | MON_CONDITION_PARALYSIS)
#define VOLATILE_CONDITION_NONE 0
#define VOLATILE_CONDITION_CONFUSION ((1 << 0) | (1 << 1) | (1 << 2)) // counter for the number of confusion turns remaining
@ -46,9 +46,12 @@
| VOLATILE_CONDITION_CURSE \
| VOLATILE_CONDITION_SUBSTITUTE)
#define VOLATILE_CONDITION_UPROAR_SHIFT 4
#define VOLATILE_CONDITION_THRASH_SHIFT 10
#define VOLATILE_CONDITION_BIND_SHIFT 13
#define VOLATILE_CONDITION_CONFUSION_SHIFT 0
#define VOLATILE_CONDITION_UPROAR_SHIFT 4
#define VOLATILE_CONDITION_BIDE_SHIFT 8
#define VOLATILE_CONDITION_THRASH_SHIFT 10
#define VOLATILE_CONDITION_BIND_SHIFT 13
#define VOLATILE_CONDITION_ATTRACT_SHIFT 16
#define SIDE_CONDITION_REFLECT (1 << 0)
#define SIDE_CONDITION_LIGHT_SCREEN (1 << 1)

View File

@ -57,4 +57,43 @@
#define MOVE_STATUS_NO_MORE_WORK (1 << 31)
#define MOVE_STATUS_DID_NOT_HIT (MOVE_STATUS_MISSED \
| MOVE_STATUS_INEFFECTIVE \
| MOVE_STATUS_FAILED \
| MOVE_STATUS_LEVITATED \
| MOVE_STATUS_ONE_HIT_KO_FAILED \
| MOVE_STATUS_THRASH_DISRUPTED \
| MOVE_STATUS_PROTECTED \
| MOVE_STATUS_SEMI_INVULNERABLE \
| MOVE_STATUS_LOST_FOCUS \
| MOVE_STATUS_WONDER_GUARD \
| MOVE_STATUS_STURDY \
| MOVE_STATUS_MAGNET_RISE)
#define MOVE_STATUS_NO_EFFECTS (MOVE_STATUS_DID_NOT_HIT \
| MOVE_STATUS_NO_PP \
| MOVE_STATUS_NO_MORE_WORK)
#define RANGE_SINGLE_TARGET 0
#define RANGE_SINGLE_TARGET_SPECIAL (1 << 0)
#define RANGE_RANDOM_OPPONENT (1 << 1)
#define RANGE_ADJACENT_OPPONENTS (1 << 2)
#define RANGE_ALL_ADJACENT (1 << 3)
#define RANGE_USER (1 << 4)
#define RANGE_USER_SIDE (1 << 5)
#define RANGE_FIELD (1 << 6)
#define RANGE_OPPONENT_SIDE (1 << 7)
#define RANGE_ALLY (1 << 8)
#define RANGE_USER_OR_ALLY (1 << 9)
#define RANGE_SINGLE_TARGET_ME_FIRST (1 << 10)
#define MOVE_FLAG_MAKES_CONTACT (1 << 0)
#define MOVE_FLAG_CAN_PROTECT (1 << 1)
#define MOVE_FLAG_CAN_MAGIC_COAT (1 << 2)
#define MOVE_FLAG_CAN_SNATCH (1 << 3)
#define MOVE_FLAG_CAN_MIRROR_MOVE (1 << 4)
#define MOVE_FLAG_TRIGGERS_KINGS_ROCK (1 << 5)
#define MOVE_FLAG_HIDES_HP_GAUGES (1 << 6)
#define MOVE_FLAG_HIDES_SHADOWS (1 << 7)
#endif // POKEPLATINUM_CONSTANTS_BATTLE_MOVES_H

View File

@ -0,0 +1,16 @@
#ifndef POKEPLATINUM_CONSTANTS_BATTLE_SYSTEM_CONTROL_H
#define POKEPLATINUM_CONSTANTS_BATTLE_SYSTEM_CONTROL_H
#define SYSCTL_CHECK_LOOP_ONLY_ONCE (1 << 1)
#define SYSCTL_SKIP_SPRITE_BLINK (1 << 6)
#define SYSCTL_LAST_OF_MULTI_TURN (1 << 9)
#define SYSCTL_REUSE_LAST_MOVE (1 << 20)
#define SYSCTL_MOVE_CONNECTED (1 << 6)
#define SYSCTL_SKIP_OBEDIENCE_CHECK (1 << 0)
#define SYSCTL_SKIP_STATUS_CHECK (1 << 2)
#define SYSCTL_SKIP_PP_DECREMENT (1 << 3)
#define SYSCTL_SKIP_STOLEN_CHECK (1 << 7)
#endif // POKEPLATINUM_CONSTANTS_BATTLE_SYSTEM_CONTROL_H

View File

@ -11,14 +11,28 @@ enum NARCFilesBattleSubSeq {
BATTLE_SUBSEQ_THROW_POKEBALL = 11,
BATTLE_SUBSEQ_FLINCHED = 15,
BATTLE_SUBSEQ_FALL_ASLEEP = 18,
BATTLE_SUBSEQ_WAKE_UP,
BATTLE_SUBSEQ_SLEEPING,
BATTLE_SUBSEQ_POISON_DAMAGE = 23,
BATTLE_SUBSEQ_BURN_DAMAGE = 26,
BATTLE_SUBSEQ_TRAINER_MESSAGE = 41,
BATTLE_SUBSEQ_FROZEN = 28,
BATTLE_SUBSEQ_THAW_OUT,
BATTLE_SUBSEQ_DEFROSTED_BY_MOVE,
BATTLE_SUBSEQ_FULLY_PARALYZED = 32,
BATTLE_SUBSEQ_BIDE_END = 36,
BATTLE_SUBSEQ_CONFUSED = 38,
BATTLE_SUBSEQ_HURT_SELF_IN_CONFUSION,
BATTLE_SUBSEQ_SNAP_OUT_OF_CONFUSION,
BATTLE_SUBSEQ_TRAINER_MESSAGE,
BATTLE_SUBSEQ_MOVE_EFFECT_END = 50,
BATTLE_SUBSEQ_THRASH_END,
@ -26,9 +40,12 @@ enum NARCFilesBattleSubSeq {
BATTLE_SUBSEQ_BIND_EFFECT = 59,
BATTLE_SUBSEQ_BIND_END,
BATTLE_SUBSEQ_RECHARGING = 65,
BATTLE_SUBSEQ_LEECH_SEED_EFFECT = 69,
BATTLE_SUBSEQ_DISABLE_END = 72,
BATTLE_SUBSEQ_MOVE_IS_DISABLED = 71,
BATTLE_SUBSEQ_DISABLE_END,
BATTLE_SUBSEQ_ENCORE_END = 74,
@ -40,15 +57,32 @@ enum NARCFilesBattleSubSeq {
BATTLE_SUBSEQ_WEATHER_CONTINUES = 104,
BATTLE_SUBSEQ_INFATUATED = 107,
BATTLE_SUBSEQ_IMMOBILIZED_BY_LOVE,
BATTLE_SUBSEQ_SAFEGUARD_END = 110,
BATTLE_SUBSEQ_FUTURE_SIGHT_DAMAGE = 121,
BATTLE_SUBSEQ_MOVE_FAIL_TAUNTED = 133,
BATTLE_SUBSEQ_WISH_HEAL = 136,
BATTLE_SUBSEQ_INGRAIN_HEAL,
BATTLE_SUBSEQ_MAGIC_COAT = 139,
BATTLE_SUBSEQ_MOVE_IS_IMPRISONED = 144,
BATTLE_SUBSEQ_SNATCH = 146,
BATTLE_SUBSEQ_MOVE_FAIL_GRAVITY = 157,
BATTLE_SUBSEQ_AQUA_RING_HEAL = 169,
BATTLE_SUBSEQ_MOVE_IS_HEAL_BLOCKED = 174,
BATTLE_SUBSEQ_LOAFING_AROUND = 191,
BATTLE_SUBSEQ_ESCAPE_ITEM = 222,
BATTLE_SUBSEQ_BATTLE_ITEM,
@ -74,6 +108,12 @@ enum NARCFilesBattleSubSeq {
BATTLE_SUBSEQ_LUCKY_CHANT_END = 250,
BATTLE_SUBSEQ_TRICK_ROOM_END,
BATTLE_SUBSEQ_DISOBEY_WHILE_ASLEEP = 254,
BATTLE_SUBSEQ_DISOBEY_DO_NOTHING,
BATTLE_SUBSEQ_DISOBEY_ORDERS,
BATTLE_SUBSEQ_DISOBEY_SLEEP,
BATTLE_SUBSEQ_DISOBEY_HIT_SELF,
BATTLE_SUBSEQ_BAD_DREAMS = 263,
BATTLE_SUBSEQ_USE_POTION = 267,
@ -83,6 +123,11 @@ enum NARCFilesBattleSubSeq {
BATTLE_SUBSEQ_THROW_SAFARI_BALL = 275,
BATTLE_SUBSEQ_CHECK_QUICK_CLAW = 278,
BATTLE_SUBSEQ_NO_TARGET = 281,
BATTLE_SUBSEQ_BIDE_NO_TARGET,
BATTLE_SUBSEQ_ENEMY_ESCAPE_FAILED = 286,
BATTLE_SUBSEQ_TAUNT_END = 288,

View File

@ -72,7 +72,7 @@ UnkStruct_0200B358 * ov16_0223E0D0(BattleSystem * param0);
Strbuf* ov16_0223E0D4(BattleSystem * param0);
u16 ov16_0223E0D8(BattleSystem * param0, int param1);
TrainerData * ov16_0223E120(BattleSystem * param0, int param1);
TrainerInfo * ov16_0223E16C(BattleSystem * param0, int param1);
TrainerInfo * BattleSystem_TrainerInfo(BattleSystem * param0, int param1);
UnkStruct_0207D3C0 * BattleSystem_Bag(BattleSystem * param0);
UnkStruct_0207D99C * BattleSystem_BagCursor(BattleSystem * param0);
u32 ov16_0223E1B4(BattleSystem * param0, int param1);

View File

@ -27,9 +27,9 @@ void ov16_022535F0(BattleSystem * param0, BattleContext * param1, int param2);
BOOL ov16_0225366C(BattleSystem * param0, BattleContext * param1, int * param2);
BOOL ov16_02253710(BattleSystem * param0, BattleContext * param1, int * param2);
int BattleSystem_Defender(BattleSystem * param0, BattleContext * param1, int param2, u16 param3, int param4, int param5);
void ov16_02253C98(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
void BattleSystem_RedirectTarget(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
BOOL ov16_02253E3C(BattleSystem * param0, BattleContext * param1);
void ov16_02253EC0(BattleSystem * param0, BattleContext * param1, int param2);
void BattleMon_CopyToParty(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02253EF0(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02253F20(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_02253F7C(BattleContext * param0, int param1);
@ -41,7 +41,7 @@ void ov16_02254744(BattleSystem * param0, BattleContext * param1, int param2);
void BattleSystem_SetupNextTurn(BattleSystem * param0, BattleContext * param1);
int BattleSystem_CheckStruggling(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);
BOOL BattleSystem_CanUseMove(BattleSystem *battleSys, BattleContext *battleCtx, int battler, int moveSlot, BattleMessage *msgOut);
int ov16_02254EE0(BattleMon * param0, u16 param1);
int Battler_SlotForMove(BattleMon * param0, u16 param1);
int ov16_02254FA8(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4, int param5, int param6, u32 * param7);
void ov16_022552D4(BattleContext * param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7, u32 * param8);
BOOL BattleContext_MoveFailed(BattleContext * param0, int param1);
@ -49,7 +49,7 @@ u8 ov16_022554E0(BattleSystem * param0, BattleContext * param1, int param2, int
int BattleSystem_NicknameTag(BattleContext *battleSys, int battler);
u16 Battler_SelectedMove(BattleContext * param0, int param1);
int BattleSystem_CountAbility(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);
BOOL ov16_0225582C(BattleContext * param0, int param1);
BOOL BattleMove_IsMultiTurn(BattleContext * param0, int param1);
BOOL ov16_0225588C(BattleSystem * param0, int param1, u8 * param2, u8 * param3, u8 * param4);
int ov16_022558CC(u8 param0, u8 param1, u8 param2);
BOOL ov16_02255918(u16 param0);
@ -63,13 +63,13 @@ BOOL ov16_02255B10(BattleSystem * param0, BattleContext * param1, int param2);
BOOL BattleSystem_Trapped(BattleSystem * param0, BattleContext * param1, int param2, BattleMessage * param3);
BOOL BattleSystem_TryEscape(BattleSystem * param0, BattleContext * param1, int param2);
BOOL Battler_CheckTruant(BattleContext * param0, int param1);
BOOL ov16_02255EF4(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL BattleSystem_Imprisoned(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL ov16_02255F68(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02255F94(BattleSystem * param0, BattleContext * param1);
void BattleSystem_SortMonsBySpeed(BattleSystem * param0, BattleContext * param1);
BOOL ov16_02256044(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL ov16_02256078(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void ov16_022560B0(BattleSystem * param0, BattleContext * param1);
BOOL BattleSystem_FailsInHighGravity(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL BattleSystem_HealBlocked(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void BattleSystem_UpdateLastResort(BattleSystem * param0, BattleContext * param1);
int ov16_02256128(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_02256148(BattleContext * param0, int param1, int param2);
BOOL BattleSystem_TriggerTurnEndAbility(BattleSystem * param0, BattleContext * param1, int param2);
@ -87,7 +87,7 @@ BOOL BattleSystem_TriggerDetrimentalHeldItem(BattleSystem * param0, BattleContex
u16 ov16_02258874(BattleContext * param0, int param1);
BOOL ov16_022588A4(BattleContext * param0, int param1);
BOOL ov16_022588BC(BattleSystem * param0, BattleContext * param1, int * param2);
s32 ov16_02258AB8(BattleContext * param0, int param1);
s32 Battler_HeldItemEffect(BattleContext * param0, int param1);
s32 ov16_02258ACC(BattleContext * param0, int param1, int param2);
s32 ov16_02258B18(BattleContext * param0, int param1);
s32 ov16_02258B2C(BattleContext * param0, int param1);
@ -97,20 +97,20 @@ s32 ov16_02258B80(BattleContext * param0, int param1);
int BattleSystem_CanSwitch(BattleSystem *battleSys, BattleContext *battleCtx, int battler);
BOOL ov16_02258CB4(BattleSystem * param0, BattleContext * param1, int param2);
BOOL ov16_02259204(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02259868(BattleSystem * param0, BattleContext * param1);
void BattleSystem_UpdateMetronomeCount(BattleSystem * param0, BattleContext * param1);
void ov16_0225991C(BattleSystem * param0, BattleContext * param1);
int ov16_022599D0(BattleContext * param0, int param1, int param2, int param3);
BOOL BattleSystem_CanPickCommand(BattleContext *battleSys, int battler);
void ov16_02259A5C(BattleSystem * param0, BattleContext * param1, Pokemon * param2);
u8 BattleContext_IOBufferVal(BattleContext *battleCtx, int battler);
BOOL ov16_02259AC0(BattleContext * param0, int param1);
BOOL ov16_02259ADC(BattleSystem * param0, BattleContext * param1);
BOOL BattleSystem_TrainerIsOT(BattleSystem * param0, BattleContext * param1);
BOOL ov16_02259B38(BattleSystem * param0, Pokemon * param1);
BOOL ov16_02259B9C(BattleSystem * param0, BattleContext * param1, int * param2);
void ov16_0225A1B0(BattleSystem * param0, BattleContext * param1);
void BattleSystem_SwitchSlots(BattleSystem *battleSys, BattleContext *battleCtx, int battler, int partySlot);
int ov16_0225A280(BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9);
int ov16_0225AEB8(BattleSystem * param0, BattleContext * param1, int param2);
int BattleSystem_CalcMoveDamage(BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9);
int BattleSystem_CalcDamageVariance(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_0225AEE4(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4, u32 param5);
BOOL ov16_0225AFF4(u16 param0);
BOOL ov16_0225B02C(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
@ -121,7 +121,7 @@ int BattleSystem_SideToBattler(BattleSystem * param0, BattleContext * param1, in
void ov16_0225B148(BattleSystem * param0, BattleContext * param1);
BOOL ov16_0225B1DC(BattleContext * param0, int param1, int param2);
BOOL ov16_0225B228(BattleSystem * param0, BattleContext * param1, int * param2);
void ov16_0225B408(BattleContext * param0, int param1, int param2);
void BattleSystem_DecPPForPressure(BattleContext * param0, int param1, int param2);
BOOL BattleSystem_RecordingStopped(BattleSystem * param0, BattleContext * param1);
int ov16_0225B45C(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void ov16_0225B540(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);

View File

@ -3267,7 +3267,7 @@ static s32 ov14_02222E84 (BattleSystem * param0, BattleContext * param1, u16 par
}
if (v5 == 0) {
v5 = ov16_0225A280(param0, param1, param2, param1->sideConditionsMask[v0], param1->fieldConditionsMask, v1, v2, param5, param1->aiContext.defender, 1);
v5 = BattleSystem_CalcMoveDamage(param0, param1, param2, param1->sideConditionsMask[v0], param1->fieldConditionsMask, v1, v2, param5, param1->aiContext.defender, 1);
} else {
param1->battleStatusMask |= 0x800;
}
@ -3293,7 +3293,7 @@ static int ov14_0222327C (BattleSystem * param0, BattleContext * param1, int par
v0 = ov16_02258B2C(param1, param2);
break;
case 449:
switch (ov16_02258AB8(param1, param2)) {
switch (Battler_HeldItemEffect(param1, param2)) {
case 131:
v0 = 1;
break;
@ -3431,7 +3431,7 @@ static BOOL ov14_0222342C (BattleSystem * param0, BattleContext * param1, int pa
if (v2) {
v4 = 0;
ov16_022552D4(param1, v2, v3, Pokemon_GetValue(v5, MON_DATA_ABILITY, NULL), Battler_Ability(param1, param2 ^ 1), ov16_02258AB8(param1, param2 ^ 1), ov16_02252060(param1, param2 ^ 1, 27, NULL), ov16_02252060(param1, param2 ^ 1, 28, NULL), &v4);
ov16_022552D4(param1, v2, v3, Pokemon_GetValue(v5, MON_DATA_ABILITY, NULL), Battler_Ability(param1, param2 ^ 1), Battler_HeldItemEffect(param1, param2 ^ 1), ov16_02252060(param1, param2 ^ 1, 27, NULL), ov16_02252060(param1, param2 ^ 1, 28, NULL), &v4);
if (v4 & 0x2) {
if ((BattleSystem_RandNext(param0) % 3) < 2) {
@ -3525,7 +3525,7 @@ static BOOL ov14_022235F0 (BattleSystem * param0, BattleContext * param1, int pa
v8 = 0;
if (param1->battleMons[v2].curHP) {
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v2), ov16_02258AB8(param1, v2), ov16_02252060(param1, v2, 27, NULL), ov16_02252060(param1, v2, 28, NULL), &v8);
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v2), Battler_HeldItemEffect(param1, v2), ov16_02252060(param1, v2, 27, NULL), ov16_02252060(param1, v2, 28, NULL), &v8);
}
if (v8 & 0x2) {
@ -3538,7 +3538,7 @@ static BOOL ov14_022235F0 (BattleSystem * param0, BattleContext * param1, int pa
v8 = 0;
if (param1->battleMons[v3].curHP) {
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v3), ov16_02258AB8(param1, v3), ov16_02252060(param1, v3, 27, NULL), ov16_02252060(param1, v3, 28, NULL), &v8);
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v3), Battler_HeldItemEffect(param1, v3), ov16_02252060(param1, v3, 27, NULL), ov16_02252060(param1, v3, 28, NULL), &v8);
}
if (v8 & 0x2) {
@ -3564,7 +3564,7 @@ static BOOL ov14_022235F0 (BattleSystem * param0, BattleContext * param1, int pa
v8 = 0;
if (param1->battleMons[v2].curHP) {
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v2), ov16_02258AB8(param1, v2), ov16_02252060(param1, v2, 27, NULL), ov16_02252060(param1, v2, 28, NULL), &v8);
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v2), Battler_HeldItemEffect(param1, v2), ov16_02252060(param1, v2, 27, NULL), ov16_02252060(param1, v2, 28, NULL), &v8);
}
if (v8 == 0) {
@ -3577,7 +3577,7 @@ static BOOL ov14_022235F0 (BattleSystem * param0, BattleContext * param1, int pa
v8 = 0;
if (param1->battleMons[v3].curHP) {
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v3), ov16_02258AB8(param1, v3), ov16_02252060(param1, v3, 27, NULL), ov16_02252060(param1, v3, 28, NULL), &v8);
ov16_022552D4(param1, v6, v7, Pokemon_GetValue(v12, MON_DATA_ABILITY, NULL), Battler_Ability(param1, v3), Battler_HeldItemEffect(param1, v3), ov16_02252060(param1, v3, 27, NULL), ov16_02252060(param1, v3, 28, NULL), &v8);
}
if (v8 == 0) {
@ -3769,7 +3769,7 @@ static BOOL ov14_02223E10 (BattleSystem * param0, BattleContext * param1, int pa
if (v4) {
v6 = 0;
ov16_022552D4(param1, v4, v5, Pokemon_GetValue(v9, MON_DATA_ABILITY, NULL), Battler_Ability(param1, param1->moveHitBattler[param2]), ov16_02258AB8(param1, param1->moveHitBattler[param2]), ov16_02252060(param1, param1->moveHitBattler[param2], 27, NULL), ov16_02252060(param1, param1->moveHitBattler[param2], 28, NULL), &v6);
ov16_022552D4(param1, v4, v5, Pokemon_GetValue(v9, MON_DATA_ABILITY, NULL), Battler_Ability(param1, param1->moveHitBattler[param2]), Battler_HeldItemEffect(param1, param1->moveHitBattler[param2]), ov16_02252060(param1, param1->moveHitBattler[param2], 27, NULL), ov16_02252060(param1, param1->moveHitBattler[param2], 28, NULL), &v6);
if (v6 & 0x2) {
if ((BattleSystem_RandNext(param0) % param4) == 0) {

File diff suppressed because it is too large Load Diff

View File

@ -110,7 +110,7 @@ UnkStruct_0200B358 * ov16_0223E0D0(BattleSystem * param0);
Strbuf* ov16_0223E0D4(BattleSystem * param0);
u16 ov16_0223E0D8(BattleSystem * param0, int param1);
TrainerData * ov16_0223E120(BattleSystem * param0, int param1);
TrainerInfo * ov16_0223E16C(BattleSystem * param0, int param1);
TrainerInfo * BattleSystem_TrainerInfo(BattleSystem * param0, int param1);
UnkStruct_0207D3C0 * BattleSystem_Bag(BattleSystem * param0);
UnkStruct_0207D99C * BattleSystem_BagCursor(BattleSystem * param0);
u32 ov16_0223E1B4(BattleSystem * param0, int param1);
@ -440,7 +440,7 @@ TrainerData * ov16_0223E120 (BattleSystem * param0, int param1)
}
}
TrainerInfo * ov16_0223E16C (BattleSystem * param0, int param1)
TrainerInfo * BattleSystem_TrainerInfo (BattleSystem * param0, int param1)
{
if ((param0->battleType & 0x8) || ((param0->battleType & 0x10) && (BattleSystem_BattlerSlot(param0, param1) & 0x1))) {
return param0->unk_48[param1];

View File

@ -1353,14 +1353,14 @@ static void ov16_02241374 (BattleSystem * param0, BattleContext * param1)
v0 = param1->aiContext.moveTable[param1->moveCur].type;
}
param1->damage = ov16_0225A280(param0, param1, param1->moveCur, param1->sideConditionsMask[Battler_Side(param0, param1->defender)], param1->fieldConditionsMask, param1->movePower, v0, param1->attacker, param1->defender, param1->criticalMul);
param1->damage = BattleSystem_CalcMoveDamage(param0, param1, param1->moveCur, param1->sideConditionsMask[Battler_Side(param0, param1->defender)], param1->fieldConditionsMask, param1->movePower, v0, param1->attacker, param1->defender, param1->criticalMul);
param1->damage *= param1->criticalMul;
if (ov16_02258AB8(param1, param1->attacker) == 98) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 98) {
param1->damage = param1->damage * (100 + ov16_02258ACC(param1, param1->attacker, 0)) / 100;
}
if (ov16_02258AB8(param1, param1->attacker) == 105) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 105) {
param1->damage = param1->damage * (10 + param1->battleMons[param1->attacker].moveEffectsData.metronomeTurns) / 10;
}
@ -1382,7 +1382,7 @@ static BOOL ov16_022414E0 (BattleSystem * param0, BattleContext * param1)
ov16_02248AF0(param1, 1);
ov16_02241374(param0, param1);
param1->damage = ov16_0225AEB8(param0, param1, param1->damage);
param1->damage = BattleSystem_CalcDamageVariance(param0, param1, param1->damage);
param1->damage *= -1;
return 0;
@ -1587,7 +1587,7 @@ static BOOL ov16_022417F4 (BattleSystem * param0, BattleContext * param1)
param1->battleMons[v1].curHP = param1->battleMons[v1].maxHP;
}
ov16_02253EC0(param0, param1, v1);
BattleMon_CopyToParty(param0, param1, v1);
return 0;
}
@ -1866,7 +1866,7 @@ static BOOL ov16_02241C28 (BattleSystem * param0, BattleContext * param1)
if (v0 == 0) {
param1->defender = BattleSystem_Defender(param0, param1, param1->attacker, param1->msgMoveTemp, 1, 0);
ov16_02253C98(param0, param1, param1->attacker, param1->msgMoveTemp);
BattleSystem_RedirectTarget(param0, param1, param1->attacker, param1->msgMoveTemp);
param1->battlerActions[param1->attacker][1] = param1->defender;
}
@ -2543,7 +2543,7 @@ static BOOL ov16_02242A14 (BattleSystem * param0, BattleContext * param1)
}
ov16_022523E8(param1, v4, v2, (u8 *)&v5);
ov16_02253EC0(param0, param1, v4);
BattleMon_CopyToParty(param0, param1, v4);
return 0;
}
@ -2807,7 +2807,7 @@ static BOOL ov16_02242DBC (BattleSystem * param0, BattleContext * param1)
}
ov16_022523E8(param1, v4, v2, (u8 *)&v5);
ov16_02253EC0(param0, param1, v4);
BattleMon_CopyToParty(param0, param1, v4);
}
return 0;
@ -3162,10 +3162,10 @@ static BOOL ov16_022432B4 (BattleSystem * param0, BattleContext * param1)
v0 += ov16_022431BC(param0, param1, 3);
}
TrainerInfo_GiveMoney(ov16_0223E16C(param0, 0), v0);
TrainerInfo_GiveMoney(BattleSystem_TrainerInfo(param0, 0), v0);
} else {
v0 = ov16_0223F904(param0->parties[0], param0->unk_48[0]);
TrainerInfo_TakeMoney(ov16_0223E16C(param0, 0), v0);
TrainerInfo_TakeMoney(BattleSystem_TrainerInfo(param0, 0), v0);
}
if (v0) {
@ -3534,7 +3534,7 @@ static BOOL ov16_022438A8 (BattleSystem * param0, BattleContext * param1)
param1->msgTemp = 0xffff;
}
TrainerInfo_GiveMoney(ov16_0223E16C(param0, 0), param1->msgTemp);
TrainerInfo_GiveMoney(BattleSystem_TrainerInfo(param0, 0), param1->msgTemp);
return 0;
}
@ -3557,7 +3557,7 @@ static BOOL ov16_022438F8 (BattleSystem * param0, BattleContext * param1)
param1->sideConditions[v1].lightScreenTurns = 5;
param1->sideConditions[v1].lightScreenUser = param1->attacker;
if (ov16_02258AB8(param1, param1->attacker) == 97) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 97) {
param1->sideConditions[v1].lightScreenTurns += ov16_02258ACC(param1, param1->attacker, 0);
}
@ -3593,7 +3593,7 @@ static BOOL ov16_022439D8 (BattleSystem * param0, BattleContext * param1)
param1->sideConditions[v1].reflectTurns = 5;
param1->sideConditions[v1].reflectUser = param1->attacker;
if (ov16_02258AB8(param1, param1->attacker) == 97) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 97) {
param1->sideConditions[v1].reflectTurns += ov16_02258ACC(param1, param1->attacker, 0);
}
@ -3817,7 +3817,7 @@ static BOOL ov16_02243F54 (BattleSystem * param0, BattleContext * param1)
ov16_02248AF0(param1, 1);
v0 = ov16_02248AD0(param1);
v1 = ov16_02254EE0(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
v1 = Battler_SlotForMove(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
if ((param1->battleMons[param1->defender].moveEffectsData.disabledMove == 0) && (v1 != 4) && (param1->battleMons[param1->defender].ppCur[v1]) && (param1->movePrevByBattler[param1->defender])) {
param1->msgMoveTemp = param1->movePrevByBattler[param1->defender];
@ -3859,7 +3859,7 @@ static BOOL ov16_02244010 (BattleSystem * param0, BattleContext * param1)
}
}
ov16_0225B408(param1, param1->attacker, param1->defender);
BattleSystem_DecPPForPressure(param1, param1->attacker, param1->defender);
} else {
param1->selfTurnFlags[param1->attacker].skipPressureCheck = 1;
param1->moveStatusFlags |= 0x40;
@ -3897,7 +3897,7 @@ static BOOL ov16_0224410C (BattleSystem * param0, BattleContext * param1)
}
}
ov16_0225B408(param1, param1->attacker, param1->defender);
BattleSystem_DecPPForPressure(param1, param1->attacker, param1->defender);
} else {
param1->selfTurnFlags[param1->attacker].skipPressureCheck = 1;
param1->moveStatusFlags |= 0x40;
@ -3914,7 +3914,7 @@ static BOOL ov16_02244208 (BattleSystem * param0, BattleContext * param1)
ov16_02248AF0(param1, 1);
v0 = ov16_02248AD0(param1);
v1 = ov16_02254EE0(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
v1 = Battler_SlotForMove(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
if (ov16_0225B084(param1, param1->movePrevByBattler[param1->defender]) == 0) {
v1 = 4;
@ -3950,7 +3950,7 @@ static BOOL ov16_022442F0 (BattleSystem * param0, BattleContext * param1)
}
if ((param1->conversion2Move[param1->attacker]) && (param1->conversion2Battler[param1->attacker] != 0xff)) {
if ((ov16_0225582C(param1, param1->conversion2Move[param1->attacker])) && (param1->battleMons[param1->conversion2Battler[param1->attacker]].statusVolatile & 0x1000)) {
if ((BattleMove_IsMultiTurn(param1, param1->conversion2Move[param1->attacker])) && (param1->battleMons[param1->conversion2Battler[param1->attacker]].statusVolatile & 0x1000)) {
ov16_02248AF0(param1, v2);
return 0;
} else {
@ -4043,7 +4043,7 @@ static BOOL ov16_022445D4 (BattleSystem * param0, BattleContext * param1)
v1 = 0;
for (v0 = 0; v0 < 4; v0++) {
if ((ov16_02255918(param1->battleMons[param1->attacker].moves[v0])) || (param1->battleMons[param1->attacker].moves[v0] == 264) || (param1->battleMons[param1->attacker].moves[v0] == 253) || (param1->battleMons[param1->attacker].moves[v0] == 448) || (ov16_0225582C(param1, param1->battleMons[param1->attacker].moves[v0]))) {
if ((ov16_02255918(param1->battleMons[param1->attacker].moves[v0])) || (param1->battleMons[param1->attacker].moves[v0] == 264) || (param1->battleMons[param1->attacker].moves[v0] == 253) || (param1->battleMons[param1->attacker].moves[v0] == 448) || (BattleMove_IsMultiTurn(param1, param1->battleMons[param1->attacker].moves[v0]))) {
v1 |= FlagIndex(v0);
}
}
@ -4101,7 +4101,7 @@ static BOOL ov16_022446F4 (BattleSystem * param0, BattleContext * param1)
v0 = ov16_02248AD0(param1);
if (param1->movePrevByBattler[param1->defender]) {
v1 = ov16_02254EE0(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
v1 = Battler_SlotForMove(&param1->battleMons[param1->defender], param1->movePrevByBattler[param1->defender]);
if ((v1 == 4) || (param1->battleMons[param1->defender].ppCur[v1] == 0)) {
ov16_02248AF0(param1, v0);
@ -4116,7 +4116,7 @@ static BOOL ov16_022446F4 (BattleSystem * param0, BattleContext * param1)
param1->msgTemp = v2;
param1->battleMons[param1->defender].ppCur[v1] -= v2;
ov16_02253EC0(param0, param1, param1->defender);
BattleMon_CopyToParty(param0, param1, param1->defender);
}
} else {
ov16_02248AF0(param1, v0);
@ -4900,8 +4900,8 @@ static BOOL ov16_02245BC8 (BattleSystem * param0, BattleContext * param1)
param1->fieldConditions.futureSightTurns[param1->defender] = 3;
param1->fieldConditions.futureSightMove[param1->defender] = param1->moveCur;
param1->fieldConditions.futureSightAttacker[param1->defender] = param1->attacker;
v2 = ov16_0225A280(param0, param1, param1->moveCur, param1->sideConditionsMask[v1], param1->fieldConditionsMask, 0, 0, param1->attacker, param1->defender, 1) * -1;
param1->fieldConditions.futureSightDamage[param1->defender] = ov16_0225AEB8(param0, param1, v2);
v2 = BattleSystem_CalcMoveDamage(param0, param1, param1->moveCur, param1->sideConditionsMask[v1], param1->fieldConditionsMask, 0, 0, param1->attacker, param1->defender, 1) * -1;
param1->fieldConditions.futureSightDamage[param1->defender] = BattleSystem_CalcDamageVariance(param0, param1, v2);
if (param1->turnFlags[param1->attacker].helpingHand) {
param1->fieldConditions.futureSightDamage[param1->defender] = param1->fieldConditions.futureSightDamage[param1->defender] * 15 / 10;
@ -5003,7 +5003,7 @@ static BOOL ov16_02245D68 (BattleSystem * param0, BattleContext * param1)
param1->damage = param1->damage * 15 / 10;
}
param1->damage = ov16_0225AEB8(param0, param1, param1->damage);
param1->damage = BattleSystem_CalcDamageVariance(param0, param1, param1->damage);
param1->damage *= -1;
param1->msgBuffer.id = 481;
param1->msgBuffer.tags = 2;
@ -5394,7 +5394,7 @@ static BOOL ov16_022467A0 (BattleSystem * param0, BattleContext * param1)
param1->battleMons[param1->attacker].ppCur[v2] = 0;
param1->msgMoveTemp = param1->battleMons[param1->attacker].moves[v2];
ov16_02253EC0(param0, param1, param1->attacker);
BattleMon_CopyToParty(param0, param1, param1->attacker);
} else {
ov16_02248AF0(param1, v0);
}
@ -5517,7 +5517,7 @@ static BOOL ov16_022469C4 (BattleSystem * param0, BattleContext * param1)
}
if (v3) {
v4 = ov16_02254EE0(&param1->battleMons[v1], v3);
v4 = Battler_SlotForMove(&param1->battleMons[v1], v3);
if ((param1->aiContext.moveTable[v3].effect == 128) && (param1->battleMons[v1].ppCur[v4])) {
param1->battleMons[v1].ppCur[v4]--;
@ -5533,7 +5533,7 @@ static BOOL ov16_022469C4 (BattleSystem * param0, BattleContext * param1)
param1->moveCur = v3;
param1->movePrevByBattler[v1] = v3;
param1->battlerActions[v1][0] = 39;
ov16_02253EC0(param0, param1, v1);
BattleMon_CopyToParty(param0, param1, v1);
break;
}
}
@ -5547,7 +5547,7 @@ static BOOL ov16_022469C4 (BattleSystem * param0, BattleContext * param1)
int v5;
int v6;
v5 = ov16_02258AB8(param1, param1->attacker);
v5 = Battler_HeldItemEffect(param1, param1->attacker);
v6 = ov16_02258ACC(param1, param1->attacker, 0);
if ((v5 == 55) || (v5 == 115) || (v5 == 125)) {
@ -5714,7 +5714,7 @@ static BOOL ov16_02246DF0 (BattleSystem * param0, BattleContext * param1)
}
}
ov16_0225B408(param1, param1->attacker, param1->defender);
BattleSystem_DecPPForPressure(param1, param1->attacker, param1->defender);
} else {
ov16_02248AF0(param1, v0);
}
@ -6292,11 +6292,11 @@ static BOOL ov16_022478E4 (BattleSystem * param0, BattleContext * param1)
v0 = ov16_0224A984(param0, param1, v2);
if (v1 == 0) {
if (ov16_02258AB8(param1, v0) == v5) {
if (Battler_HeldItemEffect(param1, v0) == v5) {
ov16_02248AF0(param1, v3);
}
} else {
if (ov16_02258AB8(param1, v0) != v5) {
if (Battler_HeldItemEffect(param1, v0) != v5) {
ov16_02248AF0(param1, v3);
}
}
@ -7127,7 +7127,7 @@ static BOOL ov16_02248550 (BattleSystem * param0, BattleContext * param1)
param1->recycleItem[v1] = param1->battleMons[v1].heldItem;
param1->battleMons[v1].heldItem = 0;
ov16_02253EC0(param0, param1, v1);
BattleMon_CopyToParty(param0, param1, v1);
return 0;
}
@ -7201,7 +7201,7 @@ static BOOL ov16_02248660 (BattleSystem * param0, BattleContext * param1)
v0 = ov16_02248AD0(param1);
v1 = ov16_0224A984(param0, param1, v0);
v2 = ov16_02258AB8(param1, v1);
v2 = Battler_HeldItemEffect(param1, v1);
v3 = ov16_02258ACC(param1, v1, 0);
if ((v2 == 65) && ((BattleSystem_RandNext(param0) % 100) < v3)) {

View File

@ -67,9 +67,9 @@ void ov16_022535F0(BattleSystem * param0, BattleContext * param1, int param2);
BOOL ov16_0225366C(BattleSystem * param0, BattleContext * param1, int * param2);
BOOL ov16_02253710(BattleSystem * param0, BattleContext * param1, int * param2);
int BattleSystem_Defender(BattleSystem * param0, BattleContext * param1, int param2, u16 param3, int param4, int param5);
void ov16_02253C98(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
void BattleSystem_RedirectTarget(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
BOOL ov16_02253E3C(BattleSystem * param0, BattleContext * param1);
void ov16_02253EC0(BattleSystem * param0, BattleContext * param1, int param2);
void BattleMon_CopyToParty(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02253EF0(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02253F20(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_02253F7C(BattleContext * param0, int param1);
@ -81,7 +81,7 @@ void ov16_02254744(BattleSystem * param0, BattleContext * param1, int param2);
void BattleSystem_SetupNextTurn(BattleSystem * param0, BattleContext * param1);
int BattleSystem_CheckStruggling(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);
BOOL BattleSystem_CanUseMove(BattleSystem *battleSys, BattleContext *battleCtx, int battler, int moveSlot, BattleMessage *msgOut);
int ov16_02254EE0(BattleMon * param0, u16 param1);
int Battler_SlotForMove(BattleMon * param0, u16 param1);
int ov16_02254FA8(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4, int param5, int param6, u32 * param7);
void ov16_022552D4(BattleContext * param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7, u32 * param8);
BOOL BattleContext_MoveFailed(BattleContext * param0, int param1);
@ -89,7 +89,7 @@ u8 ov16_022554E0(BattleSystem * param0, BattleContext * param1, int param2, int
int BattleSystem_NicknameTag(BattleContext *battleSys, int battler);
u16 Battler_SelectedMove(BattleContext * param0, int param1);
int BattleSystem_CountAbility(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);
BOOL ov16_0225582C(BattleContext * param0, int param1);
BOOL BattleMove_IsMultiTurn(BattleContext * param0, int param1);
BOOL ov16_0225588C(BattleSystem * param0, int param1, u8 * param2, u8 * param3, u8 * param4);
int ov16_022558CC(u8 param0, u8 param1, u8 param2);
BOOL ov16_02255918(u16 param0);
@ -103,13 +103,13 @@ BOOL ov16_02255B10(BattleSystem * param0, BattleContext * param1, int param2);
BOOL BattleSystem_Trapped(BattleSystem * param0, BattleContext * param1, int param2, BattleMessage * param3);
BOOL BattleSystem_TryEscape(BattleSystem * param0, BattleContext * param1, int param2);
BOOL Battler_CheckTruant(BattleContext * param0, int param1);
BOOL ov16_02255EF4(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL BattleSystem_Imprisoned(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL ov16_02255F68(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02255F94(BattleSystem * param0, BattleContext * param1);
void BattleSystem_SortMonsBySpeed(BattleSystem * param0, BattleContext * param1);
BOOL ov16_02256044(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL ov16_02256078(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void ov16_022560B0(BattleSystem * param0, BattleContext * param1);
BOOL BattleSystem_FailsInHighGravity(BattleSystem * param0, BattleContext * param1, int param2, int param3);
BOOL BattleSystem_HealBlocked(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void BattleSystem_UpdateLastResort(BattleSystem * param0, BattleContext * param1);
int ov16_02256128(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_02256148(BattleContext * param0, int param1, int param2);
BOOL BattleSystem_TriggerTurnEndAbility(BattleSystem * param0, BattleContext * param1, int param2);
@ -127,7 +127,7 @@ BOOL BattleSystem_TriggerDetrimentalHeldItem(BattleSystem * param0, BattleContex
u16 ov16_02258874(BattleContext * param0, int param1);
BOOL ov16_022588A4(BattleContext * param0, int param1);
BOOL ov16_022588BC(BattleSystem * param0, BattleContext * param1, int * param2);
s32 ov16_02258AB8(BattleContext * param0, int param1);
s32 Battler_HeldItemEffect(BattleContext * param0, int param1);
s32 ov16_02258ACC(BattleContext * param0, int param1, int param2);
s32 ov16_02258B18(BattleContext * param0, int param1);
s32 ov16_02258B2C(BattleContext * param0, int param1);
@ -137,20 +137,20 @@ s32 ov16_02258B80(BattleContext * param0, int param1);
int BattleSystem_CanSwitch(BattleSystem *battleSys, BattleContext *battleCtx, int battler);
BOOL ov16_02258CB4(BattleSystem * param0, BattleContext * param1, int param2);
BOOL ov16_02259204(BattleSystem * param0, BattleContext * param1, int param2);
void ov16_02259868(BattleSystem * param0, BattleContext * param1);
void BattleSystem_UpdateMetronomeCount(BattleSystem * param0, BattleContext * param1);
void ov16_0225991C(BattleSystem * param0, BattleContext * param1);
int ov16_022599D0(BattleContext * param0, int param1, int param2, int param3);
BOOL BattleSystem_CanPickCommand(BattleContext *battleSys, int battler);
void ov16_02259A5C(BattleSystem * param0, BattleContext * param1, Pokemon * param2);
u8 BattleContext_IOBufferVal(BattleContext *battleCtx, int battler);
BOOL ov16_02259AC0(BattleContext * param0, int param1);
BOOL ov16_02259ADC(BattleSystem * param0, BattleContext * param1);
BOOL BattleSystem_TrainerIsOT(BattleSystem * param0, BattleContext * param1);
BOOL ov16_02259B38(BattleSystem * param0, Pokemon * param1);
BOOL ov16_02259B9C(BattleSystem * param0, BattleContext * param1, int * param2);
void ov16_0225A1B0(BattleSystem * param0, BattleContext * param1);
void BattleSystem_SwitchSlots(BattleSystem *battleSys, BattleContext *battleCtx, int battler, int partySlot);
int ov16_0225A280(BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9);
int ov16_0225AEB8(BattleSystem * param0, BattleContext * param1, int param2);
int BattleSystem_CalcMoveDamage(BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9);
int BattleSystem_CalcDamageVariance(BattleSystem * param0, BattleContext * param1, int param2);
int ov16_0225AEE4(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4, u32 param5);
BOOL ov16_0225AFF4(u16 param0);
BOOL ov16_0225B02C(BattleSystem * param0, BattleContext * param1, int param2, u16 param3);
@ -161,7 +161,7 @@ int BattleSystem_SideToBattler(BattleSystem * param0, BattleContext * param1, in
void ov16_0225B148(BattleSystem * param0, BattleContext * param1);
BOOL ov16_0225B1DC(BattleContext * param0, int param1, int param2);
BOOL ov16_0225B228(BattleSystem * param0, BattleContext * param1, int * param2);
void ov16_0225B408(BattleContext * param0, int param1, int param2);
void BattleSystem_DecPPForPressure(BattleContext * param0, int param1, int param2);
BOOL BattleSystem_RecordingStopped(BattleSystem * param0, BattleContext * param1);
int ov16_0225B45C(BattleSystem * param0, BattleContext * param1, int param2, int param3);
void ov16_0225B540(BattleSystem * param0, BattleContext * param1, int param2, int param3, int param4);
@ -177,7 +177,7 @@ static void ov16_0225B824(BattleContext * param0, u8 param1);
static void ov16_0225B830(BattleContext * param0, u8 param1);
static int ov16_0225B840(BattleSystem * param0, BattleContext * param1, int param2, int param3);
static BOOL ov16_0225B8E4(BattleContext * param0, int param1);
static int ov16_0225B910(BattleSystem * param0, BattleContext * param1, int param2, int param3);
static int BattleMove_Type(BattleSystem * param0, BattleContext * param1, int param2, int param3);
int ov16_0225BA88(BattleSystem * param0, int param1);
int ov16_0225BE28(BattleSystem * param0, int param1);
int ov16_0225BE3C(BattleSystem * param0, BattleContext * param1, Pokemon * param2, int param3);
@ -1229,9 +1229,9 @@ u8 BattleSystem_CompareBattlerSpeed (BattleSystem * param0, BattleContext * para
v19 = Battler_Ability(param1, param2);
v20 = Battler_Ability(param1, param3);
v5 = ov16_02258AB8(param1, param2);
v5 = Battler_HeldItemEffect(param1, param2);
v6 = ov16_02258ACC(param1, param2, 0);
v7 = ov16_02258AB8(param1, param3);
v7 = Battler_HeldItemEffect(param1, param3);
v8 = ov16_02258ACC(param1, param3, 0);
v21 = param1->battleMons[param2].statBoosts[0x3];
v22 = param1->battleMons[param3].statBoosts[0x3];
@ -1782,7 +1782,7 @@ int BattleSystem_Defender (BattleSystem * param0, BattleContext * param1, int pa
return v0;
}
void ov16_02253C98 (BattleSystem * param0, BattleContext * param1, int param2, u16 param3)
void BattleSystem_RedirectTarget (BattleSystem * param0, BattleContext * param1, int param2, u16 param3)
{
int v0;
int v1;
@ -1804,7 +1804,7 @@ void ov16_02253C98 (BattleSystem * param0, BattleContext * param1, int param2, u
return;
}
v3 = ov16_0225B910(param0, param1, param2, param3);
v3 = BattleMove_Type(param0, param1, param2, param3);
if (v3 == 0) {
v3 = param1->aiContext.moveTable[param3].type;
@ -1864,7 +1864,7 @@ BOOL ov16_02253E3C (BattleSystem * param0, BattleContext * param1)
return v0;
}
void ov16_02253EC0 (BattleSystem * param0, BattleContext * param1, int param2)
void BattleMon_CopyToParty (BattleSystem * param0, BattleContext * param1, int param2)
{
if (param1->battleMons[param2].heldItem == 0) {
ov16_0225B830(param1, param2);
@ -2312,7 +2312,7 @@ int BattleSystem_CheckStruggling (BattleSystem *battleSys, BattleContext *battle
int v0;
int v1;
v1 = ov16_02258AB8(battleCtx, battler);
v1 = Battler_HeldItemEffect(battleCtx, battler);
for (v0 = 0; v0 < 4; v0++) {
if ((battleCtx->battleMons[battler].moves[v0] == 0) && (struggleChecksMask & 0x1)) {
@ -2335,15 +2335,15 @@ int BattleSystem_CheckStruggling (BattleSystem *battleSys, BattleContext *battle
moveFlags |= FlagIndex(v0);
}
if ((ov16_02255EF4(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x20)) {
if ((BattleSystem_Imprisoned(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x20)) {
moveFlags |= FlagIndex(v0);
}
if ((ov16_02256044(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x40)) {
if ((BattleSystem_FailsInHighGravity(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x40)) {
moveFlags |= FlagIndex(v0);
}
if ((ov16_02256078(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x80)) {
if ((BattleSystem_HealBlocked(battleSys, battleCtx, battler, battleCtx->battleMons[battler].moves[v0])) && (struggleChecksMask & 0x80)) {
moveFlags |= FlagIndex(v0);
}
@ -2352,7 +2352,7 @@ int BattleSystem_CheckStruggling (BattleSystem *battleSys, BattleContext *battle
}
if (((v1 == 55) || (v1 == 115) || (v1 == 125)) && (struggleChecksMask & 0x200)) {
if (ov16_02254EE0(&battleCtx->battleMons[battler], battleCtx->battleMons[battler].moveEffectsData.choiceLockedMove) == 4) {
if (Battler_SlotForMove(&battleCtx->battleMons[battler], battleCtx->battleMons[battler].moveEffectsData.choiceLockedMove) == 4) {
battleCtx->battleMons[battler].moveEffectsData.choiceLockedMove = 0;
} else {
if ((battleCtx->battleMons[battler].moveEffectsData.choiceLockedMove) && (battleCtx->battleMons[battler].moveEffectsData.choiceLockedMove != battleCtx->battleMons[battler].moves[v0])) {
@ -2420,7 +2420,7 @@ BOOL BattleSystem_CanUseMove (BattleSystem *battleSys, BattleContext *battleCtx,
return result;
}
int ov16_02254EE0 (BattleMon * param0, u16 param1)
int Battler_SlotForMove (BattleMon * param0, u16 param1)
{
int v0;
@ -2553,7 +2553,7 @@ static BOOL ov16_02254EF4 (BattleContext * param0, int param1, int param2, int p
BOOL v0;
int v1;
v1 = ov16_02258AB8(param0, param2);
v1 = Battler_HeldItemEffect(param0, param2);
v0 = 1;
if ((v1 == 106) || (param0->battleMons[param2].moveEffectsMask & 0x400)) {
@ -2600,9 +2600,9 @@ int ov16_02254FA8 (BattleSystem * param0, BattleContext * param1, int param2, in
return param6;
}
v4 = ov16_02258AB8(param1, param4);
v4 = Battler_HeldItemEffect(param1, param4);
v6 = ov16_02258ACC(param1, param4, 0);
v5 = ov16_02258AB8(param1, param5);
v5 = Battler_HeldItemEffect(param1, param5);
v7 = ov16_02258ACC(param1, param5, 0);
if (Battler_Ability(param1, param4) == 96) {
@ -2941,7 +2941,7 @@ int BattleSystem_CountAbility (BattleSystem * param0, BattleContext * param1, in
return v0;
}
BOOL ov16_0225582C (BattleContext * param0, int param1)
BOOL BattleMove_IsMultiTurn (BattleContext * param0, int param1)
{
switch (param0->aiContext.moveTable[param1].effect) {
case 26:
@ -3156,7 +3156,7 @@ BOOL BattleSystem_Trapped (BattleSystem * param0, BattleContext * param1, int pa
u32 v4;
v4 = BattleSystem_BattleType(param0);
v3 = ov16_02258AB8(param1, param2);
v3 = Battler_HeldItemEffect(param1, param2);
if ((v3 == 63) || (v4 & (0x4 | 0x20 | 0x200 | 0x80)) || (Battler_Ability(param1, param2) == 50)) {
return 0;
@ -3237,7 +3237,7 @@ BOOL BattleSystem_TryEscape (BattleSystem * param0, BattleContext * param1, int
u32 v4;
v4 = BattleSystem_BattleType(param0);
v2 = ov16_02258AB8(param1, param2);
v2 = Battler_HeldItemEffect(param1, param2);
v0 = 0;
if (v2 == 63) {
@ -3284,7 +3284,7 @@ BOOL Battler_CheckTruant (BattleContext * param0, int param1)
return v0;
}
BOOL ov16_02255EF4 (BattleSystem * param0, BattleContext * param1, int param2, int param3)
BOOL BattleSystem_Imprisoned (BattleSystem * param0, BattleContext * param1, int param2, int param3)
{
int v0;
int v1;
@ -3374,7 +3374,7 @@ static const u16 Unk_ov16_0226EBD4[] = {
0x189
};
BOOL ov16_02256044 (BattleSystem * param0, BattleContext * param1, int param2, int param3)
BOOL BattleSystem_FailsInHighGravity (BattleSystem * param0, BattleContext * param1, int param2, int param3)
{
int v0;
BOOL v1;
@ -3410,7 +3410,7 @@ static const u16 Unk_ov16_0226EBFA[] = {
0x111
};
BOOL ov16_02256078 (BattleSystem * param0, BattleContext * param1, int param2, int param3)
BOOL BattleSystem_HealBlocked (BattleSystem * param0, BattleContext * param1, int param2, int param3)
{
int v0;
BOOL v1;
@ -3429,7 +3429,7 @@ BOOL ov16_02256078 (BattleSystem * param0, BattleContext * param1, int param2, i
return v1;
}
void ov16_022560B0 (BattleSystem * param0, BattleContext * param1)
void BattleSystem_UpdateLastResort (BattleSystem * param0, BattleContext * param1)
{
int v0;
@ -4390,11 +4390,11 @@ BOOL ov16_02257808 (BattleSystem * param0, BattleContext * param1, int param2)
return v0;
}
if ((param1->defender != 0xff) && (ov16_02258AB8(param1, param1->defender) == 108) && (param1->defender == param1->sideEffectMon) && (param1->selfTurnFlags[param1->defender].statusFlags & 0x4)) {
if ((param1->defender != 0xff) && (Battler_HeldItemEffect(param1, param1->defender) == 108) && (param1->defender == param1->sideEffectMon) && (param1->selfTurnFlags[param1->defender].statusFlags & 0x4)) {
param1->msgBattlerTemp = param1->defender;
param1->sideEffectMon = param1->attacker;
v0 = 1;
} else if ((ov16_02258AB8(param1, param1->attacker) == 108) && (param1->attacker == param1->sideEffectMon) && (param1->selfTurnFlags[param1->attacker].statusFlags & 0x4)) {
} else if ((Battler_HeldItemEffect(param1, param1->attacker) == 108) && (param1->attacker == param1->sideEffectMon) && (param1->selfTurnFlags[param1->attacker].statusFlags & 0x4)) {
param1->msgBattlerTemp = param1->attacker;
param1->sideEffectMon = param1->defender;
v0 = 1;
@ -4420,7 +4420,7 @@ BOOL BattleSystem_TriggerHeldItem (BattleSystem * param0, BattleContext * param1
int v3;
v0 = 0;
v2 = ov16_02258AB8(param1, param2);
v2 = Battler_HeldItemEffect(param1, param2);
v3 = ov16_02258ACC(param1, param2, 0);
if (param1->battleMons[param2].curHP) {
@ -4481,7 +4481,7 @@ BOOL BattleSystem_TriggerHeldItem (BattleSystem * param0, BattleContext * param1
if (v4 != 4) {
ov16_02252A2C(&param1->battleMons[param2], 31 + v4, v3);
ov16_02253EC0(param0, param1, param2);
BattleMon_CopyToParty(param0, param1, param2);
param1->msgMoveTemp = param1->battleMons[param2].moves[v4];
v1 = (0 + 204);
v0 = 1;
@ -4747,7 +4747,7 @@ BOOL BattleSystem_TriggerLeftovers (BattleSystem * param0, BattleContext * param
int v3;
v0 = 0;
v2 = ov16_02258AB8(param1, param2);
v2 = Battler_HeldItemEffect(param1, param2);
v3 = ov16_02258ACC(param1, param2, 0);
if (param1->battleMons[param2].curHP) {
@ -4796,7 +4796,7 @@ BOOL BattleSystem_TriggerHeldItemOnStatus (BattleSystem * param0, BattleContext
int v3;
v0 = 0;
v2 = ov16_02258AB8(param1, param2);
v2 = Battler_HeldItemEffect(param1, param2);
v3 = ov16_02258ACC(param1, param2, 0);
if (param1->battleMons[param2].curHP) {
@ -4857,7 +4857,7 @@ BOOL BattleSystem_TriggerHeldItemOnStatus (BattleSystem * param0, BattleContext
if (v4 != 4) {
ov16_02252A2C(&param1->battleMons[param2], 31 + v4, v3);
ov16_02253EC0(param0, param1, param2);
BattleMon_CopyToParty(param0, param1, param2);
param1->msgMoveTemp = param1->battleMons[param2].moves[v4];
param3[0] = (0 + 204);
v0 = 1;
@ -5119,7 +5119,7 @@ BOOL BattleSystem_TriggerDetrimentalHeldItem (BattleSystem * param0, BattleConte
int v4;
v0 = 0;
v3 = ov16_02258AB8(param1, param2);
v3 = Battler_HeldItemEffect(param1, param2);
v4 = ov16_02258ACC(param1, param2, 0);
if (param1->battleMons[param2].curHP) {
@ -5195,7 +5195,7 @@ BOOL ov16_022588BC (BattleSystem * param0, BattleContext * param1, int * param2)
return v0;
}
v2 = ov16_02258AB8(param1, param1->defender);
v2 = Battler_HeldItemEffect(param1, param1->defender);
v3 = ov16_02258ACC(param1, param1->defender, 0);
v4 = Battler_Side(param0, param1->attacker);
@ -5236,7 +5236,7 @@ BOOL ov16_022588BC (BattleSystem * param0, BattleContext * param1, int * param2)
return v0;
}
s32 ov16_02258AB8 (BattleContext * param0, int param1)
s32 Battler_HeldItemEffect (BattleContext * param0, int param1)
{
u16 v0;
@ -5315,7 +5315,7 @@ int BattleSystem_CanSwitch (BattleSystem *battleSys, BattleContext *battleCtx, i
v0 = 0;
if (ov16_02258AB8(battleCtx, battler) == 123) {
if (Battler_HeldItemEffect(battleCtx, battler) == 123) {
return 0;
}
@ -5327,7 +5327,7 @@ int BattleSystem_CanSwitch (BattleSystem *battleSys, BattleContext *battleCtx, i
v0 = 1;
}
if ((((Battler_Ability(battleCtx, battler) != 26) && (battleCtx->battleMons[battler].moveEffectsData.magnetRiseTurns == 0) && (ov16_02252060(battleCtx, battler, 27, NULL) != 2) && (ov16_02252060(battleCtx, battler, 28, NULL) != 2)) || (ov16_02258AB8(battleCtx, battler) == 106) || (battleCtx->fieldConditionsMask & 0x7000)) && (BattleSystem_CountAbility(battleSys, battleCtx, 3, battler, 71))) {
if ((((Battler_Ability(battleCtx, battler) != 26) && (battleCtx->battleMons[battler].moveEffectsData.magnetRiseTurns == 0) && (ov16_02252060(battleCtx, battler, 27, NULL) != 2) && (ov16_02252060(battleCtx, battler, 28, NULL) != 2)) || (Battler_HeldItemEffect(battleCtx, battler) == 106) || (battleCtx->fieldConditionsMask & 0x7000)) && (BattleSystem_CountAbility(battleSys, battleCtx, 3, battler, 71))) {
v0 = 1;
}
@ -5423,7 +5423,7 @@ BOOL ov16_02258CB4 (BattleSystem * param0, BattleContext * param1, int param2)
}
ov16_02252A2C(&param1->battleMons[param1->attacker], 31 + v7, v3);
ov16_02253EC0(param0, param1, param1->attacker);
BattleMon_CopyToParty(param0, param1, param1->attacker);
param1->msgMoveTemp = param1->battleMons[param1->attacker].moves[v7];
v1 = (0 + 204);
}
@ -5706,7 +5706,7 @@ BOOL ov16_02259204 (BattleSystem * param0, BattleContext * param1, int param2)
if (v5) {
ov16_02252A2C(&param1->battleMons[param1->defender], 31 + v6, v2);
ov16_02253EC0(param0, param1, param1->defender);
BattleMon_CopyToParty(param0, param1, param1->defender);
param1->msgMoveTemp = param1->battleMons[param1->defender].moves[v6];
param1->flingScript = (0 + 204);
@ -5919,9 +5919,9 @@ BOOL ov16_02259204 (BattleSystem * param0, BattleContext * param1, int param2)
return 1;
}
void ov16_02259868 (BattleSystem * param0, BattleContext * param1)
void BattleSystem_UpdateMetronomeCount (BattleSystem * param0, BattleContext * param1)
{
if (ov16_02258AB8(param1, param1->attacker) == 105) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 105) {
if (((param1->battleMons[param1->attacker].statusVolatile & 0xc00) == 0) && ((param1->battleMons[param1->attacker].statusVolatile & 0x70) == 0) && ((param1->battleStatusMask & 0x200) == 0) && ((param1->battleMons[param1->attacker].statusVolatile & 0x1000) == 0)) {
if (param1->metronomeMove[param1->attacker] == param1->moveTemp) {
if (param1->battleMons[param1->attacker].moveEffectsData.metronomeTurns < 10) {
@ -5939,7 +5939,7 @@ void ov16_02259868 (BattleSystem * param0, BattleContext * param1)
void ov16_0225991C (BattleSystem * param0, BattleContext * param1)
{
if (ov16_02258AB8(param1, param1->attacker) == 105) {
if (Battler_HeldItemEffect(param1, param1->attacker) == 105) {
if ((param1->moveStatusFlags & ((1 | 8 | 64 | 2048 | 4096 | 16384 | 32768 | 65536 | 131072 | 262144 | 524288 | 1048576) | 512 | 0x80000000)) && (param1->metronomeMove[param1->attacker] == param1->moveTemp) && (param1->battleMons[param1->attacker].moveEffectsData.metronomeTurns) && (param1->selfTurnFlags[param1->attacker].repeatedMoveCount == 0) && ((param1->battleMons[param1->attacker].statusVolatile & 0xc00) == 0) && ((param1->battleMons[param1->attacker].statusVolatile & 0x70) == 0) && ((param1->battleStatusMask & 0x200) == 0) && ((param1->battleMons[param1->attacker].statusVolatile & 0x1000) == 0)) {
param1->battleMons[param1->attacker].moveEffectsData.metronomeTurns--;
}
@ -6000,7 +6000,7 @@ void ov16_02259A5C (BattleSystem * param0, BattleContext * param1, Pokemon * par
int v2;
int v3;
v0 = ov16_0223E16C(param0, 0);
v0 = BattleSystem_TrainerInfo(param0, 0);
v1 = ov16_0223E24C(param0);
v2 = ov16_0223E22C(param0);
@ -6029,14 +6029,14 @@ BOOL ov16_02259AC0 (BattleContext * param0, int param1)
return v0;
}
BOOL ov16_02259ADC (BattleSystem * param0, BattleContext * param1)
BOOL BattleSystem_TrainerIsOT (BattleSystem * param0, BattleContext * param1)
{
TrainerInfo * v0;
u32 v1;
u32 v2;
const u16 * v3;
v0 = ov16_0223E16C(param0, 0);
v0 = BattleSystem_TrainerInfo(param0, 0);
v1 = TrainerInfo_ID(v0);
v2 = TrainerInfo_Gender(v0);
v3 = TrainerInfo_Name(v0);
@ -6056,7 +6056,7 @@ BOOL ov16_02259B38 (BattleSystem * param0, Pokemon * param1)
const u16 * v3;
u16 v4[7 + 1];
v0 = ov16_0223E16C(param0, 0);
v0 = BattleSystem_TrainerInfo(param0, 0);
v1 = TrainerInfo_ID(v0);
v2 = TrainerInfo_Gender(v0);
v3 = TrainerInfo_Name(v0);
@ -6334,7 +6334,7 @@ static const u16 Unk_ov16_0226EC16[] = {
0x147
};
int ov16_0225A280 (BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9)
int BattleSystem_CalcMoveDamage (BattleSystem * param0, BattleContext * param1, int param2, u32 param3, u32 param4, u16 param5, u8 param6, u8 param7, u8 param8, u8 param9)
{
int v0;
s32 v1 = 0;
@ -6775,7 +6775,7 @@ int ov16_0225A280 (BattleSystem * param0, BattleContext * param1, int param2, u3
return v1 + 2;
}
int ov16_0225AEB8 (BattleSystem * param0, BattleContext * param1, int param2)
int BattleSystem_CalcDamageVariance (BattleSystem * param0, BattleContext * param1, int param2)
{
if (param2) {
param2 *= (100 - (BattleSystem_RandNext(param0) % 16));
@ -6886,7 +6886,7 @@ BOOL ov16_0225B02C (BattleSystem * param0, BattleContext * param1, int param2, u
v0 = 0;
if ((ov16_02256044(param0, param1, param2, param3) == 1) || (ov16_02256078(param0, param1, param2, param3) == 1)) {
if ((BattleSystem_FailsInHighGravity(param0, param1, param2, param3) == 1) || (BattleSystem_HealBlocked(param0, param1, param2, param3) == 1)) {
return 0;
}
@ -7054,9 +7054,9 @@ BOOL ov16_0225B228 (BattleSystem * param0, BattleContext * param1, int * param2)
int v6;
v0 = 0;
v2 = ov16_02258AB8(param1, param1->attacker);
v2 = Battler_HeldItemEffect(param1, param1->attacker);
v3 = ov16_02258ACC(param1, param1->attacker, 0);
v4 = ov16_02258AB8(param1, param1->defender);
v4 = Battler_HeldItemEffect(param1, param1->defender);
v5 = ov16_02258ACC(param1, param1->defender, 0);
v6 = Battler_Side(param0, param1->attacker);
@ -7088,7 +7088,7 @@ BOOL ov16_0225B228 (BattleSystem * param0, BattleContext * param1, int * param2)
return v0;
}
void ov16_0225B408 (BattleContext * param0, int param1, int param2)
void BattleSystem_DecPPForPressure (BattleContext * param0, int param1, int param2)
{
if ((param2 != 0xff) && (Battler_Ability(param0, param2) == 46) && (param0->battleMons[param1].ppCur[param0->moveSlot[param1]])) {
param0->battleMons[param1].ppCur[param0->moveSlot[param1]]--;
@ -7549,7 +7549,7 @@ static BOOL ov16_0225B8E4 (BattleContext * param0, int param1)
return 0;
}
static int ov16_0225B910 (BattleSystem * param0, BattleContext * param1, int param2, int param3)
static int BattleMove_Type (BattleSystem * param0, BattleContext * param1, int param2, int param3)
{
int v0;
@ -7558,7 +7558,7 @@ static int ov16_0225B910 (BattleSystem * param0, BattleContext * param1, int par
v0 = ov16_02258B2C(param1, param2);
break;
case 449:
switch (ov16_02258AB8(param1, param2)) {
switch (Battler_HeldItemEffect(param1, param2)) {
case 131:
v0 = 1;
break;
@ -7718,7 +7718,7 @@ int ov16_0225BA88 (BattleSystem * param0, int param1)
if (v8) {
v16 = 0;
ov16_022552D4(v20, v8, v9, Pokemon_GetValue(v19, MON_DATA_ABILITY, NULL), Battler_Ability(v20, v2), ov16_02258AB8(v20, v2), ov16_02252060(v20, v2, 27, NULL), ov16_02252060(v20, v2, 28, NULL), &v16);
ov16_022552D4(v20, v8, v9, Pokemon_GetValue(v19, MON_DATA_ABILITY, NULL), Battler_Ability(v20, v2), Battler_HeldItemEffect(v20, v2), ov16_02252060(v20, v2, 27, NULL), ov16_02252060(v20, v2, 28, NULL), &v16);
if (v16 & 0x2) {
break;
@ -7749,7 +7749,7 @@ int ov16_0225BA88 (BattleSystem * param0, int param1)
v9 = ov16_0225BE3C(param0, v20, v19, v8);
if ((v8) && (v20->aiContext.moveTable[v8].power != 1)) {
v11 = ov16_0225A280(param0, v20, v8, v20->sideConditionsMask[Battler_Side(param0, v2)], v20->fieldConditionsMask, 0, 0, param1, v2, 1);
v11 = BattleSystem_CalcMoveDamage(param0, v20, v8, v20->sideConditionsMask[Battler_Side(param0, v2)], v20->fieldConditionsMask, 0, 0, param1, v2, 1);
v16 = 0;
v11 = ov16_02254FA8(param0, v20, v8, v9, param1, v2, v11, &v16);

View File

@ -3664,7 +3664,7 @@ static void ov16_022611DC (UnkStruct_0201CD38 * param0, void * param1)
memset(v0->unk_04, 0, sizeof(UnkStruct_ov13_022264F4));
v0->unk_04->unk_00 = v0->unk_00;
v0->unk_04->unk_04 = ov16_0223E16C(v0->unk_00, v0->unk_0D);
v0->unk_04->unk_04 = BattleSystem_TrainerInfo(v0->unk_00, v0->unk_0D);
v0->unk_04->unk_0C = 5;
v0->unk_04->unk_26 = 0;
v0->unk_04->unk_08 = BattleSystem_Bag(v0->unk_00);
@ -6421,7 +6421,7 @@ static void ov16_0226474C (BattleSystem * param0)
static u8 ov16_02264768 (BattleSystem * param0, u8 param1, u8 param2)
{
if (BattleSystem_BattleType(param0) & 0x4) {
if ((TrainerInfo_GameCode(ov16_0223E16C(param0, param1)) == 0) && (param2 <= 1)) {
if ((TrainerInfo_GameCode(BattleSystem_TrainerInfo(param0, param1)) == 0) && (param2 <= 1)) {
param2 += 103;
}
}