Пример #1
0
 @Override
 public boolean resolve(Combat c, Character target) {
   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));
   }
   double m =
       (6 + Global.random(4) + getSelf().body.getHotness(getSelf(), target))
           * Math.min(2, 1 + getSelf().getExposure());
   if (target.has(Trait.imagination)) {
     m += 4;
     target.tempt(c, getSelf(), (int) Math.round(m));
     if (Global.random(4) >= 1) {
       target.add(c, new Shamed(target));
     }
   } else {
     target.tempt(c, getSelf(), (int) Math.round(m));
     if (Global.random(4) >= 2) {
       target.add(c, new Shamed(target));
     }
   }
   target.emote(Emotion.angry, 30);
   target.emote(Emotion.nervous, 15);
   getSelf().emote(Emotion.dominant, 20);
   target.loseMojo(c, 5);
   return true;
 }
Пример #2
0
  @Override
  public boolean resolve(Combat c, Character target) {

    int type = Global.centeredrandom(2, getSelf().get(Attribute.Dark) / 20.0f, 2);
    if (this.getSelf().human()) {
      c.write(getSelf(), deal(c, type, Result.normal, target));
    } else if (target.human()) {
      c.write(getSelf(), receive(c, type, Result.normal, target));
    }
    switch (type) {
      case 0:
        getSelf().arouse(getSelf().getArousal().max(), c);
        break;
      case 1:
        int stolen = stealXP(target);
        if (stolen > 0) {
          getSelf().add(c, new Satiated(target, stolen, 0));
          if (getSelf().human())
            c.write("You have absorbed " + stolen + " XP from " + target.name() + "!\n");
          else c.write(getSelf().name() + " has absorbed " + stolen + " XP from you!\n");
        }
        break;
      case 2:
        int xpStolen = 95 + (5 * (target.getLevel()));
        getSelf().add(c, new Satiated(target, xpStolen, 0));
        c.write(target.dong());
        if (getSelf().human())
          c.write(
              "You have stolen a level from "
                  + target.name()
                  + "'s levels and absorbed it as "
                  + xpStolen
                  + " XP!\n");
        else
          c.write(
              getSelf().name()
                  + " has stolen a level from you and absorbed it as "
                  + xpStolen
                  + " XP!\n");
        getSelf().gainXP(xpStolen);
        target.tempt(c, getSelf(), target.getArousal().max());
        break;
      default:
        break;
    }
    return type != 0;
  }
Пример #3
0
 @Override
 public boolean resolve(Combat c, Character target) {
   if (getSelf().human()) {
     c.write(getSelf(), deal(c, 0, Result.normal, target));
   } else if (c.shouldPrintReceive(target)) {
     if (target.human() && target.is(Stsflag.blinded)) printBlinded(c);
     else c.write(getSelf(), receive(c, 0, Result.normal, target));
   }
   if (!target.is(Stsflag.blinded)) {
     int m = 15 + Global.random(5);
     target.tempt(c, getSelf(), m);
     getSelf().add(c, new Alluring(getSelf(), 5));
   }
   target.emote(Emotion.horny, 30);
   getSelf().undress(c);
   getSelf().emote(Emotion.confident, 15);
   getSelf().emote(Emotion.dominant, 15);
   return true;
 }