summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemy Oukaour <remy.oukaour@gmail.com>2017-12-25 16:18:05 -0500
committerRemy Oukaour <remy.oukaour@gmail.com>2017-12-25 16:18:05 -0500
commit85aa236c34e50da698d4eeacd5c76a05463c83b2 (patch)
tree0cdde11bab7b4610df5ec8bb2925aa00d3951ac0
parent2e200ce85e21eee3d46a4c82074425697c0b433d (diff)
Use percentages for AI scoring logic
Define MAX_DAY_CARE_EXP
-rw-r--r--battle/ai/scoring.asm78
-rw-r--r--constants/misc_constants.asm2
-rwxr-xr-xevent/happiness_egg.asm10
3 files changed, 46 insertions, 44 deletions
diff --git a/battle/ai/scoring.asm b/battle/ai/scoring.asm
index 6391e3b29..44194d6f7 100644
--- a/battle/ai/scoring.asm
+++ b/battle/ai/scoring.asm
@@ -141,7 +141,7 @@ AI_Setup: ; 385e0
.discourage
call Random
- cp 30
+ cp 12 percent
jr c, .checkmove
inc [hl]
inc [hl]
@@ -453,7 +453,7 @@ AI_Smart_LeechHit: ; 387f7
.asm_38815
call Random
- cp 100
+ cp 39 percent + 1
ret c
inc [hl]
@@ -594,7 +594,7 @@ AI_Smart_Selfdestruct: ; 388a6
; If enemy's HP is between 25% and 50%,
; over 90% chance to greatly discourage this move.
call Random
- cp 20
+ cp 9 percent - 2
ret c
.asm_388c6
@@ -610,7 +610,7 @@ AI_Smart_DreamEater: ; 388ca
; The AI_Basic layer will make sure that
; Dream Eater is only used against sleeping targets.
call Random
- cp 25
+ cp 10 percent
ret c
dec [hl]
dec [hl]
@@ -637,7 +637,7 @@ AI_Smart_EvasionUp: ; 388d4
; ...70% chance to greatly encourage this move if player is not badly poisoned.
call Random
- cp $b2
+ cp 70 percent
jr nc, .asm_38911
.asm_388ef
@@ -653,7 +653,7 @@ AI_Smart_EvasionUp: ; 388d4
; If enemy's HP is above 25% but not full, 4% chance to greatly encourage this move.
call Random
- cp $a
+ cp 4 percent
jr c, .asm_388ef
; If enemy's HP is between 25% and 50%,...
@@ -710,11 +710,11 @@ AI_Smart_EvasionUp: ; 388d4
ret
; Player is badly poisoned.
-; 80% chance to greatly encourage this move.
+; 70% chance to greatly encourage this move.
; This would counter any previous discouragement.
.asm_38938
call Random
- cp $50
+ cp 31 percent + 1
ret c
dec [hl]
dec [hl]
@@ -791,7 +791,7 @@ AI_Smart_MirrorMove: ; 3895b
ret nc
call Random
- cp $19
+ cp 10 percent
ret c
dec [hl]
@@ -816,7 +816,7 @@ AI_Smart_AccuracyDown: ; 38985
; ...70% chance to greatly encourage this move if player is not badly poisoned.
call Random
- cp $b2
+ cp 70 percent
jr nc, .asm_389bf
.asm_3899d
@@ -832,7 +832,7 @@ AI_Smart_AccuracyDown: ; 38985
; If player's HP is above 25% but not full, 4% chance to greatly encourage this move.
call Random
- cp $a
+ cp 4 percent
jr c, .asm_3899d
; If player's HP is between 25% and 50%,...
@@ -884,11 +884,11 @@ AI_Smart_AccuracyDown: ; 38985
ret
; Player is badly poisoned.
-; 80% chance to greatly encourage this move.
+; 70% chance to greatly encourage this move.
; This would counter any previous discouragement.
.asm_389e6
call Random
- cp $50
+ cp 31 percent + 1
ret c
dec [hl]
dec [hl]
@@ -934,7 +934,7 @@ AI_Smart_ResetStats: ; 389f5
.asm_38a12
pop hl
call Random
- cp $28
+ cp 16 percent
ret c
dec [hl]
ret
@@ -955,7 +955,7 @@ AI_Smart_Bide: ; 38a1e
call AICheckEnemyMaxHP
ret c
call Random
- cp $19
+ cp 10 percent
ret c
inc [hl]
ret
@@ -997,7 +997,7 @@ AI_Smart_Moonlight: ; 38a3a
.asm_38a45
call Random
- cp $19
+ cp 10 percent
ret c
dec [hl]
dec [hl]
@@ -1023,7 +1023,7 @@ AI_Smart_Reflect: ; 38a54
call AICheckEnemyMaxHP
ret c
call Random
- cp $14
+ cp 8 percent
ret c
inc [hl]
ret
@@ -1126,7 +1126,7 @@ AI_Smart_Unused2B: ; 38a9c
.asm_38acd
call Random
- cp $c8
+ cp 79 percent - 1
ret c
.asm_38ad3
@@ -1148,7 +1148,7 @@ AI_Smart_Confuse: ; 38adb
call AICheckPlayerHalfHP
ret c
call Random
- cp $19
+ cp 10 percent
jr c, .asm_38ae7
inc [hl]
@@ -1272,7 +1272,7 @@ AI_Smart_SpeedDownHit: ; 38b40
call AICompareSpeed
ret c
call Random
- cp 30
+ cp 12 percent
ret c
dec [hl]
dec [hl]
@@ -1304,7 +1304,7 @@ AI_Smart_HyperBeam: ; 38b63
.asm_38b72
; If enemy's HP is above 50%, discourage this move at random
call Random
- cp 40
+ cp 16 percent
ret c
inc [hl]
call AI_50_50
@@ -1457,7 +1457,7 @@ AI_Smart_Counter: ; 38bf1
.asm_38c30
call Random
- cp $64
+ cp 39 percent + 1
jr c, .asm_38c38
dec [hl]
@@ -1510,7 +1510,7 @@ AI_Smart_Encore: ; 38c3b
.asm_38c78
call Random
- cp $46
+ cp 28 percent - 1
ret c
dec [hl]
dec [hl]
@@ -1657,7 +1657,7 @@ AI_Smart_Spite: ; 38cd5
jr nc, .asm_38d0b
call Random
- cp $64
+ cp 39 percent + 1
ret nc
.asm_38d0b
@@ -1666,7 +1666,7 @@ AI_Smart_Spite: ; 38cd5
.asm_38d0d
call Random
- cp $64
+ cp 39 percent + 1
ret c
dec [hl]
dec [hl]
@@ -1827,7 +1827,7 @@ AI_Smart_Conversion2: ; 38d98
.asm_38dc9
call Random
- cp 25
+ cp 10 percent
ret c
inc [hl]
ret
@@ -1848,7 +1848,7 @@ AI_Smart_Disable: ; 38dd1
jr nc, .asm_38dee
call Random
- cp 100
+ cp 39 percent + 1
ret c
dec [hl]
ret
@@ -1860,7 +1860,7 @@ AI_Smart_Disable: ; 38dd1
.asm_38df3
call Random
- cp 20
+ cp 8 percent
ret c
inc [hl]
ret
@@ -2096,7 +2096,7 @@ AI_Smart_Protect: ; 38ed2
.asm_38f14
call Random
- cp 20
+ cp 8 percent
ret c
inc [hl]
inc [hl]
@@ -2120,14 +2120,14 @@ AI_Smart_Foresight: ; 38f1d
jr z, .asm_38f41
call Random
- cp 20
+ cp 8 percent
ret c
inc [hl]
ret
.asm_38f41
call Random
- cp 100
+ cp 39 percent + 1
ret c
dec [hl]
dec [hl]
@@ -2317,7 +2317,7 @@ AI_Smart_Rollout: ; 38fef
; Otherwise, 80% chance to greatly encourage this move.
call Random
- cp 200
+ cp 79 percent - 1
ret nc
dec [hl]
dec [hl]
@@ -2347,7 +2347,7 @@ AI_Smart_Attract: ; 39026
.first_turn
call Random
- cp 200
+ cp 79 percent - 1
ret nc
dec [hl]
ret
@@ -2850,7 +2850,7 @@ AI_Smart_Solarbeam: ; 3920b
ret nz
call Random
- cp 25 ; 1/10
+ cp 10 percent
ret c
inc [hl]
@@ -2875,7 +2875,7 @@ AI_Smart_Thunder: ; 39225
ret nz
call Random
- cp 25 ; 1/10
+ cp 10 percent
ret c
inc [hl]
@@ -3387,7 +3387,7 @@ AI_Cautious: ; 39418
jr nc, .asm_39425
call Random
- cp 230
+ cp 90 percent + 1
ret nc
inc [hl]
@@ -3513,7 +3513,7 @@ AI_Risky: ; 394a9
; Else, 80% chance to exclude them.
call Random
- cp 200 ; 1/5
+ cp 79 percent - 1
jr c, .nextmove
.checkko
@@ -3586,13 +3586,13 @@ AIGetEnemyMove: ; 39508
AI_80_20: ; 39521
call Random
- cp 50 ; 1/5
+ cp 20 percent - 1
ret
; 39527
AI_50_50: ; 39527
call Random
- cp $80 ; 1/2
+ cp 50 percent + 1
ret
; 3952d
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm
index 64c625933..88ae90c89 100644
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -120,3 +120,5 @@ const_value = 1
const HAPPINESS_REVIVALHERB ; 11
const HAPPINESS_MASSAGE ; 12
const HAPPINESS_GAINLEVELATHOME ; 13
+
+MAX_DAY_CARE_EXP EQU $500000
diff --git a/event/happiness_egg.asm b/event/happiness_egg.asm
index 1bd5b05f3..a1ade1364 100755
--- a/event/happiness_egg.asm
+++ b/event/happiness_egg.asm
@@ -159,9 +159,9 @@ DayCareStep:: ; 7282
dec hl
inc [hl]
ld a, [hl]
- cp HIGH($500000 >> 8)
+ cp HIGH(MAX_DAY_CARE_EXP >> 8)
jr c, .day_care_lady
- ld a, HIGH($500000 >> 8)
+ ld a, HIGH(MAX_DAY_CARE_EXP >> 8)
ld [hl], a
.day_care_lady
@@ -181,9 +181,9 @@ DayCareStep:: ; 7282
dec hl
inc [hl]
ld a, [hl]
- cp HIGH($500000 >> 8)
+ cp HIGH(MAX_DAY_CARE_EXP >> 8)
jr c, .check_egg
- ld a, HIGH($500000 >> 8)
+ ld a, HIGH(MAX_DAY_CARE_EXP >> 8)
ld [hl], a
.check_egg
@@ -199,7 +199,7 @@ DayCareStep:: ; 7282
callfar CheckBreedmonCompatibility
ld a, [wd265]
cp 230
- ld b, -1 + 32 percent
+ ld b, 32 percent - 1
jr nc, .okay
ld a, [wd265]
cp 170