UserInfo.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package com.l2jserver.gameserver.network.serverpackets;
  16. import com.l2jserver.Config;
  17. import com.l2jserver.gameserver.datatables.NpcTable;
  18. import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
  19. import com.l2jserver.gameserver.instancemanager.TerritoryWarManager;
  20. import com.l2jserver.gameserver.model.Elementals;
  21. import com.l2jserver.gameserver.model.L2Transformation;
  22. import com.l2jserver.gameserver.model.actor.L2Summon;
  23. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  24. import com.l2jserver.gameserver.model.itemcontainer.Inventory;
  25. import com.l2jserver.gameserver.skills.AbnormalEffect;
  26. import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
  27. /**
  28. * 0000: 04 03 15 00 00 77 ff 00 00 80 f1 ff ff 00 00 00 .....w..........
  29. * 0010: 00 2a 89 00 4c 43 00 61 00 6c 00 61 00 64 00 6f .*..LC.a.l.a.d.o
  30. * 0020: 00 6e 00 00 00 01 00 00 00 00 00 00 00 19 00 00 .n..............
  31. * 0030: 00 0d 00 00 00 ee 81 02 00 15 00 00 00 18 00 00 ................
  32. * 0040: 00 19 00 00 00 25 00 00 00 17 00 00 00 28 00 00 .....%.......(..
  33. * 0050: 00 14 01 00 00 14 01 00 00 02 01 00 00 02 01 00 ................
  34. * 0060: 00 fa 09 00 00 81 06 00 00 26 34 00 00 2e 00 00 .........&4.....
  35. * 0070: 00 00 00 00 00 db 9f a1 41 93 26 64 41 de c8 31 ........A.&dA..1
  36. * 0080: 41 ca 73 c0 41 d5 22 d0 41 83 bd 41 41 81 56 10 A.s.A.".A..AA.V.
  37. * 0090: 41 00 00 00 00 27 7d 30 41 69 aa e0 40 b4 fb d3 A....'}0Ai..@...
  38. * 00a0: 41 91 f9 63 41 00 00 00 00 81 56 10 41 00 00 00 A..cA.....V.A...
  39. * 00b0: 00 71 00 00 00 71 00 00 00 76 00 00 00 74 00 00 .q...q...v...t..
  40. * 00c0: 00 74 00 00 00 2a 00 00 00 e8 02 00 00 00 00 00 .t...*..........
  41. * 00d0: 00 5f 04 00 00 ac 01 00 00 cf 01 00 00 62 04 00 ._...........b..
  42. * 00e0: 00 00 00 00 00 e8 02 00 00 0b 00 00 00 52 01 00 .............R..
  43. * 00f0: 00 4d 00 00 00 2a 00 00 00 2f 00 00 00 29 00 00 .M...*.../...)..
  44. * 0100: 00 12 00 00 00 82 01 00 00 52 01 00 00 53 00 00 .........R...S..
  45. * 0110: 00 00 00 00 00 00 00 00 00 7a 00 00 00 55 00 00 .........z...U..
  46. * 0120: 00 32 00 00 00 32 00 00 00 00 00 00 00 00 00 00 .2...2..........
  47. * 0130: 00 00 00 00 00 00 00 00 00 a4 70 3d 0a d7 a3 f0 ..........p=....
  48. * 0140: 3f 64 5d dc 46 03 78 f3 3f 00 00 00 00 00 00 1e ?d].F.x.?.......
  49. * 0150: 40 00 00 00 00 00 00 38 40 02 00 00 00 01 00 00 @......8@.......
  50. * 0160: 00 00 00 00 00 00 00 00 00 00 00 c1 0c 00 00 01 ................
  51. * 0170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
  52. * 0180: 00 00 00 00 ....
  53. *
  54. *
  55. * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddcccdd (h)
  56. * dddddSddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ffffddddSdddddcccddh (h) c dc hhdh
  57. * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccddh (h) c dc hhdh ddddc c dcc cddd d (from 654)
  58. * but it actually reads
  59. * dddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccddh (h) c dc *dddddddd* hhdh ddddc dcc cddd d
  60. * *...*: here i am not sure at least it looks like it reads that much data (32 bytes), not sure about the format inside because it is not read thanks to the ususal parsing function
  61. *
  62. * dddddSddddQddddddddddddddddddddddddddddddddddddddddddddddddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhddddddddddddddddddddffffddddSdddddcccddh [h] c dc d hhdh ddddc c dcc cddd d c dd d d
  63. * @version $Revision: 1.14.2.4.2.12 $ $Date: 2005/04/11 10:05:55 $
  64. */
  65. public final class UserInfo extends L2GameServerPacket
  66. {
  67. private static final String _S__04_USERINFO = "[S] 32 UserInfo";
  68. private L2PcInstance _activeChar;
  69. /**
  70. * Run speed, swimming run speed and flying run speed
  71. */
  72. private int _runSpd;
  73. /**
  74. * Walking speed, swimming walking speed and flying walking speed
  75. */
  76. private int _walkSpd;
  77. private int _relation;
  78. private float _moveMultiplier;
  79. private int _territoryId;
  80. private boolean _isDisguised;
  81. private int _airShipHelm;
  82. /**
  83. * @param _characters
  84. */
  85. public UserInfo(L2PcInstance character)
  86. {
  87. _activeChar = character;
  88. _moveMultiplier = _activeChar.getMovementSpeedMultiplier();
  89. _runSpd = Math.round((_activeChar.getRunSpeed() / _moveMultiplier));
  90. _walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);
  91. _territoryId = TerritoryWarManager.getInstance().getRegisteredTerritoryId(character);
  92. _relation = _activeChar.isClanLeader() ? 0x40 : 0;
  93. if (_activeChar.getSiegeState() == 1)
  94. {
  95. if (_territoryId == 0)
  96. _relation |= 0x180;
  97. else
  98. _relation |= 0x1000;
  99. }
  100. if (_activeChar.getSiegeState() == 2) _relation |= 0x80;
  101. _isDisguised = TerritoryWarManager.getInstance().isDisguised(character.getObjectId());
  102. if (_activeChar.isInAirShip() && _activeChar.getAirShip().isCaptain(_activeChar))
  103. _airShipHelm = _activeChar.getAirShip().getHelmItemId();
  104. else
  105. _airShipHelm = 0;
  106. }
  107. @Override
  108. protected final void writeImpl()
  109. {
  110. writeC(0x32);
  111. writeD(_activeChar.getX());
  112. writeD(_activeChar.getY());
  113. writeD(_activeChar.getZ());
  114. if (_activeChar.getVehicle() != null)
  115. writeD(_activeChar.getVehicle().getObjectId());
  116. else
  117. writeD(0);
  118. writeD(_activeChar.getObjectId());
  119. writeS(_activeChar.getName());
  120. writeD(_activeChar.getRace().ordinal());
  121. writeD(_activeChar.getAppearance().getSex()? 1 : 0);
  122. if (_activeChar.getClassIndex() == 0) writeD(_activeChar.getClassId().getId());
  123. else writeD(_activeChar.getBaseClass());
  124. writeD(_activeChar.getLevel());
  125. writeQ(_activeChar.getExp());
  126. writeD(_activeChar.getSTR());
  127. writeD(_activeChar.getDEX());
  128. writeD(_activeChar.getCON());
  129. writeD(_activeChar.getINT());
  130. writeD(_activeChar.getWIT());
  131. writeD(_activeChar.getMEN());
  132. writeD(_activeChar.getMaxVisibleHp());
  133. writeD((int) _activeChar.getCurrentHp());
  134. writeD(_activeChar.getMaxMp());
  135. writeD((int) _activeChar.getCurrentMp());
  136. writeD(_activeChar.getSp());
  137. writeD(_activeChar.getCurrentLoad());
  138. writeD(_activeChar.getMaxLoad());
  139. writeD(_activeChar.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equippe
  140. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER));
  141. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
  142. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
  143. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
  144. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
  145. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
  146. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
  147. if (_airShipHelm == 0)
  148. {
  149. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
  150. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
  151. }
  152. else
  153. {
  154. writeD(0);
  155. writeD(0);
  156. }
  157. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
  158. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
  159. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
  160. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
  161. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
  162. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
  163. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
  164. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR2));
  165. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RBRACELET));
  166. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LBRACELET));
  167. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO1));
  168. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO2));
  169. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO3));
  170. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO4));
  171. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO5));
  172. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO6));
  173. writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BELT)); // CT2.3
  174. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
  175. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
  176. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
  177. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
  178. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
  179. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
  180. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
  181. if (_airShipHelm == 0)
  182. {
  183. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
  184. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
  185. }
  186. else
  187. {
  188. writeD(_airShipHelm);
  189. writeD(0);
  190. }
  191. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
  192. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
  193. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
  194. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
  195. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
  196. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
  197. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
  198. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
  199. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
  200. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
  201. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
  202. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
  203. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
  204. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
  205. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
  206. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
  207. writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BELT)); // CT2.3
  208. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
  209. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_REAR));
  210. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LEAR));
  211. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_NECK));
  212. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RFINGER));
  213. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LFINGER));
  214. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
  215. if (_airShipHelm == 0)
  216. {
  217. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
  218. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
  219. }
  220. else
  221. {
  222. writeD(0);
  223. writeD(0);
  224. }
  225. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_GLOVES));
  226. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_CHEST));
  227. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LEGS));
  228. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_FEET));
  229. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_BACK));
  230. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
  231. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR));
  232. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR2));
  233. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RBRACELET));
  234. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LBRACELET));
  235. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO1));
  236. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO2));
  237. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO3));
  238. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO4));
  239. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO5));
  240. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO6));
  241. writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_BELT)); // CT2.3
  242. writeD(_activeChar.getInventory().getMaxTalismanCount()); // CT2.3
  243. writeD(_activeChar.getInventory().getCloakStatus()); // CT2.3
  244. writeD(_activeChar.getPAtk(null));
  245. writeD(_activeChar.getPAtkSpd());
  246. writeD(_activeChar.getPDef(null));
  247. writeD(_activeChar.getEvasionRate(null));
  248. writeD(_activeChar.getAccuracy());
  249. writeD(_activeChar.getCriticalHit(null, null));
  250. writeD(_activeChar.getMAtk(null, null));
  251. writeD(_activeChar.getMAtkSpd());
  252. writeD(_activeChar.getPAtkSpd());
  253. writeD(_activeChar.getMDef(null, null));
  254. writeD(_activeChar.getPvpFlag()); // 0-non-pvp 1-pvp = violett name
  255. writeD(_activeChar.getKarma());
  256. writeD(_runSpd);
  257. writeD(_walkSpd);
  258. writeD(_runSpd); // swim run speed
  259. writeD(_walkSpd); // swim walk speed
  260. writeD(0);
  261. writeD(0);
  262. writeD(_activeChar.isFlying() ? _runSpd : 0); // fly speed
  263. writeD(_activeChar.isFlying() ? _walkSpd : 0); // fly speed
  264. writeF(_moveMultiplier);
  265. writeF(_activeChar.getAttackSpeedMultiplier());
  266. L2Summon pet = _activeChar.getPet();
  267. L2Transformation trans;
  268. if (_activeChar.getMountType() != 0 && pet != null)
  269. {
  270. writeF(pet.getTemplate().fCollisionRadius);
  271. writeF(pet.getTemplate().fCollisionHeight);
  272. }
  273. else if ((trans = _activeChar.getTransformation()) != null)
  274. {
  275. writeF(trans.getCollisionRadius());
  276. writeF(trans.getCollisionHeight());
  277. }
  278. else
  279. {
  280. writeF(_activeChar.getCollisionRadius());
  281. writeF(_activeChar.getCollisionHeight());
  282. }
  283. writeD(_activeChar.getAppearance().getHairStyle());
  284. writeD(_activeChar.getAppearance().getHairColor());
  285. writeD(_activeChar.getAppearance().getFace());
  286. writeD(_activeChar.isGM() ? 1 : 0); // builder level
  287. String title = _activeChar.getTitle();
  288. if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM()) title = "Invisible";
  289. if (_activeChar.getPoly().isMorphed())
  290. {
  291. L2NpcTemplate polyObj = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());
  292. if(polyObj != null)
  293. title += " - " + polyObj.name;
  294. }
  295. writeS(title);
  296. writeD(_activeChar.getClanId());
  297. writeD(_activeChar.getClanCrestId());
  298. writeD(_activeChar.getAllyId());
  299. writeD(_activeChar.getAllyCrestId()); // ally crest id
  300. // 0x40 leader rights
  301. // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader)
  302. writeD(_relation);
  303. writeC(_activeChar.getMountType()); // mount type
  304. writeC(_activeChar.getPrivateStoreType());
  305. writeC(_activeChar.hasDwarvenCraft() ? 1 : 0);
  306. writeD(_activeChar.getPkKills());
  307. writeD(_activeChar.getPvpKills());
  308. writeH(_activeChar.getCubics().size());
  309. for (int id : _activeChar.getCubics().keySet())
  310. writeH(id);
  311. writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0);
  312. if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM())
  313. writeD(_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask());
  314. else
  315. writeD(_activeChar.getAbnormalEffect());
  316. writeC(_activeChar.isFlyingMounted() ? 2 : 0);
  317. writeD(_activeChar.getClanPrivileges());
  318. writeH(_activeChar.getRecomLeft()); //c2 recommendations remaining
  319. writeH(_activeChar.getRecomHave()); //c2 recommendations received
  320. writeD(_activeChar.getMountNpcId() > 0 ? _activeChar.getMountNpcId() + 1000000 : 0);
  321. writeH(_activeChar.getInventoryLimit());
  322. writeD(_activeChar.getClassId().getId());
  323. writeD(0x00); // special effects? circles around player...
  324. writeD(_activeChar.getMaxCp());
  325. writeD((int) _activeChar.getCurrentCp());
  326. writeC(_activeChar.isMounted() || _airShipHelm != 0 ? 0 : _activeChar.getEnchantEffect());
  327. if(_activeChar.getTeam()==1)
  328. writeC(0x01); //team circle around feet 1= Blue, 2 = red
  329. else if(_activeChar.getTeam()==2)
  330. writeC(0x02); //team circle around feet 1= Blue, 2 = red
  331. else
  332. writeC(0x00); //team circle around feet 1= Blue, 2 = red
  333. writeD(_activeChar.getClanCrestLargeId());
  334. writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
  335. writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); //0x01: Hero Aura
  336. writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
  337. writeD(_activeChar.getFishx()); //fishing x
  338. writeD(_activeChar.getFishy()); //fishing y
  339. writeD(_activeChar.getFishz()); //fishing z
  340. writeD(_activeChar.getAppearance().getNameColor());
  341. //new c5
  342. writeC(_activeChar.isRunning() ? 0x01 : 0x00); //changes the Speed display on Status Window
  343. writeD(_activeChar.getPledgeClass()); //changes the text above CP on Status Window
  344. writeD(_activeChar.getPledgeType());
  345. writeD(_activeChar.getAppearance().getTitleColor());
  346. if (_activeChar.isCursedWeaponEquipped())
  347. writeD(CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()));
  348. else
  349. writeD(0x00);
  350. // T1 Starts
  351. writeD(_activeChar.getTransformationId());
  352. byte attackAttribute = _activeChar.getAttackElement();
  353. writeH(attackAttribute);
  354. writeH(_activeChar.getAttackElementValue(attackAttribute));
  355. writeH(_activeChar.getDefenseElementValue(Elementals.FIRE));
  356. writeH(_activeChar.getDefenseElementValue(Elementals.WATER));
  357. writeH(_activeChar.getDefenseElementValue(Elementals.WIND));
  358. writeH(_activeChar.getDefenseElementValue(Elementals.EARTH));
  359. writeH(_activeChar.getDefenseElementValue(Elementals.HOLY));
  360. writeH(_activeChar.getDefenseElementValue(Elementals.DARK));
  361. writeD(_activeChar.getAgathionId());
  362. // T2 Starts
  363. writeD(_activeChar.getFame()); // Fame
  364. writeD(_activeChar.isMinimapAllowed() ? 1: 0); // Minimap on Hellbound
  365. writeD(_activeChar.getVitalityPoints()); // Vitality Points
  366. writeD(_activeChar.getSpecialEffect());
  367. writeD(_territoryId); // CT2.3
  368. writeD((_isDisguised ? 0x01: 0x00)); // CT2.3
  369. writeD(_territoryId); // CT2.3
  370. }
  371. /* (non-Javadoc)
  372. * @see com.l2jserver.gameserver.serverpackets.ServerBasePacket#getType()
  373. */
  374. @Override
  375. public String getType()
  376. {
  377. return _S__04_USERINFO;
  378. }
  379. }