From 85aa236c34e50da698d4eeacd5c76a05463c83b2 Mon Sep 17 00:00:00 2001 From: Remy Oukaour Date: Mon, 25 Dec 2017 16:18:05 -0500 Subject: [PATCH] Use percentages for AI scoring logic Define MAX_DAY_CARE_EXP --- battle/ai/scoring.asm | 78 ++++++++++++++++++------------------ constants/misc_constants.asm | 2 + event/happiness_egg.asm | 10 ++--- 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