Esempio n. 1
0
  @Override
  public boolean resolve(Combat c, Character target) {
    BodyPart selfO = getSelfOrgan(c);
    BodyPart targetO = getTargetOrgan(c, target);
    Result result;
    if (c.getStance().inserted(target)) {
      result = Result.reverse;
    } else if (c.getStance().en == Stance.anal) {
      result = Result.anal;
    } else {
      result = Result.normal;
    }

    writeOutput(c, result, target);

    int[] m = getDamage(c, target);
    assert (m.length >= 2);

    if (m[0] != 0) target.body.pleasure(getSelf(), selfO, targetO, m[0], c, this);
    if (m[1] != 0) getSelf().body.pleasure(target, targetO, selfO, m[1], 0, c, false, this);
    if (selfO.isType("ass") && Global.random(100) < 2 + getSelf().get(Attribute.Fetish)) {
      target.add(c, new BodyFetish(target, getSelf(), "ass", .25));
    }
    return true;
  }
Esempio n. 2
0
  @Override
  public boolean resolve(Combat c, Character target) {
    int m = 10 + Global.random(8);
    boolean facesitting = c.getStance().enumerate() == Stance.facesitting;
    if (getSelf().has(Trait.silvertongue)) {
      m += 4;
    }
    if (isVaginal(c)) {
      m += 4;
      if (target.human()) {
        c.write(getSelf(), receive(c, m, Result.intercourse, target));
      } else if (getSelf().human()) {
        c.write(getSelf(), deal(c, m, Result.intercourse, target));
      }
      target.body.pleasure(
          getSelf(), getSelf().body.getRandom("pussy"), target.body.getRandom("c**k"), m, c);
    } else if (facesitting) {
      if (target.human()) {
        c.write(getSelf(), receive(c, m, Result.reverse, target));
      } else if (getSelf().human()) {
        c.write(getSelf(), deal(c, m, Result.reverse, target));
      }
      target.body.pleasure(
          getSelf(), getSelf().body.getRandom("mouth"), target.body.getRandom("c**k"), m, c);
      target.buildMojo(c, 10);
    } else if (c.getStance().mobile(target) && target.roll(this, c, accuracy(c))) {
      if (getSelf().has(Trait.silvertongue)) {
        if (target.human()) {
          c.write(getSelf(), receive(c, m, Result.special, target));
        } else if (getSelf().human()) {
          c.write(getSelf(), deal(c, m, Result.special, target));
        }
      } else {
        if (target.human()) {
          c.write(getSelf(), receive(c, m, Result.normal, target));
        } else if (getSelf().human()) {
          c.write(getSelf(), deal(c, m, Result.normal, target));
        }
      }

      BodyPart mouth = getSelf().body.getRandom("mouth");
      BodyPart c**k = target.body.getRandom("c**k");
      target.body.pleasure(getSelf(), mouth, c**k, m, c);
      if (mouth.isErogenous()) {
        getSelf().body.pleasure(getSelf(), c**k, mouth, m, c);
      }

      if (ReverseMount.class.isInstance(c.getStance())) {
        c.setStance(new SixNine(getSelf(), target));
      }
    } else {
      if (getSelf().human()) {
        c.write(deal(c, 0, Result.miss, target));
      } else if (target.human()) {
        c.write(receive(c, 0, Result.miss, target));
      }
      return false;
    }
    return true;
  }
Esempio n. 3
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;
 }