L2Trap.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. /* This program is free software; you can redistribute it and/or modify
  2. * it under the terms of the GNU General Public License as published by
  3. * the Free Software Foundation; either version 2, or (at your option)
  4. * any later version.
  5. *
  6. * This program is distributed in the hope that it will be useful,
  7. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. * GNU General Public License for more details.
  10. *
  11. * You should have received a copy of the GNU General Public License
  12. * along with this program; if not, write to the Free Software
  13. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  14. * 02111-1307, USA.
  15. *
  16. * http://www.gnu.org/copyleft/gpl.html
  17. */
  18. package net.sf.l2j.gameserver.model;
  19. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  20. import net.sf.l2j.gameserver.serverpackets.MyTargetSelected;
  21. import net.sf.l2j.gameserver.taskmanager.DecayTaskManager;
  22. import net.sf.l2j.gameserver.templates.L2CharTemplate;
  23. import net.sf.l2j.gameserver.templates.L2NpcTemplate;
  24. import net.sf.l2j.gameserver.templates.L2Weapon;
  25. /**
  26. *
  27. * @author nBd
  28. */
  29. public class L2Trap extends L2Character
  30. {
  31. private L2PcInstance _owner;
  32. /**
  33. * @param objectId
  34. * @param template
  35. */
  36. public L2Trap(int objectId, L2CharTemplate template, L2PcInstance owner)
  37. {
  38. super(objectId, template);
  39. getKnownList();
  40. getStat();
  41. getStatus();
  42. _owner = owner;
  43. setXYZInvisible(owner.getX(), owner.getY(), owner.getZ());
  44. }
  45. /**
  46. *
  47. * @see net.sf.l2j.gameserver.model.L2Character#onSpawn()
  48. */
  49. @Override
  50. public void onSpawn()
  51. {
  52. super.onSpawn();
  53. }
  54. /**
  55. *
  56. * @see net.sf.l2j.gameserver.model.L2Object#onAction(net.sf.l2j.gameserver.model.actor.instance.L2PcInstance)
  57. */
  58. @Override
  59. public void onAction(L2PcInstance player)
  60. {
  61. player.setTarget(this);
  62. MyTargetSelected my = new MyTargetSelected(getObjectId(), player.getLevel() - getLevel());
  63. player.sendPacket(my);
  64. }
  65. /**
  66. *
  67. *
  68. */
  69. public void stopDecay()
  70. {
  71. DecayTaskManager.getInstance().cancelDecayTask(this);
  72. }
  73. /**
  74. *
  75. * @see net.sf.l2j.gameserver.model.L2Character#onDecay()
  76. */
  77. @Override
  78. public void onDecay()
  79. {
  80. deleteMe(_owner);
  81. }
  82. /**
  83. *
  84. * @return
  85. */
  86. public final int getNpcId()
  87. {
  88. return getTemplate().npcId;
  89. }
  90. /**
  91. *
  92. * @see net.sf.l2j.gameserver.model.L2Object#isAutoAttackable(net.sf.l2j.gameserver.model.L2Character)
  93. */
  94. @Override
  95. public boolean isAutoAttackable(L2Character attacker)
  96. {
  97. return _owner.isAutoAttackable(attacker);
  98. }
  99. /**
  100. *
  101. * @param owner
  102. */
  103. public void deleteMe(L2PcInstance owner)
  104. {
  105. decayMe();
  106. getKnownList().removeAllKnownObjects();
  107. owner.setTrap(null);
  108. }
  109. /**
  110. *
  111. * @param owner
  112. */
  113. public synchronized void unSummon(L2PcInstance owner)
  114. {
  115. if (isVisible() && !isDead())
  116. {
  117. if (getWorldRegion() != null)
  118. getWorldRegion().removeFromZones(this);
  119. owner.setTrap(null);
  120. decayMe();
  121. getKnownList().removeAllKnownObjects();
  122. }
  123. }
  124. /**
  125. *
  126. * @see net.sf.l2j.gameserver.model.L2Character#getActiveWeaponInstance()
  127. */
  128. @Override
  129. public L2ItemInstance getActiveWeaponInstance()
  130. {
  131. return null;
  132. }
  133. /**
  134. *
  135. * @see net.sf.l2j.gameserver.model.L2Character#getActiveWeaponItem()
  136. */
  137. @Override
  138. public L2Weapon getActiveWeaponItem()
  139. {
  140. return null;
  141. }
  142. /**
  143. *
  144. * @see net.sf.l2j.gameserver.model.L2Character#getLevel()
  145. */
  146. @Override
  147. public int getLevel()
  148. {
  149. return getTemplate().level;
  150. }
  151. /**
  152. *
  153. * @return
  154. */
  155. public final L2PcInstance getOwner()
  156. {
  157. return _owner;
  158. }
  159. /**
  160. *
  161. * @see net.sf.l2j.gameserver.model.L2Character#getTemplate()
  162. */
  163. @Override
  164. public L2NpcTemplate getTemplate()
  165. {
  166. return (L2NpcTemplate) super.getTemplate();
  167. }
  168. /**
  169. *
  170. * @see net.sf.l2j.gameserver.model.L2Character#getSecondaryWeaponInstance()
  171. */
  172. @Override
  173. public L2ItemInstance getSecondaryWeaponInstance()
  174. {
  175. return null;
  176. }
  177. /**
  178. *
  179. * @see net.sf.l2j.gameserver.model.L2Character#getSecondaryWeaponItem()
  180. */
  181. @Override
  182. public L2Weapon getSecondaryWeaponItem()
  183. {
  184. return null;
  185. }
  186. /**
  187. *
  188. * @see net.sf.l2j.gameserver.model.L2Character#updateAbnormalEffect()
  189. */
  190. @Override
  191. public void updateAbnormalEffect()
  192. {
  193. }
  194. /**
  195. *
  196. * @return
  197. */
  198. public boolean isDetected()
  199. {
  200. return false;
  201. }
  202. /**
  203. *
  204. *
  205. */
  206. public void setDetected()
  207. {
  208. // Do nothing
  209. }
  210. }