@Override public boolean resolve(Combat c, Character target) { BodyPart selfO = getSelfOrgan(c); BodyPart targetO = getTargetOrgan(c, target); Result result; if (c.getStance().inserted(target)) { result = Result.reverse; } else if (c.getStance().en == Stance.anal) { result = Result.anal; } else { result = Result.normal; } writeOutput(c, result, target); int[] m = getDamage(c, target); assert (m.length >= 2); if (m[0] != 0) target.body.pleasure(getSelf(), selfO, targetO, m[0], c, this); if (m[1] != 0) getSelf().body.pleasure(target, targetO, selfO, m[1], 0, c, false, this); if (selfO.isType("ass") && Global.random(100) < 2 + getSelf().get(Attribute.Fetish)) { target.add(c, new BodyFetish(target, getSelf(), "ass", .25)); } return true; }
@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; }
@Override public boolean resolve(Combat c, Character target) { Result result = Result.normal; if (c.getStance().inserted(getSelf())) { if (c.getStance().en == Stance.anal) result = Result.anal; } else if (c.getStance().inserted(target)) { result = Result.reverse; } else { result = Result.special; } if (c.getStance().en == Stance.anal) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(c.getStance().insertRandom()); } else if (result == Result.special) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(new StandingOver(getSelf(), target)); } else { if (getSelf().hasStatus(Stsflag.leglocked) || getSelf().hasStatus(Stsflag.armlocked) || (target.has(Trait.tight) && c.getStance().inserted(getSelf()))) { boolean escaped = getSelf() .check(Attribute.Power, 10 - getSelf().escape(c) + target.get(Attribute.Power)); if (escaped) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } } else { if (getSelf().hasStatus(Stsflag.leglocked)) { BodyPart part = c.getStance().anallyPenetrated(getSelf()) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); if (getSelf().human()) c.write( getSelf(), "You try to pull out of " + target.name() + "'s " + partString + ", but her legs immediately tighten against your waist, holding you inside her. The mere friction from her action sends a shiver down your spine."); else c.write( getSelf(), "She tries to pull out of " + target.nameOrPossessivePronoun() + " " + partString + ", but your legs immediately pull her back in, holding you inside her."); } else if (getSelf().hasStatus(Stsflag.armlocked)) { if (getSelf().human()) c.write( getSelf(), "You try to pull yourself off of " + target.name() + ", but she merely pulls you back on top of her, surrounding you in her embrace."); else c.write( getSelf(), "She tries to pull herself off of " + target.name() + ", but with a gentle pull of your hands, she collapses back on top of you."); } else if (target.has(Trait.tight) && c.getStance().inserted(getSelf())) { BodyPart part = c.getStance().anallyPenetrated(target) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); if (getSelf().human()) c.write( getSelf(), "You try to pull yourself out of " + target.name() + "'s " + partString + ", but she clamps down hard on your c**k while smiling at you. You almost cum from the sensation, and quickly abandon ideas about your escape."); else c.write( getSelf(), "She tries to pull herself out of " + target.nameOrPossessivePronoun() + " " + partString + ", but you clamp down hard on her c**k, and prevent her from pulling out."); } int m = 8; if (c.getStance().inserted(getSelf())) { BodyPart part = c.getStance().anallyPenetrated(target) ? target.body.getRandom("ass") : target.body.getRandomPussy(); String partString = part.describe(target); getSelf().body.pleasure(target, part, getSelf().body.getRandomInsertable(), m, c); } getSelf().struggle(); return false; } } else if (getSelf().hasStatus(Stsflag.cockbound)) { CockBound s = (CockBound) getSelf().getStatus(Stsflag.cockbound); c.write( getSelf(), "You try to pull out of " + target.name() + "'s " + target.body.getRandomPussy() + ", but " + s.binding + " instantly reacts and pulls your dick back in."); int m = 8; getSelf() .body .pleasure( target, target.body.getRandom("pussy"), getSelf().body.getRandom("c**k"), m, c); return false; } else if (getSelf().human()) { c.write(getSelf(), deal(c, 0, result, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, result, target)); } c.setStance(c.getStance().insertRandom()); } return true; }