Example #1
0
 public void checkStamina(Character p) {
   if (p.getStamina().isEmpty() && !p.is(Stsflag.stunned)) {
     p.add(this, new Winded(p));
     if (!getStance().prone(p)) {
       Character other;
       if (p == p1) {
         other = p2;
       } else {
         other = p1;
       }
       if (getStance().inserted() && getStance().dom(other)) {
         if (p.human()) {
           write("Your legs give out, but " + other.name() + " holds you up.");
         } else {
           write(
               p.name()
                   + " slumps in your arms, but you support her to keep her from collapsing.");
         }
       } else {
         setStance(new StandingOver(other, p));
         if (p.human()) {
           write("You don't have the strength to stay on your feet. You slump to the floor.");
         } else {
           write(p.name() + " drops to the floor, exhausted.");
         }
       }
       p.loseWillpower(this, Math.min(p.getWillpower().max() / 8, 15), true);
     }
   }
 }
Example #2
0
 @Override
 public boolean resolve(Combat c, Character target) {
   int difficulty =
       target.getOutfit().getTopOfSlot(ClothingSlot.top).dc()
           + target.getLevel()
           + (target.getStamina().percent() / 5 - target.getArousal().percent()) / 4
           - (!target.canAct() || c.getStance().sub(target) ? 20 : 0);
   if (getSelf().check(Attribute.Cunning, difficulty) || !target.canAct()) {
     stripped = target.strip(ClothingSlot.top, c);
     boolean doubled = false;
     if (getSelf().get(Attribute.Cunning) >= 30
             && !target.breastsAvailable()
             && getSelf().check(Attribute.Cunning, difficulty)
         || !target.canAct()) {
       extra = target.strip(ClothingSlot.top, c);
       doubled = true;
       writeOutput(c, Result.critical, target);
     } else {
       writeOutput(c, Result.normal, target);
     }
     if (getSelf().human() && target.mostlyNude()) {
       c.write(target, target.nakedLiner(c, target));
     }
     target.emote(Emotion.nervous, doubled ? 20 : 10);
   } else {
     stripped = target.outfit.getTopOfSlot(ClothingSlot.top);
     writeOutput(c, Result.miss, target);
     target.weaken(
         c, (int) getSelf().modifyDamage(DamageType.physical, target, Global.random(8, 16)));
     return false;
   }
   return true;
 }