|
|
@@ -3,9 +3,11 @@ package org.leumasjaffe.charsheet.model;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.config.Constants;
|
|
|
import org.leumasjaffe.charsheet.model.features.DDProperty;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
|
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
|
@@ -115,7 +117,9 @@ public class DDCharacterClass extends Observable.Instance implements Comparable<
|
|
|
}
|
|
|
|
|
|
public boolean isClassSkill(final String skill) {
|
|
|
- return name.base.isClassSkill(skill);
|
|
|
+ return name.base.isClassSkill(skill) ||
|
|
|
+ DDClass.isClassSkill(skill, getFeatureBonuses(Constants.GAINSKILL).stream()
|
|
|
+ .map(DDProperty::getName).collect(Collectors.toSet()));
|
|
|
}
|
|
|
|
|
|
@JsonIgnore public DDClass getProto() {
|
|
|
@@ -126,7 +130,13 @@ public class DDCharacterClass extends Observable.Instance implements Comparable<
|
|
|
return getHighestSpellLevel(getLevel().value());
|
|
|
}
|
|
|
|
|
|
- public int getHighestSpellLevel(int level) {
|
|
|
+ @JsonIgnore public Set<String> getClassSkills() {
|
|
|
+ return Stream.concat(getProto().getSkills().stream(),
|
|
|
+ getFeatureBonuses(Constants.GAINSKILL).stream().map(DDProperty::getName))
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ }
|
|
|
+
|
|
|
+ @JsonIgnore public int getHighestSpellLevel(int level) {
|
|
|
// TODO: Bonus levels to spellsKnown/spellsPerDay?
|
|
|
// TODO: Bonus spellsPerDay for high ability scores
|
|
|
if (level == 0) { return -1; }
|