/**
   * Method activate.
   *
   * @param player Player
   * @param item ItemInstance
   */
  public void activate(Player player, ItemInstance item) {
    if ((player == null) || player.isInOlympiadMode()) {
      return;
    }

    CursedWeapon cw = _cursedWeaponsMap.get(item.getId());

    if (cw == null) {
      return;
    }

    if (player.isCursedWeaponEquipped()) {
      if (player.getCursedWeaponEquippedId() != item.getId()) {
        CursedWeapon cw2 = _cursedWeaponsMap.get(player.getCursedWeaponEquippedId());
        cw2.setNbKills(cw2.getStageKills() - 1);
        cw2.increaseKills();
      }

      endOfLife(cw);
      player.getInventory().destroyItem(item, 1);
    } else if (cw.getTimeLeft() > 0) {
      cw.activate(player, item);
      saveData(cw);
      announce(
          new SystemMessage(SystemMessage.THE_OWNER_OF_S2_HAS_APPEARED_IN_THE_S1_REGION)
              .addZoneName(player.getLoc())
              .addString(cw.getName()));
    } else {
      endOfLife(cw);
      player.getInventory().destroyItem(item, 1);
    }
  }
  /**
   * Method dropPlayer.
   *
   * @param player Player
   */
  public void dropPlayer(Player player) {
    CursedWeapon cw = _cursedWeaponsMap.get(player.getCursedWeaponEquippedId());

    if (cw == null) {
      return;
    }

    if (cw.dropIt(null, null, player)) {
      saveData(cw);
      announce(
          new SystemMessage(SystemMessage.S2_WAS_DROPPED_IN_THE_S1_REGION)
              .addZoneName(player.getLoc())
              .addItemName(cw.getItemId()));
    } else {
      endOfLife(cw);
    }
  }
  @Override
  public void onBypassFeedback(Player player, String command) {
    if (!canBypassCheck(player, this)) {
      return;
    }

    if (command.startsWith("teleport_harnak")) {
      if ((player.getLevel() >= 85) && player.isAwaking()) {
        player.teleToLocation(-114712, 147848, -7740);
      } else {
        showChatWindow(player, "default/33344-noreq.htm");
      }
    }

    if (command.startsWith("teleport_first_floor")) {
      player.teleToLocation(-114712, 147848, -7740);
    }

    if (command.startsWith("teleport_second_floor")) {
      player.teleToLocation(-114712, 149160, -10800);
    }

    if (command.startsWith("teleport_third_floor")) {
      player.teleToLocation(-114728, 183288, -13860);
    }

    if (command.startsWith("teleport_outside")) {
      player.teleToLocation(-116160, 236370, -3088);
    }

    if (command.startsWith("teleport_next")) {
      List<int[]> lst = Arrays.asList(cycleEndTeleports);

      if (lst.contains(getId())) {
        player.teleToLocation(teleCoords.get(Integer.valueOf(getId() - 7)));
      } else {
        player.teleToLocation(teleCoords.get(Integer.valueOf(getId() + 1)));
      }
    }

    if (command.startsWith("teleport_prev")) {
      List<int[]> lst = Arrays.asList(cycleStartTeleports);

      if (lst.contains(getId())) {
        player.teleToLocation(teleCoords.get(Integer.valueOf(getId() + 7)));
      } else {
        player.teleToLocation(teleCoords.get(Integer.valueOf(getId() - 1)));
      }
    }

    if (command.startsWith("key_altar")) {
      if (player.getInventory().getItemByItemId(SEALED_HARNAK_KEY) != null) {
        if (HarnakUndegroundManager.getInstance().addSecondStagePoint(getId(), player)) {
          showChatWindow(player, "default/altar-ok.htm");
          player.getInventory().removeItemByItemId(30429, 1);
          sayScreenMessage(player);

          if (getNpcState() == 0) {
            ThreadPoolManager.getInstance().schedule(new runNpcStateChangeSecond(), 1000L);
          }

          NpcInstance Noktum =
              NpcUtils.spawnSingle(
                  NOKTUM,
                  player.getLoc().getX() + 15,
                  player.getLoc().getY(),
                  player.getLoc().getZ(),
                  1800000L);
          Noktum.addListener(_deathListener);
        } else if (player.isInParty() && player.getParty().isLeader(player)) {
          sayScreenMessage(player);
          NpcInstance Noktum =
              NpcUtils.spawnSingle(
                  NOKTUM,
                  player.getLoc().getX() + 15,
                  player.getLoc().getY(),
                  player.getLoc().getZ(),
                  1800000L);
          Noktum.addListener(_deathListener);
        } else {
          showChatWindow(player, "default/altar-no.htm");
        }
      } else {
        showChatWindow(player, "default/" + getId() + "-1.htm");
      }
    }

    if (command.startsWith("key_prison")) {
      if (player.getInventory().getItemByItemId(HARNAK_KEY) != null) {
        if (HarnakUndegroundManager.getInstance().addThirdStagePoint(getId(), player)) {
          showChatWindow(player, "default/prison-ok.htm");
          player.getInventory().removeItemByItemId(30430, 1);
          sayScreenMessage(player);

          if (getNpcState() == 0) {
            ThreadPoolManager.getInstance().schedule(new runNpcStateChangeThird(), 1000L);
          }

          NpcInstance demonikNoktum =
              NpcUtils.spawnSingle(
                  DEMONIC_NOKTUM,
                  player.getLoc().getX() + 15,
                  player.getLoc().getY(),
                  player.getLoc().getZ(),
                  1800000L);
          demonikNoktum.addListener(_deathListener);
        } else if (player.isInParty() && player.getParty().isLeader(player)) {
          sayScreenMessage(player);
          NpcInstance demonikNoktum =
              NpcUtils.spawnSingle(
                  DEMONIC_NOKTUM,
                  player.getLoc().getX() + 15,
                  player.getLoc().getY(),
                  player.getLoc().getZ(),
                  1800000L);
          demonikNoktum.addListener(_deathListener);
        } else {
          showChatWindow(player, "default/prison-no.htm");
        }
      } else {
        showChatWindow(player, "default/" + getId() + "-1.htm");
      }
    } else {
      super.onBypassFeedback(player, command);
    }
  }