diff options
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/sneed/pkrandom/newgui/Bundle.properties | 2 | ||||
-rw-r--r-- | src/com/sneed/pkrandom/newgui/NewRandomizerGUI.java | 13 | ||||
-rwxr-xr-x | src/com/sneed/pkrandom/romhandlers/AbstractRomHandler.java | 52 |
3 files changed, 55 insertions, 12 deletions
diff --git a/src/com/sneed/pkrandom/newgui/Bundle.properties b/src/com/sneed/pkrandom/newgui/Bundle.properties index 95ecf3f..80bae63 100644 --- a/src/com/sneed/pkrandom/newgui/Bundle.properties +++ b/src/com/sneed/pkrandom/newgui/Bundle.properties @@ -90,7 +90,7 @@ GUI.startersStaticsTradesPanel=Starters, Statics & Trades GUI.spPanel.title=Starter Pokemon GUI.spUnchangedRadioButton.toolTipText=Don't change the starter Pokemon. GUI.spUnchangedRadioButton.text=Unchanged -GUI.spCustomRadioButton.toolTipText=Lets you pick the 3 starter pokemon you want to use. +GUI.spCustomRadioButton.toolTipText=Lets you pick the 3 starter pokemon you want to use, or "Random" at the top of the selector. GUI.spCustomRadioButton.text=Custom GUI.spRandomCompletelyRadioButton.toolTipText=Picks 3 random starter Pokemon to be used. GUI.spRandomCompletelyRadioButton.text=Random (completely) diff --git a/src/com/sneed/pkrandom/newgui/NewRandomizerGUI.java b/src/com/sneed/pkrandom/newgui/NewRandomizerGUI.java index 9f18148..fdb05ad 100644 --- a/src/com/sneed/pkrandom/newgui/NewRandomizerGUI.java +++ b/src/com/sneed/pkrandom/newgui/NewRandomizerGUI.java @@ -3519,17 +3519,20 @@ public class NewRandomizerGUI { .filter(pk -> pk == null || !pk.actuallyCosmetic) .collect(Collectors.toList()) : romHandler.getPokemon(); - String[] pokeNames = new String[allPokes.size() - 1]; + String[] pokeNames = new String[allPokes.size()]; + pokeNames[0] = "Random"; for (int i = 1; i < allPokes.size(); i++) { - pokeNames[i - 1] = allPokes.get(i).fullName(); + pokeNames[i] = allPokes.get(i).fullName(); + } + spComboBox1.setModel(new DefaultComboBoxModel<>(pokeNames)); - spComboBox1.setSelectedIndex(allPokes.indexOf(currentStarters.get(0)) - 1); + spComboBox1.setSelectedIndex(allPokes.indexOf(currentStarters.get(0))); spComboBox2.setModel(new DefaultComboBoxModel<>(pokeNames)); - spComboBox2.setSelectedIndex(allPokes.indexOf(currentStarters.get(1)) - 1); + spComboBox2.setSelectedIndex(allPokes.indexOf(currentStarters.get(1))); if (!romHandler.isYellow()) { spComboBox3.setModel(new DefaultComboBoxModel<>(pokeNames)); - spComboBox3.setSelectedIndex(allPokes.indexOf(currentStarters.get(2)) - 1); + spComboBox3.setSelectedIndex(allPokes.indexOf(currentStarters.get(2))); } String[] baseStatGenerationNumbers = new String[Math.min(3, GlobalConstants.HIGHEST_POKEMON_GEN - romHandler.generationOfPokemon())]; diff --git a/src/com/sneed/pkrandom/romhandlers/AbstractRomHandler.java b/src/com/sneed/pkrandom/romhandlers/AbstractRomHandler.java index f3471db..966a071 100755 --- a/src/com/sneed/pkrandom/romhandlers/AbstractRomHandler.java +++ b/src/com/sneed/pkrandom/romhandlers/AbstractRomHandler.java @@ -3187,25 +3187,65 @@ public abstract class AbstractRomHandler implements RomHandler { @Override public void customStarters(Settings settings) { + boolean abilitiesUnchanged = settings.getAbilitiesMod() == Settings.AbilitiesMod.UNCHANGED; int[] customStarters = settings.getCustomStarters(); boolean allowAltFormes = settings.isAllowStarterAltFormes(); + boolean banIrregularAltFormes = settings.isBanIrregularAltFormes(); List<Pokemon> romPokemon = getPokemonInclFormes() .stream() .filter(pk -> pk == null || !pk.actuallyCosmetic) .collect(Collectors.toList()); + List<Pokemon> banned = getBannedFormesForPlayerPokemon(); pickedStarters = new ArrayList<>(); - Pokemon pkmn1 = romPokemon.get(customStarters[0]); - pickedStarters.add(pkmn1); - Pokemon pkmn2 = romPokemon.get(customStarters[1]); - pickedStarters.add(pkmn2); + if (abilitiesUnchanged) { + List<Pokemon> abilityDependentFormes = getAbilityDependentFormes(); + banned.addAll(abilityDependentFormes); + } + if (banIrregularAltFormes) { + banned.addAll(getIrregularFormes()); + } + // loop to add chosen pokemon to banned, preventing it from being a random option. + for (int i = 0; i < customStarters.length; i = i + 1){ + if (!(customStarters[i] - 1 == 0)){ + banned.add(romPokemon.get(customStarters[i] - 1)); + } + } + if (customStarters[0] - 1 == 0){ + Pokemon pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + while (pickedStarters.contains(pkmn) || banned.contains(pkmn) || pkmn.actuallyCosmetic) { + pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + } + pickedStarters.add(pkmn); + } else { + Pokemon pkmn1 = romPokemon.get(customStarters[0] - 1); + pickedStarters.add(pkmn1); + } + if (customStarters[1] - 1 == 0){ + Pokemon pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + while (pickedStarters.contains(pkmn) || banned.contains(pkmn) || pkmn.actuallyCosmetic) { + pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + } + pickedStarters.add(pkmn); + } else { + Pokemon pkmn2 = romPokemon.get(customStarters[1] - 1); + pickedStarters.add(pkmn2); + } if (isYellow()) { setStarters(pickedStarters); } else { - Pokemon pkmn3 = romPokemon.get(customStarters[2]); - pickedStarters.add(pkmn3); + if (customStarters[2] - 1 == 0){ + Pokemon pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + while (pickedStarters.contains(pkmn) || banned.contains(pkmn) || pkmn.actuallyCosmetic) { + pkmn = allowAltFormes ? randomPokemonInclFormes() : randomPokemon(); + } + pickedStarters.add(pkmn); + } else { + Pokemon pkmn3 = romPokemon.get(customStarters[2] - 1); + pickedStarters.add(pkmn3); + } if (starterCount() > 3) { for (int i = 3; i < starterCount(); i++) { Pokemon pkmn = random2EvosPokemon(allowAltFormes); |