From 6d011be2ff94df2f46699d977a197187428507a9 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 24 Nov 2019 12:37:12 +0000 Subject: [PATCH] Addition of WorldObject instance overrides. --- .../org/l2jmobius/gameserver/model/Spawn.java | 4 +- .../gameserver/model/WorldObject.java | 84 +++++++++++++++++-- .../gameserver/model/actor/Attackable.java | 6 ++ .../gameserver/model/actor/Creature.java | 6 ++ .../model/actor/instance/DoorInstance.java | 6 ++ .../model/actor/instance/ItemInstance.java | 6 ++ .../model/actor/instance/MonsterInstance.java | 6 ++ .../model/actor/instance/NpcInstance.java | 18 ++-- .../model/actor/instance/PetInstance.java | 6 ++ .../model/actor/instance/PlayerInstance.java | 6 ++ .../network/serverpackets/NpcInfo.java | 2 +- 11 files changed, 135 insertions(+), 15 deletions(-) diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/Spawn.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/Spawn.java index c1c442cde3..fbbce99b57 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/Spawn.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/Spawn.java @@ -184,11 +184,11 @@ public class Spawn mob.setObjectId(IdFactory.getInstance().getNextId()); if (mob instanceof MonsterInstance) { - mob.setAttackable(true); + mob.setAutoAttackable(true); } else { - mob.setAttackable(false); + mob.setAutoAttackable(false); } if (getRandomx() > 0) { diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java index a8742497d0..f9c7eea948 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java @@ -32,7 +32,7 @@ public class WorldObject implements Serializable private int _y; private int _z; protected Set _knownObjects = ConcurrentHashMap.newKeySet(); - private final Set _knownPlayer = ConcurrentHashMap.newKeySet(); + private final Set _knownPlayers = ConcurrentHashMap.newKeySet(); public int getObjectId() { @@ -87,7 +87,7 @@ public class WorldObject implements Serializable } /** - * Calculates the 2D distance between this WorldObject and given location. + * Calculates the 2D distance between this WorldObject and given object. * @param obj the location object * @return distance between object and given location. */ @@ -109,7 +109,7 @@ public class WorldObject implements Serializable } /** - * Calculates 3D distance between this WorldObject and given location. + * Calculates 3D distance between this WorldObject and given object. * @param obj the location object * @return distance between object and given location. */ @@ -143,7 +143,7 @@ public class WorldObject implements Serializable _knownObjects.add(object); if (object instanceof PlayerInstance) { - _knownPlayer.add((PlayerInstance) object); + _knownPlayers.add((PlayerInstance) object); } } @@ -152,7 +152,7 @@ public class WorldObject implements Serializable _knownObjects.remove(object); if (object instanceof PlayerInstance) { - _knownPlayer.remove(object); + _knownPlayers.remove(object); } } @@ -167,11 +167,83 @@ public class WorldObject implements Serializable public Set getKnownPlayers() { - return _knownPlayer; + return _knownPlayers; } public PlayerInstance getActingPlayer() { return null; } + + /** + * Verify if object is instance of Attackable. + * @return {@code true} if object is instance of Attackable, {@code false} otherwise + */ + public boolean isAttackable() + { + return false; + } + + /** + * Verify if object is instance of Creature. + * @return {@code true} if object is instance of Creature, {@code false} otherwise + */ + public boolean isCreature() + { + return false; + } + + /** + * Verify if object is instance of DoorInstance. + * @return {@code true} if object is instance of DoorInstance, {@code false} otherwise + */ + public boolean isDoor() + { + return false; + } + + /** + * Verify if object is instance of ItemInstance. + * @return {@code true} if object is instance of ItemInstance, {@code false} otherwise + */ + public boolean isItem() + { + return false; + } + + /** + * Verify if object is instance of MonsterInstance. + * @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise + */ + public boolean isMonster() + { + return false; + } + + /** + * Verify if object is instance of Npc. + * @return {@code true} if object is instance of Npc, {@code false} otherwise + */ + public boolean isNpc() + { + return false; + } + + /** + * Verify if object is instance of PetInstance. + * @return {@code true} if object is instance of PetInstance, {@code false} otherwise + */ + public boolean isPet() + { + return false; + } + + /** + * Verify if object is instance of PlayerInstance. + * @return {@code true} if object is instance of PlayerInstance, {@code false} otherwise + */ + public boolean isPlayer() + { + return false; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java index d08ef4b912..9d45474d05 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Attackable.java @@ -445,4 +445,10 @@ public class Attackable extends NpcInstance moveTo(x1, y1, getZ(), 0); } } + + @Override + public boolean isAttackable() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index c22a0c21cc..3964db029d 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1524,4 +1524,10 @@ public abstract class Creature extends WorldObject World.getInstance().addVisibleObject(this); }, 2000); } + + @Override + public boolean isCreature() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java index c14aa1c5b4..fc4a8c0d67 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/DoorInstance.java @@ -71,4 +71,10 @@ public class DoorInstance extends WorldObject { _unknown = unknown; } + + @Override + public boolean isDoor() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java index 78a4e7a9c0..bdd1b1f37a 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ItemInstance.java @@ -134,4 +134,10 @@ public class ItemInstance extends WorldObject { _onTheGround = b; } + + @Override + public boolean isItem() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/MonsterInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/MonsterInstance.java index 555cb0b1d2..9978ca4f31 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/MonsterInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/MonsterInstance.java @@ -86,4 +86,10 @@ public class MonsterInstance extends Attackable { return !player.isInvul() && !player.isDead() && (Math.abs(getZ() - player.getZ()) <= 100); } + + @Override + public boolean isMonster() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/NpcInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/NpcInstance.java index dd826c79c8..405a304e79 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/NpcInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/NpcInstance.java @@ -87,14 +87,14 @@ public class NpcInstance extends Creature return _npcTemplate; } - public boolean isAttackable() + public boolean isAutoAttackable() { return _attackable; } - public void setAttackable(boolean b) + public void setAutoAttackable(boolean value) { - _attackable = b; + _attackable = value; } public int getLeftHandItem() @@ -130,7 +130,7 @@ public class NpcInstance extends Creature player.setTarget(this); final MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()); player.sendPacket(my); - if (isAttackable()) + if (isAutoAttackable()) { final StatusUpdate su = new StatusUpdate(getObjectId()); su.addAttribute(StatusUpdate.CUR_HP, (int) getCurrentHp()); @@ -141,11 +141,11 @@ public class NpcInstance extends Creature } else { - if (isAttackable() && !isDead() && !player.isInCombat() && (Math.abs(player.getZ() - getZ()) < 200)) + if (isAutoAttackable() && !isDead() && !player.isInCombat() && (Math.abs(player.getZ() - getZ()) < 200)) { player.startAttack(this); } - if (!isAttackable()) + if (!isAutoAttackable()) { final double distance = getDistance(player.getX(), player.getY()); if (distance > INTERACTION_DISTANCE) @@ -343,4 +343,10 @@ public class NpcInstance extends Creature World.getInstance().removeObject(this); removeAllKnownObjects(); } + + @Override + public boolean isNpc() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java index 91beee0b14..32c626107d 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PetInstance.java @@ -613,4 +613,10 @@ public class PetInstance extends Creature { return _owner; } + + @Override + public boolean isPet() + { + return true; + } } diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 78cf57a92c..257944058d 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -1893,6 +1893,12 @@ public class PlayerInstance extends Creature } } + @Override + public boolean isPlayer() + { + return true; + } + @Override public PlayerInstance getActingPlayer() { diff --git a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java index d81e6e1ea4..5da2c209cb 100644 --- a/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java +++ b/L2J_Mobius_C1_HarbingersOfWar/java/org/l2jmobius/gameserver/network/serverpackets/NpcInfo.java @@ -44,7 +44,7 @@ public class NpcInfo extends ServerBasePacket writeC(34); writeD(_cha.getObjectId()); writeD(_cha.getNpcTemplate().getNpcId() + 1000000); - if (_cha.isAttackable()) + if (_cha.isAutoAttackable()) { writeD(1); }