|
49 | 49 | import com.softwaremagico.tm.character.occultism.RandomPsique; |
50 | 50 | import com.softwaremagico.tm.character.occultism.RandomPsiquePath; |
51 | 51 | import com.softwaremagico.tm.character.races.Race; |
52 | | -import com.softwaremagico.tm.character.races.RaceFactory; |
53 | 52 | import com.softwaremagico.tm.character.races.RandomRace; |
54 | 53 | import com.softwaremagico.tm.character.skills.AvailableSkill; |
55 | 54 | import com.softwaremagico.tm.character.skills.RandomSkillExperience; |
|
61 | 60 | import com.softwaremagico.tm.random.predefined.PredefinedMerger; |
62 | 61 | import com.softwaremagico.tm.random.selectors.*; |
63 | 62 |
|
64 | | -import java.util.Arrays; |
65 | | -import java.util.HashSet; |
66 | | -import java.util.Objects; |
67 | | -import java.util.Set; |
| 63 | +import java.util.*; |
68 | 64 | import java.util.concurrent.atomic.AtomicReference; |
69 | 65 | import java.util.stream.Collectors; |
70 | 66 |
|
@@ -283,8 +279,20 @@ protected void setCharacterDefinition() throws InvalidXmlElementException, Inval |
283 | 279 | try { |
284 | 280 | //Race not correct for this faction. Correct it. |
285 | 281 | if (!requiredFaction.getRestrictedToRaces().isEmpty() && !requiredFaction.getRestrictedToRaces().contains(characterPlayer.getRace())) { |
286 | | - characterPlayer.setRace(RaceFactory.getInstance().getElement("human", characterPlayer.getLanguage(), |
287 | | - characterPlayer.getModuleName())); |
| 282 | + //Gets random restricted to race. |
| 283 | + Optional<Race> selectedRace = requiredFaction.getRestrictedToRaces().stream().skip((int) |
| 284 | + (requiredFaction.getRestrictedToRaces().size() * Math.random())).findAny(); |
| 285 | + if (selectedRace.isPresent()) { |
| 286 | + characterPlayer.setRace(selectedRace.get()); |
| 287 | + } else { |
| 288 | + selectedRace = requiredFaction.getRestrictedToRaces().stream().findAny(); |
| 289 | + if (selectedRace.isPresent()) { |
| 290 | + characterPlayer.setRace(selectedRace.get()); |
| 291 | + } else { |
| 292 | + RandomGenerationLog.severe(this.getClass().getName(), "No race selected for mandatory faction '" + |
| 293 | + requiredFaction + "'."); |
| 294 | + } |
| 295 | + } |
288 | 296 | } |
289 | 297 | characterPlayer.setFaction(requiredFaction); |
290 | 298 | } catch (RestrictedElementException e) { |
|
0 commit comments