/**
* Called when a player logs in<br><br>
*
* @param playerInstance<br>
*/
public static void onLogin(L2PcInstance playerInstance)
{
if (playerInstance == null || (!isStarting() && !isStarted()))
return;
byte teamId = getParticipantTeamId(playerInstance.getName());
if (teamId == -1)
return;
_teams[teamId].addPlayer(playerInstance);
new TvTEventTeleporter(playerInstance, _teams[teamId].getCoordinates(), true, false);
}
/**
* Called when a player logs out<br><br>
*
* @param playerInstance<br>
*/
public static void onLogout(L2PcInstance playerInstance)
{
if (playerInstance == null || (!isStarting() && !isStarted()))
return;
removeParticipant(playerInstance.getName());
}
/**
* Called on every bypass by npc of type L2TvTEventNpc<br>
* Needs synchronization cause of the max player check<br><br>
*
* @param command<br>
* @param playerInstance<br>
*/
public static synchronized void onBypass(String command, L2PcInstance playerInstance)
{
if (playerInstance == null || !isParticipating())
return;
if (command.equals("tvt_event_participation"))
{
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0);
int playerLevel = playerInstance.getLevel();
if (playerInstance.isCursedWeaponEquiped())
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Cursed weapon owners are not allowed to participate.</body></html>");
else if (playerInstance.getKarma() > 0)
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Chaotic players are not allowed to participate.</body></html>");
else if (_teams[0].getParticipatedPlayerCount() >= Config.TVT_EVENT_MAX_PLAYERS_IN_TEAMS && _teams[1].getParticipatedPlayerCount() >= Config.TVT_EVENT_MAX_PLAYERS_IN_TEAMS)
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Sorry the event is full!</body></html>");
else if (playerLevel < Config.TVT_EVENT_MIN_LVL || playerLevel > Config.TVT_EVENT_MAX_LVL)
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>Only players from level " + Config.TVT_EVENT_MIN_LVL + " to level " + Config.TVT_EVENT_MAX_LVL + " are allowed tro participate.</body></html>");
else if (_teams[0].getParticipatedPlayerCount() > 19 && _teams[1].getParticipatedPlayerCount() > 19)
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>The event is full! Maximum of " + Config.TVT_EVENT_MAX_PLAYERS_IN_TEAMS + " player are allowed in one team.</body></html>");
else if (addParticipant(playerInstance))
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>You are on the registration list now.</body></html>");
else // addParticipant returned false cause playerInstance == null
return;
playerInstance.sendPacket(npcHtmlMessage);
}
else if (command.equals("tvt_event_remove_participation"))
{
removeParticipant(playerInstance.getName());
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0);
npcHtmlMessage.setHtml("<html><head><title>TvT Event</title></head><body>You are not longer on the registration list.</body></html>");
playerInstance.sendPacket(npcHtmlMessage);
}
}
/**
* Called on every onAction in L2PcIstance<br><br>
*
* @param playerName<br>
* @param targetPlayerName<br>
* @return boolean<br>
*/
public static boolean onAction(String playerName, String targetPlayerName)
{
if (!isStarted())
return true;
L2PcInstance playerInstance = L2World.getInstance().getPlayer(playerName);
if (playerInstance == null)
return false;
if (playerInstance.isGM())
return true;
byte playerTeamId = getParticipantTeamId(playerName);
byte targetPlayerTeamId = getParticipantTeamId(targetPlayerName);
if ((playerTeamId != -1 && targetPlayerTeamId == -1) ||
(playerTeamId == -1 && targetPlayerTeamId != -1))
return false;
if (playerTeamId != -1 && targetPlayerTeamId != -1 && playerTeamId == targetPlayerTeamId && !Config.TVT_EVENT_TARGET_TEAM_MEMBERS_ALLOWED)
return false;
return true;
}