Advertisement
Guest User

Die.java

a guest
Dec 11th, 2014
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.15 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) && L2MultiFunctionZone.revive));
  45.         }
  46.         _charObjId = cha.getObjectId();
  47.         _fake = !cha.isDead();
  48.         if (cha instanceof L2Attackable)
  49.         {
  50.             _sweepable = ((L2Attackable) cha).isSweepActive();
  51.         }
  52.        
  53.     }
  54.    
  55.     @Override
  56.     protected final void writeImpl()
  57.     {
  58.         if (_fake)
  59.             return;
  60.        
  61.         writeC(0x06);
  62.        
  63.         writeD(_charObjId);
  64.         // NOTE:
  65.         // 6d 00 00 00 00 - to nearest village
  66.         // 6d 01 00 00 00 - to hide away
  67.         // 6d 02 00 00 00 - to castle
  68.         // 6d 03 00 00 00 - to siege HQ
  69.         // sweepable
  70.         // 6d 04 00 00 00 - FIXED
  71.        
  72.         writeD(_canTeleport ? 0x01 : 0); // 6d 00 00 00 00 - to nearest village
  73.        
  74.         if (_canTeleport && _clan != null)
  75.         {
  76.             L2SiegeClan siegeClan = null;
  77.             Boolean isInDefense = false;
  78.             final Castle castle = CastleManager.getInstance().getCastle(_activeChar);
  79.             final Fort fort = FortManager.getInstance().getFort(_activeChar);
  80.            
  81.             if (castle != null && castle.getSiege().getIsInProgress())
  82.             {
  83.                 // siege in progress
  84.                 siegeClan = castle.getSiege().getAttackerClan(_clan);
  85.                 if (siegeClan == null && castle.getSiege().checkIsDefender(_clan))
  86.                 {
  87.                     isInDefense = true;
  88.                 }
  89.             }
  90.             else if (fort != null && fort.getSiege().getIsInProgress())
  91.             {
  92.                 // siege in progress
  93.                 siegeClan = fort.getSiege().getAttackerClan(_clan);
  94.                 if (siegeClan == null && fort.getSiege().checkIsDefender(_clan))
  95.                 {
  96.                     isInDefense = true;
  97.                 }
  98.             }
  99.            
  100.             writeD(_clan.getHasHideout() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away
  101.             writeD(_clan.getHasCastle() > 0 || _clan.getHasFort() > 0 || isInDefense ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle
  102.             writeD(siegeClan != null && !isInDefense && siegeClan.getFlag().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ
  103.         }
  104.         else
  105.         {
  106.             writeD(0x00); // 6d 01 00 00 00 - to hide away
  107.             writeD(0x00); // 6d 02 00 00 00 - to castle
  108.             writeD(0x00); // 6d 03 00 00 00 - to siege HQ
  109.         }
  110.        
  111.         writeD(_sweepable ? 0x01 : 0x00); // sweepable (blue glow)
  112.         writeD(_access.allowFixedRes() ? 0x01 : 0x00); // 6d 04 00 00 00 - to FIXED
  113.     }
  114.    
  115.     /*
  116.      * (non-Javadoc)
  117.      * @see com.l2jfrozen.gameserver.serverpackets.ServerBasePacket#getType()
  118.      */
  119.     @Override
  120.     public String getType()
  121.     {
  122.         return _S__0B_DIE;
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement