EnterWorld.java
package com.l2jfrozen.gameserver.network.clientpackets;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jfrozen.gameserver.controllers.GameTimeController;
import com.l2jfrozen.gameserver.datatables.CharSchemesTable;
import com.l2jfrozen.gameserver.datatables.GmListTable;
import com.l2jfrozen.gameserver.datatables.SkillTable;
import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable.TeleportWhereType;
import com.l2jfrozen.gameserver.datatables.sql.AdminCommandAccessRights;
import com.l2jfrozen.gameserver.handler.custom.CustomWorldHandler;
import com.l2jfrozen.gameserver.managers.CastleManager;
import com.l2jfrozen.gameserver.managers.ClanHallManager;
import com.l2jfrozen.gameserver.managers.CoupleManager;
import com.l2jfrozen.gameserver.managers.CrownManager;
import com.l2jfrozen.gameserver.managers.DimensionalRiftManager;
import com.l2jfrozen.gameserver.managers.FortSiegeManager;
import com.l2jfrozen.gameserver.managers.PetitionManager;
import com.l2jfrozen.gameserver.managers.SiegeManager;
import com.l2jfrozen.gameserver.model.L2Augmentation;
import com.l2jfrozen.gameserver.model.L2Clan;
import com.l2jfrozen.gameserver.model.L2ClanMember;
import com.l2jfrozen.gameserver.model.L2Effect;
import com.l2jfrozen.gameserver.model.L2Effect.EffectType;
import com.l2jfrozen.gameserver.model.L2Skill;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.MacroList;
import com.l2jfrozen.gameserver.model.PcInventory;
import com.l2jfrozen.gameserver.model.actor.appearance.PcAppearance;
import com.l2jfrozen.gameserver.model.actor.instance.L2ClassMasterInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.base.ClassLevel;
import com.l2jfrozen.gameserver.model.base.PlayerClass;
import com.l2jfrozen.gameserver.model.base.Race;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.model.entity.ClanHall;
import com.l2jfrozen.gameserver.model.entity.Hero;
import com.l2jfrozen.gameserver.model.entity.Wedding;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.model.entity.event.L2Event;
import com.l2jfrozen.gameserver.model.entity.event.TvT;
import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSigns;
import com.l2jfrozen.gameserver.model.entity.siege.Castle;
import com.l2jfrozen.gameserver.model.entity.siege.FortSiege;
import com.l2jfrozen.gameserver.model.entity.siege.Siege;
import com.l2jfrozen.gameserver.model.quest.Quest;
import com.l2jfrozen.gameserver.model.quest.QuestState;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.ClientSetTime;
import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
import com.l2jfrozen.gameserver.network.serverpackets.Die;
import com.l2jfrozen.gameserver.network.serverpackets.Earthquake;
import com.l2jfrozen.gameserver.network.serverpackets.EtcStatusUpdate;
import com.l2jfrozen.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jfrozen.gameserver.network.serverpackets.ExStorageMaxCount;
import com.l2jfrozen.gameserver.network.serverpackets.FriendList;
import com.l2jfrozen.gameserver.network.serverpackets.HennaInfo;
import com.l2jfrozen.gameserver.network.serverpackets.ItemList;
import com.l2jfrozen.gameserver.network.serverpackets.MagicSkillUser;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.PledgeShowMemberListAll;
import com.l2jfrozen.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
import com.l2jfrozen.gameserver.network.serverpackets.PledgeSkillList;
import com.l2jfrozen.gameserver.network.serverpackets.PledgeStatusChanged;
import com.l2jfrozen.gameserver.network.serverpackets.QuestList;
import com.l2jfrozen.gameserver.network.serverpackets.ShortCutInit;
import com.l2jfrozen.gameserver.network.serverpackets.SignsSky;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.network.serverpackets.UserInfo;
import com.l2jfrozen.gameserver.powerpak.PowerPakConfig;
import com.l2jfrozen.gameserver.thread.TaskPriority;
import com.l2jfrozen.gameserver.util.Util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javolution.util.FastList;
public class EnterWorld extends L2GameClientPacket
{
private static Logger _log = Logger.getLogger(EnterWorld.class.getName());
private final SimpleDateFormat fmt;
private long _daysleft;
SimpleDateFormat df;
public EnterWorld()
{
this.fmt = new SimpleDateFormat("H:mm.");
this.df = new SimpleDateFormat("dd MM yyyy");
}
public TaskPriority getPriority() {
return TaskPriority.PR_URGENT;
}
protected void readImpl()
{
}
protected void runImpl()
{
L2PcInstance activeChar = ((L2GameClient)getClient()).getActiveChar();
if (activeChar == null)
{
_log.warning("EnterWorld failed! activeChar is null...");
((L2GameClient)getClient()).closeNow();
return;
}
activeChar.setLocked(true);
if ((L2World.getInstance().findObject(activeChar.getObjectId()) != null) &&
(Config.DEBUG))
{
_log.warning("DEBUG " + getType() + ": User already exist in OID map! User " + activeChar.getName() + " is character clone");
}
if ((!(activeChar.isGM())) && (!(activeChar.isDonator())) && (Config.CHECK_NAME_ON_LOGIN) && ((
(activeChar.getName().length() < 3) || (activeChar.getName().length() > 16) || (!(Util.isAlphaNumeric(activeChar.getName()))) || (!(isValidName(activeChar.getName()))))))
{
_log.warning("Charname: " + activeChar.getName() + " is invalid. EnterWorld failed.");
((L2GameClient)getClient()).closeNow();
return;
}
activeChar.setOnlineStatus(true);
activeChar.setRunning();
activeChar.standUp();
activeChar.broadcastKarma();
if (Config.L2JMOD_ALLOW_WEDDING)
{
engage(activeChar);
notifyPartner(activeChar, activeChar.getPartnerId());
}
EnterGM(activeChar);
Quest.playerEnter(activeChar);
activeChar.sendPacket(new QuestList());
if (Config.PLAYER_SPAWN_PROTECTION > 0)
activeChar.setProtection(true);
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
if (SevenSigns.getInstance().isSealValidationPeriod()) {
sendPacket(new SignsSky());
}
if (Config.STORE_SKILL_COOLTIME)
{
activeChar.restoreEffects();
}
activeChar.sendPacket(new EtcStatusUpdate(activeChar));
L2Effect[] effects = activeChar.getAllEffects();
if (effects != null)
{
L2Effect[] arr$ = effects; len$ = arr$.length; for (i$ = 0; i$ < len$; ++i$) { L2Effect e = arr$[i$];
if (e.getEffectType() == L2Effect.EffectType.HEAL_OVER_TIME)
{
activeChar.stopEffects(L2Effect.EffectType.HEAL_OVER_TIME);
activeChar.removeEffect(e);
}
if (e.getEffectType() == L2Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME)
{
activeChar.stopEffects(L2Effect.EffectType.COMBAT_POINT_HEAL_OVER_TIME);
activeChar.removeEffect(e);
}
}
}
L2ItemInstance[] arr$ = activeChar.getInventory().getAugmentedItems(); int len$ = arr$.length; for (int i$ = 0; i$ < len$; ++i$) { L2ItemInstance temp = arr$[i$];
if ((temp != null) && (temp.isEquipped()))
temp.getAugmentation().applyBoni(activeChar);
}
if ((L2Event.active) && (L2Event.connectionLossData.containsKey(activeChar.getName())) && (L2Event.isOnEvent(activeChar)))
L2Event.restoreChar(activeChar);
else if (L2Event.connectionLossData.containsKey(activeChar.getName())) {
L2Event.restoreAndTeleChar(activeChar);
}
if (Config.MAX_ITEM_ENCHANT_KICK > 0)
{
arr$ = activeChar.getInventory().getItems(); len$ = arr$.length; for (i$ = 0; i$ < len$; ++i$) { L2ItemInstance i = arr$[i$];
if ((!(activeChar.isGM())) &&
(i.isEquipable()) &&
(i.getEnchantLevel() > Config.MAX_ITEM_ENCHANT_KICK))
{
activeChar.getInventory().destroyItem(null, i, activeChar, null);
activeChar.sendMessage("[server]: You have over enchanted items you will be kicked from server!");
activeChar.sendMessage("[server]: Respect our server rules.");
sendPacket(new ExShowScreenMessage(" You have an over enchanted item, you will be kicked from server! ", 6000));
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " has Overenchanted item! Kicked! ", Config.DEFAULT_PUNISH);
_log.info("#### ATTENTION ####");
_log.info(i + " item has been removed from " + activeChar);
}
}
}
activeChar.restoreCustomStatus();
ColorSystem(activeChar);
ExStorageMaxCount esmc = new ExStorageMaxCount(activeChar);
activeChar.sendPacket(esmc);
activeChar.getMacroses().sendUpdate();
sendPacket(new ClientSetTime());
sendPacket(new UserInfo(activeChar));
sendPacket(new HennaInfo(activeChar));
sendPacket(new FriendList(activeChar));
sendPacket(new ItemList(activeChar, false));
sendPacket(new ShortCutInit(activeChar));
activeChar.sendSkillList();
activeChar.getInventory().reloadEquippedItems();
sendPacket(new SystemMessage(SystemMessageId.WELCOME_TO_LINEAGE));
activeChar.sendMessage("This server uses Impulse-PvP.Ru, a project by acm icq");
SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
Announcements.getInstance().showAnnouncements(activeChar);
loadTutorial(activeChar);
CrownManager.getInstance().checkCrowns(activeChar);
if ((Config.CHECK_SKILLS_ON_ENTER) && (!(Config.ALT_GAME_SKILL_LEARN)) &&
(!(activeChar.isAio())))
activeChar.checkAllowedSkills();
PetitionManager.getInstance().checkPetitionMessages(activeChar);
if ((activeChar.getClanId() != 0) && (activeChar.getClan() != null))
{
sendPacket(new PledgeShowMemberListAll(activeChar.getClan(), activeChar));
sendPacket(new PledgeStatusChanged(activeChar.getClan()));
}
if (activeChar.isAlikeDead())
sendPacket(new Die(activeChar));
if (Config.ALLOW_WATER)
activeChar.checkWaterState();
if ((Hero.getInstance().getHeroes() != null) && (Hero.getInstance().getHeroes().containsKey(Integer.valueOf(activeChar.getObjectId()))))
activeChar.setHero(true);
setPledgeClass(activeChar);
for (Iterator i$ = activeChar.getFriendList().iterator(); i$.hasNext(); ) { String name = (String)i$.next();
L2PcInstance friend = L2World.getInstance().getPlayer(name);
if (friend != null)
friend.sendPacket(new SystemMessage(SystemMessageId.FRIEND_S1_HAS_LOGGED_IN).addString(activeChar.getName()));
}
notifyClanMembers(activeChar);
notifySponsorOrApprentice(activeChar);
activeChar.setTarget(activeChar);
activeChar.onPlayerEnter();
if (Config.PCB_ENABLE)
activeChar.showPcBangWindow();
if (Config.ANNOUNCE_CASTLE_LORDS)
notifyCastleOwner(activeChar);
if (Olympiad.getInstance().playerInStadia(activeChar))
{
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
activeChar.sendMessage("You have been teleported to the nearest town due to you being in an Olympiad Stadium");
}
if (DimensionalRiftManager.getInstance().checkIfInRiftZone(activeChar.getX(), activeChar.getY(), activeChar.getZ(), false))
DimensionalRiftManager.getInstance().teleportToWaitingRoom(activeChar);
if (activeChar.getClanJoinExpiryTime() > System.currentTimeMillis())
activeChar.sendPacket(new SystemMessage(SystemMessageId.CLAN_MEMBERSHIP_TERMINATED));
if (activeChar.getClan() != null)
{
activeChar.sendPacket(new PledgeSkillList(activeChar.getClan()));
i$ = SiegeManager.getInstance().getSieges().iterator();
while (true) { Siege siege;
while (true) { if (!(i$.hasNext())) break label1311; siege = (Siege)i$.next();
if (siege.getIsInProgress())
break;
}
if (siege.checkIsAttacker(activeChar.getClan()))
{
activeChar.setSiegeState(1);
break;
}
if (siege.checkIsDefender(activeChar.getClan()))
{
activeChar.setSiegeState(2);
break;
}
}
label1311: i$ = FortSiegeManager.getInstance().getSieges().iterator();
while (true) { FortSiege fortsiege;
while (true) { if (!(i$.hasNext())) break label1400; fortsiege = (FortSiege)i$.next();
if (fortsiege.getIsInProgress())
break;
}
if (fortsiege.checkIsAttacker(activeChar.getClan()))
{
activeChar.setSiegeState(1);
break;
}
if (fortsiege.checkIsDefender(activeChar.getClan()))
{
activeChar.setSiegeState(2);
break;
}
}
label1400: ClanHall clanHall = ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan());
if ((clanHall != null) &&
(!(clanHall.getPaid())))
activeChar.sendPacket(new SystemMessage(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW));
}
if ((!(activeChar.isGM())) && (activeChar.getSiegeState() < 2) && (activeChar.isInsideZone(4)))
{
activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town);
activeChar.sendMessage("You have been teleported to the nearest town due to you being in siege zone");
}
RegionBBSManager.getInstance().changeCommunityBoard();
CustomWorldHandler.getInstance().enterWorld(activeChar);
if (TvT._savePlayers.contains(activeChar.getName()))
TvT.addDisconnectedPlayer(activeChar);
if (CTF._savePlayers.contains(activeChar.getName()))
CTF.addDisconnectedPlayer(activeChar);
if (DM._savePlayers.contains(activeChar.getName())) {
DM.addDisconnectedPlayer(activeChar);
}
if (!(activeChar.checkMultiBox()))
{
activeChar.sendMessage("I'm sorry, but multibox is not allowed here.");
activeChar.logout();
}
Hellows(activeChar);
if ((Config.ALLOW_CLASS_MASTERS) && (Config.ALLOW_REMOTE_CLASS_MASTERS))
{
L2ClassMasterInstance master_instance = L2ClassMasterInstance.getInstance();
if (master_instance != null)
{
ClassLevel lvlnow = PlayerClass.values()[activeChar.getClassId().getId()].getLevel();
if ((activeChar.getLevel() >= 20) && (lvlnow == ClassLevel.First))
L2ClassMasterInstance.getInstance().onAction(activeChar);
else if ((activeChar.getLevel() >= 40) && (lvlnow == ClassLevel.Second))
L2ClassMasterInstance.getInstance().onAction(activeChar);
else if ((activeChar.getLevel() >= 76) && (lvlnow == ClassLevel.Third))
L2ClassMasterInstance.getInstance().onAction(activeChar);
}
else {
_log.info("Attention: Remote ClassMaster is Enabled, but not inserted into DataBase. Remember to install 31288 Custom_Npc ..");
}
}
if (activeChar.getRace().ordinal() == 2)
{
L2Skill skill = SkillTable.getInstance().getInfo(294, 1);
if ((skill != null) && (activeChar.getSkillLevel(294) == 1))
{
SystemMessage sm;
if (GameTimeController.getInstance().isNowNight())
{
sm = SystemMessage.getSystemMessage(SystemMessageId.NIGHT_EFFECT_APPLIES);
sm.addSkillName(294);
sendPacket(sm);
}
else
{
sm = SystemMessage.getSystemMessage(SystemMessageId.DAY_EFFECT_DISAPPEARS);
sm.addSkillName(294);
sendPacket(sm);
}
}
}
if (PowerPakConfig.BUFFER_ENABLED) {
CharSchemesTable.getInstance().onPlayerLogin(activeChar.getObjectId());
}
L2ItemInstance rhand = activeChar.getInventory().getPaperdollItem(7);
if ((rhand != null) && (rhand.getItemId() == 8763))
{
activeChar.addSkill(SkillTable.getInstance().getInfo(3626, 1));
activeChar.addSkill(SkillTable.getInstance().getInfo(3627, 1));
activeChar.addSkill(SkillTable.getInstance().getInfo(3628, 1));
activeChar.sendSkillList();
}
else
{
activeChar.removeSkill(3626, true);
activeChar.removeSkill(3627, true);
activeChar.removeSkill(3628, true);
activeChar.sendSkillList();
}
activeChar.setLocked(false);
}
private boolean isValidName(String text)
{
Pattern pattern;
boolean result = true;
String test = text;
try
{
pattern = Pattern.compile(Config.CNAME_TEMPLATE);
}
catch (PatternSyntaxException e)
{
if (Config.ENABLE_ALL_EXCEPTIONS)
e.printStackTrace();
_log.warning("ERROR " + getType() + ": Character name pattern of config is wrong!");
pattern = Pattern.compile(".*");
}
Matcher regexp = pattern.matcher(test);
if (!(regexp.matches()))
result = false;
return result;
}
private void EnterGM(L2PcInstance activeChar)
{
if (activeChar.isGM())
{
if (Config.GM_SPECIAL_EFFECT)
activeChar.broadcastPacket(new Earthquake(activeChar.getX(), activeChar.getY(), activeChar.getZ(), 50, 4));
if (Config.SHOW_GM_LOGIN)
Announcements.getInstance().announceToAll("GM " + activeChar.getName() + " has logged on.");
if ((Config.GM_STARTUP_INVULNERABLE) && (AdminCommandAccessRights.getInstance().hasAccess("admin_invul", activeChar.getAccessLevel())))
activeChar.setIsInvul(true);
if ((Config.GM_STARTUP_INVISIBLE) && (AdminCommandAccessRights.getInstance().hasAccess("admin_invisible", activeChar.getAccessLevel())))
activeChar.getAppearance().setInvisible();
if ((Config.GM_STARTUP_SILENCE) && (AdminCommandAccessRights.getInstance().hasAccess("admin_silence", activeChar.getAccessLevel())))
activeChar.setMessageRefusal(true);
if ((Config.GM_STARTUP_AUTO_LIST) && (AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", activeChar.getAccessLevel())))
GmListTable.getInstance().addGm(activeChar, false);
else
GmListTable.getInstance().addGm(activeChar, true);
activeChar.updateGmNameTitleColor();
}
}
private void Hellows(L2PcInstance activeChar)
{
File mainText;
NpcHtmlMessage html;
if (Config.ALT_SERVER_NAME_ENABLED)
sendPacket(new SystemMessage(SystemMessageId.S1_S2).addString("Welcome to " + Config.ALT_Server_Name));
if (Config.ONLINE_PLAYERS_ON_LOGIN)
sendPacket(new SystemMessage(SystemMessageId.S1_S2).addString("There are " + L2World.getInstance().getAllPlayers().size() + " players online."));
if ((activeChar.getFirstLog()) && (Config.NEW_PLAYER_EFFECT))
{
L2Skill skill = SkillTable.getInstance().getInfo(2025, 1);
if (skill != null)
{
MagicSkillUser MSU = new MagicSkillUser(activeChar, activeChar, 2025, 1, 1, 0);
activeChar.sendPacket(MSU);
activeChar.broadcastPacket(MSU);
activeChar.useMagic(skill, false, false);
}
activeChar.setFirstLog(false);
activeChar.updateFirstLog();
}
if ((Config.WELCOME_HTM) && (isValidName(activeChar.getName())))
{
String Welcome_Path = "data/html/welcome.htm";
mainText = new File(Config.DATAPACK_ROOT, Welcome_Path);
if (mainText.exists())
{
html = new NpcHtmlMessage(1);
html.setFile(Welcome_Path);
html.replace("%name%", activeChar.getName());
sendPacket(html);
}
}
if ((activeChar.getClan() != null) && (activeChar.getClan().isNoticeEnabled()))
{
String clanNotice = "data/html/clanNotice.htm";
mainText = new File(Config.DATAPACK_ROOT, clanNotice);
if (mainText.exists())
{
html = new NpcHtmlMessage(1);
html.setFile(clanNotice);
html.replace("%clan_name%", activeChar.getClan().getName());
html.replace("%notice_text%", activeChar.getClan().getNotice().replaceAll("\r\n", "<br>"));
sendPacket(html);
}
}
if (Config.PM_MESSAGE_ON_START)
{
activeChar.sendPacket(new CreatureSay(2, 17, Config.PM_TEXT1, Config.PM_SERVER_NAME));
activeChar.sendPacket(new CreatureSay(15, 15, activeChar.getName(), Config.PM_TEXT2));
}
if (Config.SERVER_TIME_ON_START)
activeChar.sendMessage("SVR time is " + this.fmt.format(new Date(System.currentTimeMillis())));
}
private void ColorSystem(L2PcInstance activeChar)
{
if ((activeChar.getPvpKills() >= Config.PVP_AMOUNT1) && (Config.PVP_COLOR_SYSTEM_ENABLED))
activeChar.updatePvPColor(activeChar.getPvpKills());
if ((activeChar.getPkKills() >= Config.PK_AMOUNT1) && (Config.PK_COLOR_SYSTEM_ENABLED)) {
activeChar.updatePkColor(activeChar.getPkKills());
}
if ((activeChar.getPvpKills() >= Config.PVP_AMOUNT2) && (Config.PVP_COLOR_SYSTEM_ENABLED))
activeChar.updatePvPColor(activeChar.getPvpKills());
if ((activeChar.getPkKills() >= Config.PK_AMOUNT2) && (Config.PK_COLOR_SYSTEM_ENABLED)) {
activeChar.updatePkColor(activeChar.getPkKills());
}
if ((activeChar.getPvpKills() >= Config.PVP_AMOUNT3) && (Config.PVP_COLOR_SYSTEM_ENABLED))
activeChar.updatePvPColor(activeChar.getPvpKills());
if ((activeChar.getPkKills() >= Config.PK_AMOUNT3) && (Config.PK_COLOR_SYSTEM_ENABLED)) {
activeChar.updatePkColor(activeChar.getPkKills());
}
if ((activeChar.getPvpKills() >= Config.PVP_AMOUNT4) && (Config.PVP_COLOR_SYSTEM_ENABLED))
activeChar.updatePvPColor(activeChar.getPvpKills());
if ((activeChar.getPkKills() >= Config.PK_AMOUNT4) && (Config.PK_COLOR_SYSTEM_ENABLED)) {
activeChar.updatePkColor(activeChar.getPkKills());
}
if ((activeChar.getPvpKills() >= Config.PVP_AMOUNT5) && (Config.PVP_COLOR_SYSTEM_ENABLED))
activeChar.updatePvPColor(activeChar.getPvpKills());
if ((activeChar.getPkKills() >= Config.PK_AMOUNT5) && (Config.PK_COLOR_SYSTEM_ENABLED)) {
activeChar.updatePkColor(activeChar.getPkKills());
}
if ((activeChar.getClan() != null) && (activeChar.isClanLeader()) && (Config.CLAN_LEADER_COLOR_ENABLED) && (activeChar.getClan().getLevel() >= Config.CLAN_LEADER_COLOR_CLAN_LEVEL))
{
if (Config.CLAN_LEADER_COLORED == 1)
activeChar.getAppearance().setNameColor(Config.CLAN_LEADER_COLOR);
else
activeChar.getAppearance().setTitleColor(Config.CLAN_LEADER_COLOR);
}
if ((Config.ALLOW_AIO_NCOLOR) && (activeChar.isAio()))
activeChar.getAppearance().setNameColor(Config.AIO_NCOLOR);
if ((Config.ALLOW_AIO_TCOLOR) && (activeChar.isAio()))
activeChar.getAppearance().setTitleColor(Config.AIO_TCOLOR);
if (activeChar.isAio())
onEnterAio(activeChar);
activeChar.updateNameTitleColor();
sendPacket(new UserInfo(activeChar));
sendPacket(new HennaInfo(activeChar));
sendPacket(new FriendList(activeChar));
sendPacket(new ItemList(activeChar, false));
sendPacket(new ShortCutInit(activeChar));
activeChar.broadcastUserInfo();
activeChar.sendPacket(new EtcStatusUpdate(activeChar));
}
private void onEnterAio(L2PcInstance activeChar)
{
long now = Calendar.getInstance().getTimeInMillis();
long endDay = activeChar.getAioEndTime();
if (now > endDay)
{
activeChar.setAio(false);
activeChar.setAioEndTime(0L);
activeChar.lostAioSkills();
activeChar.sendMessage("[Aio System]: Removed your Aio stats... period ends.");
}
else
{
Date dt = new Date(endDay);
this._daysleft = ((endDay - now) / 86400000);
if (this._daysleft > 30)
activeChar.sendMessage("[Aio System]: Aio period ends in " + this.df.format(dt) + ". enjoy the Game.");
else if (this._daysleft > 0L)
activeChar.sendMessage("[Aio System]: Left " + (int)this._daysleft + " for Aio period ends.");
else if (this._daysleft > 1L)
{
long hour = (endDay - now) / 3600000;
activeChar.sendMessage("[Aio System]: Left " + (int)hour + " hours to Aio period ends.");
}
}
}
private void engage(L2PcInstance cha)
{
int _chaid = cha.getObjectId();
for (Iterator i$ = CoupleManager.getInstance().getCouples().iterator(); i$.hasNext(); ) { Wedding cl = (Wedding)i$.next();
if ((cl.getPlayer1Id() == _chaid) || (cl.getPlayer2Id() == _chaid))
{
if (cl.getMaried())
{
cha.setMarried(true);
cha.setmarriedType(cl.getType());
}
cha.setCoupleId(cl.getId());
if (cl.getPlayer1Id() == _chaid)
cha.setPartnerId(cl.getPlayer2Id());
else
cha.setPartnerId(cl.getPlayer1Id());
}
}
}
private void notifyPartner(L2PcInstance cha, int partnerId)
{
if (cha.getPartnerId() != 0)
{
L2PcInstance partner = null;
if (L2World.getInstance().findObject(cha.getPartnerId()) instanceof L2PcInstance)
partner = (L2PcInstance)L2World.getInstance().findObject(cha.getPartnerId());
if (partner != null)
partner.sendMessage("Your partner has logged in");
}
}
private void notifyClanMembers(L2PcInstance activeChar)
{
L2Clan clan = activeChar.getClan();
if (clan != null)
{
clan.getClanMember(activeChar.getObjectId()).setPlayerInstance(activeChar);
clan.broadcastToOtherOnlineMembers(new SystemMessage(SystemMessageId.CLAN_MEMBER_S1_LOGGED_IN).addString(activeChar.getName()), activeChar);
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
}
}
private void notifySponsorOrApprentice(L2PcInstance activeChar)
{
if (activeChar.getSponsor() != 0)
{
L2PcInstance sponsor = (L2PcInstance)L2World.getInstance().findObject(activeChar.getSponsor());
if (sponsor != null)
sponsor.sendPacket(new SystemMessage(SystemMessageId.YOUR_APPRENTICE_S1_HAS_LOGGED_IN).addString(activeChar.getName()));
}
else if (activeChar.getApprentice() != 0)
{
L2PcInstance apprentice = (L2PcInstance)L2World.getInstance().findObject(activeChar.getApprentice());
if (apprentice != null)
apprentice.sendPacket(new SystemMessage(SystemMessageId.YOUR_SPONSOR_S1_HAS_LOGGED_IN).addString(activeChar.getName()));
}
}
private void loadTutorial(L2PcInstance player)
{
QuestState qs = player.getQuestState("255_Tutorial");
if (qs != null)
qs.getQuest().notifyEvent("UC", null, player);
}
private void setPledgeClass(L2PcInstance activeChar)
{
int pledgeClass = 0;
if (activeChar.getClan() != null)
pledgeClass = activeChar.getClan().getClanMember(activeChar.getObjectId()).calculatePledgeClass(activeChar);
if ((activeChar.isNoble()) && (pledgeClass < 5))
pledgeClass = 5;
if (activeChar.isHero())
pledgeClass = 8;
activeChar.setPledgeClass(pledgeClass);
}
private void notifyCastleOwner(L2PcInstance activeChar) {
L2Clan clan = activeChar.getClan();
if ((clan != null) &&
(clan.getHasCastle() > 0))
{
Castle castle = CastleManager.getInstance().getCastleById(clan.getHasCastle());
if ((castle != null) && (activeChar.getObjectId() == clan.getLeaderId()))
Announcements.getInstance().announceToAll("Lord " + activeChar.getName() + " Ruler Of " + castle.getName() + " Castle is now Online!");
}
}
public String getType()
{
return "[C] 03 EnterWorld";
}
}