@Override public boolean tick(Tickable ticking, int tickID) { if (!super.tick(ticking, tickID)) return false; if (affected == null) return false; if (!(affected instanceof MOB)) return true; final MOB mob = (MOB) affected; if ((!mob.amDead()) && ((--diseaseTick) <= 0)) { diseaseTick = DISEASE_DELAY(); if (mob.maxState().getFatigue() > Long.MIN_VALUE / 2) mob.curState() .adjFatigue(mob.curState().getFatigue() + CharState.FATIGUED_MILLIS, mob.maxState()); mob.location().show(mob, null, CMMsg.MSG_NOISE, DISEASE_AFFECT()); if (!CMLib.flags().isSleeping(mob)) { final Command C = CMClass.getCommand("Sleep"); try { if (C != null) C.execute(mob, CMParms.parse("Sleep"), Command.METAFLAG_FORCED); } catch (final Exception e) { } } return true; } return true; }
@Override public boolean execute(MOB mob, List<String> commands, int metaFlags) throws java.io.IOException { if (!mob.isMonster()) { if ((commands != null) && (commands.size() > 1) && (commands.get(1).toUpperCase().equals("OFF"))) { final Command C = CMClass.getCommand("NoSounds"); if (C != null) { return C.execute(mob, commands, metaFlags); } } boolean force = false; if (commands != null) { for (final Object o : commands) { if (o.toString().equalsIgnoreCase("force")) force = true; } } final Session session = mob.session(); if ((!mob.isAttributeSet(MOB.Attrib.SOUND)) || (!session.getClientTelnetMode(Session.TELNET_MSP))) { session.changeTelnetMode(Session.TELNET_MSP, true); for (int i = 0; ((i < 5) && (!session.getClientTelnetMode(Session.TELNET_MSP))); i++) { try { mob.session().prompt("", 500); } catch (final Exception e) { } } if (session.getClientTelnetMode(Session.TELNET_MSP)) { mob.setAttribute(MOB.Attrib.SOUND, true); mob.tell(L("MSP Sound/Music enabled.\n\r")); } else if (force) { session.setClientTelnetMode(Session.TELNET_MSP, true); session.setServerTelnetMode(Session.TELNET_MSP, true); mob.setAttribute(MOB.Attrib.SOUND, true); mob.tell(L("MSP Sound/Music has been forceably enabled.\n\r")); } else mob.tell(L("Your client does not appear to support MSP.")); } else { mob.tell(L("MSP Sound/Music is already enabled.\n\r")); } } return false; }
@Override public boolean execute(MOB mob, List<String> commands, int metaFlags) throws java.io.IOException { final String str = L("Prop_WizInvis"); final Ability A = mob.fetchEffect(str); boolean didSomething = false; if (A != null) { final Command C = CMClass.getCommand("WizInv"); if ((C != null) && (C.securityCheck(mob))) { didSomething = true; C.execute(mob, new XVector<String>("WIZINV", "OFF"), metaFlags); } } final java.util.List<Ability> V = returnOffensiveAffects(mob); if (V.size() == 0) { if (!didSomething) mob.tell(L("You are not invisible or hidden!")); } else for (int v = 0; v < V.size(); v++) V.get(v).unInvoke(); mob.location().recoverRoomStats(); mob.location().recoverRoomStats(); return false; }
@Override public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) { boolean announce = false; if (commands.size() > 0) { if (((String) commands.lastElement()).equals("!")) { commands.removeElementAt(commands.size() - 1); announce = true; } } final MOB target = getTargetAnywhere(mob, commands, givenTarget, true); if (target == null) return false; if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false; final boolean success = proficiencyCheck(mob, 0, auto); if (success) { final CMMsg msg = CMClass.getMsg( mob, target, this, CMMsg.MASK_MOVE | CMMsg.TYP_JUSTICE | (auto ? CMMsg.MASK_ALWAYS : 0), auto ? L("<T-NAME> <T-IS-ARE> knocked out of <T-HIS-HER> shoes!!!") : L( "^F**<S-NAME> BLAST(S) <T-NAMESELF>**, knocking <T-HIM-HER> out of <T-HIS-HER> shoes!!^?")); CMLib.color().fixSourceFightColor(msg); if (target.location().okMessage(mob, msg)) { target.location().send(mob, msg); if (target.curState().getHitPoints() > 2) target.curState().setHitPoints(target.curState().getHitPoints() / 2); if (target.curState().getMana() > 2) target.curState().setMana(target.curState().getMana() / 2); if (target.curState().getMovement() > 2) target.curState().setMovement(target.curState().getMovement() / 2); final Item I = target.fetchFirstWornItem(Wearable.WORN_FEET); if (I != null) { I.unWear(); I.removeFromOwnerContainer(); target.location().addItem(I, ItemPossessor.Expire.Player_Drop); } Log.sysOut("Banish", mob.Name() + " wrathed " + target.name() + "."); if (announce) { final Command C = CMClass.getCommand("Announce"); try { C.execute( mob, new XVector( "ANNOUNCE", target.name() + " is knocked out of " + target.charStats().hisher() + " shoes!!!"), Command.METAFLAG_FORCED); } catch (final Exception e) { } } } } else return beneficialVisualFizzle( mob, target, L("<S-NAME> attempt(s) to inflict <S-HIS-HER> wrath upon <T-NAMESELF>, but fail(s).")); return success; }