Skip to content

Commit f77a3a1

Browse files
Assigning race from faction if is restricted and not set.
1 parent 4cddc31 commit f77a3a1

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

think-machine-random/src/main/java/com/softwaremagico/tm/character/RandomizeCharacter.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import com.softwaremagico.tm.character.occultism.RandomPsique;
5050
import com.softwaremagico.tm.character.occultism.RandomPsiquePath;
5151
import com.softwaremagico.tm.character.races.Race;
52-
import com.softwaremagico.tm.character.races.RaceFactory;
5352
import com.softwaremagico.tm.character.races.RandomRace;
5453
import com.softwaremagico.tm.character.skills.AvailableSkill;
5554
import com.softwaremagico.tm.character.skills.RandomSkillExperience;
@@ -61,10 +60,7 @@
6160
import com.softwaremagico.tm.random.predefined.PredefinedMerger;
6261
import com.softwaremagico.tm.random.selectors.*;
6362

64-
import java.util.Arrays;
65-
import java.util.HashSet;
66-
import java.util.Objects;
67-
import java.util.Set;
63+
import java.util.*;
6864
import java.util.concurrent.atomic.AtomicReference;
6965
import java.util.stream.Collectors;
7066

@@ -283,8 +279,20 @@ protected void setCharacterDefinition() throws InvalidXmlElementException, Inval
283279
try {
284280
//Race not correct for this faction. Correct it.
285281
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+
}
288296
}
289297
characterPlayer.setFaction(requiredFaction);
290298
} catch (RestrictedElementException e) {

0 commit comments

Comments
 (0)