diff options
-rwxr-xr-x | constants/battle_tower_constants.asm | 6 | ||||
-rw-r--r-- | data/battle_tower/classes.asm | 6 | ||||
-rw-r--r-- | engine/events/battle_tower/load_trainer.asm | 13 | ||||
-rw-r--r-- | engine/events/battle_tower/rules.asm | 6 |
4 files changed, 17 insertions, 14 deletions
diff --git a/constants/battle_tower_constants.asm b/constants/battle_tower_constants.asm index 9961d42fd..ad119ddaa 100755 --- a/constants/battle_tower_constants.asm +++ b/constants/battle_tower_constants.asm @@ -44,6 +44,12 @@ BATTLETOWER_NROFPKMNS EQU 3 BATTLETOWER_NROFTRAINERS EQU 7 +BATTLETOWER_NUM_UNIQUE_TRAINERS EQU 70 +BATTLETOWER_TRAINER_MASK EQU %1111111 + +BATTLETOWER_NUM_UNIQUE_PKMN EQU 21 +BATTLETOWER_PKMN_MASK EQU %11111 + BATTLETOWER_TRAINERDATALENGTH EQU $24 BATTLE_TOWER_STRUCT_LENGTH EQU $e0 ; NAME_LENGTH + BATTLETOWER_NROFPKMNS * (PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH) + BATTLETOWER_TRAINERDATALENGTH diff --git a/data/battle_tower/classes.asm b/data/battle_tower/classes.asm index 96b1910da..5a148e6ec 100644 --- a/data/battle_tower/classes.asm +++ b/data/battle_tower/classes.asm @@ -23,9 +23,6 @@ BattleTowerTrainers: ; 1f814e db "KAUFMAN@@@", SWIMMERM db "LANCASTER@", SKIER db "McMAHILL@@", CAMPER -if !DEF(_CRYSTAL11) -BattleTowerTrainersEnd: -endc ; The following can only be sampled in Crystal 1.1. db "OBRIEN@@@@", GENTLEMAN db "FROST@@@@@", BEAUTY @@ -76,7 +73,4 @@ endc db "DYKSTRA@@@", SWIMMERF db "EATON@@@@@", BIKER db "WONG@@@@@@", FIREBREATHER -if DEF(_CRYSTAL11) -BattleTowerTrainersEnd: -endc ; 1f8450 diff --git a/engine/events/battle_tower/load_trainer.asm b/engine/events/battle_tower/load_trainer.asm index bf8b20a27..08571dcef 100644 --- a/engine/events/battle_tower/load_trainer.asm +++ b/engine/events/battle_tower/load_trainer.asm @@ -27,11 +27,14 @@ Function_LoadOpponentTrainerAndPokemons: ; 1f8000 add b ld b, a ; b contains the nr of the trainer if DEF(_CRYSTAL11) - and $7f + and BATTLETOWER_TRAINER_MASK + cp BATTLETOWER_NUM_UNIQUE_TRAINERS else - and $1f +; Crystal 1.0 used the wrong constants here, so only the first 21 +; trainers in BattleTowerTrainers can be sampled. + and BATTLETOWER_PKMN_MASK + cp BATTLETOWER_NUM_UNIQUE_PKMN endc - cp (BattleTowerTrainersEnd - BattleTowerTrainers) / NAME_LENGTH jr nc, .resample ld b, a @@ -112,8 +115,8 @@ Function_LoadRandomBattleTowerPkmn: ; 1f8081 ld a, [hRandomAdd] add b ld b, a - and $1f - cp BATTLETOWER_NROFPKMNS * BATTLETOWER_NROFTRAINERS + and BATTLETOWER_PKMN_MASK + cp BATTLETOWER_NUM_UNIQUE_PKMN jr nc, .resample ; in register 'a' is the chosen Pkmn of the LevelGroup diff --git a/engine/events/battle_tower/rules.asm b/engine/events/battle_tower/rules.asm index de6022145..8d037951b 100644 --- a/engine/events/battle_tower/rules.asm +++ b/engine/events/battle_tower/rules.asm @@ -213,7 +213,7 @@ BattleTower_ExecuteJumptable: ; 8b25b BattleTower_CheckPartyLengthIs3: ; 8b2bb ld a, [PartyCount] - cp 3 + cp BATTLETOWER_NROFPKMNS ret ; 8b2c1 @@ -235,13 +235,13 @@ BattleTower_CheckPartyHasThreeMonsThatAreNotEggs: ; 8b2c1 cp b ret z ld a, b - cp 3 + cp BATTLETOWER_NROFPKMNS ret ; 8b2da Function_PartyCountEq3: ; 8b2da ld a, [PartyCount] - cp 3 + cp BATTLETOWER_NROFPKMNS ret z scf ret |