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
|
// 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;
|
_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)
|
// Show crafting animation.
|
||||||
_player.broadcastPacket(new MagicSkillUse(_player, _skillId, _skillLevel, _delay, 0));
|
_player.broadcastPacket(new MagicSkillUse(_player, _player, _skillId, _skillLevel, _delay, 0));
|
||||||
_player.sendPacket(new SetupGauge(0, _delay));
|
_player.sendPacket(new SetupGauge(0, _delay));
|
||||||
ThreadPool.schedule(this, 100 + _delay);
|
ThreadPool.schedule(this, 100 + _delay);
|
||||||
}
|
}
|
||||||
|
@@ -509,7 +509,7 @@ public class AdminMobGroup implements IAdminCommandHandler
|
|||||||
|
|
||||||
private void doAnimation(PlayerInstance activeChar)
|
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));
|
activeChar.sendPacket(new SetupGauge(0, 4000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -98,7 +98,7 @@ public class AdminPolymorph implements IAdminCommandHandler
|
|||||||
if (obj instanceof Creature)
|
if (obj instanceof Creature)
|
||||||
{
|
{
|
||||||
final Creature creature = (Creature) obj;
|
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));
|
creature.sendPacket(new SetupGauge(0, 4000));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package org.l2jmobius.gameserver.handler.itemhandlers;
|
package org.l2jmobius.gameserver.handler.itemhandlers;
|
||||||
|
|
||||||
import org.l2jmobius.gameserver.handler.IItemHandler;
|
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.Playable;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
import org.l2jmobius.gameserver.model.items.Item;
|
import org.l2jmobius.gameserver.model.items.Item;
|
||||||
@@ -92,12 +91,7 @@ public class FishShots implements IItemHandler
|
|||||||
|
|
||||||
weaponInst.setChargedFishshot(true);
|
weaponInst.setChargedFishshot(true);
|
||||||
player.destroyItemWithoutTrace("Consume", item.getObjectId(), 1, null, false);
|
player.destroyItemWithoutTrace("Consume", item.getObjectId(), 1, null, false);
|
||||||
final WorldObject oldTarget = player.getTarget();
|
Broadcast.toSelfAndKnownPlayers(player, new MagicSkillUse(player, player, SKILL_IDS[grade], 1, 0, 0));
|
||||||
player.setTarget(player);
|
|
||||||
|
|
||||||
final MagicSkillUse msu = new MagicSkillUse(player, SKILL_IDS[grade], 1, 0, 0);
|
|
||||||
Broadcast.toSelfAndKnownPlayers(player, msu);
|
|
||||||
player.setTarget(oldTarget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -27,7 +27,6 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
|||||||
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
|
import org.l2jmobius.gameserver.instancemanager.ClanHallManager;
|
||||||
import org.l2jmobius.gameserver.instancemanager.FortManager;
|
import org.l2jmobius.gameserver.instancemanager.FortManager;
|
||||||
import org.l2jmobius.gameserver.model.Skill;
|
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.Playable;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
import org.l2jmobius.gameserver.model.entity.event.CTF;
|
import org.l2jmobius.gameserver.model.entity.event.CTF;
|
||||||
@@ -166,8 +165,6 @@ public class ScrollOfEscape implements IItemHandler
|
|||||||
return;
|
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.
|
// Check if this is a blessed scroll, if it is then shorten the cast time.
|
||||||
final int itemId = item.getItemId();
|
final int itemId = item.getItemId();
|
||||||
final SystemMessage sm3 = new SystemMessage(SystemMessageId.USE_S1);
|
final SystemMessage sm3 = new SystemMessage(SystemMessageId.USE_S1);
|
||||||
@@ -180,26 +177,26 @@ public class ScrollOfEscape implements IItemHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.disableAllSkills();
|
// Send consume message.
|
||||||
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_HAS_DISAPPEARED);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_HAS_DISAPPEARED);
|
||||||
sm.addItemName(itemId);
|
sm.addItemName(itemId);
|
||||||
player.sendPacket(sm);
|
player.sendPacket(sm);
|
||||||
|
|
||||||
final EscapeFinalizer ef = new EscapeFinalizer(player, itemId);
|
// Abort combat.
|
||||||
// continue execution later
|
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||||
player.setSkillCast(ThreadPool.schedule(ef, skill.getHitTime()));
|
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));
|
player.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (skill.getHitTime() / GameTimeController.MILLIS_IN_TICK));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +220,6 @@ public class ScrollOfEscape implements IItemHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
_player.enableAllSkills();
|
_player.enableAllSkills();
|
||||||
|
|
||||||
_player.setIn7sDungeon(false);
|
_player.setIn7sDungeon(false);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@@ -82,7 +82,7 @@ public class Escape implements IUserCommandHandler
|
|||||||
// Check to see if the current player is in Grandboss zone.
|
// Check to see if the current player is in Grandboss zone.
|
||||||
if ((GrandBossManager.getInstance().getZone(player) != null) && !player.isGM())
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,14 +96,14 @@ public class Escape implements IUserCommandHandler
|
|||||||
// Check to see if the current player is in fun event.
|
// Check to see if the current player is in fun event.
|
||||||
if (player.isInFunEvent())
|
if (player.isInFunEvent())
|
||||||
{
|
{
|
||||||
player.sendMessage("You may not escape from an Event.");
|
player.sendMessage("You may not escape from an event.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check to see if the current player is in Observer Mode.
|
// Check to see if the current player is in Observer Mode.
|
||||||
if (player.inObserverMode())
|
if (player.inObserverMode())
|
||||||
{
|
{
|
||||||
player.sendMessage("You may not escape during Observer mode.");
|
player.sendMessage("You may not escape during observer mode.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,23 +129,26 @@ public class Escape implements IUserCommandHandler
|
|||||||
player.sendMessage("You use Escape: " + (unstuckTimer / 60000) + " minutes.");
|
player.sendMessage("You use Escape: " + (unstuckTimer / 60000) + " minutes.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Abort combat.
|
||||||
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||||
// SoE Animation section
|
player.abortAttack();
|
||||||
player.setTarget(player);
|
player.abortCast(true);
|
||||||
player.disableAllSkills();
|
player.disableAllSkills();
|
||||||
|
player.setTarget(null); // Like retail we haven't self target.
|
||||||
|
|
||||||
player.setTarget(null); // Like retail we haven't self target
|
// Cast escape animation.
|
||||||
Broadcast.toSelfAndKnownPlayersInRadius(player, new MagicSkillUse(player, 1050, 1, unstuckTimer, 0), 810000);
|
Broadcast.toSelfAndKnownPlayersInRadius(player, new MagicSkillUse(player, player, 1050, 1, unstuckTimer, 0), 810000);
|
||||||
player.sendPacket(new SetupGauge(0, unstuckTimer));
|
player.sendPacket(new SetupGauge(0, unstuckTimer));
|
||||||
// End SoE Animation section
|
|
||||||
final EscapeFinalizer ef = new EscapeFinalizer(player);
|
// Continue execution later.
|
||||||
// continue execution later
|
final EscapeFinalizer escapeFinalizer = new EscapeFinalizer(player);
|
||||||
player.setSkillCast(ThreadPool.schedule(ef, unstuckTimer));
|
player.setSkillCast(ThreadPool.schedule(escapeFinalizer, unstuckTimer));
|
||||||
player.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (unstuckTimer / GameTimeController.MILLIS_IN_TICK));
|
player.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (unstuckTimer / GameTimeController.MILLIS_IN_TICK));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class EscapeFinalizer implements Runnable
|
private static class EscapeFinalizer implements Runnable
|
||||||
{
|
{
|
||||||
private final PlayerInstance _player;
|
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.sendMessage("After " + (teleportTimer / 60000) + " min. you will be teleported to your fiance.");
|
||||||
activeChar.getInventory().reduceAdena("Wedding", Config.WEDDING_TELEPORT_PRICE, activeChar, null);
|
activeChar.getInventory().reduceAdena("Wedding", Config.WEDDING_TELEPORT_PRICE, activeChar, null);
|
||||||
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||||
|
|
||||||
// SoE Animation section
|
// SoE Animation section
|
||||||
activeChar.setTarget(activeChar);
|
activeChar.setTarget(activeChar);
|
||||||
activeChar.disableAllSkills();
|
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));
|
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.
|
||||||
// continue execution later
|
final EscapeFinalizer escapeFinalizer = new EscapeFinalizer(activeChar, partner.getX(), partner.getY(), partner.getZ(), partner.isIn7sDungeon());
|
||||||
activeChar.setSkillCast(ThreadPool.schedule(ef, teleportTimer));
|
activeChar.setSkillCast(ThreadPool.schedule(escapeFinalizer, teleportTimer));
|
||||||
activeChar.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (teleportTimer / GameTimeController.MILLIS_IN_TICK));
|
activeChar.setSkillCastEndTime(10 + GameTimeController.getGameTicks() + (teleportTimer / GameTimeController.MILLIS_IN_TICK));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -18,53 +18,45 @@ package org.l2jmobius.gameserver.network.serverpackets;
|
|||||||
|
|
||||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
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
|
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 _objectId;
|
||||||
private final int _x;
|
private final int _x;
|
||||||
private final int _y;
|
private final int _y;
|
||||||
private final int _z;
|
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)
|
public MagicSkillUse(Creature creature, Creature target, int skillId, int skillLevel, int hitTime, int reuseDelay)
|
||||||
{
|
{
|
||||||
_objectId = creature.getObjectId();
|
_objectId = creature.getObjectId();
|
||||||
|
_x = creature.getX();
|
||||||
|
_y = creature.getY();
|
||||||
|
_z = creature.getZ();
|
||||||
if (target != null)
|
if (target != null)
|
||||||
{
|
{
|
||||||
_targetId = target.getObjectId();
|
_targetId = target.getObjectId();
|
||||||
|
_targetx = target.getX();
|
||||||
|
_targety = target.getY();
|
||||||
|
_targetz = target.getZ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_targetId = creature.getTargetId();
|
_targetId = creature.getTargetId();
|
||||||
|
_targetx = creature.getX();
|
||||||
|
_targety = creature.getY();
|
||||||
|
_targetz = creature.getZ();
|
||||||
}
|
}
|
||||||
_skillId = skillId;
|
_skillId = skillId;
|
||||||
_skillLevel = skillLevel;
|
_skillLevel = skillLevel;
|
||||||
_hitTime = hitTime;
|
_hitTime = hitTime;
|
||||||
_reuseDelay = reuseDelay;
|
_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
|
@Override
|
||||||
@@ -80,12 +72,17 @@ public class MagicSkillUse extends GameServerPacket
|
|||||||
writeD(_x);
|
writeD(_x);
|
||||||
writeD(_y);
|
writeD(_y);
|
||||||
writeD(_z);
|
writeD(_z);
|
||||||
writeH(0x00); // unknown loop but not AoE
|
// if (_critical) // ?
|
||||||
// for()
|
|
||||||
// {
|
// {
|
||||||
writeH(0x00);
|
// writeD(0x01);
|
||||||
writeH(0x00);
|
// writeH(0x00);
|
||||||
writeH(0x00);
|
|
||||||
// }
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
writeD(0x00);
|
||||||
|
// }
|
||||||
|
writeD(_targetx);
|
||||||
|
writeD(_targety);
|
||||||
|
writeD(_targetz);
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user