MagicSkillUse cleanup and fixes.
This commit is contained in:
@@ -368,8 +368,8 @@ public class RecipeController
|
||||
// divided by RATE_CONSUMABLES_COST to remove craft time increase on higher consumables rates
|
||||
_delay = (int) ((Config.ALT_GAME_CREATION_SPEED * _player.getMReuseRate(_skill) * GameTimeController.TICKS_PER_SECOND) / Config.RATE_CONSUMABLE_COST) * GameTimeController.MILLIS_IN_TICK;
|
||||
|
||||
// FIXME: please fix this packet to show crafting animation (somebody)
|
||||
_player.broadcastPacket(new MagicSkillUse(_player, _skillId, _skillLevel, _delay, 0));
|
||||
// Show crafting animation.
|
||||
_player.broadcastPacket(new MagicSkillUse(_player, _player, _skillId, _skillLevel, _delay, 0));
|
||||
_player.sendPacket(new SetupGauge(0, _delay));
|
||||
ThreadPool.schedule(this, 100 + _delay);
|
||||
}
|
||||
|
@@ -509,7 +509,7 @@ public class AdminMobGroup implements IAdminCommandHandler
|
||||
|
||||
private void doAnimation(PlayerInstance activeChar)
|
||||
{
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, 1008, 1, 4000, 0), 2250000/* 1500 */);
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, 1008, 1, 4000, 0), 2250000 /* 1500 */);
|
||||
activeChar.sendPacket(new SetupGauge(0, 4000));
|
||||
}
|
||||
|
||||
|
@@ -98,7 +98,7 @@ public class AdminPolymorph implements IAdminCommandHandler
|
||||
if (obj instanceof Creature)
|
||||
{
|
||||
final Creature creature = (Creature) obj;
|
||||
creature.broadcastPacket(new MagicSkillUse(creature, 1008, 1, 4000, 0));
|
||||
creature.broadcastPacket(new MagicSkillUse(creature, creature, 1008, 1, 4000, 0));
|
||||
creature.sendPacket(new SetupGauge(0, 4000));
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,6 @@
|
||||
package org.l2jmobius.gameserver.handler.itemhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.IItemHandler;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Playable;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.items.Item;
|
||||
@@ -92,12 +91,7 @@ public class FishShots implements IItemHandler
|
||||
|
||||
weaponInst.setChargedFishshot(true);
|
||||
player.destroyItemWithoutTrace("Consume", item.getObjectId(), 1, null, false);
|
||||
final WorldObject oldTarget = player.getTarget();
|
||||
player.setTarget(player);
|
||||
|
||||
final MagicSkillUse msu = new MagicSkillUse(player, SKILL_IDS[grade], 1, 0, 0);
|
||||
Broadcast.toSelfAndKnownPlayers(player, msu);
|
||||
player.setTarget(oldTarget);
|
||||
Broadcast.toSelfAndKnownPlayers(player, new MagicSkillUse(player, player, SKILL_IDS[grade], 1, 0, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -27,7 +27,6 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.FortManager;
|
||||
import org.l2jmobius.gameserver.model.Skill;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Playable;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.entity.event.CTF;
|
||||
@@ -166,8 +165,6 @@ public class ScrollOfEscape implements IItemHandler
|
||||
return;
|
||||
}
|
||||
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
// SoE Animation section
|
||||
// Check if this is a blessed scroll, if it is then shorten the cast time.
|
||||
final int itemId = item.getItemId();
|
||||
final SystemMessage sm3 = new SystemMessage(SystemMessageId.USE_S1);
|
||||
@@ -180,26 +177,26 @@ public class ScrollOfEscape implements IItemHandler
|
||||
return;
|
||||
}
|
||||
|
||||
player.disableAllSkills();
|
||||
|
||||
// fix soe
|
||||
final WorldObject oldtarget = player.getTarget();
|
||||
player.setTarget(player);
|
||||
|
||||
final Skill skill = SkillTable.getInstance().getInfo(escapeSkill, 1);
|
||||
player.broadcastPacket(new MagicSkillUse(player, escapeSkill, 1, skill.getHitTime(), 0));
|
||||
player.setTarget(oldtarget);
|
||||
player.sendPacket(new SetupGauge(0, skill.getHitTime()));
|
||||
// End SoE Animation section
|
||||
player.setTarget(null);
|
||||
|
||||
// Send consume message.
|
||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_HAS_DISAPPEARED);
|
||||
sm.addItemName(itemId);
|
||||
player.sendPacket(sm);
|
||||
|
||||
final EscapeFinalizer ef = new EscapeFinalizer(player, itemId);
|
||||
// continue execution later
|
||||
player.setSkillCast(ThreadPool.schedule(ef, skill.getHitTime()));
|
||||
// Abort combat.
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
player.abortAttack();
|
||||
player.abortCast(true);
|
||||
player.disableAllSkills();
|
||||
|
||||
// Cast escape animation.
|
||||
final Skill skill = SkillTable.getInstance().getInfo(escapeSkill, 1);
|
||||
player.broadcastPacket(new MagicSkillUse(player, player, escapeSkill, 1, skill.getHitTime(), 0));
|
||||
player.sendPacket(new SetupGauge(0, skill.getHitTime()));
|
||||
player.setTarget(null);
|
||||
|
||||
// Continue execution later.
|
||||
final EscapeFinalizer escapeFinalizer = new EscapeFinalizer(player, itemId);
|
||||
player.setSkillCast(ThreadPool.schedule(escapeFinalizer, skill.getHitTime()));
|
||||
player.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (skill.getHitTime() / GameTimeController.MILLIS_IN_TICK));
|
||||
}
|
||||
|
||||
@@ -223,7 +220,6 @@ public class ScrollOfEscape implements IItemHandler
|
||||
}
|
||||
|
||||
_player.enableAllSkills();
|
||||
|
||||
_player.setIn7sDungeon(false);
|
||||
|
||||
try
|
||||
|
@@ -82,7 +82,7 @@ public class Escape implements IUserCommandHandler
|
||||
// Check to see if the current player is in Grandboss zone.
|
||||
if ((GrandBossManager.getInstance().getZone(player) != null) && !player.isGM())
|
||||
{
|
||||
player.sendMessage("You may not use an escape command in Grand boss zone.");
|
||||
player.sendMessage("You may not use an escape command in a grand boss zone.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -96,14 +96,14 @@ public class Escape implements IUserCommandHandler
|
||||
// Check to see if the current player is in fun event.
|
||||
if (player.isInFunEvent())
|
||||
{
|
||||
player.sendMessage("You may not escape from an Event.");
|
||||
player.sendMessage("You may not escape from an event.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check to see if the current player is in Observer Mode.
|
||||
if (player.inObserverMode())
|
||||
{
|
||||
player.sendMessage("You may not escape during Observer mode.");
|
||||
player.sendMessage("You may not escape during observer mode.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -129,23 +129,26 @@ public class Escape implements IUserCommandHandler
|
||||
player.sendMessage("You use Escape: " + (unstuckTimer / 60000) + " minutes.");
|
||||
}
|
||||
|
||||
// Abort combat.
|
||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
// SoE Animation section
|
||||
player.setTarget(player);
|
||||
player.abortAttack();
|
||||
player.abortCast(true);
|
||||
player.disableAllSkills();
|
||||
player.setTarget(null); // Like retail we haven't self target.
|
||||
|
||||
player.setTarget(null); // Like retail we haven't self target
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(player, new MagicSkillUse(player, 1050, 1, unstuckTimer, 0), 810000);
|
||||
// Cast escape animation.
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(player, new MagicSkillUse(player, player, 1050, 1, unstuckTimer, 0), 810000);
|
||||
player.sendPacket(new SetupGauge(0, unstuckTimer));
|
||||
// End SoE Animation section
|
||||
final EscapeFinalizer ef = new EscapeFinalizer(player);
|
||||
// continue execution later
|
||||
player.setSkillCast(ThreadPool.schedule(ef, unstuckTimer));
|
||||
|
||||
// Continue execution later.
|
||||
final EscapeFinalizer escapeFinalizer = new EscapeFinalizer(player);
|
||||
player.setSkillCast(ThreadPool.schedule(escapeFinalizer, unstuckTimer));
|
||||
player.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (unstuckTimer / GameTimeController.MILLIS_IN_TICK));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static class EscapeFinalizer implements Runnable
|
||||
private static class EscapeFinalizer implements Runnable
|
||||
{
|
||||
private final PlayerInstance _player;
|
||||
|
||||
|
@@ -377,17 +377,18 @@ public class Wedding implements IVoicedCommandHandler
|
||||
activeChar.sendMessage("After " + (teleportTimer / 60000) + " min. you will be teleported to your fiance.");
|
||||
activeChar.getInventory().reduceAdena("Wedding", Config.WEDDING_TELEPORT_PRICE, activeChar, null);
|
||||
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
|
||||
// SoE Animation section
|
||||
activeChar.setTarget(activeChar);
|
||||
activeChar.disableAllSkills();
|
||||
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, 1050, 1, teleportTimer, 0), 810000/* 900 */);
|
||||
// Cast escape animation.
|
||||
Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, 1050, 1, teleportTimer, 0), 810000 /* 900 */);
|
||||
activeChar.sendPacket(new SetupGauge(0, teleportTimer));
|
||||
// End SoE Animation section
|
||||
|
||||
final EscapeFinalizer ef = new EscapeFinalizer(activeChar, partner.getX(), partner.getY(), partner.getZ(), partner.isIn7sDungeon());
|
||||
// continue execution later
|
||||
activeChar.setSkillCast(ThreadPool.schedule(ef, teleportTimer));
|
||||
// Continue execution later.
|
||||
final EscapeFinalizer escapeFinalizer = new EscapeFinalizer(activeChar, partner.getX(), partner.getY(), partner.getZ(), partner.isIn7sDungeon());
|
||||
activeChar.setSkillCast(ThreadPool.schedule(escapeFinalizer, teleportTimer));
|
||||
activeChar.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (teleportTimer / GameTimeController.MILLIS_IN_TICK));
|
||||
return true;
|
||||
}
|
||||
|
@@ -18,53 +18,45 @@ package org.l2jmobius.gameserver.network.serverpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
|
||||
/**
|
||||
* sample 0000: 5a d8 a8 10 48 d8 a8 10 48 10 04 00 00 01 00 00 Z...H...H....... 0010: 00 f0 1a 00 00 68 28 00 00 .....h(.. format dddddd dddh (h)
|
||||
* @version $Revision: 1.4.2.1.2.4 $ $Date: 2005/03/27 15:29:39 $
|
||||
*/
|
||||
public class MagicSkillUse extends GameServerPacket
|
||||
{
|
||||
private int _targetId;
|
||||
private final int _skillId;
|
||||
private final int _skillLevel;
|
||||
private final int _hitTime;
|
||||
private final int _reuseDelay;
|
||||
private final int _objectId;
|
||||
private final int _x;
|
||||
private final int _y;
|
||||
private final int _z;
|
||||
private final int _targetId;
|
||||
private final int _targetx;
|
||||
private final int _targety;
|
||||
private final int _targetz;
|
||||
private final int _skillId;
|
||||
private final int _skillLevel;
|
||||
private final int _hitTime;
|
||||
private final int _reuseDelay;
|
||||
|
||||
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay)
|
||||
{
|
||||
_objectId = creature.getObjectId();
|
||||
_x = creature.getX();
|
||||
_y = creature.getY();
|
||||
_z = creature.getZ();
|
||||
if (target != null)
|
||||
{
|
||||
_targetId = target.getObjectId();
|
||||
_targetx = target.getX();
|
||||
_targety = target.getY();
|
||||
_targetz = target.getZ();
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetId = creature.getTargetId();
|
||||
_targetx = creature.getX();
|
||||
_targety = creature.getY();
|
||||
_targetz = creature.getZ();
|
||||
}
|
||||
_skillId = skillId;
|
||||
_skillLevel = skillLevel;
|
||||
_hitTime = hitTime;
|
||||
_reuseDelay = reuseDelay;
|
||||
_x = creature.getX();
|
||||
_y = creature.getY();
|
||||
_z = creature.getZ();
|
||||
}
|
||||
|
||||
public MagicSkillUse(Creature creature, int skillId, int skillLevel, int hitTime, int reuseDelay)
|
||||
{
|
||||
_objectId = creature.getObjectId();
|
||||
_targetId = creature.getTargetId();
|
||||
_skillId = skillId;
|
||||
_skillLevel = skillLevel;
|
||||
_hitTime = hitTime;
|
||||
_reuseDelay = reuseDelay;
|
||||
_x = creature.getX();
|
||||
_y = creature.getY();
|
||||
_z = creature.getZ();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,12 +72,17 @@ public class MagicSkillUse extends GameServerPacket
|
||||
writeD(_x);
|
||||
writeD(_y);
|
||||
writeD(_z);
|
||||
writeH(0x00); // unknown loop but not AoE
|
||||
// for()
|
||||
// if (_critical) // ?
|
||||
// {
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
// writeD(0x01);
|
||||
// writeH(0x00);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
writeD(0x00);
|
||||
// }
|
||||
writeD(_targetx);
|
||||
writeD(_targety);
|
||||
writeD(_targetz);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user