MagicSkill packet related cleanups.

This commit is contained in:
MobiusDevelopment
2022-12-24 22:03:24 +00:00
parent 4632ecc3a8
commit 0ab71457ca
161 changed files with 1316 additions and 1658 deletions
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -18,11 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -18,11 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -18,11 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -18,11 +18,11 @@ package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -746,7 +746,7 @@ public class LastImperialTomb extends AbstractInstance
else if (npc.getId() == SCARLET2) else if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4098,7 +4098,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -737,7 +737,7 @@ public class LastImperialTomb extends AbstractInstance
if (npc.getId() == SCARLET2) if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4098,7 +4098,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -73,7 +73,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -766,7 +766,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -737,7 +737,7 @@ public class LastImperialTomb extends AbstractInstance
if (npc.getId() == SCARLET2) if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4098,7 +4098,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -75,7 +75,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround; import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -797,7 +797,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,10 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@@ -42,11 +38,11 @@ public class MagicSkillUse extends ServerPacket
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final boolean _isGroundTargetSkill; private final boolean _isGroundTargetSkill;
private final List<Location> _groundLocations; private final Location _groundLocation;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill)
{ {
super(84); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -57,8 +53,7 @@ public class MagicSkillUse extends ServerPacket
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
_isGroundTargetSkill = isGroundTargetSkill; _isGroundTargetSkill = isGroundTargetSkill;
final Location skillWorldPos = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
@@ -91,20 +86,24 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_isGroundTargetSkill ? 0x10000 : 0); writeShort(_isGroundTargetSkill ? 65535 : 0);
writeShort(_groundLocations.size()); if (_groundLocation == null)
for (Location location : _groundLocations)
{ {
writeInt(location.getX()); writeShort(0);
writeInt(location.getY()); }
writeInt(location.getZ()); else
{
writeShort(1);
writeInt(_groundLocation.getX());
writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
writeInt(_target.getZ()); writeInt(_target.getZ());
writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used
writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills. writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills.
if (_groundLocations.isEmpty()) if (_groundLocation == null)
{ {
writeInt(-1); // 306 writeInt(-1); // 306
} }
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -737,7 +737,7 @@ public class LastImperialTomb extends AbstractInstance
if (npc.getId() == SCARLET2) if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4108,7 +4108,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -75,7 +75,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround; import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -797,7 +797,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,10 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@@ -42,11 +38,11 @@ public class MagicSkillUse extends ServerPacket
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final boolean _isGroundTargetSkill; private final boolean _isGroundTargetSkill;
private final List<Location> _groundLocations; private final Location _groundLocation;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill)
{ {
super(84); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -57,8 +53,7 @@ public class MagicSkillUse extends ServerPacket
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
_isGroundTargetSkill = isGroundTargetSkill; _isGroundTargetSkill = isGroundTargetSkill;
final Location skillWorldPos = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
@@ -91,20 +86,24 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_isGroundTargetSkill ? 0x10000 : 0); writeShort(_isGroundTargetSkill ? 65535 : 0);
writeShort(_groundLocations.size()); if (_groundLocation == null)
for (Location location : _groundLocations)
{ {
writeInt(location.getX()); writeShort(0);
writeInt(location.getY()); }
writeInt(location.getZ()); else
{
writeShort(1);
writeInt(_groundLocation.getX());
writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
writeInt(_target.getZ()); writeInt(_target.getZ());
writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used
writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills. writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills.
if (_groundLocations.isEmpty()) if (_groundLocation == null)
{ {
writeInt(-1); // 306 writeInt(-1); // 306
} }
@@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.NpcStringId; import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.ServerPacket; import org.l2jmobius.gameserver.network.serverpackets.ServerPacket;
@@ -737,7 +737,7 @@ public class LastImperialTomb extends AbstractInstance
if (npc.getId() == SCARLET2) if (npc.getId() == SCARLET2)
{ {
final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class); final Npc frintezza = world.getParameters().getObject("frintezza", Npc.class);
broadcastPacket(world, new MagicSkillCanceld(frintezza.getObjectId())); broadcastPacket(world, new MagicSkillCanceled(frintezza.getObjectId()));
startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false); startQuestTimer("FINISH_CAMERA_1", 500, npc, killer, false);
world.finishInstance(); world.finishInstance();
} }
@@ -4108,7 +4108,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -75,7 +75,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround; import org.l2jmobius.gameserver.network.serverpackets.ExMagicSkillUseGround;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -797,7 +797,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,10 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@@ -42,11 +38,11 @@ public class MagicSkillUse extends ServerPacket
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final boolean _isGroundTargetSkill; private final boolean _isGroundTargetSkill;
private final List<Location> _groundLocations; private final Location _groundLocation;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType, boolean isGroundTargetSkill)
{ {
super(84); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -57,8 +53,7 @@ public class MagicSkillUse extends ServerPacket
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
_isGroundTargetSkill = isGroundTargetSkill; _isGroundTargetSkill = isGroundTargetSkill;
final Location skillWorldPos = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
@@ -91,20 +86,24 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_isGroundTargetSkill ? 0x10000 : 0); writeShort(_isGroundTargetSkill ? 65535 : 0);
writeShort(_groundLocations.size()); if (_groundLocation == null)
for (Location location : _groundLocations)
{ {
writeInt(location.getX()); writeShort(0);
writeInt(location.getY()); }
writeInt(location.getZ()); else
{
writeShort(1);
writeInt(_groundLocation.getX());
writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
writeInt(_target.getZ()); writeInt(_target.getZ());
writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used writeInt(_actionId >= 0); // 1 when ID from RequestActionUse is used
writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills. writeInt(_actionId >= 0 ? _actionId : 0); // ID from RequestActionUse. Used to set cooldown on summon skills.
if (_groundLocations.isEmpty()) if (_groundLocation == null)
{ {
writeInt(-1); // 306 writeInt(-1); // 306
} }
@@ -61,7 +61,7 @@ import org.l2jmobius.gameserver.network.serverpackets.DeleteObject;
import org.l2jmobius.gameserver.network.serverpackets.GetItem; import org.l2jmobius.gameserver.network.serverpackets.GetItem;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUser; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUser;
import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation; import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation;
@@ -1793,7 +1793,7 @@ public class Player extends Creature
{ {
setCurrentState(CreatureState.IDLE); setCurrentState(CreatureState.IDLE);
enableAllSkills(); enableAllSkills();
final MagicSkillCanceld msc = new MagicSkillCanceld(getObjectId()); final MagicSkillCanceled msc = new MagicSkillCanceled(getObjectId());
sendPacket(msc); sendPacket(msc);
broadcastPacket(msc); broadcastPacket(msc);
} }
@@ -17,11 +17,11 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
public class MagicSkillCanceld extends ServerBasePacket public class MagicSkillCanceled extends ServerBasePacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -105,7 +105,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType;
import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType; import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType;
import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons; import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation; import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation;
@@ -4853,7 +4853,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
*/ */
public void abortCast() public void abortCast()
{ {
@@ -4861,7 +4861,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
* @param force the force * @param force the force
*/ */
public void abortCast(boolean force) public void abortCast(boolean force)
@@ -4894,7 +4894,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
getAI().notifyEvent(CtrlEvent.EVT_FINISH_CASTING); // setting back previous intention getAI().notifyEvent(CtrlEvent.EVT_FINISH_CASTING); // setting back previous intention
} }
broadcastPacket(new MagicSkillCanceld(getObjectId())); // broadcast packet to stop animations client-side broadcastPacket(new MagicSkillCanceled(getObjectId())); // broadcast packet to stop animations client-side
sendPacket(ActionFailed.STATIC_PACKET); // send an "action failed" packet to the caster sendPacket(ActionFailed.STATIC_PACKET); // send an "action failed" packet to the caster
} }
} }
@@ -6118,7 +6118,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
// damage can only cancel magical skills // damage can only cancel magical skills
if (isCastingNow() && canAbortCast() && (_lastSkillCast != null) && _lastSkillCast.isMagic()) if (isCastingNow() && canAbortCast() && (_lastSkillCast != null) && _lastSkillCast.isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
abortCast(); abortCast();
if (this instanceof Player) if (this instanceof Player)
@@ -187,7 +187,7 @@ import org.l2jmobius.gameserver.network.serverpackets.HennaInfo;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected; import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
@@ -6962,7 +6962,7 @@ public class Player extends Playable
* <b><u>Actions</u>:</b><br> * <b><u>Actions</u>:</b><br>
* <li>Set the Intention of the AI to AI_INTENTION_IDLE</li> * <li>Set the Intention of the AI to AI_INTENTION_IDLE</li>
* <li>Enable all skills (set _allSkillsDisabled to False)</li> * <li>Enable all skills (set _allSkillsDisabled to False)</li>
* <li>Send a Server->Client Packet MagicSkillCanceld to the Player and all Player in the _KnownPlayers of the Creature (broadcast)</li> * <li>Send a Server->Client Packet MagicSkillCanceled to the Player and all Player in the _KnownPlayers of the Creature (broadcast)</li>
*/ */
public void cancelCastMagic() public void cancelCastMagic()
{ {
@@ -6972,10 +6972,10 @@ public class Player extends Playable
// Enable all skills (set _allSkillsDisabled to False) // Enable all skills (set _allSkillsDisabled to False)
enableAllSkills(); enableAllSkills();
// Send a Server->Client Packet MagicSkillCanceld to the Player and all Player in the _KnownPlayers of the Creature (broadcast) // Send a Server->Client Packet MagicSkillCanceled to the Player and all Player in the _KnownPlayers of the Creature (broadcast)
// Broadcast the packet to self and known players. // Broadcast the packet to self and known players.
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillCanceld(getObjectId()), 810000/* 900 */); Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillCanceled(getObjectId()), 810000/* 900 */);
} }
/** /**
@@ -21,11 +21,11 @@ import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $
*/ */
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -41,7 +41,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay;
import org.l2jmobius.gameserver.network.serverpackets.Earthquake; import org.l2jmobius.gameserver.network.serverpackets.Earthquake;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound; import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
@@ -1217,7 +1217,7 @@ public class Frintezza extends Quest
cancelQuestTimer("songs_effect", npc, null); cancelQuestTimer("songs_effect", npc, null);
if (_frintezza != null) if (_frintezza != null)
{ {
_zone.broadcastPacket(new MagicSkillCanceld(_frintezza.getObjectId())); _zone.broadcastPacket(new MagicSkillCanceled(_frintezza.getObjectId()));
} }
break; break;
} }
@@ -107,7 +107,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ChangeMoveType;
import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType; import org.l2jmobius.gameserver.network.serverpackets.ChangeWaitType;
import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadSpelledInfo;
import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons; import org.l2jmobius.gameserver.network.serverpackets.MagicEffectIcons;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation; import org.l2jmobius.gameserver.network.serverpackets.MoveToLocation;
@@ -4899,7 +4899,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
*/ */
public void abortCast() public void abortCast()
{ {
@@ -4907,7 +4907,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
* @param force the force * @param force the force
*/ */
public void abortCast(boolean force) public void abortCast(boolean force)
@@ -4940,7 +4940,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
getAI().notifyEvent(CtrlEvent.EVT_FINISH_CASTING); // setting back previous intention getAI().notifyEvent(CtrlEvent.EVT_FINISH_CASTING); // setting back previous intention
} }
broadcastPacket(new MagicSkillCanceld(getObjectId())); // broadcast packet to stop animations client-side broadcastPacket(new MagicSkillCanceled(getObjectId())); // broadcast packet to stop animations client-side
sendPacket(ActionFailed.STATIC_PACKET); // send an "action failed" packet to the caster sendPacket(ActionFailed.STATIC_PACKET); // send an "action failed" packet to the caster
} }
} }
@@ -6165,7 +6165,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder
// damage can only cancel magical skills // damage can only cancel magical skills
if (isCastingNow() && canAbortCast() && (_lastSkillCast != null) && _lastSkillCast.isMagic()) if (isCastingNow() && canAbortCast() && (_lastSkillCast != null) && _lastSkillCast.isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
abortCast(); abortCast();
if (this instanceof Player) if (this instanceof Player)
@@ -193,7 +193,7 @@ import org.l2jmobius.gameserver.network.serverpackets.HennaInfo;
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld; import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected; import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage; import org.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import org.l2jmobius.gameserver.network.serverpackets.NpcInfo; import org.l2jmobius.gameserver.network.serverpackets.NpcInfo;
@@ -7113,7 +7113,7 @@ public class Player extends Playable
* <b><u>Actions</u>:</b><br> * <b><u>Actions</u>:</b><br>
* <li>Set the Intention of the AI to AI_INTENTION_IDLE</li> * <li>Set the Intention of the AI to AI_INTENTION_IDLE</li>
* <li>Enable all skills (set _allSkillsDisabled to False)</li> * <li>Enable all skills (set _allSkillsDisabled to False)</li>
* <li>Send a Server->Client Packet MagicSkillCanceld to the Player and all Player in the _KnownPlayers of the Creature (broadcast)</li> * <li>Send a Server->Client Packet MagicSkillCanceled to the Player and all Player in the _KnownPlayers of the Creature (broadcast)</li>
*/ */
public void cancelCastMagic() public void cancelCastMagic()
{ {
@@ -7123,10 +7123,10 @@ public class Player extends Playable
// Enable all skills (set _allSkillsDisabled to False) // Enable all skills (set _allSkillsDisabled to False)
enableAllSkills(); enableAllSkills();
// Send a Server->Client Packet MagicSkillCanceld to the Player and all Player in the _KnownPlayers of the Creature (broadcast) // Send a Server->Client Packet MagicSkillCanceled to the Player and all Player in the _KnownPlayers of the Creature (broadcast)
// Broadcast the packet to self and known players. // Broadcast the packet to self and known players.
Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillCanceld(getObjectId()), 810000/* 900 */); Broadcast.toSelfAndKnownPlayersInRadius(this, new MagicSkillCanceled(getObjectId()), 810000/* 900 */);
} }
/** /**
@@ -21,11 +21,11 @@ import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $ * @version $Revision: 1.2.2.1.2.3 $ $Date: 2005/03/27 15:29:57 $
*/ */
public class MagicSkillCanceld extends ServerPacket public class MagicSkillCanceled extends ServerPacket
{ {
private final int _objectId; private final int _objectId;
public MagicSkillCanceld(int objectId) public MagicSkillCanceled(int objectId)
{ {
_objectId = objectId; _objectId = objectId;
} }
@@ -16,18 +16,12 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -37,24 +31,28 @@ public class MagicSkillUse extends ServerPacket
private final int _reuseDelay; private final int _reuseDelay;
private final Creature _creature; private final Creature _creature;
private final Creature _target; private final Creature _target;
private final List<Integer> _unknown = Collections.emptyList(); private final boolean _critical;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay, boolean critical)
{ {
super(55); super(57);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
_skillLevel = skillLevel; _skillLevel = skillLevel;
_hitTime = hitTime; _hitTime = hitTime;
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_groundLocations = creature.isPlayer() && (creature.getActingPlayer().getCurrentSkillWorldPosition() != null) ? Arrays.asList(creature.getActingPlayer().getCurrentSkillWorldPosition()) : Collections.<Location> emptyList(); _critical = critical;
}
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay)
{
this(creature, target, skillId, skillLevel, hitTime, reuseDelay, false);
} }
public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay)
{ {
this(creature, creature, skillId, skillLevel, hitTime, reuseDelay); this(creature, creature, skillId, skillLevel, hitTime, reuseDelay, false);
} }
@Override @Override
@@ -70,17 +68,14 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! if (_critical)
for (int unknown : _unknown)
{ {
writeShort(unknown); writeInt(1);
writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeInt(0);
writeInt(target.getY());
writeInt(target.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
+1
View File
@@ -103,6 +103,7 @@ What is done
-Adjusted all shop merchants. -Adjusted all shop merchants.
-Removed all non existing skill enchants. -Removed all non existing skill enchants.
-Fixed skill enchanting. -Fixed skill enchanting.
-Adjusted MagicSkillUse packet.
TODO: Important (project unusable due to the following) TODO: Important (project unusable due to the following)
-Adjust all skills according to Interlude description. -Adjust all skills according to Interlude description.
@@ -4032,7 +4032,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
*/ */
public void abortCast() public void abortCast()
{ {
@@ -5096,7 +5096,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
// damage can only cancel magical & static skills // damage can only cancel magical & static skills
if (_isCastingNow && canAbortCast() && (_lastSkillCast != null) && (_lastSkillCast.isMagic() || _lastSkillCast.isStatic())) if (_isCastingNow && canAbortCast() && (_lastSkillCast != null) && (_lastSkillCast.isMagic() || _lastSkillCast.isStatic()))
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
abortCast(); abortCast();
if (isPlayer()) if (isPlayer())
@@ -16,18 +16,13 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -37,19 +32,18 @@ public class MagicSkillUse extends ServerPacket
private final int _reuseDelay; private final int _reuseDelay;
private final Creature _creature; private final Creature _creature;
private final Creature _target; private final Creature _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay)
{ {
super(55); super(67);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
_skillLevel = skillLevel; _skillLevel = skillLevel;
_hitTime = hitTime; _hitTime = hitTime;
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_groundLocations = creature.isPlayer() && (creature.getActingPlayer().getCurrentSkillWorldPosition() != null) ? Arrays.asList(creature.getActingPlayer().getCurrentSkillWorldPosition()) : Collections.<Location> emptyList(); _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
} }
public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -70,17 +64,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -4034,7 +4034,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
} }
/** /**
* Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. * Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
*/ */
public void abortCast() public void abortCast()
{ {
@@ -5098,7 +5098,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
// damage can only cancel magical & static skills // damage can only cancel magical & static skills
if (_isCastingNow && canAbortCast() && (_lastSkillCast != null) && (_lastSkillCast.isMagic() || _lastSkillCast.isStatic())) if (_isCastingNow && canAbortCast() && (_lastSkillCast != null) && (_lastSkillCast.isMagic() || _lastSkillCast.isStatic()))
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
abortCast(); abortCast();
if (isPlayer()) if (isPlayer())
@@ -16,18 +16,13 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -37,19 +32,18 @@ public class MagicSkillUse extends ServerPacket
private final int _reuseDelay; private final int _reuseDelay;
private final Creature _creature; private final Creature _creature;
private final Creature _target; private final Creature _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay)
{ {
super(55); super(67);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
_skillLevel = skillLevel; _skillLevel = skillLevel;
_hitTime = hitTime; _hitTime = hitTime;
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_groundLocations = creature.isPlayer() && (creature.getActingPlayer().getCurrentSkillWorldPosition() != null) ? Arrays.asList(creature.getActingPlayer().getCurrentSkillWorldPosition()) : Collections.<Location> emptyList(); _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
} }
public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -70,17 +64,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }
@@ -1,36 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceld extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceld(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -0,0 +1,36 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.gameserver.network.ServerPackets;
public class MagicSkillCanceled extends ServerPacket
{
private final int _objectId;
public MagicSkillCanceled(int objectId)
{
_objectId = objectId;
}
@Override
public void write()
{
ServerPackets.MAGIC_SKILL_CANCELED.writeId(this);
writeInt(_objectId);
}
}
@@ -16,21 +16,15 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.interfaces.IPositionable;
import org.l2jmobius.gameserver.model.skill.SkillCastingType; import org.l2jmobius.gameserver.model.skill.SkillCastingType;
import org.l2jmobius.gameserver.network.ServerPackets; import org.l2jmobius.gameserver.network.ServerPackets;
/** /**
* MagicSkillUse server packet implementation. * MagicSkillUse server packet implementation.
* @author UnAfraid, NosBit * @author UnAfraid, NosBit, Mobius
*/ */
public class MagicSkillUse extends ServerPacket public class MagicSkillUse extends ServerPacket
{ {
@@ -43,12 +37,11 @@ public class MagicSkillUse extends ServerPacket
private final SkillCastingType _castingType; // Defines which client bar is going to use. private final SkillCastingType _castingType; // Defines which client bar is going to use.
private final Creature _creature; private final Creature _creature;
private final WorldObject _target; private final WorldObject _target;
private final List<Integer> _unknown = Collections.emptyList(); private final Location _groundLocation;
private final List<Location> _groundLocations;
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay, int reuseGroup, int actionId, SkillCastingType castingType)
{ {
super(75); super(83);
_creature = creature; _creature = creature;
_target = target; _target = target;
_skillId = skillId; _skillId = skillId;
@@ -58,16 +51,7 @@ public class MagicSkillUse extends ServerPacket
_reuseDelay = reuseDelay; _reuseDelay = reuseDelay;
_actionId = actionId; _actionId = actionId;
_castingType = castingType; _castingType = castingType;
Location skillWorldPos = null; _groundLocation = creature.isPlayer() ? creature.getActingPlayer().getCurrentSkillWorldPosition() : null;
if (creature.isPlayer())
{
final Player player = creature.getActingPlayer();
if (player.getCurrentSkillWorldPosition() != null)
{
skillWorldPos = player.getCurrentSkillWorldPosition();
}
}
_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.emptyList();
} }
public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay) public MagicSkillUse(Creature creature, WorldObject target, int skillId, int skillLevel, int hitTime, int reuseDelay)
@@ -95,17 +79,17 @@ public class MagicSkillUse extends ServerPacket
writeInt(_creature.getX()); writeInt(_creature.getX());
writeInt(_creature.getY()); writeInt(_creature.getY());
writeInt(_creature.getZ()); writeInt(_creature.getZ());
writeShort(_unknown.size()); // TODO: Implement me! writeShort(0); // isGroundTargetSkill ? 65535 : 0
for (int unknown : _unknown) if (_groundLocation == null)
{ {
writeShort(unknown); writeShort(0);
} }
writeShort(_groundLocations.size()); else
for (IPositionable target : _groundLocations)
{ {
writeInt(target.getX()); writeShort(1);
writeInt(target.getY()); writeInt(_groundLocation.getX());
writeInt(target.getZ()); writeInt(_groundLocation.getY());
writeInt(_groundLocation.getZ());
} }
writeInt(_target.getX()); writeInt(_target.getX());
writeInt(_target.getY()); writeInt(_target.getY());
@@ -4099,7 +4099,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType); final SkillCaster skillCaster = getSkillCaster(SkillCaster::isAnyNormalType);
if ((skillCaster != null) && skillCaster.getSkill().isMagic()) if ((skillCaster != null) && skillCaster.getSkill().isMagic())
{ {
// Abort the cast of the Creature and send Server->Client MagicSkillCanceld/ActionFailed packet. // Abort the cast of the Creature and send Server->Client MagicSkillCanceled/ActionFailed packet.
skillCaster.stopCasting(true); skillCaster.stopCasting(true);
if (isPlayer()) if (isPlayer())
@@ -72,7 +72,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ExRotation; import org.l2jmobius.gameserver.network.serverpackets.ExRotation;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation; import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceld; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillCanceled;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse; import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn; import org.l2jmobius.gameserver.network.serverpackets.MoveToPawn;
@@ -760,7 +760,7 @@ public class SkillCaster implements Runnable
// If aborted, broadcast casting aborted. // If aborted, broadcast casting aborted.
if (aborted) if (aborted)
{ {
caster.broadcastPacket(new MagicSkillCanceld(caster.getObjectId())); // broadcast packet to stop animations client-side caster.broadcastPacket(new MagicSkillCanceled(caster.getObjectId())); // broadcast packet to stop animations client-side
caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster caster.sendPacket(ActionFailed.get(_castingType)); // send an "action failed" packet to the caster
} }

Some files were not shown because too many files have changed in this diff Show More