예제 #1
0
 public void insertOrderDeathInOrder(DVector DV, long lastStart, String msg, Tick tock) {
   if (DV.size() > 0)
     for (int i = 0; i < DV.size(); i++) {
       if (((Long) DV.elementAt(i, 1)).longValue() > lastStart) {
         DV.insertElementAt(i, Long.valueOf(lastStart), msg, tock);
         return;
       }
     }
   DV.addElement(Long.valueOf(lastStart), msg, tock);
 }
예제 #2
0
 private void addSortedRoom(Room R, int x, int y) {
   if ((x < 0) || (y < 0) || (y >= yGridSize()) || (x >= xGridSize()) || (R == null)) return;
   synchronized (rooms) {
     long total = ((long) x << 31) + y;
     int pos = properRoomIndex(x, y);
     if (pos >= rooms.size()) {
       rooms.addElement(R, Integer.valueOf(x), Integer.valueOf(y));
       return;
     }
     long comptotal =
         (((Integer) rooms.elementAt(pos, 2)).longValue() << 31)
             + ((Integer) rooms.elementAt(pos, 3)).longValue();
     int comp = comptotal > total ? 1 : (comptotal == total) ? 0 : -1;
     if (comp == 0) return;
     if (comp > 0) rooms.insertElementAt(pos, R, Integer.valueOf(x), Integer.valueOf(y));
     else if (pos == rooms.size() - 1) rooms.addElement(R, Integer.valueOf(x), Integer.valueOf(y));
     else rooms.insertElementAt(pos + 1, R, Integer.valueOf(x), Integer.valueOf(y));
   }
 }
예제 #3
0
 public void confirmWearability(MOB mob) {
   if (mob == null) return;
   Race R = mob.charStats().getMyRace();
   DVector reWearSet = new DVector(2);
   Item item = null;
   for (int i = 0; i < mob.inventorySize(); i++) {
     item = mob.fetchInventory(i);
     if ((item != null) && (!item.amWearingAt(Wearable.IN_INVENTORY))) {
       Long oldCode = Long.valueOf(item.rawWornCode());
       item.unWear();
       if (reWearSet.size() == 0) reWearSet.addElement(item, oldCode);
       else {
         short layer = (item instanceof Armor) ? ((Armor) item).getClothingLayer() : 0;
         int d = 0;
         for (; d < reWearSet.size(); d++)
           if (reWearSet.elementAt(d, 1) instanceof Armor) {
             if (((Armor) reWearSet.elementAt(d, 1)).getClothingLayer() > layer) break;
           } else if (0 > layer) break;
         if (d >= reWearSet.size()) reWearSet.addElement(item, oldCode);
         else reWearSet.insertElementAt(d, item, oldCode);
       }
     }
   }
   for (int r = 0; r < reWearSet.size(); r++) {
     item = (Item) reWearSet.elementAt(r, 1);
     long oldCode = ((Long) reWearSet.elementAt(r, 2)).longValue();
     int msgCode = CMMsg.MSG_WEAR;
     if ((oldCode & Wearable.WORN_WIELD) > 0) msgCode = CMMsg.MSG_WIELD;
     else if ((oldCode & Wearable.WORN_HELD) > 0) msgCode = CMMsg.MSG_HOLD;
     CMMsg msg =
         CMClass.getMsg(
             mob, item, null, CMMsg.NO_EFFECT, null, msgCode, null, CMMsg.NO_EFFECT, null);
     if ((R.okMessage(mob, msg))
         && (item.okMessage(item, msg))
         && ((mob.charStats().getWearableRestrictionsBitmap() & oldCode) == 0)
         && (item.canWear(mob, oldCode))) item.wearAt(oldCode);
   }
   // why wasn't that here before?
   mob.recoverEnvStats();
   mob.recoverCharStats();
   mob.recoverMaxState();
 }