actual freya branch

This commit is contained in:
2026-09-12 15:39:57 +00:00
parent 9fa534b20e
commit 8049e0a882
18540 changed files with 1228200 additions and 0 deletions
@@ -0,0 +1,86 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import com.l2jserver.Config;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
* This class trades Gold Bars for Adena and vice versa.
*
* @author Ahmed
*/
public class Banking implements IVoicedCommandHandler
{
private static final String[] _voicedCommands =
{
"bank",
"withdraw",
"deposit"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (command.equalsIgnoreCase("bank"))
{
activeChar.sendMessage(".deposit (" + Config.BANKING_SYSTEM_ADENA + " Adena = " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar) / .withdraw (" + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar = " + Config.BANKING_SYSTEM_ADENA + " Adena)");
}
else if (command.equalsIgnoreCase("deposit"))
{
if (activeChar.getInventory().getInventoryItemCount(57, 0) >= Config.BANKING_SYSTEM_ADENA)
{
if (!activeChar.reduceAdena("Goldbar", Config.BANKING_SYSTEM_ADENA, activeChar, false))
return false;
activeChar.getInventory().addItem("Goldbar", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, null);
activeChar.getInventory().updateDatabase();
activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_GOLDBARS + " Goldbar(s), and " + Config.BANKING_SYSTEM_ADENA + " less adena.");
}
else
{
activeChar.sendMessage("You do not have enough Adena to convert to Goldbar(s), you need " + Config.BANKING_SYSTEM_ADENA + " Adena.");
}
}
else if (command.equalsIgnoreCase("withdraw"))
{
if (activeChar.getInventory().getInventoryItemCount(3470, 0) >= Config.BANKING_SYSTEM_GOLDBARS)
{
if (!activeChar.destroyItemByItemId("Adena", 3470, Config.BANKING_SYSTEM_GOLDBARS, activeChar, false))
return false;
activeChar.getInventory().addAdena("Adena", Config.BANKING_SYSTEM_ADENA, activeChar, null);
activeChar.getInventory().updateDatabase();
activeChar.sendMessage("Thank you, you now have " + Config.BANKING_SYSTEM_ADENA + " Adena, and " + Config.BANKING_SYSTEM_GOLDBARS + " less Goldbar(s).");
}
else
{
activeChar.sendMessage("You do not have any Goldbars to turn into " + Config.BANKING_SYSTEM_ADENA + " Adena.");
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
}
@@ -0,0 +1,164 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import java.util.StringTokenizer;
import com.l2jserver.gameserver.datatables.AdminCommandAccessRights;
import com.l2jserver.gameserver.datatables.CharNameTable;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
public class ChatAdmin implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"banchat",
"unbanchat"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel()))
return false;
if (command.equalsIgnoreCase(VOICED_COMMANDS[0])) // banchat
{
if (params == null)
{
activeChar.sendMessage("Usage: .banchat name [minutes]");
return true;
}
StringTokenizer st = new StringTokenizer(params);
if (st.hasMoreTokens())
{
String name = st.nextToken();
int length = 0;
if (st.hasMoreTokens())
{
try
{
length = Integer.parseInt(st.nextToken());
}
catch (NumberFormatException e)
{
activeChar.sendMessage("Wrong ban length !");
return false;
}
}
if (length < 0)
length = 0;
int objId = CharNameTable.getInstance().getIdByName(name);
if (objId > 0)
{
L2PcInstance player = L2World.getInstance().getPlayer(objId);
if (player == null || !player.isOnline())
{
activeChar.sendMessage("Player not online !");
return false;
}
if (player.getPunishLevel() != L2PcInstance.PunishLevel.NONE)
{
activeChar.sendMessage("Player is already punished !");
return false;
}
if (player == activeChar)
{
activeChar.sendMessage("You can't ban yourself !");
return false;
}
if (player.isGM())
{
activeChar.sendMessage("You can't ban GM !");
return false;
}
if (AdminCommandAccessRights.getInstance().hasAccess(command, player.getAccessLevel()))
{
activeChar.sendMessage("You can't ban moderator !");
return false;
}
player.setPunishLevel(L2PcInstance.PunishLevel.CHAT, length);
player.sendMessage("Chat banned by moderator " + activeChar.getName());
if (length > 0)
activeChar.sendMessage("Player " + player.getName() + " chat banned for " + length + " minutes.");
else
activeChar.sendMessage("Player " + player.getName() + " chat banned forever.");
}
else
{
activeChar.sendMessage("Player not found !");
return false;
}
}
}
else if (command.equalsIgnoreCase(VOICED_COMMANDS[1])) //unbanchat
{
if (params == null)
{
activeChar.sendMessage("Usage: .unbanchat name");
return true;
}
StringTokenizer st = new StringTokenizer(params);
if (st.hasMoreTokens())
{
String name = st.nextToken();
int objId = CharNameTable.getInstance().getIdByName(name);
if (objId > 0)
{
L2PcInstance player = L2World.getInstance().getPlayer(objId);
if (player == null || !player.isOnline())
{
activeChar.sendMessage("Player not online !");
return false;
}
if (player.getPunishLevel() != L2PcInstance.PunishLevel.CHAT)
{
activeChar.sendMessage("Player is not chat banned !");
return false;
}
player.setPunishLevel(L2PcInstance.PunishLevel.NONE, 0);
activeChar.sendMessage("Player " + player.getName() + " chat unbanned.");
player.sendMessage("Chat unbanned by moderator " + activeChar.getName());
}
else
{
activeChar.sendMessage("Player not found !");
return false;
}
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
@@ -0,0 +1,61 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import com.l2jserver.gameserver.datatables.AdminCommandAccessRights;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
public class Debug implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"debug"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (!AdminCommandAccessRights.getInstance().hasAccess(command, activeChar.getAccessLevel()))
return false;
if (VOICED_COMMANDS[0].equalsIgnoreCase(command))
{
if (activeChar.isDebug())
{
activeChar.setDebug(null);
activeChar.sendMessage("Debugging disabled");
}
else
{
activeChar.setDebug(activeChar);
activeChar.sendMessage("Debugging enabled");
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
@@ -0,0 +1,92 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import java.util.StringTokenizer;
import com.l2jserver.Config;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.util.StringUtil;
public class Lang implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"lang"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (!Config.L2JMOD_MULTILANG_ENABLE
|| !Config.L2JMOD_MULTILANG_VOICED_ALLOW)
return false;
NpcHtmlMessage msg = new NpcHtmlMessage(1);
if (params == null)
{
final StringBuilder html = StringUtil.startAppend(100);
for (String lang : Config.L2JMOD_MULTILANG_ALLOWED)
{
StringUtil.append(html,
"<button value=\"",
lang.toUpperCase(),
"\" action=\"bypass -h voice .lang ",
lang,
"\" width=60 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"><br>"
);
}
msg.setFile(activeChar.getHtmlPrefix(), "data/html/mods/Lang/LanguageSelect.htm");
msg.replace("%list%", html.toString());
activeChar.sendPacket(msg);
return true;
}
StringTokenizer st = new StringTokenizer(params);
if (st.hasMoreTokens())
{
final String lang = st.nextToken().trim();
if (activeChar.setLang(lang))
{
msg.setFile(activeChar.getHtmlPrefix(), "data/html/mods/Lang/Ok.htm");
activeChar.sendPacket(msg);
return true;
}
else
{
msg.setFile(activeChar.getHtmlPrefix(), "data/html/mods/Lang/Error.htm");
activeChar.sendPacket(msg);
}
}
return false;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
@@ -0,0 +1,84 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import com.l2jserver.Config;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.TvTEvent;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Tvt info.
*
* @author denser
*/
public class TvTVoicedInfo implements IVoicedCommandHandler
{
private static final String[] _voicedCommands = { "tvt" };
/**
* Set this to false and recompile script if you dont want to use string cache.
* This will decrease performance but will be more consistent against possible html editions during runtime
* Recompiling the script will get the new html would be enough too [DrHouse]
*/
private static final boolean USE_STATIC_HTML = true;
private static final String HTML = HtmCache.getInstance().getHtm(null, "data/html/mods/TvTEvent/Status.htm");
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
if (command.equalsIgnoreCase("tvt"))
{
if (TvTEvent.isStarting() || TvTEvent.isStarted())
{
String htmContent = (USE_STATIC_HTML && !HTML.isEmpty()) ? HTML :
HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/mods/TvTEvent/Status.htm");
try
{
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(5);
npcHtmlMessage.setHtml(htmContent);
// npcHtmlMessage.replace("%objectId%",
// String.valueOf(getObjectId()));
npcHtmlMessage.replace("%team1name%", Config.TVT_EVENT_TEAM_1_NAME);
npcHtmlMessage.replace("%team1playercount%", String.valueOf(TvTEvent.getTeamsPlayerCounts()[0]));
npcHtmlMessage.replace("%team1points%", String.valueOf(TvTEvent.getTeamsPoints()[0]));
npcHtmlMessage.replace("%team2name%", Config.TVT_EVENT_TEAM_2_NAME);
npcHtmlMessage.replace("%team2playercount%", String.valueOf(TvTEvent.getTeamsPlayerCounts()[1]));
npcHtmlMessage.replace("%team2points%", String.valueOf(TvTEvent.getTeamsPoints()[1]));
activeChar.sendPacket(npcHtmlMessage);
}
catch (Exception e)
{
_log.warning("wrong TvT voiced: " + e);
}
}
else
{
activeChar.sendPacket(ActionFailed.STATIC_PACKET);
}
}
return true;
}
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
}
@@ -0,0 +1,479 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.GameTimeController;
import com.l2jserver.gameserver.SevenSigns;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.datatables.SkillTable;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.instancemanager.CoupleManager;
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
import com.l2jserver.gameserver.instancemanager.SiegeManager;
import com.l2jserver.gameserver.model.L2Skill;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.TvTEvent;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
import com.l2jserver.gameserver.network.serverpackets.ConfirmDlg;
import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jserver.gameserver.network.serverpackets.SetupGauge;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.skills.AbnormalEffect;
import com.l2jserver.gameserver.util.Broadcast;
/**
* @author evill33t
*/
public class Wedding implements IVoicedCommandHandler
{
static final Logger _log = Logger.getLogger(Wedding.class.getName());
private static final String[] _voicedCommands =
{
"divorce",
"engage",
"gotolove"
};
/**
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (activeChar == null)
return false;
if (command.startsWith("engage"))
return engage(activeChar);
else if (command.startsWith("divorce"))
return divorce(activeChar);
else if (command.startsWith("gotolove"))
return goToLove(activeChar);
return false;
}
public boolean divorce(L2PcInstance activeChar)
{
if (activeChar.getPartnerId() == 0)
return false;
int _partnerId = activeChar.getPartnerId();
int _coupleId = activeChar.getCoupleId();
long AdenaAmount = 0;
if (activeChar.isMarried())
{
activeChar.sendMessage("You are now divorced.");
AdenaAmount = (activeChar.getAdena() / 100) * Config.L2JMOD_WEDDING_DIVORCE_COSTS;
activeChar.getInventory().reduceAdena("Wedding", AdenaAmount, activeChar, null);
}
else
activeChar.sendMessage("You have broken up as a couple.");
final L2PcInstance partner = L2World.getInstance().getPlayer(_partnerId);
if (partner != null)
{
partner.setPartnerId(0);
if (partner.isMarried())
partner.sendMessage("Your spouse has decided to divorce you.");
else
partner.sendMessage("Your fiance has decided to break the engagement with you.");
// give adena
if (AdenaAmount > 0)
partner.addAdena("WEDDING", AdenaAmount, null, false);
}
CoupleManager.getInstance().deleteCouple(_coupleId);
return true;
}
public boolean engage(L2PcInstance activeChar)
{
if (activeChar.getTarget() == null)
{
activeChar.sendMessage("You have no one targeted.");
return false;
}
else if (!(activeChar.getTarget() instanceof L2PcInstance))
{
activeChar.sendMessage("You can only ask another player to engage you.");
return false;
}
else if (activeChar.getPartnerId() != 0)
{
activeChar.sendMessage("You are already engaged.");
if (Config.L2JMOD_WEDDING_PUNISH_INFIDELITY)
{
activeChar.startAbnormalEffect(AbnormalEffect.BIG_HEAD); // give player a Big Head
// lets recycle the sevensigns debuffs
int skillId;
int skillLevel = 1;
if (activeChar.getLevel() > 40)
skillLevel = 2;
if (activeChar.isMageClass())
skillId = 4362;
else
skillId = 4361;
final L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
if (activeChar.getFirstEffect(skill) == null)
{
skill.getEffects(activeChar, activeChar);
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
sm.addSkillName(skill);
activeChar.sendPacket(sm);
}
}
return false;
}
final L2PcInstance ptarget = (L2PcInstance) activeChar.getTarget();
// check if player target himself
if (ptarget.getObjectId() == activeChar.getObjectId())
{
activeChar.sendMessage("Is there something wrong with you, are you trying to go out with youself?");
return false;
}
else if (ptarget.isMarried())
{
activeChar.sendMessage("Player already married.");
return false;
}
else if (ptarget.isEngageRequest())
{
activeChar.sendMessage("Player already asked by someone else.");
return false;
}
else if (ptarget.getPartnerId() != 0)
{
activeChar.sendMessage("Player already engaged with someone else.");
return false;
}
else if (ptarget.getAppearance().getSex() == activeChar.getAppearance().getSex() && !Config.L2JMOD_WEDDING_SAMESEX)
{
activeChar.sendMessage("Gay marriage is not allowed on this server!");
return false;
}
// check if target has player on friendlist
boolean FoundOnFriendList = false;
int objectId;
java.sql.Connection con = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement;
statement = con.prepareStatement("SELECT friendId FROM character_friends WHERE charId=?");
statement.setInt(1, ptarget.getObjectId());
ResultSet rset = statement.executeQuery();
while (rset.next())
{
objectId = rset.getInt("friendId");
if (objectId == activeChar.getObjectId())
FoundOnFriendList = true;
}
statement.close();
}
catch (Exception e)
{
_log.warning("could not read friend data:" + e);
}
finally
{
L2DatabaseFactory.close(con);
}
if (!FoundOnFriendList)
{
activeChar.sendMessage("The player you want to ask is not on your friends list, you must first be on each others friends list before you choose to engage.");
return false;
}
ptarget.setEngageRequest(true, activeChar.getObjectId());
// $s1
ConfirmDlg dlg = new ConfirmDlg(SystemMessageId.S1.getId()).addString(activeChar.getName() + " is asking to engage you. Do you want to start a new relationship?");
ptarget.sendPacket(dlg);
return true;
}
public boolean goToLove(L2PcInstance activeChar)
{
if (!activeChar.isMarried())
{
activeChar.sendMessage("You're not married.");
return false;
}
else if (activeChar.getPartnerId() == 0)
{
activeChar.sendMessage("Couldn't find your fiance in the Database - Inform a Gamemaster.");
_log.severe("Married but couldn't find parter for " + activeChar.getName());
return false;
}
else if (GrandBossManager.getInstance().getZone(activeChar) != null)
{
activeChar.sendMessage("You are inside a Boss Zone.");
return false;
}
else if (activeChar.isCombatFlagEquipped())
{
activeChar.sendMessage("While you are holding a Combat Flag or Territory Ward you can't go to your love!");
return false;
}
else if (activeChar.isCursedWeaponEquipped())
{
activeChar.sendMessage("While you are holding a Cursed Weapon you can't go to your love!");
return false;
}
else if (GrandBossManager.getInstance().getZone(activeChar) != null)
{
activeChar.sendMessage("You are inside a Boss Zone.");
return false;
}
else if (activeChar.isInJail())
{
activeChar.sendMessage("You are in Jail!");
return false;
}
else if (activeChar.isInOlympiadMode())
{
activeChar.sendMessage("You are in the Olympiad now.");
return false;
}
else if (activeChar.atEvent)
{
activeChar.sendMessage("You are in an event.");
return false;
}
else if (activeChar.isInDuel())
{
activeChar.sendMessage("You are in a duel!");
return false;
}
else if (activeChar.inObserverMode())
{
activeChar.sendMessage("You are in the observation.");
return false;
}
else if (SiegeManager.getInstance().getSiege(activeChar) != null && SiegeManager.getInstance().getSiege(activeChar).getIsInProgress())
{
activeChar.sendMessage("You are in a siege, you cannot go to your partner.");
return false;
}
else if (activeChar.isFestivalParticipant())
{
activeChar.sendMessage("You are in a festival.");
return false;
}
else if (activeChar.isInParty() && activeChar.getParty().isInDimensionalRift())
{
activeChar.sendMessage("You are in the dimensional rift.");
return false;
}
// Thanks nbd
else if (!TvTEvent.onEscapeUse(activeChar.getObjectId()))
{
activeChar.sendPacket(ActionFailed.STATIC_PACKET);
return false;
}
else if (activeChar.isInsideZone(L2Character.ZONE_NOSUMMONFRIEND))
{
activeChar.sendMessage("You are in area which blocks summoning.");
return false;
}
final L2PcInstance partner = L2World.getInstance().getPlayer(activeChar.getPartnerId());
if ((partner == null) || !partner.isOnline())
{
activeChar.sendMessage("Your partner is not online.");
return false;
}
else if (activeChar.getInstanceId() != partner.getInstanceId())
{
activeChar.sendMessage("Your partner is in another World!");
return false;
}
else if (partner.isInJail())
{
activeChar.sendMessage("Your partner is in Jail.");
return false;
}
else if (partner.isCursedWeaponEquipped())
{
activeChar.sendMessage("Your partner is holding a Cursed Weapon and you can't go to your love!");
return false;
}
else if (GrandBossManager.getInstance().getZone(partner) != null)
{
activeChar.sendMessage("Your partner is inside a Boss Zone.");
return false;
}
else if (partner.isInOlympiadMode())
{
activeChar.sendMessage("Your partner is in the Olympiad now.");
return false;
}
else if (partner.atEvent)
{
activeChar.sendMessage("Your partner is in an event.");
return false;
}
else if (partner.isInDuel())
{
activeChar.sendMessage("Your partner is in a duel.");
return false;
}
else if (partner.isFestivalParticipant())
{
activeChar.sendMessage("Your partner is in a festival.");
return false;
}
else if (partner.isInParty() && partner.getParty().isInDimensionalRift())
{
activeChar.sendMessage("Your partner is in dimensional rift.");
return false;
}
else if (partner.inObserverMode())
{
activeChar.sendMessage("Your partner is in the observation.");
return false;
}
else if (SiegeManager.getInstance().getSiege(partner) != null && SiegeManager.getInstance().getSiege(partner).getIsInProgress())
{
activeChar.sendMessage("Your partner is in a siege, you cannot go to your partner.");
return false;
}
else if (partner.isIn7sDungeon() && !activeChar.isIn7sDungeon())
{
final int playerCabal = SevenSigns.getInstance().getPlayerCabal(activeChar.getObjectId());
final boolean isSealValidationPeriod = SevenSigns.getInstance().isSealValidationPeriod();
final int compWinner = SevenSigns.getInstance().getCabalHighestScore();
if (isSealValidationPeriod)
{
if (playerCabal != compWinner)
{
activeChar.sendMessage("Your Partner is in a Seven Signs Dungeon and you are not in the winner Cabal!");
return false;
}
}
else
{
if (playerCabal == SevenSigns.CABAL_NULL)
{
activeChar.sendMessage("Your Partner is in a Seven Signs Dungeon and you are not registered!");
return false;
}
}
}
else if (!TvTEvent.onEscapeUse(partner.getObjectId()))
{
activeChar.sendMessage("Your partner is in an event.");
return false;
}
else if (partner.isInsideZone(L2Character.ZONE_NOSUMMONFRIEND))
{
activeChar.sendMessage("Your partner is in area which blocks summoning.");
return false;
}
final int teleportTimer = Config.L2JMOD_WEDDING_TELEPORT_DURATION * 1000;
activeChar.sendMessage("After " + teleportTimer / 60000 + " min. you will be teleported to your partner.");
activeChar.getInventory().reduceAdena("Wedding", Config.L2JMOD_WEDDING_TELEPORT_PRICE, activeChar, null);
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
//SoE Animation section
activeChar.setTarget(activeChar);
activeChar.disableAllSkills();
final MagicSkillUse msk = new MagicSkillUse(activeChar, 1050, 1, teleportTimer, 0);
Broadcast.toSelfAndKnownPlayersInRadius(activeChar, msk, 810000/*900*/);
final SetupGauge sg = new SetupGauge(0, teleportTimer);
activeChar.sendPacket(sg);
//End SoE Animation section
final EscapeFinalizer ef = new EscapeFinalizer(activeChar, partner.getX(), partner.getY(), partner.getZ(), partner.isIn7sDungeon());
// continue execution later
activeChar.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(ef, teleportTimer));
activeChar.forceIsCasting(GameTimeController.getGameTicks() + teleportTimer / GameTimeController.MILLIS_IN_TICK);
return true;
}
static class EscapeFinalizer implements Runnable
{
private final L2PcInstance _activeChar;
private final int _partnerx;
private final int _partnery;
private final int _partnerz;
private final boolean _to7sDungeon;
EscapeFinalizer(L2PcInstance activeChar, int x, int y, int z, boolean to7sDungeon)
{
_activeChar = activeChar;
_partnerx = x;
_partnery = y;
_partnerz = z;
_to7sDungeon = to7sDungeon;
}
public void run()
{
if (_activeChar.isDead())
return;
if(SiegeManager.getInstance().getSiege(_partnerx, _partnery, _partnerz) != null && SiegeManager.getInstance().getSiege(_partnerx, _partnery, _partnerz).getIsInProgress())
{
_activeChar.sendMessage("Your partner is in siege, you can't go to your partner.");
return;
}
_activeChar.setIsIn7sDungeon(_to7sDungeon);
_activeChar.enableAllSkills();
_activeChar.setIsCastingNow(false);
try
{
_activeChar.teleToLocation(_partnerx, _partnery, _partnerz);
}
catch (Exception e)
{
_log.log(Level.SEVERE, "", e);
}
}
}
/**
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
}
@@ -0,0 +1,84 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.instancemanager.CastleManager;
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Castle;
/**
*
*
*/
public class castle implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"open doors",
"close doors",
"ride wyvern"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (command.startsWith("open doors") && params.equals("castle") && (activeChar.isClanLeader()))
{
L2DoorInstance door = (L2DoorInstance) activeChar.getTarget();
Castle castle = CastleManager.getInstance().getCastleById(activeChar.getClan().getHasCastle());
if (door == null || castle == null)
return false;
if (castle.checkIfInZone(door.getX(), door.getY(), door.getZ()))
{
door.openMe();
}
}
else if (command.startsWith("close doors") && params.equals("castle") && (activeChar.isClanLeader()))
{
L2DoorInstance door = (L2DoorInstance) activeChar.getTarget();
Castle castle = CastleManager.getInstance().getCastleById(activeChar.getClan().getHasCastle());
if (door == null || castle == null)
return false;
if (castle.checkIfInZone(door.getX(), door.getY(), door.getZ()))
{
door.closeMe();
}
}
else if (command.startsWith("ride wyvern") && params.equals("castle"))
{
if (activeChar.getClan().getHasCastle() > 0 && activeChar.isClanLeader())
{
activeChar.mount(12621, 0, true);
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
@@ -0,0 +1,66 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
/**
*
*
*/
public class set implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"set name",
"set home",
"set group"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (command.startsWith("set privileges"))
{
int n = Integer.parseInt(command.substring(15));
L2PcInstance pc = (L2PcInstance) activeChar.getTarget();
if (pc != null)
{
if (activeChar.getClan().getClanId() == pc.getClan().getClanId() && (activeChar.getClanPrivileges() > n) || activeChar.isClanLeader())
{
pc.setClanPrivileges(n);
activeChar.sendMessage("Your clan privileges have been set to " + n + " by " + activeChar.getName());
}
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
@@ -0,0 +1,90 @@
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package handlers.voicedcommandhandlers;
import java.util.Iterator;
import com.l2jserver.gameserver.handler.IVoicedCommandHandler;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.util.StringUtil;
/**
*
*
*/
public class stats implements IVoicedCommandHandler
{
private static final String[] VOICED_COMMANDS =
{
"stats"
};
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#useVoicedCommand(java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance, java.lang.String)
*/
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params)
{
if (command.equalsIgnoreCase("stats"))
{
L2PcInstance pc = L2World.getInstance().getPlayer(params);
if (pc != null)
{
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
final StringBuilder replyMSG = StringUtil.startAppend(
300 + pc.kills.size() * 50,
"<html><body>" +
"<center><font color=\"LEVEL\">[ L2J EVENT ENGINE ]</font></center><br>" +
"<br>Statistics for player <font color=\"LEVEL\">",
pc.getName(),
"</font><br>" +
"Total kills <font color=\"FF0000\">",
String.valueOf(pc.kills.size()),
"</font><br>" +
"<br>Detailed list: <br>"
);
Iterator<String> it = pc.kills.iterator();
while (it.hasNext()) {
StringUtil.append(replyMSG,
"<font color=\"FF0000\">",
it.next(),
"</font><br>");
}
replyMSG.append("</body></html>");
adminReply.setHtml(replyMSG.toString());
activeChar.sendPacket(adminReply);
}
}
return true;
}
/**
*
* @see com.l2jserver.gameserver.handler.IVoicedCommandHandler#getVoicedCommandList()
*/
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}