Sync with L2JServer Jan 9th 2015.

This commit is contained in:
mobius
2015-01-09 19:55:02 +00:00
parent 9c9b0aaff7
commit 4c2db62a63
618 changed files with 19803 additions and 7853 deletions

View File

@@ -71,6 +71,7 @@ import com.l2jserver.gameserver.network.serverpackets.ExNewSkillToLearnByLevelUp
import com.l2jserver.gameserver.network.serverpackets.ExNoticePostArrived;
import com.l2jserver.gameserver.network.serverpackets.ExNotifyPremiumItem;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeCount;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeWaitingListAlarm;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.ExShowUsm;
import com.l2jserver.gameserver.network.serverpackets.ExStorageMaxCount;
@@ -80,6 +81,7 @@ import com.l2jserver.gameserver.network.serverpackets.ExUserInfoEquipSlot;
import com.l2jserver.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import com.l2jserver.gameserver.network.serverpackets.ExVitalityEffectInfo;
import com.l2jserver.gameserver.network.serverpackets.ExVoteSystemInfo;
import com.l2jserver.gameserver.network.serverpackets.ExWorldChatCnt;
import com.l2jserver.gameserver.network.serverpackets.HennaInfo;
import com.l2jserver.gameserver.network.serverpackets.ItemList;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
@@ -358,9 +360,13 @@ public class EnterWorld extends L2GameClientPacket
final L2Clan clan = activeChar.getClan();
clan.broadcastToOnlineMembers(new PledgeShowMemberListUpdate(activeChar));
sendPacket(new PledgeShowMemberListAll(clan));
activeChar.sendPacket(new ExPledgeCount(clan));
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
activeChar.sendPacket(new PledgeSkillList(clan));
}
else
{
activeChar.sendPacket(ExPledgeWaitingListAlarm.STATIC_PACKET);
}
activeChar.broadcastUserInfo();
@@ -594,6 +600,7 @@ public class EnterWorld extends L2GameClientPacket
}
activeChar.sendPacket(new ExAcquireAPSkillList(activeChar));
activeChar.sendPacket(new ExWorldChatCnt(activeChar));
}
/**

View File

@@ -23,6 +23,7 @@ import java.util.List;
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.SkillData;
import com.l2jserver.gameserver.datatables.SkillTreesData;
import com.l2jserver.gameserver.enums.CategoryType;
import com.l2jserver.gameserver.enums.IllegalActionPunishmentType;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.enums.UserInfoType;
@@ -74,6 +75,18 @@ public final class RequestAcquireSkill extends L2GameClientPacket
"ClassAbility80-"
};
private static final String[] REVELATION_VAR_NAMES =
{
"RevelationSkill1",
"RevelationSkill2"
};
private static final String[] DUALCLASS_REVELATION_VAR_NAMES =
{
"DualclassRevelationSkill1",
"DualclassRevelationSkill2"
};
private int _id;
private int _level;
private AcquireSkillType _skillType;
@@ -414,6 +427,91 @@ public final class RequestAcquireSkill extends L2GameClientPacket
break;
}
case REVELATION:
{
if (activeChar.isSubClassActive())
{
activeChar.sendPacket(SystemMessageId.THIS_SKILL_CANNOT_BE_LEARNED_WHILE_IN_THE_SUBCLASS_STATE_PLEASE_TRY_AGAIN_AFTER_CHANGING_TO_THE_MAIN_CLASS);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while Sub-Class is active!", IllegalActionPunishmentType.NONE);
return;
}
if ((activeChar.getLevel() < 85) || !activeChar.isInCategory(CategoryType.AWAKEN_GROUP))
{
activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_NECESSARY_MATERIALS_OR_PREREQUISITES_TO_LEARN_THIS_SKILL);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while not being level 85 or awaken!", IllegalActionPunishmentType.NONE);
return;
}
int count = 0;
for (String varName : REVELATION_VAR_NAMES)
{
if (activeChar.getVariables().getInt(varName, 0) > 0)
{
count++;
}
}
if (count >= 2)
{
activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_NECESSARY_MATERIALS_OR_PREREQUISITES_TO_LEARN_THIS_SKILL);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while having already learned 2 skills!", IllegalActionPunishmentType.NONE);
return;
}
if (checkPlayerSkill(activeChar, trainer, s))
{
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
activeChar.getVariables().set(varName, skill.getId());
giveSkill(activeChar, trainer, skill);
}
break;
}
case REVELATION_DUALCLASS:
{
if (activeChar.isSubClassActive() && !activeChar.isDualClassActive())
{
activeChar.sendPacket(SystemMessageId.THIS_SKILL_CANNOT_BE_LEARNED_WHILE_IN_THE_SUBCLASS_STATE_PLEASE_TRY_AGAIN_AFTER_CHANGING_TO_THE_MAIN_CLASS);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while Sub-Class is active!", IllegalActionPunishmentType.NONE);
return;
}
if ((activeChar.getLevel() < 85) || !activeChar.isInCategory(CategoryType.AWAKEN_GROUP))
{
activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_NECESSARY_MATERIALS_OR_PREREQUISITES_TO_LEARN_THIS_SKILL);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while not being level 85 or awaken!", IllegalActionPunishmentType.NONE);
return;
}
int count = 0;
for (String varName : DUALCLASS_REVELATION_VAR_NAMES)
{
if (activeChar.getVariables().getInt(varName, 0) > 0)
{
count++;
}
}
if (count >= 2)
{
activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_NECESSARY_MATERIALS_OR_PREREQUISITES_TO_LEARN_THIS_SKILL);
Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " while having already learned 2 skills!", IllegalActionPunishmentType.NONE);
return;
}
if (checkPlayerSkill(activeChar, trainer, s))
{
final String varName = count == 0 ? DUALCLASS_REVELATION_VAR_NAMES[0] : DUALCLASS_REVELATION_VAR_NAMES[1];
activeChar.getVariables().set(varName, skill.getId());
giveSkill(activeChar, trainer, skill);
}
break;
}
default:
{
_log.warning("Recived Wrong Packet Data in Aquired Skill, unknown skill type:" + _skillType);

View File

@@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.gameserver.datatables.SkillData;
import com.l2jserver.gameserver.datatables.SkillTreesData;
import com.l2jserver.gameserver.enums.CategoryType;
import com.l2jserver.gameserver.enums.Race;
import com.l2jserver.gameserver.model.ClanPrivilege;
import com.l2jserver.gameserver.model.L2SkillLearn;
@@ -148,6 +149,24 @@ public final class RequestAcquireSkillInfo extends L2GameClientPacket
sendPacket(new AcquireSkillInfo(_skillType, s));
break;
}
case REVELATION:
{
if ((activeChar.getLevel() < 85) || !activeChar.isInCategory(CategoryType.AWAKEN_GROUP))
{
return;
}
sendPacket(new AcquireSkillInfo(_skillType, s));
break;
}
case REVELATION_DUALCLASS:
{
if (!activeChar.isSubClassActive() || !activeChar.isDualClassActive())
{
return;
}
sendPacket(new AcquireSkillInfo(_skillType, s));
break;
}
}
}

View File

@@ -23,6 +23,7 @@ import com.l2jserver.gameserver.instancemanager.FortManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeCount;
import com.l2jserver.gameserver.network.serverpackets.JoinPledge;
import com.l2jserver.gameserver.network.serverpackets.PledgeShowInfoUpdate;
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListAdd;
@@ -77,7 +78,7 @@ public final class RequestAnswerJoinPledge extends L2GameClientPacket
}
RequestJoinPledge requestPacket = (RequestJoinPledge) requestor.getRequest().getRequestPacket();
L2Clan clan = requestor.getClan();
final L2Clan clan = requestor.getClan();
// we must double check this cause during response time conditions can be changed, i.e. another player could join clan
if (clan.checkClanJoinCondition(requestor, activeChar, requestPacket.getPledgeType()))
{
@@ -102,18 +103,19 @@ public final class RequestAnswerJoinPledge extends L2GameClientPacket
sm.addString(activeChar.getName());
clan.broadcastToOnlineMembers(sm);
if (activeChar.getClan().getCastleId() > 0)
if (clan.getCastleId() > 0)
{
CastleManager.getInstance().getCastleByOwner(activeChar.getClan()).giveResidentialSkills(activeChar);
CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(activeChar);
}
if (activeChar.getClan().getFortId() > 0)
if (clan.getFortId() > 0)
{
FortManager.getInstance().getFortByOwner(activeChar.getClan()).giveResidentialSkills(activeChar);
FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(activeChar);
}
activeChar.sendSkillList();
clan.broadcastToOtherOnlineMembers(new PledgeShowMemberListAdd(activeChar), activeChar);
clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
// this activates the clan tab on the new member
activeChar.sendPacket(new PledgeShowMemberListAll(clan));

View File

@@ -0,0 +1,65 @@
/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server 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.
*
* L2J Server 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 com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.events.EventDispatcher;
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerChangeToAwakenedClass;
import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
/**
* @author Sdw
*/
public class RequestChangeToAwakenedClass extends L2GameClientPacket
{
private static final String _C__D0_A1_REQUESTCHANGETOAWAKENEDCLASS = "[C] D0;A2 RequestChangeToAwakenedClass";
private boolean _change;
@Override
protected void readImpl()
{
_change = readD() == 1;
}
@Override
protected void runImpl()
{
final L2PcInstance player = getClient().getActiveChar();
if (player == null)
{
return;
}
if (_change)
{
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerChangeToAwakenedClass(player), player);
}
else
{
player.sendPacket(ActionFailed.STATIC_PACKET);
}
}
@Override
public String getType()
{
return _C__D0_A1_REQUESTCHANGETOAWAKENEDCLASS;
}
}

View File

@@ -18,28 +18,50 @@
*/
package com.l2jserver.gameserver.network.clientpackets;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeCrestLarge;
import com.l2jserver.gameserver.datatables.CrestTable;
import com.l2jserver.gameserver.model.L2Crest;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeEmblem;
/**
* Fomat : chd c: (id) 0xD0 h: (subid) 0x10 d: the crest id This is a trigger
* @author -Wooden-
* @author -Wooden-, Sdw
*/
public final class RequestExPledgeCrestLarge extends L2GameClientPacket
{
private static final String _C__D0_10_REQUESTEXPLEDGECRESTLARGE = "[C] D0:10 RequestExPledgeCrestLarge";
private int _crestId;
private int _clanId;
@Override
protected void readImpl()
{
_crestId = readD();
_clanId = readD();
}
@Override
protected void runImpl()
{
sendPacket(new ExPledgeCrestLarge(_crestId));
final L2Crest crest = CrestTable.getInstance().getCrest(_crestId);
final byte[] data = crest != null ? crest.getData() : null;
if (data != null)
{
for (int i = 0; i <= 4; i++)
{
if (i < 4)
{
final byte[] fullChunk = new byte[14336];
System.arraycopy(data, (14336 * i), fullChunk, 0, 14336);
sendPacket(new ExPledgeEmblem(_crestId, fullChunk, _clanId, i, 14336));
}
else
{
final byte[] lastChunk = new byte[8320];
System.arraycopy(data, (14336 * i), lastChunk, 0, 8320);
sendPacket(new ExPledgeEmblem(_crestId, lastChunk, _clanId, i, 8320));
}
}
}
}
@Override

View File

@@ -24,6 +24,7 @@ import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2ClanMember;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeCount;
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDelete;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -46,7 +47,7 @@ public final class RequestOustPledgeMember extends L2GameClientPacket
@Override
protected void runImpl()
{
L2PcInstance activeChar = getClient().getActiveChar();
final L2PcInstance activeChar = getClient().getActiveChar();
if (activeChar == null)
{
return;
@@ -94,6 +95,7 @@ public final class RequestOustPledgeMember extends L2GameClientPacket
// Remove the Player From the Member list
clan.broadcastToOnlineMembers(new PledgeShowMemberListDelete(_target));
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
if (member.isOnline())
{

View File

@@ -76,7 +76,7 @@ public class RequestPledgeWaitingApply extends L2GameClientPacket
if (clanLeader != null)
{
clanLeader.sendPacket(new ExPledgeWaitingListAlarm());
clanLeader.sendPacket(ExPledgeWaitingListAlarm.STATIC_PACKET);
}
}
else

View File

@@ -22,6 +22,7 @@ import com.l2jserver.Config;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.ExPledgeCount;
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDelete;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
@@ -73,6 +74,7 @@ public final class RequestWithdrawalPledge extends L2GameClientPacket
// Remove the Player From the Member list
clan.broadcastToOnlineMembers(new PledgeShowMemberListDelete(activeChar.getName()));
clan.broadcastToOnlineMembers(new ExPledgeCount(clan));
activeChar.sendPacket(SystemMessageId.YOU_HAVE_WITHDRAWN_FROM_THE_CLAN);
activeChar.sendPacket(SystemMessageId.AFTER_LEAVING_OR_HAVING_BEEN_DISMISSED_FROM_A_CLAN_YOU_MUST_WAIT_AT_LEAST_A_DAY_BEFORE_JOINING_ANOTHER_CLAN);

View File

@@ -70,6 +70,8 @@ public final class Say2 extends L2GameClientPacket
public static final int MPCC_ROOM = 21;
public static final int NPC_ALL = 22;
public static final int NPC_SHOUT = 23;
public static final int NPC_TELL = 24;
public static final int GLOBAL = 25;
private static final String[] CHAT_NAMES =
{
@@ -94,7 +96,11 @@ public final class Say2 extends L2GameClientPacket
"CRITICAL_ANNOUNCE",
"SCREEN_ANNOUNCE",
"BATTLEFIELD",
"MPCC_ROOM"
"MPCC_ROOM",
"NPC_ALL",
"NPC_SHOUT",
"NEW_TELL",
"GLOBAL"
};
private static final String[] WALKER_COMMAND_LIST =

View File

@@ -308,6 +308,16 @@ public final class UseItem extends L2GameClientPacket
activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM);
return;
}
break;
}
case L2Item.SLOT_BROOCH_JEWEL:
{
if (!item.isEquipped() && (activeChar.getInventory().getBroochJewelSlots() == 0))
{
activeChar.sendPacket(SystemMessageId.YOU_CANNOT_EQUIP_S1_WITHOUT_EQUIPPING_A_BROOCH);
return;
}
break;
}
}