Addition of CreatureState enum and cast fix.
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* 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 2 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, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
package org.l2jmobius.gameserver.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mobius
|
||||||
|
*/
|
||||||
|
public enum CreatureState
|
||||||
|
{
|
||||||
|
IDLE,
|
||||||
|
PICKUP_ITEM,
|
||||||
|
CASTING,
|
||||||
|
RESTING,
|
||||||
|
ATTACKING,
|
||||||
|
RANDOM_WALK,
|
||||||
|
INTERACT,
|
||||||
|
FOLLOW,
|
||||||
|
}
|
@@ -26,21 +26,14 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
|||||||
|
|
||||||
public class DamageSkill implements ISkillHandler
|
public class DamageSkill implements ISkillHandler
|
||||||
{
|
{
|
||||||
public static final int POWER_STRIKE = 3;
|
|
||||||
public static final int WIND_STRIKE = 1177;
|
|
||||||
public static final int FLAME_STRIKE = 1181;
|
|
||||||
public static final int MORTAL_BLOW = 16;
|
|
||||||
public static final int POWER_SHOT = 56;
|
|
||||||
public static final int IRON_PUNCH = 29;
|
|
||||||
|
|
||||||
private static int[] _skillIds = new int[]
|
private static int[] _skillIds = new int[]
|
||||||
{
|
{
|
||||||
3,
|
3, // Power Strike
|
||||||
1177,
|
16, // Mortal Blow
|
||||||
1181,
|
29, // Iron Punch
|
||||||
16,
|
56, // Power Shot
|
||||||
56,
|
1177, // Wind Strike
|
||||||
29
|
1181, // Flame Strike
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -48,8 +41,8 @@ public class DamageSkill implements ISkillHandler
|
|||||||
{
|
{
|
||||||
if (target instanceof Creature)
|
if (target instanceof Creature)
|
||||||
{
|
{
|
||||||
Creature targetChar = (Creature) target;
|
Creature creature = (Creature) target;
|
||||||
int mdef = targetChar.getMagicalDefense();
|
int mdef = creature.getMagicalDefense();
|
||||||
if (mdef == 0)
|
if (mdef == 0)
|
||||||
{
|
{
|
||||||
mdef = 350;
|
mdef = 350;
|
||||||
@@ -58,11 +51,11 @@ public class DamageSkill implements ISkillHandler
|
|||||||
SystemMessage sm = new SystemMessage(35);
|
SystemMessage sm = new SystemMessage(35);
|
||||||
sm.addNumber(dmg);
|
sm.addNumber(dmg);
|
||||||
activeChar.sendPacket(sm);
|
activeChar.sendPacket(sm);
|
||||||
targetChar.reduceCurrentHp(dmg, activeChar);
|
if (creature.getCurrentHp() > creature.getMaxHp())
|
||||||
if (targetChar.getCurrentHp() > targetChar.getMaxHp())
|
|
||||||
{
|
{
|
||||||
targetChar.setCurrentHp(targetChar.getMaxHp());
|
creature.setCurrentHp(creature.getMaxHp());
|
||||||
}
|
}
|
||||||
|
creature.reduceCurrentHp(dmg, activeChar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,24 +29,16 @@ import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
|||||||
|
|
||||||
public class HealSkill implements ISkillHandler
|
public class HealSkill implements ISkillHandler
|
||||||
{
|
{
|
||||||
private static final int SELF_HEAL = 1216;
|
|
||||||
private static final int DEVINE_HEAL = 45;
|
|
||||||
private static final int ELEMENTAL_HEAL = 58;
|
|
||||||
private static final int HEAL = 1011;
|
|
||||||
private static final int BATTLE_HEAL = 1015;
|
|
||||||
private static final int GROUP_HEAL = 1027;
|
|
||||||
private static final int SERVITOR_HEAL = 1127;
|
|
||||||
private static final int GREATER_GROUP_HEAL = 1219;
|
|
||||||
private static int[] _skillIds = new int[]
|
private static int[] _skillIds = new int[]
|
||||||
{
|
{
|
||||||
SELF_HEAL,
|
45, // Divine Heal
|
||||||
DEVINE_HEAL,
|
58, // Elemental Heal
|
||||||
ELEMENTAL_HEAL,
|
1011, // Heal
|
||||||
HEAL,
|
1015, // Battle Heal
|
||||||
BATTLE_HEAL,
|
1027, // Group Heal
|
||||||
GROUP_HEAL,
|
1127, // Servitor Heal
|
||||||
SERVITOR_HEAL,
|
1216, // Self Heal
|
||||||
GREATER_GROUP_HEAL
|
1219, // Greater Group Heal
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -29,6 +29,7 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.data.ItemTable;
|
import org.l2jmobius.gameserver.data.ItemTable;
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.DropData;
|
import org.l2jmobius.gameserver.model.DropData;
|
||||||
import org.l2jmobius.gameserver.model.Party;
|
import org.l2jmobius.gameserver.model.Party;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
@@ -48,7 +49,7 @@ public class Attackable extends NpcInstance
|
|||||||
// private int _moveRadius;
|
// private int _moveRadius;
|
||||||
private boolean _active;
|
private boolean _active;
|
||||||
private AITask _currentAiTask;
|
private AITask _currentAiTask;
|
||||||
private AIAttackeTask _currentAIAttackeTask;
|
private AIAttackeTask _currentAIAttackTask;
|
||||||
private static Timer _aiTimer = new Timer(true);
|
private static Timer _aiTimer = new Timer(true);
|
||||||
private static Timer _attackTimer = new Timer(true);
|
private static Timer _attackTimer = new Timer(true);
|
||||||
private final Map<WorldObject, Integer> _aggroList = new HashMap<>();
|
private final Map<WorldObject, Integer> _aggroList = new HashMap<>();
|
||||||
@@ -72,16 +73,12 @@ public class Attackable extends NpcInstance
|
|||||||
super.onTargetReached();
|
super.onTargetReached();
|
||||||
switch (getCurrentState())
|
switch (getCurrentState())
|
||||||
{
|
{
|
||||||
case 1:
|
case ATTACKING:
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 5:
|
|
||||||
{
|
{
|
||||||
startCombat();
|
startCombat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 6:
|
case RANDOM_WALK:
|
||||||
{
|
{
|
||||||
randomWalk();
|
randomWalk();
|
||||||
break;
|
break;
|
||||||
@@ -104,15 +101,15 @@ public class Attackable extends NpcInstance
|
|||||||
_currentAiTask = new AITask(this);
|
_currentAiTask = new AITask(this);
|
||||||
int wait = (10 + Rnd.get(120)) * 1000;
|
int wait = (10 + Rnd.get(120)) * 1000;
|
||||||
_aiTimer.schedule(_currentAiTask, wait);
|
_aiTimer.schedule(_currentAiTask, wait);
|
||||||
setCurrentState((byte) 6);
|
setCurrentState(CreatureState.RANDOM_WALK);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected synchronized void startTargetScan()
|
protected synchronized void startTargetScan()
|
||||||
{
|
{
|
||||||
if ((_currentAIAttackeTask == null) && (getTarget() == null))
|
if ((_currentAIAttackTask == null) && (getTarget() == null))
|
||||||
{
|
{
|
||||||
_currentAIAttackeTask = new AIAttackeTask(this);
|
_currentAIAttackTask = new AIAttackeTask(this);
|
||||||
_attackTimer.scheduleAtFixedRate(_currentAIAttackeTask, 100L, 1000L);
|
_attackTimer.scheduleAtFixedRate(_currentAIAttackTask, 100L, 1000L);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,15 +323,15 @@ public class Attackable extends NpcInstance
|
|||||||
|
|
||||||
protected boolean isTargetScanActive()
|
protected boolean isTargetScanActive()
|
||||||
{
|
{
|
||||||
return _currentAIAttackeTask != null;
|
return _currentAIAttackTask != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected synchronized void stopTargetScan()
|
protected synchronized void stopTargetScan()
|
||||||
{
|
{
|
||||||
if (_currentAIAttackeTask != null)
|
if (_currentAIAttackTask != null)
|
||||||
{
|
{
|
||||||
_currentAIAttackeTask.cancel();
|
_currentAIAttackTask.cancel();
|
||||||
_currentAIAttackeTask = null;
|
_currentAIAttackTask = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,9 +427,9 @@ public class Attackable extends NpcInstance
|
|||||||
startAttack(player);
|
startAttack(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_currentAIAttackeTask != null)
|
else if (_currentAIAttackTask != null)
|
||||||
{
|
{
|
||||||
_currentAIAttackeTask.cancel();
|
_currentAIAttackTask.cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Throwable e)
|
catch (Throwable e)
|
||||||
|
@@ -27,6 +27,7 @@ import java.util.Timer;
|
|||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.WorldObject;
|
import org.l2jmobius.gameserver.model.WorldObject;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.NpcInstance;
|
||||||
@@ -119,15 +120,7 @@ public abstract class Creature extends WorldObject
|
|||||||
private double _collisionHeight;
|
private double _collisionHeight;
|
||||||
private WorldObject _target;
|
private WorldObject _target;
|
||||||
private int _activeSoulShotGrade;
|
private int _activeSoulShotGrade;
|
||||||
private byte _currentState = 0;
|
private CreatureState _currentState = CreatureState.IDLE;
|
||||||
public static final byte STATE_IDLE = 0;
|
|
||||||
public static final byte STATE_PICKUP_ITEM = 1;
|
|
||||||
public static final byte STATE_CASTING = 2;
|
|
||||||
public static final byte STATE_RESTING = 3;
|
|
||||||
public static final byte STATE_ATTACKING = 5;
|
|
||||||
public static final byte STATE_RANDOM_WALK = 6;
|
|
||||||
public static final byte STATE_INTERACT = 7;
|
|
||||||
public static final byte STATE_FOLLOW = 8;
|
|
||||||
private boolean _inCombat;
|
private boolean _inCombat;
|
||||||
private boolean _moving;
|
private boolean _moving;
|
||||||
private boolean _movingToPawn;
|
private boolean _movingToPawn;
|
||||||
@@ -663,12 +656,12 @@ public abstract class Creature extends WorldObject
|
|||||||
return _target;
|
return _target;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getCurrentState()
|
public CreatureState getCurrentState()
|
||||||
{
|
{
|
||||||
return _currentState;
|
return _currentState;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCurrentState(byte currentState)
|
public void setCurrentState(CreatureState currentState)
|
||||||
{
|
{
|
||||||
_currentState = currentState;
|
_currentState = currentState;
|
||||||
}
|
}
|
||||||
@@ -800,12 +793,16 @@ public abstract class Creature extends WorldObject
|
|||||||
broadcastStatusUpdate();
|
broadcastStatusUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reduceCurrentHp(int i, Creature attacker)
|
public void reduceCurrentHp(int amount, Creature attacker)
|
||||||
{
|
{
|
||||||
Object object = _hpLock;
|
synchronized (_hpLock)
|
||||||
synchronized (object)
|
|
||||||
{
|
{
|
||||||
_currentHp -= i;
|
if (!_hpRegenActive)
|
||||||
|
{
|
||||||
|
startHpRegeneration();
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentHp -= amount;
|
||||||
if (_currentHp <= 0.0)
|
if (_currentHp <= 0.0)
|
||||||
{
|
{
|
||||||
_currentHp = 0.0;
|
_currentHp = 0.0;
|
||||||
@@ -823,7 +820,6 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
_currentMoveTask.cancel();
|
_currentMoveTask.cancel();
|
||||||
}
|
}
|
||||||
broadcastStatusUpdate();
|
|
||||||
StopMove stop = new StopMove(this);
|
StopMove stop = new StopMove(this);
|
||||||
Die die = new Die(this);
|
Die die = new Die(this);
|
||||||
broadcastPacket(stop);
|
broadcastPacket(stop);
|
||||||
@@ -834,11 +830,6 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
attacker.setTarget(null);
|
attacker.setTarget(null);
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!_hpRegenActive)
|
|
||||||
{
|
|
||||||
startHpRegeneration();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
broadcastStatusUpdate();
|
broadcastStatusUpdate();
|
||||||
@@ -859,9 +850,9 @@ public abstract class Creature extends WorldObject
|
|||||||
}
|
}
|
||||||
calculateMovement(x, y, z, distance);
|
calculateMovement(x, y, z, distance);
|
||||||
CharMoveToLocation mov = new CharMoveToLocation(this);
|
CharMoveToLocation mov = new CharMoveToLocation(this);
|
||||||
if (getCurrentState() == 2)
|
if (getCurrentState() == CreatureState.CASTING)
|
||||||
{
|
{
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
}
|
}
|
||||||
enableAllSkills();
|
enableAllSkills();
|
||||||
broadcastPacket(mov);
|
broadcastPacket(mov);
|
||||||
@@ -902,7 +893,7 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
stopMove();
|
stopMove();
|
||||||
}
|
}
|
||||||
if ((getPawnTarget() != null) && (distance <= getAttackRange()) && (getCurrentState() == 8))
|
if ((getPawnTarget() != null) && (distance <= getAttackRange()) && (getCurrentState() == CreatureState.FOLLOW))
|
||||||
{
|
{
|
||||||
ArriveTask newMoveTask = new ArriveTask(this);
|
ArriveTask newMoveTask = new ArriveTask(this);
|
||||||
_moveTimer.schedule(newMoveTask, 3000L);
|
_moveTimer.schedule(newMoveTask, 3000L);
|
||||||
@@ -951,7 +942,7 @@ public abstract class Creature extends WorldObject
|
|||||||
ArriveTask newMoveTask = new ArriveTask(this);
|
ArriveTask newMoveTask = new ArriveTask(this);
|
||||||
if (getPawnTarget() != null)
|
if (getPawnTarget() != null)
|
||||||
{
|
{
|
||||||
if (getCurrentState() == 7)
|
if (getCurrentState() == CreatureState.INTERACT)
|
||||||
{
|
{
|
||||||
_moveTimer.schedule(newMoveTask, _timeToTarget);
|
_moveTimer.schedule(newMoveTask, _timeToTarget);
|
||||||
_currentMoveTask = newMoveTask;
|
_currentMoveTask = newMoveTask;
|
||||||
@@ -1033,12 +1024,12 @@ public abstract class Creature extends WorldObject
|
|||||||
int y = getPawnTarget().getY();
|
int y = getPawnTarget().getY();
|
||||||
int z = getPawnTarget().getZ();
|
int z = getPawnTarget().getZ();
|
||||||
double distance = getDistance(x, y);
|
double distance = getDistance(x, y);
|
||||||
if (getCurrentState() == 8)
|
if (getCurrentState() == CreatureState.FOLLOW)
|
||||||
{
|
{
|
||||||
calculateMovement(x, y, z, distance);
|
calculateMovement(x, y, z, distance);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (((distance > getAttackRange()) && (getCurrentState() == 5)) || (getPawnTarget().isMoving() && (getCurrentState() != 5)))
|
if (((distance > getAttackRange()) && (getCurrentState() == CreatureState.ATTACKING)) || (getPawnTarget().isMoving() && (getCurrentState() != CreatureState.ATTACKING)))
|
||||||
{
|
{
|
||||||
calculateMovement(x, y, z, distance);
|
calculateMovement(x, y, z, distance);
|
||||||
return;
|
return;
|
||||||
@@ -1061,7 +1052,7 @@ public abstract class Creature extends WorldObject
|
|||||||
setHeading(heading);
|
setHeading(heading);
|
||||||
if (isMoving())
|
if (isMoving())
|
||||||
{
|
{
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
setto = new StopMove(this);
|
setto = new StopMove(this);
|
||||||
broadcastPacket(setto);
|
broadcastPacket(setto);
|
||||||
}
|
}
|
||||||
@@ -1096,10 +1087,10 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
_currentAttackTask = null;
|
_currentAttackTask = null;
|
||||||
Creature target = (Creature) _attackTarget;
|
Creature target = (Creature) _attackTarget;
|
||||||
if (isDead() || (target == null) || target.isDead() || ((getCurrentState() != 5) && (getCurrentState() != 2)) || !target.knownsObject(this) || !knownsObject(target))
|
if (isDead() || (target == null) || target.isDead() || ((getCurrentState() != CreatureState.ATTACKING) && (getCurrentState() != CreatureState.CASTING)) || !target.knownsObject(this) || !knownsObject(target))
|
||||||
{
|
{
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
return;
|
return;
|
||||||
@@ -1107,7 +1098,7 @@ public abstract class Creature extends WorldObject
|
|||||||
if ((getActiveWeapon().getWeaponType() == 5) && !checkAndEquipArrows())
|
if ((getActiveWeapon().getWeaponType() == 5) && !checkAndEquipArrows())
|
||||||
{
|
{
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
sendPacket(new SystemMessage(112));
|
sendPacket(new SystemMessage(112));
|
||||||
@@ -1119,13 +1110,13 @@ public abstract class Creature extends WorldObject
|
|||||||
moveTo(_attackTarget.getX(), _attackTarget.getY(), _attackTarget.getZ(), getAttackRange());
|
moveTo(_attackTarget.getX(), _attackTarget.getY(), _attackTarget.getZ(), getAttackRange());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((getCurrentState() == 5) && !_currentlyAttacking)
|
if ((getCurrentState() == CreatureState.ATTACKING) && !_currentlyAttacking)
|
||||||
{
|
{
|
||||||
Weapon weaponItem = getActiveWeapon();
|
Weapon weaponItem = getActiveWeapon();
|
||||||
if (weaponItem == null)
|
if (weaponItem == null)
|
||||||
{
|
{
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
return;
|
return;
|
||||||
@@ -1183,7 +1174,7 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
sendPacket(new SystemMessage(24));
|
sendPacket(new SystemMessage(24));
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
return;
|
return;
|
||||||
@@ -1223,7 +1214,7 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setTarget(null);
|
setTarget(null);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
return;
|
return;
|
||||||
@@ -1302,14 +1293,14 @@ public abstract class Creature extends WorldObject
|
|||||||
if (target == null)
|
if (target == null)
|
||||||
{
|
{
|
||||||
setInCombat(false);
|
setInCombat(false);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
ActionFailed af = new ActionFailed();
|
ActionFailed af = new ActionFailed();
|
||||||
sendPacket(af);
|
sendPacket(af);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setTarget(target);
|
setTarget(target);
|
||||||
_attackTarget = target;
|
_attackTarget = target;
|
||||||
setCurrentState((byte) 5);
|
setCurrentState(CreatureState.ATTACKING);
|
||||||
moveTo(target.getX(), target.getY(), target.getZ(), getAttackRange());
|
moveTo(target.getX(), target.getY(), target.getZ(), getAttackRange());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1466,8 +1457,7 @@ public abstract class Creature extends WorldObject
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Object object = _hpLock;
|
synchronized (_hpLock)
|
||||||
synchronized (object)
|
|
||||||
{
|
{
|
||||||
double nowHp = _instance.getCurrentHp();
|
double nowHp = _instance.getCurrentHp();
|
||||||
if (_instance.getCurrentHp() < _instance.getMaxHp())
|
if (_instance.getCurrentHp() < _instance.getMaxHp())
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.model.actor.instance;
|
package org.l2jmobius.gameserver.model.actor.instance;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.CharInfo;
|
import org.l2jmobius.gameserver.network.serverpackets.CharInfo;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
|
import org.l2jmobius.gameserver.network.serverpackets.MyTargetSelected;
|
||||||
@@ -37,7 +38,7 @@ public class ClassMasterInstance extends NpcInstance
|
|||||||
{
|
{
|
||||||
if (getObjectId() != player.getTargetId())
|
if (getObjectId() != player.getTargetId())
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
player.setTarget(this);
|
player.setTarget(this);
|
||||||
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
||||||
player.sendPacket(my);
|
player.sendPacket(my);
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.model.actor.instance;
|
package org.l2jmobius.gameserver.model.actor.instance;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.WorldObject;
|
import org.l2jmobius.gameserver.model.WorldObject;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
@@ -35,7 +36,7 @@ public class GuardInstance extends Attackable
|
|||||||
public GuardInstance(Npc template)
|
public GuardInstance(Npc template)
|
||||||
{
|
{
|
||||||
super(template);
|
super(template);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -102,7 +103,7 @@ public class GuardInstance extends Attackable
|
|||||||
{
|
{
|
||||||
if (getObjectId() != player.getTargetId())
|
if (getObjectId() != player.getTargetId())
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
player.setTarget(this);
|
player.setTarget(this);
|
||||||
MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
|
MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
|
||||||
player.sendPacket(my);
|
player.sendPacket(my);
|
||||||
@@ -117,14 +118,14 @@ public class GuardInstance extends Attackable
|
|||||||
double distance = getDistance(player.getX(), player.getY());
|
double distance = getDistance(player.getX(), player.getY());
|
||||||
if (distance > INTERACTION_DISTANCE)
|
if (distance > INTERACTION_DISTANCE)
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 7);
|
player.setCurrentState(CreatureState.INTERACT);
|
||||||
player.moveTo(getX(), getY(), getZ(), 150);
|
player.moveTo(getX(), getY(), getZ(), 150);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
showChatWindow(player, 0);
|
showChatWindow(player, 0);
|
||||||
player.sendPacket(new ActionFailed());
|
player.sendPacket(new ActionFailed());
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.model.actor.instance;
|
package org.l2jmobius.gameserver.model.actor.instance;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.WorldObject;
|
import org.l2jmobius.gameserver.model.WorldObject;
|
||||||
import org.l2jmobius.gameserver.templates.EtcItem;
|
import org.l2jmobius.gameserver.templates.EtcItem;
|
||||||
import org.l2jmobius.gameserver.templates.Item;
|
import org.l2jmobius.gameserver.templates.Item;
|
||||||
@@ -109,7 +110,7 @@ public class ItemInstance extends WorldObject
|
|||||||
@Override
|
@Override
|
||||||
public void onAction(PlayerInstance player)
|
public void onAction(PlayerInstance player)
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 1);
|
player.setCurrentState(CreatureState.PICKUP_ITEM);
|
||||||
player.setTarget(this);
|
player.setTarget(this);
|
||||||
player.moveTo(getX(), getY(), getZ(), 0);
|
player.moveTo(getX(), getY(), getZ(), 0);
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.model.actor.instance;
|
package org.l2jmobius.gameserver.model.actor.instance;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.WorldObject;
|
import org.l2jmobius.gameserver.model.WorldObject;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
@@ -28,7 +29,7 @@ public class MonsterInstance extends Attackable
|
|||||||
{
|
{
|
||||||
super(template);
|
super(template);
|
||||||
// this.setMoveRadius(2000);
|
// this.setMoveRadius(2000);
|
||||||
setCurrentState((byte) 6);
|
setCurrentState(CreatureState.RANDOM_WALK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,7 +71,7 @@ public class MonsterInstance extends Attackable
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((getCurrentState() != 6) && !isDead() && (getTarget() == null))
|
if ((getCurrentState() != CreatureState.RANDOM_WALK) && !isDead() && (getTarget() == null))
|
||||||
{
|
{
|
||||||
startRandomWalking();
|
startRandomWalking();
|
||||||
if (isAggressive())
|
if (isAggressive())
|
||||||
|
@@ -23,6 +23,7 @@ import java.util.Timer;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.l2jmobius.Config;
|
import org.l2jmobius.Config;
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.Spawn;
|
import org.l2jmobius.gameserver.model.Spawn;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
@@ -121,11 +122,11 @@ public class NpcInstance extends Creature
|
|||||||
{
|
{
|
||||||
if (this != player.getTarget())
|
if (this != player.getTarget())
|
||||||
{
|
{
|
||||||
if (player.getCurrentState() == 2)
|
if (player.getCurrentState() == CreatureState.CASTING)
|
||||||
{
|
{
|
||||||
player.cancelCastMagic();
|
player.cancelCastMagic();
|
||||||
}
|
}
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
player.setTarget(this);
|
player.setTarget(this);
|
||||||
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
||||||
player.sendPacket(my);
|
player.sendPacket(my);
|
||||||
@@ -149,7 +150,7 @@ public class NpcInstance extends Creature
|
|||||||
double distance = getDistance(player.getX(), player.getY());
|
double distance = getDistance(player.getX(), player.getY());
|
||||||
if (distance > INTERACTION_DISTANCE)
|
if (distance > INTERACTION_DISTANCE)
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 7);
|
player.setCurrentState(CreatureState.INTERACT);
|
||||||
player.setInteractTarget(this);
|
player.setInteractTarget(this);
|
||||||
player.moveTo(getX(), getY(), getZ(), 150);
|
player.moveTo(getX(), getY(), getZ(), 150);
|
||||||
}
|
}
|
||||||
@@ -157,7 +158,7 @@ public class NpcInstance extends Creature
|
|||||||
{
|
{
|
||||||
showChatWindow(player, 0);
|
showChatWindow(player, 0);
|
||||||
player.sendPacket(new ActionFailed());
|
player.sendPacket(new ActionFailed());
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,6 +21,7 @@ import java.util.Timer;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.l2jmobius.gameserver.data.ExperienceTable;
|
import org.l2jmobius.gameserver.data.ExperienceTable;
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.Inventory;
|
import org.l2jmobius.gameserver.model.Inventory;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.WorldObject;
|
import org.l2jmobius.gameserver.model.WorldObject;
|
||||||
@@ -74,7 +75,7 @@ public class PetInstance extends Creature
|
|||||||
{
|
{
|
||||||
setCollisionHeight(template.getHeight());
|
setCollisionHeight(template.getHeight());
|
||||||
setCollisionRadius(template.getRadius());
|
setCollisionRadius(template.getRadius());
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
setPhysicalAttack(9999);
|
setPhysicalAttack(9999);
|
||||||
_template = template;
|
_template = template;
|
||||||
}
|
}
|
||||||
@@ -88,7 +89,7 @@ public class PetInstance extends Creature
|
|||||||
player.sendPacket(new PetStatusUpdate(this));
|
player.sendPacket(new PetStatusUpdate(this));
|
||||||
player.sendPacket(new ActionFailed());
|
player.sendPacket(new ActionFailed());
|
||||||
}
|
}
|
||||||
player.setCurrentState((byte) 0);
|
player.setCurrentState(CreatureState.IDLE);
|
||||||
player.setTarget(this);
|
player.setTarget(this);
|
||||||
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
|
||||||
player.sendPacket(my);
|
player.sendPacket(my);
|
||||||
@@ -283,7 +284,7 @@ public class PetInstance extends Creature
|
|||||||
|
|
||||||
public void followOwner(PlayerInstance owner)
|
public void followOwner(PlayerInstance owner)
|
||||||
{
|
{
|
||||||
setCurrentState((byte) 8);
|
setCurrentState(CreatureState.FOLLOW);
|
||||||
setTarget(owner);
|
setTarget(owner);
|
||||||
moveTo(owner.getX(), owner.getY(), owner.getZ(), 30);
|
moveTo(owner.getX(), owner.getY(), owner.getZ(), 30);
|
||||||
broadcastPacket(new PetStatusUpdate(this));
|
broadcastPacket(new PetStatusUpdate(this));
|
||||||
@@ -298,12 +299,12 @@ public class PetInstance extends Creature
|
|||||||
{
|
{
|
||||||
switch (getCurrentState())
|
switch (getCurrentState())
|
||||||
{
|
{
|
||||||
case 1:
|
case PICKUP_ITEM:
|
||||||
{
|
{
|
||||||
doPickupItem();
|
doPickupItem();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5:
|
case ATTACKING:
|
||||||
{
|
{
|
||||||
startCombat();
|
startCombat();
|
||||||
break;
|
break;
|
||||||
@@ -364,7 +365,7 @@ public class PetInstance extends Creature
|
|||||||
if (!pickupOk)
|
if (!pickupOk)
|
||||||
{
|
{
|
||||||
_owner.sendPacket(new ActionFailed());
|
_owner.sendPacket(new ActionFailed());
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GetItem gi = new GetItem(target, getObjectId());
|
GetItem gi = new GetItem(target, getObjectId());
|
||||||
@@ -375,7 +376,7 @@ public class PetInstance extends Creature
|
|||||||
getInventory().addItem(target);
|
getInventory().addItem(target);
|
||||||
PetItemList iu = new PetItemList(this);
|
PetItemList iu = new PetItemList(this);
|
||||||
_owner.sendPacket(iu);
|
_owner.sendPacket(iu);
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
if (getFollowStatus())
|
if (getFollowStatus())
|
||||||
{
|
{
|
||||||
followOwner(_owner);
|
followOwner(_owner);
|
||||||
|
@@ -32,6 +32,7 @@ import org.l2jmobius.gameserver.data.ExperienceTable;
|
|||||||
import org.l2jmobius.gameserver.data.ItemTable;
|
import org.l2jmobius.gameserver.data.ItemTable;
|
||||||
import org.l2jmobius.gameserver.data.LevelUpData;
|
import org.l2jmobius.gameserver.data.LevelUpData;
|
||||||
import org.l2jmobius.gameserver.data.SkillTable;
|
import org.l2jmobius.gameserver.data.SkillTable;
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.handler.ISkillHandler;
|
import org.l2jmobius.gameserver.handler.ISkillHandler;
|
||||||
import org.l2jmobius.gameserver.handler.SkillHandler;
|
import org.l2jmobius.gameserver.handler.SkillHandler;
|
||||||
import org.l2jmobius.gameserver.managers.GmListManager;
|
import org.l2jmobius.gameserver.managers.GmListManager;
|
||||||
@@ -511,10 +512,10 @@ public class PlayerInstance extends Creature
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 8);
|
player.setCurrentState(CreatureState.FOLLOW);
|
||||||
if (getPrivateStoreType() != 0)
|
if (getPrivateStoreType() != 0)
|
||||||
{
|
{
|
||||||
player.setCurrentState((byte) 7);
|
player.setCurrentState(CreatureState.INTERACT);
|
||||||
}
|
}
|
||||||
player.moveTo(getX(), getY(), getZ(), 36);
|
player.moveTo(getX(), getY(), getZ(), 36);
|
||||||
}
|
}
|
||||||
@@ -613,21 +614,21 @@ public class PlayerInstance extends Creature
|
|||||||
{
|
{
|
||||||
switch (getCurrentState())
|
switch (getCurrentState())
|
||||||
{
|
{
|
||||||
case 1:
|
case PICKUP_ITEM:
|
||||||
{
|
{
|
||||||
doPickupItem();
|
doPickupItem();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5:
|
case ATTACKING:
|
||||||
{
|
{
|
||||||
startCombat();
|
startCombat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case CASTING:
|
||||||
{
|
{
|
||||||
useMagic(_skill);
|
useMagic(_skill);
|
||||||
}
|
}
|
||||||
case 7:
|
case INTERACT:
|
||||||
{
|
{
|
||||||
if (getTarget() instanceof PlayerInstance)
|
if (getTarget() instanceof PlayerInstance)
|
||||||
{
|
{
|
||||||
@@ -641,7 +642,7 @@ public class PlayerInstance extends Creature
|
|||||||
{
|
{
|
||||||
sendPacket(new PrivateBuyListBuy(temp, this));
|
sendPacket(new PrivateBuyListBuy(temp, this));
|
||||||
}
|
}
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (_interactTarget == null)
|
if (_interactTarget == null)
|
||||||
@@ -660,7 +661,7 @@ public class PlayerInstance extends Creature
|
|||||||
|
|
||||||
private void doPickupItem()
|
private void doPickupItem()
|
||||||
{
|
{
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
if (!(getTarget() instanceof ItemInstance))
|
if (!(getTarget() instanceof ItemInstance))
|
||||||
{
|
{
|
||||||
_log.warning("trying to pickup wrong target." + getTarget());
|
_log.warning("trying to pickup wrong target." + getTarget());
|
||||||
@@ -735,7 +736,7 @@ public class PlayerInstance extends Creature
|
|||||||
public void setTarget(WorldObject newTarget)
|
public void setTarget(WorldObject newTarget)
|
||||||
{
|
{
|
||||||
WorldObject oldTarget;
|
WorldObject oldTarget;
|
||||||
if (getCurrentState() == 2)
|
if (getCurrentState() == CreatureState.CASTING)
|
||||||
{
|
{
|
||||||
cancelCastMagic();
|
cancelCastMagic();
|
||||||
}
|
}
|
||||||
@@ -1244,6 +1245,7 @@ public class PlayerInstance extends Creature
|
|||||||
{
|
{
|
||||||
Creature target = null;
|
Creature target = null;
|
||||||
target = getTarget() instanceof Creature ? (Creature) getTarget() : this;
|
target = getTarget() instanceof Creature ? (Creature) getTarget() : this;
|
||||||
|
|
||||||
if ((skill.getTargetType() == Skill.TARGET_SELF) || (skill.getTargetType() == Skill.TARGET_PARTY))
|
if ((skill.getTargetType() == Skill.TARGET_SELF) || (skill.getTargetType() == Skill.TARGET_PARTY))
|
||||||
{
|
{
|
||||||
target = this;
|
target = this;
|
||||||
@@ -1256,6 +1258,7 @@ public class PlayerInstance extends Creature
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int weaponType = getActiveWeapon().getWeaponType();
|
int weaponType = getActiveWeapon().getWeaponType();
|
||||||
int skillId = skill.getId();
|
int skillId = skill.getId();
|
||||||
if ((skillId == 56) && (weaponType != 5))
|
if ((skillId == 56) && (weaponType != 5))
|
||||||
@@ -1274,10 +1277,11 @@ public class PlayerInstance extends Creature
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SkillHandler.getInstance().getSkillHandler(skill.getId()) == null)
|
if (SkillHandler.getInstance().getSkillHandler(skill.getId()) == null)
|
||||||
{
|
{
|
||||||
SystemMessage sm = new SystemMessage(614);
|
SystemMessage sm = new SystemMessage(614);
|
||||||
sm.addString("This skill is not implemented yet");
|
sm.addString("This skill is not implemented yet.");
|
||||||
sendPacket(sm);
|
sendPacket(sm);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1291,7 +1295,7 @@ public class PlayerInstance extends Creature
|
|||||||
sendPacket(new SystemMessage(23));
|
sendPacket(new SystemMessage(23));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setCurrentState((byte) 2);
|
setCurrentState(CreatureState.CASTING);
|
||||||
setSkill(skill);
|
setSkill(skill);
|
||||||
double distance = getDistance(target.getX(), target.getY());
|
double distance = getDistance(target.getX(), target.getY());
|
||||||
if ((skill.getCastRange() > 0) && (distance > skill.getCastRange()))
|
if ((skill.getCastRange() > 0) && (distance > skill.getCastRange()))
|
||||||
@@ -1313,10 +1317,10 @@ public class PlayerInstance extends Creature
|
|||||||
if (skill.getSkillTime() > 300)
|
if (skill.getSkillTime() > 300)
|
||||||
{
|
{
|
||||||
disableSkill(skill.getId(), true);
|
disableSkill(skill.getId(), true);
|
||||||
_enableSkillTimer.schedule(new EnableSkill(skill.getId()), skill.getReuseDelay());
|
|
||||||
disableAllSkills();
|
disableAllSkills();
|
||||||
_enableAllSkillsTimer.schedule(new EnableAllSkills(skill), skill.getSkillTime());
|
|
||||||
_magicUseTimer.schedule(new MagicUseTask(target, skill), skill.getHitTime());
|
_magicUseTimer.schedule(new MagicUseTask(target, skill), skill.getHitTime());
|
||||||
|
_enableSkillTimer.schedule(new EnableSkill(skill.getId()), skill.getReuseDelay());
|
||||||
|
_enableAllSkillsTimer.schedule(new EnableAllSkills(skill), skill.getSkillTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1391,7 +1395,7 @@ public class PlayerInstance extends Creature
|
|||||||
|
|
||||||
public void onMagicUseTimer(Creature target, Skill skill)
|
public void onMagicUseTimer(Creature target, Skill skill)
|
||||||
{
|
{
|
||||||
if ((getCurrentState() == 2) && _allSkillsDisabled && isSkillDisabled(skill.getId()) && (getSkill() == skill))
|
if ((getCurrentState() == CreatureState.CASTING) && (getSkill() == skill))
|
||||||
{
|
{
|
||||||
int magicId = skill.getId();
|
int magicId = skill.getId();
|
||||||
int level = getSkillLevel(magicId);
|
int level = getSkillLevel(magicId);
|
||||||
@@ -1417,13 +1421,13 @@ public class PlayerInstance extends Creature
|
|||||||
ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getId());
|
ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(skill.getId());
|
||||||
if (handler == null)
|
if (handler == null)
|
||||||
{
|
{
|
||||||
_log.warning("no skillhandler registered for skillId:" + skill.getId());
|
_log.warning("No skillhandler registered for skillId: " + skill.getId());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handler.useSkill(this, skill, target);
|
handler.useSkill(this, skill, target);
|
||||||
}
|
}
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1512,7 +1516,7 @@ public class PlayerInstance extends Creature
|
|||||||
|
|
||||||
public void cancelCastMagic()
|
public void cancelCastMagic()
|
||||||
{
|
{
|
||||||
setCurrentState((byte) 0);
|
setCurrentState(CreatureState.IDLE);
|
||||||
enableAllSkills();
|
enableAllSkills();
|
||||||
MagicSkillCanceld msc = new MagicSkillCanceld(getObjectId());
|
MagicSkillCanceld msc = new MagicSkillCanceld(getObjectId());
|
||||||
sendPacket(msc);
|
sendPacket(msc);
|
||||||
@@ -1578,5 +1582,4 @@ public class PlayerInstance extends Creature
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.network.clientpackets;
|
package org.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
import org.l2jmobius.gameserver.network.ClientThread;
|
import org.l2jmobius.gameserver.network.ClientThread;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
@@ -36,20 +37,20 @@ public class MoveBackwardToLocation extends ClientBasePacket
|
|||||||
int originY = readD();
|
int originY = readD();
|
||||||
int originZ = readD();
|
int originZ = readD();
|
||||||
PlayerInstance activeChar = client.getActiveChar();
|
PlayerInstance activeChar = client.getActiveChar();
|
||||||
if (activeChar.getCurrentState() == 2)
|
if (activeChar.getCurrentState() == CreatureState.CASTING)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new ActionFailed());
|
activeChar.sendPacket(new ActionFailed());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (activeChar.getCurrentState() == 5)
|
if (activeChar.getCurrentState() == CreatureState.ATTACKING)
|
||||||
{
|
{
|
||||||
AttackCanceld ac = new AttackCanceld(activeChar.getObjectId());
|
AttackCanceld ac = new AttackCanceld(activeChar.getObjectId());
|
||||||
activeChar.sendPacket(ac);
|
activeChar.sendPacket(ac);
|
||||||
activeChar.broadcastPacket(ac);
|
activeChar.broadcastPacket(ac);
|
||||||
}
|
}
|
||||||
activeChar.setInCombat(false);
|
activeChar.setInCombat(false);
|
||||||
activeChar.setCurrentState((byte) 0);
|
activeChar.setCurrentState(CreatureState.IDLE);
|
||||||
activeChar.setX(originX);
|
activeChar.setX(originX);
|
||||||
activeChar.setY(originY);
|
activeChar.setY(originY);
|
||||||
activeChar.setZ(originZ);
|
activeChar.setZ(originZ);
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.network.clientpackets;
|
package org.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
import org.l2jmobius.gameserver.network.ClientThread;
|
import org.l2jmobius.gameserver.network.ClientThread;
|
||||||
@@ -70,14 +71,14 @@ public class RequestActionUse extends ClientBasePacket
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (activeChar.getPet().getCurrentState() != 8)
|
if (activeChar.getPet().getCurrentState() != CreatureState.FOLLOW)
|
||||||
{
|
{
|
||||||
activeChar.getPet().setCurrentState((byte) 8);
|
activeChar.getPet().setCurrentState(CreatureState.FOLLOW);
|
||||||
activeChar.getPet().setFollowStatus(true);
|
activeChar.getPet().setFollowStatus(true);
|
||||||
activeChar.getPet().followOwner(activeChar);
|
activeChar.getPet().followOwner(activeChar);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
activeChar.getPet().setCurrentState((byte) 0);
|
activeChar.getPet().setCurrentState(CreatureState.IDLE);
|
||||||
activeChar.getPet().setFollowStatus(false);
|
activeChar.getPet().setFollowStatus(false);
|
||||||
activeChar.getPet().setMovingToPawn(false);
|
activeChar.getPet().setMovingToPawn(false);
|
||||||
activeChar.getPet().setPawnTarget(null);
|
activeChar.getPet().setPawnTarget(null);
|
||||||
@@ -100,13 +101,13 @@ public class RequestActionUse extends ClientBasePacket
|
|||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (activeChar.getPet().getCurrentState() == 8)
|
if (activeChar.getPet().getCurrentState() == CreatureState.FOLLOW)
|
||||||
{
|
{
|
||||||
activeChar.getPet().setFollowStatus(false);
|
activeChar.getPet().setFollowStatus(false);
|
||||||
activeChar.getPet().setMovingToPawn(false);
|
activeChar.getPet().setMovingToPawn(false);
|
||||||
activeChar.getPet().setPawnTarget(null);
|
activeChar.getPet().setPawnTarget(null);
|
||||||
}
|
}
|
||||||
activeChar.getPet().setCurrentState((byte) 0);
|
activeChar.getPet().setCurrentState(CreatureState.IDLE);
|
||||||
activeChar.getPet().stopMove();
|
activeChar.getPet().stopMove();
|
||||||
activeChar.getPet().broadcastPacket(new StopMove(activeChar.getPet()));
|
activeChar.getPet().broadcastPacket(new StopMove(activeChar.getPet()));
|
||||||
break;
|
break;
|
||||||
|
@@ -34,6 +34,7 @@ public class RequestMagicSkillUse extends ClientBasePacket
|
|||||||
int data2 = readD();
|
int data2 = readD();
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
int data3 = readC();
|
int data3 = readC();
|
||||||
|
|
||||||
PlayerInstance activeChar = client.getActiveChar();
|
PlayerInstance activeChar = client.getActiveChar();
|
||||||
int level = activeChar.getSkillLevel(magicId);
|
int level = activeChar.getSkillLevel(magicId);
|
||||||
Skill skill = SkillTable.getInstance().getInfo(magicId, level);
|
Skill skill = SkillTable.getInstance().getInfo(magicId, level);
|
||||||
@@ -44,7 +45,7 @@ public class RequestMagicSkillUse extends ClientBasePacket
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_log.warning("No skill found!!");
|
_log.warning(activeChar + " tried to cast skill " + magicId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.network.clientpackets;
|
package org.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.World;
|
import org.l2jmobius.gameserver.model.World;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.network.ClientThread;
|
import org.l2jmobius.gameserver.network.ClientThread;
|
||||||
@@ -32,7 +33,7 @@ public class RequestPetGetItem extends ClientBasePacket
|
|||||||
World world = World.getInstance();
|
World world = World.getInstance();
|
||||||
ItemInstance item = (ItemInstance) world.findObject(objectId);
|
ItemInstance item = (ItemInstance) world.findObject(objectId);
|
||||||
client.getActiveChar().getPet().setTarget(item);
|
client.getActiveChar().getPet().setTarget(item);
|
||||||
client.getActiveChar().getPet().setCurrentState((byte) 1);
|
client.getActiveChar().getPet().setCurrentState(CreatureState.PICKUP_ITEM);
|
||||||
client.getActiveChar().getPet().moveTo(item.getX(), item.getY(), item.getZ(), 0);
|
client.getActiveChar().getPet().moveTo(item.getX(), item.getY(), item.getZ(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.l2jmobius.gameserver.network.clientpackets;
|
package org.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
|
import org.l2jmobius.gameserver.enums.CreatureState;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
import org.l2jmobius.gameserver.network.ClientThread;
|
import org.l2jmobius.gameserver.network.ClientThread;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
|
||||||
@@ -30,7 +31,7 @@ public class RequestSocialAction extends ClientBasePacket
|
|||||||
super(decrypt);
|
super(decrypt);
|
||||||
int actionId = readD();
|
int actionId = readD();
|
||||||
PlayerInstance activeChar = client.getActiveChar();
|
PlayerInstance activeChar = client.getActiveChar();
|
||||||
if ((activeChar.getPrivateStoreType() == 0) && (activeChar.getTransactionRequester() == null) && (activeChar.getCurrentState() == 0))
|
if ((activeChar.getPrivateStoreType() == 0) && (activeChar.getTransactionRequester() == null) && (activeChar.getCurrentState() == CreatureState.IDLE))
|
||||||
{
|
{
|
||||||
SocialAction atk = new SocialAction(client.getActiveChar().getObjectId(), actionId);
|
SocialAction atk = new SocialAction(client.getActiveChar().getObjectId(), actionId);
|
||||||
activeChar.sendPacket(atk);
|
activeChar.sendPacket(atk);
|
||||||
|
Reference in New Issue
Block a user