예제 #1
0
파일: Follow.java 프로젝트: Cocanuta/Marble
 public void unfollow(MOB mob, boolean quiet) {
   nofollow(mob, false, quiet);
   Vector V = new Vector();
   for (int f = 0; f < mob.numFollowers(); f++) {
     MOB F = mob.fetchFollower(f);
     if (F != null) V.addElement(F);
   }
   for (int v = 0; v < V.size(); v++) {
     MOB F = (MOB) V.elementAt(v);
     nofollow(F, false, quiet);
   }
 }
예제 #2
0
  public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) {
    if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false;

    boolean success = (!mob.isInCombat()) || proficiencyCheck(mob, 0, auto);
    if (success) {
      int AUTO = auto ? CMMsg.MASK_ALWAYS : 0;
      Room recalledRoom = mob.location();
      Room recallRoom = mob.getStartRoom();
      CMMsg msg =
          CMClass.getMsg(
              mob,
              recalledRoom,
              this,
              verbalCastCode(mob, recalledRoom, auto),
              CMMsg.MASK_MAGIC | AUTO | CMMsg.MSG_LEAVE,
              verbalCastCode(mob, recalledRoom, auto),
              auto
                  ? "<S-NAME> disappear(s) into the Java Plane!"
                  : "<S-NAME> recall(s) body and spirit to the Java Plane!");
      CMMsg msg2 =
          CMClass.getMsg(
              mob,
              recallRoom,
              this,
              verbalCastCode(mob, recallRoom, auto),
              CMMsg.MASK_MAGIC | AUTO | CMMsg.MASK_MOVE | CMMsg.MSG_ENTER,
              verbalCastCode(mob, recallRoom, auto),
              null);
      if ((recalledRoom.okMessage(mob, msg)) && (recallRoom.okMessage(mob, msg2))) {
        recalledRoom.send(mob, msg);
        recallRoom.send(mob, msg2);
        if (recalledRoom.isInhabitant(mob)) recallRoom.bringMobHere(mob, false);
        for (int f = 0; f < mob.numFollowers(); f++) {
          MOB follower = mob.fetchFollower(f);

          msg =
              CMClass.getMsg(
                  follower,
                  recalledRoom,
                  this,
                  verbalCastCode(mob, recalledRoom, auto),
                  CMMsg.MASK_MAGIC | AUTO | CMMsg.MSG_LEAVE,
                  verbalCastCode(mob, recalledRoom, auto),
                  auto
                      ? "<S-NAME> disappear(s) into the Java Plane!"
                      : "<S-NAME> <S-IS-ARE> sucked into the vortex created by "
                          + mob.name()
                          + "s recall.");
          if ((follower != null)
              && (follower.isMonster())
              && (!follower.isPossessing())
              && (follower.location() == recalledRoom)
              && (recalledRoom.isInhabitant(follower))
              && (recalledRoom.okMessage(follower, msg))) {
            msg2 =
                CMClass.getMsg(
                    follower,
                    recallRoom,
                    this,
                    verbalCastCode(mob, recallRoom, auto),
                    CMMsg.MASK_MAGIC | AUTO | CMMsg.MASK_MOVE | CMMsg.MSG_ENTER,
                    verbalCastCode(mob, recallRoom, auto),
                    null);
            if (recallRoom.okMessage(follower, msg2)) {
              recallRoom.send(follower, msg2);
              if (recalledRoom.isInhabitant(follower)) recallRoom.bringMobHere(follower, false);
            }
          }
        }
      }
    } else
      beneficialWordsFizzle(
          mob, null, "<S-NAME> attempt(s) to recall, but <S-HIS-HER> plea goes unheard.");

    // return whether it worked
    return success;
  }
예제 #3
0
 public boolean execute(MOB mob, Vector commands, int metaFlags) throws java.io.IOException {
   commands.removeElementAt(0);
   MOB leader = CMLib.combat().getFollowedLeader(mob);
   List<MOB>[] done = CMLib.combat().getFormation(mob);
   if (commands.size() == 0) {
     StringBuffer str = new StringBuffer("");
     for (int i = 0; i < done.length; i++)
       if (done[i] != null) {
         if (i == 0) str.append("^xfront  - ^.^?");
         else str.append("^xrow +" + i + " - ^.^?");
         for (int i2 = 0; i2 < done[i].size(); i2++)
           str.append(((i2 > 0) ? ", " : "") + ((MOB) done[i].get(i2)).name());
         str.append("\n\r");
       }
     mob.session().colorOnlyPrintln(str.toString());
   } else if (commands.size() == 1) mob.tell("Put whom in what row?");
   else if (mob.numFollowers() == 0) mob.tell("Noone is following you!");
   else {
     String row = (String) commands.lastElement();
     if ("FRONT".startsWith(row.toUpperCase())) row = "0";
     commands.removeElementAt(commands.size() - 1);
     String name = CMParms.combine(commands, 0);
     MOB who = null;
     if (CMLib.english().containsString(mob.name(), name)
         || CMLib.english().containsString(mob.Name(), name)) {
       mob.tell("You can not move your own position.  You are always the leader of your party.");
       return false;
     }
     for (int f = 0; f < mob.numFollowers(); f++) {
       MOB M = mob.fetchFollower(f);
       if (M == null) continue;
       if (CMLib.english().containsString(M.name(), name)
           || CMLib.english().containsString(M.Name(), name)) {
         who = M;
         break;
       }
     }
     if (who == null) {
       mob.tell("There is noone following you called " + name + ".");
       return false;
     }
     if ((!CMath.isNumber(row)) || (CMath.s_int(row) < 0))
       mob.tell(
           "'"
               + row
               + "' is not a valid row in which to put "
               + who.name()
               + ".  Try number greater than 0.");
     else {
       int leaderRow = -1;
       for (int f = 0; f < done.length; f++)
         if ((done[f] != null) && (done[f].contains(leader))) {
           leaderRow = f;
           break;
         }
       if (leaderRow < 0) mob.tell("You do not exist.");
       else if (CMath.s_int(row) < leaderRow)
         mob.tell(
             "You can not place "
                 + who.name()
                 + " behind your own position, which is "
                 + leaderRow
                 + ".");
       else {
         mob.addFollower(who, CMath.s_int(row) - leaderRow);
         mob.tell("You have positioned " + who.name() + " to row " + CMath.s_int(row));
       }
     }
   }
   return false;
 }
예제 #4
0
 public static String getBasic(MOB M, int i) {
   StringBuffer str = new StringBuffer("");
   switch (i) {
     case 0:
       str.append(M.Name() + ", ");
       break;
     case 1:
       str.append(M.description() + ", ");
       break;
     case 2:
       if (M.playerStats() != null)
         str.append(CMLib.time().date2String(M.playerStats().lastDateTime()) + ", ");
       break;
     case 3:
       if (M.playerStats() != null) str.append(M.playerStats().getEmail() + ", ");
       break;
     case 4:
       str.append(M.baseCharStats().getMyRace().name() + ", ");
       break;
     case 5:
       str.append(
           M.baseCharStats().getCurrentClass().name(M.baseCharStats().getCurrentClassLevel())
               + ", ");
       break;
     case 6:
       str.append(M.baseEnvStats().level() + ", ");
       break;
     case 7:
       str.append(M.baseCharStats().displayClassLevel(M, true) + ", ");
       break;
     case 8:
       str.append(M.baseCharStats().getClassLevel(M.baseCharStats().getCurrentClass()) + ", ");
       break;
     case 9:
       {
         for (int c = M.charStats().numClasses() - 1; c >= 0; c--) {
           CharClass C = M.charStats().getMyClass(c);
           str.append(
               C.name(M.baseCharStats().getCurrentClassLevel())
                   + " ("
                   + M.charStats().getClassLevel(C)
                   + ") ");
         }
         str.append(", ");
         break;
       }
     case 10:
       if (M.maxCarry() > (Integer.MAX_VALUE / 3)) str.append("NA, ");
       else str.append(M.maxCarry() + ", ");
       break;
     case 11:
       str.append(CMStrings.capitalizeAndLower(CMLib.combat().fightingProwessStr(M)) + ", ");
       break;
     case 12:
       str.append(CMStrings.capitalizeAndLower(CMLib.combat().armorStr(M)) + ", ");
       break;
     case 13:
       str.append(CMLib.combat().adjustedDamage(M, null, null) + ", ");
       break;
     case 14:
       str.append(Math.round(CMath.div(M.getAgeHours(), 60.0)) + ", ");
       break;
     case 15:
       str.append(M.getPractices() + ", ");
       break;
     case 16:
       str.append(M.getExperience() + ", ");
       break;
     case 17:
       if (M.getExpNeededLevel() == Integer.MAX_VALUE) str.append("N/A, ");
       else str.append(M.getExpNextLevel() + ", ");
       break;
     case 18:
       str.append(M.getTrains() + ", ");
       break;
     case 19:
       str.append(CMLib.beanCounter().getMoney(M) + ", ");
       break;
     case 20:
       str.append(M.getWorshipCharID() + ", ");
       break;
     case 21:
       str.append(M.getLiegeID() + ", ");
       break;
     case 22:
       str.append(M.getClanID() + ", ");
       break;
     case 23:
       if (M.getClanID().length() > 0) {
         Clan C = CMLib.clans().getClan(M.getClanID());
         if (C != null)
           str.append(
               CMLib.clans().getRoleName(C.getGovernment(), M.getClanRole(), true, false) + ", ");
       }
       break;
     case 24:
       str.append(M.fetchFaction(CMLib.factions().AlignID()) + ", ");
       break;
     case 25:
       {
         Faction.FactionRange FR =
             CMLib.factions()
                 .getRange(CMLib.factions().AlignID(), M.fetchFaction(CMLib.factions().AlignID()));
         if (FR != null) str.append(FR.name() + ", ");
         else str.append(M.fetchFaction(CMLib.factions().AlignID()));
         break;
       }
     case 26:
       str.append(M.getWimpHitPoint() + ", ");
       break;
     case 27:
       if (M.getStartRoom() != null) str.append(M.getStartRoom().displayText() + ", ");
       break;
     case 28:
       if (M.location() != null) str.append(M.location().displayText() + ", ");
       break;
     case 29:
       if (M.getStartRoom() != null) str.append(M.getStartRoom().roomID() + ", ");
       break;
     case 30:
       if (M.location() != null) str.append(M.location().roomID() + ", ");
       break;
     case 31:
       {
         for (int inv = 0; inv < M.inventorySize(); inv++) {
           Item I = M.fetchInventory(inv);
           if ((I != null) && (I.container() == null)) str.append(I.name() + ", ");
         }
         break;
       }
     case 32:
       str.append(M.baseEnvStats().weight() + ", ");
       break;
     case 33:
       str.append(M.envStats().weight() + ", ");
       break;
     case 34:
       str.append(CMStrings.capitalizeAndLower(M.baseCharStats().genderName()) + ", ");
       break;
     case 35:
       if (M.playerStats() != null) str.append(M.playerStats().lastDateTime() + ", ");
       break;
     case 36:
       str.append(M.curState().getHitPoints() + ", ");
       break;
     case 37:
       str.append(M.curState().getMana() + ", ");
       break;
     case 38:
       str.append(M.curState().getMovement() + ", ");
       break;
     case 39:
       if (M.riding() != null) str.append(M.riding().name() + ", ");
       break;
     case 40:
       str.append(M.baseEnvStats().height() + ", ");
       break;
     case 41:
       if (!M.isMonster()) str.append(M.session().getAddress() + ", ");
       else if (M.playerStats() != null) str.append(M.playerStats().lastIP() + ", ");
       break;
     case 42:
       str.append(M.getQuestPoint() + ", ");
       break;
     case 43:
       str.append(M.maxState().getHitPoints() + ", ");
       break;
     case 44:
       str.append(M.maxState().getMana() + ", ");
       break;
     case 45:
       str.append(M.maxState().getMovement() + ", ");
       break;
     case 46:
       str.append(M.rawImage() + ", ");
       break;
     case 47:
       str.append(M.maxItems() + ", ");
       break;
     case 48:
       {
         String[] paths = CMProps.mxpImagePath(M.image());
         if (paths[0].length() > 0) str.append(paths[0] + paths[1] + ", ");
         break;
       }
     case 49:
       if (CMProps.mxpImagePath(M.image())[0].length() > 0) str.append("true, ");
       else str.append("false, ");
       break;
     case 50:
       if (M.playerStats() != null) str.append(M.playerStats().notes() + ", ");
       break;
     case 51:
       if (M.playerStats() != null) {
         long lastDateTime = -1;
         for (int level = 0; level <= M.envStats().level(); level++) {
           long dateTime = M.playerStats().leveledDateTime(level);
           if ((dateTime > 1529122205) && (dateTime != lastDateTime)) {
             str.append("<TR>");
             if (level == 0) str.append("<TD><FONT COLOR=WHITE>Created</FONT></TD>");
             else str.append("<TD><FONT COLOR=WHITE>" + level + "</FONT></TD>");
             str.append(
                 "<TD><FONT COLOR=WHITE>"
                     + CMLib.time().date2String(dateTime)
                     + "</FONT></TD></TR>");
           }
         }
         str.append(", ");
       }
       break;
     case 52:
       str.append(M.baseEnvStats().attackAdjustment() + ", ");
       break;
     case 53:
       str.append(M.baseEnvStats().damage() + ", ");
       break;
     case 54:
       str.append(M.baseEnvStats().armor() + ", ");
       break;
     case 55:
       str.append(M.envStats().speed() + ", ");
       break;
     case 56:
       str.append(M.baseEnvStats().speed() + ", ");
       break;
     case 57:
       {
         for (int e = 0; e < M.numExpertises(); e++) {
           String E = M.fetchExpertise(e);
           ExpertiseLibrary.ExpertiseDefinition X = CMLib.expertises().getDefinition(E);
           if (X == null) str.append(E + ", ");
           else str.append(X.name + ", ");
         }
         break;
       }
     case 58:
       {
         for (int t = 0; t < M.numTattoos(); t++) {
           String E = M.fetchTattoo(t);
           str.append(E + ", ");
         }
         break;
       }
     case 59:
       {
         if (M.playerStats() != null)
           for (int b = 0; b < M.playerStats().getSecurityGroups().size(); b++) {
             String B = (String) M.playerStats().getSecurityGroups().elementAt(b);
             if (B != null) str.append(B + ", ");
           }
         break;
       }
     case 60:
       {
         if (M.playerStats() != null)
           for (int b = 0; b < M.playerStats().getTitles().size(); b++) {
             String B = (String) M.playerStats().getTitles().elementAt(b);
             if (B != null) str.append(B + ", ");
           }
         break;
       }
     case 61:
       {
         for (Enumeration e = M.fetchFactions(); e.hasMoreElements(); ) {
           String FID = (String) e.nextElement();
           Faction F = CMLib.factions().getFaction(FID);
           int value = M.fetchFaction(FID);
           if (F != null) str.append(F.name() + " (" + value + "), ");
         }
         break;
       }
     case 62:
       str.append(CMProps.getBoolVar(CMProps.SYSTEMB_ACCOUNTEXPIRATION) ? "true" : "false");
       break;
     case 63:
       if (M.playerStats() != null)
         str.append(CMLib.time().date2String(M.playerStats().getAccountExpiration()));
       break;
     case 64:
       {
         for (int f = 0; f < M.numFollowers(); f++)
           str.append(M.fetchFollower(f).name()).append(", ");
         // Vector V=CMLib.database().DBScanFollowers(M);
         // for(int v=0;v<V.size();v++)
         //    str.append(((MOB)V.elementAt(v)).name()).append(", ");
         break;
       }
     case 65:
       if ((M.playerStats() != null) && (M.playerStats().getAccount() != null))
         str.append(M.playerStats().getAccount().accountName());
       break;
   }
   return str.toString();
 }