summaryrefslogtreecommitdiff
path: root/src/com/sneed/pkrandom/Randomizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/sneed/pkrandom/Randomizer.java')
-rw-r--r--src/com/sneed/pkrandom/Randomizer.java270
1 files changed, 149 insertions, 121 deletions
diff --git a/src/com/sneed/pkrandom/Randomizer.java b/src/com/sneed/pkrandom/Randomizer.java
index 41dc933..47b0c1e 100644
--- a/src/com/sneed/pkrandom/Randomizer.java
+++ b/src/com/sneed/pkrandom/Randomizer.java
@@ -84,6 +84,7 @@ public class Randomizer {
boolean startersChanged = false;
boolean evolutionsChanged = false;
boolean trainersChanged = false;
+ boolean trainerMovesetsChanged = false;
boolean staticsChanged = false;
boolean totemsChanged = false;
boolean wildsChanged = false;
@@ -312,6 +313,118 @@ public class Randomizer {
log.println("Pokemon Movesets: Unchanged." + NEWLINE);
}
+ // TMs
+
+ if (!(settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY)
+ && settings.getTmsMod() == Settings.TMsMod.RANDOM) {
+ romHandler.randomizeTMMoves(settings);
+ tmMovesChanged = true;
+ }
+
+ if (tmMovesChanged) {
+ checkValue = logTMMoves(log, checkValue);
+ } else if (settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY) {
+ log.println("TM Moves: Metronome Only." + NEWLINE);
+ } else {
+ log.println("TM Moves: Unchanged." + NEWLINE);
+ }
+
+ // TM/HM compatibility
+ // 1. Randomize TM/HM compatibility
+ // 2. Ensure levelup move sanity
+ // 3. Follow evolutions
+ // 4. Full HM compatibility
+ // 5. Copy to cosmetic forms
+
+ switch (settings.getTmsHmsCompatibilityMod()) {
+ case COMPLETELY_RANDOM:
+ case RANDOM_PREFER_TYPE:
+ romHandler.randomizeTMHMCompatibility(settings);
+ tmsHmsCompatChanged = true;
+ break;
+ case FULL:
+ romHandler.fullTMHMCompatibility();
+ tmsHmsCompatChanged = true;
+ break;
+ default:
+ break;
+ }
+
+ if (settings.isTmLevelUpMoveSanity()) {
+ romHandler.ensureTMCompatSanity();
+ if (settings.isTmsFollowEvolutions()) {
+ romHandler.ensureTMEvolutionSanity();
+ }
+ tmsHmsCompatChanged = true;
+ }
+
+ if (settings.isFullHMCompat()) {
+ romHandler.fullHMCompatibility();
+ tmsHmsCompatChanged = true;
+ }
+
+ // Copy TM/HM compatibility to cosmetic formes if it was changed at all, and log changes
+ if (tmsHmsCompatChanged) {
+ romHandler.copyTMCompatibilityToCosmeticFormes();
+ logTMHMCompatibility(log);
+ }
+
+ // Move Tutors
+ if (romHandler.hasMoveTutors()) {
+
+ List<Integer> oldMtMoves = romHandler.getMoveTutorMoves();
+
+ if (!(settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY)
+ && settings.getMoveTutorMovesMod() == Settings.MoveTutorMovesMod.RANDOM) {
+
+ romHandler.randomizeMoveTutorMoves(settings);
+ moveTutorMovesChanged = true;
+ }
+
+ if (moveTutorMovesChanged) {
+ checkValue = logMoveTutorMoves(log, checkValue, oldMtMoves);
+ } else if (settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY) {
+ log.println("Move Tutor Moves: Metronome Only." + NEWLINE);
+ } else {
+ log.println("Move Tutor Moves: Unchanged." + NEWLINE);
+ }
+
+ // Move Tutor Compatibility
+ // 1. Randomize MT compatibility
+ // 2. Ensure levelup move sanity
+ // 3. Follow evolutions
+ // 4. Copy to cosmetic forms
+
+ switch (settings.getMoveTutorsCompatibilityMod()) {
+ case COMPLETELY_RANDOM:
+ case RANDOM_PREFER_TYPE:
+ romHandler.randomizeMoveTutorCompatibility(settings);
+ tutorCompatChanged = true;
+ break;
+ case FULL:
+ romHandler.fullMoveTutorCompatibility();
+ tutorCompatChanged = true;
+ break;
+ default:
+ break;
+ }
+
+ if (settings.isTutorLevelUpMoveSanity()) {
+ romHandler.ensureMoveTutorCompatSanity();
+ if (settings.isTutorFollowEvolutions()) {
+ romHandler.ensureMoveTutorEvolutionSanity();
+ }
+ tutorCompatChanged = true;
+ }
+
+ // Copy move tutor compatibility to cosmetic formes if it was changed at all
+ if (tutorCompatChanged) {
+ romHandler.copyMoveTutorCompatibilityToCosmeticFormes();
+ logTutorCompatibility(log);
+ }
+
+ }
+
// Trainer Pokemon
// 1. Add extra Trainer Pokemon
// 2. Set trainers to be double battles and add extra Pokemon if necessary
@@ -361,6 +474,11 @@ public class Randomizer {
trainersChanged = true;
}
+ if (settings.isBetterTrainerMovesets()) {
+ romHandler.pickTrainerMovesets(settings);
+ trainerMovesetsChanged = true;
+ }
+
if (settings.isRandomizeHeldItemsForBossTrainerPokemon()
|| settings.isRandomizeHeldItemsForImportantTrainerPokemon()
|| settings.isRandomizeHeldItemsForRegularTrainerPokemon()) {
@@ -387,7 +505,7 @@ public class Randomizer {
}
if (trainersChanged) {
- maybeLogTrainerChanges(log, originalTrainerNames, trainerNamesChanged);
+ maybeLogTrainerChanges(log, originalTrainerNames, trainerNamesChanged, trainerMovesetsChanged);
} else {
log.println("Trainers: Unchanged." + NEWLINE);
}
@@ -486,117 +604,6 @@ public class Randomizer {
}
}
- // TMs
-
- if (!(settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY)
- && settings.getTmsMod() == Settings.TMsMod.RANDOM) {
- romHandler.randomizeTMMoves(settings);
- tmMovesChanged = true;
- }
-
- if (tmMovesChanged) {
- checkValue = logTMMoves(log, checkValue);
- } else if (settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY) {
- log.println("TM Moves: Metronome Only." + NEWLINE);
- } else {
- log.println("TM Moves: Unchanged." + NEWLINE);
- }
-
- // TM/HM compatibility
- // 1. Randomize TM/HM compatibility
- // 2. Ensure levelup move sanity
- // 3. Follow evolutions
- // 4. Full HM compatibility
- // 5. Copy to cosmetic forms
-
- switch (settings.getTmsHmsCompatibilityMod()) {
- case COMPLETELY_RANDOM:
- case RANDOM_PREFER_TYPE:
- romHandler.randomizeTMHMCompatibility(settings);
- tmsHmsCompatChanged = true;
- break;
- case FULL:
- romHandler.fullTMHMCompatibility();
- tmsHmsCompatChanged = true;
- break;
- default:
- break;
- }
-
- if (settings.isTmLevelUpMoveSanity()) {
- romHandler.ensureTMCompatSanity();
- if (settings.isTmsFollowEvolutions()) {
- romHandler.ensureTMEvolutionSanity();
- }
- tmsHmsCompatChanged = true;
- }
-
- if (settings.isFullHMCompat()) {
- romHandler.fullHMCompatibility();
- tmsHmsCompatChanged = true;
- }
-
- // Copy TM/HM compatibility to cosmetic formes if it was changed at all, and log changes
- if (tmsHmsCompatChanged) {
- romHandler.copyTMCompatibilityToCosmeticFormes();
- logTMHMCompatibility(log);
- }
-
- // Move Tutors
- if (romHandler.hasMoveTutors()) {
-
- List<Integer> oldMtMoves = romHandler.getMoveTutorMoves();
-
- if (!(settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY)
- && settings.getMoveTutorMovesMod() == Settings.MoveTutorMovesMod.RANDOM) {
-
- romHandler.randomizeMoveTutorMoves(settings);
- moveTutorMovesChanged = true;
- }
-
- if (moveTutorMovesChanged) {
- checkValue = logMoveTutorMoves(log, checkValue, oldMtMoves);
- } else if (settings.getMovesetsMod() == Settings.MovesetsMod.METRONOME_ONLY) {
- log.println("Move Tutor Moves: Metronome Only." + NEWLINE);
- } else {
- log.println("Move Tutor Moves: Unchanged." + NEWLINE);
- }
-
- // Move Tutor Compatibility
- // 1. Randomize MT compatibility
- // 2. Ensure levelup move sanity
- // 3. Follow evolutions
- // 4. Copy to cosmetic forms
-
- switch (settings.getMoveTutorsCompatibilityMod()) {
- case COMPLETELY_RANDOM:
- case RANDOM_PREFER_TYPE:
- romHandler.randomizeMoveTutorCompatibility(settings);
- tutorCompatChanged = true;
- break;
- case FULL:
- romHandler.fullMoveTutorCompatibility();
- tutorCompatChanged = true;
- break;
- default:
- break;
- }
-
- if (settings.isTutorLevelUpMoveSanity()) {
- romHandler.ensureMoveTutorCompatSanity();
- if (settings.isTutorFollowEvolutions()) {
- romHandler.ensureMoveTutorEvolutionSanity();
- }
- tutorCompatChanged = true;
- }
-
- // Copy move tutor compatibility to cosmetic formes if it was changed at all
- if (tutorCompatChanged) {
- romHandler.copyMoveTutorCompatibilityToCosmeticFormes();
- logTutorCompatibility(log);
- }
-
- }
// In-game trades
@@ -1116,8 +1123,7 @@ public class Randomizer {
log.println();
}
- private void maybeLogTrainerChanges(final PrintStream log, List<String> originalTrainerNames, boolean trainerNamesChanged) {
-
+ private void maybeLogTrainerChanges(final PrintStream log, List<String> originalTrainerNames, boolean trainerNamesChanged, boolean logTrainerMovesets) {
log.println("--Trainers Pokemon--");
List<Trainer> trainers = romHandler.getTrainers();
for (Trainer t : trainers) {
@@ -1139,15 +1145,37 @@ public class Randomizer {
if (t.offset != 0) {
log.printf("@%X", t.offset);
}
- log.print(" - ");
- boolean first = true;
+
String[] itemNames = romHandler.getItemNames();
- for (TrainerPokemon tpk : t.pokemon) {
- if (!first) {
- log.print(", ");
+ if (logTrainerMovesets) {
+ log.println();
+ for (TrainerPokemon tpk : t.pokemon) {
+ List<Move> moves = romHandler.getMoves();
+ log.printf(tpk.toString(), itemNames[tpk.heldItem]);
+ log.print(", Ability: " + romHandler.abilityName(romHandler.getAbilityForTrainerPokemon(tpk)));
+ log.print(" - ");
+ boolean first = true;
+ for (int move : tpk.moves) {
+ if (move != 0) {
+ if (!first) {
+ log.print(", ");
+ }
+ log.print(moves.get(move).name);
+ first = false;
+ }
+ }
+ log.println();
+ }
+ } else {
+ log.print(" - ");
+ boolean first = true;
+ for (TrainerPokemon tpk : t.pokemon) {
+ if (!first) {
+ log.print(", ");
+ }
+ log.printf(tpk.toString(), itemNames[tpk.heldItem]);
+ first = false;
}
- log.printf(tpk.toString(), itemNames[tpk.heldItem]);
- first = false;
}
log.println();
}