Пример #1
0
 @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());
   }
 }
Пример #2
0
 @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());
   }
 }
Пример #3
0
 @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;
   }
 }
Пример #4
0
 @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());
 }
Пример #5
0
 @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.";
   }
 }
Пример #6
0
 @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()
         + ".";
   }
 }
Пример #7
0
  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);
    }
  }
Пример #8
0
 @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;
 }
Пример #9
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>>";
   }
 }
Пример #10
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>>";
   }
 }
Пример #11
0
 @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());
 }