Package org.moparscape.msc.gs.model

Examples of org.moparscape.msc.gs.model.Player


  }

  private void processIncomingPackets() {
    for (RSCPacket p : packetQueue.getPackets()) {
      IoSession session = p.getSession();
      Player player = (Player) session.getAttachment();
      if (player.getUsername() == null && p.getID() != 32
          && p.getID() != 77 && p.getID() != 0) {
        final String ip = player.getCurrentIP();
        IPBanManager.throttle(ip);
        continue;
      }
      PacketHandler handler = packetHandlers.get(p.getID());
      player.ping();
      if (handler != null) {
        try {
          handler.handlePacket(p, session);
          try {
            if (p.getID() != 5) {
              // String s = "[PACKET] " +
              // session.getRemoteAddress().toString().replace("/",
              // "") + " : " + p.getID()+
              // " ["+handler.getClass().toString()+"]" + " : "+
              // player.getUsername() + " : ";
              // for(Byte b : p.getData())
              // s += b;
              // Logger.println(s);
            }
          } catch (Exception e) {
            e.printStackTrace();
          }

        } catch (Exception e) {
          String s;
          StringWriter sw = new StringWriter();
          PrintWriter pw = new PrintWriter(sw, true);
          e.printStackTrace(pw);
          pw.flush();
          sw.flush();
          s = sw.toString();
          Logger.error("Exception with p[" + p.getID() + "] from "
              + player.getUsername() + " ["
              + player.getCurrentIP() + "]: " + s);
          player.getActionSender().sendLogout();
          player.destroy(false);
        }
      } else {
        Logger.error("Unhandled packet from " + player.getCurrentIP()
            + ": " + p.getID() + "len: " + p.getLength());
      }
    }
  }
View Full Code Here


    }

    if (attacker instanceof Npc && opponent instanceof Player
        && attacker.getHitsMade() >= (attacked ? 4 : 3)) {
      Npc npc = (Npc) attacker;
      Player player = (Player) opponent;
      if (npc.getCurHits() <= npc.getDef().hits * 0.10
          && npc.getCurHits() > 0) {
        if (!npc.getLocation().inWilderness()
            && npc.getDef().attackable && !npc.getDef().aggressive) {
          boolean go = true;
          for (int i : Constants.GameServer.NPCS_THAT_DONT_RETREAT) {
            if (i == npc.getID()) {
              go = false;
              break;
            }
          }

          if (go) {
            player.getActionSender().sendSound("retreat");
            npc.unblock();
            npc.resetCombat(CombatState.RUNNING);
            player.resetCombat(CombatState.WAITING);
            npc.setRan(true);
            npc.setPath(new Path(attacker.getX(), attacker.getY(),
                DataConversions.random(npc.getLoc().minX(), npc
                    .getLoc().maxX()), DataConversions
                    .random(npc.getLoc().minY(), npc
                        .getLoc().maxY())));
            player.resetAll();
            player.getActionSender().sendMessage(
                "Your opponent is retreating");
            this.stop();
            return;
          }
        }
      }
    }

    opponent.setLastDamage(damage);
    int newHp = opponent.getHits() - damage;
    opponent.setHits(newHp);

    String combatSound = null;
    combatSound = damage > 0 ? "combat1b" : "combat1a";
    if (opponent instanceof Player) {
      if (attacker instanceof Npc) {
        Npc n = (Npc) attacker;
        if (n.hasArmor) {
          combatSound = damage > 0 ? "combat2b" : "combat2a";
        } else if (n.undead) {
          combatSound = damage > 0 ? "combat3b" : "combat3a";
        } else {
          combatSound = damage > 0 ? "combat1b" : "combat1a";
        }
      }
      Player opponentPlayer = ((Player) opponent);
      opponentPlayer.getActionSender().sendStat(3);
      opponentPlayer.getActionSender().sendSound(combatSound);
    }
    if (attacker instanceof Player) {
      if (opponent instanceof Npc) {
        Npc n = (Npc) opponent;
        if (n.hasArmor) {
          combatSound = damage > 0 ? "combat2b" : "combat2a";
        } else if (n.undead) {
          combatSound = damage > 0 ? "combat3b" : "combat3a";
        } else {
          combatSound = damage > 0 ? "combat1b" : "combat1a";
        }
      }
      Player attackerPlayer = (Player) attacker;
      attackerPlayer.getActionSender().sendSound(combatSound);
    }

    if (newHp <= 0) {

      Mob toLoot = attacker;

      // Logging.debug(opponent+" killed by "+attacker);

      if (attacker instanceof Player) {
        Player attackerPlayer = (Player) attacker;
        toLoot = attackerPlayer;
        if (opponent instanceof Player) {
          // Logging.debug(opponent+" killed by "+attacker);
          opponent.killedBy(attackerPlayer, false);
        }

        if (attacker instanceof Player && opponent instanceof Npc) {
          Npc npc = (Npc) opponent;
          npc.getSyndicate().distributeExp(npc);
        } else {
          int exp = DataConversions.roundUp(Formulae
              .combatExperience(opponent) / 4D);
          switch (attackerPlayer.getCombatStyle()) {
          case 0:

            for (int x = 0; x < 2; x++) {
              attackerPlayer.incExp(x, exp, true, true);
              attackerPlayer.getActionSender().sendStat(x);
            }
            attackerPlayer.incExp(2, exp, true, true);
            attackerPlayer.getActionSender().sendStat(2);
            break;
          case 1:
            attackerPlayer.incExp(2, exp * 3, true, true);
            attackerPlayer.getActionSender().sendStat(2);
            break;
          case 2:
            attackerPlayer.incExp(0, exp * 3, true, true);
            attackerPlayer.getActionSender().sendStat(0);
            break;
          case 3:
            attackerPlayer.incExp(1, exp * 3, true, true);
            attackerPlayer.getActionSender().sendStat(1);
            break;
          }
          attackerPlayer.incExp(3, exp, true, true);
          attackerPlayer.getActionSender().sendStat(3);
        }
      }
      // if the dead mob isn't a player...
      if (!(affectedMob instanceof Player)) {
        opponent.killedBy(toLoot, false);
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    if (!player.isChangingAppearance()) {
      player.setSuspiciousPlayer(true);
      return;
    }
    player.setChangingAppearance(false);

    byte headGender = p.readByte();
    byte headType = p.readByte();
    byte bodyGender = p.readByte();

    p.readByte(); // wtf is this?

    int hairColour = (int) p.readByte();
    int topColour = (int) p.readByte();
    int trouserColour = (int) p.readByte();
    int skinColour = (int) p.readByte();

    int headSprite = headType + 1;
    int bodySprite = bodyGender + 1;

    PlayerAppearance appearance = new PlayerAppearance(hairColour,
        topColour, trouserColour, skinColour, headSprite, bodySprite);
    if (!appearance.isValid()) {
      player.setSuspiciousPlayer(true);
      return;
    }

    player.setMale(headGender == 1);

    if (player.isMale()) {
      Inventory inv = player.getInventory();
      for (int slot = 0; slot < inv.size(); slot++) {
        InvItem i = inv.getSlot(slot);
        ItemWieldableDef def = ItemAttributes.getWieldable(i.id);
        if (ItemAttributes.isWieldable(i.id) && def.getWieldPos() == 1
            && i.wielded && def.femaleOnly()) {
          inv.setWield(slot, false);
          player.updateWornItems(def.getWieldPos(), player
              .getPlayerAppearance().getSprite(def.getWieldPos()));
          player.getActionSender().sendUpdateItem(slot);
          break;
        }
      }
    }

    int[] oldWorn = player.getWornItems();
    int[] oldAppearance = player.getPlayerAppearance().getSprites();
    player.setAppearance(appearance);
    int[] newAppearance = player.getPlayerAppearance().getSprites();
    for (int i = 0; i < 12; i++) {
      if (oldWorn[i] == oldAppearance[i]) {
        player.updateWornItems(i, newAppearance[i]);
      }
    }
  }
View Full Code Here

    String f = org.moparscape.msc.gs.tools.DataConversions
        .hashToUsername(from);
    String a = org.moparscape.msc.gs.tools.DataConversions
        .hashToUsername(about);

    Player about2 = World.getWorld().getPlayer(about);
    int player2X;
    int player2Y;
    if (about2 == null) {
      player2X = 0;
      player2Y = 0;
    } else {
      player2X = about2.getX();
      player2Y = about2.getY();
    }
    StringBuilder snapshot_from = new StringBuilder();
    StringBuilder snapshot_about = new StringBuilder();

    StringBuilder chatlog = new StringBuilder();
View Full Code Here

  public void messageReceived(NextFilter nextFilter, IoSession session,
      Object message) {

        // TODO: FIX ME.

    Player player = (Player) session.getAttachment();
    if (session.isClosing() || player.destroyed()) {
      return;
    }

    int count = incrementAndGet(player.getUsernameHash());
    //System.out.println(count);
    if (count > Config.PACKET_PER_SECOND_THRESHOLD) {

      if (Config.PACKET_PER_SECOND_ALERT) {
        // If the player is initialized, then use the username,
        // otherwise use the IP.
        String s = (player.isInitialized() ? player.getUsername()
            : player.getCurrentIP())
            + " has exceeded the packet per second threshold";
        // Sends an alert with a priority of 2.
        AlertHandler.sendAlert(s, 2);
      }

      // Destroys the user and discards the packet.
      player.destroy(true);
      return;
    }

    nextFilter.messageReceived(session, message);
  }
View Full Code Here

    return null;

  }

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    if (player.isBusy()) {
      player.resetPath();
      return;
    }
    player.resetAll();
    Point location = Point.location(p.readShort(), p.readShort());
    int id = p.readShort();
    final ActiveTile tile = world.getTile(location);
    final Item item = getItem(id, tile, player);

    if (item == null) {
      // player.setSuspiciousPlayer(true);
      player.resetPath();
      return;
    }

    if (!item.getDef().canTrade()) {
      if (item.droppedby() != 0
          && org.moparscape.msc.gs.tools.DataConversions
              .usernameToHash(player.getUsername()) != item
              .droppedby()) {
        player.getActionSender().sendMessage(
            "This item is non-tradable.");
        return;
      }
    }

    if (player.isPMod() && !player.isMod())
      return;
    if (item.getDef().isMembers() && !World.isMembers()) {
      player.getActionSender().sendMessage(
          "This feature is only avaliable on a members server");
      return;
    }

    player.setStatus(Action.TAKING_GITEM);
    boolean blocked = false;
    try {
      PathHandler pa = new PathHandler(player);
      for (int i : new int[] { 1, 2, 4, 8 }) {
        if (pa.isBlocking(location.getX(), location.getY(), i)) {
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    MenuHandler menuHandler = player.getMenuHandler();
    if (menuHandler == null) {
      player.setSuspiciousPlayer(true);
      return;
    }
    int option = (int) p.readByte();
    String reply = menuHandler.getOption(option);
    player.resetMenuHandler();
    if (reply == null) {
      player.setSuspiciousPlayer(true);
      return;
    }
    menuHandler.handleReply(option, reply);
  }
View Full Code Here

    return DataConversions.random(0, levelDiff + 1) == 0;
  }

  public static int calcGodSpells(Mob attacker, Mob defender) {
    if (attacker instanceof Player) {
      Player owner = (Player) attacker;
      int newAtt = (int) ((owner.getMagicPoints()) + owner.getCurStat(6));
      int newDef = (int) ((addPrayers(defender.isPrayerActivated(0),
          defender.isPrayerActivated(3),
          defender.isPrayerActivated(9))
          * defender.getDefense() / 4D) + (defender.getArmourPoints() / 4D));
      int hitChance = DataConversions.random(0, 150 + (newAtt - newDef));
      // int hitChance = (int)(50D + (double)owner.getMagicPoints() -
      // newDef);

      if (hitChance > (defender instanceof Npc ? 50 : 60)) {
        // int max = owner.isCharged() ? Rand(15, 25) : Rand(0, 10);
        int max;
        if (owner.isCharged()) {
          max = Rand(14, 25);

        } else {
          max = Rand(0, 10);
        }
View Full Code Here

    }
    return false;
  }

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();
    int prayerID = (int) p.readByte();
    if (prayerID < 0 || prayerID >= 14) {
      player.setSuspiciousPlayer(true);
      player.getActionSender().sendPrayers();
      return;
    }
    if (player.isDueling() && player.getDuelSetting(2)) {
      player.getActionSender().sendMessage(
          "Prayer is disabled in this duel");
      player.getActionSender().sendPrayers();
      return;
    }
    PrayerDef prayer = EntityHandler.getPrayerDef(prayerID);
    switch (pID) {
    case 56:
      if (player.getMaxStat(5) < prayer.getReqLevel()) {
        player.setSuspiciousPlayer(true);
        player.getActionSender()
            .sendMessage(
                "Your prayer ability is not high enough to use this prayer");
        break;
      }
      if (player.getCurStat(5) <= 0) {
        player.setPrayer(prayerID, false);
        player.getActionSender()
            .sendMessage(
                "You have run out of prayer points. Return to a church to recharge");
        break;
      }
      activatePrayer(player, prayerID);
      break;
    case 248:
      deactivatePrayer(player, prayerID);
      break;
    }
    player.getActionSender().sendPrayers();
  }
View Full Code Here

    return player.isBusy() || player.isRanging() || player.accessingBank()
        || player.isTrading();
  }

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();

    Player affectedPlayer = player.getWishToDuel();
    if (player == affectedPlayer) {
      Logger.println("Warning : " + player.getUsername()
          + " tried to duel himself");
      unsetOptions(player);
      unsetOptions(affectedPlayer);
      return;
    }
    if (player.isPMod() && !player.isMod())
      return;
    if (!Server.isMembers()) {
      player.getActionSender().sendMessage(
          Constants.GameServer.P2P_LIMIT_MESSAGE);
      return;
    }

    if (player.isDuelConfirmAccepted() && affectedPlayer != null
        && affectedPlayer.isDuelConfirmAccepted()) {
      // If we are actually dueling we shouldn't touch any settings
      // (modify or unset!)
      return;
    }
    if (busy(player) || player.getLocation().inWilderness()) {
      unsetOptions(player);
      unsetOptions(affectedPlayer);
      return;
    }
    if (player.getLocation().inModRoom()) {
      player.getActionSender().sendMessage("You cannot duel in here!");
      unsetOptions(player);
      unsetOptions(affectedPlayer);
      return;
    }
    switch (pID) {
    case 222: // Sending duel request
      affectedPlayer = world.getPlayer(p.readShort());
      if (affectedPlayer == null || affectedPlayer.isDueling()
          || !player.withinRange(affectedPlayer, 8)
          || player.isDueling() || player.tradeDuelThrottling()) {
        unsetOptions(player);
        return;
      }
      if (!new PathGenerator(player.getX(), player.getY(),
          affectedPlayer.getX(), affectedPlayer.getY()).isValid()) {
        unsetOptions(player);
        return;
      }

      if ((affectedPlayer.getPrivacySetting(3) && !affectedPlayer
          .isFriendsWith(player.getUsernameHash()))
          || affectedPlayer.isIgnoring(player.getUsernameHash())) {
        player.getActionSender().sendMessage(
            "This player has duel requests blocked.");
        return;
      }

      player.setWishToDuel(affectedPlayer);
      player.getActionSender().sendMessage(
          affectedPlayer.isDueling() ? affectedPlayer.getUsername()
              + " is already in a duel" : "Sending duel request");
      affectedPlayer.getActionSender()
          .sendMessage(
              player.getUsername()
                  + " "
                  + Formulae.getLvlDiffColour(affectedPlayer
                      .getCombatLevel()
                      - player.getCombatLevel())
                  + "(level-" + player.getCombatLevel()
                  + ")@whi@ wishes to duel with you");

      if (!player.isDueling() && affectedPlayer.getWishToDuel() != null
          && affectedPlayer.getWishToDuel().equals(player)
          && !affectedPlayer.isDueling()) {
        player.setDueling(true);
        player.resetPath();
        player.clearDuelOptions();
        player.resetAllExceptDueling();
        affectedPlayer.setDueling(true);
        affectedPlayer.resetPath();
        affectedPlayer.clearDuelOptions();
        affectedPlayer.resetAllExceptDueling();

        player.getActionSender().sendDuelWindowOpen();
        affectedPlayer.getActionSender().sendDuelWindowOpen();
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " sent duel request "
                + affectedPlayer.getUsername() + " at: "
                + player.getX() + "/" + player.getY() + " | "
                + affectedPlayer.getX() + "/"
                + affectedPlayer.getY()));

      }
      break;
    case 252: // Duel accepted
      affectedPlayer = player.getWishToDuel();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isDueling() || !affectedPlayer.isDueling()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }

      player.setDuelOfferAccepted(true);

      player.getActionSender().sendDuelAcceptUpdate();
      affectedPlayer.getActionSender().sendDuelAcceptUpdate();

      if (affectedPlayer.isDuelOfferAccepted()) {
        player.getActionSender().sendDuelAccept();
        affectedPlayer.getActionSender().sendDuelAccept();
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " accepted duel request "
          + affectedPlayer.getUsername()
          + " at: "
          + player.getX()
          + "/"
          + player.getY()
          + " | "
          + affectedPlayer.getX()
          + "/"
          + affectedPlayer.getY()));

      break;
    case 87: // Confirm accepted
      affectedPlayer = player.getWishToDuel();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isDueling() || !affectedPlayer.isDueling()
          || !player.isDuelOfferAccepted()
          || !affectedPlayer.isDuelOfferAccepted()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }
      player.setDuelConfirmAccepted(true);

      if (affectedPlayer.isDuelConfirmAccepted()) {
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " started duel "
                + affectedPlayer.getUsername() + " at: "
                + player.getX() + "/" + player.getY() + " | "
                + affectedPlayer.getX() + "/"
                + affectedPlayer.getY()));
        player.getActionSender().sendDuelWindowClose();
        player.getActionSender().sendMessage("Commencing Duel");
        affectedPlayer.getActionSender().sendDuelWindowClose();
        affectedPlayer.getActionSender().sendMessage("Commencing Duel");

        player.resetAllExceptDueling();
        player.setBusy(true);
        player.setStatus(Action.DUELING_PLAYER);

        affectedPlayer.resetAllExceptDueling();
        affectedPlayer.setBusy(true);
        affectedPlayer.setStatus(Action.DUELING_PLAYER);

        if (player.getDuelSetting(3)) {
          int slot = 0;
          for (InvItem item : player.getInventory().getItems()) {
            if (item.wielded) {
              player.getInventory().setWield(slot, false);
              player.updateWornItems(
                  ItemAttributes.getWieldable(item.id)
                      .getWieldPos(),
                  player.getPlayerAppearance().getSprite(
                      ItemAttributes
                          .getWieldable(item.id)
                          .getWieldPos()));
            }
            slot++;
          }
          player.getActionSender().sendSound("click");
          player.getActionSender().sendInventory();
          player.getActionSender().sendEquipmentStats();

          slot = 0;
          for (InvItem item : affectedPlayer.getInventory()
              .getItems()) {
            if (item.wielded) {
              affectedPlayer.getInventory().setWield(slot, false);
              affectedPlayer.updateWornItems(
                  ItemAttributes.getWieldable(item.id)
                      .getWieldPos(),
                  affectedPlayer.getPlayerAppearance()
                      .getSprite(
                          ItemAttributes
                              .getWieldable(
                                  item.id)
                              .getWieldPos()));
            }
            slot++;
          }
          affectedPlayer.getActionSender().sendSound("click");
          affectedPlayer.getActionSender().sendInventory();
          affectedPlayer.getActionSender().sendEquipmentStats();

        }

        if (player.getDuelSetting(2)) {
          for (int x = 0; x < 14; x++) {
            if (player.isPrayerActivated(x)) {
              player.removePrayerDrain(x);
              player.setPrayer(x, false);
            }
            if (affectedPlayer.isPrayerActivated(x)) {
              affectedPlayer.removePrayerDrain(x);
              affectedPlayer.setPrayer(x, false);
            }
          }
          player.getActionSender().sendPrayers();
          affectedPlayer.getActionSender().sendPrayers();
        }

        player.setFollowing(affectedPlayer);
        WalkToMobEvent walking = new WalkToMobEvent(player,
            affectedPlayer, 1) {
          public void arrived() {
            Instance.getDelayedEventHandler().add(
                new SingleEvent(owner, 300) {
                  public void action() {
                    Player affectedPlayer = (Player) affectedMob;
                    owner.resetPath();
                    if (!owner.nextTo(affectedPlayer)) {
                      unsetOptions(owner);
                      unsetOptions(affectedPlayer);
                      return;
                    }
                    affectedPlayer.resetPath();

                    owner.resetAllExceptDueling();
                    affectedPlayer.resetAllExceptDueling();

                    owner.setLocation(
                        affectedPlayer.getLocation(),
                        true);
                    for (Player p : owner.getViewArea()
                        .getPlayersInView()) {
                      p.removeWatchedPlayer(owner);
                    }

                    owner.setSprite(9);
                    owner.setOpponent(affectedMob);
                    owner.setCombatTimer();

                    affectedPlayer.setSprite(8);
                    affectedPlayer.setOpponent(owner);
                    affectedPlayer.setCombatTimer();

                    Player attacker, opponent;
                    if (owner.getCombatLevel() > affectedPlayer
                        .getCombatLevel()) {
                      attacker = affectedPlayer;
                      opponent = owner;
                    } else if (affectedPlayer
                        .getCombatLevel() > owner
                        .getCombatLevel()) {
                      attacker = owner;
                      opponent = affectedPlayer;
                    } else if (DataConversions.random(0, 1) == 1) {
                      attacker = owner;
                      opponent = affectedPlayer;
                    } else {
                      attacker = affectedPlayer;
                      opponent = owner;
                    }
                    DuelEvent dueling = new DuelEvent(
                        attacker, opponent);
                    dueling.setLastRun(0);
                    Instance.getDelayedEventHandler().add(
                        dueling);
                  }
                });
          }

          public void failed() {
            Player affectedPlayer = (Player) affectedMob;
            owner.getActionSender().sendMessage(
                "Error walking to "
                    + affectedPlayer.getUsername()
                    + " (known bug)");
            affectedPlayer.getActionSender().sendMessage(
                "Error walking to " + owner.getUsername()
                    + " (known bug)");
            unsetOptions(owner);
            unsetOptions(affectedPlayer);
            owner.setBusy(false);
            affectedPlayer.setBusy(false);
          }
        };
        walking.setLastRun(GameEngine.getTime() + 500);
        Instance.getDelayedEventHandler().add(walking);
      }
      break;
    case 35: // Decline duel
      affectedPlayer = player.getWishToDuel();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isDueling() || !affectedPlayer.isDueling()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }
      affectedPlayer.getActionSender().sendMessage(
          player.getUsername() + " has declined the duel.");

      unsetOptions(player);
      unsetOptions(affectedPlayer);
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " declined duel "
          + affectedPlayer.getUsername()
          + " at: "
          + player.getX()
          + "/"
          + player.getY()
          + " | "
          + affectedPlayer.getX()
          + "/"
          + affectedPlayer.getY()));

      break;
    case 123: // Receive offered item data
      affectedPlayer = player.getWishToDuel();
      if (affectedPlayer == null
          || busy(affectedPlayer)
          || !player.isDueling()
          || !affectedPlayer.isDueling()
          || (player.isDuelOfferAccepted() && affectedPlayer
              .isDuelOfferAccepted())
          || player.isDuelConfirmAccepted()
          || affectedPlayer.isDuelConfirmAccepted()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }

      player.setDuelOfferAccepted(false);
      player.setDuelConfirmAccepted(false);
      affectedPlayer.setDuelOfferAccepted(false);
      affectedPlayer.setDuelConfirmAccepted(false);

      player.getActionSender().sendDuelAcceptUpdate();
      affectedPlayer.getActionSender().sendDuelAcceptUpdate();

      Inventory duelOffer = new Inventory(player);
      player.resetDuelOffer();
      int count = (int) p.readByte();
      for (int slot = 0; slot < count; slot++) {
        InvItem tItem = new InvItem(p.readShort(), p.readInt());
        if (tItem.amount < 1) {
          player.setSuspiciousPlayer(true);
          continue;
        }
        ItemDef def = tItem.getDef();
        if (!def.canTrade()) {
          player.getActionSender().sendMessage(
              def.getName()
                  + " cannot be traded with other players");
          player.setRequiresOfferUpdate(true);
          continue;
        }
        duelOffer.add(tItem.id, tItem.amount, false);
      }
      for (InvItem item : duelOffer.getItems()) {
        if (duelOffer.countId(item.id) > player.getInventory().countId(
            item.id)) {
          player.setSuspiciousPlayer(true);
          return;
        }
        player.addToDuelOffer(item);
      }
      player.setRequiresOfferUpdate(true);
      break;

    case 225: // Set duel options
      affectedPlayer = player.getWishToDuel();
      if (affectedPlayer == null
          || busy(affectedPlayer)
          || !player.isDueling()
          || !affectedPlayer.isDueling()
          || (player.isDuelOfferAccepted() && affectedPlayer
              .isDuelOfferAccepted())
          || player.isDuelConfirmAccepted()
          || affectedPlayer.isDuelConfirmAccepted()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }

      player.setDuelOfferAccepted(false);
      player.setDuelConfirmAccepted(false);
      affectedPlayer.setDuelOfferAccepted(false);
      affectedPlayer.setDuelConfirmAccepted(false);

      player.getActionSender().sendDuelAcceptUpdate();
      affectedPlayer.getActionSender().sendDuelAcceptUpdate();

      for (int i = 0; i < 4; i++) {
        boolean b = p.readByte() == 1;
        player.setDuelSetting(i, b);
        affectedPlayer.setDuelSetting(i, b);
      }

      player.getActionSender().sendDuelSettingUpdate();
      affectedPlayer.getActionSender().sendDuelSettingUpdate();
      break;
    }
  }
View Full Code Here

TOP

Related Classes of org.moparscape.msc.gs.model.Player

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.