aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/wild/probabilities.asm41
1 files changed, 27 insertions, 14 deletions
diff --git a/data/wild/probabilities.asm b/data/wild/probabilities.asm
index 2c56c6b9..6896d937 100644
--- a/data/wild/probabilities.asm
+++ b/data/wild/probabilities.asm
@@ -1,15 +1,28 @@
+DEF wild_chance_slot = 0
+DEF wild_chance_total = 0
+
+MACRO wild_chance
+ DEF wild_chance_total += \1
+ db wild_chance_total - 1
+ db wild_chance_slot * 2
+ DEF wild_chance_slot += 1
+ENDM
+
WildMonEncounterSlotChances:
-; There are 10 slots for wild pokemon, and this is the table that defines how common each of
-; those 10 slots is. A random number is generated and then the first byte of each pair in this
-; table is compared against that random number. If the random number is less than or equal
-; to the first byte, then that slot is chosen. The second byte is double the slot number.
- db 50, $00 ; 51/256 = 19.9% chance of slot 0
- db 101, $02 ; 51/256 = 19.9% chance of slot 1
- db 140, $04 ; 39/256 = 15.2% chance of slot 2
- db 165, $06 ; 25/256 = 9.8% chance of slot 3
- db 190, $08 ; 25/256 = 9.8% chance of slot 4
- db 215, $0A ; 25/256 = 9.8% chance of slot 5
- db 228, $0C ; 13/256 = 5.1% chance of slot 6
- db 241, $0E ; 13/256 = 5.1% chance of slot 7
- db 252, $10 ; 11/256 = 4.3% chance of slot 8
- db 255, $12 ; 3/256 = 1.2% chance of slot 9
+; There are 10 slots for wild pokemon, and this is the list that defines how common each of
+; those 10 slots is. A random number is generated and then the cumulative chance value up to the current
+; slot (included) is compared against that random number. If the random number is less than or equal
+; to said cumulative value, then that slot is chosen.
+ table_width 2
+ wild_chance 51 ; 51/256 = 19.9% chance of slot 0
+ wild_chance 51 ; 51/256 = 19.9% chance of slot 1
+ wild_chance 39 ; 39/256 = 15.2% chance of slot 2
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 3
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 4
+ wild_chance 25 ; 25/256 = 9.8% chance of slot 5
+ wild_chance 13 ; 13/256 = 5.1% chance of slot 6
+ wild_chance 13 ; 13/256 = 5.1% chance of slot 7
+ wild_chance 11 ; 11/256 = 4.3% chance of slot 8
+ wild_chance 3 ; 3/256 = 1.2% chance of slot 9
+ assert_table_length NUM_WILDMONS
+ ASSERT wild_chance_total == 256, "WildMonEncounterSlotChances sum to {d:wild_chance_total}, not 256!"