@Override
  public boolean invoke(
      MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel) {
    if (commands.size() < 1) {
      mob.tell(
          L(
              "You must specify an item to fence, and possibly a ShopKeeper (unless it is implied)."));
      return false;
    }

    commands.add(0, "SELL"); // will be instantly deleted by parseshopkeeper
    final Environmental shopkeeper =
        CMLib.english().parseShopkeeper(mob, commands, L("Fence what to whom?"));
    if (shopkeeper == null) return false;
    if (commands.size() == 0) {
      mob.tell(L("Fence what?"));
      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,
              shopkeeper,
              this,
              CMMsg.MSG_SPEAK,
              auto ? "" : L("<S-NAME> fence(s) stolen loot to <T-NAMESELF>."));
      if (mob.location().okMessage(mob, msg)) {
        mob.location().send(mob, msg);
        invoker = mob;
        addBackMap.clear();
        mob.addEffect(this);
        mob.recoverCharStats();
        commands.add(0, CMStrings.capitalizeAndLower("SELL"));
        mob.doCommand(commands, MUDCmdProcessor.METAFLAG_FORCED);
        commands.add(shopkeeper.name());
        mob.delEffect(this);
        for (Item I : addBackMap.keySet()) {
          if (mob.isMine(I)) {
            I.addEffect(addBackMap.get(I));
          }
        }
        addBackMap.clear();
        mob.recoverCharStats();
      }
    } else
      beneficialWordsFizzle(
          mob,
          shopkeeper,
          L(
              "<S-NAME> attempt(s) to fence stolen loot to <T-NAMESELF>, but make(s) <T-HIM-HER> too nervous."));

    // return whether it worked
    return success;
  }
示例#2
0
  @Override
  public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) {
    String cmd = "";
    if (commands.size() > 0) cmd = ((String) commands.firstElement()).toUpperCase();

    if ((commands.size() < 2) || ((!cmd.equals("BUY") && (!cmd.equals("SELL"))))) {
      mob.tell(
          L(
              "You must specify BUY, SELL, an item, and possibly a ShopKeeper (unless it is implied)."));
      return false;
    }

    final Environmental shopkeeper =
        CMLib.english()
            .parseShopkeeper(mob, commands, CMStrings.capitalizeAndLower(cmd) + " what to whom?");
    if (shopkeeper == null) return false;
    if (commands.size() == 0) {
      mob.tell(L("@x1 what?", CMStrings.capitalizeAndLower(cmd)));
      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,
              shopkeeper,
              this,
              CMMsg.MSG_SPEAK,
              auto ? "" : L("<S-NAME> haggle(s) with <T-NAMESELF>."));
      if (mob.location().okMessage(mob, msg)) {
        mob.location().send(mob, msg);
        invoker = mob;
        mob.addEffect(this);
        mob.recoverCharStats();
        commands.insertElementAt(CMStrings.capitalizeAndLower(cmd), 0);
        mob.doCommand(commands, Command.METAFLAG_FORCED);
        commands.addElement(shopkeeper.name());
        mob.delEffect(this);
        mob.recoverCharStats();
      }
    } else
      beneficialWordsFizzle(
          mob, shopkeeper, L("<S-NAME> haggle(s) with <T-NAMESELF>, but <S-IS-ARE> unconvincing."));

    // return whether it worked
    return success;
  }
示例#3
0
 public String getTickStatusSummary(Tickable obj) {
   if (obj == null) return "";
   long code = obj.getTickStatus();
   if (obj instanceof Environmental) {
     if (CMath.bset(code, Tickable.STATUS_BEHAVIOR)) {
       long b = (code - Tickable.STATUS_BEHAVIOR);
       String codeWord = "Behavior #" + b;
       if ((b >= 0) && (b < ((Environmental) obj).numBehaviors())) {
         Behavior B = ((Environmental) obj).fetchBehavior((int) b);
         codeWord += " (" + B.name() + ": " + B.getTickStatus();
       } else codeWord += " (#Error#)";
       return codeWord;
     } else if (CMath.bset(code, Tickable.STATUS_SCRIPT) && (obj instanceof MOB)) {
       long b = (code - Tickable.STATUS_SCRIPT);
       String codeWord = "Script #" + b;
       if ((b >= 0) && (b < ((MOB) obj).numScripts())) {
         ScriptingEngine S = ((MOB) obj).fetchScript((int) b);
         codeWord += " (" + CMStrings.limit(S.getScript(), 20) + ": " + S.getTickStatus();
       }
       return codeWord;
     } else if ((code & STATUS_ALLMISCTICKS) > 0) {
       long base = (code & STATUS_ALLMISCTICKS);
       int num = 0;
       for (int i = 1; i < 6; i++)
         if ((1 << (10 + i)) == base) {
           num = i;
           break;
         }
       return "Misc" + num + " Activity #" + (code - base);
     } else if (CMath.bset(code, Tickable.STATUS_AFFECT)) {
       long b = (code - Tickable.STATUS_AFFECT);
       String codeWord = "Effect #" + b;
       if ((b >= 0) && (b < ((Environmental) obj).numEffects())) {
         Environmental E = ((Environmental) obj).fetchEffect((int) b);
         codeWord += " (" + E.name() + ": " + E.getTickStatus() + ")";
       }
       return codeWord;
     }
   }
   String codeWord = null;
   if (CMath.bset(code, Tickable.STATUS_BEHAVIOR)) codeWord = "Behavior?!";
   else if (CMath.bset(code, Tickable.STATUS_SCRIPT)) codeWord = "Script?!";
   else if (CMath.bset(code, Tickable.STATUS_AFFECT)) codeWord = "Effect?!";
   else
     switch ((int) code) {
       case (int) Tickable.STATUS_ALIVE:
         codeWord = "Alive";
         break;
       case (int) Tickable.STATUS_REBIRTH:
         codeWord = "Rebirth";
         break;
       case (int) Tickable.STATUS_CLASS:
         codeWord = "Class";
         break;
       case (int) Tickable.STATUS_DEAD:
         codeWord = "Dead";
         break;
       case (int) Tickable.STATUS_END:
         codeWord = "End";
         break;
       case (int) Tickable.STATUS_FIGHT:
         codeWord = "Fighting";
         break;
       case (int) Tickable.STATUS_NOT:
         codeWord = "!";
         break;
       case (int) Tickable.STATUS_OTHER:
         codeWord = "Other";
         break;
       case (int) Tickable.STATUS_RACE:
         codeWord = "Race";
         break;
       case (int) Tickable.STATUS_START:
         codeWord = "Start";
         break;
       case (int) Tickable.STATUS_WEATHER:
         codeWord = "Weather";
         break;
       default:
         codeWord = "?";
         break;
     }
   return codeWord;
 }