@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());
   }
 }
Exemple #2
0
 @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.";
   }
 }
Exemple #3
0
 @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>>";
   }
 }
Exemple #4
0
 @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>>";
   }
 }
Exemple #5
0
 @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;
 }