@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; }
@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) { 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; }
@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; }
@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; }