// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov Date: 05/05/2012 15:24:54
// Home Page: http://members.fortunecity.com/neshkov/dj.html http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name: EnterWorld.java
package com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.Config;
import com.l2jserver.gameserver.*;
import com.l2jserver.gameserver.cache.HtmCache;
import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager;
import com.l2jserver.gameserver.datatables.*;
import com.l2jserver.gameserver.instancemanager.*;
import com.l2jserver.gameserver.model.*;
import com.l2jserver.gameserver.model.actor.appearance.PcAppearance;
import com.l2jserver.gameserver.model.actor.instance.L2ClassMasterInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.*;
import com.l2jserver.gameserver.model.entity.clanhall.AuctionableHall;
import com.l2jserver.gameserver.model.entity.clanhall.SiegableHall;
import com.l2jserver.gameserver.model.item.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.itemcontainer.PcInventory;
import com.l2jserver.gameserver.model.itemcontainer.PcWarehouse;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.L2GameClient;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
import com.l2jserver.gameserver.network.communityserver.writepackets.WorldInfo;
import com.l2jserver.gameserver.network.serverpackets.*;
import com.l2jserver.gameserver.util.Broadcast;
import com.l2jserver.util.Base64;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.util.logging.Logger;
import javolution.util.FastList;
import javolution.util.FastMap;
// Referenced classes of package com.l2jserver.gameserver.network.clientpackets:
// L2GameClientPacket
public class EnterWorld extends L2GameClientPacket
{
public EnterWorld()
{
}
public TaskPriority getPriority()
{
return TaskPriority.PR_URGENT;
}
protected void readImpl()
{
readB(new byte[32]);
readD();
readD();
readD();
readD();
readB(new byte[32]);
readD();
for(int i = 0; i < 5; i++)
{
for(int o = 0; o < 4; o++)
tracert[i][o] = readC();
}
}
protected void runImpl()
{
L2PcInstance activeChar = ((L2GameClient)getClient()).getActiveChar();
if(activeChar == null)
{
_log.warning("EnterWorld failed! activeChar returned 'null'.");
((L2GameClient)getClient()).closeNow();
return;
}
String adress[] = new String[5];
for(int i = 0; i < 5; i++)
adress[i] = (new StringBuilder()).append(tracert[i][0]).append(".").append(tracert[i][1]).append(".").append(tracert[i][2]).append(".").append(tracert[i][3]).toString();
LoginServerThread.getInstance().sendClientTracert(activeChar.getAccountName(), adress);
((L2GameClient)getClient()).setClientTracert(tracert);
if(Config.RESTORE_PLAYER_INSTANCE)
{
activeChar.setInstanceId(InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId()));
} else
{
int instanceId = InstanceManager.getInstance().getPlayerInstance(activeChar.getObjectId());
if(instanceId > 0)
InstanceManager.getInstance().getInstance(instanceId).removePlayer(activeChar.getObjectId());
}
if(L2World.getInstance().findObject(activeChar.getObjectId()) != null && Config.DEBUG)
_log.warning((new StringBuilder()).append("User already exists in Object ID map! User ").append(activeChar.getName()).append(" is a character clone.").toString());
if(activeChar.isGM())
{
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.setSilenceMode(true);
if(Config.GM_STARTUP_DIET_MODE && AdminCommandAccessRights.getInstance().hasAccess("admin_diet", activeChar.getAccessLevel()))
{
activeChar.setDietMode(true);
activeChar.refreshOverloaded();
}
if(Config.GM_STARTUP_AUTO_LIST && AdminCommandAccessRights.getInstance().hasAccess("admin_gmliston", activeChar.getAccessLevel()))
GmListTable.getInstance().addGm(activeChar, false);
else
GmListTable.getInstance().addGm(activeChar, true);
if(Config.GM_GIVE_SPECIAL_SKILLS)
GMSkillTable.getInstance().addSkills(activeChar, false);
if(Config.GM_GIVE_SPECIAL_AURA_SKILLS)
GMSkillTable.getInstance().addSkills(activeChar, true);
}
if(activeChar.getCurrentHp() < 0.5D)
activeChar.setIsDead(true);
boolean showClanNotice = false;
Iterator i$;
if(activeChar.getClan() != null)
{
activeChar.sendPacket(new PledgeSkillList(activeChar.getClan()));
notifyClanMembers(activeChar);
notifySponsorOrApprentice(activeChar);
AuctionableHall clanHall = ClanHallManager.getInstance().getClanHallByOwner(activeChar.getClan());
if(activeChar.getClan().getLeaderName().equals(activeChar.getName()) && activeChar.getClan().getHasCastle() > 0 && Config.ANNOUNCE_CASTLE_LORD && !activeChar.isGM())
{
String castlename = "";
switch(activeChar.getClan().getHasCastle())
{
case 1: // '\001'
castlename = "Gludio";
break;
case 2: // '\002'
castlename = "Dion";
break;
case 3: // '\003'
castlename = "Giran";
break;
case 4: // '\004'
castlename = "Oren";
break;
case 5: // '\005'
castlename = "Aden";
break;
case 6: // '\006'
castlename = "Innadril";
break;
case 7: // '\007'
castlename = "Goddard";
break;
case 8: // '\b'
castlename = "Rune";
break;
case 9: // '\t'
castlename = "Schuttgart";
break;
}
Broadcast.toAllOnlinePlayers(new CreatureSay(1, 18, "", (new StringBuilder()).append("Clan Manager: ").append(activeChar.getName()).append(" the lord of ").append(castlename).append(" castle has logged into the game.").toString()));
}
if(clanHall != null && !clanHall.getPaid())
activeChar.sendPacket(SystemMessageId.PAYMENT_FOR_YOUR_CLAN_HALL_HAS_NOT_BEEN_MADE_PLEASE_MAKE_PAYMENT_TO_YOUR_CLAN_WAREHOUSE_BY_S1_TOMORROW);
i$ = SiegeManager.getInstance().getSieges().iterator();
do
{
if(!i$.hasNext())
break;
Siege siege = (Siege)i$.next();
if(siege.getIsInProgress())
if(siege.checkIsAttacker(activeChar.getClan()))
{
activeChar.setSiegeState((byte)1);
activeChar.setSiegeSide(siege.getCastle().getCastleId());
} else
if(siege.checkIsDefender(activeChar.getClan()))
{
activeChar.setSiegeState((byte)2);
activeChar.setSiegeSide(siege.getCastle().getCastleId());
}
} while(true);
i$ = FortSiegeManager.getInstance().getSieges().iterator();
do
{
if(!i$.hasNext())
break;
FortSiege siege = (FortSiege)i$.next();
if(siege.getIsInProgress())
if(siege.checkIsAttacker(activeChar.getClan()))
{
activeChar.setSiegeState((byte)1);
activeChar.setSiegeSide(siege.getFort().getFortId());
} else
if(siege.checkIsDefender(activeChar.getClan()))
{
activeChar.setSiegeState((byte)2);
activeChar.setSiegeSide(siege.getFort().getFortId());
}
} while(true);
i$ = CHSiegeManager.getInstance().getConquerableHalls().values().iterator();
do
{
if(!i$.hasNext())
break;
SiegableHall hall = (SiegableHall)i$.next();
if(hall.isInSiege() && hall.isRegistered(activeChar.getClan()))
{
activeChar.setSiegeState((byte)1);
activeChar.setSiegeSide(hall.getId());
activeChar.setIsInHideoutSiege(true);
}
} while(true);
sendPacket(new PledgeShowMemberListAll(activeChar.getClan(), activeChar));
sendPacket(new PledgeStatusChanged(activeChar.getClan()));
if(activeChar.getClan().getHasCastle() > 0)
CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).giveResidentialSkills(activeChar);
if(activeChar.getClan().getHasFort() > 0)
FortManager.getInstance().getFortByOwner(activeChar.getClan()).giveResidentialSkills(activeChar);
showClanNotice = activeChar.getClan().isNoticeEnabled();
}
if(TerritoryWarManager.getInstance().getRegisteredTerritoryId(activeChar) > 0)
{
if(TerritoryWarManager.getInstance().isTWInProgress())
activeChar.setSiegeState((byte)1);
activeChar.setSiegeSide(TerritoryWarManager.getInstance().getRegisteredTerritoryId(activeChar));
}
if(SevenSigns.getInstance().isSealValidationPeriod() && SevenSigns.getInstance().getSealOwner(3) != 0)
{
int cabal = SevenSigns.getInstance().getPlayerCabal(activeChar.getObjectId());
if(cabal != 0)
if(cabal == SevenSigns.getInstance().getSealOwner(3))
activeChar.addSkill(com.l2jserver.gameserver.datatables.SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
else
activeChar.addSkill(com.l2jserver.gameserver.datatables.SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
} else
{
activeChar.removeSkill(com.l2jserver.gameserver.datatables.SkillTable.FrequentSkill.THE_VICTOR_OF_WAR.getSkill());
activeChar.removeSkill(com.l2jserver.gameserver.datatables.SkillTable.FrequentSkill.THE_VANQUISHED_OF_WAR.getSkill());
}
if(Config.ENABLE_VITALITY && Config.RECOVER_VITALITY_ON_RECONNECT)
{
float points = (Config.RATE_RECOVERY_ON_RECONNECT * (float)(System.currentTimeMillis() - activeChar.getLastAccess())) / 60000F;
if(points > 0.0F)
activeChar.updateVitalityPoints(points, false, true);
}
if(activeChar.getPvpKills() >= Config.PVP_AMOUNT1 && Config.PVP_COLOR_SYSTEM_ENABLED)
updatePvPColor(activeChar.getPvpKills(), activeChar);
if(activeChar.getPkKills() >= Config.PK_AMOUNT1 && Config.PK_COLOR_SYSTEM_ENABLED)
updatePkColor(activeChar.getPkKills(), activeChar);
activeChar.checkRecoBonusTask();
activeChar.broadcastUserInfo();
activeChar.getMacros().sendUpdate();
sendPacket(new ItemList(activeChar, false));
activeChar.queryGameGuard();
sendPacket(new ExGetBookMarkInfoPacket(activeChar));
sendPacket(new ShortCutInit(activeChar));
activeChar.sendPacket(ExBasicActionList.getStaticPacket(activeChar));
activeChar.sendSkillList();
activeChar.sendPacket(new HennaInfo(activeChar));
Quest.playerEnter(activeChar);
if(!Config.DISABLE_TUTORIAL)
loadTutorial(activeChar);
Iterator i$ = QuestManager.getInstance().getAllManagedScripts().iterator();
do
{
if(!i$.hasNext())
break;
Quest quest = (Quest)i$.next();
if(quest != null && quest.getOnEnterWorld())
quest.notifyEnterWorld(activeChar);
} while(true);
activeChar.sendPacket(new QuestList());
if(Config.PLAYER_SPAWN_PROTECTION > 0)
activeChar.setProtection(true);
activeChar.spawnMe(activeChar.getX(), activeChar.getY(), activeChar.getZ());
activeChar.getInventory().applyItemSkills();
if(L2Event.isParticipant(activeChar))
L2Event.restorePlayerEventStatus(activeChar);
if(Config.L2JMOD_ALLOW_WEDDING)
{
engage(activeChar);
notifyPartner(activeChar, activeChar.getPartnerId());
}
if(activeChar.isCursedWeaponEquipped())
CursedWeaponsManager.getInstance().getCursedWeapon(activeChar.getCursedWeaponEquippedId()).cursedOnLogin();
activeChar.updateEffectIcons();
activeChar.sendPacket(new EtcStatusUpdate(activeChar));
activeChar.sendPacket(new ExStorageMaxCount(activeChar));
sendPacket(new FriendList(activeChar));
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.FRIEND_S1_HAS_LOGGED_IN);
sm.addString(activeChar.getName());
quest = activeChar.getFriendList().iterator();
do
{
if(!quest.hasNext())
break;
int id = ((Integer)quest.next()).intValue();
L2Object obj = L2World.getInstance().findObject(id);
if(obj != null)
obj.sendPacket(sm);
} while(true);
activeChar.sendPacket(SystemMessageId.WELCOME_TO_LINEAGE);
activeChar.sendMessage(getText("V2VsY29tZSB0byBSMSBTeXN0ZW1zLg==\n"));
activeChar.sendMessage(getText("Q3JlZGl0czogTDJKU2VydmVyICYgaW5zYW5leEQu\n"));
SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar);
Announcements.getInstance().showAnnouncements(activeChar);
if(showClanNotice)
{
NpcHtmlMessage notice = new NpcHtmlMessage(1);
notice.setFile(activeChar.getHtmlPrefix(), "data/html/clanNotice.htm");
notice.replace("%clan_name%", activeChar.getClan().getName());
notice.replace("%notice_text%", activeChar.getClan().getNotice().replaceAll("\r\n", "<br>"));
notice.disableValidation();
sendPacket(notice);
} else
if(Config.SERVER_NEWS)
{
String serverNews = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/servnews.htm");
if(serverNews != null)
sendPacket(new NpcHtmlMessage(1, serverNews));
}
if(Config.PETITIONING_ALLOWED)
PetitionManager.getInstance().checkPetitionMessages(activeChar);
if(activeChar.isAlikeDead())
sendPacket(new Die(activeChar));
activeChar.onPlayerEnter();
sendPacket(new SkillCoolTime(activeChar));
sendPacket(new ExVoteSystemInfo(activeChar));
sendPacket(new ExNevitAdventPointInfoPacket(0));
sendPacket(new ExNevitAdventTimeChange(-1));
sendPacket(new ExShowContactList(activeChar));
L2ItemInstance arr$[] = activeChar.getInventory().getItems();
int len$ = arr$.length;
for(int i$ = 0; i$ < len$; i$++)
{
L2ItemInstance i = arr$[i$];
if(i.isTimeLimitedItem())
i.scheduleLifeTimeTask();
if(i.isShadowItem() && i.isEquipped())
i.decreaseMana(false);
}
arr$ = activeChar.getWarehouse().getItems();
len$ = arr$.length;
for(int i$ = 0; i$ < len$; i$++)
{
L2ItemInstance i = arr$[i$];
if(i.isTimeLimitedItem())
i.scheduleLifeTimeTask();
}
if(DimensionalRiftManager.getInstance().checkIfInRiftZone(activeChar.getX(), activeChar.getY(), activeChar.getZ(), false))
DimensionalRiftManager.getInstance().teleportToWaitingRoom(activeChar);
if(activeChar.getClanJoinExpiryTime() > System.currentTimeMillis())
activeChar.sendPacket(SystemMessageId.CLAN_MEMBERSHIP_TERMINATED);
if(activeChar.getInventory().getItemByItemId(9819) != null)
{
Fort fort = FortManager.getInstance().getFort(activeChar);
if(fort != null)
{
FortSiegeManager.getInstance().dropCombatFlag(activeChar, fort.getFortId());
} else
{
int slot = activeChar.getInventory().getSlotFromItem(activeChar.getInventory().getItemByItemId(9819));
activeChar.getInventory().unEquipItemInBodySlot(slot);
activeChar.destroyItem("CombatFlag", activeChar.getInventory().getItemByItemId(9819), null, true);
}
}
if(!activeChar.isGM() && activeChar.isInsideZone((byte)2) && (!activeChar.isInSiege() || activeChar.getSiegeState() < 2))
activeChar.teleToLocation(com.l2jserver.gameserver.instancemanager.MapRegionManager.TeleportWhereType.Town);
if(Config.ALLOW_MAIL && MailManager.getInstance().hasUnreadPost(activeChar))
sendPacket(ExNoticePostArrived.valueOf(false));
RegionBBSManager.getInstance().changeCommunityBoard();
CommunityServerThread.getInstance().sendPacket(new WorldInfo(activeChar, null, (byte)2));
TvTEvent.onLogin(activeChar);
if(Config.WELCOME_MESSAGE_ENABLED)
activeChar.sendPacket(new ExShowScreenMessage(Config.WELCOME_MESSAGE_TEXT, Config.WELCOME_MESSAGE_TIME));
L2ClassMasterInstance.showQuestionMark(activeChar);
if(CTF._savePlayers.contains(activeChar.getName()))
CTF.addDisconnectedPlayer(activeChar);
int birthday = activeChar.checkBirthDay();
if(birthday == 0)
activeChar.sendPacket(SystemMessageId.YOUR_BIRTHDAY_GIFT_HAS_ARRIVED);
else
if(birthday != -1)
{
sm = SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_S1_DAYS_UNTIL_YOUR_CHARACTERS_BIRTHDAY);
sm.addString(Integer.toString(birthday));
activeChar.sendPacket(sm);
}
if(!activeChar.getPremiumItemList().isEmpty())
activeChar.sendPacket(new ExNotifyPremiumItem());
}
private void engage(L2PcInstance cha)
{
int _chaid = cha.getObjectId();
Iterator i$ = CoupleManager.getInstance().getCouples().iterator();
do
{
if(!i$.hasNext())
break;
Couple cl = (Couple)i$.next();
if(cl.getPlayer1Id() == _chaid || cl.getPlayer2Id() == _chaid)
{
if(cl.getMaried())
cha.setMarried(true);
cha.setCoupleId(cl.getId());
if(cl.getPlayer1Id() == _chaid)
cha.setPartnerId(cl.getPlayer2Id());
else
cha.setPartnerId(cl.getPlayer1Id());
}
} while(true);
}
private void notifyPartner(L2PcInstance cha, int partnerId)
{
if(cha.getPartnerId() != 0)
{
int objId = cha.getPartnerId();
try
{
L2PcInstance partner = L2World.getInstance().getPlayer(objId);
if(partner != null)
partner.sendMessage("Your Partner has logged in.");
partner = null;
}
catch(ClassCastException cce)
{
_log.warning((new StringBuilder()).append("Wedding Error: ID ").append(objId).append(" is now owned by a(n) ").append(L2World.getInstance().findObject(objId).getClass().getSimpleName()).toString());
}
}
}
private void notifyClanMembers(L2PcInstance activeChar)
{
L2Clan clan = activeChar.getClan();
if(clan != null)
{
clan.getClanMember(activeChar.getObjectId()).setPlayerInstance(activeChar);
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_MEMBER_S1_LOGGED_IN);
msg.addString(activeChar.getName());
clan.broadcastToOtherOnlineMembers(msg, activeChar);
msg = null;
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListUpdate(activeChar), activeChar);
}
}
private void notifySponsorOrApprentice(L2PcInstance activeChar)
{
if(activeChar.getSponsor() != 0)
{
L2PcInstance sponsor = L2World.getInstance().getPlayer(activeChar.getSponsor());
if(sponsor != null)
{
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_APPRENTICE_S1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
sponsor.sendPacket(msg);
}
} else
if(activeChar.getApprentice() != 0)
{
L2PcInstance apprentice = L2World.getInstance().getPlayer(activeChar.getApprentice());
if(apprentice != null)
{
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.YOUR_SPONSOR_C1_HAS_LOGGED_IN);
msg.addString(activeChar.getName());
apprentice.sendPacket(msg);
}
}
}
public void updatePvPColor(int pvpKillAmount, L2PcInstance activeChar)
{
if(Config.PVP_COLOR_SYSTEM_ENABLED)
{
if(activeChar.isGM())
return;
if(pvpKillAmount >= Config.PVP_AMOUNT1 && pvpKillAmount < Config.PVP_AMOUNT2)
activeChar.getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT1);
else
if(pvpKillAmount >= Config.PVP_AMOUNT2 && pvpKillAmount < Config.PVP_AMOUNT3)
activeChar.getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT2);
else
if(pvpKillAmount >= Config.PVP_AMOUNT3 && pvpKillAmount < Config.PVP_AMOUNT4)
activeChar.getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT3);
else
if(pvpKillAmount >= Config.PVP_AMOUNT4 && pvpKillAmount < Config.PVP_AMOUNT5)
activeChar.getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT4);
else
if(pvpKillAmount >= Config.PVP_AMOUNT5)
activeChar.getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT5);
}
}