public void unInvoke() { // undo the affects of this spell if ((affected == null) || (!(affected instanceof MOB))) return; MOB mob = (MOB) affected; super.unInvoke(); if (canBeUninvoked()) { mob.location() .show( mob, null, CMMsg.MSG_NOISYMOVEMENT, "<S-NAME> manage(s) to break <S-HIS-HER> way free of the repulsion field."); CMLib.commands().postStand(mob, true); } }
public void executeMsg(final Environmental myHost, final CMMsg msg) { if (msg.source().riding() == this) { CMLib.commands().handleHygenicMessage(msg, 0, PlayerStats.HYGIENE_WATERCLEAN); } if (msg.amITarget(this)) { MOB mob = msg.source(); switch (msg.targetMinor()) { case CMMsg.TYP_DRINK: amountOfLiquidRemaining -= amountOfThirstQuenched; boolean thirsty = mob.curState().getThirst() <= 0; boolean full = !mob.curState() .adjThirst(amountOfThirstQuenched, mob.maxState().maxThirst(mob.baseWeight())); if (thirsty) mob.tell("You are no longer thirsty."); else if (full) mob.tell("You have drunk all you can."); if (disappearsAfterDrinking) { destroy(); return; } break; case CMMsg.TYP_FILL: if ((msg.tool() != null) && (msg.tool() instanceof Drink)) { Drink thePuddle = (Drink) msg.tool(); int amountToTake = amountTakenToFillMe(thePuddle); thePuddle.setLiquidRemaining(thePuddle.liquidRemaining() - amountToTake); if (amountOfLiquidRemaining <= 0) setLiquidType(thePuddle.liquidType()); if (((long) amountOfLiquidRemaining + (long) amountToTake) <= (long) Integer.MAX_VALUE) amountOfLiquidRemaining += amountToTake; if (amountOfLiquidRemaining > amountOfLiquidHeld) amountOfLiquidRemaining = amountOfLiquidHeld; if ((amountOfLiquidRemaining <= 0) && (disappearsAfterDrinking)) { destroy(); return; } } break; default: break; } } super.executeMsg(myHost, msg); }
public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) { MOB target = this.getTarget(mob, commands, givenTarget); if (target == null) return false; if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false; int levelDiff = target.phyStats().level() - (mob.phyStats().level() + (2 * getXLEVELLevel(mob))); if (levelDiff < 0) levelDiff = 0; boolean success = proficiencyCheck(mob, -(levelDiff * 25), auto); Item Bread = null; Item BreadContainer = null; for (int i = 0; i < target.numItems(); i++) { Item I = target.getItem(i); if ((I != null) && (I instanceof Food)) { if (I.container() != null) { Bread = I; BreadContainer = I.container(); } else { Bread = I; BreadContainer = null; break; } } } if ((Bread != null) && (BreadContainer != null)) CMLib.commands().postGet(target, BreadContainer, Bread, false); if (Bread == null) { ShopKeeper SK = CMLib.coffeeShops().getShopKeeper(target); if (SK != null) { for (Iterator<Environmental> i = SK.getShop().getStoreInventory(); i.hasNext(); ) { Environmental E2 = (Environmental) i.next(); if ((E2 != null) && (E2 instanceof Food)) { Bread = (Item) E2.copyOf(); target.addItem(Bread); break; } } } } if ((success) && (Bread != null)) { // it worked, so build a copy of this ability, // and add it to the affects list of the // affected MOB. Then tell everyone else // what happened. CMMsg msg = CMClass.getMsg( mob, target, this, verbalCastCode(mob, target, auto), "^S<S-NAME> " + prayWord(mob) + " for <T-NAMESELF> to provide <S-HIS-HER> daily bread!^?"); CMMsg msg2 = CMClass.getMsg( mob, target, this, CMMsg.MSK_CAST_MALICIOUS_VERBAL | CMMsg.TYP_MIND | (auto ? CMMsg.MASK_ALWAYS : 0), null); if ((mob.location().okMessage(mob, msg)) && (mob.location().okMessage(mob, msg2))) { mob.location().send(mob, msg); mob.location().send(mob, msg2); if ((msg.value() <= 0) && (msg2.value() <= 0)) { msg = CMClass.getMsg( target, mob, Bread, CMMsg.MSG_GIVE, "<S-NAME> gladly donate(s) <O-NAME> to <T-NAMESELF>."); if (mob.location().okMessage(mob, msg)) mob.location().send(mob, msg); } } } else maliciousFizzle( mob, target, auto ? "" : "<S-NAME> " + prayWord(mob) + " for <T-NAMESELF> to provide <S-HIS-HER> daily bread, but nothing happens."); // return whether it worked return success; }
public boolean execute(MOB mob, Vector commands, int metaFlags) throws java.io.IOException { if ((!mob.isMonster()) && CMath.bset(mob.getBitmap(), MOB.ATT_QUIET)) { mob.tell("You have QUIET mode on. You must turn it off first."); return false; } if (commands.size() < 3) { mob.tell("Tell whom what?"); return false; } commands.removeElementAt(0); if (((String) commands.firstElement()).equalsIgnoreCase("last") && (CMath.isNumber(CMParms.combine(commands, 1))) && (mob.playerStats() != null)) { java.util.List<String> V = mob.playerStats().getTellStack(); if ((V.size() == 0) || (CMath.bset(metaFlags, Command.METAFLAG_AS)) || (CMath.bset(metaFlags, Command.METAFLAG_POSSESSED))) mob.tell("No telling."); else { int num = CMath.s_int(CMParms.combine(commands, 1)); if (num > V.size()) num = V.size(); Session S = mob.session(); try { if (S != null) S.snoopSuspension(1); for (int i = V.size() - num; i < V.size(); i++) mob.tell((String) V.get(i)); } finally { if (S != null) S.snoopSuspension(-1); } } return false; } MOB targetM = null; String targetName = ((String) commands.elementAt(0)).toUpperCase(); targetM = CMLib.sessions().findPlayerOnline(targetName, true); if (targetM == null) targetM = CMLib.sessions().findPlayerOnline(targetName, false); for (int i = 1; i < commands.size(); i++) { String s = (String) commands.elementAt(i); if (s.indexOf(' ') >= 0) commands.setElementAt("\"" + s + "\"", i); } String combinedCommands = CMParms.combine(commands, 1); if (combinedCommands.equals("")) { mob.tell("Tell them what?"); return false; } combinedCommands = CMProps.applyINIFilter(combinedCommands, CMProps.SYSTEM_SAYFILTER); if (targetM == null) { if (targetName.indexOf('@') >= 0) { String mudName = targetName.substring(targetName.indexOf('@') + 1); targetName = targetName.substring(0, targetName.indexOf('@')); if (CMLib.intermud().i3online() || CMLib.intermud().imc2online()) CMLib.intermud().i3tell(mob, targetName, mudName, combinedCommands); else mob.tell("Intermud is unavailable."); return false; } mob.tell("That person doesn't appear to be online."); return false; } if (CMath.bset(targetM.getBitmap(), MOB.ATT_QUIET)) { mob.tell("That person can not hear you."); return false; } Session ts = targetM.session(); try { if (ts != null) ts.snoopSuspension(1); CMLib.commands().postSay(mob, targetM, combinedCommands, true, true); } finally { if (ts != null) ts.snoopSuspension(-1); } if ((targetM.session() != null) && (targetM.session().afkFlag())) mob.tell(targetM.session().afkMessage()); return false; }