Пример #1
0
 @Override
 public boolean resolve(Combat c, Character target) {
   if (target.roll(this, c, accuracy(c))) {
     if (getSelf().has(Item.Dildo2)) {
       if (getSelf().human()) {
         c.write(getSelf(), deal(c, 0, Result.upgrade, target));
       } else if (target.human()) {
         c.write(getSelf(), receive(c, 0, Result.upgrade, target));
       }
       int m = 5 + Global.random(15) + target.get(Attribute.Perception);
       target.body.pleasure(getSelf(), null, target.body.getRandom("pussy"), m, c);
     } else {
       if (getSelf().human()) {
         c.write(getSelf(), deal(c, 0, Result.normal, target));
       } else if (target.human()) {
         c.write(getSelf(), receive(c, 0, Result.normal, target));
       }
       int m = Global.random(10) + target.get(Attribute.Perception);
       target.body.pleasure(getSelf(), null, target.body.getRandom("pussy"), m, c);
     }
   } else {
     if (getSelf().human()) {
       c.write(getSelf(), deal(c, 0, Result.miss, target));
     } else if (target.human()) {
       c.write(getSelf(), receive(c, 0, Result.miss, target));
     }
     return false;
   }
   return true;
 }
Пример #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;
  }
Пример #3
0
 @Override
 public boolean resolve(Combat c, Character target) {
   if (target.roll(this, c, accuracy(c))) {
     if (getSelf().get(Attribute.Dark) >= 1) {
       if (getSelf().human()) {
         c.write(getSelf(), deal(c, 0, Result.special, target));
       } else if (target.human()) {
         c.write(getSelf(), receive(c, 0, Result.special, target));
       }
       int m = 10 + Math.min(20, getSelf().get(Attribute.Dark) / 2);
       target.drain(c, getSelf(), m);
     } else {
       if (getSelf().human()) {
         c.write(getSelf(), deal(c, 0, Result.normal, target));
       } else if (target.human()) {
         c.write(getSelf(), receive(c, 0, Result.normal, target));
       }
     }
     int m = 1 + Global.random(8);
     target.body.pleasure(
         getSelf(), getSelf().body.getRandom("mouth"), target.body.getRandom("skin"), m, c);
   } else {
     if (getSelf().human()) {
       c.write(getSelf(), deal(c, 0, Result.miss, target));
     } else if (target.human()) {
       c.write(getSelf(), receive(c, 0, Result.miss, target));
     }
     return false;
   }
   return true;
 }
Пример #4
0
  @Override
  public boolean resolve(Combat c, Character target) {
    int m = 4 + Global.random(4);
    Result result = Result.normal;
    if (target.roll(this, c, accuracy(c))) {
      if (target.breastsAvailable()) {
        m += 4;
        result = Result.strong;
      } else if (target.outfit.getTopOfSlot(ClothingSlot.top).getLayer() <= 1
          && getSelf().has(Trait.dexterous)) {
        m += 4;
        result = Result.special;
      }
    } else {
      writeOutput(c, Result.miss, target);
      return false;
    }

    target.body.pleasure(
        getSelf(), getSelf().body.getRandom("hands"), target.body.getRandom("breasts"), m, c, this);
    writeOutput(c, result, target);

    return true;
  }
Пример #5
0
 @Override
 public boolean resolve(Combat c, Character target) {
   if (target.roll(getSelf(), c, accuracy(c, target))) {
     int strength = Math.min(20, 10 + getSelf().get(Attribute.Dark) / 4);
     boolean vaginal = c.getStance().anallyPenetrated(c, c.getOpponent(getSelf()));
     boolean shamed = false;
     if (!vaginal && Global.random(4) == 2) {
       target.add(c, new Shamed(target));
       shamed = true;
     }
     if (target.human()) {
       if (vaginal) {
         c.write(getSelf(), receive(c, 0, Result.intercourse, target));
       } else if (c.getStance().inserted(target)) {
         c.write(getSelf(), receive(c, 0, Result.special, target));
       } else if (c.getStance().dom(target)) {
         c.write(getSelf(), receive(c, 0, Result.critical, target));
       } else if (c.getStance().behind(getSelf())) {
         c.write(getSelf(), receive(c, 0, Result.strong, target));
       } else {
         c.write(getSelf(), receive(c, 0, Result.normal, target));
       }
       if (shamed) {
         c.write(
             getSelf(),
             "The shame of having your ass violated by "
                 + getSelf().name()
                 + " has destroyed your confidence.");
       }
     } else if (getSelf().human()) {
       if (vaginal) {
         c.write(getSelf(), deal(c, 0, Result.intercourse, target));
       }
       if (c.getStance().inserted(target)) {
         c.write(getSelf(), deal(c, 0, Result.special, target));
       } else if (c.getStance().dom(target)) {
         c.write(getSelf(), deal(c, 0, Result.critical, target));
       } else if (c.getStance().behind(getSelf())) {
         c.write(getSelf(), deal(c, 0, Result.strong, target));
       } else {
         c.write(getSelf(), deal(c, 0, Result.normal, target));
       }
       if (shamed) {
         c.write(
             getSelf(),
             "The shame of having her ass violated by you has destroyed "
                 + target.getName()
                 + "'s confidence.");
       }
     }
     if (c.getStance().havingSex(c)) {
       if (vaginal) {
         target.body.pleasure(
             getSelf(),
             getSelf().body.getRandom("tail"),
             target.body.getRandom("pussy"),
             strength,
             c,
             this);
         target.add(c, new TailFucked(target, getSelf(), "pussy"));
       } else {
         target.body.pleasure(
             getSelf(),
             getSelf().body.getRandom("tail"),
             target.body.getRandom("ass"),
             strength,
             c,
             this);
         target.add(c, new TailFucked(target, getSelf(), "ass"));
       }
     }
     target.pain(
         c, getSelf(), (int) getSelf().modifyDamage(DamageType.physical, target, strength / 2));
     target.emote(Emotion.nervous, 10);
     target.emote(Emotion.desperate, 10);
     getSelf().emote(Emotion.confident, 15);
     getSelf().emote(Emotion.dominant, 25);
     if (Global.random(100) < 5 + 2 * getSelf().get(Attribute.Fetish)) {
       target.add(c, new BodyFetish(target, getSelf(), "tail", .25));
     }
   } else {
     if (target.human()) {
       c.write(getSelf(), receive(c, 0, Result.miss, target));
     } else {
       c.write(getSelf(), deal(c, 0, Result.miss, target));
     }
     return false;
   }
   return true;
 }