diff --git a/SanityCheck.jar b/SanityCheck.jar new file mode 100644 index 0000000000000000000000000000000000000000..bebdf1da3e6277f966e8fff78ea96d884fe27b0b Binary files /dev/null and b/SanityCheck.jar differ diff --git a/devTools/javaSanityCheck/excluded b/devTools/javaSanityCheck/excluded new file mode 100644 index 0000000000000000000000000000000000000000..28ff834dcbab00ca86653880aa605a6a64163fd2 --- /dev/null +++ b/devTools/javaSanityCheck/excluded @@ -0,0 +1,16 @@ +#Add files or folders to be excluded. +#empty lines will match on ALL paths, so if you need one do it like this: +# +src/art/ +src/gui/svgFilters.tw +# +#excluded to reduce false positives until better solution: +src/pregmod/basenationalitiesControls.tw +src/pregmod/editGenetics.tw +src/pregmod/widgets/bodySwapReaction.tw +src/uncategorized/costsBudget.tw +src/uncategorized/initRules.tw +src/uncategorized/slaveAssignmentsReport.tw +src/uncategorized/storyCaption.tw +src/cheats/ +src/pregmod/customizeSlaveTrade.tw diff --git a/devTools/javaSanityCheck/htmlTags b/devTools/javaSanityCheck/htmlTags new file mode 100644 index 0000000000000000000000000000000000000000..751b084ff5822f4162e3f79ea622b91f60c5472b --- /dev/null +++ b/devTools/javaSanityCheck/htmlTags @@ -0,0 +1,45 @@ +#Allowed HTML tags +#Effectively everything that is allowed in a these statements like this: +#<tag> or <tag ???> +#when ;1 is specified it expects a matching closing tag like this: </tag> +#Do not add Twine Tags here. +#Characters outside of ASCII scope are not supported. +# +#included to reduce false positives until better solution +!-- +http://www.gnu.org/licenses/ +#html tags +a;1 +b;1 +blockquote;1 +body;1 +br;0 +button;1 +caption;1 +center;1 +dd;1 +div;1 +dl;1 +dt;1 +h1;1 +h2;1 +h3;1 +h4;1 +hr;0 +html;1 +i;1 +img;1 +input;0 +li;1 +option;1 +script;1 +select;1 +span;1 +strong;1 +style;1 +table;1 +td;1 +th;1 +tr;1 +tt;1 +ul;1 diff --git a/devTools/javaSanityCheck/src/DisallowedTagException.java b/devTools/javaSanityCheck/src/DisallowedTagException.java new file mode 100644 index 0000000000000000000000000000000000000000..f4cc75e736b162192a5f18bbc55a10edb21eaa38 --- /dev/null +++ b/devTools/javaSanityCheck/src/DisallowedTagException.java @@ -0,0 +1,8 @@ +package org.arkerthan.sanityCheck; + +public class DisallowedTagException extends RuntimeException { + + public DisallowedTagException(String tag) { + super(tag); + } +} diff --git a/devTools/javaSanityCheck/src/Main.java b/devTools/javaSanityCheck/src/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..eea3a4ff611203b0025cd29ce1fe431447f80e1c --- /dev/null +++ b/devTools/javaSanityCheck/src/Main.java @@ -0,0 +1,319 @@ +package org.arkerthan.sanityCheck; + +import org.arkerthan.sanityCheck.element.AngleBracketElement; +import org.arkerthan.sanityCheck.element.CommentElement; +import org.arkerthan.sanityCheck.element.Element; +import org.arkerthan.sanityCheck.element.KnownElement; + +import java.io.*; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; + +public class Main { + + public static TagSearchTree<Tag> htmlTags, twineTags; + private static String currentFile; + private static int currentLine, currentPosition; + private static Stack<Element> stack; + private static List<SyntaxError> errors = new LinkedList<>(); + private static String[] excluded; + + public static void main(String[] args) { + //setup + setupExclude(); + setupHtmlTags(); + setupTwineTags(); + Path workingDir = Paths.get("").toAbsolutePath(); + + //actual sanityCheck + runSanityCheckInDirectory(workingDir, new File("src/")); + + //handle errors + for (SyntaxError e : + errors) { + System.out.println(e.getError()); + } + } + + + /** + * Goes through the whole directory including subdirectories and runs + * sanityCheck() on all .tw files + * + * @param dir to be checked + */ + private static void runSanityCheckInDirectory(Path workingDir, File dir) { + //subdirectories are checked recursively + + try { + for (File file : dir.listFiles()) { + if (file.isFile()) { //run sanityCheck if file is a .tw file + String path = file.getAbsolutePath(); + if (path.endsWith(".tw")) { + sanityCheck(workingDir.relativize(file.toPath())); + } + } else if (file.isDirectory()) { + runSanityCheckInDirectory(workingDir, file.getAbsoluteFile()); + } + } + } catch (NullPointerException e) { + e.printStackTrace(); + System.err.println("Couldn't find directory " + currentFile); + System.exit(-1); + } + } + + /** + * Runs the sanity check for one file. Does not run if file is excluded. + * + * @param path file to be checked + */ + private static void sanityCheck(Path path) { + File file = path.toFile(); + + // replace this with a known encoding if possible + Charset encoding = Charset.defaultCharset(); + + if (!excluded(file.getPath())) { + try { + currentFile = file.getPath(); + currentLine = 1; + stack = new Stack<>(); + + //actually opening and reading the file + try (InputStream in = new FileInputStream(file); + Reader reader = new InputStreamReader(in, encoding); + // buffer for efficiency + Reader buffer = new BufferedReader(reader)) { + handleCharacters(buffer); + } + } catch (IOException e) { + System.err.println("Couldn't read " + file); + } + } + } + + /** + * sets up the alphabetical search tree for fast access of HTML tags later + */ + private static void setupHtmlTags() { + //load HTML tags into a list + List<Tag> TagsList = new LinkedList<>(); + try { + + Files.lines(new File("devTools/javaSanityCheck/htmlTags").toPath()).map(String::trim) + .filter(s -> !s.startsWith("#")) + .forEach(s -> TagsList.add(parseTag(s))); + } catch (IOException e) { + System.err.println("Couldn't read devTools/javaSanityCheck/htmlTags"); + } + + //turn List into alphabetical search tree + try { + htmlTags = new TagSearchTree(TagsList); + } catch (ArrayIndexOutOfBoundsException e) { + System.err.println("Illegal Character in devTools/javaSanityCheck/htmlTags"); + System.exit(-1); + } + } + + /** + * sets up the alphabetical search tree for fast access of twine tags later + */ + private static void setupTwineTags() { + //load twine tags into a list + List<Tag> TagsList = new LinkedList<>(); + try { + + Files.lines(new File("devTools/javaSanityCheck/twineTags").toPath()).map(String::trim) + .filter(s -> !s.startsWith("#")) + .forEach(s -> TagsList.add(parseTag(s))); + } catch (IOException e) { + System.err.println("Couldn't read devTools/javaSanityCheck/twineTags"); + } + + //turn List into alphabetical search tree + try { + twineTags = new TagSearchTree(TagsList); + } catch (ArrayIndexOutOfBoundsException e) { + System.err.println("Illegal Character in devTools/javaSanityCheck/twineTags"); + System.exit(-1); + } + } + + /** + * Turns a string into a Tag + * ";1" at the end of the String indicates that the tag needs to be closed later + * + * @param s tag as String + * @return tag as Tag + */ + private static Tag parseTag(String s) { + String[] st = s.split(";"); + if (st.length > 1 && st[1].equals("1")) { + return new Tag(st[0], false); + } + return new Tag(st[0], true); + } + + /** + * sets up the excluded array. + */ + private static void setupExclude() { + //load excluded files + List<String> excludedList = new ArrayList<>(); + try { + Files.lines(new File("devTools/javaSanityCheck/excluded").toPath()).map(String::trim) + .filter(s -> !s.startsWith("#")) + .forEach(excludedList::add); + } catch (IOException e) { + System.err.println("Couldn't read devTools/javaSanityCheck/excluded"); + } + + //turn excluded files into an array and change them to windows style if needed + if (isWindows()) { + excluded = new String[excludedList.size()]; + int i = 0; + for (String s : + excludedList) { + excluded[i++] = s.replaceAll("/", "\\\\"); + } + } else { + excluded = excludedList.toArray(new String[0]); + } + } + + /** + * @return whether OS is Windows or not + */ + private static boolean isWindows() { + return (System.getProperty("os.name").toLowerCase(Locale.ENGLISH).contains("windows")); + } + + /** + * checks if a file or directory is excluded from the sanity check + * + * @param s file/directory to be checked + * @return whether it is excluded or not + */ + private static boolean excluded(String s) { + for (String ex : + excluded) { + if (s.startsWith(ex)) return true; + } + return false; + } + + /** + * Reads the file character by character. + * + * @param reader reader that is read + * @throws IOException thrown if the file can't be read + */ + private static void handleCharacters(Reader reader) throws IOException { + int r; + while ((r = reader.read()) != -1) { + char c = (char) r; + handleCharacter(c); + } + } + + /** + * Handles a single character + * + * @param c next character + */ + private static void handleCharacter(char c) { + //updating position + currentPosition++; + if (c == '\n') { + currentLine++; + currentPosition = 1; + } + + //try applying to the innermost element + if (!stack.empty()) { + int change; + try { + change = stack.peek().handleChar(c); + } catch (SyntaxError e) { + change = e.getChange(); + addError(e); + } + + //change greater 0 means the innermost element did some work + if (change > 0) { + //2 means the Element is complete + if (change == 2) { + //remove the topmost element from stack since it is complete + stack.pop(); + return; + } + //3 means the Element is complete and part of a two tag system + if (change == 3) { + //remove the topmost element from stack since it is complete + KnownElement k = stack.pop().getKnownElement(); + /*if (k.isOpening()) { + stack.push(k); + } else */ + if (k.isClosing()) { + if (stack.empty()) { + addError(new SyntaxError("Closed tag " + k.getShortDescription() + " without having any open tags.", -2)); + } else if (stack.peek() instanceof KnownElement) { + KnownElement kFirst = (KnownElement) stack.pop(); + if (!kFirst.isMatchingElement(k)) { + addError(new SyntaxError("Opening tag " + kFirst.getShortDescription() + + " does not match closing tag " + k.getShortDescription() + ".", -2)); + } + //stack.pop(); + } else { + addError(new SyntaxError("Closing tag " + k.getShortDescription() + " inside " + + "another tag: " + stack.peek().getShortDescription(), -2, true)); + } + } + if (k.isOpening()) { + stack.push(k); + } + return; + } + if (change == 4) { + stack.pop(); + } else { + return; + } + } + } + + + //innermost element was uninterested, trying to find matching element + switch (c) { + //case '@': + // stack.push(new AtElement(currentLine, currentPosition)); + //break; + case '<': + stack.push(new AngleBracketElement(currentLine, currentPosition)); + break; + //case '>': + //addError(new SyntaxError("Dangling \">\", current innermost: " + (stack.empty() ? "null" : stack.peek().getShortDescription()), -2)); + //break; + case '/': + stack.push(new CommentElement(currentLine, currentPosition)); + break; + } + } + + /** + * add an error to the error list + * + * @param e new error + */ + private static void addError(SyntaxError e) { + e.setFile(currentFile); + e.setLine(currentLine); + e.setPosition(currentPosition); + errors.add(e); + } +} diff --git a/devTools/javaSanityCheck/src/SyntaxError.java b/devTools/javaSanityCheck/src/SyntaxError.java new file mode 100644 index 0000000000000000000000000000000000000000..150f2bd449b8c318b5a05884868a71538554ec67 --- /dev/null +++ b/devTools/javaSanityCheck/src/SyntaxError.java @@ -0,0 +1,40 @@ +package org.arkerthan.sanityCheck; + +public class SyntaxError extends Exception { + private String file; + private int line, position; + private String description; + private int change; //see Element for values; -2 means not thrown + private boolean warning = false; + + public SyntaxError(String description, int change) { + this.description = description; + this.change = change; + } + + public SyntaxError(String description, int change, boolean warning) { + this(description, change); + this.warning = warning; + } + + public void setFile(String file) { + this.file = file; + } + + public void setLine(int line) { + this.line = line; + } + + public void setPosition(int position) { + this.position = position; + } + + public String getError() { + String s = warning ? "Warning: " : "Error: "; + return s + file + ": " + line + ":" + position + " : "+ description; + } + + public int getChange() { + return change; + } +} diff --git a/devTools/javaSanityCheck/src/Tag.java b/devTools/javaSanityCheck/src/Tag.java new file mode 100644 index 0000000000000000000000000000000000000000..8a13ee4f7a178399db3eaf626b693e8a12ae71df --- /dev/null +++ b/devTools/javaSanityCheck/src/Tag.java @@ -0,0 +1,11 @@ +package org.arkerthan.sanityCheck; + +public class Tag { + public final String tag; + public final boolean single; + + public Tag(String tag, boolean single) { + this.tag = tag; + this.single = single; + } +} diff --git a/devTools/javaSanityCheck/src/TagSearchTree.java b/devTools/javaSanityCheck/src/TagSearchTree.java new file mode 100644 index 0000000000000000000000000000000000000000..dde49df879a346f124d15647cfeb821d0e0735fb --- /dev/null +++ b/devTools/javaSanityCheck/src/TagSearchTree.java @@ -0,0 +1,80 @@ +package org.arkerthan.sanityCheck; + +import java.util.List; + +/** + * Tag SearchTree stores Tags in an alphabetical search tree. + * Once created the search tree can't be changed anymore. + * + * @param <E> Tag class to be stored + */ +public class TagSearchTree<E extends Tag> { + private static final int SIZE = 128; + private final TagSearchTree<E>[] branches; + private E element = null; + private String path; + + /** + * creates a new empty TagSearchTree + */ + private TagSearchTree() { + branches = new TagSearchTree[SIZE]; + } + + /** + * Creates a new filled TagSearchTree + * + * @param list Tags to be inserted + */ + public TagSearchTree(List<E> list) { + this(); + for (E e : list) { + this.add(e, 0); + } + } + + /** + * adds a new Tag to the TagSearchTree + * + * @param e Tag to be stored + * @param index index of relevant char for adding in tag + */ + private void add(E e, int index) { + //set the path to here + path = e.tag.substring(0, index); + //checks if tag has to be stored here or further down + if (e.tag.length() == index) { + element = e; + } else { + //store tag in correct branch + char c = e.tag.charAt(index); + if (branches[c] == null) { + branches[c] = new TagSearchTree<>(); + } + branches[c].add(e, index + 1); + } + } + + /** + * @param c character of branch needed + * @return branch or null if branch doesn't exist + */ + public TagSearchTree<E> getBranch(char c) { + if (c >= SIZE) return null; + return branches[c]; + } + + /** + * @return stored Tag, null if empty + */ + public E getElement() { + return element; + } + + /** + * @return path inside full tree to get to this Branch + */ + public String getPath() { + return path; + } +} diff --git a/devTools/javaSanityCheck/src/UnknownStateException.java b/devTools/javaSanityCheck/src/UnknownStateException.java new file mode 100644 index 0000000000000000000000000000000000000000..dceb35bc3d5b57fa3d710e9e61d3ce427a3499c3 --- /dev/null +++ b/devTools/javaSanityCheck/src/UnknownStateException.java @@ -0,0 +1,8 @@ +package org.arkerthan.sanityCheck; + +public class UnknownStateException extends RuntimeException { + + public UnknownStateException(int state) { + super(String.valueOf(state)); + } +} diff --git a/devTools/javaSanityCheck/src/element/AngleBracketElement.java b/devTools/javaSanityCheck/src/element/AngleBracketElement.java new file mode 100644 index 0000000000000000000000000000000000000000..e4819ba37ea48e4924dc944827d651fa14e02ad1 --- /dev/null +++ b/devTools/javaSanityCheck/src/element/AngleBracketElement.java @@ -0,0 +1,360 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.*; + +import java.util.Arrays; +import java.util.List; + +public class AngleBracketElement extends Element { + private static final List<String> logicTags = Arrays.asList("if", "elseif", "else", "switch", "case", "default"); + private int state = 0; + /* + 0 - initial: < + TWINE + 1 - << + -1 - <</ + 2 - trying to complete twine tag: <<tag ???>> + -2 - trying to complete twine tag: <</tag>> + 3 - waiting for >> + -3 - expecting > from 3 + 4 - waiting for >> with KnownElement + -4 - expecting > from 4 + 5 - expecting >> + -5 - expecting > + 6 - expecting > with KnownElement opening; comparison? + -6 - expecting > with KnownElement closing + + HTML + -9 - </ + 10 - trying to complete HTML tag: <tag ???> + -10 - trying to complete HTML tag: </tag> + 11 - waiting for > + -11 - expecting > + 12 - waiting for > with KnownElement + */ + + private TagSearchTree<Tag> tree; + + public AngleBracketElement(int line, int pos) { + super(line, pos); + } + + @Override + public int handleChar(char c) throws SyntaxError { + switch (state) { + case 0: + switch (c) { + case '<': + state = 1; + return 1; + case '>': + throw new SyntaxError("Empty Statement?", 2); + case '/': + state = -9; + return 1; + case ' ':// assume comparison + case '=':// " + return 2; + case '3'://a heart: <3 + return 2; + default: + try { + state = 10; + tree = Main.htmlTags; + return handleOpeningHTML(c); + } catch (SyntaxError e) { + state = 1; + throw new SyntaxError("Opening \"<\" missing, found " + c + " [debug:initialCase]", 1); + } + } + case 1: + if (c == '<') { + throw new SyntaxError("Too many \"<\".", 1); + } else if (c == '>') { + state = 3; + throw new SyntaxError("Empty Statement?", 1); + } else if (c == '/') { + state = -1; + return 1; + } + state = 2; + tree = Main.twineTags; + return handleOpeningTwine(c); + case -1: + if (c == '>') { + throw new SyntaxError("Empty Statement?", 2, true); + } + state = -2; + tree = Main.twineTags; + return handleClosingTwine(c); + + case 2: + return handleOpeningTwine(c); + case -2: + return handleClosingTwine(c); + case 3: + if (c == '>') { + state = -3; + return 1; + } + break; + case -3: + if (c == '>') { + return 2; + } else if (c == ' ' || c == '=') { // assuming comparison + state = 3; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 2); + } + case 4: + if (c == '>') { + state = -4; + return 1; + } + break; + case -4: + if (c == '>') { + return 3; + } else if (c == ' ' || c == '=') { // assuming comparison + state = 4; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 2); + } + case 5: + if (c == '>') { + state = -5; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 2); + } + case -5: + if (c == '>') { + return 2; + } + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 2); + case 6: + if (c == '>') { + return 3; + } else if (c == ' ' || c == '=') { + state = 3; + return 1; + } else { + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 3); + } + case -6: + if (c == '>') { + return 3; + } + throw new SyntaxError("Closing \">\" missing, opened [" + line + ":" + pos + "]", 3); + + case -9: + if (c == '>') { + throw new SyntaxError("Empty Statement?", 2, true); + } + state = -10; + tree = Main.htmlTags; + return handleClosingHTML(c); + case 10: + return handleOpeningHTML(c); + case -10: + return handleClosingHTML(c); + case 11: + if (c == '>') + return 2; + if (c == '@') //@ inside HTML tags is allowed + return 1; + break; + case -11: + if (c == '>') + return 2; + throw new SyntaxError("Closing \">\" missing [2]", 2); + case 12: + if (c == '>') + return 3; + if (c == '@') //@ inside HTML tags is allowed + return 1; + break; + default: + throw new UnknownStateException(state); + } + return 0; + } + + private int handleOpeningHTML(char c) throws SyntaxError { + if (c == ' ') { + state = 11; + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag", 1); + } + if (!tree.getElement().single) { + k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); + state = 12; + return 1; + } + return 1; + } + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag", 2); + } + if (!tree.getElement().single) { + k = new KnownHtmlElement(line, pos, true, tree.getElement().tag); + return 3; + } + return 2; + } + + tree = tree.getBranch(c); + if (tree == null) { + state = 11; + throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); + } + + return 1; + } + + private int handleClosingHTML(char c) throws SyntaxError { + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown HTML tag", 2); + } + if (tree.getElement().single) { + throw new SyntaxError("Single HTML tag used as closing Tag: " + tree.getElement().tag, 2); + } + k = new KnownHtmlElement(line, pos, false, tree.getElement().tag); + return 3; + } + + tree = tree.getBranch(c); + if (tree == null) { + state = -11; + throw new SyntaxError("Unknown HTML tag or closing \">\" missing, found " + c, 1); + } + + return 1; + } + + + private int handleOpeningTwine(char c) throws SyntaxError { + if (c == ' ') { + state = 3; + if (tree.getElement() == null) { + //assuming not listed means widget until better solution + return 1; + //throw new SyntaxError("Unknown Twine tag or closing \">>\" missing, found " + tree.getPath(), 1); + } + if (!tree.getElement().single) { + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, false); + } else { + k = new KnownTwineElement(line, pos, true, tree.getElement().tag); + } + state = 4; + return 1; + } + return 1; + } + if (c == '>') { + state = -5; + if (tree.getElement() == null) { + //assuming not listed means widget until better solution + //throw new SyntaxError("Unknown Twine tag or closing \">>\" missing, found " + tree.getPath(), 1); + return 1; + } + if (!tree.getElement().single) { + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, false); + } else { + k = new KnownTwineElement(line, pos, true, tree.getElement().tag); + } + state = 6; + return 1; + } + return 2; + } + + tree = tree.getBranch(c); + if (tree == null) { + //assuming not listed means widget until better solution + state = 3; + //throw new SyntaxError("Unknown Twine tag or closing \">>\" missing, found " + c, 1); + } + + return 1; + } + + private int handleClosingTwine(char c) throws SyntaxError { + if (c == '>') { + if (tree.getElement() == null) { + throw new SyntaxError("Unknown Twine tag", 2); + } + if (tree.getElement().single) { + throw new SyntaxError("Single Twine tag used as closing Tag: " + tree.getElement().tag, 2); + } + if (logicTags.contains(tree.getElement().tag)) { + k = new KnownLogicElement(line, pos, tree.getElement().tag, true); + } else { + k = new KnownTwineElement(line, pos, false, tree.getElement().tag); + } + state = -6; + return 1; + } + + tree = tree.getBranch(c); + if (tree == null) { + state = 3; + throw new SyntaxError("Unknown Twine closing tag or closing \">>\" missing, found " + c, 1); + } + + return 1; + } + + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append('[').append(line).append(":").append(pos).append("] "); + switch (state) { + case 0: + builder.append("<"); + break; + case 1: + builder.append("<<"); + break; + case -1: + builder.append("<</"); + break; + case 2: + builder.append("<<").append(tree.getPath()); + break; + case -2: + builder.append("<</").append(tree.getPath()); + break; + case 3: + builder.append("<<??? ???"); + break; + case 4: + builder.append("<<?").append(tree.getPath()).append(" ???"); + break; + case -3: + builder.append("<<??? ???>"); + break; + case -4: + builder.append("<<?").append(tree.getPath()).append(" ???>"); + break; + case 5: + builder.append("<").append(tree.getPath()).append(" ???"); + break; + case -5: + builder.append("</").append(tree.getPath()); + break; + case 6: + builder.append("<").append(tree.getPath()).append(" ???"); + break; + default: + //throw new UnknownStateException(state); + } + return builder.toString(); + } +} diff --git a/devTools/javaSanityCheck/src/element/AtElement.java b/devTools/javaSanityCheck/src/element/AtElement.java new file mode 100644 index 0000000000000000000000000000000000000000..0dad04247c50f2a9a77bb9ce584ded8de0377ed2 --- /dev/null +++ b/devTools/javaSanityCheck/src/element/AtElement.java @@ -0,0 +1,105 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.SyntaxError; +import org.arkerthan.sanityCheck.UnknownStateException; + +public class AtElement extends Element { + private int state = 0; + // 0 = @ + // 1 = @@ + // 2 = @@. + // 3 = @@.a -- @@.ab -- @@.abc + // 4 = @@.abc;abc + // 5 = @@.abc;abc@ + + // example: @@.red;some text@@ + + public AtElement(int line, int pos) { + super(line, pos); + } + + @Override + public int handleChar(char c) throws SyntaxError { + switch (state) { + case 0: + state = 1; + if (c == '@') { + return 1; + } else { + if (c == '.') { + state = 2; + } + throw new SyntaxError("Opening \"@\" missing.", 1); + } + case 1: + if (c == '.') { + state = 2; + return 1; + } else { + state = 4; + throw new SyntaxError("\".\" missing, found \"" + c + "\". This might also indicate a " + + "missing closure in the previous color code.", 0, true); + } + case 2: + state = 3; + if (Character.isAlphabetic(c)) { + return 1; + } else { + throw new SyntaxError("Identifier might be wrong.", 1, true); + } + case 3: + if (c == ';') { + state = 4; + return 1; + } else if (c == ' ') { + state = 4; + throw new SyntaxError("\";\" missing or wrong space.", 1); + } + break; + case 4: + if (c == '@') { + state = 5; + return 1; + } + break; + case 5: + if (c == '@') { + return 2; + } else { + throw new SyntaxError("Closing \"@\" missing.", 2); + } + default: + throw new UnknownStateException(state); + } + return 0; + } + + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append(line).append(":").append(pos).append(" "); + switch (state) { + case 0: + builder.append("@"); + break; + case 1: + builder.append("@@"); + break; + case 2: + builder.append("@@."); + break; + case 3: + builder.append("@@.???"); + break; + case 4: + builder.append("@@???"); + break; + case 5: + builder.append("@@???@"); + break; + default: + throw new UnknownStateException(state); + } + return builder.toString(); + } +} diff --git a/devTools/javaSanityCheck/src/element/CommentElement.java b/devTools/javaSanityCheck/src/element/CommentElement.java new file mode 100644 index 0000000000000000000000000000000000000000..3a3cc12aff9f3c2e4b06cc7240d14824575cc96e --- /dev/null +++ b/devTools/javaSanityCheck/src/element/CommentElement.java @@ -0,0 +1,66 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.SyntaxError; +import org.arkerthan.sanityCheck.UnknownStateException; + +public class CommentElement extends Element { + int state = 0; + /* + 0 - / + 1 - /*??? + 2 - /*???* + 3 - /%??? + 4 - /%???% + */ + + public CommentElement(int line, int pos) { + super(line, pos); + } + + @Override + public int handleChar(char c) throws SyntaxError { + switch (state) { + case 0: + if (c == '*') { + state = 1; + } else if (c == '%') { + state = 3; + } else if (c == '>') { + throw new SyntaxError("XHTML style closure", 4, true); + } else { + return 4; + } + break; + case 1: + if (c == '*') { + state = 2; + } + break; + case 2: + if (c == '/') { + return 2; + } + state = 1; + break; + case 3: + if (c == '%') { + state = 4; + } + break; + case 4: + if (c == '/') { + return 2; + } + state = 3; + break; + default: + throw new UnknownStateException(state); + } + return 1; + } + + @Override + public String getShortDescription() { + return null; + } +} diff --git a/devTools/javaSanityCheck/src/element/Element.java b/devTools/javaSanityCheck/src/element/Element.java new file mode 100644 index 0000000000000000000000000000000000000000..b0f99fa904f66a6a9ebcecb5ffdfb7040493b08b --- /dev/null +++ b/devTools/javaSanityCheck/src/element/Element.java @@ -0,0 +1,40 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.SyntaxError; + +public abstract class Element { + protected KnownElement k; + protected int line, pos; + + /** + * @param line Line the instance was created + * @param pos Position in line the instance was created + */ + protected Element(int line, int pos) { + this.line = line; + this.pos = pos; + } + + /** + * Parses a Char and returns an int depending on the state of the element + * 0 - the Element did nothing + * 1 - the Element changed state + * 2 - the Element is finished + * 3 - the Element is finished and a KnownHtmlElement was generated + * 4 - the Element is finished and the char is still open for use + * + * @param c + * @return + * @throws Error + */ + public abstract int handleChar(char c) throws SyntaxError; + + public KnownElement getKnownElement() { + return k; + } + + /** + * @return a short description usually based on state and position of the Element + */ + public abstract String getShortDescription(); +} diff --git a/devTools/javaSanityCheck/src/element/KnownElement.java b/devTools/javaSanityCheck/src/element/KnownElement.java new file mode 100644 index 0000000000000000000000000000000000000000..305be2fe65210b191d96ead352487b35e448ce39 --- /dev/null +++ b/devTools/javaSanityCheck/src/element/KnownElement.java @@ -0,0 +1,31 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.SyntaxError; + +public abstract class KnownElement extends Element { + + public KnownElement(int line, int pos) { + super(line, pos); + } + + /** + * @return true, if it needs another Known Element to close it. + */ + public abstract boolean isOpening(); + + /** + * @return true if it closes another Element. + */ + public abstract boolean isClosing(); + + /** + * @param k Element to be checked + * @return true if given Element closes Element + */ + public abstract boolean isMatchingElement(KnownElement k); + + @Override + public int handleChar(char c) throws SyntaxError { + return 0; + } +} diff --git a/devTools/javaSanityCheck/src/element/KnownHtmlElement.java b/devTools/javaSanityCheck/src/element/KnownHtmlElement.java new file mode 100644 index 0000000000000000000000000000000000000000..d086a74bc547a0aa90520e50c4398f5cf6dc365e --- /dev/null +++ b/devTools/javaSanityCheck/src/element/KnownHtmlElement.java @@ -0,0 +1,41 @@ +package org.arkerthan.sanityCheck.element; + +public class KnownHtmlElement extends KnownElement { + + private boolean opening; + private String statement; + + public KnownHtmlElement(int line, int pos, boolean opening, String statement) { + super(line, pos); + this.opening = opening; + this.statement = statement; + } + + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append('[').append(line).append(":").append(pos).append("] <"); + if (!opening) { + builder.append("/"); + } + return builder.append(statement).append(">").toString(); + } + + @Override + public boolean isOpening() { + return opening; + } + + @Override + public boolean isClosing() { + return !opening; + } + + @Override + public boolean isMatchingElement(KnownElement k) { + if (k instanceof KnownHtmlElement) { + return ((KnownHtmlElement) k).statement.equals(this.statement); + } + return false; + } +} diff --git a/devTools/javaSanityCheck/src/element/KnownLogicElement.java b/devTools/javaSanityCheck/src/element/KnownLogicElement.java new file mode 100644 index 0000000000000000000000000000000000000000..502abde93a296c3dffb2391b75b08893aeecd2c5 --- /dev/null +++ b/devTools/javaSanityCheck/src/element/KnownLogicElement.java @@ -0,0 +1,117 @@ +package org.arkerthan.sanityCheck.element; + +import org.arkerthan.sanityCheck.DisallowedTagException; +import org.arkerthan.sanityCheck.UnknownStateException; + +import java.util.Arrays; +import java.util.List; + +public class KnownLogicElement extends KnownElement { + private static final List<String> allowedTags = Arrays.asList("if", "elseif", "else"); + private final int state; + private boolean last; + /* + 0 - if + 1 - elseif + 2 - else + 3 - switch + 4 - case + 5 - default + */ + + public KnownLogicElement(int line, int pos, String tag, boolean last) { + this(line, pos, tag); + this.last = last; + } + + public KnownLogicElement(int line, int pos, String tag) { + super(line, pos); + switch (tag) { + case "if": + state = 0; + break; + case "elseif": + state = 1; + break; + case "else": + state = 2; + break; + case "switch": + state = 3; + break; + case "case": + state = 4; + break; + case "default": + state = 5; + break; + default: + throw new DisallowedTagException(tag); + } + last = false; + } + + @Override + public boolean isOpening() { + return !last; + } + + @Override + public boolean isClosing() { + return (state != 0 && state != 3) || last; + } + + @Override + public boolean isMatchingElement(KnownElement k) { + if (!(k instanceof KnownLogicElement)) { + return false; + } + KnownLogicElement l = (KnownLogicElement) k; + switch (state) { + case 0: + case 1: + return l.state == 1 || l.state == 2 || (l.state == 0 && l.last); + case 2: + return l.state == 0 && l.last; + case 3: + case 4: + return l.state == 3 || l.state == 4; + case 5: + return l.state == 3 && l.last; + default: + throw new UnknownStateException(state); + } + } + + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append("[").append(line).append(":").append(pos).append("] <<"); + if (last) { + builder.append('/'); + } + switch (state) { + case 0: + builder.append("if"); + break; + case 1: + builder.append("elseif"); + break; + case 2: + builder.append("else"); + break; + case 3: + builder.append("switch"); + break; + case 4: + builder.append("case"); + break; + case 5: + builder.append("default"); + break; + default: + throw new UnknownStateException(state); + } + return builder.append(">>").toString(); + } +} diff --git a/devTools/javaSanityCheck/src/element/KnownTwineElement.java b/devTools/javaSanityCheck/src/element/KnownTwineElement.java new file mode 100644 index 0000000000000000000000000000000000000000..24003fd00be0bb79aa6a01b2fbd2d9a91439ac6a --- /dev/null +++ b/devTools/javaSanityCheck/src/element/KnownTwineElement.java @@ -0,0 +1,41 @@ +package org.arkerthan.sanityCheck.element; + +public class KnownTwineElement extends KnownElement { + + private boolean opening; + private String statement; + + public KnownTwineElement(int line, int pos, boolean opening, String statement) { + super(line, pos); + this.opening = opening; + this.statement = statement; + } + + @Override + public String getShortDescription() { + StringBuilder builder = new StringBuilder(); + builder.append("[").append(line).append(":").append(pos).append("] <<"); + if (!opening) { + builder.append("/"); + } + return builder.append(statement).append(">>").toString(); + } + + @Override + public boolean isOpening() { + return opening; + } + + @Override + public boolean isClosing() { + return !opening; + } + + @Override + public boolean isMatchingElement(KnownElement k) { + if (k instanceof KnownTwineElement) { + return ((KnownTwineElement) k).statement.equals(this.statement); + } + return false; + } +} diff --git a/devTools/javaSanityCheck/twineTags b/devTools/javaSanityCheck/twineTags new file mode 100644 index 0000000000000000000000000000000000000000..e1dea71621bd818041d6aad43d7b3053b2c78132 --- /dev/null +++ b/devTools/javaSanityCheck/twineTags @@ -0,0 +1,39 @@ +#Allowed twine tags +#Effectively everything that is allowed in a statements like this: +#<<tag>> or <<tag ???>> +#when ;1 is specified it expects a matching closing tag like this: <</tag>> +#Everything belonging to if and switch statements is hard coded and does not +#need to be included here. +#Do not add HTML Tags here. +#Characters outside of ASCII scope are not supported. +# +#twine tags +capture;1 +continue;0 +for;1 +#does foreach really exist? +foreach;1 +goto;0 +htag;1 +include;0 +link;1 +nobr;1 +print;0 +replace;1 +run;0 +script;1 +set;0 +silently;1 +textbox;0 +timed;1 +unset;0 +widget;1 +=;0 +# +# Twine logic ### DO NOT TOUCH ### +if;1 +elseif;1 +else;1 +switch;1 +case;1 +default; diff --git a/sanityCheck-java b/sanityCheck-java new file mode 100755 index 0000000000000000000000000000000000000000..455bbfbc243ec664f5aac2daa2ad74903d104962 --- /dev/null +++ b/sanityCheck-java @@ -0,0 +1 @@ +java -jar SanityCheck.jar diff --git a/sanityCheck-java.bat b/sanityCheck-java.bat new file mode 100644 index 0000000000000000000000000000000000000000..455bbfbc243ec664f5aac2daa2ad74903d104962 --- /dev/null +++ b/sanityCheck-java.bat @@ -0,0 +1 @@ +java -jar SanityCheck.jar diff --git a/src/Mods/DinnerParty/dinnerPartyExecution.tw b/src/Mods/DinnerParty/dinnerPartyExecution.tw index a0eea88e491538482a93e6ddbea69cb7490314b1..c5b2d6138a68cf763926a3a820307abab521a913 100644 --- a/src/Mods/DinnerParty/dinnerPartyExecution.tw +++ b/src/Mods/DinnerParty/dinnerPartyExecution.tw @@ -434,7 +434,7 @@ <</if>> as you shake your head, so $he closes $his mouth and resigns $himself to $his fate. <br> - Your Head Girl is placed across the corner of the dining hall table face down, $his hands and legs held open by 4 men. $He finds a hand on $his ass, groping roughly. Then another hand on the other cheek, roughly parting $his globes to get better access. + Your Head Girl is placed across the corner of the dining hall table face-down, $his hands and legs held open by 4 men. $He finds a hand on $his ass, groping roughly. Then another hand on the other cheek, roughly parting $his globes to get better access. /% Pussy Check %/ <<if ($HeadGirl.vagina >= 0) && canDoVaginal($HeadGirl)>> A finger traces along $his slit, finding the source of that moisture and pressing its way in. Another finger was added and the hand began to finger fuck $him roughly. After a few seconds a third finger was added and then a fourth, stretching $his pussy. diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js index 80595cf475060de9aa3914da2182b9886c2cb3af..9ae9eb02443c0ae955fe9077f7df6ea852cfc3ef 100644 --- a/src/SpecialForce/SpecialForce.js +++ b/src/SpecialForce/SpecialForce.js @@ -828,7 +828,7 @@ window.FlavourText = function(View) { if (jsRandom(0,100) <= 50) { r += `raises a hand in greeting and nods. She is sprawled on a couch, wearing only her combat suit tank top and fingerless gloves. She's holding a near-empty bottle of strong liquor in her hand and you can see a naked slave girl kneeling on the floor between her legs. The Colonel has her legs wrapped tightly around the girl's head, forcing the girl to service her if she wants to breathe. The Colonel is close to her climax then suddenly tenses her lower body thus gripping the girl even tighter and throws her head back in ecstasy as she orgasms. She lets out a long breath finally releasing the girl, giving her a hard smack and shouting at her to fuck off.<br><br> The Colonel finishes off her bottle, tossing it over her shoulder then leaning back on the couch and spreading her legs wide. You look down briefly, falling into your habits of inspection. Her pussy is completely devoid of hair with heavy labia in with a very large and hard clit peaking out. Beads of moisture, the result of her excitation, are visible, and you can tell from long experience that she would be tight as a vise. You return your gaze to her face to find her smirking at you. "Like what you see, ${SFCR()}?" She waves her hand at the plaza around her, "So do they. But you're not here for pussy. You're here to talk business. So, what's up?"`; } else if (jsRandom(0,100) > 50) { - r += `is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, ${SFCR()}," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, ${SFCR()}," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So — I'm assuming you want something?"`; + r += `is in no condition initially to greet you. She's naked except for one sock that gives you a very good view of her muscled, taut body while lunging with her feet on the table and the rest on her couch. She is face-down in a drugged-out stupor in the middle of a wide variety of powders and pills. Perhaps sensing your approach, her head suddenly shoots up and looks at you with unfocused, bloodshot eyes. "Sorry, ${SFCR()}," she slurs, wiping her face and weakly holding up a hand. "Hold on a second, I need something to help me out here. Long fucking night." She struggles to sit on the couch and bending over the table, loudly snorts up some of the white powder on it. "Ahhh, fuck," she says, breathing heavily.<br><br> She shakes her head powerfully now looking at you, her eyes once again alert and piercing. "That's better," she says, leaning back on the couch and giving you another good view of her assets. "So, ${SFCR()}," she begins, "what brings you down here to our little clubhouse? I trust you're happy with how we've been handling things out there?" You nod. "Excellent", she laughs. "I have to say; it's nice to have a place like this while having some top-end gear and to be able to have fun out there without worrying about anyone coming back on us. Good fucking times." She laughs again. "So — I'm assuming you want something?"`; } else if (jsRandom(0,100) > 70 && V.SF.Depravity >= 1.5 && V.SF.Colonel.Core == "cruel") { r += `is relaxing on her couch stark naked, greeting you with a raised hand. Between her tightly clenched legs is a slave girl being forced to eat her out. "Hey, ${SFCR()}, what's —" she breaks off as a flash of pain crosses her features. "Fucking bitch!" she exclaims, pulling her legs away and punching the slave girl in the face. She pushes the girl to the ground, straddling her then begins hitting. You hear one crunch after another as The Colonel's powerful blows shatter the girl's face. She hisses from between clenched teeth, each word accompanied by a brutal punch. "How. Many. Fucking. Times. Have. I. Told. You. To. Watch. Your. Fucking. Teeth. On. My. Fucking. Clit!" She leans back, exhaling heavily. Before leaning back down to grip apply pressure onto the girl's neck with her powerful hands. Wordlessly, she increases the pressure and soon the girl begins to turn blue as she struggles to draw breath. Eventually her struggles weaken and then finally, end.<br><br> The Colonel relaxes her grip then wipes her brow, clearing away the sweat from her exertion. Finally rising from the girl's body, relaxing back on the couch and putting her feet back up on the table. "Sorry about that ${SFCR()}," she says, shrugging. "So many of these bitches we pick up from the outside don't understand that they have to behave." Shaking her head in frustration, "Now I need to find another one. But that's not your problem — you're here to talk business. So, what's up?"`; } else { diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw index a91ccd914ba27167096a8773aceab38be01fde46..afcb75c701b1d1a4e1e2482a37af243c95366380 100644 --- a/src/events/intro/introSummary.tw +++ b/src/events/intro/introSummary.tw @@ -112,7 +112,7 @@ You are using standardized slave trading channels. [[Customize the slave trade|C <<if ndef $nationalitiescheck>> /* NGP: regenerate $nationalitiescheck from previous game's $nationalities array */ <<silently>><<include "Customize Slave Trade">><</silently>> <</if>> - <br style="clear:both" /><hr style="margin:0"> + <br style="clear:both"><hr style="margin:0"> <<set _len = Object.keys($nationalitiescheck).length>> <<set _j = 0>> <<for _nation, _i range $nationalitiescheck>> @@ -120,7 +120,7 @@ You are using standardized slave trading channels. [[Customize the slave trade|C <<set _j++>> <<if _j < _len>> | <</if>> <</for>> - <br style="clear:both" /><hr style="margin:0"> + <br style="clear:both"><hr style="margin:0"> <</if>> /* closes $customVariety is defined */ /* Accordion 000-250-006 */ diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw index 84c46326557d1a0e48a88b846e0610fedf7e9e83..b44ac1f37449d5c9c73970c43d2728e1ae0fcbd5 100644 --- a/src/facilities/farmyard/farmyard.tw +++ b/src/facilities/farmyard/farmyard.tw @@ -105,7 +105,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and <br>It can support $farmyard farmhands. Currently there <<if $farmyardSlaves == 1>>is<<else>>are<</if>> $farmyardSlaves farmhand<<if $farmyardSlaves != 1>>s<</if>> at $farmyardName. [[Expand the farmyard|Farmyard][cashX(forceNeg(_Tmult0), "capEx"), $farmyard += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs// -<span id="menials" +<span id="menials"> <br><br><br> <<if $farmMenials > 0>> Assigned here are $farmMenials slaves working to produce as much food as possible. diff --git a/src/facilities/nursery/childSummary.tw b/src/facilities/nursery/childSummary.tw index 760106b9eeeed54014ee3ca43e64014d387b4169..78449006c71ef6d6c5753beb58d866e9c3b713cb 100644 --- a/src/facilities/nursery/childSummary.tw +++ b/src/facilities/nursery/childSummary.tw @@ -31,7 +31,7 @@ <<if (/Select/i.test(_Pass))>> <<set _offset = -25>> <</if>> - <br /> + <br> <<set _tableCount = _tableCount || 0>> <<set _tableCount++>> /* @@ -104,7 +104,7 @@ <<set _chosenClothes = saChoosesOwnClothes(_Child)>> <<set $cribs[_csi].devotion = _oldDevotion, _Child = $cribs[_csi]>> /* restore devotion value so repeatedly changing clothes isn't an exploit */ <</if>> - <br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Child 1>></div><</if>> + <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Child 1>></div><</if>> <<if "be your Head Girl" == _Child.assignment>>''@@.lightcoral;HG@@'' <<elseif "recruit girls" == _Child.assignment>>''@@.lightcoral;RC@@'' <<elseif "guard you" == _Child.assignment>>''@@.lightcoral;BG@@'' @@ -114,7 +114,7 @@ /* TODO: will the PC be able to give children PA? */ <<case "Personal Attention Select">> - <br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Child 1>></div><</if>> + <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>><<if ($seeImages == 1) && ($seeSummaryImages == 1)>><div class="imageRef smlImg"><<SlaveArt _Child 1>></div><</if>> <<link _childName>> <<if !Array.isArray($personalAttention)>> /* first PA target */ <<set $personalAttention = [{ID: $cribs[_csi].ID, trainingRegimen: "undecided"}]>> diff --git a/src/js/walkPastJS.js b/src/js/walkPastJS.js index 5ce958e59ec9576642d5f9dcd2167d9a8c5b1407..3e2248e5ef79c055a384d78654710ed7c306181d 100644 --- a/src/js/walkPastJS.js +++ b/src/js/walkPastJS.js @@ -1005,7 +1005,7 @@ window.loverSlave = function(activeSlave) { t += ` as a pillow.`; break; case "buttslut": - t += `sleeping in bed together. ${partnerName} is sleeping face down so ${name} can use ${his2} `; + t += `sleeping in bed together. ${partnerName} is sleeping face-down so ${name} can use ${his2} `; if (_partnerSlave.butt > 8) { t += `massive rear`; } else if (_partnerSlave.butt > 5) { diff --git a/src/npc/descriptions/fAnus.tw b/src/npc/descriptions/fAnus.tw index a6dcfd056588ea1367e1712880be2e30157e4dd2..ab26218d4a249c0dcd27a703aae774298c847bc8 100644 --- a/src/npc/descriptions/fAnus.tw +++ b/src/npc/descriptions/fAnus.tw @@ -204,7 +204,7 @@ You call $him over so you can <<case "be a servant">> $He uses an enema to clean $his _Anus, since $his chores didn't perform themselves while you used $his backdoor. <<case "rest">> - $He uses an enema to clean $his _Anus before crawling back into bed, face down. + $He uses an enema to clean $his _Anus before crawling back into bed, face-down. <<case "get milked">> $He uses an enema to clean $his _Anus <<if $activeSlave.lactation > 0>>before going to get $his uncomfortably milk-filled tits drained<<else>>and then rests until $his balls are ready to be drained again<</if>>. <<case "please you">> diff --git a/src/npc/descriptions/fBoobs.tw b/src/npc/descriptions/fBoobs.tw index b6d3891deb654a108a8a868a192143a6a9e683d3..118337bb555a4df26717467822c47eb403ce30ce 100644 --- a/src/npc/descriptions/fBoobs.tw +++ b/src/npc/descriptions/fBoobs.tw @@ -60,38 +60,38 @@ tits. <<if $PC.dick == 1>> You lay $him down on the couch on $his back, lather oil onto $his breasts and gingerly straddle $his face; your stiff prick between $his tits and under your belly, and your needy cunt over $his mouth. <<if ($activeSlave.boobs >= 20000)>> - $His breasts are so colossal you can barely maintain this position. They completely devour your dick and threaten to swallow up your pregnant belly as well. Between $his licking, and the fleshy prison surrounding your privates, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His breasts are so colossal you can barely maintain this position. They completely devour your dick and threaten to swallow up your pregnant belly as well. Between $his licking, and the fleshy prison surrounding your privates, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobs >= 10000)>> - $His breasts are so massive you can barely maintain this position. They completely devour your dick and swell around the sides of your pregnancy as well. Between $his licking, and the fleshy prison surrounding your privates, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His breasts are so massive you can barely maintain this position. They completely devour your dick and swell around the sides of your pregnancy as well. Between $his licking, and the fleshy prison surrounding your privates, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobs >= 5000)>> - $His breasts are so monstrous they completely devour your dick and tickle your pregnant belly. Pushing $his breasts together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His breasts are so monstrous they completely devour your dick and tickle your pregnant belly. Pushing $his breasts together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobs >= 1000)>> - $His huge breasts fill the area under your pregnancy nicely. Pushing them together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His huge breasts fill the area under your pregnancy nicely. Pushing them together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobsImplant > 250)>> - $His fake breasts fill the area under your pregnancy nicely. Pushing them together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His fake breasts fill the area under your pregnancy nicely. Pushing them together under your gravidness, you thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobs >= 650)>> - $His big breasts fill the area under your pregnancy nicely. You thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. + $His big breasts fill the area under your pregnancy nicely. You thrust between them and the underside of your middle, all the while rubbing your pussy into $his face. With $his licking, and all the flesh against your cock, it doesn't take long for you to soak $his face and plant your seed deep into $his cleavage. <<elseif ($activeSlave.boobs >= 300)>> - You have to feel around under your pregnancy to hold your cock against $his tiny breasts. You thrust against them and your hand, while the other teases your middle, all the while rubbing your pussy against $his face. Between $his licking, and your own teasing, it doesn't take long for you to soak $his face and splatter your seed across $his front. + You have to feel around under your pregnancy to hold your cock against $his tiny breasts. You thrust against them and your hand, while the other teases your middle, all the while rubbing your pussy against $his face. Between $his licking, and your own teasing, it doesn't take long for you to soak $his face and splatter your seed across $his front. <<else>> - You have to lean forward and pin your cock against $his flat chest with the underside of your own pregnancy to make any real channel to thrust into. You fondle your belly<<if $PC.boobs > 0>> and breasts<</if>>, all the while rubbing your pussy against $his face. Between $his licking, and your own teasing, it doesn't take long for you to soak $his face and splatter your seed across your underbelly and $his front. You turn around and have $his lick you clean before pulling your gravid bulk off of $him. + You have to lean forward and pin your cock against $his flat chest with the underside of your own pregnancy to make any real channel to thrust into. You fondle your belly<<if $PC.boobs > 0>> and breasts<</if>>, all the while rubbing your pussy against $his face. Between $his licking, and your own teasing, it doesn't take long for you to soak $his face and splatter your seed across your underbelly and $his front. You turn around and have $his lick you clean before pulling your gravid bulk off of $him. <</if>> <<else>> You lay $him down on the couch on $his back, lather oil onto $his breasts and gingerly straddle $his face; your needy cunt over $his mouth. <<if ($activeSlave.boobs >= 20000)>> - $His breasts are so colossal you can barely maintain this position, but they are massively fun to play with as $he eats you out. You massage your pregnancy with $his acres of breast flesh, teasing your own stretched skin with $hers. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you fall into $his endless cleavage for a short rest. + $His breasts are so colossal you can barely maintain this position, but they are massively fun to play with as $he eats you out. You massage your pregnancy with $his acres of breast flesh, teasing your own stretched skin with $hers. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you fall into $his endless cleavage for a short rest. <<elseif ($activeSlave.boobs >= 10000)>> - $His breasts are so massive you can barely maintain this position, but they are fun to play with as $he eats you out. You massage the edges of your pregnancy with $his breast flesh, teasing your own stretched skin with $hers. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you fall into $his immense cleavage for a short rest. + $His breasts are so massive you can barely maintain this position, but they are fun to play with as $he eats you out. You massage the edges of your pregnancy with $his breast flesh, teasing your own stretched skin with $hers. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you fall into $his immense cleavage for a short rest. <<elseif ($activeSlave.boobs >= 5000)>> - $His breasts are so monstrous they make a fabulous rest for your pregnancy as $he eats you out. You tease $his breasts using your baby bump, rubbing it against them and vice versa. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his monster breasts for a quick rest. + $His breasts are so monstrous they make a fabulous rest for your pregnancy as $he eats you out. You tease $his breasts using your baby bump, rubbing it against them and vice versa. You can visibly see the vibrations running through $his tits as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his monster breasts for a quick rest. <<elseif ($activeSlave.boobs >= 1000)>> - $His breasts are huge enough to support your pregnancy as $he eats you out. You press your belly more and more into them as $his tongue delves deeper into your folds. You can visibly see the vibrations running through the breast flesh forced to the sides of your middle as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his huge breasts for a quick rest. + $His breasts are huge enough to support your pregnancy as $he eats you out. You press your belly more and more into them as $his tongue delves deeper into your folds. You can visibly see the vibrations running through the breast flesh forced to the sides of your middle as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his huge breasts for a quick rest. <<elseif ($activeSlave.boobs >= 650)>> - $His big breasts fill the area under your pregnancy nicely. You press your belly more and more into them as $his tongue delves deeper into your folds. You can visibly see the vibrations running through the breast flesh forced to the sides of your middle as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his big breasts for a quick rest. + $His big breasts fill the area under your pregnancy nicely. You press your belly more and more into them as $his tongue delves deeper into your folds. You can visibly see the vibrations running through the breast flesh forced to the sides of your middle as you quiver from the mouth working your pussy. Thoroughly soaking $him, you dismount and lean against $his big breasts for a quick rest. <<elseif ($activeSlave.boobs >= 300)>> - $His tiny breasts are completely covered by your pregnancy. You reach under yourself, grabbing what you can of $his breasts and pushing them against your crotch. Between rubbing $his breasts against your self and $his tongue in your pussy, you quickly climax, thoroughly soaking $him. + $His tiny breasts are completely covered by your pregnancy. You reach under yourself, grabbing what you can of $his breasts and pushing them against your crotch. Between rubbing $his breasts against your self and $his tongue in your pussy, you quickly climax, thoroughly soaking $him. <<else>> - $His flat chest is completely covered by your pregnancy. Reach under yourself, you feel around until you find $his nipples. You tease $his flat chest until you're at you limit, thoroughly soaking $him, before dismounting and returning to your desk. + $His flat chest is completely covered by your pregnancy. Reach under yourself, you feel around until you find $his nipples. You tease $his flat chest until you're at you limit, thoroughly soaking $him, before dismounting and returning to your desk. <</if>> <</if>> <<elseif ($activeSlave.amp == 1)>> @@ -105,25 +105,25 @@ tits. <<elseif tooBigBelly($activeSlave)>> <<if $PC.dick == 1>> - $His excessively large belly makes $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, lube $his cleavage, and gingerly fit yourself between $his belly and $his breasts. With your cock between $his breasts, you <<if ($activeSlave.boobs >= 650)>>squash $his tits together to form a nice lubricated channel,<<else>>hold your cock in place,<</if>> and ride back and forth on $him. You blast $him in the face with your cum in no time<<if $PC.vagina == 1>>, leaving your pussyjuice on $his belly where you rubbed against $him<</if>>. + $His excessively large belly makes $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, lube $his cleavage, and gingerly fit yourself between $his belly and $his breasts. With your cock between $his breasts, you <<if ($activeSlave.boobs >= 650)>>squash $his tits together to form a nice lubricated channel,<<else>>hold your cock in place,<</if>> and ride back and forth on $him. You blast $him in the face with your cum in no time<<if $PC.vagina == 1>>, leaving your pussyjuice on $his belly where you rubbed against $him<</if>>. <<elseif $PC.boobs != 0>> - You lie down on top of $him, face to face, forced high into the air by $his excessively large belly, so that your breasts press into $his<<if ($activeSlave.boobs >= 20000)>> colossal tits.<<elseif ($activeSlave.boobs >= 10000)>> massive tits.<<elseif ($activeSlave.boobs >= 5000)>> monster tits.<<elseif ($activeSlave.boobs >= 1000)>> huge tits.<<elseif ($activeSlave.boobsImplant > 250)>> fake tits.<<elseif ($activeSlave.boobs >= 650)>> big tits.<<elseif ($activeSlave.boobs >= 300)>> small tits.<<else>> flat chest.<</if>> Scooting around to stimulate your nipples against $his warm breastflesh, you kiss the slave while pushing a hand down between you to schlick yourself against $him. + You lie down on top of $him, face to face, forced high into the air by $his excessively large belly, so that your breasts press into $his<<if ($activeSlave.boobs >= 20000)>> colossal tits.<<elseif ($activeSlave.boobs >= 10000)>> massive tits.<<elseif ($activeSlave.boobs >= 5000)>> monster tits.<<elseif ($activeSlave.boobs >= 1000)>> huge tits.<<elseif ($activeSlave.boobsImplant > 250)>> fake tits.<<elseif ($activeSlave.boobs >= 650)>> big tits.<<elseif ($activeSlave.boobs >= 300)>> small tits.<<else>> flat chest.<</if>> Scooting around to stimulate your nipples against $his warm breastflesh, you kiss the slave while pushing a hand down between you to schlick yourself against $him. <<else>> - You set $his massively distended body on the floor, and tease $him for a while until $his nipples are rock hard. This done, you kneel down on $him with each of your legs aside $his torso, rear against the top of $his belly, and hump your pussy back and forth on the stiff nub of one nipple. $He lies there, desperately trying to reach around $his bulk to $his own pussy, but unable to do so, resorts to squirming with the stimulation. + You set $his massively distended body on the floor, and tease $him for a while until $his nipples are rock hard. This done, you kneel down on $him with each of your legs aside $his torso, rear against the top of $his belly, and hump your pussy back and forth on the stiff nub of one nipple. $He lies there, desperately trying to reach around $his bulk to $his own pussy, but unable to do so, resorts to squirming with the stimulation. <</if>> <<elseif tooBigBreasts($activeSlave)>> <<if $PC.dick == 1>> - $His excessive breasts make $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, lube $his cleavage, and straddle $his torso. $He holds $his udders together, creating a warm, wet channel as fuckable as any hole. You blast $him in the face with your cum in no time<<if $PC.vagina == 1>>, leaving your pussyjuice on $his chest where you rubbed against $him<</if>>. + $His excessive breasts make $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, lube $his cleavage, and straddle $his torso. $He holds $his udders together, creating a warm, wet channel as fuckable as any hole. You blast $him in the face with your cum in no time<<if $PC.vagina == 1>>, leaving your pussyjuice on $his chest where you rubbed against $him<</if>>. <<elseif $PC.boobs != 0>> - You lie down on top of $him, face to face, so that your much smaller breasts press into the massive pillows formed by $his chest. Scooting around to stimulate your nipples against $his warm breastflesh, you kiss the slave while pushing a hand down between you to schlick yourself against $him. + You lie down on top of $him, face to face, so that your much smaller breasts press into the massive pillows formed by $his chest. Scooting around to stimulate your nipples against $his warm breastflesh, you kiss the slave while pushing a hand down between you to schlick yourself against $him. <<else>> - You set $his nearly helpless body on the floor and then scoot your hips under the massive weight of $his tits. The heft feels nice against you, and you worm a naughty hand under there to play with yourself in the warm cave formed by your pelvis and $his udders. + You set $his nearly helpless body on the floor and then scoot your hips under the massive weight of $his tits. The heft feels nice against you, and you worm a naughty hand under there to play with yourself in the warm cave formed by your pelvis and $his udders. <</if>> <<elseif tooBigButt($activeSlave)>> <<if $PC.dick == 1>> - $His excessive butt makes $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, $his butt hoisting $his crotch high above $his head, lube $his cleavage, and straddle $his torso. With your cock between $his breasts, you <<if ($activeSlave.boobs >= 650)>>squash $his tits together to form a nice lubricated channel,<<else>>hold your cock in place,<</if>> and ride back and forth on $him<<if $PC.vagina == 1>>, leaving your pussyjuice on $his chest where you rubbed against $him<</if>>. $He has some trouble breathing under the assault, but $he manages. And for the finale, $he's totally unable to avoid a perfect cumshot. + $His excessive butt makes $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, $his butt hoisting $his crotch high above $his head, lube $his cleavage, and straddle $his torso. With your cock between $his breasts, you <<if ($activeSlave.boobs >= 650)>>squash $his tits together to form a nice lubricated channel,<<else>>hold your cock in place,<</if>> and ride back and forth on $him<<if $PC.vagina == 1>>, leaving your pussyjuice on $his chest where you rubbed against $him<</if>>. $He has some trouble breathing under the assault, but $he manages. And for the finale, $he's totally unable to avoid a perfect cumshot. <<elseif $PC.boobs != 0>> - You set $him upright on your lap, facing you, so that your breasts and $hers are resting heavily against one another and $his massive ass covers your lap. $He turns $his head to avoid getting splashed in the eyes as you add a generous coating of oil to the combined breastflesh. You reach around to grab $his luxurious ass and jiggle $him up and down, giving you both a wonderful mammary oil massage. + You set $him upright on your lap, facing you, so that your breasts and $hers are resting heavily against one another and $his massive ass covers your lap. $He turns $his head to avoid getting splashed in the eyes as you add a generous coating of oil to the combined breastflesh. You reach around to grab $his luxurious ass and jiggle $him up and down, giving you both a wonderful mammary oil massage. <<else>> You set $his nearly helpless body on the floor and then scoot your hips under the massive weight of $his tits. The heft feels nice against you, and you worm a naughty hand under there to play with yourself in the warm cave formed by your pelvis and $his udders. <</if>> diff --git a/src/npc/descriptions/fVagina.tw b/src/npc/descriptions/fVagina.tw index 4a759eb68d9a2815183154d3d7e015662fa27626..ad0363e131d8d178a4f34f3156f82345115dc387 100644 --- a/src/npc/descriptions/fVagina.tw +++ b/src/npc/descriptions/fVagina.tw @@ -206,9 +206,9 @@ You call $him over so you can on the couch and straddle $his hips, bringing your already-wet pussy <<if _fSpeed > 75>>hard against $him. You grind powerfully<<elseif _fSpeed > 50>>firmly against $him. You grind vigorously<<elseif _fSpeed > 25>>against $him. You grind steadily<<else>>softly against $him. You grind gently<</if>> against $his helpless body, using $him as a living sybian until $his warmth and movement brings you to orgasm. <</if>> <<elseif !canWalk($activeSlave) && tooBigBelly($activeSlave)>> - You tell $him to get situated on the couch, face down. This position pins $him down by the massive weight of $his belly, pushing $his face in amongst the cushions and keeping $his crotch in the ideal position to penetrate. $His belly serves as an anchor, allowing you to take $him doggy style without any real contribution from $him. The position muffles $his reaction entirely, other than the rhythmic jiggling of $his bulging belly as it sticks out from either side of $his torso as you <<if _fSpeed > 75>>pound $him hard and fast<<elseif _fSpeed > 50>>pound $him firmly and vigorously<<elseif _fSpeed > 25>>fuck $him steadily<<else>>fuck $him slowly and tenderly<</if>>. + You tell $him to get situated on the couch, face-down. This position pins $him down by the massive weight of $his belly, pushing $his face in amongst the cushions and keeping $his crotch in the ideal position to penetrate. $His belly serves as an anchor, allowing you to take $him doggy style without any real contribution from $him. The position muffles $his reaction entirely, other than the rhythmic jiggling of $his bulging belly as it sticks out from either side of $his torso as you <<if _fSpeed > 75>>pound $him hard and fast<<elseif _fSpeed > 50>>pound $him firmly and vigorously<<elseif _fSpeed > 25>>fuck $him steadily<<else>>fuck $him slowly and tenderly<</if>>. <<elseif !canWalk($activeSlave) && tooBigBreasts($activeSlave)>> - You tell $him to get situated on the couch, face down. This position pins $him down by the massive weight of $his tits, pushing $his face in amongst the cushions. $His tits serve as an anchor, allowing you to take $him doggy style without any real contribution from $him. The position muffles $his reaction entirely, other than the rhythmic jiggling of the breastflesh that sticks out to either side of $his torso as you <<if _fSpeed > 75>>pound $him hard and fast<<elseif _fSpeed > 50>>pound $him firmly and vigorously<<elseif _fSpeed > 25>>fuck $him steadily<<else>>fuck $him slowly and tenderly<</if>>. + You tell $him to get situated on the couch, face-down. This position pins $him down by the massive weight of $his tits, pushing $his face in amongst the cushions. $His tits serve as an anchor, allowing you to take $him doggy style without any real contribution from $him. The position muffles $his reaction entirely, other than the rhythmic jiggling of the breastflesh that sticks out to either side of $his torso as you <<if _fSpeed > 75>>pound $him hard and fast<<elseif _fSpeed > 50>>pound $him firmly and vigorously<<elseif _fSpeed > 25>>fuck $him steadily<<else>>fuck $him slowly and tenderly<</if>>. <<elseif !canWalk($activeSlave) && tooBigButt($activeSlave)>> You tell $him to get situated on the couch, face up. This position pins $him down by the massive weight of $his rear, causing $him to sink into the cushions. $His ass serves as an anchor, allowing you to take $him in the missionary position without any real contribution from $him. This lets you clearly see $his reaction, as well as the rhythmic jiggling of the buttflesh that sticks out to either side of $his hips as you <<if _fSpeed > 75>>pound $him hard and fast<<elseif _fSpeed > 50>>pound $him firmly and vigorously<<elseif _fSpeed > 25>>fuck $him steadily<<else>>fuck $him slowly and tenderly<</if>>. <<elseif !canWalk($activeSlave) && tooBigBalls($activeSlave)>> diff --git a/src/npc/fPCImpreg.tw b/src/npc/fPCImpreg.tw index 81284de615f6061d8b5fdc98486b895cd6a74a6d..afe0ccbc175ca52a1cb6bc2ed548d430f85c9848 100644 --- a/src/npc/fPCImpreg.tw +++ b/src/npc/fPCImpreg.tw @@ -89,17 +89,17 @@ You call $him over so you can <</if>> <<elseif ($activeSlave.amp == 1)>> - You set $his limbless torso on the end of the couch, face down, with $his hips up in the air. This way, you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>> you can manage. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $his limbless torso on the end of the couch, face-down, with $his hips up in the air. This way, you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>> you can manage. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif tooFatSlave($activeSlave)>> - You set $him down on the couch, face down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his own body, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>; after you push into $his soft folds enough to reach it, of course. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his own body, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>; after you push into $his soft folds enough to reach it, of course. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif tooBigBreasts($activeSlave)>> - You set $him down on the couch, face down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his ridiculous tits, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his ridiculous tits, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif tooBigButt($activeSlave)>> - You set $him down on the couch, face down, with $his hips up in the air. This way, $he's stuck under $his ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's stuck under $his ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif tooBigDick($activeSlave)>> - You set $him down on the couch, face down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous cock, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous cock, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif tooBigBalls($activeSlave)>> - You set $him down on the couch, face down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous balls, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. + You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous balls, and you get the greatest degree of penetration into $his fertile <<if $activeSlave.mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<</if>>, $he has probably gotten pregnant. <<elseif ($activeSlave.fetish == "submissive") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>> $He comes submissively over, smiling a little submissive smile, and spreads $himself for you. You take $him on the couch next to your desk in the missionary position. $He hugs $his torso to you and $his breasts press against your chest; you can feel $his heart beating hard. As the sex reaches its climax your semen<<if $PC.balls == 3>> fills $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pours into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pours into $him<<else>> jets into $his welcoming depths<</if>> as $he begs you to use $his unworthy body to make a new slave. <<elseif $activeSlave.devotion < -20>> diff --git a/src/npc/fSlaveImpregConsummate.tw b/src/npc/fSlaveImpregConsummate.tw index 06f6ad4c0914e38cfa4cae13fb3754df70ad6d17..c7b0adde93ed825146422a3ad9b4dd8f317d12c5 100644 --- a/src/npc/fSlaveImpregConsummate.tw +++ b/src/npc/fSlaveImpregConsummate.tw @@ -111,13 +111,13 @@ Next, you see to $activeSlave.slaveName. <<elseif ($activeSlave.amp == 1)>> You set $his limbless torso up for $impregnatrix.slaveName. <<elseif tooBigBreasts($activeSlave)>> - You set $him up for $impregnatrix.slaveName, face down so the weight of $his tits pins $him helplessly in place. + You set $him up for $impregnatrix.slaveName, face-down so the weight of $his tits pins $him helplessly in place. <<elseif tooBigButt($activeSlave)>> - You set $him up for $impregnatrix.slaveName, face down so the weight of $his giant ass pins $him helplessly in place and gives $impregnatrix.slaveName a lovely cushion to thrust against. + You set $him up for $impregnatrix.slaveName, face-down so the weight of $his giant ass pins $him helplessly in place and gives $impregnatrix.slaveName a lovely cushion to thrust against. <<elseif tooBigDick($activeSlave)>> - You set $him up for $impregnatrix.slaveName, face up so $he is pinned under the weight of $his giant cock. + You set $him up for $impregnatrix.slaveName, face-up so $he is pinned under the weight of $his giant cock. <<elseif tooBigBalls($activeSlave)>> - You set $him up for $impregnatrix.slaveName, face down so the weight of $his giant balls anchor $him helplessly in place. + You set $him up for $impregnatrix.slaveName, face-down so the weight of $his giant balls anchor $him helplessly in place. <<elseif ($activeSlave.fetish == "submissive") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>> $He is accustomed to submit to you, but as a natural submissive $he doesn't have much trouble submitting to $impregnatrix.slaveName's seed instead. <<elseif $activeSlave.devotion < -20>> diff --git a/src/player/actions/fondleButt.tw b/src/player/actions/fondleButt.tw index 89fb1636b147ef4a1dce203187b7d31b921f9c3c..b98c510223453fbe63e837e2da09b5fb37234b36 100644 --- a/src/player/actions/fondleButt.tw +++ b/src/player/actions/fondleButt.tw @@ -67,7 +67,7 @@ as well as $his <<if canWalk($activeSlave)>> You strongly pull $his body closer towards you by $his buttocks, turn $him around and push $him down to bend $him over your desk. <<else>> - You move closer towards $him, turn $him around and firmly hold $him down on desk, face down so that $his butt is facing you up into the air. + You move closer towards $him, turn $him around and firmly hold $him down on desk, face-down so that $his butt is facing you up into the air. <</if>> $He pretends to be unwilling but cannot disguise $his obvious joy. You see that $his rear has reddened in your rough play and you continue to squeeze $his cheeks hard and spank them with your firm hands. $He moans harder at you squeezing along the contours of $his posterior with both your hands and at $his virgin butthole as you push against it with your fingers and thumb. Eventually you decide to stop and $he squeals with delight after you give $his <<if $activeSlave.butt < 2>> @@ -118,7 +118,7 @@ as well as $his <<if canWalk($activeSlave)>> You pull $his body closer towards you by $his buttocks, turn $him around and bend $him over your desk. <<else>> - You move closer towards $him, turn $him around and push $him down on desk, face down so that $his butt is facing you up into the air. + You move closer towards $him, turn $him around and push $him down on desk, face-down so that $his butt is facing you up into the air. <</if>> You look at $his rear while you squeeze $his cheeks and rub them with your firm hands. You explore the contours of $his posterior with both your eyes and hands, then look at $his virgin butthole as you trace it with your fingers and thumb. Eventually you decide to stop and $he squeals with delight after you give $his <<if $activeSlave.butt < 2>> @@ -372,7 +372,7 @@ as well as $his <<if ($activeSlave.amp != 1)>> You pull $his body closer towards you by $his buttocks, turn $him around and push $him down, bending $him over your desk while $he tries to push away. <<else>> - You move closer to $him, turn $him around and push $him down, face down on your desk while $he tries to wriggle desperately. + You move closer to $him, turn $him around and push $him down, face-down on your desk while $he tries to wriggle desperately. <</if>> You look at $his rear while you squeeze $his cheeks and rub them with your firm hands. You wander along the outline of $his posterior with both your eyes and hands, then look at $his <<if ($activeSlave.anus > 3)>> @@ -429,7 +429,7 @@ as well as $his <<if ($activeSlave.amp != 1)>> You pull $his body closer towards you by $his buttocks, turn $him around and push $him down, bending $him over your desk. <<else>> - You move closer to $him, turn $him around and push $him down, face down on your desk while $he wriggles. + You move closer to $him, turn $him around and push $him down, face-down on your desk while $he wriggles. <</if>> You look at $his rear while you squeeze $his cheeks and rub them with your firm hands. You wander along the outline of $his posterior with both your eyes and hands, then look at $his <<if ($activeSlave.anus > 3)>> @@ -486,7 +486,7 @@ as well as $his <<if ($activeSlave.amp != 1)>> You pull $his body closer towards you by $his buttocks, turn $him around and push $him down, bending $him over your desk. <<else>> - You move closer to $him, turn $him around and push $him down, face down on your desk while $he tries to wriggle desperately. + You move closer to $him, turn $him around and push $him down, face-down on your desk while $he tries to wriggle desperately. <</if>> You look at $his rear while you squeeze $his cheeks and rub them with your firm hands. You wander along the outline of $his posterior with both your eyes and hands, then look at $his butthole as you trace it with your fingers and thumb. Eventually, you decide to stop and $he looks up into your eyes longingly, as if $he wants more. <<else>> @@ -531,7 +531,7 @@ as well as $his <<if ($activeSlave.amp != 1)>> You pull $his body closer towards you by $his buttocks, turn $him around and push $him down, bending $him over your desk. <<else>> - You move closer to $him, turn $him around and push $him down, face down on your desk so that $his butt is up facing towards you. + You move closer to $him, turn $him around and push $him down, face-down on your desk so that $his butt is up facing towards you. <</if>> You look at $his rear while you squeeze $his cheeks and rub them with your firm hands. You wander along the outline of $his posterior with both your eyes and hands, then look at $his butthole as you trace it with your fingers and thumb. Eventually, you decide to stop and $he looks up into your eyes ecstatically,<<if ($activeSlave.amp != 1)>> as $he stands,<</if>> eager for more. <</if>> diff --git a/src/pregmod/fSlaveSlaveVagConsummate.tw b/src/pregmod/fSlaveSlaveVagConsummate.tw index 88d2629cf242a7a6aa1b8040dfe94fcd7f1892df..e6e3ca338f371e8b941453781fef19515cbb5f77 100644 --- a/src/pregmod/fSlaveSlaveVagConsummate.tw +++ b/src/pregmod/fSlaveSlaveVagConsummate.tw @@ -97,7 +97,6 @@ You take a look at the slave you selected. <br><br> - Next, you see to $activeSlave.slaveName. <<if _isIncest == 1>> @@ -181,13 +180,13 @@ Next, you see to $activeSlave.slaveName. <<if ($activeSlave.amp == 1)>> You set $his limbless torso up for $slaverapistx.slaveName. <<elseif tooBigBreasts($activeSlave)>> - You set $him up for $slaverapistx.slaveName, face down so the weight of $his tits pins $him helplessly in place. + You set $him up for $slaverapistx.slaveName, face-down so the weight of $his tits pins $him helplessly in place. <<elseif tooBigButt($activeSlave)>> - You set $him up for $slaverapistx.slaveName, face down so the weight of $his giant ass pins $him helplessly in place and gives $slaverapistx.slaveName a lovely cushion to thrust against. + You set $him up for $slaverapistx.slaveName, face-down so the weight of $his giant ass pins $him helplessly in place and gives $slaverapistx.slaveName a lovely cushion to thrust against. <<elseif tooBigDick($activeSlave)>> You set $him up for $slaverapistx.slaveName, face up so $he is pinned under the weight of $his giant cock. <<elseif tooBigBalls($activeSlave)>> - You set $him up for $slaverapistx.slaveName, face down so the weight of $his giant balls anchor $him helplessly in place. + You set $him up for $slaverapistx.slaveName, face-down so the weight of $his giant balls anchor $him helplessly in place. <<elseif $activeSlave.devotion < -20>> $He tries to refuse, so you restrain $him despite $his resistance to the idea of being raped by another slave. <<elseif $activeSlave.devotion <= 20>> diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw index 31eb59fe0ffec29a434650ae11754ba495cd53d1..066a43037475e714b9f54088a854e45f0e71f075 100644 --- a/src/pregmod/newChildIntro.tw +++ b/src/pregmod/newChildIntro.tw @@ -837,7 +837,7 @@ As $he begins to moan with lust, you grip down tightly and force $him to the flo <<if $seeExtreme == 1>> <br><<link "Geld $him as punishment">> <<replace "#result2">> - Righting yourself, you grab the gloating slave, drag $him to the autosurgery and strap $his face down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. + Righting yourself, you grab the gloating slave, drag $him to the autosurgery and strap $him face-down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. <<if $arcologies[0].FSGenderRadicalist != "unset">> Society @@.green;approves@@ of your promptly gelding $him; this advances the idea that all societal inferiors can be made female. <<= FSChange("GenderRadicalist", 2)>> @@ -897,7 +897,7 @@ You beckon the curious $girl to your hefty breasts, having noticed how hungrily <<if $seeExtreme == 1>> <br><<link "Geld $him as punishment">> <<replace "#result2">> - Righting yourself, you grab the cowering slave, drag $him to the autosurgery and strap $his face down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. + Righting yourself, you grab the cowering slave, drag $him to the autosurgery and strap $him face-down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. <<if $arcologies[0].FSGenderRadicalist != "unset">> Society @@.green;approves@@ of your promptly gelding $him; this advances the idea that all societal inferiors can be made female. <<= FSChange("GenderRadicalist", 2)>> @@ -988,7 +988,7 @@ You beckon the curious $girl to your hefty breasts, having noticed how hungrily <<set $activeSlave.health -= 10>> <<set $activeSlave.trust -= 100>> <<replace "#result">> - You escort $him to the remote surgery and strap $his face down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. + You escort $him to the remote surgery and strap $him face-down with $his legs spread. $He doesn't understand what's happening, but giggles at the sensations running through $his numb body. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He spends the rest of the week dimly trying to find where $his balls went. <<if $arcologies[0].FSGenderRadicalist != "unset">> Society @@.green;approves@@ of your promptly gelding $him; this advances the idea that all societal inferiors can be made female. <<= FSChange("GenderRadicalist", 2)>> @@ -1009,7 +1009,7 @@ You beckon the curious $girl to your hefty breasts, having noticed how hungrily <<set $activeSlave.health -= 10>> <<set $activeSlave.trust -= 5>> <<replace "#result">> - You escort $him to the remote surgery and strap $his face down with $his legs bare. $He doesn't understand what's coming for a while, but giggles as $his lower legs are carefully cleaned and disinfected. $He can't see the approaching surgical manipulators, but eventually $he feels a tugging at $his lower legs even through the local anesthetic. $He gets one squeal of protest out before the surgery begins to apply healing agents. $He now requires special heels to walk, and will @@.gold;remember your power@@ with every @@.red;painful@@ step $he takes. $He seems @@.hotpink;inappropriately happy@@ about getting to wear pretty shoes when $he can no longer walk without them. + You escort $him to the remote surgery and strap $him face-down with $his legs bare. $He doesn't understand what's coming for a while, but giggles as $his lower legs are carefully cleaned and disinfected. $He can't see the approaching surgical manipulators, but eventually $he feels a tugging at $his lower legs even through the local anesthetic. $He gets one squeal of protest out before the surgery begins to apply healing agents. $He now requires special heels to walk, and will @@.gold;remember your power@@ with every @@.red;painful@@ step $he takes. $He seems @@.hotpink;inappropriately happy@@ about getting to wear pretty shoes when $he can no longer walk without them. <</replace>> <</link>> <</if>> diff --git a/src/pregmod/pcSurgeryDegredation.tw b/src/pregmod/pcSurgeryDegredation.tw index 4f540a7aa412260253e1961e8f8a861476aae5f4..84717c7cf5a31f1aa928999e422008a8fac86eb4 100644 --- a/src/pregmod/pcSurgeryDegredation.tw +++ b/src/pregmod/pcSurgeryDegredation.tw @@ -37,16 +37,16 @@ After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000 || $PC.boobsBonus == 3>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice a new weight on your chest. Pulling the covers off yourself, you observe your new, soft C-cup boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating herself behind you and wrapping her hands around to your heaving breasts. "With these, you should be able to compete with any girls around you." She begins groping your breasts, feeling the added mass for any oddities. "I know you're still a little sore, but bear with it." She moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>She lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as she massages and teases your new tits. "Enjoying yourself are we? Let me finish you off." She sneaks a hand down to your <<if $PC.dick == 1>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> She states, while licking her fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. <<case "buttReductionImplant">> - After a few hours, you awaken in the recovery wing, face down in a bed made to accommodate as person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate as person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. <<case "buttShrinkage">> - After a few hours, you awaken in the recovery wing, face down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much smaller it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping." She begins groping your bottom, feeling around for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. <<case "buttEnlargementImplant">> - After a few hours, you awaken in the recovery wing, face down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> rounded butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we put in the implant." She begins groping your bottom, feeling the silicone filled implant for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> rounded butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we put in the implant." She begins groping your bottom, feeling the silicone filled implant for any oddities. "I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. <<case "buttEnlargement">> - After a few hours, you awaken in the recovery wing, face down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> soft butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we added the fat." She begins groping your bottom, feeling around for any oddities. "So soft... I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. + After a few hours, you awaken in the recovery wing, face-down in a bed made to accommodate a person with your body type, with a sore ass. You push yourself up and look at the mass under the cover behind you that is your rear, taking note of how much bigger it is now than when you arrived. "So do you like it?", asks the surgeon's assistant, seating herself beside you and bringing her hands to your <<if $PC.butt == 3>>enormous<<elseif $PC.butt == 2>>huge<<else>>big<</if>> soft butt. "Size isn't everything in an ass, shape is important too, though I think you've got a good balance. We didn't need to do much reshaping when we added the fat." She begins groping your bottom, feeling around for any oddities. "So soft... I know you're still a little sore, but bear with it. There, everything feels good, now rest up and you'll be set! Though you may need some help righting yourself until you get used to its added weight. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Groggy, you lie back down to sleep off the rest of the anesthesia before returning to your arcology. <<case "ballEnlargement">> After a few hours, you awaken in the recovery wing with a distinct soreness <<if $PC.ballsImplant > 2>>and the sense that something massive is pushing your legs apart<<elseif $PC.ballsImplant == 2>>and tight feeling between your legs<<else>>between your legs<</if>>. You pull the covers off of yourself to catch sight of the result of the surgery and diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw index a24b7ce616d7eadd992a5ca8a829fb8fddce3b3c..e40b21e3f85fb66af2d9554966e7cef4a29a2ef4 100644 --- a/src/pregmod/rePregInventor.tw +++ b/src/pregmod/rePregInventor.tw @@ -287,7 +287,7 @@ <<link "Have $him show off $his developments in the sport of advanced maternity swing gymnastics.">> <<EventNameDelink $activeSlave>> <<replace "#result">> - $He is brought into your office alongside $his invention: a customized maternity swing. It is a true marvel of Free Cities engineering, resembling something designed for use with large marine mammals rather than a sex aid for a pregnant woman. It has been specially rigged to support both its user and their sexual partner, and to suspend them in the air, enabling them to explore sex positions that would otherwise be rendered impossible by a hyperpregnant slave's mass and size. Just watching the effort your menials expend squeezing the <<print SlaveTitle($activeSlave)>> into a device that would dwarf a normal person is enough to get you excited, and you're fully ready to enjoy some personal time with $him by the time they've hooked you both into the device. The maternity swing is controlled via a vocal command system and, as your menials retreat to give you time alone, you instruct it to lift both you and $him into the air. + $He is brought into your office alongside $his invention: a customized maternity swing. It is a true marvel of Free Cities engineering, resembling something designed for use with large marine mammals rather than a sex aid for a pregnant $woman. It has been specially rigged to support both its user and their sexual partner, and to suspend them in the air, enabling them to explore sex positions that would otherwise be rendered impossible by a hyperpregnant slave's mass and size. Just watching the effort your menials expend squeezing the <<print SlaveTitle($activeSlave)>> into a device that would dwarf a normal person is enough to get you excited, and you're fully ready to enjoy some personal time with $him by the time they've hooked you both into the device. The maternity swing is controlled via a vocal command system and, as your menials retreat to give you time alone, you instruct it to lift both you and $him into the air. <br><br> The reinforced silk supports strain slightly under the weight of your slave's belly, but they make no noise, and you soon find yourself suspended in midair with $his <<if $activeSlave.vagina == 10>> diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw index 676eeb938ee251a9d77822882d493227e9637b82..dd0d1bbc5b2ccbf5cbf63dde2490ac92cb9936c2 100644 --- a/src/pregmod/seFCTVshows.tw +++ b/src/pregmod/seFCTVshows.tw @@ -469,7 +469,7 @@ The offered price is <<print cashFormat($slaveCost)>>. Bess looks impressed. "You've got a pretty smart master! Seems like he takes good care of the cows, too!" <br><br> The milk maid gives an emphatic nod. <i>"My Master's daddy, and his daddy's daddy were dairy farmers, so he knows what he's doin'. Master said that lots of folks think slaves don't deserve any care or fancy treatment, that slaves are animals and you can't give 'em anything without putting ideas in their heads. Master said those folks are right we don't </i>deserve<i> anything, but that otherwise those folks just don't know jack shit about raising livestock."</i> - Bess smiles. "I guess G-9 isn't at the top of the quality and quantity charts by accident!" She moves over toward one of the occupied milkers to take a better look. Rather than a chair, it's set up almost like a massage table, and the slave is lying face down on the table's comfortable padding. The chest area of the table is almost completely missing, allowing the cow's 15,000 CC udders to hang downward. Rather than hang painfully, however, they're well supported by some kind of strong fabric that looks soft but stretchy. Their supported shape seems ideal for milking, opening up the milk ducts and letting gravity drain the milk toward the exposed nipples. A clear cup is attached to each teat, rich milk flooding rhythmically down wide tubes to be collected in a massive intermediary reservoir. Bess turns back to the milk maid. "So I think I understand what the setup in the front is for, but what's all this going on in the back?" + Bess smiles. "I guess G-9 isn't at the top of the quality and quantity charts by accident!" She moves over toward one of the occupied milkers to take a better look. Rather than a chair, it's set up almost like a massage table, and the slave is lying face-down on the table's comfortable padding. The chest area of the table is almost completely missing, allowing the cow's 15,000 CC udders to hang downward. Rather than hang painfully, however, they're well supported by some kind of strong fabric that looks soft but stretchy. Their supported shape seems ideal for milking, opening up the milk ducts and letting gravity drain the milk toward the exposed nipples. A clear cup is attached to each teat, rich milk flooding rhythmically down wide tubes to be collected in a massive intermediary reservoir. Bess turns back to the milk maid. "So I think I understand what the setup in the front is for, but what's all this going on in the back?" <br><br> Anabell walks up to the milking table, and gestures to the lower half. <i>"Ma'am, is it okay if I answer one part at a time?"</i> Bess gives a cheerful nod, so Anabell points to the cow's abdomen. <i>"I know it's hard to see cause of that metal holdin' up the table, but there's actually an adjustable belly support there."</i> the dairy slave gives the cow an affectionate rub on one butt cheek. <i>"She may not look it right now, but this one here is more 'n seven months pregnant with triplets. The table supports the womb, taking the weight and pressure off the cow. All the cows say it's the most comfortable place to be when they're full of calf!"</i> Smiling, Anabell points down between the cow's legs. The camera moves closer to get a good look, and the microphone starts picking up traces of audio from whatever program the cow's watching. Once the camera is positioned at the feet, you can see between her slightly-spread legs that there's a large adjustable-looking opening under her pubic region. More fascinating though, is the device attached to her groin; it looks really similar to an athletic cup. It's just a bit bigger and longer with some tubes and a wire coming out of it, and hides the cow's vulva and asshole from the camera. <br><br> diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw index 9f179866f897251d45518f847dead1e7db5fac7b..bfe0821e836fea31e73f7996bced1ba1c5d610e1 100644 --- a/src/uncategorized/PESS.tw +++ b/src/uncategorized/PESS.tw @@ -195,7 +195,7 @@ $He sees you examining at $him, and looks back at you submissively, too tired to <br><<link "$He intimidates him with $his towering height">> <<EventNameDelink $activeSlave>> <<replace "#result">> - $activeSlave.slaveName calmly strides over to the drunken delinquent and simply towers over him with a glower on $his $activeSlave.faceShape face. The man quickly finds himself sobering up and moves to run from the scene with all the drunken haste he can muster. Unfortunately for him, $activeSlave.slaveName matches his pace with a brisk power-walk, and the citizen soon finds himself face down on the pavement after a swift strike to the back of the head. Word of your giant protector is soon @@.green;the talk of $arcologies[0].name and beyond,@@ with many in the Old World mistakenly believing you are guarded by a warrior twice the height of any man. + $activeSlave.slaveName calmly strides over to the drunken delinquent and simply towers over him with a glower on $his $activeSlave.faceShape face. The man quickly finds himself sobering up and moves to run from the scene with all the drunken haste he can muster. Unfortunately for him, $activeSlave.slaveName matches his pace with a brisk power-walk, and the citizen soon finds himself face-down on the pavement after a swift strike to the back of the head. Word of your giant protector is soon @@.green;the talk of $arcologies[0].name and beyond,@@ with many in the Old World mistakenly believing you are guarded by a warrior twice the height of any man. <<run repX(2500, "event", $activeSlave)>> <<if $activeSlave.prestige < 1>> <<set $activeSlave.prestige = 1,$activeSlave.prestigeDesc = "Word in the arcology is $he is twice the height of any man.">> <</if>> <</replace>> <</link>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 40c313b72694a50904f2f50fb66a54938c0fa806..614bf206d3dde14cab5bab55100ff9559a922194 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -1466,7 +1466,7 @@ tits dominate $his figure, but the real attention getter are $his unique, $activ <<case "huge tits">> -There is a horrible crash from the shower. You rush in to see <<EventNameLink>> face down and covered in soap. $He's uninjured, but $his tits are so huge that, soapy as $he is, $he can't seem to stand again. $His udders have $him pinned to the ground with $his legs sticking out of the shower. $He pleads +There is a horrible crash from the shower. You rush in to see <<EventNameLink>> face-down and covered in soap. $He's uninjured, but $his tits are so huge that, soapy as $he is, $he can't seem to stand again. $His udders have $him pinned to the ground with $his legs sticking out of the shower. $He pleads <<if ($activeSlave.lips > 70)>> through $his huge lips, <<elseif ($activeSlave.lipsPiercing+$activeSlave.tonguePiercing > 2)>> @@ -4084,7 +4084,7 @@ says a third, obviously smitten. "I'd give anything to have a night with $him." Although your life as an arcology owner comes with many associated privileges, extended idleness to bask in your luxury is not often among them. Thankfully, $assistantName knows better than to let you run yourself ragged from the weight of your assorted responsibilities and often allots time in the evenings of your active schedule to simply relax. <br><br> -Of course, no self respecting arcology owner could be expected to enjoy a lazy night of idle relaxation on their own. As you resolve the last of your most pressing responsibilities for the evening, $assistantName directs one of your attentive slaves to gently guide you away from the unending burdens of running your arcology. Leaning against the doorway and wearing a facsimile of what an old world woman might wear on a casual night in, <<EventNameLink>> +Of course, no self respecting arcology owner could be expected to enjoy a lazy night of idle relaxation on their own. As you resolve the last of your most pressing responsibilities for the evening, $assistantName directs one of your attentive slaves to gently guide you away from the unending burdens of running your arcology. Leaning against the doorway and wearing a facsimile of what an old world $woman might wear on a casual night in, <<EventNameLink>> <<if !canTalk($activeSlave)>> asks with a gesture that carries just the right mixture of submission and exaggerated casualness if you'd like to 'hang out.' <<elseif SlaveStatsChecker.checkForLisp($activeSlave)>> @@ -4633,7 +4633,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> "What doe<<s>> that mean <<Master>>?" <</if>> - You quickly approach and catch $him, forcing $his <<if $activeSlave.belly >= 1500>><<if $activeSlave.bellyPreg >= 1500>>gravid <<else>>distended <</if>><</if>>body face down onto the couch<<if $activeSlave.belly >= 100000>> as best you can<</if>>. $He <<if canSee($activeSlave)>>watches you carefully<<else>>listens to your movements<</if>> as you size up $his fully erect + You quickly approach and catch $him, forcing $his <<if $activeSlave.belly >= 1500>><<if $activeSlave.bellyPreg >= 1500>>gravid <<else>>distended <</if>><</if>>body face-down onto the couch<<if $activeSlave.belly >= 100000>> as best you can<</if>>. $He <<if canSee($activeSlave)>>watches you carefully<<else>>listens to your movements<</if>> as you size up $his fully erect <<if $activeSlave.dick == 1>> tiny dick. <<elseif $activeSlave.dick == 2>> @@ -4750,7 +4750,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<set $activeSlave.balls = 0, $activeSlave.health -= 10, $activeSlave.trust -= 20>> <<EventNameDelink $activeSlave>> <<replace "#result">> - You bluntly tell $him $he is becoming potent, and that is something you can't allow to roam unchecked amongst your fertile slaves. You drag $him to the remote surgery and strap $him face down with $his legs spread <<if $activeSlave.belly >= 5000>>$his _belly rounded belly forcing $his rear into the air<</if>>. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He numbly carries on, terrified. + You bluntly tell $him $he is becoming potent, and that is something you can't allow to roam unchecked amongst your fertile slaves. You drag $him to the remote surgery and strap $him face-down with $his legs spread <<if $activeSlave.belly >= 5000>>$his _belly rounded belly forcing $his rear into the air<</if>>. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He numbly carries on, terrified. <</replace>> <</link>> <</if>> @@ -5279,7 +5279,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> You struggle underneath $his grip and manage to wriggle your arms free. You push at the amorous bull and attempt to lift the heavy $girl off you. $activeSlave.slaveName takes this poorly and rams $his gigantic dick straight into your vagina and through your cervix. You pass out from the pain. <br><br> - You awaken some time later, your crotch extremely sore and your belly slightly bloated. Most of $his deposit has flowed back out of you, but you still feel a fair amount sloshing inside you. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. + You awaken some time later, your crotch extremely sore and your belly slightly bloated. Most of $his deposit has flowed back out of you, but you still feel a fair amount sloshing inside you. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. <<= knockMeUp($PC, 100, 0, $activeSlave.ID, 1)>> <<set $activeSlave.penetrativeCount += 4, $penetrativeTotal += 4>> <</if>> @@ -5290,7 +5290,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<replace "#result">> $He is far stronger than you expected and has you trapped in a compromising position. You've seen $activeSlave.slaveName fuck before; $he's a quick shot, only in it to get $his mate pregnant. $He cums so hard $he nearly blacks out; that will be your best chance to escape $him. You question your choice as $his gigantic dick pokes at your crotch, eager to find the egg at the end of the tunnel. $He lacks even the basic understanding of foreplay, you realize, as $he drives $his cock deep into your pussy. You groan with pain at the sheer size of the rod stretching out your poor hole and struggle to hold back the tears once $he starts thrusting. There is no pleasure for you here as $he batters your cervix; should $he force through it, you may not be able to throw $him off. With a loud grunt, $he does just that. $He may be deep seated now, but you aren't going to give up. You feel $him tense up; now's your chance! As $he climaxes, you slip a leg around $his side and push $him with all your might. $He flops over, pulling out as $he spurts $his massive load and nailing you right in the face. You spit the jism out of your mouth and quickly restrain the dribbling bull. <br><br> - Panting, you look over the damage: Your pussy is gaping, there is semen everywhere, and given the steady flow from you, $he likely got some of that ejaculation in you. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you, a fertile woman. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, $he knew you were fertile and went right for the prize; it would be wise to assume you've been impregnated. + Panting, you look over the damage: Your pussy is gaping, there is semen everywhere, and given the steady flow from you, $he likely got some of that ejaculation in you. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you, a fertile _womanP. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, $he knew you were fertile and went right for the prize; it would be wise to assume you've been impregnated. <<= knockMeUp($PC, 20, 0, $activeSlave.ID, 1)>> <<set $activeSlave.penetrativeCount++, $penetrativeTotal++>> <</replace>> @@ -5301,14 +5301,14 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He $He is far stronger than you expected and has you trapped in a compromising position; you shout out for <<if $Bodyguard != 0>>$Bodyguard.slaveName<<elseif $Concubine != 0 && canWalk($Concubine)>>$Concubine.slaveName<<else>>somebody<</if>> to help you. You've seen $activeSlave.slaveName fuck before; $he's a quick shot, only in it to get $his mate pregnant. You question if anyone is coming as $his gigantic dick pokes at your crotch, eager to find the egg at the end of the tunnel. $He lacks even the basic understanding of foreplay, you realize, as $he drives $his cock deep into your pussy. You groan with pain at the sheer size of the rod stretching out your poor hole and struggle to hold back the tears once $he starts thrusting. There is no pleasure for you here as $he batters your cervix; you barely stop yourself from screaming out as $he slams through your final defense <<if $Bodyguard != 0>> <<setLocalPronouns $Bodyguard 2>> - and gets tackled off of you by $Bodyguard.slaveName. After a quick tussle, the amorous cow is restrained and leaking cum on your floor. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. $Bodyguard.slaveName is visibly disturbed by an assault on you happening within _his2 defensive perimeter and @@.hotpink;vows@@ to not allow it to happen again. + and gets tackled off of you by $Bodyguard.slaveName. After a quick tussle, the amorous cow is restrained and leaking cum on your floor. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. $Bodyguard.slaveName is visibly disturbed by an assault on you happening within _his2 defensive perimeter and @@.hotpink;vows@@ to not allow it to happen again. <<set $slaves[$slaveIndices[$Bodyguard.ID]].devotion += 2>> <<elseif $Concubine != 0 && canWalk($Concubine)>> - and gets tackled off of you by $Concubine.slaveName. After a violent struggle, the amorous cow is restrained and leaking cum on your floor. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. $Concubine.slaveName is @@.gold;visibly shaken@@ by the assault and was @@.red;badly beaten@@ by the muscular slave during the fight. + and gets tackled off of you by $Concubine.slaveName. After a violent struggle, the amorous cow is restrained and leaking cum on your floor. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. $Concubine.slaveName is @@.gold;visibly shaken@@ by the assault and was @@.red;badly beaten@@ by the muscular slave during the fight. <<set _c = $slaveIndices[$Concubine.ID]>> <<set $slaves[_c].health -= 40, $slaves[_c].trust -= 5>> <<else>> - and cums directly into your exposed womb. $He backs off, possibly startled by the shouting, giving you the chance to slip away to safety. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, $he knew you were fertile and went right for the prize; it would be wise to assume $he's done $his job well. + and cums directly into your exposed womb. $He backs off, possibly startled by the shouting, giving you the chance to slip away to safety. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, $he knew you were fertile and went right for the prize; it would be wise to assume $he's done $his job well. <<= knockMeUp($PC, 50, 0, $activeSlave.ID)>> <<set $activeSlave.penetrativeCount++, $penetrativeTotal++>> <</if>> @@ -5329,7 +5329,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> _He2 gestures _his2 apologies and points to the bound and gagged $activeSlave.slaveName, before expressing _his2 concerns about your visible state. <</if>> - You do your best to calm _him2 down; this is your fault after all. $activeSlave.slaveName's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. As for the belly, it'll go down soon, you're sure. + You do your best to calm _him2 down; this is your fault after all. $activeSlave.slaveName's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. As for the belly, it'll go down soon, you're sure. <<elseif $Bodyguard != 0>> <<setLocalPronouns $Bodyguard 2>> with $Bodyguard.slaveName sobbing over your swollen belly. @@ -5339,9 +5339,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<else>> _He2 gestures _his2 apologies and points to the bound and gagged $activeSlave.slaveName, before begging you to punish _him2 too for _his2 failures as your guardian. <</if>> - You do your best to calm _him2 down; this is your fault after all. $activeSlave.slaveName's a breeding bull and you, a fertile woman. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. + You do your best to calm _him2 down; this is your fault after all. $activeSlave.slaveName's a breeding bull and you, a fertile _womanP. $He only did what $he was conditioned for; the blame is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. <<else>> - to $activeSlave.slaveName snoring beside you, $his massive cock soft and slightly drooling cum. Most of $his deposit has flowed back out of you, but you're still heavy with sperm. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile woman. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. + to $activeSlave.slaveName snoring beside you, $his massive cock soft and slightly drooling cum. Most of $his deposit has flowed back out of you, but you're still heavy with sperm. You sigh to yourself, knowing you have nobody to blame but yourself for this. $He's a breeding bull and you a fertile _womanP. $He only did what $he was conditioned for; the fault is on you for ignoring the warning signs and not taking the proper precautions. Still, there is no doubt in your mind that @@.lime;you're pregnant@@ with $his child. <</if>> <<= knockMeUp($PC, 100, 0, $activeSlave.ID, 1)>> <<set $activeSlave.penetrativeCount += 4, $penetrativeTotal += 4>> @@ -5923,9 +5923,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <</if>> You tell $assistantName to inform your business contacts that you'll be attending the meeting by telepresence. A camera mounted above you focuses tightly on your face, making it look like you're relaxing, but concealing the fact that you have a naked <<if $activeSlave.physicalAge > 30>> - woman + $woman <<elseif $activeSlave.physicalAge > 18>> - girl + $girl <<elseif $activeSlave.physicalAge > 12>> teen <<else>> @@ -5943,9 +5943,9 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<replace "#result">> You tell $assistantName to cancel the appointment, plant a kiss atop your bedmate's sleeping head, and go back to sleep yourself, with the peerless comfort of a warm, naked <<if $activeSlave.physicalAge > 30>> - woman + $woman <<elseif $activeSlave.physicalAge > 18>> - girl + $girl <<elseif $activeSlave.physicalAge > 12>> teen <<else>> @@ -6972,7 +6972,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He <<replace "#result">> $He's filled with anxiety as you <<if $activeSlave.belly < 1500>> - lay $him face down on your desk, + lay $him face-down on your desk, <<else>> direct $him to lay on $his side on your desk<<if $activeSlave.belly >= 300000>> with $his _belly belly hanging over the edge<</if>>, <</if>> @@ -7715,7 +7715,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<link "Extirpate this foolishness with pain">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You seize $him and begin to bind $him for appropriate punishment. $activeSlave.slaveName does not resist you physically at first. $He finds $himself tied bent over your desk, face down, with $his arms locked behind $him<<if $activeSlave.belly >= 1500>> and $his _belly <<if $activeSlave.bellyPreg >= 1500>>pregnant <</if>>belly hanging off the edge<</if>>. $He struggles a little when you insert your cock into $his <<if ($activeSlave.anus == 1)>>poor little anus<<elseif ($activeSlave.anus == 2)>>whore's butt<<else>>gaping rear end<</if>>, but $his real agony begins when you place $his arms in an inescapable joint lock and apply a little pressure. It doesn't damage $him, but it easily causes more pain than $he is capable of resisting. $He does a little dance within $his bindings, squealing and involuntarily clenching you nicely with $his anal ring. You require $him to recite the litany "My name i<<s>> <<print _slavename>>!", coaching $him with alternate orders and agonizing correction until $he's screaming every word at the top of $his lungs in an endless wail. $His screeching rises and falls as $he feels the burning sensation of your merciless use of $his ass, but $he works $his lungs hard to avoid as much pain as $he can. When you've climaxed and cast off $his bindings, you make $him repeat $his name one last time as $he stiffly rubs $his abused arms and anus. $He does, @@.gold;without hesitation.@@ + You seize $him and begin to bind $him for appropriate punishment. $activeSlave.slaveName does not resist you physically at first. $He finds $himself tied bent over your desk, face-down, with $his arms locked behind $him<<if $activeSlave.belly >= 1500>> and $his _belly <<if $activeSlave.bellyPreg >= 1500>>pregnant <</if>>belly hanging off the edge<</if>>. $He struggles a little when you insert your cock into $his <<if ($activeSlave.anus == 1)>>poor little anus<<elseif ($activeSlave.anus == 2)>>whore's butt<<else>>gaping rear end<</if>>, but $his real agony begins when you place $his arms in an inescapable joint lock and apply a little pressure. It doesn't damage $him, but it easily causes more pain than $he is capable of resisting. $He does a little dance within $his bindings, squealing and involuntarily clenching you nicely with $his anal ring. You require $him to recite the litany "My name i<<s>> <<print _slavename>>!", coaching $him with alternate orders and agonizing correction until $he's screaming every word at the top of $his lungs in an endless wail. $His screeching rises and falls as $he feels the burning sensation of your merciless use of $his ass, but $he works $his lungs hard to avoid as much pain as $he can. When you've climaxed and cast off $his bindings, you make $him repeat $his name one last time as $he stiffly rubs $his abused arms and anus. $He does, @@.gold;without hesitation.@@ <<set $activeSlave.trust -= 5>> <<= AnalVCheck()>> <</replace>> @@ -7857,9 +7857,9 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<if $activeSlave.belly >= 300000>> You carefully balance the protesting, defenseless torso atop $his own _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>stomach<</if>>. <<elseif $activeSlave.belly >= 5000>> - You place the protesting, defenseless torso on your lap, face down with $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnant <</if>> belly between your legs. + You place the protesting, defenseless torso on your lap, face-down with $his _belly <<if $activeSlave.bellyPreg >= 3000>>pregnant <</if>> belly between your legs. <<else>> - You place the protesting, defenseless torso on your desk, face down. + You place the protesting, defenseless torso on your desk, face-down. <</if>> <</if>> You spank $him severely, leaving $his buttocks bright pink. $He must count the strokes or have $his punishment start over. Sobbing, $he counts @@ -11218,7 +11218,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<elseif $activeSlave.belly < 1500>> lie on $his side. <<else>> - lie face down. + lie face-down. <</if>> $He <<if $activeSlave.belly >= 10000>>struggles to heft $his <<if $activeSlave.bellyPreg >= 3000>>gravid <</if>>body<<else>>clambers<</if>> up, and you let $his lie there for a while, tortured by anticipation and arousal, before giving $his nearest buttock a harsh open-handed slap. The shock and pain send $him over the edge immediately, and $he grinds forward into the desk involuntarily; the feeling of the cool desk against $his <<if ($activeSlave.dick > 0)>>dickhead<<elseif $activeSlave.vagina == -1>>crotch<<else>>mons<</if>> slams $him into a second climax, and $he sobs with overstimulation. You keep $him there for a good long while, using $him as a desktop toy that makes interesting noises when you hit it. <</switch>> @@ -11394,7 +11394,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<link "Have some fun with $him once $he's using the milkers">> <<EventNameDelink $activeSlave>> <<replace "#result">> - $activeSlave.slaveName is face down on a special bench much like one used for massages<<if $activeSlave.belly >= 1500>>, though with a hole for $his <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> to fit into<</if>>, with $his breasts hanging down so the milkers can work away at $his nipples. As such, $his back and ass are on display as $he grunts and groans with relief. $He starts at your hand on $his back but <<if $activeSlave.devotion > 20>>quickly<<else>>slowly<</if>> relaxes. + $activeSlave.slaveName is face-down on a special bench much like one used for massages<<if $activeSlave.belly >= 1500>>, though with a hole for $his <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> to fit into<</if>>, with $his breasts hanging down so the milkers can work away at $his nipples. As such, $his back and ass are on display as $he grunts and groans with relief. $He starts at your hand on $his back but <<if $activeSlave.devotion > 20>>quickly<<else>>slowly<</if>> relaxes. <<if canDoVaginal($activeSlave)>> The stimulation of the milking has $his soaking wet, and $he whimpers with pleasure as you enter $his sopping pussy. $He's so wet that $his plentiful vaginal secretions make it <<if canDoAnal($activeSlave)>> @@ -13420,7 +13420,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<if $activeSlave.belly >= 5000>> on $his side on it. You lie next to $him and <<else>> - face down on it. You + face-down on it. You <</if>> run your hands across $his sweaty <<if $seeRace == 1>>$activeSlave.race <</if>>muscles before giving $him a thorough, skillful and very intense massage. $He moans and grunts as you work the lactic acid out of $his muscles, slowly reducing $him to a puddle of ripped sex slave. As you're rubbing $him down to finish the massage, $he meekly begs you to fuck $him. <<if !canDoVaginal($activeSlave) && !canDoAnal($activeSlave)>> @@ -13566,9 +13566,9 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<if $activeSlave.belly >= 300000>> lean over $his _belly belly<<if $PC.dick == 0>> while you don a strap-on<</if>>. <<elseif $activeSlave.belly >= 5000>> - lean face down into the couch cushions<<if $PC.dick == 0>> while you don a strap-on<</if>>. + lean face-down into the couch cushions<<if $PC.dick == 0>> while you don a strap-on<</if>>. <<else>> - lie face down on the couch<<if $PC.dick == 0>> while you don a strap-on<</if>>. + lie face-down on the couch<<if $PC.dick == 0>> while you don a strap-on<</if>>. <</if>> $He does doubtfully, only realizing what you intend when $he feels <<if $PC.dick == 0>>the strap-on<<else>>your dickhead<</if>> forcing its way between $his narrow buttcheeks. <<= AnalVCheck()>> @@ -15576,7 +15576,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <br><<link "Cum on $his face">> <<EventNameDelink $activeSlave>> <<replace "#result">> - You stand over $him, quietly masturbating while watching $him sleep. Several of $his fellow slaves come and go as you do so, but if they're surprised by the sight, they have the presence of mind not to show it. You fancy yourself a bit of a marks<<if $PC.title == 1>>man<<else>>woman<</if>>, and you don't feel the need to bend over $him to score good hits. Your load comes in three main jets: the first hits $him on the nipple, the second tracks up $his sternum and throat, and the third splashes full across $his face as $his eyes fly open<<if $PC.vagina == 1>>, each of these accompanied by some less directionally perfect girlcum<</if>>. $He sputters with surprise and then outrage, but <<if !canSee($activeSlave)>>once $he recognizes your <<if canTaste($activeSlave)>>taste<<else>>presence<</if>> and<<else>>then $he<</if>> realizes who it is standing over $him <<if canSee($activeSlave)>>and<<else>>does $he<</if>> @@.gold;freezes in terror.@@ + You stand over $him, quietly masturbating while watching $him sleep. Several of $his fellow slaves come and go as you do so, but if they're surprised by the sight, they have the presence of mind not to show it. You fancy yourself a bit of a marks<<= _womanP>>, and you don't feel the need to bend over $him to score good hits. Your load comes in three main jets: the first hits $him on the nipple, the second tracks up $his sternum and throat, and the third splashes full across $his face as $his eyes fly open<<if $PC.vagina == 1>>, each of these accompanied by some less directionally perfect girlcum<</if>>. $He sputters with surprise and then outrage, but <<if !canSee($activeSlave)>>once $he recognizes your <<if canTaste($activeSlave)>>taste<<else>>presence<</if>> and<<else>>then $he<</if>> realizes who it is standing over $him <<if canSee($activeSlave)>>and<<else>>does $he<</if>> @@.gold;freezes in terror.@@ <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50>> $He's quick, and $he immediately realizes <<elseif $activeSlave.intelligence+$activeSlave.intelligenceImplant >= -15>> @@ -18470,7 +18470,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address <<case "be the Schoolteacher">>($his office in $schoolroomName, where $he'll decide today's lesson), <<case "be the Stewardess">>($his office in $servantsQuartersName, where $he'll divvy out today's tasks), <<case "be the Milkmaid">>($dairyName, to check on the cattle), - <<case "be the Farmer">><<($farmyardName, to tend to the crops), + <<case "be the Farmer">>($farmyardName, to tend to the crops), <<case "be the Wardeness">>($cellblockName, to oversee the inmates), <<case "be your Concubine">>(your bed), <<case "be the Nurse">>($clinicName, to check on the patients), diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw index 71acb6f942c242ce81e7ef69fd797dc0d9050f71..18fac0b47ff03305456796fa86ea478344ea1ae3 100644 --- a/src/uncategorized/costsReport.tw +++ b/src/uncategorized/costsReport.tw @@ -817,7 +817,7 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 || <<set _total = 0>> <<set _SL = $slaves.length>> <<for $i = 0; $i < _SL; $i++>> <<capture $i>> - <br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> + <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> [[$slaves[$i].slaveName|Slave Interact][$activeSlave = $slaves[$i]]] will $slaves[$i].assignment. <<SlaveExpenses $slaves[$i]>> <</capture>> diff --git a/src/uncategorized/costsReportSlaves.tw b/src/uncategorized/costsReportSlaves.tw index 68276158fa87dfcb7adb8d0ab89bb9287d745226..3399fecd92dfe8a6509c01412263bd4e8a05718d 100644 --- a/src/uncategorized/costsReportSlaves.tw +++ b/src/uncategorized/costsReportSlaves.tw @@ -6,7 +6,7 @@ <<set _total = 0>> <<set _SL = $slaves.length>> <<for $i = 0; $i < _SL; $i++>> <<capture $i>> - <br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> + <br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> [[$slaves[$i].slaveName|Slave Interact][$activeSlave = $slaves[$i]]] will $slaves[$i].assignment. <<SlaveExpenses $slaves[$i]>> <</capture>> diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw index d580ad16b373492390139b04f2bc2154681b7e80..57513060bb3d2faac5679d4aabc1513449cb8089 100644 --- a/src/uncategorized/genericPlotEvents.tw +++ b/src/uncategorized/genericPlotEvents.tw @@ -1299,7 +1299,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your <<set $activeSlave.sexualFlaw = "none">> <<set $activeSlave.behavioralFlaw = "odd">> <<setLocalPronouns $activeSlave>> - You decide to drop the really rare specimen, and place your taser slug in $his leg. $He goes stiff and slumps to the grass, squealing with pain since the taser robbed $his ability to break $his fall, leading $him to land on nearly <<if $showInches == 2>>a foot<<else>>thirty centimeters<</if>> of flaccid cock. Your taser slug is linked to $assistantName, who hits $him again whenever $he tries to rise. Meanwhile, an athletic slave has successfully crossed the lawn, and is sobbing with joy as _hisU manumission forms are completed. Apathy fills your supine prize's eyes, and $he simply lies face down and quiescent. $He obeys orders to roll over so you can see what you've gotten, however. $He's clearly a work of long and careful hormonal treatment. $He has no implants, but sports big breasts, feminine hips, a nice butt, plush lips, and a huge dick. When you fuck $his pussy and then $his anus, $he even gets a massive erection, showing that $he isn't even on hormone treatment to maintain this unusual set of attributes. + You decide to drop the really rare specimen, and place your taser slug in $his leg. $He goes stiff and slumps to the grass, squealing with pain since the taser robbed $his ability to break $his fall, leading $him to land on nearly <<if $showInches == 2>>a foot<<else>>thirty centimeters<</if>> of flaccid cock. Your taser slug is linked to $assistantName, who hits $him again whenever $he tries to rise. Meanwhile, an athletic slave has successfully crossed the lawn, and is sobbing with joy as _hisU manumission forms are completed. Apathy fills your supine prize's eyes, and $he simply lies face-down and quiescent. $He obeys orders to roll over so you can see what you've gotten, however. $He's clearly a work of long and careful hormonal treatment. $He has no implants, but sports big breasts, feminine hips, a nice butt, plush lips, and a huge dick. When you fuck $his pussy and then $his anus, $he even gets a massive erection, showing that $he isn't even on hormone treatment to maintain this unusual set of attributes. <<run newSlave($activeSlave)>> /* skip New Slave Intro */ <</replace>> <</link>> diff --git a/src/uncategorized/matchmaking.tw b/src/uncategorized/matchmaking.tw index b10c5694b3e965c9f6986216ff474d51b5121702..dd884f98f2f89e5d5ab15c90e087add69e27bc40 100644 --- a/src/uncategorized/matchmaking.tw +++ b/src/uncategorized/matchmaking.tw @@ -378,7 +378,7 @@ Despite $his devotion and trust, $he is still a slave, and probably knows that $ <</if>> */ -<<if $seeImages == 1>><br style="clear:both" /><</if>> +<<if $seeImages == 1>><br style="clear:both"><</if>> <br><br>__Put $him with another worshipful <<if $eventSlave.relationship == -2>>emotionally bonded slave<<else>>emotional slut<</if>>:__ <<set $Flag = 1>> diff --git a/src/uncategorized/neighborsFSAdoption.tw b/src/uncategorized/neighborsFSAdoption.tw index d8b6a3b8852956fddb7722dedf4026654caa47b8..67aaf8314b7bab1bdfb2a2835d5bab2c86f1c0a5 100644 --- a/src/uncategorized/neighborsFSAdoption.tw +++ b/src/uncategorized/neighborsFSAdoption.tw @@ -337,7 +337,7 @@ societal development. Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Gender Radicalism,@@ since $he's a walking, swinging argument for dickgirls. <<set $arcologies[$i].FSGenderRadicalist = 5>><<break>> <<elseif $leaders[$j].pregKnown == 1 || $leaders[$j].bellyPreg > 1500>> - Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Gender Fundamentalism,@@ since its citizens find leadership by a pregnant woman fascinating. + Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Gender Fundamentalism,@@ since its citizens find leadership by a pregnant $woman fascinating. <<set $arcologies[$i].FSGenderFundamentalist = 5>><<break>> <</if>> <</if>> diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 59ab8dcea55209bf11d75222b5b1b6ab5bd8b60b..b4665d1217a5b791bf4c2ed5213a2094577da3c6 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -698,7 +698,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<if ($activeSlave.indentureRestrictions <= 0) && ($seeExtreme == 1)>> | <<link "Cruelly castrate $him">> <<replace "#introResult">> - You rise from your desk and move in close, wordlessly dominating $him without touch, tempting and overawing $him until $he's desperate with desire, $his prick stiff as iron. $He follows you willingly into the autosurgery and even allows you to strap $him in, face down, without comment. $His fuckhole welcomes your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and $he gasps with pleasure. $He climaxes with indecent speed, dripping $his cum onto the surgery floor. You keep fucking $him, but lean forward to whisper to $him that that was $his last hard-on. $He's completely confused and says nothing, but gradually realizes what the numb feeling around $his ballsack means. $He @@.gold;screams with horror@@ and @@.mediumorchid;sobs disconsolately@@ as the autosurgery disengages from $his clipped genitals and you disengage from $his <<if $PC.dick == 1>>cum-filled<<else>>wilting<</if>> butthole. $He gingerly stumbles back to your office with you and, without even being ordered to, arranges $himself on the couch with $his fuckhole ready. The gelding does affect $his @@.red;health@@ somewhat. + You rise from your desk and move in close, wordlessly dominating $him without touch, tempting and overawing $him until $he's desperate with desire, $his prick stiff as iron. $He follows you willingly into the autosurgery and even allows you to strap $him in, face-down, without comment. $His fuckhole welcomes your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and $he gasps with pleasure. $He climaxes with indecent speed, dripping $his cum onto the surgery floor. You keep fucking $him, but lean forward to whisper to $him that that was $his last hard-on. $He's completely confused and says nothing, but gradually realizes what the numb feeling around $his ballsack means. $He @@.gold;screams with horror@@ and @@.mediumorchid;sobs disconsolately@@ as the autosurgery disengages from $his clipped genitals and you disengage from $his <<if $PC.dick == 1>>cum-filled<<else>>wilting<</if>> butthole. $He gingerly stumbles back to your office with you and, without even being ordered to, arranges $himself on the couch with $his fuckhole ready. The gelding does affect $his @@.red;health@@ somewhat. <</replace>> <<set $activeSlave.devotion -= 10>> <<set $activeSlave.trust -= -10>> @@ -1130,7 +1130,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<if $activeSlave.balls > 0>> <<link "Geld $him">> <<replace "#introResult">> - You drag $him to the remote surgery and strap $his face down with $his legs spread. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He numbly carries on, terrified. + You drag $him to the remote surgery and strap $him face-down with $his legs spread. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. When $he does, $his poor mind scarcely processes the @@.gold;horror@@ of what's happened. $He numbly carries on, terrified. <<if $arcologies[0].FSGenderRadicalist != "unset">> Society @@.green;approves@@ of your promptly gelding $him; this advances the idea that all societal inferiors can be made female. <<= FSChange("GenderRadicalist", 2)>> @@ -1146,7 +1146,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</if>> <<link "Remove $his genitalia">> <<replace "#introResult">> - You drag $him to the remote surgery and strap $his face down with $his legs spread. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. Eventually, though, $he realizes that $he's been reduced to the status of a genital null: the only remaining feature of $his newly smooth groin is a tiny soft hole, $his urethra. + You drag $him to the remote surgery and strap $him face-down with $his legs spread. $He doesn't understand what's happening, since the anesthetics totally deprive $him of any sensation. $He's so drugged and drowsy with @@.red;surgical recovery@@ that it takes a while for $him to figure out what's happened. Eventually, though, $he realizes that $he's been reduced to the status of a genital null: the only remaining feature of $his newly smooth groin is a tiny soft hole, $his urethra. <<if $activeSlave.scrotum > 0>>$He retains $his ballsack beneath this, though of course you can always remove that later if you decide to geld $him, too.<</if>> $He almost passes out from @@.gold;sheer horror.@@ Instead, $he collapses and tries desperately to vomit. Fortunately, $he doesn't have anything to bring up. $He's reduced to impotent weeping and retching as $he begins to process the stress of having had $his parts cut off. <<if $arcologies[0].FSRestart != "unset">> @@ -1165,7 +1165,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <br> <<link "Clip $his Achilles tendons">> <<replace "#introResult">> - You drag $him to the remote surgery and strap $his face down with $his legs bare. $He doesn't understand what's coming for a while, even as $his lower legs are carefully cleaned and disinfected. $He can't see the approaching surgical manipulators, but eventually $he feels a tugging at $his lower legs even through the local anesthetic. $He gets one squeal of protest out before the surgery begins to apply healing agents. $He now requires special heels to walk, and will @@.mediumorchid;remember $his status@@ with every @@.red;painful@@ step $he takes. $He's barefoot, crawling, and @@.gold;frightened@@ for now, until you decide to give $him heels — if you ever do. + You drag $him to the remote surgery and strap $him face-down with $his legs bare. $He doesn't understand what's coming for a while, even as $his lower legs are carefully cleaned and disinfected. $He can't see the approaching surgical manipulators, but eventually $he feels a tugging at $his lower legs even through the local anesthetic. $He gets one squeal of protest out before the surgery begins to apply healing agents. $He now requires special heels to walk, and will @@.mediumorchid;remember $his status@@ with every @@.red;painful@@ step $he takes. $He's barefoot, crawling, and @@.gold;frightened@@ for now, until you decide to give $him heels — if you ever do. <</replace>> <<set $activeSlave.heels = 1>> <<set $activeSlave.devotion -= 5>> @@ -1567,6 +1567,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</link>> <<if $PC.vagina == 1 && $activeSlave.dick > 0 && canAchieveErection($activeSlave)>> + <<setPlayerPronouns>> <br> <<link "Dominate $his penis and demonstrate $his place">> <<replace "#introResult">> @@ -1613,7 +1614,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<replace "#introResult">> You aggressively approach $activeSlave.slaveName, forcing your pregnancy directly into $his <<if $activeSlave.height > 175>>stomach<<elseif $activeSlave.height < 155>>face<<else>>chest<</if>> until $he has no choice but to be pushed to the ground. You quickly straddle $his face, forcing your oozing cunt over $his mouth as you eagerly stroke $his cock to full length. <<if $activeSlave.fetish == "pregnancy">> - $He groans with disappointment as your pregnant pussy leaves $his reach, though $his displeasure is short lived as you greedily take $his entire dick into your aching snatch. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He loves every minute of it, especially when $he feels your body tense up as $he lets loose $his load deep into you. Where most slaves would be begging for mercy, $he @@.hotpink;eagerly complies@@ as you adjust yourself and begin round two. You don't know what came over you, but when you wake up, you find $he's resting peacefully under your gravid mass. <<if $activeSlave.fetishKnown == 0>>It seems $he likes @@.green;being a pregnant woman's plaything.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and the look on $his face confirms it.<</if>> A kick from within startles you from your thoughts; it would appear your child agrees that you'll have to have another ride sometime. + $He groans with disappointment as your pregnant pussy leaves $his reach, though $his displeasure is short lived as you greedily take $his entire dick into your aching snatch. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He loves every minute of it, especially when $he feels your body tense up as $he lets loose $his load deep into you. Where most slaves would be begging for mercy, $he @@.hotpink;eagerly complies@@ as you adjust yourself and begin round two. You don't know what came over you, but when you wake up, you find $he's resting peacefully under your gravid mass. <<if $activeSlave.fetishKnown == 0>>It seems $he likes @@.green;being a pregnant _womanP's plaything.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and the look on $his face confirms it.<</if>> A kick from within startles you from your thoughts; it would appear your child agrees that you'll have to have another ride sometime. <<set $activeSlave.devotion += 15>> <<else>> $He coughs as your pregnant pussy vacates $his face, though $his relief is short lived as you greedily slam yourself down onto $his waiting dick. You ride $him mercilessly, frequently smacking $him with your heavy belly. $He hates every minute of it, choosing to alternate between begging you to stop and just openly weeping. You cum hard as you watch the look on $his face as $he unwillingly cums deep inside you. $He cries out in protest as you continue raping $him, but you don't care. All that matters is your satisfaction. You are eventually awoken by desperate struggle to escape from beneath your gravid mass; $he quickly regrets $his choices as you remount $him for one last go. $He now @@.hotpink;better understands $his place as a toy@@ and is @@.gold;terrified@@ of your insatiable lust. @@ -1647,10 +1648,10 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</if>> $He tries to squirm away from the moist spot growing under $his cheek, but you reveal your nipple and carefully direct $his mouth over it. <<if $activeSlave.fetish == "pregnancy">> - Slowly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your <<if $PC.dick == 1>>growing erection and enthusiastically begins pumping away. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<<else>>wet pussy and enthusiastically begins rubbing your clit. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<</if>>. Before long you find yourself bucking your hips with lust, a queue for you to release $him from your nipple so $he may slide down your gravid dome of a belly to finish you off. Happy to serve $his pregnant <<= WrittenMaster($activeSlave)>>, $he returns to your chest, happy to relieve you of the pressure building in your neglected breast. <<if $activeSlave.fetishKnown == 0>>Judging by that show, @@.green;$he savors getting to be with a pregnant woman.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and $his eagerness to serve a pregnant woman proves that.<</if>> A kick from within startles you from your thoughts; as you reach to soothe your child, you find your new slave @@.mediumaquamarine;already doting on it.@@ $He's already starting to @@.hotpink;show understanding of $his place.@@ + Slowly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your <<if $PC.dick == 1>>growing erection and enthusiastically begins pumping away. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<<else>>wet pussy and enthusiastically begins rubbing your clit. You clutch your pervy $girl closer to you as $he caresses your pregnancy with one hand and gets you off with the other<</if>>. Before long you find yourself bucking your hips with lust, a queue for you to release $him from your nipple so $he may slide down your gravid dome of a belly to finish you off. Happy to serve $his pregnant <<= WrittenMaster($activeSlave)>>, $he returns to your chest, happy to relieve you of the pressure building in your neglected breast. <<if $activeSlave.fetishKnown == 0>>Judging by that show, @@.green;$he savors getting to be with a pregnant _womanP.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a pregnancy fetish and $his eagerness to serve a pregnant _womanP proves that.<</if>> A kick from within startles you from your thoughts; as you reach to soothe your child, you find your new slave @@.mediumaquamarine;already doting on it.@@ $He's already starting to @@.hotpink;show understanding of $his place.@@ <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> <<elseif $activeSlave.fetish == "boobs">> - Eagerly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your neglected breast. $He massages it, careful not to encourage your lactation too much, as $he greedily sucks you dry. $He wastes no time in swapping to your other nipple, shifting $his ministrations to the one the just left. By the time your reserves are tapped out, both you and $he are quite content. You permit $him to rest against your chest for a little before you send $him on $his way. <<if $activeSlave.fetishKnown == 0>>Judging by $his enthusiasm, @@.green;$he savors getting $his mouth close to a pair of boobs.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a breast fetishist and $his eagerness to lighten a lactating woman proves that.<</if>> A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your child that you'll make sure to save some milk for them. $He's already starting to @@.hotpink;show understanding of $his place@@ and even @@.mediumaquamarine;beginning to build trust@@ with you. + Eagerly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, a wasted effort as a hand sneaks its way to your neglected breast. $He massages it, careful not to encourage your lactation too much, as $he greedily sucks you dry. $He wastes no time in swapping to your other nipple, shifting $his ministrations to the one the just left. By the time your reserves are tapped out, both you and $he are quite content. You permit $him to rest against your chest for a little before you send $him on $his way. <<if $activeSlave.fetishKnown == 0>>Judging by $his enthusiasm, @@.green;$he savors getting $his mouth close to a pair of boobs.@@<<set $activeSlave.fetishKnown = 1>><<else>>You knew $he had a breast fetishist and $his eagerness to lighten a lactating _womanP proves that.<</if>> A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your child that you'll make sure to save some milk for them. $He's already starting to @@.hotpink;show understanding of $his place@@ and even @@.mediumaquamarine;beginning to build trust@@ with you. <<set $activeSlave.devotion += 15, $activeSlave.trust += 15>> <<else>> Reluctantly $he begins to suckle from your swollen breast. You gently brush $his head as you try to hold back your pleasure, but it is too much. As $he drinks deeper, you begin moaning with relief. At first $he tenses at <<if canHear($activeSlave)>>the sound<<else>>your body's shuddering<</if>>, fearing punishment, but soon realizes you have no intent on @@.mediumaquamarine;harming $him.@@ $He allows you to dote over $him as if $he were your child, carefully moving to your other breast once the first runs dry. As $he drinks, $he begins to massage your taut middle, $his touch soft and gentle. When you both finish, you push $him to $his feet and send $him on $his way. @@.hotpink;$He stays and offers a hand to help you to your feet.@@ You are surprised by this display; it might be obedience, but $he also may view you in your gravid state as someone weak. As $he helps you back to your desk, $he shoulders all of your weight. It would appear $he is putting you first, for now. diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index 1c7c4fb5bbe624165e3cbd59ce83926c2c93674d..dde2ff781bdf5821fd11a45ddc39a616e08159b7 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -196,7 +196,7 @@ Main menu slave tabs are <</if>> <</if>> -<br /> +<br> The slave Quick list in-page scroll-to is <<if $useSlaveListInPageJSNavigation != 1>> @@ -254,7 +254,7 @@ Master Suite report details such as slave changes are <</if>> /* Accordion 000-250-006 */ -<br /> +<br> Accordion effects on weekly reports are <<if ($useAccordion != 1)>> @@.red;DISABLED.@@ [[Enable|Options][$useAccordion = 1]] diff --git a/src/uncategorized/personalAssistantAppearance.tw b/src/uncategorized/personalAssistantAppearance.tw index 5019e7106d7395c968ce8574b54d09ddcee4e3b1..605a154263cdc67c0cbd31f40a74b531911030f5 100644 --- a/src/uncategorized/personalAssistantAppearance.tw +++ b/src/uncategorized/personalAssistantAppearance.tw @@ -398,7 +398,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF <<if ($cockFeeder == 1) && (_paSeed == 1)>> A recognizable little representation of one of your slaves is suckling at _hisA milky tits. The slave must be down in the kitchen, getting a meal out of the food dispensers. The goddess notices you watching, and smiles while _heA cradles the slave to _hisA nourishing bosom. <<elseif ($suppository == 1) && (_paSeed == 2)>> - A recognizable little representation of one of your slaves is laying face down in _hisA lap, letting the goddess slowly but firmly put more and more of _hisA hand up the slave's butt. The slave must be receiving _hisU drugs from one of the dildo dispensers. The slave writhes under the strain, and the goddess starts stroking _hisU back to calm _himU down. + A recognizable little representation of one of your slaves is laying face-down in _hisA lap, letting the goddess slowly but firmly put more and more of _hisA hand up the slave's butt. The slave must be receiving _hisU drugs from one of the dildo dispensers. The slave writhes under the strain, and the goddess starts stroking _hisU back to calm _himU down. <<elseif ($masturbationAllowed == 1) && (_paSeed == 3)>> _HeA's having sex with a recognizable little representation of one of your slaves, kissing deeply and pulling _himU tight to _hisA pillowy chest. The slave must be using one of the penthouse's many vibrators. _HeA sees you watching and lays farther back, balancing the slave atop _hisA stomach and reaching down to fondle more thoroughly. <<elseif (_paSeed == 4)>> @@ -574,7 +574,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF <<if ($cockFeeder == 1) && (_paSeed == 1)>> A recognizable little representation of one of your slaves is suckling at _hisA milky tits, _hisU stomach bloated with milk. The slave must be down in the kitchen, getting a meal out of the food dispensers. The goddess notices you watching, and smiles while _heA cradles the swollen slave to _hisA nourishing bosom. <<elseif ($suppository == 1) && (_paSeed == 2)>> - A recognizable little representation of one of your slaves is laying face down in _hisA lap, letting the goddess slowly but firmly put more and more of _hisA hand up the slave's butt. The slave must be receiving _hisU drugs from one of the dildo dispensers. The slave writhes under the strain, and the goddess starts stroking _hisU back to calm _himU down. + A recognizable little representation of one of your slaves is laying face-down in _hisA lap, letting the goddess slowly but firmly put more and more of _hisA hand up the slave's butt. The slave must be receiving _hisU drugs from one of the dildo dispensers. The slave writhes under the strain, and the goddess starts stroking _hisU back to calm _himU down. <<elseif ($masturbationAllowed == 1) && (_paSeed == 3)>> _HeA's having sex with a recognizable little representation of one of your slaves, kissing deeply and pulling _himU tight to _hisA pillowy chest. The slave must be using one of the penthouse's many vibrators. _HeA sees you watching and lays farther back, balancing the slave atop _hisA stomach and reaching down to fondle more thoroughly. <<elseif (_paSeed == 4)>> diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw index bff03653c80555b43fba7e61d847d7e577b42551..c3573e6ba1f2de73ff5291fb9adf390f2318289a 100644 --- a/src/uncategorized/reRecruit.tw +++ b/src/uncategorized/reRecruit.tw @@ -2009,26 +2009,29 @@ <<case "female recruit">> <<setLocalPronouns $HeadGirl 2>> +<<setSpokenLocalPronouns $activeSlave $HeadGirl>> -Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers a girl into your office. $He looks very young, like a dissolute party girl. $He bites $his lip nervously when $he sees you, and looks to $HeadGirl.slaveName for guidance. $HeadGirl.slaveName nods at $him reassuringly, so $he explains $himself. +Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers a $girl into your office. $He looks very young, like a dissolute party $girl. $He bites $his lip nervously when $he sees you, and looks to $HeadGirl.slaveName for guidance. $HeadGirl.slaveName nods at $him reassuringly, so $he explains $himself. <br><br> -"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and _he2 wa<<s>> ju<<s>>t <<s>>o gra<<c>>eful and beautiful and _he2 <<s>>eemed <<s>>o confident in what _he2 wa<<s>> doing and who _he2 wa<<s>> and I talked to _him2 and _he2 <<s>>aid _he2 wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>> and <<s>>tuff." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. +"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and <<he 2>> wa<<s>> ju<<s>>t <<s>>o gra<<c>>eful and beautiful and <<he 2>> <<s>>eemed <<s>>o confident in what <<he 2>> wa<<s>> doing and who <<he 2>> wa<<s>> and I talked to _him2 and <<he 2>> <<s>>aid <<he 2>> wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>> and <<s>>tuff." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. <<case "male recruit">> <<setLocalPronouns $HeadGirl 2>> +<<setSpokenLocalPronouns $activeSlave $HeadGirl>> Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers an androgynous young person into your office. $He's dressed as a girl and acts like one. $He looks very young, like a dissolute party girl. $He bites $his lip nervously when $he sees you, and looks to $HeadGirl.slaveName for guidance. $HeadGirl.slaveName nods at $him reassuringly, so $he explains $himself. <br><br> -"<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and _he2 wa<<s>> ju<<s>>t <<s>>o beautiful and ha<<s>> a dick like me and _he2 <<s>>eemed <<s>>o confident in what _he2 wa<<s>> doing and who _he2 wa<<s>> and I talked to _him2 and _he2 <<s>>aid _he2 wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>>." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. +"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm, um, bored, I gue<<ss>>. I go to club<<s>> and get drunk and fuck guy<<s>> and it'<<s>> ju<<s>>t kinda boring. I thought it would be different when I turned <<= numberToWords($activeSlave.actualAge)>>, but that wa<<s>> a couple month<<s>> ago and, well, nothing'<<s>> different. I <<s>>aw $HeadGirl.slaveName and <<he 2>> wa<<s>> ju<<s>>t <<s>>o beautiful and ha<<s>> a dick like me and <<he 2>> <<s>>eemed <<s>>o confident in what <<he 2>> wa<<s>> doing and who <<he 2>> wa<<s>> and I talked to _him2 and <<he 2>> <<s>>aid <<he 2>> wa<<s>> your Head Girl and... I want to be like _him2. Can I be your <<s>>lave? I'd be good, I'm good at <<s>>ucking dick<<s>>." $He seems to be a little naïve about sexual slavery, but there's no need to tell $him that. <<case "whore recruit">> <<setLocalPronouns $HeadGirl 2>> +<<setSpokenLocalPronouns $activeSlave $HeadGirl>> -Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers a working girl into your office. $He looks like a classic street hooker, and $he's clearly had a rough time recently. $He needs no prompting to explain $himself, and $he does so without embarrassment. +Your Head Girl sends you a discreet message that _he2 may have found a slave for you. $HeadGirl.slaveName duly ushers a working $girl into your office. $He looks like a classic street hooker, and $he's clearly had a rough time recently. $He needs no prompting to explain $himself, and $he does so without embarrassment. <br><br> -"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm a <<s>>treet whore. Working girl<<s>> get to know each other, <<s>>o I know $HeadGirl.slaveName pretty well. I've been having a bad time on the <<s>>treet<<s>>, and la<<s>>t night a john beat on me pretty good. I'm broke and I'm <<s>>ick of thi<<s>>. Being free i<<s>>n't worth shit. $HeadGirl.slaveName like<<s>> you and _he2 <<s>>eem<<s>> to do OK. <<S>>o, can I be your <<s>>lave? I'm a good bet, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>. I'd be happy enough working for you a<<s>> a <<s>>lave whore if you keep me healthy and <<s>>afe, and I'm a good fuck." +"<<if $PC.title != 0>><<S>>ir<<else>>Ma'am<</if>>, my name i<<s>> $activeSlave.slaveName. I'm a <<s>>treet whore. Working <<= $girl>><<s>> get to know each other, <<s>>o I know $HeadGirl.slaveName pretty well. I've been having a bad time on the <<s>>treet<<s>>, and la<<s>>t night a john beat on me pretty good. I'm broke and I'm <<s>>ick of thi<<s>>. Being free i<<s>>n't worth shit. $HeadGirl.slaveName like<<s>> you and <<he 2>> <<s>>eem<<s>> to do OK. <<S>>o, can I be your <<s>>lave? I'm a good bet, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>. I'd be happy enough working for you a<<s>> a <<s>>lave whore if you keep me healthy and <<s>>afe, and I'm a good fuck." <<case "female debtor">> diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw index b22e906feff35b1d5b6547577a757aeb1152a6f2..276c4107103d8b56160866a2cf1410030da5e336 100644 --- a/src/uncategorized/reRelativeRecruiter.tw +++ b/src/uncategorized/reRelativeRecruiter.tw @@ -685,18 +685,18 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $activeSlave.mother = $eventSlave.mother>> <<set $activeSlave.father = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> - <<set $slaves[$j].father = $missingParentID>> - <</if>> + <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> + <<set $slaves[$j].father = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <<elseif $eventSlave.father != 0>> <<set $activeSlave.father = $eventSlave.father>> <<set $activeSlave.mother = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> - <<set $slaves[$j].mother = $missingParentID>> - <</if>> + <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> + <<set $slaves[$j].mother = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <</if>> @@ -715,18 +715,18 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $activeSlave.mother = $eventSlave.mother>> <<set $activeSlave.father = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> - <<set $slaves[$j].father = $missingParentID>> - <</if>> + <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> + <<set $slaves[$j].father = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <<elseif $eventSlave.father != 0>> <<set $activeSlave.father = $eventSlave.father>> <<set $activeSlave.mother = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> - <<set $slaves[$j].mother = $missingParentID>> - <</if>> + <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> + <<set $slaves[$j].mother = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <</if>> @@ -745,18 +745,18 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $activeSlave.mother = $eventSlave.mother>> <<set $activeSlave.father = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> - <<set $slaves[$j].father = $missingParentID>> - <</if>> + <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> + <<set $slaves[$j].father = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <<elseif $eventSlave.father != 0>> <<set $activeSlave.father = $eventSlave.father>> <<set $activeSlave.mother = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> - <<set $slaves[$j].mother = $missingParentID>> - <</if>> + <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> + <<set $slaves[$j].mother = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <</if>> @@ -775,18 +775,18 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $activeSlave.mother = $eventSlave.mother>> <<set $activeSlave.father = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> - <<set $slaves[$j].father = $missingParentID>> - <</if>> + <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> + <<set $slaves[$j].father = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <<elseif $eventSlave.father != 0>> <<set $activeSlave.father = $eventSlave.father>> <<set $activeSlave.mother = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> - <<set $slaves[$j].mother = $missingParentID>> - <</if>> + <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> + <<set $slaves[$j].mother = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <</if>> @@ -805,18 +805,18 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba <<set $activeSlave.mother = $eventSlave.mother>> <<set $activeSlave.father = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> - <<set $slaves[$j].father = $missingParentID>> - <</if>> + <<if sameMom($activeSlave, $slaves[$j]) && $slaves[$j].father == 0>> + <<set $slaves[$j].father = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <<elseif $eventSlave.father != 0>> <<set $activeSlave.father = $eventSlave.father>> <<set $activeSlave.mother = $missingParentID>> <<for $j = 0; $j < $slaves.length; $j++>> - <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> - <<set $slaves[$j].mother = $missingParentID>> - <</if>> + <<if sameDad($activeSlave, $slaves[$j]) && $slaves[$j].mother == 0>> + <<set $slaves[$j].mother = $missingParentID>> + <</if>> <</for>> <<set $missingParentID-->> <</if>> diff --git a/src/uncategorized/repBudget.tw b/src/uncategorized/repBudget.tw index f539894bc0a2fa5cbd32f5e4658d66364d92e83b..6f86fe8de1ebfc179d8e8b4123e6c7793b98adae 100644 --- a/src/uncategorized/repBudget.tw +++ b/src/uncategorized/repBudget.tw @@ -14,7 +14,7 @@ <br> //Reputation is a difficult thing to quantify, <<= properTitle()>>. Here you see an overview of topics that interest people in the arcology, and in turn, reflect on your own reputation. The more symbols you see in a category, the more impact that category is having on your reputation lately.// -<br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> +<br style="clear:both"><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>> <br> //Your weekly reputation changes are as follows:// diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw index 1e7675c756ae94c3146d47e68ec00a4433543e28..1ecab00f1cff96ed80a9cac3b81db3777390212a 100644 --- a/src/uncategorized/seRetirement.tw +++ b/src/uncategorized/seRetirement.tw @@ -210,7 +210,7 @@ Your arcology has gained a well-off citizen. <</if>> <</replace>> <</link>> -<br /> +<br> <<if _clonedSlave.relationship >= 4>> <<link "Send $his _girl2 into retirement with $him">> <<replace "#artFrame">> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index 332c39fd64a2c10ea4c1dfdb09e46041161a8585..2b0b582edda330f37207b01447bd35e48c6a45e8 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -2532,7 +2532,7 @@ $His <<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">> is curled into long flowing locks secured by hair ties with plastic buttons, bearing the garish inscription <<InscripDesc>> - <<case "a scalemail bikini" + <<case "a scalemail bikini">> is curled into long flowing locks, and topped by a gold headband. <<case "battledress">> is curled into floor-length locks secured by paracord. @@ -2606,7 +2606,7 @@ $His <<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">> is curled into long locks secured by hair ties with plastic buttons, bearing the garish inscription <<InscripDesc>> - <<case "a scalemail bikini" + <<case "a scalemail bikini">> is curled into long flowing locks, and topped by a gold headband. <<case "battledress">> is curled into long locks, secured by paracord. @@ -2680,7 +2680,7 @@ $His <<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">> is curled into short locks secured by hair ties with plastic buttons, bearing the garish inscription <<InscripDesc>> - <<case "a scalemail bikini" + <<case "a scalemail bikini">> is curled into short flowing locks, and topped by a gold headband. <<case "battledress">> is curled into short locks secured by paracord.