Partial sync L2jUnity free release Feb 23th 2015.

This commit is contained in:
MobiusDev 2016-10-30 10:55:57 +00:00
parent 9cb5043632
commit 6f92e7d596
14 changed files with 151 additions and 141 deletions

View File

@ -6,6 +6,7 @@
<respawnPoint X="-114336" Y="255654" Z="-1512" />
<respawnPoint X="-114742" Y="255603" Z="-1512" />
<respawnPoint X="-113990" Y="255700" Z="-1504" />
<respawnPoint X="-114359" Y="256482" Z="-1280" />
<respawnPoint X="-119602" Y="246335" Z="-1232" isChaotic="true" />
<respawnPoint X="-119756" Y="246335" Z="-1232" isChaotic="true" />
<map X="15" Y="23" />

View File

@ -41,13 +41,13 @@ public final class Nottingale extends AbstractNpcAI
private static final Map<Integer, RadarControl> RADARS = new HashMap<>();
static
{
RADARS.put(2, new RadarControl(0, -184545, 243120, 1581, 2));
RADARS.put(5, new RadarControl(0, -192361, 254528, 3598, 1));
RADARS.put(6, new RadarControl(0, -174600, 219711, 4424, 1));
RADARS.put(7, new RadarControl(0, -181989, 208968, 4424, 1));
RADARS.put(8, new RadarControl(0, -252898, 235845, 5343, 1));
RADARS.put(9, new RadarControl(0, -212819, 209813, 4288, 1));
RADARS.put(10, new RadarControl(0, -246899, 251918, 4352, 1));
RADARS.put(2, new RadarControl(0, 2, -184545, 243120, 1581));
RADARS.put(5, new RadarControl(0, 1, -192361, 254528, 3598));
RADARS.put(6, new RadarControl(0, 1, -174600, 219711, 4424));
RADARS.put(7, new RadarControl(0, 1, -181989, 208968, 4424));
RADARS.put(8, new RadarControl(0, 1, -252898, 235845, 5343));
RADARS.put(9, new RadarControl(0, 1, -212819, 209813, 4288));
RADARS.put(10, new RadarControl(0, 1, -246899, 251918, 4352));
}
private Nottingale()

View File

@ -30,6 +30,7 @@ import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2ChestInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.skills.AbnormalVisualEffect;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.CharInfo;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
@ -360,12 +361,19 @@ public class AdminEffects implements IAdminCommandHandler
activeChar.stopSkillEffects((val == 0) && sendMessage, 7029);
if ((val >= 1) && (val <= 4))
{
activeChar.doSimultaneousCast(SkillData.getInstance().getSkill(7029, val));
int time = 0;
if (st.hasMoreTokens())
{
time = Integer.parseInt(st.nextToken());
}
final Skill gmSpeedSkill = SkillData.getInstance().getSkill(7029, val);
gmSpeedSkill.applyEffects(activeChar, activeChar, true, time);
}
}
catch (Exception e)
{
activeChar.sendMessage("Usage: //gmspeed <value> (0=off...4=max)");
activeChar.sendMessage("Usage: //gmspeed <Effect level (0-4)> <Time in seconds>");
}
if (command.contains("_menu"))
{

View File

@ -4,6 +4,7 @@
<xs:attribute name="name" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="displayId" />
<xs:enumeration value="armor_type" />
<xs:enumeration value="attack_range" />
<xs:enumeration value="auto_destroy_time" />

View File

@ -29,7 +29,7 @@ import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.data.xml.impl.TransformData;
import com.l2jmobius.gameserver.datatables.SkillData;
import com.l2jmobius.gameserver.instancemanager.CursedWeaponsManager;
import com.l2jmobius.gameserver.model.L2Party.messageType;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
@ -426,7 +426,7 @@ public class CursedWeapon implements INamable
_player.setPkKills(0);
if (_player.isInParty())
{
_player.getParty().removePartyMember(_player, messageType.Expelled);
_player.getParty().removePartyMember(_player, MessageType.EXPELLED);
}
// Disable All Skills

View File

@ -106,12 +106,12 @@ public class L2Party extends AbstractPlayerGroup
/**
* The message type send to the party members.
*/
public enum messageType
public enum MessageType
{
Expelled,
Left,
None,
Disconnected
EXPELLED,
LEFT,
NONE,
DISCONNECTED
}
/**
@ -476,9 +476,9 @@ public class L2Party extends AbstractPlayerGroup
/**
* Removes a party member using its name.
* @param name player the player to be removed from the party.
* @param type the message type {@link messageType}.
* @param type the message type {@link MessageType}.
*/
public void removePartyMember(String name, messageType type)
public void removePartyMember(String name, MessageType type)
{
removePartyMember(getPlayerByName(name), type);
}
@ -486,9 +486,9 @@ public class L2Party extends AbstractPlayerGroup
/**
* Removes a party member instance.
* @param player the player to be removed from the party.
* @param type the message type {@link messageType}.
* @param type the message type {@link MessageType}.
*/
public void removePartyMember(L2PcInstance player, messageType type)
public void removePartyMember(L2PcInstance player, MessageType type)
{
if (!getMembers().contains(player))
{
@ -496,7 +496,7 @@ public class L2Party extends AbstractPlayerGroup
}
final boolean isLeader = isLeader(player);
if (!_disbanding && ((getMembers().size() == 2) || (isLeader && !Config.ALT_LEAVE_PARTY_LEADER && (type != messageType.Disconnected))))
if (!_disbanding && ((getMembers().size() == 2) || (isLeader && !Config.ALT_LEAVE_PARTY_LEADER && (type != MessageType.DISCONNECTED))))
{
{
disbandParty();
@ -525,14 +525,14 @@ public class L2Party extends AbstractPlayerGroup
}
SystemMessage msg;
if (type == messageType.Expelled)
if (type == MessageType.EXPELLED)
{
player.sendPacket(SystemMessageId.YOU_HAVE_BEEN_EXPELLED_FROM_THE_PARTY);
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_WAS_EXPELLED_FROM_THE_PARTY);
msg.addString(player.getName());
broadcastPacket(msg);
}
else if ((type == messageType.Left) || (type == messageType.Disconnected))
else if ((type == MessageType.LEFT) || (type == MessageType.DISCONNECTED))
{
player.sendPacket(SystemMessageId.YOU_HAVE_WITHDRAWN_FROM_THE_PARTY);
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_LEFT_THE_PARTY);
@ -556,7 +556,7 @@ public class L2Party extends AbstractPlayerGroup
{
player.sendPacket(new ExCloseMPCC());
}
if (isLeader && (getMembers().size() > 1) && (Config.ALT_LEAVE_PARTY_LEADER || (type == messageType.Disconnected)))
if (isLeader && (getMembers().size() > 1) && (Config.ALT_LEAVE_PARTY_LEADER || (type == MessageType.DISCONNECTED)))
{
msg = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BECOME_THE_PARTY_LEADER);
msg.addString(getLeader().getName());
@ -613,7 +613,7 @@ public class L2Party extends AbstractPlayerGroup
{
if (member != null)
{
removePartyMember(member, messageType.None);
removePartyMember(member, MessageType.NONE);
}
}
}

View File

@ -126,7 +126,7 @@ import com.l2jmobius.gameserver.model.L2EnchantSkillLearn;
import com.l2jmobius.gameserver.model.L2ManufactureItem;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2Party.messageType;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.L2PetLevelData;
import com.l2jmobius.gameserver.model.L2PremiumItem;
import com.l2jmobius.gameserver.model.L2Radar;
@ -6649,7 +6649,7 @@ public final class L2PcInstance extends L2Playable
{
if (isInParty())
{
_party.removePartyMember(this, messageType.Disconnected);
_party.removePartyMember(this, MessageType.DISCONNECTED);
_party = null;
}
}
@ -9724,7 +9724,7 @@ public final class L2PcInstance extends L2Playable
if (getParty() != null)
{
getParty().removePartyMember(this, messageType.Expelled);
getParty().removePartyMember(this, MessageType.EXPELLED);
}
_olympiadGameId = id;
@ -13294,7 +13294,7 @@ public final class L2PcInstance extends L2Playable
final int relation1 = getRelation(activeChar);
final int relation2 = activeChar.getRelation(this);
Integer oldrelation = getKnownList().getKnownRelations().get(activeChar.getObjectId());
if ((oldrelation != null) && (oldrelation != relation1))
if ((oldrelation != null) && (oldrelation != relation1) && isVisibleFor(activeChar))
{
final RelationChanged rc = new RelationChanged();
rc.addRelation(this, relation1, isAutoAttackable(activeChar));
@ -13313,7 +13313,7 @@ public final class L2PcInstance extends L2Playable
activeChar.sendPacket(rc);
}
oldrelation = activeChar.getKnownList().getKnownRelations().get(getObjectId());
if ((oldrelation != null) && (oldrelation != relation2))
if ((oldrelation != null) && (oldrelation != relation2) && activeChar.isVisibleFor(this))
{
final RelationChanged rc = new RelationChanged();
rc.addRelation(activeChar, relation2, activeChar.isAutoAttackable(this));

View File

@ -18,6 +18,7 @@ package com.l2jmobius.gameserver.model.actor.request;
import java.util.Objects;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
/**
@ -26,12 +27,15 @@ import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
public class PartyRequest extends AbstractRequest
{
private final L2PcInstance _targetPlayer;
private final L2Party _party;
public PartyRequest(L2PcInstance activeChar, L2PcInstance targetPlayer)
public PartyRequest(L2PcInstance activeChar, L2PcInstance targetPlayer, L2Party party)
{
super(activeChar);
Objects.requireNonNull(targetPlayer);
Objects.requireNonNull(party);
_targetPlayer = targetPlayer;
_party = party;
}
public L2PcInstance getTargetPlayer()
@ -39,6 +43,11 @@ public class PartyRequest extends AbstractRequest
return _targetPlayer;
}
public L2Party getParty()
{
return _party;
}
@Override
public boolean isUsing(int objectId)
{

View File

@ -691,7 +691,12 @@ public class CharStat
*/
public final int getMpInitialConsume(Skill skill)
{
return skill == null ? 1 : (int) calcStat(Stats.MP_CONSUME, skill.getMpInitialConsume(), null, skill);
if (skill == null)
{
return 1;
}
return (int) calcStat(Stats.MP_CONSUME, skill.getMpInitialConsume(), null, skill);
}
public byte getAttackElement()

View File

@ -26,7 +26,7 @@ import com.l2jmobius.gameserver.instancemanager.AntiFeedManager;
import com.l2jmobius.gameserver.instancemanager.CastleManager;
import com.l2jmobius.gameserver.instancemanager.FortManager;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2Party.messageType;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
@ -257,7 +257,7 @@ public abstract class AbstractOlympiadGame
final L2Party party = player.getParty();
if (party != null)
{
party.removePartyMember(player, messageType.Expelled);
party.removePartyMember(player, MessageType.EXPELLED);
}
}
// Remove Agathion

View File

@ -17,6 +17,7 @@
package com.l2jmobius.gameserver.network.clientpackets;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.PartyMatchRoom;
import com.l2jmobius.gameserver.model.PartyMatchRoomList;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
@ -28,8 +29,6 @@ import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
public final class RequestAnswerJoinParty extends L2GameClientPacket
{
private static final String _C__43_REQUESTANSWERPARTY = "[C] 43 RequestAnswerJoinParty";
private int _response;
@Override
@ -48,109 +47,94 @@ public final class RequestAnswerJoinParty extends L2GameClientPacket
}
final PartyRequest request = player.getRequest(PartyRequest.class);
if ((request == null) || request.isProcessing())
if ((request == null) || request.isProcessing() || !player.removeRequest(request.getClass()))
{
return;
}
request.setProcessing(true);
final L2PcInstance requestor = request.getActiveChar();
if (requestor == null)
{
return;
}
final L2Party party = requestor.getParty();
final L2Party party = request.getParty();
final L2Party requestorParty = requestor.getParty();
if ((requestorParty != null) && (requestorParty != party))
{
return;
}
requestor.sendPacket(new JoinParty(_response));
switch (_response)
if (_response == 1)
{
case -1: // Party disable by player client config
if (party.getMemberCount() >= 7)
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_SET_TO_REFUSE_PARTY_REQUESTS_AND_CANNOT_RECEIVE_A_PARTY_REQUEST);
sm.addPcName(player);
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_IS_FULL);
player.sendPacket(sm);
requestor.sendPacket(sm);
break;
return;
}
case 0: // Party cancel by player
// Assign the party to the leader upon accept of his partner
if (requestorParty == null)
{
// requestor.sendPacket(SystemMessageId.THE_PLAYER_DECLINED_TO_JOIN_YOUR_PARTY); FIXME: Done in client?
break;
requestor.setParty(party);
}
case 1: // Party accept by player
player.joinParty(party);
if (requestor.isInPartyMatchRoom())
{
if (requestor.isInParty())
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
if (player.isInPartyMatchRoom())
{
if (requestor.getParty().getMemberCount() >= 7)
if (list.getPlayerRoomId(requestor) == list.getPlayerRoomId(player))
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_PARTY_IS_FULL);
player.sendPacket(sm);
requestor.sendPacket(sm);
return;
final PartyMatchRoom room = list.getPlayerRoom(requestor);
if (room != null)
{
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
room.getPartyMembers().forEach(packet::sendTo);
}
}
}
else
{
requestor.setParty(new L2Party(requestor, requestor.getPartyDistributionType()));
}
player.joinParty(requestor.getParty());
if (requestor.isInPartyMatchRoom() && player.isInPartyMatchRoom())
{
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
if ((list != null) && (list.getPlayerRoomId(requestor) == list.getPlayerRoomId(player)))
final PartyMatchRoom room = list.getPlayerRoom(requestor);
if (room != null)
{
final PartyMatchRoom room = list.getPlayerRoom(requestor);
if (room != null)
{
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
for (L2PcInstance member : room.getPartyMembers())
{
if (member != null)
{
member.sendPacket(packet);
}
}
}
room.addMember(player);
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
room.getPartyMembers().forEach(packet::sendTo);
player.setPartyRoom(room.getId());
player.broadcastUserInfo();
}
}
else if (requestor.isInPartyMatchRoom() && !player.isInPartyMatchRoom())
{
final PartyMatchRoomList list = PartyMatchRoomList.getInstance();
if (list != null)
{
final PartyMatchRoom room = list.getPlayerRoom(requestor);
if (room != null)
{
room.addMember(player);
final ExManagePartyRoomMember packet = new ExManagePartyRoomMember(player, room, 1);
for (L2PcInstance member : room.getPartyMembers())
{
if (member != null)
{
member.sendPacket(packet);
}
}
player.setPartyRoom(room.getId());
// player.setPartyMatching(1);
player.broadcastUserInfo();
}
}
}
break;
}
}
else if (_response == -1)
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_SET_TO_REFUSE_PARTY_REQUESTS_AND_CANNOT_RECEIVE_A_PARTY_REQUEST);
sm.addPcName(player);
requestor.sendPacket(sm);
if (party.getMemberCount() == 1)
{
party.removePartyMember(requestor, MessageType.NONE);
}
}
else
{
if (party.getMemberCount() == 1)
{
party.removePartyMember(requestor, MessageType.NONE);
}
}
if (party != null)
{
party.setPendingInvitation(false); // if party is null, there is no need of decreasing
}
party.setPendingInvitation(false);
request.setProcessing(false);
player.removeRequest(request.getClass());
}
@Override
public String getType()
{
return _C__43_REQUESTANSWERPARTY;
}
}

View File

@ -48,8 +48,8 @@ public final class RequestJoinParty extends L2GameClientPacket
@Override
protected void runImpl()
{
final L2PcInstance requestor = getClient().getActiveChar();
final L2PcInstance target = L2World.getInstance().getPlayer(_name);
L2PcInstance requestor = getClient().getActiveChar();
L2PcInstance target = L2World.getInstance().getPlayer(_name);
if (requestor == null)
{
@ -77,7 +77,7 @@ public final class RequestJoinParty extends L2GameClientPacket
if (target.isPartyBanned())
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BEEN_REPORTED_AS_AN_ILLEGAL_PROGRAM_USER_AND_CANNOT_JOIN_A_PARTY);
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BEEN_REPORTED_AS_AN_ILLEGAL_PROGRAM_USER_AND_CANNOT_JOIN_A_PARTY);
sm.addCharName(target);
requestor.sendPacket(sm);
return;
@ -124,10 +124,13 @@ public final class RequestJoinParty extends L2GameClientPacket
return;
}
if ((target.isInOlympiadMode() || requestor.isInOlympiadMode()) && ((target.isInOlympiadMode() != requestor.isInOlympiadMode()) || (target.getOlympiadGameId() != requestor.getOlympiadGameId()) || (target.getOlympiadSide() != requestor.getOlympiadSide())))
if (target.isInOlympiadMode() || requestor.isInOlympiadMode())
{
requestor.sendPacket(SystemMessageId.A_USER_CURRENTLY_PARTICIPATING_IN_THE_OLYMPIAD_CANNOT_SEND_PARTY_AND_FRIEND_INVITATIONS);
return;
if ((target.isInOlympiadMode() != requestor.isInOlympiadMode()) || (target.getOlympiadGameId() != requestor.getOlympiadGameId()) || (target.getOlympiadSide() != requestor.getOlympiadSide()))
{
requestor.sendPacket(SystemMessageId.A_USER_CURRENTLY_PARTICIPATING_IN_THE_OLYMPIAD_CANNOT_SEND_PARTY_AND_FRIEND_INVITATIONS);
return;
}
}
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BEEN_INVITED_TO_THE_PARTY);
@ -157,7 +160,7 @@ public final class RequestJoinParty extends L2GameClientPacket
{
requestor.sendPacket(SystemMessageId.ONLY_THE_LEADER_CAN_GIVE_OUT_INVITATIONS);
}
else if (party.getMemberCount() >= 7) // 7 members for GOD version
else if (party.getMemberCount() >= 9)
{
requestor.sendPacket(SystemMessageId.THE_PARTY_IS_FULL);
}
@ -167,7 +170,7 @@ public final class RequestJoinParty extends L2GameClientPacket
}
else if (!target.hasRequest(PartyRequest.class))
{
final PartyRequest request = new PartyRequest(requestor, target);
final PartyRequest request = new PartyRequest(requestor, target, party);
request.scheduleTimeout(30 * 1000);
requestor.addRequest(request);
target.addRequest(request);
@ -196,13 +199,13 @@ public final class RequestJoinParty extends L2GameClientPacket
if (!target.hasRequest(PartyRequest.class))
{
final PartyRequest request = new PartyRequest(requestor, target);
final L2Party party = new L2Party(requestor, partyDistributionType);
party.setPendingInvitation(true);
final PartyRequest request = new PartyRequest(requestor, target, party);
request.scheduleTimeout(30 * 1000);
requestor.addRequest(request);
target.addRequest(request);
target.sendPacket(new AskJoinParty(requestor.getName(), partyDistributionType));
requestor.setPartyDistributionType(partyDistributionType);
}
else
{

View File

@ -16,7 +16,7 @@
*/
package com.l2jmobius.gameserver.network.clientpackets;
import com.l2jmobius.gameserver.model.L2Party.messageType;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
/**
@ -46,7 +46,7 @@ public final class RequestOustPartyMember extends L2GameClientPacket
if (activeChar.isInParty() && activeChar.getParty().isLeader(activeChar))
{
activeChar.getParty().removePartyMember(_name, messageType.Expelled);
activeChar.getParty().removePartyMember(_name, MessageType.EXPELLED);
}
}

View File

@ -17,7 +17,7 @@
package com.l2jmobius.gameserver.network.clientpackets;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2Party.messageType;
import com.l2jmobius.gameserver.model.L2Party.MessageType;
import com.l2jmobius.gameserver.model.PartyMatchRoom;
import com.l2jmobius.gameserver.model.PartyMatchRoomList;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
@ -49,27 +49,26 @@ public final class RequestWithDrawalParty extends L2GameClientPacket
}
final L2Party party = player.getParty();
if (party == null)
if (party != null)
{
return;
party.removePartyMember(player, MessageType.LEFT);
if (player.isInPartyMatchRoom())
{
final PartyMatchRoom room = PartyMatchRoomList.getInstance().getPlayerRoom(player);
if (room != null)
{
player.sendPacket(new PartyMatchDetail(player, room));
player.sendPacket(new ExPartyRoomMember(player, room, 0));
player.sendPacket(new ExClosePartyRoom());
room.deleteMember(player);
}
player.setPartyRoom(0);
// player.setPartyMatching(0);
player.broadcastUserInfo();
}
}
party.removePartyMember(player, messageType.Left);
if (!player.isInPartyMatchRoom())
{
return;
}
final PartyMatchRoom _room = PartyMatchRoomList.getInstance().getPlayerRoom(player);
if (_room != null)
{
player.sendPacket(new PartyMatchDetail(player, _room));
player.sendPacket(new ExPartyRoomMember(player, _room, 0));
player.sendPacket(new ExClosePartyRoom());
_room.deleteMember(player);
}
player.setPartyRoom(0);
player.broadcastUserInfo();
}
@Override