Example #1
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;
  }