Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assorted Small Changes #1778

Open
wants to merge 36 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
44a1337
Added +/- 100 buttons to sex experience for character creation
Maxis010 May 29, 2023
f3e2092
Remove fetishes from character creation if content is disabled
Maxis010 May 29, 2023
c0b0d80
Enforce level cap
Maxis010 May 30, 2023
0fef9dc
Integer Overflow prevention
Maxis010 May 31, 2023
fa3a152
Level drain nerf
Maxis010 May 31, 2023
cd718f9
Stack & Remove similar enchantments
Maxis010 May 31, 2023
19ba6f3
Milk tax relief
Maxis010 May 31, 2023
d667c35
Prioritise Demon self-TF over Slime
Maxis010 May 31, 2023
4ab9653
Changed the description of level drain
Maxis010 Jun 8, 2023
6fbc504
Bugfix: Removed isAvaliable overrides that recreate super method
Maxis010 Jun 17, 2023
879b393
Switched the Earth and Water spell pages
Maxis010 Jun 18, 2023
a8eb551
Bugfix: Status effect attribute null check
Maxis010 Jun 18, 2023
e5461d8
Added "did you unpack the game" check
Maxis010 Jun 19, 2023
c50ae72
Fixed NPE & removed debugging err prints
Maxis010 Jun 29, 2023
9a3442d
Undo accidental demon mommy nerf
Maxis010 Jul 24, 2023
d4842eb
Spellcheck and clarification of Options descriptions
Maxis010 Jul 30, 2023
4b66513
Added simple java version check message
Maxis010 Sep 14, 2023
88f5cd1
Merge branch 'dev' into stuff
Maxis010 Sep 27, 2023
f4c80d3
Multibreast TF incorrectly blocked
Maxis010 Sep 27, 2023
40cac79
Added Sage Latex set to bondage applier generator (and remove slave c…
Maxis010 Oct 1, 2023
0fd4974
Forced VAGINAL_TAKEN to 0 if pure virgin fetish
Maxis010 Oct 1, 2023
de4c186
Default confirmation check
Maxis010 Oct 2, 2023
fd935a0
Added prerequisite tag to Lilin pawn & Sex doll jobs
Maxis010 Oct 19, 2023
ffa29a5
Half-demon taur spawn fix
Maxis010 Oct 20, 2023
78f5e36
Helps if you commit the entire fix
Maxis010 Oct 20, 2023
39eabf1
Bugfix: Check if the Spawn/Furry preference is disabled for that subs…
Maxis010 Oct 22, 2023
b90ecae
Bugfix: Check if the Spawn/Furry preference is hidden for that subspe…
Maxis010 Oct 22, 2023
e9d6937
Bugfix: Don't pass Slime or Imp after already checking for them
Maxis010 Oct 22, 2023
f31d914
Bugfix: Affection change didn't match dialogue
Maxis010 Oct 27, 2023
0bea390
Bugfix: Brothel visitors not leaving
Maxis010 Oct 27, 2023
3225100
Bugfix: Tails were incorrectly marked as Suitable for Penetration in …
Maxis010 Dec 29, 2023
f0d9369
Merge branch 'dev' into stuff
Maxis010 Apr 1, 2024
54b917e
Implemented useOffspringMap method
Maxis010 Apr 27, 2024
2e33b1a
Bugfix: Armpits SexAreaOrifice now has correct getRelatedCoverableAre…
Maxis010 Apr 28, 2024
8b6373a
Merge branch 'refs/heads/dev' into stuff
Maxis010 Jun 4, 2024
e382ba0
Merge branch 'dev' into stuff
Maxis010 Dec 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 32 additions & 119 deletions src/com/lilithsthrone/controller/CreationController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2847,126 +2847,39 @@ public static void initPersonalityListeners() {
}

public static void initSexExperienceListeners() {
Map<String, SexType> types = Util.newHashMapOfValues(
new Value<>("HANDJOBS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.FINGER, SexAreaPenetration.PENIS)),
new Value<>("FINGERINGS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.FINGER, SexAreaOrifice.VAGINA)),
new Value<>("BLOWJOBS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.MOUTH, SexAreaPenetration.PENIS)),
new Value<>("CUNNILINGUS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.TONGUE, SexAreaOrifice.VAGINA)),
new Value<>("ANILINGUS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.TONGUE, SexAreaOrifice.ANUS)),
new Value<>("VAGINAL_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.VAGINA)),
new Value<>("ANAL_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.ANUS)),
new Value<>("HANDJOBS_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaPenetration.FINGER)),
new Value<>("FINGERINGS_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.FINGER)),
new Value<>("BLOWJOBS_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.MOUTH)),
new Value<>("CUNNILINGUS_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.TONGUE)),
new Value<>("ANILINGUS_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.ANUS, SexAreaPenetration.TONGUE)),
new Value<>("VAGINAL_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.PENIS)),
new Value<>("ANAL_TAKEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.ANUS, SexAreaPenetration.PENIS)),
new Value<>("BLOWJOBS_GIVEN", new SexType(SexParticipantType.NORMAL, SexAreaOrifice.MOUTH, SexAreaPenetration.PENIS)));
Map<String, Integer> mappings = Util.newHashMapOfValues(
new Value<>("DECREASE_LARGE", -10),
new Value<>("DECREASE", -1),
new Value<>("INCREASE", 1),
new Value<>("INCREASE_LARGE", 10));
for (Entry<String, Integer> entry : mappings.entrySet()) {
String i = entry.getKey();
int j = entry.getValue();
// Given:
String id = "HANDJOBS_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.FINGER, SexAreaPenetration.PENIS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "FINGERINGS_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.FINGER, SexAreaOrifice.VAGINA), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "BLOWJOBS_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.MOUTH, SexAreaPenetration.PENIS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "CUNNILINGUS_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.TONGUE, SexAreaOrifice.VAGINA), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "ANILINGUS_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.TONGUE, SexAreaOrifice.ANUS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "VAGINAL_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.VAGINA), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "ANAL_GIVEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.ANUS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

// Received:
id = "HANDJOBS_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaPenetration.FINGER), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "FINGERINGS_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.FINGER), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "BLOWJOBS_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaPenetration.PENIS, SexAreaOrifice.MOUTH), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "CUNNILINGUS_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.TONGUE), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "ANILINGUS_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.ANUS, SexAreaPenetration.TONGUE), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "VAGINAL_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.VAGINA, SexAreaPenetration.PENIS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}

id = "ANAL_TAKEN_"+i;
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(new SexType(SexParticipantType.NORMAL, SexAreaOrifice.ANUS, SexAreaPenetration.PENIS), j);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
new Value<>("DECREASE_LARGE", -100),
new Value<>("DECREASE", -10),
new Value<>("DECREASE_SMALL", -1),
new Value<>("INCREASE_SMALL", 1),
new Value<>("INCREASE", 10),
new Value<>("INCREASE_LARGE", 100));
for (Entry<String, SexType> typeEntry : types.entrySet()) {
for (Entry<String, Integer> entry : mappings.entrySet()) {
int i = entry.getValue();
String id = typeEntry.getKey() + "_" + entry.getKey();
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
CharacterModificationUtils.incrementSexExperience(typeEntry.getValue(), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions src/com/lilithsthrone/controller/EnchantmentController.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ static void initEnchantmentMenuListeners() {
new TooltipInformationEventListener().setInformation("Delete Effect", ""),
new EnchantmentEventListener().removeEffect(effectCount), false);
}
id = "DELETE_ALL_EFFECT_"+effectCount;
if (MainController.document.getElementById(id) != null) {
MainController.addTooltipListeners(id,
new TooltipInformationEventListener().setInformation("Delete Effect Stack", ""),
new EnchantmentEventListener().removeMatchingEffect(effectCount), false);
}
}

AbstractItemEffectType effect = EnchantmentDialogue.getIngredient().getEnchantmentEffect();
Expand Down
12 changes: 8 additions & 4 deletions src/com/lilithsthrone/controller/OptionsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,10 @@ public static void initFurryListeners() {
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
for (AbstractSubspecies subspecies : Subspecies.getAllSubspecies()) {
Main.getProperties().setFeminineFurryPreference(subspecies, preference);
Main.getProperties().setMasculineFurryPreference(subspecies, preference);
if (subspecies.isFurryPreferencesEnabled() && subspecies.isDisplayedInFurryPreferences()) {
Main.getProperties().setFeminineFurryPreference(subspecies, preference);
Main.getProperties().setMasculineFurryPreference(subspecies, preference);
}
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
Expand All @@ -296,8 +298,10 @@ public static void initFurryListeners() {
if (MainController.document.getElementById(id) != null) {
((EventTarget) MainController.document.getElementById(id)).addEventListener("click", e->{
for (AbstractSubspecies subspecies : Subspecies.getAllSubspecies()) {
Main.getProperties().setFeminineSubspeciesPreference(subspecies, preference);
Main.getProperties().setMasculineSubspeciesPreference(subspecies, preference);
if (subspecies.isSpawnPreferencesEnabled() && subspecies.isDisplayedInFurryPreferences()) {
Main.getProperties().setFeminineSubspeciesPreference(subspecies, preference);
Main.getProperties().setMasculineSubspeciesPreference(subspecies, preference);
}
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public class EnchantmentEventListener implements EventListener {
private AbstractCoreItem itemToEnchant;
private TFModifier primaryModifier, secondaryModifier;
private TFPotency potency;
private boolean effect;
private boolean remove;
private boolean removeAll;
private int effectIndex;
private int limit;

Expand All @@ -41,9 +42,12 @@ public void handleEvent(Event event) {
} else if(potency != null) {
EnchantmentDialogue.setPotency(potency);

} else if(effect) {
} else if(remove) {
EnchantmentDialogue.removeEffect(effectIndex);

} else if(removeAll) {
EnchantmentDialogue.removeMatchingEffect(effectIndex);

} else if(limit != EnchantmentDialogue.getLimit()) {
EnchantmentDialogue.setLimit(limit);
}
Expand Down Expand Up @@ -94,7 +98,15 @@ public EnchantmentEventListener setPotency(TFPotency potency) {

public EnchantmentEventListener removeEffect(int effectIndex) {
resetVariables();
effect = true;
remove = true;
this.effectIndex = effectIndex;

return this;
}

public EnchantmentEventListener removeMatchingEffect(int effectIndex) {
resetVariables();
removeAll = true;
this.effectIndex = effectIndex;

return this;
Expand All @@ -108,7 +120,8 @@ public EnchantmentEventListener setLimit(int limit) {
}

private void resetVariables() {
effect = false;
remove = false;
removeAll = false;
effectIndex = 0;
itemToEnchant = null;
primaryModifier = null;
Expand Down
24 changes: 13 additions & 11 deletions src/com/lilithsthrone/game/character/CharacterUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ public void applyGenetics(GameCharacter offspring, Body body, Body motherBody, B
}
}
}

if(motherBody.isFeral()) { // Feral mothers always birth feral offspring. This is done after the genetics section to make sure that the feral offspring is not modified in an unintended manner (such as making them as tall as the father).
body.setFeral(offspring, motherBody.getTrueSubspecies()); // Feral offspring should always be the race of the feral mother to avoid very odd birthings (e.g. elephants born from a wolf)
}
Expand Down Expand Up @@ -1193,9 +1193,9 @@ public Body generateHalfDemonBody(GameCharacter linkedCharacter, Gender starting
body.updateCoverings(true, true, true, true);

applyPreferenceChanges(linkedCharacter, body);

setBodyHair(body);

halfSubspecies.getRace().applyRaceChanges(body);
halfSubspecies.applySpeciesChanges(body);

Expand Down Expand Up @@ -1239,15 +1239,15 @@ public Body generateBody(GameCharacter linkedCharacter, Gender startingGender, A
}
}
}

if(potentialSubspecies.isEmpty()) {
potentialSubspecies.add(Subspecies.HUMAN);
}
species = Util.randomItemFrom(potentialSubspecies);

return generateHalfDemonBody(linkedCharacter, startingGender, species, true);
}

// Handling slimes:
if(isSlime && (linkedCharacter==null || !linkedCharacter.isUnique())) {
List<AbstractSubspecies> potentialSubspecies = new ArrayList<>();
Expand All @@ -1273,13 +1273,13 @@ public Body generateBody(GameCharacter linkedCharacter, Gender startingGender, A
potentialSubspecies.add(Subspecies.HUMAN);
}
species = Util.randomItemFrom(potentialSubspecies);

if(startingGender.isFeminine()) {
stage = getRaceStageFromPreferences(Main.getProperties().getSubspeciesFeminineFurryPreferencesMap().get(species), startingGender, species);
} else {
stage = getRaceStageFromPreferences(Main.getProperties().getSubspeciesMasculineFurryPreferencesMap().get(species), startingGender, species);
}

startingBodyType = RacialBody.valueOfRace(species.getRace());
}

Expand Down Expand Up @@ -1731,12 +1731,12 @@ private static void applyPreferenceChanges(GameCharacter linkedCharacter, Body b
body.setCovering(BodyCoveringType.HUMAN, Util.getRandomObjectFromWeightedMap(BodyCoveringType.HUMAN.getNaturalPatterns()), CoveringModifier.SMOOTH, skinColour, false, skinColour, false);
body.updateCoverings(true, true, true, true);
}

if(linkedCharacter==null || !linkedCharacter.isUnique() || linkedCharacter.isPlayer()) { // Unique characters should always have the default number of breast rows
// Set breast rows based on preferences:
if(Main.getProperties().multiBreasts==0 || Main.getProperties().multiBreasts==1) {
body.getBreast().setRows(null, 1);

} else if(Main.getProperties().multiBreasts==2) {
if(body.getTorsoType()==TorsoType.HUMAN) {
body.getBreast().setRows(null, 1);
Expand All @@ -1761,7 +1761,7 @@ private static void applyPreferenceChanges(GameCharacter linkedCharacter, Body b
body.getPenis().getTesticle().setInternal(null, true);
}
}

private static void setBodyHair(Body body) {
int slobLevel = (int) (Util.random.nextInt(101)*body.getRace().getDisposition().getBodyHairModifier());

Expand Down Expand Up @@ -2533,6 +2533,8 @@ public void generateItemsInInventory(NPC character, boolean generateExtraItems,
maxClothingCount+=1;
List<InventorySlot> prohibitedSlots = Util.newArrayListOfValues(InventorySlot.VAGINA, InventorySlot.PENIS, InventorySlot.ANUS, InventorySlot.NIPPLE, InventorySlot.GROIN);
for(AbstractClothingType ct : ClothingType.getAllClothingInSet(SetBonus.getSetBonusFromId("innoxia_bdsm"))) {
List<AbstractClothingType> bondageClothing = ClothingType.getAllClothingInSet(SetBonus.getSetBonusFromId("innoxia_bdsm"));
bondageClothing.addAll(ClothingType.getAllClothingInSet(SetBonus.getSetBonusFromId("sage_ltxset")));
InventorySlot defaultSlot = ct.getEquipSlots().get(0);
// Do not add clothing types which are sex toys, as conditionals for those are added in the next logic block, and do not add enslavement clothing as the NPC will not want to equip it.
if(!ct.getEffects().stream().anyMatch(ie -> ie.getSecondaryModifier()==TFModifier.CLOTHING_ENSLAVEMENT) && !prohibitedSlots.contains(defaultSlot)) {
Expand Down
22 changes: 13 additions & 9 deletions src/com/lilithsthrone/game/character/GameCharacter.java
Original file line number Diff line number Diff line change
Expand Up @@ -6459,7 +6459,7 @@ public int getExperienceNeededForNextLevel() {
}

public String incrementExperience(int increment, boolean withExtraModifiers) {
if (getLevel() == LEVEL_CAP) {
if (getLevel() >= LEVEL_CAP) {
experience = 0;
return "";
}
Expand Down Expand Up @@ -10789,7 +10789,7 @@ public boolean isImmuneToLevelDrain() {

public String applyLevelDrain(GameCharacter target) {
if(target.getTrueLevel()>1) {
int exp = target.getExperienceNeededForNextLevel();
int exp = target.getTrueLevel()*5;
return UtilText.parse(target, this,
"<p style='text-align:center; margin:0;'>"
+ this.getLevelDrainDescription(target)
Expand Down Expand Up @@ -22552,6 +22552,9 @@ public int getLevel() {
}

public void setLevel(int level) {
if (level > LEVEL_CAP) {
level = LEVEL_CAP;
}
this.level = level;
}

Expand Down Expand Up @@ -27141,19 +27144,20 @@ public int getMinimumHeight() {
if(this.isFeral()) {
return Math.min(Height.NEGATIVE_TWO_MINIMUM.getMinimumValue(), (int) (this.getFeralAttributes().getSize()*0.5f));
}
return this.getSubspecies().isShortStature()
?Height.NEGATIVE_TWO_MINIMUM.getMinimumValue()
:Height.getShortStatureCutOff();
if (this.getSubspecies().isShortStature() || (this.getSubspeciesOverride() != null && this.getSubspeciesOverride().isShortStature())) {
return Height.NEGATIVE_TWO_MINIMUM.getMinimumValue();
}
return Height.getShortStatureCutOff();
}

public int getMaximumHeight() {
// if(this.isFeral()) {
// return Math.max(Height.SEVEN_COLOSSAL.getMaximumValue(), (int) (this.getFeralAttributes().getSize()*2f));
// }

return this.getSubspecies().isShortStature()
?Height.getShortStatureCutOff()-1
:Height.SEVEN_COLOSSAL.getMaximumValue();
if (this.getSubspecies().isShortStature() || (this.getSubspeciesOverride() != null && this.getSubspeciesOverride().isShortStature())) {
return Height.getShortStatureCutOff()-1;
}
return Height.SEVEN_COLOSSAL.getMaximumValue();
}

public String setHeight(int height) {
Expand Down
Loading