use of com.lilithsthrone.game.dialogue.responses.Response in project liliths-throne-public by Innoxia.
the class Game method initNewGame.
public void initNewGame(DialogueNodeOld startingDialogueNode) {
// Set up NPCs:
try {
NPCMap.clear();
addNPC(new GenericMaleNPC(), false);
addNPC(new GenericFemaleNPC(), false);
addNPC(new GenericAndrogynousNPC(), false);
addNPC(new PrologueMale(), false);
addNPC(new PrologueFemale(), false);
addNPC(new TestNPC(), false);
// Story:
Lilaya lilaya = new Lilaya();
addNPC(lilaya, false);
lilaya.setAffection(Main.game.getPlayer(), AffectionLevel.POSITIVE_ONE_FRIENDLY.getMedianValue());
Rose rose = new Rose();
addNPC(rose, false);
rose.setAffection(Main.game.getPlayer(), AffectionLevel.POSITIVE_ONE_FRIENDLY.getMedianValue());
lilaya.addSlave(rose);
rose.setObedience(ObedienceLevel.POSITIVE_FIVE_SUBSERVIENT.getMedianValue());
lilaya.setAffection(rose, AffectionLevel.POSITIVE_FOUR_LOVE.getMedianValue());
rose.setAffection(lilaya, AffectionLevel.POSITIVE_FOUR_LOVE.getMedianValue());
Brax brax = new Brax();
addNPC(brax, false);
CandiReceptionist candiReceptionist = new CandiReceptionist();
addNPC(candiReceptionist, false);
brax.setAffection(candiReceptionist, AffectionLevel.POSITIVE_TWO_LIKE.getMedianValue());
candiReceptionist.setAffection(brax, AffectionLevel.POSITIVE_TWO_LIKE.getMedianValue());
// Shopping Promenade:
addNPC(new Ralph(), false);
addNPC(new Nyan(), false);
addNPC(new Vicky(), false);
addNPC(new Pix(), false);
addNPC(new Kate(), false);
// Harpy nests:
Scarlett scarlett = new Scarlett();
addNPC(scarlett, false);
Alexa alexa = new Alexa();
addNPC(alexa, false);
alexa.setAffection(scarlett, AffectionLevel.NEGATIVE_FOUR_HATE.getMedianValue());
scarlett.setAffection(alexa, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
scarlett.setAffection(Main.game.getPlayer(), AffectionLevel.NEGATIVE_TWO_DISLIKE.getMedianValue());
HarpyBimbo harpyBimbo = new HarpyBimbo();
addNPC(harpyBimbo, false);
HarpyBimboCompanion harpyBimboCompanion = new HarpyBimboCompanion();
addNPC(harpyBimboCompanion, false);
harpyBimbo.setAffection(harpyBimboCompanion, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
harpyBimboCompanion.setAffection(harpyBimbo, AffectionLevel.POSITIVE_FIVE_WORSHIP.getMedianValue());
HarpyDominant harpyDominant = new HarpyDominant();
addNPC(harpyDominant, false);
HarpyDominantCompanion harpyDominantCompanion = new HarpyDominantCompanion();
addNPC(harpyDominantCompanion, false);
harpyDominant.setAffection(harpyDominantCompanion, AffectionLevel.POSITIVE_ONE_FRIENDLY.getMedianValue());
harpyDominantCompanion.setAffection(harpyDominant, AffectionLevel.POSITIVE_FIVE_WORSHIP.getMedianValue());
HarpyNympho harpyNympho = new HarpyNympho();
addNPC(harpyNympho, false);
HarpyNymphoCompanion harpyNymphoCompanion = new HarpyNymphoCompanion();
addNPC(harpyNymphoCompanion, false);
harpyNympho.setAffection(harpyNymphoCompanion, AffectionLevel.POSITIVE_FOUR_LOVE.getMedianValue());
harpyNymphoCompanion.setAffection(harpyNympho, AffectionLevel.POSITIVE_FIVE_WORSHIP.getMedianValue());
addNPC(new Pazu(), false);
addNPC(new Finch(), false);
// Zaranix:
Zaranix zaranix = new Zaranix();
addNPC(zaranix, false);
ZaranixMaidKatherine katherine = new ZaranixMaidKatherine();
addNPC(katherine, false);
ZaranixMaidKelly kelly = new ZaranixMaidKelly();
addNPC(kelly, false);
Amber amber = new Amber();
addNPC(amber, false);
zaranix.setAffection(katherine, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
zaranix.setAffection(kelly, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
zaranix.setAffection(amber, AffectionLevel.POSITIVE_FOUR_LOVE.getMedianValue());
amber.setAffection(zaranix, AffectionLevel.POSITIVE_FOUR_LOVE.getMedianValue());
amber.setAffection(kelly, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
amber.setAffection(katherine, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
kelly.setAffection(zaranix, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
kelly.setAffection(katherine, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
kelly.setAffection(amber, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
katherine.setAffection(zaranix, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
katherine.setAffection(kelly, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
katherine.setAffection(amber, AffectionLevel.POSITIVE_THREE_CARING.getMedianValue());
addNPC(new Arthur(), false);
addNPC(new Ashley(), false);
addNPC(new SupplierLeader(), false);
addNPC(new SupplierPartner(), false);
} catch (Exception e) {
e.printStackTrace();
}
// This is due to the fact that on new world creation, the player is placed at coordinates (0, 0), which reveals the three squares at the bottom left corner of the map:
Main.game.getActiveWorld().getCell(0, 0).setDiscovered(false);
Main.game.getActiveWorld().getCell(0, 1).setDiscovered(false);
Main.game.getActiveWorld().getCell(1, 0).setDiscovered(false);
started = true;
setContent(new Response(startingDialogueNode.getLabel(), startingDialogueNode.getDescription(), startingDialogueNode));
}
use of com.lilithsthrone.game.dialogue.responses.Response in project liliths-throne-public by Innoxia.
the class SlaveryManagementDialogue method getCosmeticsResponse.
private static Response getCosmeticsResponse(int responseTab, int index) {
if (index == 1) {
if (BodyChanging.getTarget().getBodyMaterial() == BodyMaterial.SLIME) {
return new Response("Makeup", UtilText.parse(BodyChanging.getTarget(), "Kate is unable to apply any makeup to [npc.name]'s slimy body!"), null);
} else {
return new Response("Makeup", "Kate offers a wide range of different cosmetic services, and several pages of the brochure are devoted to images displaying different styles and colours of lipstick, nail polish, and other forms of makeup.", SLAVE_MANAGEMENT_COSMETICS_MAKEUP);
}
} else if (index == 2) {
return new Response("Hair", "There's a double-page spread of all the different dyes, styles, and lengths of hair that Kate's able to work with.", SLAVE_MANAGEMENT_COSMETICS_HAIR);
} else if (index == 3) {
return new Response("Piercings", "Kate offers a wide range of different piercings.", SLAVE_MANAGEMENT_COSMETICS_PIERCINGS);
} else if (index == 4) {
return new Response("Eyes", "There's a special page near the front of the brochure, advertising Kate's ability to recolour a person's eyes." + " Just like skin recolourings, this is quite demanding on her aura, and is therefore very expensive.", SLAVE_MANAGEMENT_COSMETICS_EYES);
} else if (index == 5) {
return new Response("Coverings", "There's a special page in the middle of the brochure, advertising Kate's special ability to harness the arcane in order to recolour a person's skin or fur." + " Apparently, this is quite demanding on her aura, and is therefore very expensive.", SLAVE_MANAGEMENT_COSMETICS_COVERINGS) {
@Override
public void effects() {
CoveringsNamesMap = new LinkedHashMap<>();
if (BodyChanging.getTarget().getBodyMaterial() == BodyMaterial.SLIME) {
CoveringsNamesMap.put(BodyCoveringType.SLIME, Util.newArrayListOfValues(new ListValue<>("SLIME")));
} else {
for (BodyPartInterface bp : BodyChanging.getTarget().getAllBodyParts()) {
if (bp.getType().getBodyCoveringType(BodyChanging.getTarget()) != null && bp.getType().getBodyCoveringType(BodyChanging.getTarget()).getRace() != null && !(bp instanceof Hair) && !(bp instanceof Eye)) {
String name = bp.getName(BodyChanging.getTarget());
if (bp instanceof Skin) {
name = "torso";
} else if (bp instanceof Vagina) {
name = "vagina";
}
if (CoveringsNamesMap.containsKey(bp.getType().getBodyCoveringType(BodyChanging.getTarget()))) {
CoveringsNamesMap.get(bp.getType().getBodyCoveringType(BodyChanging.getTarget())).add(name);
} else {
CoveringsNamesMap.put(bp.getType().getBodyCoveringType(BodyChanging.getTarget()), Util.newArrayListOfValues(new ListValue<>(name)));
}
}
}
CoveringsNamesMap.put(BodyCoveringType.ANUS, Util.newArrayListOfValues(new ListValue<>("anus")));
CoveringsNamesMap.put(BodyCoveringType.MOUTH, Util.newArrayListOfValues(new ListValue<>("mouth")));
CoveringsNamesMap.put(BodyCoveringType.NIPPLES, Util.newArrayListOfValues(new ListValue<>("nipples")));
CoveringsNamesMap.put(BodyCoveringType.TONGUE, Util.newArrayListOfValues(new ListValue<>("tongue")));
}
}
};
} else if (index == 6) {
return new Response("Other", "Kate can offer other miscellaneous services, such as anal bleaching.", SLAVE_MANAGEMENT_COSMETICS_OTHER);
} else if (index == 7) {
return new Response("Tattoos", "Most of the brochure is taken up with drawings and photographs displaying Kate's considerable artistic talents." + " She's even able to apply arcane-enchanted tattoos, but they look to be very expensive...</br>" + "<b>Will be done as soon as possible!</b>", null);
} else if (index == 0) {
return new Response("Back", "Return to the slave management screen.", SLAVE_MANAGEMENT) {
@Override
public DialogueNodeOld getNextDialogue() {
return SlaveryManagementDialogue.getSlaveryManagementDialogue(Main.game.getDialogueFlags().getSlaveTrader());
}
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(null);
}
};
} else {
return null;
}
}
use of com.lilithsthrone.game.dialogue.responses.Response in project liliths-throne-public by Innoxia.
the class SlaveryManagementDialogue method getSlaveryResponse.
private static Response getSlaveryResponse(int index) {
if (index == 1) {
return new Response("Slavery Overview", "View the slavery overview screen.", SLAVERY_OVERVIEW) {
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(null);
}
};
} else if (index == 2) {
return new Response("Slave List", "Enter the slave management screen.", SLAVE_MANAGEMENT) {
@Override
public DialogueNodeOld getNextDialogue() {
return SlaveryManagementDialogue.getSlaveryManagementDialogue(Main.game.getDialogueFlags().getSlaveTrader());
}
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(null);
}
};
} else if (index == 3) {
return new Response("Room List", "View the room management screen.", ROOM_MANAGEMENT) {
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(null);
}
};
} else if (index == 5) {
if (Main.game.getSlaveryUtil().getGeneratedBalance() == 0) {
return new Response("Collect: " + UtilText.formatAsMoneyUncoloured(Main.game.getSlaveryUtil().getGeneratedBalance(), "span"), "Your current balance is 0...", null);
} else if (Main.game.getSlaveryUtil().getGeneratedBalance() > 0) {
return new Response("Collect: " + UtilText.formatAsMoney(Main.game.getSlaveryUtil().getGeneratedBalance(), "span"), "Collect the money that you've earned through your slaves' activities.", SLAVERY_OVERVIEW) {
@Override
public DialogueNodeOld getNextDialogue() {
return Main.game.getCurrentDialogueNode();
}
@Override
public void effects() {
Main.game.getSlaveryUtil().payOutBalance();
}
};
} else {
if (Main.game.getPlayer().getMoney() < Math.abs(Main.game.getSlaveryUtil().getGeneratedBalance())) {
return new Response("Pay: " + UtilText.formatAsMoneyUncoloured(Math.abs(Main.game.getSlaveryUtil().getGeneratedBalance()), "span"), "You don't have enough money to pay off the accumulated debt from the upkeep of your slaves and rooms.", null);
}
return new Response("Pay: " + UtilText.formatAsMoney(Math.abs(Main.game.getSlaveryUtil().getGeneratedBalance()), "span", Colour.GENERIC_BAD), "Pay off the accumulated debt from the upkeep of your slaves and rooms.", SLAVERY_OVERVIEW) {
@Override
public DialogueNodeOld getNextDialogue() {
return Main.game.getCurrentDialogueNode();
}
@Override
public void effects() {
Main.game.getSlaveryUtil().payOutBalance();
}
};
}
} else if (index == 6) {
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() == null) {
return new Response("Inspect", "No slave has been selected", null);
}
return new Response("Inspect", "Enter the slave management screen.", SLAVE_MANAGEMENT_INSPECT);
} else if (index == 7) {
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() == null) {
return new Response("Job", "No slave has been selected.", null);
} else if (!Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getOwner().isPlayer()) {
return new Response("Job", "You cannot manage the job of a slave you do not own!", null);
}
return new Response("Job", "Set this slave's job and work hours.", SLAVE_MANAGEMENT_JOBS);
} else if (index == 8) {
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() == null) {
return new Response("Permissions", "No slave has been selected", null);
} else if (!Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getOwner().isPlayer()) {
return new Response("Permissions", "You cannot manage the permissions of a slave you do not own!", null);
}
return new Response("Permissions", "Set this slave's permissions.", SLAVE_MANAGEMENT_PERMISSIONS);
} else if (index == 9) {
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() == null) {
return new Response("Inventory", "No slave has been selected", null);
} else if (!Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getOwner().isPlayer()) {
return new Response("Job", "You cannot manage the inventory of a slave you do not own!", null);
}
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getOwner().isPlayer()) {
return new ResponseEffectsOnly("Inventory", UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(), "Manage [npc.name]'s inventory.")) {
@Override
public void effects() {
Main.mainController.openInventory(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(), InventoryInteraction.FULL_MANAGEMENT);
}
};
} else {
return new Response("Inventory", UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(), "You can't manage [npc.name]'s inventory, as you don't own [npc.herHim]!"), null);
}
} else if (index == 0) {
return new Response("Back", "Exit the room upgrades screen.", SLAVERY_OVERVIEW) {
@Override
public DialogueNodeOld getNextDialogue() {
return Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getPlace().getDialogue(true);
}
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(null);
Main.game.getDialogueFlags().setSlaveTrader(null);
}
};
} else {
return null;
}
}
use of com.lilithsthrone.game.dialogue.responses.Response in project liliths-throne-public by Innoxia.
the class PixsPlayground method getResponseGym.
private static Response getResponseGym(int index) {
if (index == 1) {
if (Main.game.getPlayer().getHealthPercentage() < 0.4f) {
return new Response("Cardio", "You are too tired to do any more exercise!", null);
} else {
return new Response("Cardio", "Use the running and cycling machines to burn off some of your body size.", GYM_CARDIO) {
@Override
public void effects() {
Main.game.getPlayer().incrementHealth(-Main.game.getPlayer().getAttributeValue(Attribute.HEALTH_MAXIMUM) * 0.4f);
Main.game.getTextEndStringBuilder().append(// Main.game.getPlayer().incrementAttribute(Attribute.MAJOR_PHYSIQUE, 0.25f)+
"<p style='text-align:center'>[style.boldBad(-5)] <b style='color:" + Colour.BODY_SIZE_THREE.toWebHexString() + ";'>Body Size</b></p>" + Main.game.getPlayer().incrementBodySize(-5));
}
};
}
} else if (index == 2) {
if (Main.game.getPlayer().getHealthPercentage() < 0.4f) {
return new Response("Weights", "You are too tired to do any more exercise!", null);
} else {
return new Response("Weights", "Use the free weights and exercise machines to build up your strength.", GYM_WEIGHTS) {
@Override
public void effects() {
Main.game.getPlayer().incrementHealth(-Main.game.getPlayer().getAttributeValue(Attribute.HEALTH_MAXIMUM) * 0.4f);
Main.game.getTextEndStringBuilder().append("<p style='text-align:center'>[style.boldGood(+5)] <b style='color:" + Colour.MUSCLE_THREE.toWebHexString() + ";'>Muscle Definition</b></p>" + Main.game.getPlayer().incrementMuscle(5));
}
};
}
} else if (index == 3) {
if (!Main.game.getDialogueFlags().values.contains(DialogueFlagValue.gymIsMember)) {
return new Response("Pix", "Only lifetime members can get personal training from Pix.", null);
} else if (Main.game.getPlayer().getHealthPercentage() < 0.8f) {
return new Response("Pix", "You are too tired to do Pix's exhausting workout routine!", null);
} else {
return new Response("Pix", "Pix is hovering close by, bouncing up and down on the spot while glancing your way. She obviously wants you to ask her for a personal training session. Call her over and grant her wish.", GYM_PIX_TRAINING) {
@Override
public void effects() {
Main.game.getPlayer().incrementHealth(-Main.game.getPlayer().getAttributeValue(Attribute.HEALTH_MAXIMUM) * 0.1f);
Main.game.getTextEndStringBuilder().append("<p style='text-align:center'>[style.boldGood(+4)] <b style='color:" + Colour.MUSCLE_THREE.toWebHexString() + ";'>Muscle Definition</b></p>" + Main.game.getPlayer().incrementMuscle(4));
}
};
}
} else if (index == 0) {
return new Response("Leave", "Decide to leave the gym.", GYM_EXTERIOR);
} else
return null;
}
use of com.lilithsthrone.game.dialogue.responses.Response in project liliths-throne-public by Innoxia.
the class SexActionInterface method convertToNullResponse.
public default Response convertToNullResponse() {
if (!getActionType().isPlayerAction()) {
return null;
}
if (getActionType() == SexActionType.PLAYER_POSITIONING || getActionType() == SexActionType.PARTNER_POSITIONING) {
return new Response(getActionTitle(), getActionDescription(), null, getFetishes(Main.game.getPlayer()), getCorruptionNeeded(), null, null, null, getPenetratingCharacter(), getAssociatedPenetrationType(), getOrificeCharacter(), getAssociatedOrificeType()) {
@Override
public boolean isSexPenetrationHighlight() {
return getActionType() == SexActionType.PLAYER_PENETRATION || getActionType() == SexActionType.PLAYER_STOP_PENETRATION;
}
@Override
public boolean isSexPositioningHighlight() {
return getActionType() == SexActionType.PLAYER_POSITIONING || SexActionInterface.this.equals(GenericActions.PLAYER_STOP_SEX);
}
@Override
public SexPace getSexPace() {
return SexActionInterface.this.getSexPace(Main.game.getPlayer());
}
@Override
public SexActionType getSexActionType() {
return getActionType();
}
@Override
public boolean hasRequirements() {
return true;
}
@Override
public boolean isAvailable() {
return false;
}
@Override
public boolean isAbleToBypass() {
return false;
}
@Override
public String getTooltipRequiredList() {
StringBuilder SB = new StringBuilder();
if (fetishesRequired != null) {
for (Fetish f : fetishesRequired) {
if (Main.game.getPlayer().hasFetish(f)) {
SB.append("</br>" + "<span style='color:" + Colour.GENERIC_SEX.toWebHexString() + ";'>Associated Fetish</span>" + " (<span style='color:" + Colour.GENERIC_GOOD.toWebHexString() + ";'>owned</span>): " + Util.capitaliseSentence(f.getName(Main.game.getPlayer())));
} else {
SB.append("</br>" + "<span style='color:" + Colour.GENERIC_SEX.toWebHexString() + ";'>Associated Fetish</span>" + " (<span style='color:" + Colour.GENERIC_BAD.toWebHexString() + ";'>not owned</span>): " + Util.capitaliseSentence(f.getName(Main.game.getPlayer())));
}
}
}
if (corruptionBypass != null) {
if (isCorruptionWithinRange()) {
SB.append("</br>" + "<span style='color:" + Colour.GENERIC_ARCANE.toWebHexString() + ";'>Associated Corruption</span>" + " (<span style='color:" + Colour.GENERIC_GOOD.toWebHexString() + ";'>within range</span>): " + Util.capitaliseSentence(corruptionBypass.getName()));
} else {
SB.append("</br>" + "<span style='color:" + Colour.GENERIC_ARCANE.toWebHexString() + ";'>Associated Corruption</span>" + " (<span style='color:" + Colour.GENERIC_BAD.toWebHexString() + ";'>out of range</span>): " + Util.capitaliseSentence(corruptionBypass.getName()));
}
}
SB.append("</br>" + "<span style='color:" + Colour.GENERIC_BAD.toWebHexString() + ";'>Requires no penetration</span>");
return SB.toString();
}
@Override
public int lineHeight() {
return super.lineHeight() + 1;
}
};
}
return new Response(getActionTitle(), getActionDescription(), null, getFetishes(Main.game.getPlayer()), getCorruptionNeeded(), null, null, null, getPenetratingCharacter(), getAssociatedPenetrationType(), getOrificeCharacter(), getAssociatedOrificeType()) {
@Override
public boolean isSexPenetrationHighlight() {
return getActionType() == SexActionType.PLAYER_PENETRATION || getActionType() == SexActionType.PLAYER_STOP_PENETRATION;
}
@Override
public boolean isSexPositioningHighlight() {
return getActionType() == SexActionType.PLAYER_POSITIONING || SexActionInterface.this.equals(GenericActions.PLAYER_STOP_SEX);
}
@Override
public SexPace getSexPace() {
return SexActionInterface.this.getSexPace(Main.game.getPlayer());
}
@Override
public SexActionType getSexActionType() {
return getActionType();
}
};
}
Aggregations