@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 deal(Combat c, int damage, Result modifier, Character target) { if (modifier == Result.miss) { return "You try to spank " + target.name() + ", but " + target.pronoun() + " dodges away."; } if (modifier == Result.special) { return "You bend " + target.name() + " over your knee and spank " + target.directObject() + ", alternating between hitting " + target.possessivePronoun() + " soft butt cheek and " + target.possessivePronoun() + " sensitive pussy."; } else { return "You spank " + target.name() + " on " + target.possessivePronoun() + " naked butt cheek."; } }
@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 boolean resolve(Combat c, Character target) { if (isActive(target)) { if (getSelf().human()) { c.write( getSelf(), "Deciding she's had enough for now, you let your c**k return to its regular shape, once again permitting movement."); } else if (c.shouldPrintReceive(target)) { String part = c.getStance().insertedPartFor(target).describe(target); c.write( getSelf(), String.format( "%s the intense pressure in %s %s " + "recede as %s allows %s knot to deflate.", target.subjectAction("feel"), target.possessivePronoun(), part, getSelf().subject(), getSelf().possessivePronoun())); } target.removeStatus(Stsflag.knotted); } else { if (getSelf().human()) { c.write( getSelf(), "You'd like to stay inside " + target.name() + " for a bit, so you " + (c.getStance().canthrust(getSelf()) ? "thrust" : "buck up") + " as deep inside of her as you can and send a mental command to the base of your c**k, where your" + " knot soon swells up, locking you inside,"); } else if (c.shouldPrintReceive(target)) { String firstPart; if (c.getStance().dom(getSelf())) { firstPart = String.format( "%s bottoms out inside of %s, and something quickly feels off%s.", getSelf().subject(), target.nameDirectObject(), c.isBeingObserved() ? " to " + target.directObject() : ""); } else { firstPart = String.format( "%s pulls %s all the way onto %s c**k." + "As soon as %s pelvis touches %s, something starts happening.", getSelf().subject(), target.nameDirectObject(), getSelf().possessivePronoun(), getSelf().possessivePronoun(), (target.human() || target.useFemalePronouns()) ? target.possessivePronoun() + "s" : "s"); } c.write( getSelf(), String.format( "%s A ball swells up at the base of %s dick," + " growing to the size of a small apple. %s not" + " getting <i>that</i> out of %s any time soon...", firstPart, getSelf().nameOrPossessivePronoun(), Global.capitalizeFirstLetter(target.subjectAction("are", "is")), target.reflectivePronoun())); } target.add(c, new Knotted(target, getSelf(), c.getStance().anallyPenetrated(target))); } return true; }