Example #1
0
  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;
  }