Servitor improvements.

This commit is contained in:
MobiusDev
2017-09-07 01:20:26 +00:00
parent eb4f43f5c2
commit 9baee86367
24 changed files with 1710 additions and 1666 deletions

View File

@@ -62,7 +62,7 @@ public enum NpcInfoType implements IUpdateTypeComponent
// 4
TITLE_NPCSTRINGID(0x20, 4),
PVP_FLAG(0x21, 1),
NAME_COLOR(0x22, 4),
REPUTATION(0x22, 4),
CLAN(0x23, (5 * 4)),
ABNORMALS(0x24, 0),
VISUAL_STATE(0x25, 1);

View File

@@ -191,20 +191,19 @@ public abstract class L2Summon extends L2Playable
{
L2World.getInstance().forEachVisibleObject(this, L2PcInstance.class, player ->
{
if (player == getOwner())
{
player.sendPacket(new PetInfo(this, 1));
return;
}
if (isPet())
{
player.sendPacket(new ExPetInfo(this, player, 1));
}
else
{
if (player == getOwner())
{
player.sendPacket(new PetInfo(this, 1));
}
else
{
player.sendPacket(new SummonInfo(this, player, 1));
}
player.sendPacket(new SummonInfo(this, player, 1));
}
});
}
@@ -364,6 +363,8 @@ public abstract class L2Summon extends L2Playable
public void deleteMe(L2PcInstance owner)
{
super.deleteMe();
if (owner != null)
{
owner.sendPacket(new PetDelete(getSummonType(), getObjectId()));
@@ -372,16 +373,7 @@ public abstract class L2Summon extends L2Playable
{
party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this));
}
}
// pet will be deleted along with all his items
if (getInventory() != null)
{
getInventory().destroyAllItems("pet deleted", getOwner(), this);
}
decayMe();
if (owner != null)
{
if (isPet())
{
owner.setPet(null);
@@ -391,7 +383,13 @@ public abstract class L2Summon extends L2Playable
owner.removeServitor(getObjectId());
}
}
super.deleteMe();
// pet will be deleted along with all his items
if (getInventory() != null)
{
getInventory().destroyAllItems("pet deleted", getOwner(), this);
}
decayMe();
}
public void unSummon(L2PcInstance owner)
@@ -842,7 +840,7 @@ public abstract class L2Summon extends L2Playable
// Check if the L2PcInstance is the owner of the Pet
if (activeChar == getOwner())
{
activeChar.sendPacket(new PetInfo(this, 1));
activeChar.sendPacket(new PetInfo(this, isDead() ? 0 : 1));
// The PetInfo packet wipes the PartySpelled (list of active spells' icons). Re-add them
updateEffectIcons(true);
if (isPet())

View File

@@ -147,6 +147,11 @@ public class ExPetInfo extends AbstractMaskPacket<NpcInfoType>
addComponentType(NpcInfoType.SUMMONED);
}
if (summon.getReputation() != 0)
{
addComponentType(NpcInfoType.REPUTATION);
}
if (summon.getOwner().getClan() != null)
{
_clanId = summon.getOwner().getAppearance().getVisibleClanId();
@@ -366,9 +371,9 @@ public class ExPetInfo extends AbstractMaskPacket<NpcInfoType>
{
packet.writeC(_summon.getPvpFlag()); // PVP flag
}
if (containsMask(NpcInfoType.NAME_COLOR))
if (containsMask(NpcInfoType.REPUTATION))
{
packet.writeD(0x00); // Name color
packet.writeD(_summon.getReputation()); // Name color
}
if (containsMask(NpcInfoType.CLAN))
{

View File

@@ -400,7 +400,7 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
{
packet.writeC(_npc.getPvpFlag()); // PVP flag
}
if (containsMask(NpcInfoType.NAME_COLOR))
if (containsMask(NpcInfoType.REPUTATION))
{
packet.writeD(0x00); // Name color
}

View File

@@ -65,8 +65,11 @@ public class PetInfo implements IClientOutgoingPacket
_maxFed = sum.getLifeTime();
}
// _statusMask |= 0x01; // Auto attackable status
// _statusMask |= 0x02; // can be chatted with
if (summon.isBetrayed())
{
_statusMask |= 0x01; // Auto attackable status
}
_statusMask |= 0x02; // can be chatted with
if (summon.isRunning())
{

View File

@@ -147,6 +147,11 @@ public class SummonInfo extends AbstractMaskPacket<NpcInfoType>
addComponentType(NpcInfoType.SUMMONED);
}
if (summon.getReputation() != 0)
{
addComponentType(NpcInfoType.REPUTATION);
}
if (summon.getOwner().getClan() != null)
{
_clanId = summon.getOwner().getAppearance().getVisibleClanId();
@@ -366,9 +371,9 @@ public class SummonInfo extends AbstractMaskPacket<NpcInfoType>
{
packet.writeC(_summon.getPvpFlag()); // PVP flag
}
if (containsMask(NpcInfoType.NAME_COLOR))
if (containsMask(NpcInfoType.REPUTATION))
{
packet.writeD(0x00); // Name color
packet.writeD(_summon.getReputation()); // Name color
}
if (containsMask(NpcInfoType.CLAN))
{