diff options
Diffstat (limited to 'engine/battle/ai')
-rw-r--r-- | engine/battle/ai/items.asm | 32 | ||||
-rwxr-xr-x | engine/battle/ai/move.asm | 1 | ||||
-rw-r--r-- | engine/battle/ai/scoring.asm | 181 |
3 files changed, 34 insertions, 180 deletions
diff --git a/engine/battle/ai/items.asm b/engine/battle/ai/items.asm index 4d1eea2e8..060c53ad6 100644 --- a/engine/battle/ai/items.asm +++ b/engine/battle/ai/items.asm @@ -52,7 +52,7 @@ SwitchOften: ; 38045 cp $10 jr nz, .not_10 call Random - cp 1 + 50 percent + cp 50 percent + 1 jr c, .switch jp DontSwitch .not_10 @@ -60,7 +60,7 @@ SwitchOften: ; 38045 cp $20 jr nz, .not_20 call Random - cp -1 + 79 percent + cp 79 percent - 1 jr c, .switch jp DontSwitch .not_20 @@ -103,7 +103,7 @@ SwitchRarely: ; 38083 ; $30 call Random - cp -1 + 79 percent + cp 79 percent - 1 jp c, DontSwitch .switch @@ -123,7 +123,7 @@ SwitchSometimes: ; 380c1 cp $10 jr nz, .not_10 call Random - cp -1 + 20 percent + cp 20 percent - 1 jr c, .switch jp DontSwitch .not_10 @@ -131,14 +131,14 @@ SwitchSometimes: ; 380c1 cp $20 jr nz, .not_20 call Random - cp 1 + 50 percent + cp 50 percent + 1 jr c, .switch jp DontSwitch .not_20 ; $30 call Random - cp -1 + 20 percent + cp 20 percent - 1 jp c, DontSwitch .switch @@ -313,7 +313,7 @@ AI_Items: ; 39196 bit ALWAYS_USE_F, a jp nz, .Use call Random - cp -1 + 20 percent + cp 20 percent - 1 jp c, .Use jp .DontUse @@ -325,7 +325,7 @@ AI_Items: ; 39196 cp 4 jr c, .FailToxicCheck call Random - cp 1 + 50 percent + cp 50 percent + 1 jp c, .Use .FailToxicCheck: ld a, [wEnemyMonStatus] @@ -366,7 +366,7 @@ AI_Items: ; 39196 callfar AICheckEnemyQuarterHP jp nc, .UseHealItem call Random - cp 1 + 50 percent + cp 50 percent + 1 jp c, .UseHealItem jp .DontUse @@ -374,7 +374,7 @@ AI_Items: ; 39196 callfar AICheckEnemyQuarterHP jp c, .DontUse call Random - cp -1 + 20 percent + cp 20 percent - 1 jp c, .DontUse jr .UseHealItem @@ -384,7 +384,7 @@ AI_Items: ; 39196 callfar AICheckEnemyQuarterHP jp nc, .UseHealItem call Random - cp -1 + 20 percent + cp 20 percent - 1 jp nc, .DontUse .UseHealItem: ; 38281 (e:4281) @@ -442,7 +442,7 @@ AI_Items: ; 39196 bit UNKNOWN_USE_F, a jp z, .Use call Random - cp 1 + 50 percent + cp 50 percent + 1 jp c, .Use .dont_use @@ -454,7 +454,7 @@ AI_Items: ; 39196 bit UNKNOWN_USE_F, a jp z, .DontUse call Random - cp 1 + 39 percent + cp 39 percent + 1 jp c, .Use jp .DontUse ; 382f9 @@ -516,13 +516,13 @@ AI_Items: ; 39196 bit ALWAYS_USE_F, a jp nz, .Use call Random - cp 1 + 50 percent + cp 50 percent + 1 jp c, .DontUse ld a, [bc] bit CONTEXT_USE_F, a jp nz, .Use call Random - cp 1 + 50 percent + cp 50 percent + 1 jp c, .DontUse jp .Use .notfirstturnout @@ -530,7 +530,7 @@ AI_Items: ; 39196 bit ALWAYS_USE_F, a jp z, .DontUse call Random - cp -1 + 20 percent + cp 20 percent - 1 jp nc, .DontUse jp .Use diff --git a/engine/battle/ai/move.asm b/engine/battle/ai/move.asm index b5ac966f8..dd4357fe2 100755 --- a/engine/battle/ai/move.asm +++ b/engine/battle/ai/move.asm @@ -202,6 +202,7 @@ AIChooseMove: ; 440ce AIScoringPointers: ; 441af +; entries correspond to AI_* constants dw AI_Basic dw AI_Setup dw AI_Types diff --git a/engine/battle/ai/scoring.asm b/engine/battle/ai/scoring.asm index b250128a4..7af2db8ad 100644 --- a/engine/battle/ai/scoring.asm +++ b/engine/battle/ai/scoring.asm @@ -40,7 +40,7 @@ AI_Basic: ; 38591 push hl push de push bc - ld hl, .statusonlyeffects + ld hl, StatusOnlyEffects ld de, 1 call IsInArray @@ -63,13 +63,7 @@ AI_Basic: ; 38591 jr .checkmove ; 385db -.statusonlyeffects - db EFFECT_SLEEP - db EFFECT_TOXIC - db EFFECT_POISON - db EFFECT_PARALYZE - db -1 ; end -; 385e0 +INCLUDE "data/battle/ai/status_only_effects.asm" @@ -1502,7 +1496,7 @@ AI_Smart_Encore: ; 38c3b .asm_38c68 push hl ld a, [wLastPlayerCounterMove] - ld hl, .EncoreMoves + ld hl, EncoreMoves ld de, 1 call IsInArray pop hl @@ -1522,39 +1516,7 @@ AI_Smart_Encore: ; 38c3b inc [hl] ret -.EncoreMoves: - db SWORDS_DANCE - db WHIRLWIND - db LEER - db ROAR - db DISABLE - db MIST - db LEECH_SEED - db GROWTH - db POISONPOWDER - db STRING_SHOT - db MEDITATE - db AGILITY - db TELEPORT - db SCREECH - db HAZE - db FOCUS_ENERGY - db DREAM_EATER - db POISON_GAS - db SPLASH - db SHARPEN - db CONVERSION - db SUPER_FANG - db SUBSTITUTE - db TRIPLE_KICK - db SPIDER_WEB - db MIND_READER - db FLAME_WHEEL - db AEROBLAST - db COTTON_SPORE - db POWDER_SNOW - db -1 ; end -; 38ca4 +INCLUDE "data/battle/ai/encore_moves.asm" AI_Smart_PainSplit: ; 38ca4 @@ -2521,20 +2483,7 @@ AI_Smart_RainDance: ; 390cb jr AI_Smart_WeatherMove ; 390e7 -RainDanceMoves: ; 390e7 - db WATER_GUN - db HYDRO_PUMP - db SURF - db BUBBLEBEAM - db THUNDER - db WATERFALL - db CLAMP - db BUBBLE - db CRABHAMMER - db OCTAZOOKA - db WHIRLPOOL - db -1 ; end -; 390f3 +INCLUDE "data/battle/ai/rain_dance_moves.asm" AI_Smart_SunnyDay: ; 390f3 @@ -2613,17 +2562,7 @@ AIGoodWeatherType: ; 39122 ; 39134 -SunnyDayMoves: ; 39134 - db FIRE_PUNCH - db EMBER - db FLAMETHROWER - db FIRE_SPIN - db FIRE_BLAST - db SACRED_FIRE - db MORNING_SUN - db SYNTHESIS - db -1 ; end -; 3913d +INCLUDE "data/battle/ai/sunny_day_moves.asm" AI_Smart_BellyDrum: ; 3913d @@ -3104,29 +3043,7 @@ AIHasMoveInArray: ; 392e6 ; 39301 -UsefulMoves: ; 39301 -; Moves that are usable all-around. - db DOUBLE_EDGE - db SING - db FLAMETHROWER - db HYDRO_PUMP - db SURF - db ICE_BEAM - db BLIZZARD - db HYPER_BEAM - db SLEEP_POWDER - db THUNDERBOLT - db THUNDER - db EARTHQUAKE - db TOXIC - db PSYCHIC_M - db HYPNOSIS - db RECOVER - db FIRE_BLAST - db SOFTBOILED - db SUPER_FANG - db -1 ; end -; 39315 +INCLUDE "data/battle/ai/useful_moves.asm" AI_Opportunist: ; 39315 @@ -3161,7 +3078,7 @@ AI_Opportunist: ; 39315 push hl push de push bc - ld hl, .stallmoves + ld hl, StallMoves ld de, 1 call IsInArray @@ -3176,41 +3093,7 @@ AI_Opportunist: ; 39315 .asm_39347 ret -.stallmoves - db SWORDS_DANCE - db TAIL_WHIP - db LEER - db GROWL - db DISABLE - db MIST - db COUNTER - db LEECH_SEED - db GROWTH - db STRING_SHOT - db MEDITATE - db AGILITY - db RAGE - db MIMIC - db SCREECH - db HARDEN - db WITHDRAW - db DEFENSE_CURL - db BARRIER - db LIGHT_SCREEN - db HAZE - db REFLECT - db FOCUS_ENERGY - db BIDE - db AMNESIA - db TRANSFORM - db SPLASH - db ACID_ARMOR - db SHARPEN - db CONVERSION - db SUBSTITUTE - db FLAME_WHEEL - db -1 ; end -; 39369 +INCLUDE "data/battle/ai/stall_moves.asm" @@ -3304,7 +3187,7 @@ AI_Aggressive: ; 39369 push de push bc ld a, [wEnemyMoveStruct + MOVE_EFFECT] - ld hl, .RecklessMoves + ld hl, RecklessMoves ld de, 1 call IsInArray pop bc @@ -3319,13 +3202,7 @@ AI_Aggressive: ; 39369 .done ret -.RecklessMoves: - db EFFECT_SELFDESTRUCT - db EFFECT_RAMPAGE - db EFFECT_MULTI_HIT - db EFFECT_DOUBLE_HIT - db -1 ; end -; 393e7 +INCLUDE "data/battle/ai/reckless_moves.asm" AIDamageCalc: ; 393e7 @@ -3333,7 +3210,7 @@ AIDamageCalc: ; 393e7 ld [hBattleTurn], a ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld de, 1 - ld hl, .ConstantDamageEffects + ld hl, ConstantDamageEffects call IsInArray jr nc, .asm_39400 callfar BattleCommand_ConstantDamage @@ -3345,13 +3222,7 @@ AIDamageCalc: ; 393e7 callfar BattleCommand_Stab ret -.ConstantDamageEffects: - db EFFECT_SUPER_FANG - db EFFECT_STATIC_DAMAGE - db EFFECT_LEVEL_DAMAGE - db EFFECT_PSYWAVE - db -1 ; end -; 39418 +INCLUDE "data/battle/ai/constant_damage_effects.asm" AI_Cautious: ; 39418 @@ -3377,7 +3248,7 @@ AI_Cautious: ; 39418 push hl push de push bc - ld hl, .residualmoves + ld hl, ResidualMoves ld de, 1 call IsInArray @@ -3393,21 +3264,7 @@ AI_Cautious: ; 39418 inc [hl] jr .asm_39425 -.residualmoves - db MIST - db LEECH_SEED - db POISONPOWDER - db STUN_SPORE - db THUNDER_WAVE - db FOCUS_ENERGY - db BIDE - db POISON_GAS - db TRANSFORM - db CONVERSION - db SUBSTITUTE - db SPIKES - db -1 ; end -; 39453 +INCLUDE "data/battle/ai/residual_moves.asm" @@ -3504,7 +3361,7 @@ AI_Risky: ; 394a9 ; Don't use risky moves at max hp. ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld de, 1 - ld hl, .RiskyMoves + ld hl, RiskyEffects call IsInArray jr nc, .checkko @@ -3541,11 +3398,7 @@ endr pop de jr .checkmove -.RiskyMoves: - db EFFECT_SELFDESTRUCT - db EFFECT_OHKO - db -1 ; end -; 39502 +INCLUDE "data/battle/ai/risky_effects.asm" |