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