Esempio n. 1
0
  /**
   * Is called when a player is killed<br>
   * <br>
   *
   * @param killerCharacter as L2Character<br>
   * @param killedPlayerInstance as L2PcInstance<br>
   */
  public static void onKill(L2Character killerCharacter, L2PcInstance killedPlayerInstance) {
    if ((killedPlayerInstance == null) || !isStarted()) {
      return;
    }

    final byte killedTeamId = getParticipantTeamId(killedPlayerInstance.getObjectId());

    if (killedTeamId == -1) {
      return;
    }

    new TvTEventTeleporter(
        killedPlayerInstance, _teams[killedTeamId].getCoordinates(), false, false);

    if (killerCharacter == null) {
      return;
    }

    L2PcInstance killerPlayerInstance = null;

    if ((killerCharacter instanceof L2PetInstance)
        || (killerCharacter instanceof L2ServitorInstance)) {
      killerPlayerInstance = ((L2Summon) killerCharacter).getOwner();

      if (killerPlayerInstance == null) {
        return;
      }
    } else if (killerCharacter instanceof L2PcInstance) {
      killerPlayerInstance = (L2PcInstance) killerCharacter;
    } else {
      return;
    }

    final byte killerTeamId = getParticipantTeamId(killerPlayerInstance.getObjectId());

    if ((killerTeamId != -1) && (killedTeamId != -1) && (killerTeamId != killedTeamId)) {
      final TvTEventTeam killerTeam = _teams[killerTeamId];

      killerTeam.increasePoints();

      final CreatureSay cs =
          new CreatureSay(
              killerPlayerInstance.getObjectId(),
              ChatType.WHISPER,
              killerPlayerInstance.getName(),
              "I have killed " + killedPlayerInstance.getName() + "!");

      for (L2PcInstance playerInstance : _teams[killerTeamId].getParticipatedPlayers().values()) {
        if (playerInstance != null) {
          playerInstance.sendPacket(cs);
        }
      }

      // Notify to scripts.
      EventDispatcher.getInstance()
          .notifyEventAsync(
              new OnTvTEventKill(killerPlayerInstance, killedPlayerInstance, killerTeam));
    }
  }