mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-10-01 22:09:43 -05:00
Merge pull request #153 from lhearachel/trainer-ai
Rebuild trainer AI byte-code script from ASM macros
This commit is contained in:
Binary file not shown.
638
asm/macros/aicmd.inc
Normal file
638
asm/macros/aicmd.inc
Normal file
@@ -0,0 +1,638 @@
|
||||
.equ FALSE, 0
|
||||
.equ TRUE, 1
|
||||
|
||||
.macro IfRandomLessThan i, jump
|
||||
.long 0
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfRandomGreaterThan i, jump
|
||||
.long 1
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfRandomEqualTo i, jump
|
||||
.long 2
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfRandomNotEqualTo i, jump
|
||||
.long 3
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro AddToMoveScore i
|
||||
.long 4
|
||||
.long \i
|
||||
.endm
|
||||
|
||||
.macro IfHPPercentLessThan battler, i, jump
|
||||
.long 5
|
||||
.long \battler
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfHPPercentGreaterThan battler, i, jump
|
||||
.long 6
|
||||
.long \battler
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfHPPercentEqualTo battler, i, jump
|
||||
.long 7
|
||||
.long \battler
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfHPPercentNotEqualTo battler, i, jump
|
||||
.long 8
|
||||
.long \battler
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfStatus battler, status, jump
|
||||
.long 9
|
||||
.long \battler
|
||||
.long \status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfNotStatus battler, status, jump
|
||||
.long 10
|
||||
.long \battler
|
||||
.long \status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfVolatileStatus battler, volatile_status, jump
|
||||
.long 11
|
||||
.long \battler
|
||||
.long \volatile_status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfNotVolatileStatus battler, volatile_status, jump
|
||||
.long 12
|
||||
.long \battler
|
||||
.long \volatile_status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveEffect battler, move_effects, jump
|
||||
.long 13
|
||||
.long \battler
|
||||
.long \move_effects
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfNotMoveEffect battler, move_effects, jump
|
||||
.long 14
|
||||
.long \battler
|
||||
.long \move_effects
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfSideCondition battler, side_conditions, jump
|
||||
.long 15
|
||||
.long \battler
|
||||
.long \side_conditions
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfNotSideCondition battler, side_conditions, jump
|
||||
.long 16
|
||||
.long \battler
|
||||
.long \side_conditions
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedLessThan loaded_val, jump
|
||||
.long 17
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedGreaterThan loaded_val, jump
|
||||
.long 18
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedEqualTo loaded_val, jump
|
||||
.long 19
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedNotEqualTo loaded_val, jump
|
||||
.long 20
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedMask loaded_val, jump
|
||||
.long 21
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedNotMask loaded_val, jump
|
||||
.long 22
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveEqualTo move, jump
|
||||
.long 23
|
||||
.long \move
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveNotEqualTo move, jump
|
||||
.long 24
|
||||
.long \move
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedinTable table, jump
|
||||
.long 25
|
||||
.long (\table-.) / 4 - 2
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfLoadedNotinTable table, jump
|
||||
.long 26
|
||||
.long (\table-.) / 4 - 2
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfAttackerHasDamagingMoves jump
|
||||
.long 27
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfAttackerHasNoDamagingMoves jump
|
||||
.long 28
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadTurnCount
|
||||
.long 29
|
||||
.endm
|
||||
|
||||
.macro LoadTypeFrom load_type_target
|
||||
.long 30
|
||||
.long \load_type_target
|
||||
.endm
|
||||
|
||||
.macro LoadMovePower
|
||||
.long 31
|
||||
.endm
|
||||
|
||||
.macro FlagMoveDamageScore bool
|
||||
.long 32
|
||||
.long \bool
|
||||
.endm
|
||||
|
||||
.macro LoadBattlerPreviousMove battler
|
||||
.long 33
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro IfTempEqualTo loaded_val, jump
|
||||
.long 34
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfTempNotEqualTo loaded_val, jump
|
||||
.long 35
|
||||
.long \loaded_val
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfSpeedCompareEqualTo cmp, jump
|
||||
.long 36
|
||||
.long \cmp
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfSpeedCompareNotEqualTo cmp, jump
|
||||
.long 37
|
||||
.long \cmp
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro CountAlivePartyBattlers battler
|
||||
.long 38
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadCurrentMove
|
||||
.long 39
|
||||
.endm
|
||||
|
||||
.macro LoadCurrentMoveEffect
|
||||
.long 40
|
||||
.endm
|
||||
|
||||
.macro LoadBattlerAbility battler
|
||||
.long 41
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro CalcMaxEffectiveness
|
||||
.long 42
|
||||
.endm
|
||||
|
||||
.macro IfMoveEffectivenessEquals modifier, jump
|
||||
.long 43
|
||||
.long \modifier
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfPartyMemberStatus battler, pokemon_status, jump
|
||||
.long 44
|
||||
.long \battler
|
||||
.long \pokemon_status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfPartyMemberNotStatus battler, pokemon_status, jump
|
||||
.long 45
|
||||
.long \battler
|
||||
.long \pokemon_status
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadCurrentWeather
|
||||
.long 46
|
||||
.endm
|
||||
|
||||
.macro IfCurrentMoveEffectEqualTo battle_effect, jump
|
||||
.long 47
|
||||
.long \battle_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfCurrentMoveEffectNotEqualTo battle_effect, jump
|
||||
.long 48
|
||||
.long \battle_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfStatStageLessThan battler, stat, i, jump
|
||||
.long 49
|
||||
.long \battler
|
||||
.long \stat
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfStatStageGreaterThan battler, stat, i, jump
|
||||
.long 50
|
||||
.long \battler
|
||||
.long \stat
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfStatStageEqualTo battler, stat, i, jump
|
||||
.long 51
|
||||
.long \battler
|
||||
.long \stat
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfStatStageNotEqualTo battler, stat, i, jump
|
||||
.long 52
|
||||
.long \battler
|
||||
.long \stat
|
||||
.long \i
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfCurrentMoveKills roll_damage, jump
|
||||
.long 53
|
||||
.long \roll_damage
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfCurrentMoveDoesNotKill roll_damage, jump
|
||||
.long 54
|
||||
.long \roll_damage
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveKnown battler, move, jump
|
||||
.long 55
|
||||
.long \battler
|
||||
.long \move
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveNotKnown battler, move, jump
|
||||
.long 56
|
||||
.long \battler
|
||||
.long \move
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveEffectKnown battler, battle_effect, jump
|
||||
.long 57
|
||||
.long \battler
|
||||
.long \battle_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfMoveEffectNotKnown battler, battle_effect, jump
|
||||
.long 58
|
||||
.long \battler
|
||||
.long \battle_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfBattlerUnderEffect battler, check_effect, jump
|
||||
.long 59
|
||||
.long \battler
|
||||
.long \check_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfCurrentMoveMatchesEffect check_effect, jump
|
||||
.long 60
|
||||
.long \check_effect
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro Escape
|
||||
.long 61
|
||||
.endm
|
||||
|
||||
.macro Dummy3E i
|
||||
.long 62
|
||||
.long \i
|
||||
.endm
|
||||
|
||||
.macro Dummy3F
|
||||
.long 63
|
||||
.endm
|
||||
|
||||
.macro LoadHeldItem battler
|
||||
.long 64
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadHeldItemEffect battler
|
||||
.long 65
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadGender battler
|
||||
.long 66
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadIsFirstTurnInBattle battler
|
||||
.long 67
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadStockpileCount battler
|
||||
.long 68
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadBattleType
|
||||
.long 69
|
||||
.endm
|
||||
|
||||
.macro LoadRecycleItem battler
|
||||
.long 70
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadTypeOfLoadedMove
|
||||
.long 71
|
||||
.endm
|
||||
|
||||
.macro LoadPowerOfLoadedMove
|
||||
.long 72
|
||||
.endm
|
||||
|
||||
.macro LoadEffectOfLoadedMove
|
||||
.long 73
|
||||
.endm
|
||||
|
||||
.macro LoadProtectChain battler
|
||||
.long 74
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro PushAndGoTo jump
|
||||
.long 75
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro GoTo jump
|
||||
.long 76
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro PopOrEnd
|
||||
.long 77
|
||||
.endm
|
||||
|
||||
.macro IfLevel check_level, jump
|
||||
.long 78
|
||||
.long \check_level
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfTargetIsTaunted jump
|
||||
.long 79
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfTargetIsNotTaunted jump
|
||||
.long 80
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfTargetIsPartner jump
|
||||
.long 81
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro FlagBattlerIsType battler, type
|
||||
.long 82
|
||||
.long \battler
|
||||
.long \type
|
||||
.endm
|
||||
|
||||
.macro CheckBattlerAbility battler, ability
|
||||
.long 83
|
||||
.long \battler
|
||||
.long \ability
|
||||
.endm
|
||||
|
||||
.macro IfActivatedFlashFire battler, jump
|
||||
.long 84
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfHeldItemEqualTo battler, item, jump
|
||||
.long 85
|
||||
.long \battler
|
||||
.long \item
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfFieldConditionsMask field_conditions, jump
|
||||
.long 86
|
||||
.long \field_conditions
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadSpikesLayers battler, side_conditions
|
||||
.long 87
|
||||
.long \battler
|
||||
.long \side_conditions
|
||||
.endm
|
||||
|
||||
.macro IfAnyPartyMemberIsWounded battler, jump
|
||||
.long 88
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfAnyPartyMemberUsedPP battler, jump
|
||||
.long 89
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadFlingPower battler
|
||||
.long 90
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadCurrentMovePP
|
||||
.long 91
|
||||
.endm
|
||||
|
||||
.macro IfCanUseLastResort battler, jump
|
||||
.long 92
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadCurrentMoveClass
|
||||
.long 93
|
||||
.endm
|
||||
|
||||
.macro LoadDefenderLastUsedMoveClass
|
||||
.long 94
|
||||
.endm
|
||||
|
||||
.macro LoadBattlerSpeedRank battler
|
||||
.long 95
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro LoadBattlerTurnCount battler
|
||||
.long 96
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro IfPartyMemberDealsMoreDamage roll_damage, jump
|
||||
.long 97
|
||||
.long \roll_damage
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfHasSuperEffectiveMove jump
|
||||
.long 98
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfBattlerDealsMoreDamage battler, roll_damage, jump
|
||||
.long 99
|
||||
.long \battler
|
||||
.long \roll_damage
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro SumPositiveStatStages battler
|
||||
.long 100
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.macro DiffStatStages battler, battle_stat
|
||||
.long 101
|
||||
.long \battler
|
||||
.long \battle_stat
|
||||
.endm
|
||||
|
||||
.macro IfBattlerHasHigherStat battler, battle_stat, jump
|
||||
.long 102
|
||||
.long \battler
|
||||
.long \battle_stat
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfBattlerHasLowerStat battler, battle_stat, jump
|
||||
.long 103
|
||||
.long \battler
|
||||
.long \battle_stat
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfBattlerHasEqualStat battler, battle_stat, jump
|
||||
.long 104
|
||||
.long \battler
|
||||
.long \battle_stat
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro CheckIfHighestDamageWithPartner roll_damage
|
||||
.long 105
|
||||
.long \roll_damage
|
||||
.endm
|
||||
|
||||
.macro IfBattlerFainted battler, jump
|
||||
.long 106
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro IfBattlerNotFainted battler, jump
|
||||
.long 107
|
||||
.long \battler
|
||||
.long (\jump-.) / 4 - 1
|
||||
.endm
|
||||
|
||||
.macro LoadAbility battler
|
||||
.long 108
|
||||
.long \battler
|
||||
.endm
|
||||
|
||||
.equ TABLE_END, 0xFFFFFFFF
|
||||
|
||||
.macro TableEntry entry
|
||||
.long \entry
|
||||
.endm
|
||||
|
||||
.macro LabelDistance dst, src
|
||||
.long (\dst-\src) / 4
|
||||
.endm
|
||||
@@ -1,3 +1,3 @@
|
||||
pokeplatinum_asm = files(
|
||||
'overlay014/ov14_022248A4.s'
|
||||
'trainer_ai/trainer_ai_script.s'
|
||||
)
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
|
||||
.text
|
||||
|
||||
.global gTrainerAITable
|
||||
gTrainerAITable: ; 0x022248A4
|
||||
.incbin "incbin/ov14_022248A4.bin", 0x0, 0xA5BC
|
||||
6459
asm/trainer_ai/trainer_ai_script.s
Normal file
6459
asm/trainer_ai/trainer_ai_script.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,9 @@
|
||||
"@Terrain",
|
||||
"@BattleAnimation",
|
||||
"@MoveRange",
|
||||
"@MoveFlags"
|
||||
"@MoveFlags",
|
||||
"@BattleStat",
|
||||
"@CompareSpeedResult"
|
||||
],
|
||||
"btlcmd": [
|
||||
"@BattleScriptVar",
|
||||
@@ -1000,6 +1002,28 @@
|
||||
"MOVE_FLAG_HIDES_HP_GAUGES",
|
||||
"MOVE_FLAG_HIDES_SHADOWS"
|
||||
]
|
||||
},
|
||||
"@BattleStat": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
"BATTLE_STAT_HP",
|
||||
"BATTLE_STAT_ATTACK",
|
||||
"BATTLE_STAT_DEFENSE",
|
||||
"BATTLE_STAT_SPEED",
|
||||
"BATTLE_STAT_SP_ATTACK",
|
||||
"BATTLE_STAT_SP_DEFENSE",
|
||||
"BATTLE_STAT_ACCURACY",
|
||||
"BATTLE_STAT_EVASION",
|
||||
"BATTLE_STAT_MAX"
|
||||
]
|
||||
},
|
||||
"@CompareSpeedResult": {
|
||||
"type": "enum",
|
||||
"values": [
|
||||
"COMPARE_SPEED_FASTER",
|
||||
"COMPARE_SPEED_SLOWER",
|
||||
"COMPARE_SPEED_TIE"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,8 +191,8 @@ void BattleMon_AddVal(BattleMon *mon, enum BattleMonParam paramID, int val);
|
||||
* @param ignoreQuickClaw If set to TRUE, the Quick Claw and Custap Berry
|
||||
* flags will NOT be set after determining if they
|
||||
* should activate.
|
||||
* @return 0 if battler 1 should move first, 1 if battler 2 should move first,
|
||||
* 2 if battler 2 should move first and won a speed tie.
|
||||
* @return A value representing the speed-ordering of the two battlers,
|
||||
* relative to the first of the two. See enum CompareSpeedResult.
|
||||
*/
|
||||
u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *battleCtx, int battler1, int battler2, BOOL ignoreQuickClaw);
|
||||
|
||||
|
||||
@@ -75,17 +75,4 @@
|
||||
|
||||
#define FLAG_NEGATE(flag) ((flag) ^ 0xFFFFFFFF)
|
||||
|
||||
enum {
|
||||
BATTLE_STAT_HP,
|
||||
BATTLE_STAT_ATTACK,
|
||||
BATTLE_STAT_DEFENSE,
|
||||
BATTLE_STAT_SPEED,
|
||||
BATTLE_STAT_SP_ATTACK,
|
||||
BATTLE_STAT_SP_DEFENSE,
|
||||
BATTLE_STAT_ACCURACY,
|
||||
BATTLE_STAT_EVASION,
|
||||
|
||||
BATTLE_STAT_MAX
|
||||
};
|
||||
|
||||
#endif // POKEPLATINUM_BATTLE_COMMON_H
|
||||
@@ -82,6 +82,7 @@
|
||||
#define VOLATILE_CONDITION_BIND_SHIFT 13
|
||||
#define VOLATILE_CONDITION_ATTRACT_SHIFT 16
|
||||
|
||||
#define SIDE_CONDITION_NONE 0
|
||||
#define SIDE_CONDITION_REFLECT (1 << 0)
|
||||
#define SIDE_CONDITION_LIGHT_SCREEN (1 << 1)
|
||||
#define SIDE_CONDITION_SPIKES (1 << 2)
|
||||
|
||||
@@ -678,7 +678,7 @@ Overlay overlay14
|
||||
{
|
||||
After overlay11
|
||||
Object main.nef.p/src_overlay014_trainer_ai.c.o
|
||||
Object main.nef.p/overlay014/asm_overlay014_ov14_022248A4.s.o
|
||||
Object main.nef.p/asm_trainer_ai_trainer_ai_script.s.o
|
||||
}
|
||||
|
||||
Overlay overlay15
|
||||
|
||||
@@ -162,7 +162,7 @@ static void AICmd_IfCanUseLastResort(BattleSystem *battleSys, BattleContext *bat
|
||||
static void AICmd_LoadCurrentMoveClass(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_LoadDefenderLastUsedMoveClass(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_LoadBattlerSpeedRank(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_LoadIsBattlerFirstTurn(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_LoadBattlerTurnCount(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_IfPartyMemberDealsMoreDamage(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_IfHasSuperEffectiveMove(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
static void AICmd_IfBattlerDealsMoreDamage(BattleSystem *battleSys, BattleContext *battleCtx);
|
||||
@@ -299,7 +299,7 @@ static const AICommandFunc sAICommandTable[] = {
|
||||
AICmd_LoadCurrentMoveClass,
|
||||
AICmd_LoadDefenderLastUsedMoveClass,
|
||||
AICmd_LoadBattlerSpeedRank,
|
||||
AICmd_LoadIsBattlerFirstTurn,
|
||||
AICmd_LoadBattlerTurnCount,
|
||||
AICmd_IfPartyMemberDealsMoreDamage,
|
||||
AICmd_IfHasSuperEffectiveMove,
|
||||
AICmd_IfBattlerDealsMoreDamage,
|
||||
@@ -2199,7 +2199,7 @@ static void AICmd_LoadBattlerSpeedRank(BattleSystem *battleSys, BattleContext *b
|
||||
}
|
||||
}
|
||||
|
||||
static void AICmd_LoadIsBattlerFirstTurn(BattleSystem *battleSys, BattleContext *battleCtx)
|
||||
static void AICmd_LoadBattlerTurnCount(BattleSystem *battleSys, BattleContext *battleCtx)
|
||||
{
|
||||
AIScript_Iter(battleCtx, 1);
|
||||
|
||||
|
||||
@@ -1184,15 +1184,9 @@ static inline int CompareSpeed_ApplySimple(BattleContext *battleCtx, int battler
|
||||
return stage;
|
||||
}
|
||||
|
||||
enum {
|
||||
BATTLER_1_GOES_FIRST = 0,
|
||||
BATTLER_2_GOES_FIRST,
|
||||
BATTLER_2_WINS_SPEED_TIE,
|
||||
};
|
||||
|
||||
u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *battleCtx, int battler1, int battler2, BOOL ignoreQuickClaw)
|
||||
{
|
||||
u8 result = BATTLER_1_GOES_FIRST;
|
||||
u8 result = COMPARE_SPEED_FASTER;
|
||||
u32 battler1Speed, battler2Speed;
|
||||
u16 battler1Move = 0, battler2Move = 0;
|
||||
u8 battler1ItemEffect, battler1ItemParam;
|
||||
@@ -1406,53 +1400,53 @@ u8 BattleSystem_CompareBattlerSpeed(BattleSystem *battleSys, BattleContext *batt
|
||||
if (battler1Priority == battler2Priority) {
|
||||
if (battler1QuickClaw && battler2QuickClaw) {
|
||||
if (battler1Speed < battler2Speed) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) {
|
||||
result = BATTLER_2_WINS_SPEED_TIE;
|
||||
result = COMPARE_SPEED_TIE;
|
||||
}
|
||||
} else if (battler1QuickClaw == FALSE && battler2QuickClaw) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1QuickClaw && battler2QuickClaw == FALSE) {
|
||||
result = BATTLER_1_GOES_FIRST;
|
||||
result = COMPARE_SPEED_FASTER;
|
||||
} else if (battler1LaggingTail && battler2LaggingTail) {
|
||||
if (battler1Speed > battler2Speed) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) {
|
||||
result = BATTLER_2_WINS_SPEED_TIE;
|
||||
result = COMPARE_SPEED_TIE;
|
||||
}
|
||||
} else if (battler1LaggingTail && battler2LaggingTail == FALSE) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1LaggingTail == FALSE && battler2LaggingTail) {
|
||||
result = BATTLER_1_GOES_FIRST;
|
||||
result = COMPARE_SPEED_FASTER;
|
||||
} else if (battler1Ability == ABILITY_STALL && battler2Ability == ABILITY_STALL) {
|
||||
if (battler1Speed > battler2Speed) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) {
|
||||
result = BATTLER_2_WINS_SPEED_TIE;
|
||||
result = COMPARE_SPEED_TIE;
|
||||
}
|
||||
} else if (battler1Ability == ABILITY_STALL && battler2Ability != ABILITY_STALL) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
} else if (battler1Ability != ABILITY_STALL && battler2Ability == ABILITY_STALL) {
|
||||
result = BATTLER_1_GOES_FIRST;
|
||||
result = COMPARE_SPEED_FASTER;
|
||||
} else if (battleCtx->fieldConditionsMask & FIELD_CONDITION_TRICK_ROOM) {
|
||||
if (battler1Speed > battler2Speed) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
}
|
||||
|
||||
if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) {
|
||||
result = BATTLER_2_WINS_SPEED_TIE;
|
||||
result = COMPARE_SPEED_TIE;
|
||||
}
|
||||
} else {
|
||||
if (battler1Speed < battler2Speed) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
}
|
||||
|
||||
if (battler1Speed == battler2Speed && (BattleSystem_RandNext(battleSys) & 1)) {
|
||||
result = BATTLER_2_WINS_SPEED_TIE;
|
||||
result = COMPARE_SPEED_TIE;
|
||||
}
|
||||
}
|
||||
} else if (battler1Priority < battler2Priority) {
|
||||
result = BATTLER_2_GOES_FIRST;
|
||||
result = COMPARE_SPEED_SLOWER;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user