@Override public String receive(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.miss) { return String.format( "%s gropes at %s %s, but misses the mark.", getSelf().subject(), target.nameOrPossessivePronoun(), target.body.getRandomBreasts().describe(target)); } else if (modifier == Result.strong) { return String.format( "%s massages %s %s, and pinches %s nipples, causing %s to moan with desire.", getSelf().subject(), target.nameOrPossessivePronoun(), target.body.getRandomBreasts().describe(target), target.possessivePronoun(), target.directObject()); } else if (modifier == Result.special) { return Global.format( "{self:SUBJECT-ACTION:slip|slips} {self:possessive} agile fingers into {other:name-possessive} bra, massaging and pinching at {other:possessive} nipples.", getSelf(), target); } else { return String.format( "%s massages %s %s over %s %s.", getSelf().subject(), target.nameOrPossessivePronoun(), target.body.getRandomBreasts().describe(target), target.possessivePronoun(), target.getOutfit().getTopOfSlot(ClothingSlot.top).getName()); } }
@Override public String receive(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.miss) { return String.format( "%s aims a slap at %s ass, but %s %s it.", getSelf().subject(), target.nameOrPossessivePronoun(), target.pronoun(), target.action("dodge")); } if (modifier == Result.special) { String victim = target.hasBalls() ? "balls" : "c**t"; String hood = target.hasBalls() ? "manhood" : "womanhood"; return String.format( "%s bends %s over like a misbehaving child and spanks %s" + " ass twice. The third spank aims lower and connects solidly with %s %s, " + "injuring %s %s along with %s pride.", getSelf().subject(), target.nameDirectObject(), target.possessivePronoun(), target.possessivePronoun(), victim, target.possessivePronoun(), hood, target.possessivePronoun()); } else { return String.format( "%s lands a stinging slap on %s bare ass.", getSelf().subject(), target.nameOrPossessivePronoun()); } }
@Override public String receive(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.miss) { return String.format( "%s tries to yank off %s %s, but %s %s to hang onto it.", getSelf().subject(), target.nameOrPossessivePronoun(), stripped.getName(), target.pronoun(), target.action("manage")); } else { String msg = String.format( "%s grabs a hold of %s %s and yanks it off before %s can stop %s.", getSelf().subject(), target.nameOrPossessivePronoun(), stripped.getName(), target.pronoun(), getSelf().directObject()); if (modifier == Result.critical && extra != null) { msg += String.format( " Before %s can react, %s also strips off %s %s!", target.subject(), getSelf().name, target.possessivePronoun(), extra.getName()); } return msg; } }
@Override public String receive(Combat c, int damage, Result modifier, Character target) { return String.format( "%s asks for a quick time out and starts sexily slipping %s clothes off." + " Although there are no time outs in the rules, %s can't help staring " + "at the seductive display until %s finishes with a cute wiggle of %s naked ass.", getSelf().subject(), target.nameOrPossessivePronoun(), target.subject(), getSelf().subject(), getSelf().possessivePronoun()); }
@Override public String deal(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.reverse) { return "You rise up and let " + target.nameOrPossessivePronoun() + " girl-c**k slip out of your " + (c.getStance().en == Stance.anal ? "ass." : "pussy"); } else if (modifier == Result.anal) { return "You pull your dick completely out of " + target.name() + "'s ass."; } else if (modifier == Result.normal) { return "You pull completely out of " + target.name() + "'s pussy, causing her to let out a disappointed little whimper."; } else { return "You pull yourself off " + target.name() + "'s face, causing her to gasp lungfuls of the new fresh air offer to her."; } }
@Override public String deal(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.miss) { return "You grope at " + target.name() + "'s breasts, but miss."; } else if (modifier == Result.strong) { return "You massage " + target.name() + "'s soft breasts and pinch her nipples, causing her to moan with desire."; } else if (modifier == Result.special) { return "You slip your hands into " + target.nameOrPossessivePronoun() + " " + target.outfit.getTopOfSlot(ClothingSlot.top).getName() + ", massaging " + target.name() + "'s soft breasts and pinching her nipples."; } else { return "You massage " + target.name() + "'s breasts over her " + target.getOutfit().getTopOfSlot(ClothingSlot.top).getName() + "."; } }
public void doVictory(Character victor, Character loser) { if (loser.hasDick() && victor.has(Trait.succubus)) { victor.gain(Item.s***n, 3); if (loser.human()) { write( victor, "<br><b>As she leaves, you see all your scattered s***n ooze out and gather into a orb in " + victor.nameOrPossessivePronoun() + " hands. " + "She casually drops your seed in some empty vials that appeared out of nowhere</b>"); } else if (victor.human()) { write( victor, "<br><b>" + loser.nameOrPossessivePronoun() + " scattered s***n lazily oozes into a few magically conjured flasks. " + "To speed up the process, you milk " + loser.possessivePronoun() + " out of the last drops " + loser.subject() + " had to offer. Yum, you just got some leftovers.</b>"); } } else if (loser.hasDick() && (victor.human() || victor.has(Trait.madscientist)) && victor.has(Item.EmptyBottle, 1)) { // for now only the player and mara collects s***n write( victor, Global.format( "<br><b>{self:SUBJECT-ACTION:manage|manages} to collect some of {other:name-possessive} scattered s***n in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.s***n, 1); } if (checkBottleCollection(victor, loser, PussyPart.divine)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:name-possessive} divine pussy juices in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.HolyWater, 1); } if (checkBottleCollection(victor, loser, PussyPart.succubus)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:name-possessive} demonic pussy juices in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.ExtremeAphrodisiac, 1); } if (checkBottleCollection(victor, loser, PussyPart.plant)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:possessive} nectar in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.nectar, 3); } if (checkBottleCollection(victor, loser, PussyPart.cybernetic)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:possessive} artificial lubricant in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.LubricatingOils, 1); } if (checkBottleCollection(victor, loser, PussyPart.arcane)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of the floating mana wisps ejected from {other:possessive} o****m in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.RawAether, 1); } if (checkBottleCollection(victor, loser, PussyPart.feral)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:possessive} musky juices in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.FeralMusk, 1); } if (checkBottleCollection(victor, loser, PussyPart.gooey)) { write( victor, Global.format( "<br><b>{other:SUBJECT-ACTION:shoot|shoots} {self:name-do} a dirty look as {self:subject-action:move|moves} to collect some of {other:possessive} goo in an empty bottle</b>", victor, loser)); victor.consume(Item.EmptyBottle, 1, false); victor.gain(Item.BioGel, 1); } if (loser.human()) { write("<br>Ashamed at your loss, you resolve to win next time."); write("<br><b>Gained 1 Willpower</b>."); loser.getWillpower().gain(1); } victor.getWillpower().fill(); loser.getWillpower().fill(); if (Global.checkFlag(Flag.FTC) && loser.has(Item.Flag)) { write( victor, Global.format( "<br><b>{self:SUBJECT-ACTION:take|takes} the " + "Flag from {other:subject}!</b>", victor, loser)); loser.remove(Item.Flag); victor.gain(Item.Flag); } }
@Override public boolean resolve(Combat c, Character target) { Result result = Result.normal; if (c.getStance().inserted(getSelf())) { if (c.getStance().en == Stance.anal) result = Result.anal; } else if (c.getStance().inserted(target)) { result = Result.reverse; } else { result = Result.special; } if (c.getStance().en == Stance.anal) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(c.getStance().insertRandom()); } else if (result == Result.special) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(new StandingOver(getSelf(), target)); } else { if (getSelf().hasStatus(Stsflag.leglocked) || getSelf().hasStatus(Stsflag.armlocked) || (target.has(Trait.tight) && c.getStance().inserted(getSelf()))) { boolean escaped = getSelf() .check(Attribute.Power, 10 - getSelf().escape(c) + target.get(Attribute.Power)); if (escaped) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } } else { if (getSelf().hasStatus(Stsflag.leglocked)) { BodyPart part = c.getStance().anallyPenetrated(getSelf()) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); if (getSelf().human()) c.write( getSelf(), "You try to pull out of " + target.name() + "'s " + partString + ", but her legs immediately tighten against your waist, holding you inside her. The mere friction from her action sends a shiver down your spine."); else c.write( getSelf(), "She tries to pull out of " + target.nameOrPossessivePronoun() + " " + partString + ", but your legs immediately pull her back in, holding you inside her."); } else if (getSelf().hasStatus(Stsflag.armlocked)) { if (getSelf().human()) c.write( getSelf(), "You try to pull yourself off of " + target.name() + ", but she merely pulls you back on top of her, surrounding you in her embrace."); else c.write( getSelf(), "She tries to pull herself off of " + target.name() + ", but with a gentle pull of your hands, she collapses back on top of you."); } else if (target.has(Trait.tight) && c.getStance().inserted(getSelf())) { BodyPart part = c.getStance().anallyPenetrated(target) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); if (getSelf().human()) c.write( getSelf(), "You try to pull yourself out of " + target.name() + "'s " + partString + ", but she clamps down hard on your c**k while smiling at you. You almost cum from the sensation, and quickly abandon ideas about your escape."); else c.write( getSelf(), "She tries to pull herself out of " + target.nameOrPossessivePronoun() + " " + partString + ", but you clamp down hard on her c**k, and prevent her from pulling out."); } int m = 8; if (c.getStance().inserted(getSelf())) { BodyPart part = c.getStance().anallyPenetrated(target) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); getSelf().body.pleasure(target, part, getSelf().body.getRandomInsertable(), m, c); } getSelf().struggle(); return false; } } else if (getSelf().hasStatus(Stsflag.cockbound)) { CockBound s = (CockBound) getSelf().getStatus(Stsflag.cockbound); c.write( getSelf(), "You try to pull out of " + target.name() + "'s " + target.body.getRandomPussy() + ", but " + s.binding + " instantly reacts and pulls your dick back in."); int m = 8; getSelf() .body .pleasure( target, target.body.getRandom("pussy"), getSelf().body.getRandom("c**k"), m, c); return false; } else if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(c.getStance().insertRandom()); } return true; }
@Override public String receive(Combat c, int magnitude, Result modifier, Character target) { switch (modifier) { case critical: return String.format( "Smiling down on %s, %s spreads %s legs and tickles %s butt with %s tail." + " %s how the tail itself is slick and wet as it" + " slowly pushes through %s anus, spreading %s cheeks apart. %s" + " pumps it in and out a for a few times before taking it out again.", target.nameDirectObject(), getSelf().subject(), target.possessivePronoun(), target.possessivePronoun(), getSelf().possessivePronoun(), Global.capitalizeFirstLetter(target.subjectAction("notice")), target.possessivePronoun(), target.possessivePronoun(), getSelf().subject()); case miss: return String.format( "%s tries to peg %s with her tail but %s %s to clench" + " %s butt cheeks together in time to keep it out.", getSelf().subject(), target.nameDirectObject(), target.pronoun(), target.action("manage"), target.possessivePronoun()); case normal: return String.format( "%s suddenly moves very close to %s. %s an attack from the front" + " and %s to move back, but %s up shoving %s tail right up %s ass.", getSelf().subject(), target.nameDirectObject(), Global.capitalizeFirstLetter(target.subjectAction("expect")), target.action("try", "tries"), target.action("end"), getSelf().possessivePronoun(), target.possessivePronoun()); case special: return String.format( "%s smirks and wiggles %s tail behind %s back. %s briefly %s " + "at it and %s the appendage move behind %s. %s to keep it" + " out by clenching %s butt together, but a squeeze of %s" + " v****a breaks %s concentration, so the tail slides up %s ass" + " and %s almost %s it as %s c**k and ass are stimulated so thoroughly" + " at the same time.", getSelf().subject(), getSelf().possessivePronoun(), target.nameOrPossessivePronoun(), Global.capitalizeFirstLetter(target.pronoun()), target.action("look"), target.action("see"), target.directObject(), Global.capitalizeFirstLetter(target.subjectAction("try", "tries")), target.possessivePronoun(), getSelf().nameOrPossessivePronoun(), target.possessivePronoun(), target.possessivePronoun(), target.pronoun(), target.action("lose"), target.possessivePronoun()); case intercourse: return String.format( "%s smirks and coils %s tail around in front of %s. %s briefly %s " + "at it and %s the appendage move under %s and %s. %s to keep it" + " out by clamping %s legs together, but a squeeze of %s" + " ass breaks %s concentration, so the tail slides smoothly into %s pussy.", getSelf().subject(), getSelf().possessivePronoun(), target.nameDirectObject(), Global.capitalizeFirstLetter(target.pronoun()), target.action("look"), target.action("see"), target.directObject(), target.action("panic"), Global.capitalizeFirstLetter(target.subjectAction("try", "tries")), target.possessivePronoun(), getSelf().nameOrPossessivePronoun(), target.possessivePronoun(), target.possessivePronoun()); case strong: return String.format( "%s hugs %s from behind and rubs %s chest against %s back." + " Distracted by that, %s managed to push %s tail between %s" + " ass cheeks and started tickling %s %s with the tip.", getSelf().subject(), target.nameDirectObject(), getSelf().possessivePronoun(), target.possessivePronoun(), getSelf().pronoun(), getSelf().possessivePronoun(), target.possessivePronoun(), target.possessivePronoun(), target.hasBalls() ? "prostate" : "sensitive insides"); default: return "<<This should not be displayed, please inform The Silver Bard: TailPeg-receive>>"; } }
@Override public String deal(Combat c, int magnitude, Result modifier, Character target) { switch (modifier) { case critical: return "You flex your prehensile tail and spread " + target.nameOrPossessivePronoun() + " legs apart. " + "You quickly lube it up with " + target.possessivePronoun() + " juices and slide it into her ass and start pumping."; case miss: return "You try to peg " + target.name() + " with your tail, but " + target.pronoun() + " manages to clench " + target.possessivePronoun() + " butt cheeks together in time to keep you out."; case normal: return "You move towards " + target.name() + " and hold " + target.possessivePronoun() + " hands above " + target.possessivePronoun() + " head. In the same motion, you swiftly plunge your thick tail into " + target.possessivePronoun() + " ass, pumping it in and out of " + target.possessivePronoun() + " tight hole."; case special: return "You smile down at " + target.name() + " and move your flexible tail behind " + target.directObject() + ". You spread " + target.possessivePronoun() + " cheeks with your tail and plunge it into " + target.possessivePronoun() + " tight pucker. " + target.name() + " moans loudly at the sudden intrusion."; case intercourse: return "You smile down at " + target.name() + " and move your flexible tail behind " + target.directObject() + ". You spread " + target.possessivePronoun() + " legs with your tail and plunge it into " + target.possessivePronoun() + " wet slit. " + target.name() + " moans loudly at the sudden intrusion."; case strong: if (target.body.getLargestBreasts().size >= 2) { return "You hug " + target.name() + " from behind and cup her breasts with your hands. Taking advantage of her surprise, you shove your tail into her ass, and tickle her prostate with the tip."; } else { return "You hug " + target.name() + " from behind and twist " + target.possessivePronoun() + " nipples. Taking advantage of " + target.possessivePronoun() + " surprise, you shove your tail into " + target.possessivePronoun() + " ass, and tickle " + target.possessivePronoun() + " prostate with the tip."; } default: return "<<This should not be displayed, please inform The Silver Bard: TailPeg-deal>>"; } }
@Override public String receive(Combat c, int damage, Result modifier, Character target) { return String.format( "%s braces %s to resist %s attacks.", getSelf().subject(), getSelf().reflectivePronoun(), target.nameOrPossessivePronoun()); }