@Override public boolean resolve(Combat c, Character target) { double m = Global.random(6, 13); if (getSelf().has(Trait.disciplinarian)) { boolean shamed = Global.random(10) >= 5 || !target.is(Stsflag.shamed) && getSelf().canSpend(5); if (shamed) { getSelf().spendMojo(c, 5); } writeOutput(c, Result.special, target); if (shamed) { target.add(c, new Shamed(target)); target.emote(Emotion.angry, 10); target.emote(Emotion.nervous, 15); } if (target.has(Trait.achilles)) { m += 10; } else { m += 5; } } else { writeOutput(c, Result.normal, target); } target.pain(c, (int) getSelf().modifyDamage(DamageType.physical, target, m)); target.emote(Emotion.angry, 25); target.emote(Emotion.nervous, 15); target.loseMojo(c, 10); return true; }
@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; }
public void go() { phase = 0; if (p1.mostlyNude() && !p2.mostlyNude()) { p1.emote(Emotion.nervous, 20); } if (p2.mostlyNude() && !p1.mostlyNude()) { p2.emote(Emotion.nervous, 20); } if (!(p1.human() || p2.human())) { automate(); } updateMessage(); }
public Combat(Character p1, Character p2, Area loc, int code) { this(p1, p2, loc); stance = new Neutral(p1, p2); message = ""; timer = 0; switch (code) { case 1: p2.undress(this); p1.emote(Emotion.dominant, 50); p2.emote(Emotion.nervous, 50); default: } p1.state = State.combat; p2.state = State.combat; }
@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; }
@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; }
@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; }
@Override public boolean resolve(Combat c, Character target) { if (target.has(Trait.brassballs)) { if (getSelf().has(Trait.heeldrop) && target.crotchAvailable() && target.hasBalls()) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, Result.strong, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, Result.strong, target)); if (Global.random(5) >= 1) { c.write(getSelf(), getSelf().bbLiner(c)); } } target.pain( c, 15 - (int) Math.round( (5 + Global.random(5)) * target.getOutfit().getExposure(ClothingSlot.bottom))); } else { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, Result.weak2, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, Result.weak2, target)); } } } else if (getSelf().has(Trait.heeldrop) && target.crotchAvailable()) { 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)); if (Global.random(5) >= 1) { c.write(getSelf(), getSelf().bbLiner(c)); } } if (target.has(Trait.achilles)) { target.pain(c, 20); } target.pain( c, 30 - (int) Math.round( (10 + Global.random(10)) * target.getOutfit().getExposure(ClothingSlot.bottom))); } else if (target.has(ClothingTrait.armored)) { if (getSelf().human()) { c.write(getSelf(), deal(c, 0, Result.weak, target)); } else if (target.human()) { c.write(getSelf(), receive(c, 0, Result.weak, target)); } target.pain( c, 5 - (int) Math.round( (2 + Global.random(3)) * target.getOutfit().getExposure(ClothingSlot.bottom))); } 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)); if (Global.random(5) >= 1) { c.write(getSelf(), getSelf().bbLiner(c)); } } if (target.has(Trait.achilles)) { target.pain(c, 20); } target.pain( c, 20 - (int) Math.round( (10 + Global.random(10)) * target.getOutfit().getExposure(ClothingSlot.bottom))); } target.emote(Emotion.angry, 25); return true; }