use of com.lilithsthrone.game.inventory.clothing.AbstractClothing in project liliths-throne-public by Innoxia.
the class Nyan method dailyReset.
@Override
public void dailyReset() {
clearNonEquippedInventory();
Main.game.getDialogueFlags().resetNyanActions();
// Changing old versions of Nyan:
if (this.getClothingInSlot(InventorySlot.LEG) != null && this.getClothingInSlot(InventorySlot.LEG).getClothingType().getId() == ClothingType.LEG_PENCIL_SKIRT.getId()) {
this.unequipClothingIntoVoid(this.getClothingInSlot(InventorySlot.LEG), true, this);
this.equipClothingFromNowhere(AbstractClothingType.generateClothing(ClothingType.LEG_SKIRT, Colour.CLOTHING_BLACK, false), true, this);
}
commonFemaleClothing.clear();
commonFemaleUnderwear.clear();
commonFemaleOtherLingerie.clear();
commonFemaleAccessories.clear();
commonMaleClothing.clear();
commonMaleLingerie.clear();
commonMaleAccessories.clear();
commonAndrogynousClothing.clear();
commonAndrogynousLingerie.clear();
commonAndrogynousAccessories.clear();
specials.clear();
boolean enchantedGear = Main.game.getPlayer().isQuestCompleted(QuestLine.SIDE_NYAN_HELP);
// Female:
for (AbstractClothingType ct : ClothingType.getCommonFemaleClothing()) {
commonFemaleClothing.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonFemaleClothing.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonFemaleClothing().get(Util.random.nextInt(ClothingType.getCommonFemaleClothing().size()))));
}
commonFemaleClothing.add(generateRareClothing(ClothingType.getCommonFemaleClothing().get(Util.random.nextInt(ClothingType.getCommonFemaleClothing().size()))));
}
for (AbstractClothingType ct : ClothingType.getCommonFemaleLingerie()) {
if (ct.getSlot() == InventorySlot.GROIN) {
commonFemaleUnderwear.add(AbstractClothingType.generateClothing(ct, false));
} else {
commonFemaleOtherLingerie.add(AbstractClothingType.generateClothing(ct, false));
}
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonFemaleUnderwear.add(AbstractClothingType.generateClothingWithEnchantment(commonFemaleUnderwear.get(Util.random.nextInt(commonFemaleUnderwear.size())).getClothingType()));
commonFemaleOtherLingerie.add(AbstractClothingType.generateClothingWithEnchantment(commonFemaleOtherLingerie.get(Util.random.nextInt(commonFemaleOtherLingerie.size())).getClothingType()));
}
commonFemaleUnderwear.add(generateRareClothing(commonFemaleUnderwear.get(Util.random.nextInt(commonFemaleUnderwear.size())).getClothingType()));
commonFemaleOtherLingerie.add(generateRareClothing(commonFemaleOtherLingerie.get(Util.random.nextInt(commonFemaleOtherLingerie.size())).getClothingType()));
}
for (AbstractClothingType ct : ClothingType.getCommonFemaleAccessories()) {
commonFemaleAccessories.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonFemaleAccessories.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonFemaleAccessories().get(Util.random.nextInt(ClothingType.getCommonFemaleAccessories().size()))));
}
commonFemaleAccessories.add(generateRareClothing(ClothingType.getCommonFemaleAccessories().get(Util.random.nextInt(ClothingType.getCommonFemaleAccessories().size()))));
}
// Male:
for (AbstractClothingType ct : ClothingType.getCommonMaleClothing()) {
commonMaleClothing.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonMaleClothing.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonMaleClothing().get(Util.random.nextInt(ClothingType.getCommonMaleClothing().size()))));
}
commonMaleClothing.add(generateRareClothing(ClothingType.getCommonMaleClothing().get(Util.random.nextInt(ClothingType.getCommonMaleClothing().size()))));
}
for (AbstractClothingType ct : ClothingType.getCommonMaleLingerie()) {
commonMaleLingerie.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonMaleLingerie.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonMaleLingerie().get(Util.random.nextInt(ClothingType.getCommonMaleLingerie().size()))));
}
commonMaleLingerie.add(generateRareClothing(ClothingType.getCommonMaleLingerie().get(Util.random.nextInt(ClothingType.getCommonMaleLingerie().size()))));
}
for (AbstractClothingType ct : ClothingType.getCommonMaleAccessories()) {
commonMaleAccessories.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonMaleAccessories.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonMaleAccessories().get(Util.random.nextInt(ClothingType.getCommonMaleAccessories().size()))));
}
commonMaleAccessories.add(generateRareClothing(ClothingType.getCommonMaleAccessories().get(Util.random.nextInt(ClothingType.getCommonMaleAccessories().size()))));
}
// Androgynous:
for (AbstractClothingType ct : ClothingType.getCommonAndrogynousClothing()) {
commonAndrogynousClothing.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonAndrogynousClothing.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonAndrogynousClothing().get(Util.random.nextInt(ClothingType.getCommonAndrogynousClothing().size()))));
}
commonAndrogynousClothing.add(generateRareClothing(ClothingType.getCommonAndrogynousClothing().get(Util.random.nextInt(ClothingType.getCommonAndrogynousClothing().size()))));
}
for (AbstractClothingType ct : ClothingType.getCommonAndrogynousLingerie()) {
commonAndrogynousLingerie.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonAndrogynousLingerie.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonAndrogynousLingerie().get(Util.random.nextInt(ClothingType.getCommonAndrogynousLingerie().size()))));
}
commonAndrogynousLingerie.add(generateRareClothing(ClothingType.getCommonAndrogynousLingerie().get(Util.random.nextInt(ClothingType.getCommonAndrogynousLingerie().size()))));
}
for (AbstractClothingType ct : ClothingType.getCommonAndrogynousAccessories()) {
commonAndrogynousAccessories.add(AbstractClothingType.generateClothing(ct, false));
}
if (enchantedGear) {
for (int i = 0; i < 3; i++) {
commonAndrogynousAccessories.add(AbstractClothingType.generateClothingWithEnchantment(ClothingType.getCommonAndrogynousAccessories().get(Util.random.nextInt(ClothingType.getCommonAndrogynousAccessories().size()))));
}
commonAndrogynousAccessories.add(generateRareClothing(ClothingType.getCommonAndrogynousAccessories().get(Util.random.nextInt(ClothingType.getCommonAndrogynousAccessories().size()))));
}
// Specials:
if (enchantedGear) {
specials.add(AbstractClothingType.generateClothing(ClothingType.SOCK_RAINBOW_STOCKINGS));
specials.add(AbstractClothingType.generateClothing(ClothingType.HAND_RAINBOW_FINGERLESS_GLOVES));
specials.add(AbstractClothingType.generateClothing(ClothingType.MILK_MAID_KERCHIEF));
specials.add(AbstractClothingType.generateClothing(ClothingType.MILK_MAID_HEADBAND));
specials.add(AbstractClothingType.generateClothing(ClothingType.MILK_MAID_TORSO_DRESS));
specials.add(AbstractClothingType.generateClothing(ClothingType.MAID_DRESS));
specials.add(AbstractClothingType.generateClothing(ClothingType.MAID_HEADPIECE));
specials.add(AbstractClothingType.generateClothing(ClothingType.MAID_HEELS));
specials.add(AbstractClothingType.generateClothing(ClothingType.MAID_SLEEVES));
specials.add(AbstractClothingType.generateClothing(ClothingType.MAID_STOCKINGS));
specials.add(AbstractClothingType.generateClothing(ClothingType.CATTLE_PIERCING_NOSE_BOVINE_RING));
specials.add(AbstractClothingType.generateClothing(ClothingType.CATTLE_NECK_COWBELL_COLLAR));
specials.add(AbstractClothingType.generateClothing(ClothingType.CATTLE_PIERCING_EAR_TAGS));
specials.add(AbstractClothingType.generateClothing(ClothingType.MEGA_MILK));
specials.add(AbstractClothingType.generateClothing(ClothingType.NECK_BREEDER_COLLAR));
specials.add(AbstractClothingType.generateClothing(ClothingType.SCIENTIST_TORSO_OVER_LAB_COAT));
}
for (AbstractClothing c : commonFemaleClothing) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonFemaleUnderwear) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonFemaleOtherLingerie) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonFemaleAccessories) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonMaleClothing) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonMaleLingerie) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonMaleAccessories) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonAndrogynousClothing) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonAndrogynousLingerie) {
c.setEnchantmentKnown(true);
}
for (AbstractClothing c : commonAndrogynousAccessories) {
c.setEnchantmentKnown(true);
}
}
use of com.lilithsthrone.game.inventory.clothing.AbstractClothing in project liliths-throne-public by Innoxia.
the class Cell method resetInventory.
public void resetInventory(List<Rarity> rarityOfItemsToSave) {
if (rarityOfItemsToSave != null && !rarityOfItemsToSave.isEmpty()) {
List<AbstractItem> itemsToSave = new ArrayList<>();
for (AbstractItem item : this.inventory.getItemsInInventory()) {
if (rarityOfItemsToSave.contains(item.getRarity())) {
itemsToSave.add(item);
}
}
List<AbstractWeapon> weaponsToSave = new ArrayList<>();
for (AbstractWeapon weapon : this.inventory.getWeaponsInInventory()) {
if (rarityOfItemsToSave.contains(weapon.getRarity())) {
weaponsToSave.add(weapon);
}
}
List<AbstractClothing> clothingToSave = new ArrayList<>();
for (AbstractClothing clothing : this.inventory.getClothingInInventory()) {
if (rarityOfItemsToSave.contains(clothing.getRarity())) {
clothingToSave.add(clothing);
}
}
this.inventory = new CharacterInventory(0, 48);
for (AbstractItem item : itemsToSave) {
this.inventory.addItem(item);
}
for (AbstractWeapon weapon : weaponsToSave) {
this.inventory.addWeapon(weapon);
}
for (AbstractClothing clothing : clothingToSave) {
this.inventory.addClothing(clothing);
}
} else {
this.inventory = new CharacterInventory(0, 48);
}
}
use of com.lilithsthrone.game.inventory.clothing.AbstractClothing in project liliths-throne-public by Innoxia.
the class Game method endTurn.
public void endTurn(int turnTime, boolean advanceTime) {
// long tStart = System.nanoTime();
long startHour = getHour();
if (advanceTime) {
minutesPassed += turnTime;
updateResponses();
}
if (Main.game.getCurrentWeather() != Weather.SNOW && Main.game.getSeason() != Season.WINTER) {
Main.game.getDialogueFlags().values.remove(DialogueFlagValue.hasSnowedThisWinter);
for (NPC npc : Main.game.getReindeerOverseers()) {
if (npc.getLocation() != Main.game.getPlayer().getLocation()) {
npc.setLocation(WorldType.EMPTY, PlaceType.GENERIC_EMPTY_TILE, true);
}
}
}
// Slavery: TODO
int hoursPassed = (int) (getHour() - startHour);
int hourStartTo24 = (int) (startHour % 24);
for (int i = 1; i <= hoursPassed; i++) {
slaveryUtil.performHourlyUpdate(this.getDayNumber(startHour * 60 + i * 60), (hourStartTo24 + i) % 24);
}
// If the time has passed midnight on this turn:
boolean newDay = ((int) (minutesPassed / (60 * 24)) != (int) (((minutesPassed - turnTime) / (60 * 24))));
if (newDay) {
// TODO replace with methods in each GenericPlace:
AbstractClothing goggles = AbstractClothingType.generateClothing(ClothingType.SCIENTIST_EYES_SAFETY_GOGGLES, Colour.CLOTHING_BLACK, false);
if (!Main.game.getWorlds().get(WorldType.LILAYAS_HOUSE_GROUND_FLOOR).getCell(PlaceType.LILAYA_HOME_LAB).getInventory().hasClothing(goggles)) {
Main.game.getWorlds().get(WorldType.LILAYAS_HOUSE_GROUND_FLOOR).getCell(PlaceType.LILAYA_HOME_LAB).getInventory().addClothing(goggles);
}
pendingSlaveInStocksReset = true;
// Reindeer:
for (NPC npc : Main.game.getReindeerOverseers()) {
if (npc.getLocationPlace().getPlaceType() == PlaceType.DOMINION_STREET && !npc.getLocation().equals(Main.game.getPlayer().getLocation())) {
npc.moveToAdjacentMatchingCellType();
Main.game.getDialogueFlags().dailyReindeerReset(npc.getId());
}
}
}
if (pendingSlaveInStocksReset && Main.game.getPlayer().getLocationPlace().getPlaceType() != PlaceType.SLAVER_ALLEY_PUBLIC_STOCKS) {
for (NPC npc : Main.game.getCharactersPresent(Main.game.getWorlds().get(WorldType.SLAVER_ALLEY).getCell(PlaceType.SLAVER_ALLEY_PUBLIC_STOCKS))) {
if (npc instanceof SlaveInStocks) {
Main.game.banishNPC(npc);
}
}
for (int i = 0; i < 4; i++) {
SlaveInStocks slave = new SlaveInStocks(GenderPreference.getGenderFromUserPreferences());
if (Math.random() > 0.5f) {
Main.game.getGenericFemaleNPC().addSlave(slave);
} else {
Main.game.getGenericMaleNPC().addSlave(slave);
}
try {
Main.game.addNPC(slave, false);
} catch (Exception e) {
e.printStackTrace();
}
}
pendingSlaveInStocksReset = false;
}
handleAtmosphericConditions(turnTime);
// Apply status effects and update all NPCs:
isInNPCUpdateLoop = true;
for (NPC npc : NPCMap.values()) {
// Remove Dominion attackers if they aren't in alleyways: TODO this is because storm attackers need to be removed after a storm
if (npc.getLocationPlace().getPlaceType() != PlaceType.DOMINION_BACK_ALLEYS && npc.getWorldLocation() == WorldType.DOMINION && npc instanceof DominionAlleywayAttacker && !Main.game.getPlayer().getLocation().equals(npc.getLocation())) {
banishNPC(npc);
}
// Non-slave NPCs clean clothes:
if (!npc.isSlave() && !Main.game.getPlayer().getLocation().equals(npc.getLocation())) {
npc.cleanAllClothing();
npc.cleanAllDirtySlots();
}
// Set NPC resource values:
if (!Main.game.isInCombat() && !Main.game.isInSex()) {
if (!Main.game.getPlayer().getLocation().equals(npc.getLocation())) {
npc.setHealthPercentage(1);
npc.setManaPercentage(1);
// npc.setLust(npc.getRestingLust());
}
npc.alignLustToRestingLust(turnTime * 10);
}
npc.calculateStatusEffects(turnTime);
if ((npc.isPendingClothingDressing() || (!npc.isSlave() && !npc.isUnique() && (npc.hasStatusEffect(StatusEffect.EXPOSED) || npc.hasStatusEffect(StatusEffect.EXPOSED_BREASTS) || npc.hasStatusEffect(StatusEffect.EXPOSED_PLUS_BREASTS)))) && (Main.game.getCurrentDialogueNode().equals(Main.game.getPlayer().getLocationPlace().getDialogue(false)) || !(npc.getWorldLocation() == Main.game.getPlayer().getWorldLocation() && npc.getLocation().equals(Main.game.getPlayer().getLocation())))) {
npc.equipClothing(true, true);
npc.setPendingClothingDressing(false);
}
if (npc.isPendingTransformationToGenderIdentity()) {
npc.setBody(npc.getGenderIdentity(), RacialBody.valueOfRace(npc.getRace()), npc.getRaceStage());
CharacterUtils.randomiseBody(npc);
npc.setPendingTransformationToGenderIdentity(false);
}
// Prostitutes stay on promiscuity pills to avoid pregnancies, and, if the NPC is male, to avoid knocking up their clients
if ((!npc.isPregnant() && !npc.isSlave() && npc.getHistory() == History.PROSTITUTE && !npc.hasStatusEffect(StatusEffect.PROMISCUITY_PILL) && !npc.getLocation().equals(Main.game.getPlayer().getLocation())) || (npc.isSlave() && npc.getSlaveJobSettings().contains(SlaveJobSetting.SEX_PROMISCUITY_PILLS))) {
npc.useItem(AbstractItemType.generateItem(ItemType.PROMISCUITY_PILL), npc, false);
}
if (npc.isSlave() && npc.getSlaveJobSettings().contains(SlaveJobSetting.SEX_VIXENS_VIRILITY)) {
npc.useItem(AbstractItemType.generateItem(ItemType.VIXENS_VIRILITY), npc, false);
}
if (npc.hasStatusEffect(StatusEffect.PREGNANT_3) && (minutesPassed - npc.getTimeProgressedToFinalPregnancyStage()) > (12 * 60)) {
if (npc instanceof Lilaya) {
if (!Main.game.getDialogueFlags().values.contains(DialogueFlagValue.reactedToPregnancyLilaya)) {
// Lilaya will only end pregnancy after you've seen it.
npc.endPregnancy(true);
}
} else {
npc.endPregnancy(true);
if (npc instanceof Kate) {
Main.game.getDialogueFlags().values.remove(DialogueFlagValue.reactedToKatePregnancy);
}
}
}
if (npc.getLocation().equals(Main.game.getPlayer().getLocation()) && npc.getWorldLocation() == Main.game.getPlayer().getWorldLocation()) {
for (CoverableArea ca : CoverableArea.values()) {
if (npc.isCoverableAreaExposed(ca) && ca != CoverableArea.MOUTH) {
npc.getPlayerKnowsAreas().add(ca);
}
}
}
if (newDay) {
npc.dailyReset();
}
}
isInNPCUpdateLoop = false;
for (NPC npc : npcsToRemove) {
NPCMap.remove(npc.getId());
}
for (NPC npc : npcsToAdd) {
NPCMap.put(npc.getId(), npc);
}
npcsToRemove.clear();
npcsToAdd.clear();
// If not in combat:
if (!isInCombat()) {
// Regenerate health and stamina over time:
if (!isInSex() && !currentDialogueNode.isRegenerationDisabled()) {
if (Main.game.getPlayer().getHealthPercentage() < 1) {
Main.game.getPlayer().incrementHealth(turnTime * 0.1f);
}
if (Main.game.getPlayer().getManaPercentage() < 1) {
Main.game.getPlayer().incrementMana(turnTime * 0.1f);
}
Main.game.getPlayer().alignLustToRestingLust(turnTime);
}
}
if (Main.game.getCurrentDialogueNode() != MiscDialogue.STATUS_EFFECTS) {
Main.game.getPlayer().calculateStatusEffects(turnTime);
}
RenderingEngine.ENGINE.renderButtons();
Main.mainController.updateUI();
Main.mainController.getTooltip().hide();
if (!Main.game.getPlayer().getStatusEffectDescriptions().isEmpty() && Main.game.getCurrentDialogueNode() != MiscDialogue.STATUS_EFFECTS) {
if (Main.game.getCurrentDialogueNode().getMapDisplay() == MapDisplay.NORMAL) {
Main.game.saveDialogueNode();
}
Main.game.setContent(new Response("", "", MiscDialogue.STATUS_EFFECTS) {
@Override
public void effects() {
if (!Main.game.getPlayer().hasQuest(QuestLine.SIDE_ENCHANTMENT_DISCOVERY) && Main.game.getPlayer().hasNonArcaneEssences()) {
Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().startQuest(QuestLine.SIDE_ENCHANTMENT_DISCOVERY));
}
if (!Main.game.getPlayer().hasQuest(QuestLine.SIDE_FIRST_TIME_PREGNANCY) && Main.game.getPlayer().isVisiblyPregnant()) {
Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().startQuest(QuestLine.SIDE_FIRST_TIME_PREGNANCY));
}
}
});
Main.game.getPlayer().getStatusEffectDescriptions().clear();
}
// System.out.println((System.nanoTime()-tStart)/1000000000d+"s");
}
Aggregations