Advertisement
Guest User

Die.java

a guest
Dec 11th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.90 KB | None | 0 0
  1. package com.l2jfrozen.gameserver.network.serverpackets;
  2.  
  3. import com.l2jfrozen.gameserver.datatables.AccessLevel;
  4. import com.l2jfrozen.gameserver.datatables.sql.AccessLevels;
  5. import com.l2jfrozen.gameserver.managers.CastleManager;
  6. import com.l2jfrozen.gameserver.managers.FortManager;
  7. import com.l2jfrozen.gameserver.model.L2Attackable;
  8. import com.l2jfrozen.gameserver.model.L2Character;
  9. import com.l2jfrozen.gameserver.model.L2SiegeClan;
  10. import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
  11. import com.l2jfrozen.gameserver.model.entity.event.CTF;
  12. import com.l2jfrozen.gameserver.model.entity.event.DM;
  13. import com.l2jfrozen.gameserver.model.entity.event.TvT;
  14. import com.l2jfrozen.gameserver.model.entity.siege.Castle;
  15. import com.l2jfrozen.gameserver.model.entity.siege.Fort;
  16. import com.l2jfrozen.gameserver.model.zone.type.L2MultiFunctionZone;
  17.  
  18. /**
  19.  * sample 0b 952a1048 objectId 00000000 00000000 00000000 00000000 00000000 00000000 format dddddd rev 377 format ddddddd rev 417
  20.  * @version $Revision: 1.3.3 $ $Date: 2009/04/29 00:46:18 $
  21.  */
  22. public class Die extends L2GameServerPacket
  23. {
  24. private static final String _S__0B_DIE = "[S] 06 Die";
  25. private final int _charObjId;
  26. private final boolean _fake;
  27. private boolean _sweepable;
  28. private boolean _canTeleport;
  29. private AccessLevel _access = AccessLevels.getInstance()._userAccessLevel;
  30. private com.l2jfrozen.gameserver.model.L2Clan _clan;
  31. L2Character _activeChar;
  32.  
  33. /**
  34. * @param cha
  35. */
  36. public Die(final L2Character cha)
  37. {
  38. _activeChar = cha;
  39. if (cha instanceof L2PcInstance)
  40. {
  41. final L2PcInstance player = (L2PcInstance) cha;
  42. _access = player.getAccessLevel();
  43. _clan = player.getClan();
  44. _canTeleport = !((TvT.is_started() && player._inEventTvT) || (DM.is_started() && player._inEventDM) || (CTF.is_started() && player._inEventCTF) || player.isInFunEvent() || player.isPendingRevive() || (player.isInsideZone(L2Character.ZONE_MULTIFUNCTION);  
  45. _charObjId = cha.getObjectId();
  46. _fake = !cha.isDead();
  47. if (cha instanceof L2Attackable)
  48. _sweepable = ((L2Attackable) cha).isSweepActive();
  49.  }
  50. }
  51.  
  52. @Override
  53. protected final void writeImpl()
  54. {
  55. if (_fake)
  56. return;
  57.  
  58. writeC(0x06);
  59.  
  60. writeD(_charObjId);
  61. // NOTE:
  62. // 6d 00 00 00 00 - to nearest village
  63. // 6d 01 00 00 00 - to hide away
  64. // 6d 02 00 00 00 - to castle
  65. // 6d 03 00 00 00 - to siege HQ
  66. // sweepable
  67. // 6d 04 00 00 00 - FIXED
  68.  
  69. writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village
  70.  
  71. if (_canTeleport && _clan != null)
  72. {
  73. L2SiegeClan siegeClan = null;
  74. Boolean isInDefense = false;
  75. final Castle castle = CastleManager.getInstance().getCastle(_activeChar);
  76. final Fort fort = FortManager.getInstance().getFort(_activeChar);
  77.  
  78. if (castle != null && castle.getSiege().getIsInProgress())
  79. {
  80. // siege in progress
  81. siegeClan = castle.getSiege().getAttackerClan(_clan);
  82. if (siegeClan == null && castle.getSiege().checkIsDefender(_clan))
  83. {
  84. isInDefense = true;
  85. }
  86. }
  87. else if (fort != null && fort.getSiege().getIsInProgress())
  88. {
  89. // siege in progress
  90. siegeClan = fort.getSiege().getAttackerClan(_clan);
  91. if (siegeClan == null && fort.getSiege().checkIsDefender(_clan))
  92. {
  93. isInDefense = true;
  94. }
  95. }
  96.  
  97. writeD(_clan.getHasHideout() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away
  98. writeD(_clan.getHasCastle() > 0 || _clan.getHasFort() > 0 || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle
  99. writeD(siegeClan != null && !isInDefense && siegeClan.getFlag().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ
  100. }
  101. else
  102. {
  103. writeD(0x00); // 6d 01 00 00 00 - to hide away
  104. writeD(0x00); // 6d 02 00 00 00 - to castle
  105. writeD(0x00); // 6d 03 00 00 00 - to siege HQ
  106. }
  107.  
  108. writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow)
  109. writeD(_access.allowFixedRes() ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED
  110. }
  111.  
  112. /*
  113. * (non-Javadoc)
  114. * @see com.l2jfrozen.gameserver.serverpackets.ServerBasePacket#getType()
  115. */
  116. @Override
  117. public String getType()
  118. {
  119. return _S__0B_DIE;
  120.  }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement