@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; }
@Override public boolean resolve(Combat c, Character target) { int type = Global.centeredrandom(2, getSelf().get(Attribute.Dark) / 20.0f, 2); if (this.getSelf().human()) { c.write(getSelf(), deal(c, type, Result.normal, target)); } else if (target.human()) { c.write(getSelf(), receive(c, type, Result.normal, target)); } switch (type) { case 0: getSelf().arouse(getSelf().getArousal().max(), c); break; case 1: int stolen = stealXP(target); if (stolen > 0) { getSelf().add(c, new Satiated(target, stolen, 0)); if (getSelf().human()) c.write("You have absorbed " + stolen + " XP from " + target.name() + "!\n"); else c.write(getSelf().name() + " has absorbed " + stolen + " XP from you!\n"); } break; case 2: int xpStolen = 95 + (5 * (target.getLevel())); getSelf().add(c, new Satiated(target, xpStolen, 0)); c.write(target.dong()); if (getSelf().human()) c.write( "You have stolen a level from " + target.name() + "'s levels and absorbed it as " + xpStolen + " XP!\n"); else c.write( getSelf().name() + " has stolen a level from you and absorbed it as " + xpStolen + " XP!\n"); getSelf().gainXP(xpStolen); target.tempt(c, getSelf(), target.getArousal().max()); break; default: break; } return type != 0; }
@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; }