예제 #1
0
  public boolean execute(MOB mob, Vector commands, int metaFlags) throws java.io.IOException {
    boolean skipChecks = mob.Name().equals(mob.getClanID());
    Room R = mob.location();
    if (skipChecks) {
      commands.setElementAt(getAccessWords()[0], 0);
      R = CMLib.map().getRoom(CMParms.combine(commands, 1));
    } else {
      commands.clear();
      commands.addElement(getAccessWords()[0]);
      commands.addElement(CMLib.map().getExtendedRoomID(R));
    }

    if ((mob.getClanID() == null) || (R == null) || (mob.getClanID().equalsIgnoreCase(""))) {
      mob.tell("You aren't even a member of a clan.");
      return false;
    }
    Clan C = mob.getMyClan();
    if (C == null) {
      mob.tell("There is no longer a clan called " + mob.getClanID() + ".");
      return false;
    }
    if (C.getStatus() > Clan.CLANSTATUS_ACTIVE) {
      mob.tell(
          "You cannot set a morgue.  Your "
              + C.getGovernmentName()
              + " does not have enough members to be considered active.");
      return false;
    }
    if (skipChecks || CMLib.clans().goForward(mob, C, commands, Clan.Function.SET_HOME, false)) {
      if (!CMLib.law().doesOwnThisProperty(C.clanID(), R)) {
        mob.tell("Your " + C.getGovernmentName() + " does not own this room.");
        return false;
      }
      if (skipChecks || CMLib.clans().goForward(mob, C, commands, Clan.Function.SET_HOME, true)) {
        C.setMorgue(CMLib.map().getExtendedRoomID(R));
        C.update();
        mob.tell(
            "Your " + C.getGovernmentName() + " morgue is now set to " + R.roomTitle(mob) + ".");
        CMLib.clans()
            .clanAnnounce(
                mob,
                "The morgue of "
                    + C.getGovernmentName()
                    + " "
                    + C.clanID()
                    + " is now set to "
                    + R.roomTitle(mob)
                    + ".");
        return true;
      }
    } else {
      mob.tell(
          "You aren't in the right position to set your " + C.getGovernmentName() + "'s morgue.");
      return false;
    }
    return false;
  }
예제 #2
0
파일: Tell.java 프로젝트: Cocanuta/Marble
  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;
  }