Sync with L2JServer Jan 9th 2015.
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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));
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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())
|
||||
{
|
||||
|
@@ -76,7 +76,7 @@ public class RequestPledgeWaitingApply extends L2GameClientPacket
|
||||
|
||||
if (clanLeader != null)
|
||||
{
|
||||
clanLeader.sendPacket(new ExPledgeWaitingListAlarm());
|
||||
clanLeader.sendPacket(ExPledgeWaitingListAlarm.STATIC_PACKET);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -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);
|
||||
|
@@ -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 =
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user