package l2p.gameserver.network.s2c;
import l2p.gameserver.enums.NpcInfoSpeed;
import l2p.gameserver.model.Creature;
import l2p.gameserver.network.components.Opcode;
public class ExNpcInfoSpeed extends AbstractMaskPacket<NpcInfoSpeed>
{
private int _objectId;
private float _moveSpeedMul, _attackSpeedMul;
private final byte[] _flags = new byte[1];
public ExNpcInfoSpeed(Creature cha, NpcInfoSpeed... flags)
{
_objectId = cha.getObjectId();
_moveSpeedMul = (float) cha.getMoveSpeedMultiplier();
_attackSpeedMul = (float) cha.getAttackSpeedMultiplier();
if (flags != null && flags.length > 0)
addComponentType(flags);
else
addComponentType(NpcInfoSpeed.values());
}
@Override
protected byte[] getMasks()
{
return _flags;
}
@Override
protected void onNewMaskAdded(NpcInfoSpeed component)
{}
@Override
protected void writeImpl()
{
writeEx(Opcode.ExNpcInfoSpeed);
writeD(_objectId);
writeH(NpcInfoSpeed.values().length);
writeB(_flags);
if (containsMask(NpcInfoSpeed.MOVE_SPEED_MUL))
writeN(_moveSpeedMul);
if (containsMask(NpcInfoSpeed.ATTACK_SPEED_MUL))
writeN(_attackSpeedMul);
if (containsMask(NpcInfoSpeed.UNK_3)) // casting speed?
writeH(0);
if (containsMask(NpcInfoSpeed.UNK_4)) // attack speed?
writeH(0);
}
}
package l2p.gameserver.enums;
import l2p.gameserver.model.IUpdateTypeComponent;
public enum NpcInfoSpeed implements IUpdateTypeComponent
{
MOVE_SPEED_MUL,
ATTACK_SPEED_MUL,
UNK_3,
UNK_4;
@Override
public int getMask()
{
return ordinal();
}
}