Example #1
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;
 }
Example #2
0
 private boolean resolveSkill(Skill skill, Character target) {
   boolean orgasmed = false;
   if (Skill.skillIsUsable(this, skill, target)) {
     write(skill.user().subjectAction("use ", "uses ") + skill.getLabel(this) + ".");
     if (skill.makesContact()
         && !getStance().dom(target)
         && target.canAct()
         && checkCounter(skill.user(), target, skill)) {
       write("Countered!");
       target.counterattack(skill.user(), skill.type(this), this);
     } else if (target.is(Stsflag.counter) && skill.makesContact()) {
       write("Countered!");
       CounterStatus s = (CounterStatus) target.getStatus(Stsflag.counter);
       if (skill.user().is(Stsflag.wary)) {
         write(target, s.getCounterSkill().getBlockedString(this, skill.user()));
       } else {
         s.resolveSkill(this, skill.user());
       }
     } else {
       Skill.resolve(skill, this, target);
     }
     checkStamina(target);
     checkStamina(skill.user());
     orgasmed = checkOrgasm(skill.user(), target, skill);
   } else {
     write(skill.user().possessivePronoun() + " " + skill.getLabel(this) + " failed.");
   }
   return orgasmed;
 }
Example #3
0
 public static boolean isUsable(Combat c, Character self, Character target) {
   return self.stripDifficulty(target) == 0
       && !self.has(Trait.strapped)
       && self.canAct()
       && c.getStance().mobile(self)
       && !self.mostlyNude()
       && !c.getStance().prone(self)
       && c.getStance().front(self)
       && (!self.breastsAvailable() || !self.crotchAvailable());
 }