gabrielb

VIP_System_Sylph_Essence_Custom_Addon_By_Gabriel

Apr 27th, 2021
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 168.77 KB | None | 0 0
  1. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/impl/creature/player/OnPlayerLoad.java
  2. IDEA additional info:
  3. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  4. <+>UTF-8
  5. ===================================================================
  6. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/impl/creature/player/OnPlayerLoad.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/impl/creature/player/OnPlayerLoad.java
  7. new file mode 100644
  8. --- /dev/null   (date 1619442949925)
  9. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/impl/creature/player/OnPlayerLoad.java    (date 1619442949925)
  10. @@ -0,0 +1,30 @@
  11. +package org.l2jmobius.gameserver.model.events.impl.creature.player;
  12. +
  13. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  14. +import org.l2jmobius.gameserver.model.events.EventType;
  15. +import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
  16. +
  17. +/**
  18. + * @author Gabriel Costa Souza
  19. + * Discord: Gabriel 'GCS'#2589
  20. + * Skype - email: gabriel_costa25@hotmail.com
  21. + */
  22. +public class OnPlayerLoad implements IBaseEvent {
  23. +    private final PlayerInstance _player;
  24. +
  25. +    public OnPlayerLoad(PlayerInstance player)
  26. +    {
  27. +        _player = player;
  28. +    }
  29. +
  30. +    public PlayerInstance getPlayer()
  31. +    {
  32. +        return _player;
  33. +    }
  34. +
  35. +    @Override
  36. +    public EventType getType()
  37. +    {
  38. +        return EventType.ON_PLAYER_LOAD;
  39. +    }
  40. +}
  41. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/55000-55099.xml
  42. IDEA additional info:
  43. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  44. <+>UTF-8
  45. ===================================================================
  46. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/55000-55099.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/55000-55099.xml
  47. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/55000-55099.xml  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  48. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/55000-55099.xml  (date 1619407398827)
  49. @@ -283,36 +283,467 @@
  50.         <!-- You can obtain a daily VIP chest Lv. 1. Acquired XP/ SP +3%, item drop rate +3%. -->
  51.         <icon>BranchIcon.Icon.g_skill_vip1</icon>
  52.         <operateType>P</operateType>
  53. +        <hitTime>500</hitTime>
  54. +        <effects>
  55. +            <effect name="ExpModify">
  56. +                <amount>5</amount>
  57. +            </effect>
  58. +            <effect name="SpModify">
  59. +                <amount>5</amount>
  60. +            </effect>
  61. +            <effect name="BonusDropRate">
  62. +                <amount>50</amount>
  63. +                <mode>PER</mode>
  64. +            </effect>
  65. +            <effect name="WorldChatPoints">
  66. +                <amount>1</amount>
  67. +                <mode>DIFF</mode>
  68. +            </effect>
  69. +        </effects>
  70.     </skill>
  71.     <skill id="55025" toLevel="1" name="VIP Lv. 2">
  72.         <!-- You can obtain a daily VIP chest Lv. 2. Acquired XP/ SP +7%, item drop rate +7%. You can use the world chat at any level (world chat messages +3). -->
  73.         <icon>BranchIcon.Icon.g_skill_vip2</icon>
  74.         <operateType>P</operateType>
  75. +        <hitTime>500</hitTime>
  76. +        <effects>
  77. +            <effect name="ExpModify">
  78. +                <amount>10</amount>
  79. +            </effect>
  80. +            <effect name="SpModify">
  81. +                <amount>10</amount>
  82. +            </effect>
  83. +            <effect name="BonusDropRate">
  84. +                <amount>150</amount>
  85. +                <mode>PER</mode>
  86. +            </effect>
  87. +            <effect name="WorldChatPoints">
  88. +                <amount>6</amount>
  89. +                <mode>DIFF</mode>
  90. +            </effect>
  91. +        </effects>
  92.     </skill>
  93.     <skill id="55026" toLevel="1" name="VIP Lv. 3">
  94.         <!-- You can obtain a daily VIP chest Lv. 3. Acquired XP/ SP +15%, item drop rate +15%, Death XP Penalty -10%. You can use the world chat at any level (world chat messages +3). -->
  95.         <icon>BranchIcon.Icon.g_skill_vip3</icon>
  96.         <operateType>P</operateType>
  97. +        <hitTime>500</hitTime>
  98. +        <effects>
  99. +            <effect name="ExpModify">
  100. +                <amount>15</amount>
  101. +            </effect>
  102. +            <effect name="SpModify">
  103. +                <amount>15</amount>
  104. +            </effect>
  105. +            <effect name="BonusDropRate">
  106. +                <amount>200</amount>
  107. +                <mode>PER</mode>
  108. +            </effect>
  109. +            <effect name="WorldChatPoints">
  110. +                <amount>6</amount>
  111. +                <mode>DIFF</mode>
  112. +            </effect>
  113. +            <effect name="ReduceDropPenalty">
  114. +                <deathPenalty>-10</deathPenalty>
  115. +                <mode>PER</mode>
  116. +            </effect>
  117. +            <effect name="PveMagicalSkillDamageBonus">
  118. +                <amount>3</amount>
  119. +                <mode>PER</mode>
  120. +            </effect>
  121. +            <effect name="PvePhysicalAttackDamageBonus">
  122. +                <amount>3</amount>
  123. +                <mode>PER</mode>
  124. +            </effect>
  125. +            <effect name="PvePhysicalSkillDamageBonus">
  126. +                <amount>3</amount>
  127. +                <mode>PER</mode>
  128. +            </effect>
  129. +            <effect name="PvePhysicalSkillDamageBonus">
  130. +                <amount>3</amount>
  131. +                <mode>PER</mode>
  132. +            </effect>
  133. +            <effect name="PveRaidMagicalSkillDamageBonus">
  134. +                <amount>3</amount>
  135. +                <mode>PER</mode>
  136. +            </effect>
  137. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  138. +                <amount>3</amount>
  139. +                <mode>PER</mode>
  140. +            </effect>
  141. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  142. +                <amount>3</amount>
  143. +                <mode>PER</mode>
  144. +            </effect>
  145. +        </effects>
  146.     </skill>
  147.     <skill id="55027" toLevel="1" name="VIP Lv. 4">
  148.         <!-- You can obtain a daily VIP chest Lv. 4. Acquired XP/ SP +25%, item drop rate +15%, Death XP Penalty -15%. You can use the world chat at any level (world chat messages +5). -->
  149.         <icon>BranchIcon.Icon.g_skill_vip4</icon>
  150.         <operateType>P</operateType>
  151. +        <hitTime>500</hitTime>
  152. +        <effects>
  153. +            <effect name="ExpModify">
  154. +                <amount>25</amount>
  155. +            </effect>
  156. +            <effect name="SpModify">
  157. +                <amount>25</amount>
  158. +            </effect>
  159. +            <effect name="BonusDropRate">
  160. +                <amount>250</amount>
  161. +                <mode>PER</mode>
  162. +            </effect>
  163. +            <effect name="WorldChatPoints">
  164. +                <amount>10</amount>
  165. +                <mode>DIFF</mode>
  166. +            </effect>
  167. +            <effect name="ReduceDropPenalty">
  168. +                <deathPenalty>-20</deathPenalty>
  169. +                <mode>PER</mode>
  170. +            </effect>
  171. +            <effect name="PveMagicalSkillDamageBonus">
  172. +                <amount>10</amount>
  173. +                <mode>PER</mode>
  174. +            </effect>
  175. +            <effect name="PvePhysicalAttackDamageBonus">
  176. +                <amount>10</amount>
  177. +                <mode>PER</mode>
  178. +            </effect>
  179. +            <effect name="PvePhysicalSkillDamageBonus">
  180. +                <amount>10</amount>
  181. +                <mode>PER</mode>
  182. +            </effect>
  183. +            <effect name="PvePhysicalSkillDamageBonus">
  184. +                <amount>10</amount>
  185. +                <mode>PER</mode>
  186. +            </effect>
  187. +            <effect name="PveRaidMagicalSkillDamageBonus">
  188. +                <amount>10</amount>
  189. +                <mode>PER</mode>
  190. +            </effect>
  191. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  192. +                <amount>10</amount>
  193. +                <mode>PER</mode>
  194. +            </effect>
  195. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  196. +                <amount>10</amount>
  197. +                <mode>PER</mode>
  198. +            </effect>
  199. +            <effect name="PhysicalDefence">
  200. +                <amount>10</amount>
  201. +                <mode>DIFF</mode>
  202. +            </effect>
  203. +            <effect name="MagicalDefence">
  204. +                <amount>10</amount>
  205. +                <mode>DIFF</mode>
  206. +            </effect>
  207. +            <effect name="StatUp">
  208. +                <amount>1</amount>
  209. +                <stat>STR</stat>
  210. +            </effect>
  211. +            <effect name="StatUp">
  212. +                <amount>1</amount>
  213. +                <stat>INT</stat>
  214. +            </effect>
  215. +            <effect name="StatUp">
  216. +                <amount>1</amount>
  217. +                <stat>CON</stat>
  218. +            </effect>
  219. +            <effect name="StatUp">
  220. +                <amount>1</amount>
  221. +                <stat>DEX</stat>
  222. +            </effect>
  223. +            <effect name="StatUp">
  224. +                <amount>1</amount>
  225. +                <stat>MEN</stat>
  226. +            </effect>
  227. +            <effect name="StatUp">
  228. +                <amount>1</amount>
  229. +                <stat>WIT</stat>
  230. +            </effect>
  231. +        </effects>
  232.     </skill>
  233.     <skill id="55028" toLevel="1" name="VIP Lv. 5">
  234.         <!-- You can obtain a daily VIP chest Lv. 5. Acquired XP/ SP +30%, item drop rate +30%, Death XP Penalty -20%. Increases PvE damage. You can use the world chat at any level (world chat messages +10). -->
  235.         <icon>BranchIcon.Icon.g_skill_vip5</icon>
  236.         <operateType>P</operateType>
  237. +        <hitTime>500</hitTime>
  238. +        <effects>
  239. +            <effect name="ExpModify">
  240. +                <amount>30</amount>
  241. +            </effect>
  242. +            <effect name="SpModify">
  243. +                <amount>30</amount>
  244. +            </effect>
  245. +            <effect name="BonusDropRate">
  246. +                <amount>250</amount>
  247. +                <mode>PER</mode>
  248. +            </effect>
  249. +            <effect name="WorldChatPoints">
  250. +                <amount>20</amount>
  251. +                <mode>DIFF</mode>
  252. +            </effect>
  253. +            <effect name="ReduceDropPenalty">
  254. +                <deathPenalty>-20</deathPenalty>
  255. +                <mode>PER</mode>
  256. +            </effect>
  257. +            <effect name="PveMagicalSkillDamageBonus">
  258. +                <amount>12</amount>
  259. +                <mode>PER</mode>
  260. +            </effect>
  261. +            <effect name="PvePhysicalAttackDamageBonus">
  262. +                <amount>12</amount>
  263. +                <mode>PER</mode>
  264. +            </effect>
  265. +            <effect name="PvePhysicalSkillDamageBonus">
  266. +                <amount>12</amount>
  267. +                <mode>PER</mode>
  268. +            </effect>
  269. +            <effect name="PvePhysicalSkillDamageBonus">
  270. +                <amount>12</amount>
  271. +                <mode>PER</mode>
  272. +            </effect>
  273. +            <effect name="PveRaidMagicalSkillDamageBonus">
  274. +                <amount>12</amount>
  275. +                <mode>PER</mode>
  276. +            </effect>
  277. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  278. +                <amount>12</amount>
  279. +                <mode>PER</mode>
  280. +            </effect>
  281. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  282. +                <amount>12</amount>
  283. +                <mode>PER</mode>
  284. +            </effect>
  285. +            <effect name="PhysicalDefence">
  286. +                <amount>15</amount>
  287. +                <mode>DIFF</mode>
  288. +            </effect>
  289. +            <effect name="MagicalDefence">
  290. +                <amount>15</amount>
  291. +                <mode>DIFF</mode>
  292. +            </effect>
  293. +            <effect name="StatUp">
  294. +                <amount>1</amount>
  295. +                <stat>STR</stat>
  296. +            </effect>
  297. +            <effect name="StatUp">
  298. +                <amount>1</amount>
  299. +                <stat>INT</stat>
  300. +            </effect>
  301. +            <effect name="StatUp">
  302. +                <amount>1</amount>
  303. +                <stat>CON</stat>
  304. +            </effect>
  305. +            <effect name="StatUp">
  306. +                <amount>1</amount>
  307. +                <stat>DEX</stat>
  308. +            </effect>
  309. +            <effect name="StatUp">
  310. +                <amount>1</amount>
  311. +                <stat>MEN</stat>
  312. +            </effect>
  313. +            <effect name="StatUp">
  314. +                <amount>1</amount>
  315. +                <stat>WIT</stat>
  316. +            </effect>
  317. +        </effects>
  318.     </skill>
  319.     <skill id="55029" toLevel="1" name="VIP Lv. 6">
  320.         <!-- You can obtain a daily VIP chest Lv. 6. Acquired XP/ SP +30%, item drop rate +30%, Death XP Penalty -20%. Increases PvE damage, STR/ DEX/ CON/ INT/ WIT/ MEN +2. You can use the world chat at any level (world chat messages +10). -->
  321.         <icon>BranchIcon.Icon.g_skill_vip6</icon>
  322. -       <operateType>P</operateType>
  323. +        <operateType>P</operateType>
  324. +        <hitTime>500</hitTime>
  325. +        <effects>
  326. +            <effect name="ExpModify">
  327. +                <amount>35</amount>
  328. +            </effect>
  329. +            <effect name="SpModify">
  330. +                <amount>35</amount>
  331. +            </effect>
  332. +            <effect name="BonusDropRate">
  333. +                <amount>250</amount>
  334. +                <mode>PER</mode>
  335. +            </effect>
  336. +            <effect name="WorldChatPoints">
  337. +                <amount>20</amount>
  338. +                <mode>DIFF</mode>
  339. +            </effect>
  340. +            <effect name="ReduceDropPenalty">
  341. +                <deathPenalty>-20</deathPenalty>
  342. +                <mode>PER</mode>
  343. +            </effect>
  344. +            <effect name="PveMagicalSkillDamageBonus">
  345. +                <amount>15</amount>
  346. +                <mode>PER</mode>
  347. +            </effect>
  348. +            <effect name="PvePhysicalAttackDamageBonus">
  349. +                <amount>15</amount>
  350. +                <mode>PER</mode>
  351. +            </effect>
  352. +            <effect name="PvePhysicalSkillDamageBonus">
  353. +                <amount>15</amount>
  354. +                <mode>PER</mode>
  355. +            </effect>
  356. +            <effect name="PvePhysicalSkillDamageBonus">
  357. +                <amount>15</amount>
  358. +                <mode>PER</mode>
  359. +            </effect>
  360. +            <effect name="PveRaidMagicalSkillDamageBonus">
  361. +                <amount>15</amount>
  362. +                <mode>PER</mode>
  363. +            </effect>
  364. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  365. +                <amount>15</amount>
  366. +                <mode>PER</mode>
  367. +            </effect>
  368. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  369. +                <amount>15</amount>
  370. +                <mode>PER</mode>
  371. +            </effect>
  372. +            <effect name="PvpMagicalSkillDamageBonus">
  373. +                <amount>2.5</amount>
  374. +                <mode>PER</mode>
  375. +            </effect>
  376. +            <effect name="PvpPhysicalAttackDamageBonus">
  377. +                <amount>2.5</amount>
  378. +                <mode>PER</mode>
  379. +            </effect>
  380. +            <effect name="PvpPhysicalSkillDamageBonus">
  381. +                <amount>2.5</amount>
  382. +                <mode>PER</mode>
  383. +            </effect>
  384. +            <effect name="PhysicalDefence">
  385. +                <amount>20</amount>
  386. +                <mode>DIFF</mode>
  387. +            </effect>
  388. +            <effect name="MagicalDefence">
  389. +                <amount>20</amount>
  390. +                <mode>DIFF</mode>
  391. +            </effect>
  392. +            <effect name="StatUp">
  393. +                <amount>1</amount>
  394. +                <stat>STR</stat>
  395. +            </effect>
  396. +            <effect name="StatUp">
  397. +                <amount>1</amount>
  398. +                <stat>INT</stat>
  399. +            </effect>
  400. +            <effect name="StatUp">
  401. +                <amount>1</amount>
  402. +                <stat>CON</stat>
  403. +            </effect>
  404. +            <effect name="StatUp">
  405. +                <amount>1</amount>
  406. +                <stat>DEX</stat>
  407. +            </effect>
  408. +            <effect name="StatUp">
  409. +                <amount>1</amount>
  410. +                <stat>MEN</stat>
  411. +            </effect>
  412. +            <effect name="StatUp">
  413. +                <amount>1</amount>
  414. +                <stat>WIT</stat>
  415. +            </effect>
  416. +        </effects>
  417.     </skill>
  418.     <skill id="55030" toLevel="1" name="VIP Lv. 7">
  419.         <!-- You can obtain a daily VIP chest Lv. 7. Acquired XP/ SP +30%, item drop rate +30%, Death XP Penalty -20%. Increases PvP/ PvE damage, STR/ DEX/ CON/ INT/ WIT/ MEN +2. You can use the world chat at any level (world chat messages +10). -->
  420.         <icon>BranchIcon.Icon.g_skill_vip7</icon>
  421. -       <operateType>P</operateType>
  422. +        <operateType>P</operateType>
  423. +        <hitTime>500</hitTime>
  424. +        <effects>
  425. +            <effect name="ExpModify">
  426. +                <amount>35</amount>
  427. +            </effect>
  428. +            <effect name="SpModify">
  429. +                <amount>35</amount>
  430. +            </effect>
  431. +            <effect name="BonusDropRate">
  432. +                <amount>250</amount>
  433. +                <mode>PER</mode>
  434. +            </effect>
  435. +            <effect name="WorldChatPoints">
  436. +                <amount>40</amount>
  437. +                <mode>DIFF</mode>
  438. +            </effect>
  439. +            <effect name="ReduceDropPenalty">
  440. +                <deathPenalty>-20</deathPenalty>
  441. +                <mode>PER</mode>
  442. +            </effect>
  443. +            <effect name="PveMagicalSkillDamageBonus">
  444. +                <amount>15</amount>
  445. +                <mode>PER</mode>
  446. +            </effect>
  447. +            <effect name="PvePhysicalAttackDamageBonus">
  448. +                <amount>15</amount>
  449. +                <mode>PER</mode>
  450. +            </effect>
  451. +            <effect name="PvePhysicalSkillDamageBonus">
  452. +                <amount>15</amount>
  453. +                <mode>PER</mode>
  454. +            </effect>
  455. +            <effect name="PvePhysicalSkillDamageBonus">
  456. +                <amount>15</amount>
  457. +                <mode>PER</mode>
  458. +            </effect>
  459. +            <effect name="PveRaidMagicalSkillDamageBonus">
  460. +                <amount>15</amount>
  461. +                <mode>PER</mode>
  462. +            </effect>
  463. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  464. +                <amount>15</amount>
  465. +                <mode>PER</mode>
  466. +            </effect>
  467. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  468. +                <amount>15</amount>
  469. +                <mode>PER</mode>
  470. +            </effect>
  471. +            <effect name="PvpMagicalSkillDamageBonus">
  472. +                <amount>10</amount>
  473. +                <mode>PER</mode>
  474. +            </effect>
  475. +            <effect name="PvpPhysicalAttackDamageBonus">
  476. +                <amount>10</amount>
  477. +                <mode>PER</mode>
  478. +            </effect>
  479. +            <effect name="PvpPhysicalSkillDamageBonus">
  480. +                <amount>10</amount>
  481. +                <mode>PER</mode>
  482. +            </effect>
  483. +            <effect name="PhysicalDefence">
  484. +                <amount>30</amount>
  485. +                <mode>DIFF</mode>
  486. +            </effect>
  487. +            <effect name="MagicalDefence">
  488. +                <amount>30</amount>
  489. +                <mode>DIFF</mode>
  490. +            </effect>
  491. +            <effect name="StatUp">
  492. +                <amount>2</amount>
  493. +                <stat>STR</stat>
  494. +            </effect>
  495. +            <effect name="StatUp">
  496. +                <amount>2</amount>
  497. +                <stat>INT</stat>
  498. +            </effect>
  499. +            <effect name="StatUp">
  500. +                <amount>2</amount>
  501. +                <stat>CON</stat>
  502. +            </effect>
  503. +            <effect name="StatUp">
  504. +                <amount>2</amount>
  505. +                <stat>DEX</stat>
  506. +            </effect>
  507. +            <effect name="StatUp">
  508. +                <amount>2</amount>
  509. +                <stat>MEN</stat>
  510. +            </effect>
  511. +            <effect name="StatUp">
  512. +                <amount>2</amount>
  513. +                <stat>WIT</stat>
  514. +            </effect>
  515. +        </effects>
  516.     </skill>
  517.     <skill id="55031" toLevel="1" name="Report Status">
  518.         <!-- You are under suspicion of using an illegal program. Your actions have been restricted. -->
  519. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/VipSystem.ini
  520. IDEA additional info:
  521. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  522. <+>UTF-8
  523. ===================================================================
  524. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/VipSystem.ini b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/VipSystem.ini
  525. new file mode 100644
  526. --- /dev/null   (date 1619548564258)
  527. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/VipSystem.ini    (date 1619548564258)
  528. @@ -0,0 +1,23 @@
  529. +# ---------------------------------------------------------------------------
  530. +# VIP System
  531. +# ---------------------------------------------------------------------------
  532. +
  533. +# VIP System Enabled.
  534. +# l2.ini
  535. +# [VipSystem]
  536. +# UseVipInfoWndAden=false
  537. +# -> needs to be true
  538. +# Prime shop Aden needs to be true aswell!
  539. +# Check vip.xml for more info!
  540. +
  541. +VIPEnabled = True
  542. +
  543. +# Max vip level that can be reached (Client Limitations, lv 8 -> 10 Doesn't exist. If u want to use, make it yourself!)
  544. +MaxVipLevel = 7
  545. +
  546. +# When purchasing from the Prime Shop, the price amount will add to your vip points
  547. +PrimeAffectPoints = true
  548. +
  549. +# When purchasing from the L Shop, the price amount will add to your vip points
  550. +# P.S. this will only affect the purchases made with L Coin and not Adena!
  551. +LShopAffectPoints = true
  552. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipLuckyGameInfo.java
  553. IDEA additional info:
  554. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  555. <+>UTF-8
  556. ===================================================================
  557. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipLuckyGameInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipLuckyGameInfo.java
  558. new file mode 100644
  559. --- /dev/null   (date 1619559249862)
  560. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipLuckyGameInfo.java (date 1619559249862)
  561. @@ -0,0 +1,34 @@
  562. +package org.l2jmobius.gameserver.network.serverpackets.vip;
  563. +
  564. +import org.l2jmobius.commons.network.PacketWriter;
  565. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  566. +import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
  567. +import org.l2jmobius.gameserver.network.OutgoingPackets;
  568. +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
  569. +
  570. +
  571. +/**
  572. + * @author Gabriel Costa Souza
  573. + * Discord: Gabriel 'GCS'#2589
  574. + * Skype - email: gabriel_costa25@hotmail.com
  575. + */
  576. +public class ReceiveVipLuckyGameInfo implements IClientOutgoingPacket
  577. +{
  578. +    private final PlayerInstance _player;
  579. +    private final int LCOIN = 91663;
  580. +
  581. +    public ReceiveVipLuckyGameInfo(PlayerInstance player)
  582. +    {
  583. +        _player = player;
  584. +    }
  585. +   @Override
  586. +   public boolean write(PacketWriter packet)
  587. +   {
  588. +        OutgoingPackets.RECIVE_VIP_LUCKY_GAME_INFO.writeId(packet);
  589. +        packet.writeC(1); // enabled
  590. +        packet.writeH((int) _player.getAdena());
  591. +        ItemInstance item = _player.getInventory().getItemByItemId(LCOIN);
  592. +        packet.writeH(item == null? 0 : (int) item.getCount()); //L Coin count
  593. +       return true;
  594. +   }
  595. +}
  596. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71300-71399.xml
  597. IDEA additional info:
  598. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  599. <+>UTF-8
  600. ===================================================================
  601. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71300-71399.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71300-71399.xml
  602. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71300-71399.xml   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  603. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71300-71399.xml   (date 1619408502281)
  604. @@ -154,50 +154,70 @@
  605.     <item id="71314" name="VIP Gain Scroll - 800" type="EtcItem">
  606.         <!-- Allows to regain 800 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  607.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  608. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  609. -       <set name="material" val="PAPER" />
  610. -       <set name="weight" val="5" />
  611. -       <set name="is_tradable" val="false" />
  612. -       <set name="is_dropable" val="false" />
  613. -       <set name="is_depositable" val="false" />
  614. -       <set name="is_sellable" val="false" />
  615. -       <set name="is_stackable" val="true" />
  616. +       <set name="default_action" val="SKILL_REDUCE" />
  617. +       <set name="material" val="PAPER" />
  618. +       <set name="weight" val="5" />
  619. +       <set name="is_tradable" val="false" />
  620. +       <set name="is_depositable" val="false" />
  621. +       <set name="immediate_effect" val="true" />
  622. +       <set name="is_dropable" val="false" />
  623. +       <set name="is_sellable" val="false" />
  624. +       <set name="is_stackable" val="true" />
  625. +       <set name="handler" val="ItemSkills" />
  626. +       <skills>
  627. +           <skill id="59125" level="1" /> <!-- VIP Gain Scroll - 800 -->
  628. +       </skills>
  629.     </item>
  630.     <item id="71315" name="VIP Gain Scroll - 2400" type="EtcItem">
  631.         <!-- Allows to regain 2400 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  632.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  633. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  634. +       <set name="default_action" val="SKILL_REDUCE" />
  635.         <set name="material" val="PAPER" />
  636.         <set name="weight" val="5" />
  637.         <set name="is_tradable" val="false" />
  638. -       <set name="is_dropable" val="false" />
  639.         <set name="is_depositable" val="false" />
  640. -       <set name="is_sellable" val="false" />
  641. -       <set name="is_stackable" val="true" />
  642. +       <set name="immediate_effect" val="true" />
  643. +       <set name="is_dropable" val="false" />
  644. +       <set name="is_sellable" val="false" />
  645. +       <set name="is_stackable" val="true" />
  646. +       <set name="handler" val="ItemSkills" />
  647. +       <skills>
  648. +           <skill id="59126" level="1" /> <!-- VIP Gain Scroll - 2400 -->
  649. +       </skills>
  650.     </item>
  651.     <item id="71316" name="VIP Gain Scroll - 80" type="EtcItem">
  652.         <!-- Allows to regain 80 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  653.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  654. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  655. -       <set name="material" val="PAPER" />
  656. -       <set name="weight" val="5" />
  657. -       <set name="is_tradable" val="false" />
  658. -       <set name="is_dropable" val="false" />
  659. -       <set name="is_depositable" val="false" />
  660. -       <set name="is_sellable" val="false" />
  661. -       <set name="is_stackable" val="true" />
  662. +       <set name="default_action" val="SKILL_REDUCE" />
  663. +       <set name="material" val="PAPER" />
  664. +       <set name="weight" val="5" />
  665. +       <set name="is_tradable" val="false" />
  666. +       <set name="is_depositable" val="false" />
  667. +       <set name="immediate_effect" val="true" />
  668. +       <set name="is_dropable" val="false" />
  669. +       <set name="is_sellable" val="false" />
  670. +       <set name="is_stackable" val="true" />
  671. +       <set name="handler" val="ItemSkills" />
  672. +       <skills>
  673. +           <skill id="59127" level="1" /> <!-- VIP Gain Scroll - 80 -->
  674. +       </skills>
  675.     </item>
  676.     <item id="71317" name="VIP Gain Scroll - 240" type="EtcItem">
  677.         <!-- Allows to regain 240 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  678.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  679. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  680. -       <set name="material" val="PAPER" />
  681. -       <set name="weight" val="5" />
  682. -       <set name="is_tradable" val="false" />
  683. -       <set name="is_dropable" val="false" />
  684. -       <set name="is_depositable" val="false" />
  685. -       <set name="is_sellable" val="false" />
  686. -       <set name="is_stackable" val="true" />
  687. +       <set name="default_action" val="SKILL_REDUCE" />
  688. +       <set name="material" val="PAPER" />
  689. +       <set name="weight" val="5" />
  690. +       <set name="is_tradable" val="false" />
  691. +       <set name="is_depositable" val="false" />
  692. +       <set name="immediate_effect" val="true" />
  693. +       <set name="is_dropable" val="false" />
  694. +       <set name="is_sellable" val="false" />
  695. +       <set name="is_stackable" val="true" />
  696. +       <set name="handler" val="ItemSkills" />
  697. +       <skills>
  698. +           <skill id="59128" level="1" /> <!-- VIP Gain Scroll - 240 -->
  699. +       </skills>
  700.     </item>
  701.     <item id="71318" name="Transformation Sealbook: Part-time Seller" additionalName="Kat the Cat" type="EtcItem">
  702.         <!-- Sealbook for learning the skill of transforming yourself into Kat the Cat. -->
  703. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExWorldChatCnt.java
  704. IDEA additional info:
  705. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  706. <+>UTF-8
  707. ===================================================================
  708. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExWorldChatCnt.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExWorldChatCnt.java
  709. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExWorldChatCnt.java  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  710. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExWorldChatCnt.java  (date 1619454109453)
  711. @@ -30,7 +30,7 @@
  712.    
  713.     public ExWorldChatCnt(PlayerInstance player)
  714.     {
  715. -       _points = player.getLevel() < Config.WORLD_CHAT_MIN_LEVEL ? 0 : Math.max(player.getWorldChatPoints() - player.getWorldChatUsed(), 0);
  716. +       _points = player.getLevel() < Config.WORLD_CHAT_MIN_LEVEL || player.getVipTier() <= 0 ? 0 : Math.max(player.getWorldChatPoints() - player.getWorldChatUsed(), 0);
  717.     }
  718.    
  719.     @Override
  720. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBrPremiumState.java
  721. IDEA additional info:
  722. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  723. <+>UTF-8
  724. ===================================================================
  725. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBrPremiumState.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBrPremiumState.java
  726. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBrPremiumState.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  727. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBrPremiumState.java    (date 1619454109442)
  728. @@ -38,7 +38,7 @@
  729.         OutgoingPackets.EX_BR_PREMIUM_STATE.writeId(packet);
  730.        
  731.         packet.writeD(_player.getObjectId());
  732. -       packet.writeC(_player.hasPremiumStatus() ? 0x01 : 0x00);
  733. +       packet.writeC(_player.hasPremiumStatus() || _player.getVipTier() > 0 ? 0x01 : 0x00);
  734.         return true;
  735.     }
  736.  }
  737. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/EffectMasterHandler.java
  738. IDEA additional info:
  739. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  740. <+>UTF-8
  741. ===================================================================
  742. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/EffectMasterHandler.java
  743. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/EffectMasterHandler.java (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  744. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/EffectMasterHandler.java (date 1619407462579)
  745. @@ -66,6 +66,7 @@
  746.         EffectHandler.getInstance().registerHandler("BlockSkill", BlockSkill::new);
  747.         EffectHandler.getInstance().registerHandler("BlockTarget", BlockTarget::new);
  748.         EffectHandler.getInstance().registerHandler("Bluff", Bluff::new);
  749. +       EffectHandler.getInstance().registerHandler("VipUp", VipUp::new);
  750.         EffectHandler.getInstance().registerHandler("BonusDropAdena", BonusDropAdena::new);
  751.         EffectHandler.getInstance().registerHandler("BonusDropAmount", BonusDropAmount::new);
  752.         EffectHandler.getInstance().registerHandler("BonusDropRate", BonusDropRate::new);
  753. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java
  754. IDEA additional info:
  755. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  756. <+>UTF-8
  757. ===================================================================
  758. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java
  759. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  760. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/limitshop/RequestPurchaseLimitShopItemBuy.java   (date 1619453850578)
  761. @@ -16,6 +16,7 @@
  762.   */
  763.  package org.l2jmobius.gameserver.network.clientpackets.limitshop;
  764.  
  765. +import org.l2jmobius.Config;
  766.  import org.l2jmobius.commons.network.PacketReader;
  767.  import org.l2jmobius.commons.util.Chronos;
  768.  import org.l2jmobius.gameserver.data.xml.LCoinShopData;
  769. @@ -147,6 +148,8 @@
  770.             else
  771.             {
  772.                 player.destroyItemByItemId("LCoinShop", product.getIngredientIds()[i], product.getIngredientQuantities()[i] * _amount, player, true);
  773. +               if(Config.VIP_SYSTEM_L_SHOP_AFFECT)
  774. +                    player.updateVipPoints(_amount);
  775.             }
  776.         }
  777.        
  778. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/56000-56099.xml
  779. IDEA additional info:
  780. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  781. <+>UTF-8
  782. ===================================================================
  783. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/56000-56099.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/56000-56099.xml
  784. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/56000-56099.xml  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  785. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/56000-56099.xml  (date 1619405978152)
  786. @@ -546,11 +546,21 @@
  787.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  788.         <operateType>A1</operateType>
  789.         <reuseDelay>1000</reuseDelay>
  790. +        <effects>
  791. +            <effect name="VipUp">
  792. +                <amount>27</amount>
  793. +            </effect>
  794. +        </effects>
  795.     </skill>
  796.     <skill id="56097" toLevel="1" name="Good VIP Gain Scroll">
  797.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  798.         <operateType>A1</operateType>
  799.         <reuseDelay>1000</reuseDelay>
  800. +        <effects>
  801. +            <effect name="VipUp">
  802. +                <amount>273</amount>
  803. +            </effect>
  804. +        </effects>
  805.     </skill>
  806.     <skill id="56098" toLevel="24" name="Venir's Talisman">
  807.         <!-- When equipped, CON +$s1. -->
  808. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/GameServer.java
  809. IDEA additional info:
  810. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  811. <+>UTF-8
  812. ===================================================================
  813. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/GameServer.java
  814. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/GameServer.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  815. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/GameServer.java    (date 1619442119536)
  816. @@ -45,69 +45,7 @@
  817.  import org.l2jmobius.gameserver.data.sql.ClanTable;
  818.  import org.l2jmobius.gameserver.data.sql.CrestTable;
  819.  import org.l2jmobius.gameserver.data.sql.OfflineTraderTable;
  820. -import org.l2jmobius.gameserver.data.xml.ActionData;
  821. -import org.l2jmobius.gameserver.data.xml.AdminData;
  822. -import org.l2jmobius.gameserver.data.xml.AgathionData;
  823. -import org.l2jmobius.gameserver.data.xml.AppearanceItemData;
  824. -import org.l2jmobius.gameserver.data.xml.ArmorSetData;
  825. -import org.l2jmobius.gameserver.data.xml.AttendanceRewardData;
  826. -import org.l2jmobius.gameserver.data.xml.BeautyShopData;
  827. -import org.l2jmobius.gameserver.data.xml.BuyListData;
  828. -import org.l2jmobius.gameserver.data.xml.CategoryData;
  829. -import org.l2jmobius.gameserver.data.xml.ClanHallData;
  830. -import org.l2jmobius.gameserver.data.xml.ClanRewardData;
  831. -import org.l2jmobius.gameserver.data.xml.ClassListData;
  832. -import org.l2jmobius.gameserver.data.xml.CombinationItemsData;
  833. -import org.l2jmobius.gameserver.data.xml.CubicData;
  834. -import org.l2jmobius.gameserver.data.xml.DailyMissionData;
  835. -import org.l2jmobius.gameserver.data.xml.DoorData;
  836. -import org.l2jmobius.gameserver.data.xml.ElementalSpiritData;
  837. -import org.l2jmobius.gameserver.data.xml.EnchantItemData;
  838. -import org.l2jmobius.gameserver.data.xml.EnchantItemGroupsData;
  839. -import org.l2jmobius.gameserver.data.xml.EnchantItemHPBonusData;
  840. -import org.l2jmobius.gameserver.data.xml.EnchantItemOptionsData;
  841. -import org.l2jmobius.gameserver.data.xml.EnchantSkillGroupsData;
  842. -import org.l2jmobius.gameserver.data.xml.EnsoulData;
  843. -import org.l2jmobius.gameserver.data.xml.EquipmentUpgradeData;
  844. -import org.l2jmobius.gameserver.data.xml.EventEngineData;
  845. -import org.l2jmobius.gameserver.data.xml.ExperienceData;
  846. -import org.l2jmobius.gameserver.data.xml.FakePlayerData;
  847. -import org.l2jmobius.gameserver.data.xml.FenceData;
  848. -import org.l2jmobius.gameserver.data.xml.FishingData;
  849. -import org.l2jmobius.gameserver.data.xml.HennaData;
  850. -import org.l2jmobius.gameserver.data.xml.HitConditionBonusData;
  851. -import org.l2jmobius.gameserver.data.xml.InitialEquipmentData;
  852. -import org.l2jmobius.gameserver.data.xml.InitialShortcutData;
  853. -import org.l2jmobius.gameserver.data.xml.ItemCrystallizationData;
  854. -import org.l2jmobius.gameserver.data.xml.KarmaData;
  855. -import org.l2jmobius.gameserver.data.xml.LCoinShopData;
  856. -import org.l2jmobius.gameserver.data.xml.LuckyGameData;
  857. -import org.l2jmobius.gameserver.data.xml.MagicLampData;
  858. -import org.l2jmobius.gameserver.data.xml.MultisellData;
  859. -import org.l2jmobius.gameserver.data.xml.NpcData;
  860. -import org.l2jmobius.gameserver.data.xml.NpcNameLocalisationData;
  861. -import org.l2jmobius.gameserver.data.xml.OptionData;
  862. -import org.l2jmobius.gameserver.data.xml.PetDataTable;
  863. -import org.l2jmobius.gameserver.data.xml.PetSkillData;
  864. -import org.l2jmobius.gameserver.data.xml.PlayerTemplateData;
  865. -import org.l2jmobius.gameserver.data.xml.PlayerXpPercentLostData;
  866. -import org.l2jmobius.gameserver.data.xml.PrimeShopData;
  867. -import org.l2jmobius.gameserver.data.xml.RandomCraftData;
  868. -import org.l2jmobius.gameserver.data.xml.RecipeData;
  869. -import org.l2jmobius.gameserver.data.xml.ResidenceFunctionsData;
  870. -import org.l2jmobius.gameserver.data.xml.SayuneData;
  871. -import org.l2jmobius.gameserver.data.xml.SecondaryAuthData;
  872. -import org.l2jmobius.gameserver.data.xml.SendMessageLocalisationData;
  873. -import org.l2jmobius.gameserver.data.xml.ShuttleData;
  874. -import org.l2jmobius.gameserver.data.xml.SiegeScheduleData;
  875. -import org.l2jmobius.gameserver.data.xml.SkillData;
  876. -import org.l2jmobius.gameserver.data.xml.SkillTreeData;
  877. -import org.l2jmobius.gameserver.data.xml.SpawnData;
  878. -import org.l2jmobius.gameserver.data.xml.StaticObjectData;
  879. -import org.l2jmobius.gameserver.data.xml.TeleportListData;
  880. -import org.l2jmobius.gameserver.data.xml.TeleporterData;
  881. -import org.l2jmobius.gameserver.data.xml.TransformData;
  882. -import org.l2jmobius.gameserver.data.xml.VariationData;
  883. +import org.l2jmobius.gameserver.data.xml.*;
  884.  import org.l2jmobius.gameserver.geoengine.GeoEngine;
  885.  import org.l2jmobius.gameserver.handler.ConditionHandler;
  886.  import org.l2jmobius.gameserver.handler.DailyMissionHandler;
  887. @@ -155,6 +93,7 @@
  888.  import org.l2jmobius.gameserver.model.events.EventDispatcher;
  889.  import org.l2jmobius.gameserver.model.olympiad.Hero;
  890.  import org.l2jmobius.gameserver.model.olympiad.Olympiad;
  891. +import org.l2jmobius.gameserver.model.vip.VipManager;
  892.  import org.l2jmobius.gameserver.model.votereward.VoteSystem;
  893.  import org.l2jmobius.gameserver.network.ClientNetworkManager;
  894.  import org.l2jmobius.gameserver.network.NpcStringId;
  895. @@ -288,6 +227,7 @@
  896.         AttendanceRewardData.getInstance();
  897.         MagicLampData.getInstance();
  898.         RandomCraftData.getInstance();
  899. +        VipData.getInstance();
  900.        
  901.         printSection("Characters");
  902.         ClassListData.getInstance();
  903. @@ -305,6 +245,7 @@
  904.         CharSummonTable.getInstance().init();
  905.         BeautyShopData.getInstance();
  906.         MentorManager.getInstance();
  907. +        VipManager.getInstance();
  908.        
  909.         if (Config.FACTION_SYSTEM_ENABLED)
  910.         {
  911. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipInfo.java
  912. IDEA additional info:
  913. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  914. <+>UTF-8
  915. ===================================================================
  916. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipInfo.java
  917. new file mode 100644
  918. --- /dev/null   (date 1619559202606)
  919. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/vip/ReceiveVipInfo.java  (date 1619559202606)
  920. @@ -0,0 +1,40 @@
  921. +package org.l2jmobius.gameserver.network.serverpackets.vip;
  922. +
  923. +import org.l2jmobius.Config;
  924. +import org.l2jmobius.commons.network.PacketWriter;
  925. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  926. +import org.l2jmobius.gameserver.model.vip.VipManager;
  927. +import org.l2jmobius.gameserver.network.OutgoingPackets;
  928. +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
  929. +
  930. +import java.time.Instant;
  931. +import java.time.temporal.ChronoUnit;
  932. +
  933. +public class ReceiveVipInfo implements IClientOutgoingPacket
  934. +{
  935. +    private final PlayerInstance _player;
  936. +
  937. +    public ReceiveVipInfo(PlayerInstance player)
  938. +    {
  939. +        _player = player;
  940. +    }
  941. +   @Override
  942. +   public boolean write(PacketWriter packet)
  943. +   {
  944. +        if(!Config.VIP_SYSTEM_ENABLED)
  945. +            return false;
  946. +        var vipManager = VipManager.getInstance();
  947. +        var vipTier = _player.getVipTier();
  948. +        var vipDuration = (int) ChronoUnit.SECONDS.between(Instant.now(), Instant.ofEpochMilli(_player.getVipTierExpiration()));
  949. +
  950. +        OutgoingPackets.RECIVE_VIP_INFO.writeId(packet);
  951. +       packet.writeC(vipTier);
  952. +       packet.writeQ(_player.getVipPoints());
  953. +       packet.writeD(vipDuration);
  954. +       packet.writeQ(vipManager.getPointsToLevel((byte)(vipTier+1)));
  955. +       packet.writeQ(vipManager.getPointsDepreciatedOnLevel(vipTier));
  956. +       packet.writeC(vipTier);
  957. +       packet.writeQ(vipManager.getPointsToLevel(vipTier));
  958. +       return true;
  959. +   }
  960. +}
  961. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59100-59199.xml
  962. IDEA additional info:
  963. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  964. <+>UTF-8
  965. ===================================================================
  966. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59100-59199.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59100-59199.xml
  967. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59100-59199.xml  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  968. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59100-59199.xml  (date 1619405854067)
  969. @@ -139,21 +139,41 @@
  970.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  971.         <operateType>A1</operateType>
  972.         <reuseDelay>1000</reuseDelay>
  973. +        <effects>
  974. +            <effect name="VipUp">
  975. +                <amount>800</amount>
  976. +            </effect>
  977. +        </effects>
  978.     </skill>
  979.     <skill id="59126" toLevel="1" name="VIP Gain Scroll - 2400">
  980.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  981.         <operateType>A1</operateType>
  982.         <reuseDelay>1000</reuseDelay>
  983. +        <effects>
  984. +            <effect name="VipUp">
  985. +                <amount>2400</amount>
  986. +            </effect>
  987. +        </effects>
  988.     </skill>
  989.     <skill id="59127" toLevel="1" name="VIP Gain Scroll - 80">
  990.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  991.         <operateType>A1</operateType>
  992.         <reuseDelay>1000</reuseDelay>
  993. +        <effects>
  994. +            <effect name="VipUp">
  995. +                <amount>80</amount>
  996. +            </effect>
  997. +        </effects>
  998.     </skill>
  999.     <skill id="59128" toLevel="1" name="VIP Gain Scroll - 240">
  1000.         <icon>BranchIcon.Icon.g_bm_vip_potion_i00</icon>
  1001.         <operateType>A1</operateType>
  1002.         <reuseDelay>1000</reuseDelay>
  1003. +        <effects>
  1004. +            <effect name="VipUp">
  1005. +                <amount>240</amount>
  1006. +            </effect>
  1007. +        </effects>
  1008.     </skill>
  1009.     <skill id="59129" toLevel="1" name="Transformation Sealbook: Kat the Cat">
  1010.         <operateType>A1</operateType>
  1011. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/99000-99099.xml
  1012. IDEA additional info:
  1013. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1014. <+>UTF-8
  1015. ===================================================================
  1016. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/99000-99099.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/99000-99099.xml
  1017. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/99000-99099.xml   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1018. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/99000-99099.xml   (date 1619451172663)
  1019. @@ -9,4 +9,61 @@
  1020.         <set name="is_dropable" val="false" />
  1021.         <set name="is_sellable" val="false" />
  1022.     </item>
  1023. +    <item id="99027" name="Daily Present - VIP 8" type="EtcItem">
  1024. +        <!-- Double-click the item to receive 1 Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 Greater Healing Potions, 150 VIP Coins. -->
  1025. +        <set name="icon" val="BranchIcon.Icon.etc_vip_present_i06" />
  1026. +        <set name="default_action" val="PEEL" />
  1027. +        <set name="immediate_effect" val="true" />
  1028. +        <set name="material" val="FISH" />
  1029. +        <set name="is_tradable" val="false" />
  1030. +        <set name="is_dropable" val="false" />
  1031. +        <set name="is_sellable" val="false" />
  1032. +        <set name="is_stackable" val="true" />
  1033. +        <set name="handler" val="ExtractableItems" />
  1034. +        <set name="extractableCountMin" val="3" />
  1035. +        <set name="extractableCountMax" val="3" />
  1036. +        <capsuled_items>
  1037. +            <item id="91689" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Escape -->
  1038. +            <item id="3936" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Resurrection -->
  1039. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  1040. +        </capsuled_items>
  1041. +    </item>
  1042. +    <item id="99028" name="Daily Present - VIP 9" type="EtcItem">
  1043. +        <!-- Double-click the item to receive 1 Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 Greater Healing Potions, 150 VIP Coins. -->
  1044. +        <set name="icon" val="BranchIcon.Icon.etc_vip_present_i06" />
  1045. +        <set name="default_action" val="PEEL" />
  1046. +        <set name="immediate_effect" val="true" />
  1047. +        <set name="material" val="FISH" />
  1048. +        <set name="is_tradable" val="false" />
  1049. +        <set name="is_dropable" val="false" />
  1050. +        <set name="is_sellable" val="false" />
  1051. +        <set name="is_stackable" val="true" />
  1052. +        <set name="handler" val="ExtractableItems" />
  1053. +        <set name="extractableCountMin" val="3" />
  1054. +        <set name="extractableCountMax" val="3" />
  1055. +        <capsuled_items>
  1056. +            <item id="91689" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Escape -->
  1057. +            <item id="3936" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Resurrection -->
  1058. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  1059. +        </capsuled_items>
  1060. +    </item>
  1061. +    <item id="99029" name="Daily Present - VIP 10" type="EtcItem">
  1062. +        <!-- Double-click the item to receive 1 Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 Greater Healing Potions, 150 VIP Coins. -->
  1063. +        <set name="icon" val="BranchIcon.Icon.etc_vip_present_i06" />
  1064. +        <set name="default_action" val="PEEL" />
  1065. +        <set name="immediate_effect" val="true" />
  1066. +        <set name="material" val="FISH" />
  1067. +        <set name="is_tradable" val="false" />
  1068. +        <set name="is_dropable" val="false" />
  1069. +        <set name="is_sellable" val="false" />
  1070. +        <set name="is_stackable" val="true" />
  1071. +        <set name="handler" val="ExtractableItems" />
  1072. +        <set name="extractableCountMin" val="3" />
  1073. +        <set name="extractableCountMax" val="3" />
  1074. +        <capsuled_items>
  1075. +            <item id="91689" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Escape -->
  1076. +            <item id="3936" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Resurrection -->
  1077. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  1078. +        </capsuled_items>
  1079. +    </item>
  1080.  </list>
  1081. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/PcCafe.ini
  1082. IDEA additional info:
  1083. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1084. <+>UTF-8
  1085. ===================================================================
  1086. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/PcCafe.ini b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/PcCafe.ini
  1087. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/PcCafe.ini   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1088. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/Custom/PcCafe.ini   (date 1619454227615)
  1089. @@ -9,6 +9,9 @@
  1090.  # Allow only players with a Premium account.
  1091.  PcCafeOnlyPremium = False
  1092.  
  1093. +# Allow only players with a Vip Tier account.
  1094. +PcCafeOnlyVip = False
  1095. +
  1096.  # Max points that player may have.
  1097.  # Limited by int limit.
  1098.  MaxPcCafePoints = 200000
  1099. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBRNewIconCashBtnWnd.java
  1100. IDEA additional info:
  1101. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1102. <+>UTF-8
  1103. ===================================================================
  1104. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBRNewIconCashBtnWnd.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBRNewIconCashBtnWnd.java
  1105. new file mode 100644
  1106. --- /dev/null   (date 1619379122105)
  1107. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ExBRNewIconCashBtnWnd.java   (date 1619379122105)
  1108. @@ -0,0 +1,27 @@
  1109. +package org.l2jmobius.gameserver.network.serverpackets;
  1110. +
  1111. +import org.l2jmobius.commons.network.PacketWriter;
  1112. +import org.l2jmobius.gameserver.network.OutgoingPackets;
  1113. +
  1114. +/**
  1115. + * @author Gabriel Costa Souza
  1116. + * Discord: Gabriel 'GCS'#2589
  1117. + * Skype - email: gabriel_costa25@hotmail.com
  1118. + */
  1119. +public class ExBRNewIconCashBtnWnd implements IClientOutgoingPacket
  1120. +{
  1121. +    private final short active;
  1122. +
  1123. +    public ExBRNewIconCashBtnWnd(short active)
  1124. +    {
  1125. +        this.active = active;
  1126. +    }
  1127. +
  1128. +    @Override
  1129. +    public boolean write(PacketWriter packet)
  1130. +    {
  1131. +        OutgoingPackets.EX_BR_NEW_ICON_CASH_BTN_WND.writeId(packet);
  1132. +        packet.writeH(active);
  1133. +        return true;
  1134. +    }
  1135. +}
  1136. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/ExRequestVipInfo.java
  1137. IDEA additional info:
  1138. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1139. <+>UTF-8
  1140. ===================================================================
  1141. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/ExRequestVipInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/ExRequestVipInfo.java
  1142. new file mode 100644
  1143. --- /dev/null   (date 1619559189039)
  1144. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/ExRequestVipInfo.java    (date 1619559189039)
  1145. @@ -0,0 +1,22 @@
  1146. +package org.l2jmobius.gameserver.network.clientpackets.vip;
  1147. +
  1148. +import org.l2jmobius.commons.network.PacketReader;
  1149. +import org.l2jmobius.gameserver.network.GameClient;
  1150. +import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
  1151. +import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipInfo;
  1152. +
  1153. +public class ExRequestVipInfo implements IClientIncomingPacket {
  1154. +    @Override
  1155. +    public boolean read(GameClient client, PacketReader packet)
  1156. +    {
  1157. +        // Nothing to read
  1158. +        return true;
  1159. +    }
  1160. +
  1161. +    @Override
  1162. +    public void run(GameClient client)
  1163. +    {
  1164. +        client.sendPacket(new ReceiveVipInfo(client.getPlayer()));
  1165. +
  1166. +    }
  1167. +}
  1168. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRPresentBuyProduct.java
  1169. IDEA additional info:
  1170. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1171. <+>UTF-8
  1172. ===================================================================
  1173. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRPresentBuyProduct.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRPresentBuyProduct.java
  1174. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRPresentBuyProduct.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1175. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRPresentBuyProduct.java    (date 1619457507470)
  1176. @@ -88,6 +88,12 @@
  1177.         player.addRequest(new PrimeShopRequest(player));
  1178.        
  1179.         final PrimeShopGroup item = PrimeShopData.getInstance().getItem(_brId);
  1180. +
  1181. +       if(item.isVipGift()){
  1182. +           player.sendMessage("You cannot gift a Vip Gift!");
  1183. +           return;
  1184. +        }
  1185. +
  1186.         if (validatePlayer(item, _count, player))
  1187.         {
  1188.             final int price = (item.getPrice() * _count);
  1189. @@ -116,6 +122,8 @@
  1190.                     return;
  1191.                 }
  1192.                 player.setPrimePoints(player.getPrimePoints() - price);
  1193. +               if(Config.VIP_SYSTEM_PRIME_AFFECT)
  1194. +                   player.updateVipPoints(price);
  1195.             }
  1196.            
  1197.             player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SUCCESS));
  1198. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/EventType.java
  1199. IDEA additional info:
  1200. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1201. <+>UTF-8
  1202. ===================================================================
  1203. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/EventType.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/EventType.java
  1204. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/EventType.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1205. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/events/EventType.java    (date 1619376093109)
  1206. @@ -58,67 +58,7 @@
  1207.  import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcSpawn;
  1208.  import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleport;
  1209.  import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest;
  1210. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnElementalSpiritLearn;
  1211. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
  1212. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
  1213. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
  1214. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
  1215. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass;
  1216. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass;
  1217. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChat;
  1218. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate;
  1219. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanDestroy;
  1220. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin;
  1221. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeaderChange;
  1222. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft;
  1223. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLvlUp;
  1224. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemAdd;
  1225. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemDestroy;
  1226. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanWHItemTransfer;
  1227. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate;
  1228. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDelete;
  1229. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerDlgAnswer;
  1230. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
  1231. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFishing;
  1232. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaAdd;
  1233. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
  1234. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAdd;
  1235. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy;
  1236. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop;
  1237. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
  1238. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPickup;
  1239. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer;
  1240. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUnequip;
  1241. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
  1242. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
  1243. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout;
  1244. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeAdd;
  1245. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft;
  1246. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove;
  1247. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeStatus;
  1248. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMentorStatus;
  1249. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest;
  1250. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPKChanged;
  1251. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPressTutorialMark;
  1252. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfessionCancel;
  1253. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfessionChange;
  1254. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
  1255. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
  1256. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestAbort;
  1257. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerQuestComplete;
  1258. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
  1259. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerRestore;
  1260. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSelect;
  1261. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSkillLearn;
  1262. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSocialAction;
  1263. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
  1264. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonAgathion;
  1265. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonSpawn;
  1266. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSummonTalk;
  1267. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTakeHero;
  1268. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerTransform;
  1269. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerUnsummonAgathion;
  1270. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnTrapAction;
  1271. +import org.l2jmobius.gameserver.model.events.impl.creature.player.*;
  1272.  import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceCreated;
  1273.  import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceDestroy;
  1274.  import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceEnter;
  1275. @@ -259,6 +199,7 @@
  1276.     ON_PLAYER_LEVEL_CHANGED(OnPlayerLevelChanged.class, void.class),
  1277.     ON_PLAYER_LOGIN(OnPlayerLogin.class, void.class),
  1278.     ON_PLAYER_LOGOUT(OnPlayerLogout.class, void.class),
  1279. +    ON_PLAYER_LOAD(OnPlayerLoad.class, void.class),
  1280.     ON_PLAYER_PK_CHANGED(OnPlayerPKChanged.class, void.class),
  1281.     ON_PLAYER_PRESS_TUTORIAL_MARK(OnPlayerPressTutorialMark.class, void.class),
  1282.     ON_PLAYER_MOVE_REQUEST(OnPlayerMoveRequest.class, void.class, TerminateReturn.class),
  1283. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/RequestVipLuckGameInfo.java
  1284. IDEA additional info:
  1285. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1286. <+>UTF-8
  1287. ===================================================================
  1288. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/RequestVipLuckGameInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/RequestVipLuckGameInfo.java
  1289. new file mode 100644
  1290. --- /dev/null   (date 1619559189056)
  1291. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/vip/RequestVipLuckGameInfo.java  (date 1619559189056)
  1292. @@ -0,0 +1,22 @@
  1293. +package org.l2jmobius.gameserver.network.clientpackets.vip;
  1294. +
  1295. +
  1296. +import org.l2jmobius.commons.network.PacketReader;
  1297. +import org.l2jmobius.gameserver.network.GameClient;
  1298. +import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
  1299. +import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipLuckyGameInfo;
  1300. +
  1301. +public class RequestVipLuckGameInfo implements IClientIncomingPacket {
  1302. +    @Override
  1303. +    public boolean read(GameClient client, PacketReader packet)
  1304. +    {
  1305. +        // Nothing to read
  1306. +        return true;
  1307. +    }
  1308. +
  1309. +    @Override
  1310. +    public void run(GameClient client)
  1311. +    {
  1312. +        client.sendPacket(new ReceiveVipLuckyGameInfo(client.getPlayer()));
  1313. +    }
  1314. +}
  1315. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRBuyProduct.java
  1316. IDEA additional info:
  1317. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1318. <+>UTF-8
  1319. ===================================================================
  1320. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRBuyProduct.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRBuyProduct.java
  1321. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRBuyProduct.java   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1322. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/primeshop/RequestBRBuyProduct.java   (date 1619460020189)
  1323. @@ -27,6 +27,7 @@
  1324.  import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
  1325.  import org.l2jmobius.gameserver.model.primeshop.PrimeShopGroup;
  1326.  import org.l2jmobius.gameserver.model.primeshop.PrimeShopItem;
  1327. +import org.l2jmobius.gameserver.model.variables.AccountVariables;
  1328.  import org.l2jmobius.gameserver.network.GameClient;
  1329.  import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
  1330.  import org.l2jmobius.gameserver.network.serverpackets.primeshop.ExBRBuyProduct;
  1331. @@ -97,14 +98,17 @@
  1332.                     player.removeRequest(PrimeShopRequest.class);
  1333.                     return;
  1334.                 }
  1335. -               player.setPrimePoints(player.getPrimePoints() - price);
  1336. +                player.setPrimePoints(player.getPrimePoints() - price);
  1337. +                if (Config.VIP_SYSTEM_PRIME_AFFECT)
  1338. +                    player.updateVipPoints(price);
  1339.             }
  1340. -          
  1341. +
  1342.             for (PrimeShopItem subItem : item.getItems())
  1343.             {
  1344.                 player.addItem("PrimeShop", subItem.getId(), subItem.getCount() * _count, player, true);
  1345.             }
  1346. -          
  1347. +            if(item.isVipGift())
  1348. +                player.getAccountVariables().set(AccountVariables.VIP_ITEM_BOUGHT, Calendar.getInstance().getTimeInMillis());
  1349.             player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SUCCESS));
  1350.             player.sendPacket(new ExBRGamePoint(player));
  1351.         }
  1352. @@ -168,8 +172,13 @@
  1353.             player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.AFTER_SALE_DATE));
  1354.             return false;
  1355.         }
  1356. -      
  1357. -       final int weight = item.getWeight() * count;
  1358. +
  1359. +        if(item.getVipTier() > player.getVipTier() || item.isVipGift() && !canReceiveGift(player, item)) {
  1360. +            player.sendPacket(new ExBRBuyProduct(ExBrProductReplyType.SOLD_OUT));
  1361. +            return false;
  1362. +        }
  1363. +
  1364. +        final int weight = item.getWeight() * count;
  1365.         final long slots = item.getCount() * count;
  1366.         if (player.getInventory().validateWeight(weight))
  1367.         {
  1368. @@ -187,6 +196,26 @@
  1369.        
  1370.         return true;
  1371.     }
  1372. +
  1373. +    /**
  1374. +     * Check if player can receive Gift from L2 Store
  1375. +     * @param player player in question
  1376. +     * @param item requested item.
  1377. +     * @return true if player can receive gift item.
  1378. +     */
  1379. +   private static boolean canReceiveGift(PlayerInstance player, PrimeShopGroup item){
  1380. +        if(!Config.VIP_SYSTEM_ENABLED)
  1381. +            return false;
  1382. +       if(player.getVipTier() <= 0)
  1383. +           return false;
  1384. +       else if(item.getVipTier() != player.getVipTier()) {
  1385. +           player.sendMessage("This item is not for your vip tier!");
  1386. +            return false;
  1387. +        } else{
  1388. +           long timeBought = player.getAccountVariables().getLong(AccountVariables.VIP_ITEM_BOUGHT, 0L);
  1389. +            return timeBought <= 0;
  1390. +        }
  1391. +    }
  1392.    
  1393.     private static int validatePaymentId(PrimeShopGroup item, long amount)
  1394.     {
  1395. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59700-59799.xml
  1396. IDEA additional info:
  1397. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1398. <+>UTF-8
  1399. ===================================================================
  1400. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59700-59799.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59700-59799.xml
  1401. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59700-59799.xml  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1402. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/skills/59700-59799.xml  (date 1619407883878)
  1403. @@ -241,21 +241,324 @@
  1404.         <icon>icon.skill0000</icon>
  1405.         <operateType>A1</operateType>
  1406.     </skill>
  1407. -   <skill id="59723" toLevel="1" name="">
  1408. -       <!-- AUTO GENERATED SKILL TODO: FIX IT -->
  1409. -       <icon>icon.skill0000</icon>
  1410. -       <operateType>A1</operateType>
  1411. +   <skill id="59723" toLevel="1" name="VIP Lv. 8">
  1412. +       <!-- TODO: Client side -->
  1413. +        <icon>BranchIcon.Icon.g_skill_vip8</icon>
  1414. +        <operateType>P</operateType>
  1415. +        <hitTime>500</hitTime>
  1416. +        <effects>
  1417. +            <effect name="ExpModify">
  1418. +                <amount>35</amount>
  1419. +            </effect>
  1420. +            <effect name="SpModify">
  1421. +                <amount>35</amount>
  1422. +            </effect>
  1423. +            <effect name="BonusDropRate">
  1424. +                <amount>300</amount>
  1425. +                <mode>PER</mode>
  1426. +            </effect>
  1427. +            <effect name="WorldChatPoints">
  1428. +                <amount>50</amount>
  1429. +                <mode>DIFF</mode>
  1430. +            </effect>
  1431. +            <effect name="ReduceDropPenalty">
  1432. +                <deathPenalty>-30</deathPenalty>
  1433. +                <mode>PER</mode>
  1434. +            </effect>
  1435. +            <effect name="PveMagicalSkillDamageBonus">
  1436. +                <amount>15</amount>
  1437. +                <mode>PER</mode>
  1438. +            </effect>
  1439. +            <effect name="PvePhysicalAttackDamageBonus">
  1440. +                <amount>15</amount>
  1441. +                <mode>PER</mode>
  1442. +            </effect>
  1443. +            <effect name="PvePhysicalSkillDamageBonus">
  1444. +                <amount>15</amount>
  1445. +                <mode>PER</mode>
  1446. +            </effect>
  1447. +            <effect name="PvePhysicalSkillDamageBonus">
  1448. +                <amount>15</amount>
  1449. +                <mode>PER</mode>
  1450. +            </effect>
  1451. +            <effect name="PveRaidMagicalSkillDamageBonus">
  1452. +                <amount>15</amount>
  1453. +                <mode>PER</mode>
  1454. +            </effect>
  1455. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  1456. +                <amount>15</amount>
  1457. +                <mode>PER</mode>
  1458. +            </effect>
  1459. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  1460. +                <amount>15</amount>
  1461. +                <mode>PER</mode>
  1462. +            </effect>
  1463. +            <effect name="PvpMagicalSkillDamageBonus">
  1464. +                <amount>12</amount>
  1465. +                <mode>PER</mode>
  1466. +            </effect>
  1467. +            <effect name="PvpPhysicalAttackDamageBonus">
  1468. +                <amount>12</amount>
  1469. +                <mode>PER</mode>
  1470. +            </effect>
  1471. +            <effect name="PvpPhysicalSkillDamageBonus">
  1472. +                <amount>12</amount>
  1473. +                <mode>PER</mode>
  1474. +            </effect>
  1475. +            <effect name="PhysicalDefence">
  1476. +                <amount>50</amount>
  1477. +                <mode>DIFF</mode>
  1478. +            </effect>
  1479. +            <effect name="MagicalDefence">
  1480. +                <amount>50</amount>
  1481. +                <mode>DIFF</mode>
  1482. +            </effect>
  1483. +            <effect name="StatUp">
  1484. +                <amount>2</amount>
  1485. +                <stat>STR</stat>
  1486. +            </effect>
  1487. +            <effect name="StatUp">
  1488. +                <amount>2</amount>
  1489. +                <stat>INT</stat>
  1490. +            </effect>
  1491. +            <effect name="StatUp">
  1492. +                <amount>2</amount>
  1493. +                <stat>CON</stat>
  1494. +            </effect>
  1495. +            <effect name="StatUp">
  1496. +                <amount>2</amount>
  1497. +                <stat>DEX</stat>
  1498. +            </effect>
  1499. +            <effect name="StatUp">
  1500. +                <amount>2</amount>
  1501. +                <stat>MEN</stat>
  1502. +            </effect>
  1503. +            <effect name="StatUp">
  1504. +                <amount>2</amount>
  1505. +                <stat>WIT</stat>
  1506. +            </effect>
  1507. +            <effect name="MaxHp">
  1508. +                <amount>100</amount>
  1509. +                <mode>DIFF</mode>
  1510. +            </effect>
  1511. +            <effect name="MaxMp">
  1512. +                <amount>100</amount>
  1513. +                <mode>DIFF</mode>
  1514. +            </effect>
  1515. +        </effects>
  1516.     </skill>
  1517. -   <skill id="59724" toLevel="1" name="">
  1518. -       <!-- AUTO GENERATED SKILL TODO: FIX IT -->
  1519. -       <icon>icon.skill0000</icon>
  1520. -       <operateType>A1</operateType>
  1521. +   <skill id="59724" toLevel="1" name="VIP Lv. 9">
  1522. +        <!-- TODO: Client side -->
  1523. +        <icon>BranchIcon.Icon.g_skill_vip9</icon>
  1524. +        <operateType>P</operateType>
  1525. +        <hitTime>500</hitTime>
  1526. +        <effects>
  1527. +            <effect name="ExpModify">
  1528. +                <amount>40</amount>
  1529. +            </effect>
  1530. +            <effect name="SpModify">
  1531. +                <amount>40</amount>
  1532. +            </effect>
  1533. +            <effect name="BonusDropRate">
  1534. +                <amount>300</amount>
  1535. +                <mode>PER</mode>
  1536. +            </effect>
  1537. +            <effect name="WorldChatPoints">
  1538. +                <amount>50</amount>
  1539. +                <mode>DIFF</mode>
  1540. +            </effect>
  1541. +            <effect name="ReduceDropPenalty">
  1542. +                <deathPenalty>-40</deathPenalty>
  1543. +                <mode>PER</mode>
  1544. +            </effect>
  1545. +            <effect name="PveMagicalSkillDamageBonus">
  1546. +                <amount>15</amount>
  1547. +                <mode>PER</mode>
  1548. +            </effect>
  1549. +            <effect name="PvePhysicalAttackDamageBonus">
  1550. +                <amount>15</amount>
  1551. +                <mode>PER</mode>
  1552. +            </effect>
  1553. +            <effect name="PvePhysicalSkillDamageBonus">
  1554. +                <amount>15</amount>
  1555. +                <mode>PER</mode>
  1556. +            </effect>
  1557. +            <effect name="PvePhysicalSkillDamageBonus">
  1558. +                <amount>15</amount>
  1559. +                <mode>PER</mode>
  1560. +            </effect>
  1561. +            <effect name="PveRaidMagicalSkillDamageBonus">
  1562. +                <amount>15</amount>
  1563. +                <mode>PER</mode>
  1564. +            </effect>
  1565. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  1566. +                <amount>15</amount>
  1567. +                <mode>PER</mode>
  1568. +            </effect>
  1569. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  1570. +                <amount>15</amount>
  1571. +                <mode>PER</mode>
  1572. +            </effect>
  1573. +            <effect name="PvpMagicalSkillDamageBonus">
  1574. +                <amount>13</amount>
  1575. +                <mode>PER</mode>
  1576. +            </effect>
  1577. +            <effect name="PvpPhysicalAttackDamageBonus">
  1578. +                <amount>13</amount>
  1579. +                <mode>PER</mode>
  1580. +            </effect>
  1581. +            <effect name="PvpPhysicalSkillDamageBonus">
  1582. +                <amount>13</amount>
  1583. +                <mode>PER</mode>
  1584. +            </effect>
  1585. +            <effect name="PhysicalDefence">
  1586. +                <amount>80</amount>
  1587. +                <mode>DIFF</mode>
  1588. +            </effect>
  1589. +            <effect name="MagicalDefence">
  1590. +                <amount>80</amount>
  1591. +                <mode>DIFF</mode>
  1592. +            </effect>
  1593. +            <effect name="StatUp">
  1594. +                <amount>3</amount>
  1595. +                <stat>STR</stat>
  1596. +            </effect>
  1597. +            <effect name="StatUp">
  1598. +                <amount>3</amount>
  1599. +                <stat>INT</stat>
  1600. +            </effect>
  1601. +            <effect name="StatUp">
  1602. +                <amount>3</amount>
  1603. +                <stat>CON</stat>
  1604. +            </effect>
  1605. +            <effect name="StatUp">
  1606. +                <amount>3</amount>
  1607. +                <stat>DEX</stat>
  1608. +            </effect>
  1609. +            <effect name="StatUp">
  1610. +                <amount>3</amount>
  1611. +                <stat>MEN</stat>
  1612. +            </effect>
  1613. +            <effect name="StatUp">
  1614. +                <amount>3</amount>
  1615. +                <stat>WIT</stat>
  1616. +            </effect>
  1617. +            <effect name="MaxHp">
  1618. +                <amount>200</amount>
  1619. +                <mode>DIFF</mode>
  1620. +            </effect>
  1621. +            <effect name="MaxMp">
  1622. +                <amount>200</amount>
  1623. +                <mode>DIFF</mode>
  1624. +            </effect>
  1625. +        </effects>
  1626.     </skill>
  1627. -   <skill id="59725" toLevel="1" name="">
  1628. -       <!-- AUTO GENERATED SKILL TODO: FIX IT -->
  1629. -       <icon>icon.skill0000</icon>
  1630. -       <operateType>A1</operateType>
  1631. -   </skill>
  1632. +   <skill id="59725" toLevel="1" name="VIP Lv. 10">
  1633. +        <!-- TODO: Client side -->
  1634. +        <icon>BranchIcon.Icon.g_skill_vip10</icon>
  1635. +        <operateType>P</operateType>
  1636. +        <hitTime>500</hitTime>
  1637. +        <effects>
  1638. +            <effect name="ExpModify">
  1639. +                <amount>50</amount>
  1640. +            </effect>
  1641. +            <effect name="SpModify">
  1642. +                <amount>50</amount>
  1643. +            </effect>
  1644. +            <effect name="BonusDropRate">
  1645. +                <amount>300</amount>
  1646. +                <mode>PER</mode>
  1647. +            </effect>
  1648. +            <effect name="WorldChatPoints">
  1649. +                <amount>50</amount>
  1650. +                <mode>DIFF</mode>
  1651. +            </effect>
  1652. +            <effect name="ReduceDropPenalty">
  1653. +                <deathPenalty>-50</deathPenalty>
  1654. +                <mode>PER</mode>
  1655. +            </effect>
  1656. +            <effect name="PveMagicalSkillDamageBonus">
  1657. +                <amount>15</amount>
  1658. +                <mode>PER</mode>
  1659. +            </effect>
  1660. +            <effect name="PvePhysicalAttackDamageBonus">
  1661. +                <amount>15</amount>
  1662. +                <mode>PER</mode>
  1663. +            </effect>
  1664. +            <effect name="PvePhysicalSkillDamageBonus">
  1665. +                <amount>15</amount>
  1666. +                <mode>PER</mode>
  1667. +            </effect>
  1668. +            <effect name="PvePhysicalSkillDamageBonus">
  1669. +                <amount>15</amount>
  1670. +                <mode>PER</mode>
  1671. +            </effect>
  1672. +            <effect name="PveRaidMagicalSkillDamageBonus">
  1673. +                <amount>15</amount>
  1674. +                <mode>PER</mode>
  1675. +            </effect>
  1676. +            <effect name="PveRaidPhysicalAttackDamageBonus">
  1677. +                <amount>15</amount>
  1678. +                <mode>PER</mode>
  1679. +            </effect>
  1680. +            <effect name="PveRaidPhysicalSkillDamageBonus">
  1681. +                <amount>15</amount>
  1682. +                <mode>PER</mode>
  1683. +            </effect>
  1684. +            <effect name="PvpMagicalSkillDamageBonus">
  1685. +                <amount>15</amount>
  1686. +                <mode>PER</mode>
  1687. +            </effect>
  1688. +            <effect name="PvpPhysicalAttackDamageBonus">
  1689. +                <amount>15</amount>
  1690. +                <mode>PER</mode>
  1691. +            </effect>
  1692. +            <effect name="PvpPhysicalSkillDamageBonus">
  1693. +                <amount>15</amount>
  1694. +                <mode>PER</mode>
  1695. +            </effect>
  1696. +            <effect name="PhysicalDefence">
  1697. +                <amount>100</amount>
  1698. +                <mode>DIFF</mode>
  1699. +            </effect>
  1700. +            <effect name="MagicalDefence">
  1701. +                <amount>100</amount>
  1702. +                <mode>DIFF</mode>
  1703. +            </effect>
  1704. +            <effect name="StatUp">
  1705. +                <amount>4</amount>
  1706. +                <stat>STR</stat>
  1707. +            </effect>
  1708. +            <effect name="StatUp">
  1709. +                <amount>4</amount>
  1710. +                <stat>INT</stat>
  1711. +            </effect>
  1712. +            <effect name="StatUp">
  1713. +                <amount>4</amount>
  1714. +                <stat>CON</stat>
  1715. +            </effect>
  1716. +            <effect name="StatUp">
  1717. +                <amount>4</amount>
  1718. +                <stat>DEX</stat>
  1719. +            </effect>
  1720. +            <effect name="StatUp">
  1721. +                <amount>4</amount>
  1722. +                <stat>MEN</stat>
  1723. +            </effect>
  1724. +            <effect name="StatUp">
  1725. +                <amount>4</amount>
  1726. +                <stat>WIT</stat>
  1727. +            </effect>
  1728. +            <effect name="MaxHp">
  1729. +                <amount>500</amount>
  1730. +                <mode>DIFF</mode>
  1731. +            </effect>
  1732. +            <effect name="MaxMp">
  1733. +                <amount>500</amount>
  1734. +                <mode>DIFF</mode>
  1735. +            </effect>
  1736. +        </effects>
  1737. +    </skill>
  1738.     <skill id="59726" toLevel="1" name="">
  1739.         <!-- AUTO GENERATED SKILL TODO: FIX IT -->
  1740.         <icon>icon.skill0000</icon>
  1741. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/Config.java
  1742. IDEA additional info:
  1743. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1744. <+>UTF-8
  1745. ===================================================================
  1746. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/Config.java
  1747. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/Config.java   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1748. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/Config.java   (date 1619460020152)
  1749. @@ -135,6 +135,7 @@
  1750.     private static final String CUSTOM_OFFLINE_TRADE_CONFIG_FILE = "./config/Custom/OfflineTrade.ini";
  1751.     private static final String CUSTOM_PASSWORD_CHANGE_CONFIG_FILE = "./config/Custom/PasswordChange.ini";
  1752.     private static final String CUSTOM_PC_CAFE_CONFIG_FILE = "./config/Custom/PcCafe.ini";
  1753. +   private static final String CUSTOM_VIP_CONFIG_FILE = "./config/Custom/VipSystem.ini";
  1754.     private static final String CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE = "./config/Custom/PremiumSystem.ini";
  1755.     private static final String CUSTOM_PRIVATE_STORE_RANGE_CONFIG_FILE = "./config/Custom/PrivateStoreRange.ini";
  1756.     private static final String CUSTOM_PVP_ANNOUNCE_CONFIG_FILE = "./config/Custom/PvpAnnounce.ini";
  1757. @@ -157,6 +158,7 @@
  1758.    
  1759.     public static boolean ENABLE_ATTENDANCE_REWARDS;
  1760.     public static boolean PREMIUM_ONLY_ATTENDANCE_REWARDS;
  1761. +   public static boolean VIP_ONLY_ATTENDANCE_REWARDS;
  1762.     public static boolean ATTENDANCE_REWARDS_SHARE_ACCOUNT;
  1763.     public static int ATTENDANCE_REWARD_DELAY;
  1764.     public static boolean ATTENDANCE_POPUP_START;
  1765. @@ -1271,6 +1273,7 @@
  1766.     public static boolean PREMIUM_ONLY_FISHING;
  1767.     public static boolean PC_CAFE_ENABLED;
  1768.     public static boolean PC_CAFE_ONLY_PREMIUM;
  1769. +   public static boolean PC_CAFE_ONLY_VIP;
  1770.     public static int PC_CAFE_MAX_POINTS;
  1771.     public static boolean PC_CAFE_ENABLE_DOUBLE_POINTS;
  1772.     public static int PC_CAFE_DOUBLE_POINTS_CHANCE;
  1773. @@ -1278,7 +1281,11 @@
  1774.     public static boolean PC_CAFE_RANDOM_POINT;
  1775.     public static boolean PC_CAFE_REWARD_LOW_EXP_KILLS;
  1776.     public static int PC_CAFE_LOW_EXP_KILLS_CHANCE;
  1777. -   public static boolean SELLBUFF_ENABLED;
  1778. +   public static boolean VIP_SYSTEM_ENABLED;
  1779. +   public static boolean VIP_SYSTEM_PRIME_AFFECT;
  1780. +   public static boolean VIP_SYSTEM_L_SHOP_AFFECT;
  1781. +    public static int VIP_SYSTEM_MAX_TIER;
  1782. +    public static boolean SELLBUFF_ENABLED;
  1783.     public static int SELLBUFF_MP_MULTIPLER;
  1784.     public static int SELLBUFF_PAYMENT_ID;
  1785.     public static long SELLBUFF_MIN_PRICE;
  1786. @@ -1565,6 +1572,7 @@
  1787.             final PropertiesParser Attandance = new PropertiesParser(ATTENDANCE_CONFIG_FILE);
  1788.             ENABLE_ATTENDANCE_REWARDS = Attandance.getBoolean("EnableAttendanceRewards", false);
  1789.             PREMIUM_ONLY_ATTENDANCE_REWARDS = Attandance.getBoolean("PremiumOnlyAttendanceRewards", false);
  1790. +           VIP_ONLY_ATTENDANCE_REWARDS = Attandance.getBoolean("VIPOnlyAttendanceRewards", false);
  1791.             ATTENDANCE_REWARDS_SHARE_ACCOUNT = Attandance.getBoolean("AttendanceRewardsShareAccount", false);
  1792.             ATTENDANCE_REWARD_DELAY = Attandance.getInt("AttendanceRewardDelay", 30);
  1793.             ATTENDANCE_POPUP_START = Attandance.getBoolean("AttendancePopupStart", true);
  1794. @@ -3279,6 +3287,7 @@
  1795.             final PropertiesParser PcCafe = new PropertiesParser(CUSTOM_PC_CAFE_CONFIG_FILE);
  1796.             PC_CAFE_ENABLED = PcCafe.getBoolean("PcCafeEnabled", false);
  1797.             PC_CAFE_ONLY_PREMIUM = PcCafe.getBoolean("PcCafeOnlyPremium", false);
  1798. +           PC_CAFE_ONLY_VIP = PcCafe.getBoolean("PcCafeOnlyVip", false);
  1799.             PC_CAFE_MAX_POINTS = PcCafe.getInt("MaxPcCafePoints", 200000);
  1800.             if (PC_CAFE_MAX_POINTS < 0)
  1801.             {
  1802. @@ -3306,7 +3315,19 @@
  1803.             {
  1804.                 PC_CAFE_LOW_EXP_KILLS_CHANCE = 100;
  1805.             }
  1806. -          
  1807. +
  1808. +
  1809. +           final PropertiesParser vipSystem = new PropertiesParser(CUSTOM_VIP_CONFIG_FILE);
  1810. +           VIP_SYSTEM_ENABLED = vipSystem.getBoolean("VIPEnabled", false);
  1811. +           if(VIP_SYSTEM_ENABLED) {
  1812. +                VIP_SYSTEM_PRIME_AFFECT = vipSystem.getBoolean("PrimeAffectPoints", false);
  1813. +                VIP_SYSTEM_L_SHOP_AFFECT = vipSystem.getBoolean("LShopAffectPoints", false);
  1814. +                VIP_SYSTEM_MAX_TIER = vipSystem.getInt("MaxVipLevel", 7);
  1815. +                if (VIP_SYSTEM_MAX_TIER > 10)
  1816. +                    VIP_SYSTEM_MAX_TIER = 10;
  1817. +            }
  1818. +
  1819. +
  1820.             // Load PremiumSystem config file (if exists)
  1821.             final PropertiesParser PremiumSystem = new PropertiesParser(CUSTOM_PREMIUM_SYSTEM_CONFIG_FILE);
  1822.             PREMIUM_SYSTEM_ENABLED = PremiumSystem.getBoolean("EnablePremiumSystem", false);
  1823. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/PrimeShop.xml
  1824. IDEA additional info:
  1825. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1826. <+>UTF-8
  1827. ===================================================================
  1828. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/PrimeShop.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/PrimeShop.xml
  1829. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/PrimeShop.xml (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1830. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/PrimeShop.xml (date 1619456295873)
  1831. @@ -18,7 +18,56 @@
  1832.     <item id="2090028" cat="2" paymentType="0" price="600" recommended="2" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1833.         <item itemId="93483" count="1" /> <!-- Growth Kit: L-Coins -->
  1834.     </item>
  1835. -   <item id="2090027" cat="2" paymentType="0" price="999" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1836. +   <item id="2090027" cat="2" paymentType="0" price="999" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
  1837.         <item itemId="93484" count="1" /> <!-- Grace Kit: L-Coins -->
  1838.     </item>
  1839. +
  1840. +   <item id="2090044" cat="4" paymentType="0" price="30" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1841. +       <item itemId="71268" count="1" /> <!-- VIP Gain Scroll -->
  1842. +   </item>
  1843. +   <item id="2090045" cat="4" paymentType="0" price="60" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1844. +       <item itemId="71269" count="1" /> <!-- Good VIP Gain Scroll -->
  1845. +   </item>
  1846. +   <item id="2090046" cat="4" paymentType="0" price="50" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1847. +       <item itemId="71316" count="1" /> <!-- VIP Gain Scroll - 80 -->
  1848. +   </item>
  1849. +   <item id="2090047" cat="4" paymentType="0" price="100" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1850. +       <item itemId="71317" count="1" /> <!-- VIP Gain Scroll - 240 -->
  1851. +   </item>
  1852. +   <item id="2090048" cat="4" paymentType="0" price="333" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0">
  1853. +       <item itemId="71314" count="1" /> <!-- VIP Gain Scroll - 800 -->
  1854. +   </item>
  1855. +   <item id="2090049" cat="4" paymentType="0" price="999" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" >
  1856. +       <item itemId="71315" count="1" /> <!-- VIP Gain Scroll - 2400 -->
  1857. +   </item>
  1858. +   <item id="2090050" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="1">
  1859. +       <item itemId="71177" count="1" /> <!-- Daily Present - VIP 1 -->
  1860. +   </item>
  1861. +   <item id="2090051" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="2">
  1862. +       <item itemId="71178" count="1" /> <!-- Daily Present - VIP 2 -->
  1863. +   </item>
  1864. +   <item id="2090052" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="3">
  1865. +       <item itemId="71179" count="1" /> <!-- Daily Present - VIP 3 -->
  1866. +   </item>
  1867. +   <item id="2090053" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="4">
  1868. +       <item itemId="71180" count="1" /> <!-- Daily Present - VIP 4 -->
  1869. +   </item>
  1870. +   <item id="2090054" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="5">
  1871. +       <item itemId="71181" count="1" /> <!-- Daily Present - VIP 5 -->
  1872. +   </item>
  1873. +   <item id="2090055" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="6">
  1874. +       <item itemId="71182" count="1" /> <!-- Daily Present - VIP 6 -->
  1875. +   </item>
  1876. +   <item id="2090056" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="7">
  1877. +       <item itemId="71183" count="1" /> <!-- Daily Present - VIP 7 -->
  1878. +   </item>
  1879. +   <item id="2090057" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="8">
  1880. +       <item itemId="99027" count="1" /> <!-- Daily Present - VIP 8 -->
  1881. +   </item>
  1882. +   <item id="2090058" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="9">
  1883. +       <item itemId="99028" count="1" /> <!-- Daily Present - VIP 9 -->
  1884. +   </item>
  1885. +   <item id="2090059" cat="5" paymentType="0" price="0" recommended="4" startSale="315558000" endSale="2127452400" dayOfWeek="127" startHour="0" startMinute="0" stopHour="23" stopMinute="59" stock="-1" maxStock="-1" salePercent="0" minLevel="0" maxLevel="0" minBirthday="0" maxBirthday="0" restrictionDay="0" availableCount="0" isVipGift="true" vipTier="10">
  1886. +       <item itemId="99029" count="1" /> <!-- Daily Present - VIP 10 -->
  1887. +   </item>
  1888.  </list>
  1889. \ No newline at end of file
  1890. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java
  1891. IDEA additional info:
  1892. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1893. <+>UTF-8
  1894. ===================================================================
  1895. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java
  1896. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1897. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/DailyTaskManager.java  (date 1619456869881)
  1898. @@ -43,7 +43,9 @@
  1899.  import org.l2jmobius.gameserver.model.holders.SkillHolder;
  1900.  import org.l2jmobius.gameserver.model.holders.SubClassHolder;
  1901.  import org.l2jmobius.gameserver.model.olympiad.Olympiad;
  1902. +import org.l2jmobius.gameserver.model.variables.AccountVariables;
  1903.  import org.l2jmobius.gameserver.model.variables.PlayerVariables;
  1904. +import org.l2jmobius.gameserver.model.vip.VipManager;
  1905.  import org.l2jmobius.gameserver.network.serverpackets.ExVoteSystemInfo;
  1906.  import org.l2jmobius.gameserver.network.serverpackets.ExWorldChatCnt;
  1907.  
  1908. @@ -73,6 +75,7 @@
  1909.         resetWorldChatPoints();
  1910.         resetTrainingCamp();
  1911.         resetVitality();
  1912. +        checkVip();
  1913.     }
  1914.    
  1915.     @ScheduleTarget
  1916. @@ -86,6 +89,22 @@
  1917.             LOGGER.info("Olympiad System: Data updated.");
  1918.         }
  1919.     }
  1920. +
  1921. +   private void checkVip(){
  1922. +        // Delete all entries for received gifts
  1923. +        AccountVariables.deleteVipPurchases(AccountVariables.VIP_ITEM_BOUGHT);
  1924. +
  1925. +       // Checks the tier expiration for online players
  1926. +        // offline players get handled on next time they log in.
  1927. +        for (PlayerInstance player : World.getInstance().getPlayers())
  1928. +        {
  1929. +            if(player.getVipTier() > 0) {
  1930. +                VipManager.getInstance().checkVipTierExpiration(player);
  1931. +            }
  1932. +
  1933. +            player.getAccountVariables().restoreMe();
  1934. +        }
  1935. +    }
  1936.    
  1937.     private void resetVitality()
  1938.     {
  1939. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/PcCafePointsManager.java
  1940. IDEA additional info:
  1941. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1942. <+>UTF-8
  1943. ===================================================================
  1944. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/PcCafePointsManager.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/PcCafePointsManager.java
  1945. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/PcCafePointsManager.java   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1946. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/instancemanager/PcCafePointsManager.java   (date 1619454227599)
  1947. @@ -38,6 +38,11 @@
  1948.         {
  1949.             return;
  1950.         }
  1951. +
  1952. +       if (Config.PC_CAFE_ONLY_VIP && player.getVipTier() <= 0)
  1953. +       {
  1954. +           return;
  1955. +       }
  1956.        
  1957.         if (player.getPcCafePoints() >= Config.PC_CAFE_MAX_POINTS)
  1958.         {
  1959. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/attendance/RequestVipAttendanceCheck.java
  1960. IDEA additional info:
  1961. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1962. <+>UTF-8
  1963. ===================================================================
  1964. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/attendance/RequestVipAttendanceCheck.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/attendance/RequestVipAttendanceCheck.java
  1965. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/attendance/RequestVipAttendanceCheck.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  1966. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/attendance/RequestVipAttendanceCheck.java    (date 1619453599275)
  1967. @@ -60,7 +60,10 @@
  1968.         {
  1969.             player.sendPacket(SystemMessageId.YOUR_VIP_RANK_IS_TOO_LOW_TO_RECEIVE_THE_REWARD);
  1970.             return;
  1971. -       }
  1972. +       }else if(Config.VIP_ONLY_ATTENDANCE_REWARDS && player.getVipTier() <= 0){
  1973. +            player.sendPacket(SystemMessageId.YOUR_VIP_RANK_IS_TOO_LOW_TO_RECEIVE_THE_REWARD);
  1974. +            return;
  1975. +        }
  1976.        
  1977.         // Check login delay.
  1978.         if (player.getUptime() < (Config.ATTENDANCE_REWARD_DELAY * 60 * 1000))
  1979. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipInfo.java
  1980. IDEA additional info:
  1981. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  1982. <+>UTF-8
  1983. ===================================================================
  1984. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipInfo.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipInfo.java
  1985. new file mode 100644
  1986. --- /dev/null   (date 1619559315844)
  1987. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipInfo.java (date 1619559315844)
  1988. @@ -0,0 +1,40 @@
  1989. +package org.l2jmobius.gameserver.model.vip;
  1990. +
  1991. +/**
  1992. + * @author Gabriel Costa Souza
  1993. + * Discord: Gabriel 'GCS'#2589
  1994. + * Skype - email: gabriel_costa25@hotmail.com
  1995. + */
  1996. +public class VipInfo {
  1997. +
  1998. +    private final byte tier;
  1999. +    private final long pointsRequired;
  2000. +    private final long pointsDepreciated;
  2001. +    private int skill;
  2002. +
  2003. +    public VipInfo(byte tier, long pointsRequired, long pointsDepreciated) {
  2004. +        this.tier = tier;
  2005. +        this.pointsRequired = pointsRequired;
  2006. +        this.pointsDepreciated = pointsDepreciated;
  2007. +    }
  2008. +
  2009. +    public byte getTier() {
  2010. +        return tier;
  2011. +    }
  2012. +
  2013. +    public long getPointsRequired() {
  2014. +        return pointsRequired;
  2015. +    }
  2016. +
  2017. +    public long getPointsDepreciated() {
  2018. +        return pointsDepreciated;
  2019. +    }
  2020. +
  2021. +    public int getSkill() {
  2022. +        return skill;
  2023. +    }
  2024. +
  2025. +    public void setSkill(int skill) {
  2026. +        this.skill = skill;
  2027. +    }
  2028. +}
  2029. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipManager.java
  2030. IDEA additional info:
  2031. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2032. <+>UTF-8
  2033. ===================================================================
  2034. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipManager.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipManager.java
  2035. new file mode 100644
  2036. --- /dev/null   (date 1619559315828)
  2037. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/vip/VipManager.java  (date 1619559315828)
  2038. @@ -0,0 +1,154 @@
  2039. +package org.l2jmobius.gameserver.model.vip;
  2040. +
  2041. +import org.l2jmobius.Config;
  2042. +import org.l2jmobius.gameserver.data.xml.SkillData;
  2043. +import org.l2jmobius.gameserver.data.xml.VipData;
  2044. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  2045. +import org.l2jmobius.gameserver.model.events.Containers;
  2046. +import org.l2jmobius.gameserver.model.events.EventType;
  2047. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLoad;
  2048. +import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
  2049. +import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
  2050. +import org.l2jmobius.gameserver.model.variables.AccountVariables;
  2051. +import org.l2jmobius.gameserver.network.serverpackets.ExBRNewIconCashBtnWnd;
  2052. +import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipInfo;
  2053. +
  2054. +import java.time.Instant;
  2055. +import java.time.temporal.ChronoUnit;
  2056. +import java.util.function.Consumer;
  2057. +
  2058. +import static java.util.Objects.nonNull;
  2059. +
  2060. +/**
  2061. + * @author Gabriel Costa Souza
  2062. + * Discord: Gabriel 'GCS'#2589
  2063. + * Skype - email: gabriel_costa25@hotmail.com
  2064. + */
  2065. +public final class VipManager {
  2066. +
  2067. +    private static final byte VIP_MAX_TIER = (byte) Config.VIP_SYSTEM_MAX_TIER;
  2068. +
  2069. +    private final ConsumerEventListener vipLoginListener = new ConsumerEventListener(null, EventType.ON_PLAYER_LOGIN, (Consumer<OnPlayerLogin>) this::onVipLogin, this);
  2070. +
  2071. +    private VipManager() {
  2072. +        if(!Config.VIP_SYSTEM_ENABLED)
  2073. +            return;
  2074. +        Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_LOAD, (Consumer<OnPlayerLoad>) this::onPlayerLoaded, this));
  2075. +    }
  2076. +
  2077. +    private void onPlayerLoaded(OnPlayerLoad event) {
  2078. +        final var player = event.getPlayer();
  2079. +        player.setVipTier(getVipTier(player));
  2080. +        if(player.getVipTier() > 0) {
  2081. +            manageTier(player);
  2082. +            player.addListener(vipLoginListener);
  2083. +        } else {
  2084. +            player.sendPacket(new ReceiveVipInfo(player));
  2085. +            player.sendPacket(new ExBRNewIconCashBtnWnd((byte)0));
  2086. +        }
  2087. +    }
  2088. +
  2089. +    private boolean canReceiveGift(PlayerInstance player){
  2090. +        if(!Config.VIP_SYSTEM_ENABLED)
  2091. +            return false;
  2092. +        if(player.getVipTier() <= 0)
  2093. +            return false;
  2094. +        else{
  2095. +            long timeBought = player.getAccountVariables().getLong(AccountVariables.VIP_ITEM_BOUGHT, 0L);
  2096. +            return timeBought <= 0;
  2097. +        }
  2098. +    }
  2099. +
  2100. +    private void onVipLogin(OnPlayerLogin event) {
  2101. +        final var player = event.getPlayer();
  2102. +        if(canReceiveGift(player)) {
  2103. +            player.sendPacket(new ExBRNewIconCashBtnWnd((byte) 1));
  2104. +        }else {
  2105. +            player.sendPacket(new ExBRNewIconCashBtnWnd((byte) 0));
  2106. +        }
  2107. +        player.removeListener(vipLoginListener);
  2108. +        player.sendPacket(new ReceiveVipInfo(player));
  2109. +    }
  2110. +
  2111. +    public void manageTier(PlayerInstance player) {
  2112. +        if(!checkVipTierExpiration(player)) {
  2113. +            player.sendPacket(new ReceiveVipInfo(player));
  2114. +        }
  2115. +
  2116. +        if(player.getVipTier() > 1) {
  2117. +            var oldSkillId = VipData.getInstance().getSkillId((byte) (player.getVipTier() - 1));
  2118. +            if(oldSkillId > 0) {
  2119. +                var oldSkill = SkillData.getInstance().getSkill(oldSkillId, 1);
  2120. +                if(nonNull(oldSkill)) {
  2121. +                    player.removeSkill(oldSkill);
  2122. +                }
  2123. +            }
  2124. +        }
  2125. +
  2126. +        var skillId = VipData.getInstance().getSkillId(player.getVipTier());
  2127. +        if(skillId > 0) {
  2128. +            var skill = SkillData.getInstance().getSkill(skillId, 1);
  2129. +            if(nonNull(skill)) {
  2130. +                player.addSkill(skill);
  2131. +            }
  2132. +        }
  2133. +    }
  2134. +
  2135. +
  2136. +    public byte getVipTier(PlayerInstance player) {
  2137. +        return getVipInfo(player).getTier();
  2138. +    }
  2139. +
  2140. +    public byte getVipTier(long points) {
  2141. +        byte temp = getVipInfo(points).getTier();
  2142. +        if(temp > VIP_MAX_TIER)
  2143. +            temp = VIP_MAX_TIER;
  2144. +        return temp;
  2145. +    }
  2146. +
  2147. +    private VipInfo getVipInfo(PlayerInstance player) {
  2148. +        var points =  player.getVipPoints();
  2149. +        return getVipInfo(points);
  2150. +    }
  2151. +
  2152. +    private VipInfo getVipInfo(long points) {
  2153. +        for (byte i = 0; i < VipData.getInstance().getVipTiers().size(); i++) {
  2154. +            if(points < VipData.getInstance().getVipTiers().get(i).getPointsRequired()) {
  2155. +                byte temp = (byte) (i - 1);
  2156. +                if(temp > VIP_MAX_TIER)
  2157. +                    temp = VIP_MAX_TIER;
  2158. +                return VipData.getInstance().getVipTiers().get(temp);
  2159. +            }
  2160. +        }
  2161. +        return VipData.getInstance().getVipTiers().get(VIP_MAX_TIER);
  2162. +    }
  2163. +
  2164. +    public long getPointsDepreciatedOnLevel(byte vipTier) {
  2165. +        return VipData.getInstance().getVipTiers().get(vipTier).getPointsDepreciated();
  2166. +    }
  2167. +
  2168. +    public long getPointsToLevel(byte level) {
  2169. +        if(VipData.getInstance().getVipTiers().containsKey(level)) {
  2170. +            return VipData.getInstance().getVipTiers().get(level).getPointsRequired();
  2171. +        }
  2172. +        return 0;
  2173. +    }
  2174. +
  2175. +    public boolean checkVipTierExpiration(PlayerInstance player) {
  2176. +        var now = Instant.now();
  2177. +        if(now.isAfter(Instant.ofEpochMilli(player.getVipTierExpiration()))) {
  2178. +            player.updateVipPoints(-getPointsDepreciatedOnLevel(player.getVipTier()));
  2179. +            player.setVipTierExpiration(Instant.now().plus(30, ChronoUnit.DAYS).toEpochMilli());
  2180. +            return true;
  2181. +        }
  2182. +        return false;
  2183. +    }
  2184. +
  2185. +    public static VipManager getInstance() {
  2186. +        return Singleton.INSTANCE;
  2187. +    }
  2188. +
  2189. +    private static class Singleton {
  2190. +        private static final VipManager INSTANCE = new VipManager();
  2191. +    }
  2192. +}
  2193. \ No newline at end of file
  2194. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
  2195. IDEA additional info:
  2196. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2197. <+>UTF-8
  2198. ===================================================================
  2199. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
  2200. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  2201. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java   (date 1619460020275)
  2202. @@ -21,6 +21,8 @@
  2203.  import java.sql.PreparedStatement;
  2204.  import java.sql.ResultSet;
  2205.  import java.sql.SQLException;
  2206. +import java.time.Instant;
  2207. +import java.time.temporal.ChronoUnit;
  2208.  import java.util.ArrayList;
  2209.  import java.util.Arrays;
  2210.  import java.util.Calendar;
  2211. @@ -199,23 +201,7 @@
  2212.  import org.l2jmobius.gameserver.model.eventengine.AbstractEvent;
  2213.  import org.l2jmobius.gameserver.model.events.EventDispatcher;
  2214.  import org.l2jmobius.gameserver.model.events.EventType;
  2215. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
  2216. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
  2217. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerFameChanged;
  2218. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaAdd;
  2219. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerHennaRemove;
  2220. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemEquip;
  2221. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
  2222. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogout;
  2223. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeStatus;
  2224. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMentorStatus;
  2225. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPKChanged;
  2226. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfessionCancel;
  2227. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerProfessionChange;
  2228. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPChanged;
  2229. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPvPKill;
  2230. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerReputationChanged;
  2231. -import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerSubChange;
  2232. +import org.l2jmobius.gameserver.model.events.impl.creature.player.*;
  2233.  import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
  2234.  import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
  2235.  import org.l2jmobius.gameserver.model.events.timers.TimerHolder;
  2236. @@ -281,6 +267,7 @@
  2237.  import org.l2jmobius.gameserver.model.stats.Stat;
  2238.  import org.l2jmobius.gameserver.model.variables.AccountVariables;
  2239.  import org.l2jmobius.gameserver.model.variables.PlayerVariables;
  2240. +import org.l2jmobius.gameserver.model.vip.VipManager;
  2241.  import org.l2jmobius.gameserver.model.zone.ZoneId;
  2242.  import org.l2jmobius.gameserver.model.zone.ZoneType;
  2243.  import org.l2jmobius.gameserver.model.zone.type.WaterZone;
  2244. @@ -362,6 +349,7 @@
  2245.  import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
  2246.  import org.l2jmobius.gameserver.network.serverpackets.limitshop.ExBloodyCoinCount;
  2247.  import org.l2jmobius.gameserver.network.serverpackets.sessionzones.TimedHuntingZoneExit;
  2248. +import org.l2jmobius.gameserver.network.serverpackets.vip.ReceiveVipInfo;
  2249.  import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
  2250.  import org.l2jmobius.gameserver.taskmanager.AutoPlayTaskManager;
  2251.  import org.l2jmobius.gameserver.taskmanager.AutoUseTaskManager;
  2252. @@ -890,7 +878,7 @@
  2253.     private ScheduledFuture<?> _timedHuntingZoneFinishTask = null;
  2254.    
  2255.     private PlayerRandomCraft _randomCraft = null;
  2256. -  
  2257. +    private byte vipTier = 0;
  2258.     private final List<QuestTimer> _questTimers = new ArrayList<>();
  2259.     private final List<TimerHolder<?>> _timerHolders = new ArrayList<>();
  2260.    
  2261. @@ -6676,6 +6664,7 @@
  2262.                             }
  2263.                         }
  2264.                     }
  2265. +                    EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLoad(player), player);
  2266.                 }
  2267.             }
  2268.            
  2269. @@ -6779,7 +6768,8 @@
  2270.             player.setOnlineStatus(true, false);
  2271.            
  2272.             PlayerAutoSaveTaskManager.getInstance().add(player);
  2273. -       }
  2274. +
  2275. +        }
  2276.         catch (Exception e)
  2277.         {
  2278.             LOGGER.log(Level.SEVERE, "Failed loading character.", e);
  2279. @@ -10074,8 +10064,9 @@
  2280.         {
  2281.             LOGGER.log(Level.SEVERE, "", e);
  2282.         }
  2283. -      
  2284. +
  2285.         EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLogin(this), this);
  2286. +
  2287.         if (isMentee())
  2288.         {
  2289.             // Notify to scripts
  2290. @@ -14539,4 +14530,45 @@
  2291.     {
  2292.         return _randomCraft;
  2293.     }
  2294. +
  2295. +    public byte getVipTier() {
  2296. +        return vipTier;
  2297. +    }
  2298. +
  2299. +    public void setVipTier(byte vipTier) {
  2300. +        this.vipTier = vipTier;
  2301. +    }
  2302. +
  2303. +    public long getVipPoints()
  2304. +    {
  2305. +        return getAccountVariables().getLong(AccountVariables.VIP_POINTS, 0L);
  2306. +    }
  2307. +
  2308. +    public long getVipTierExpiration() {
  2309. +        return getAccountVariables().getLong(AccountVariables.VIP_EXPIRATION, 0L);
  2310. +    }
  2311. +
  2312. +    public void setVipTierExpiration(long expiration) {
  2313. +        getAccountVariables().set(AccountVariables.VIP_EXPIRATION, expiration);
  2314. +    }
  2315. +
  2316. +    public void updateVipPoints(long points) {
  2317. +        if(points == 0) {
  2318. +            return;
  2319. +        }
  2320. +        var currentVipTier = VipManager.getInstance().getVipTier(getVipPoints());
  2321. +        getAccountVariables().set(AccountVariables.VIP_POINTS, getVipPoints() + points);
  2322. +        var newTier = VipManager.getInstance().getVipTier(getVipPoints());
  2323. +        if(newTier != currentVipTier) {
  2324. +            vipTier = newTier;
  2325. +            if(newTier > 0) {
  2326. +                getAccountVariables().set(AccountVariables.VIP_EXPIRATION, Instant.now().plus(30, ChronoUnit.DAYS).toEpochMilli());
  2327. +                VipManager.getInstance().manageTier(this);
  2328. +            } else {
  2329. +                getAccountVariables().set(AccountVariables.VIP_EXPIRATION, 0L);
  2330. +            }
  2331. +        }
  2332. +        getAccountVariables().storeMe(); //force to store to prevent falty purchases after a crash.
  2333. +        sendPacket(new ReceiveVipInfo(this));
  2334. +    }
  2335.  }
  2336. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/vip.xml
  2337. IDEA additional info:
  2338. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2339. <+>UTF-8
  2340. ===================================================================
  2341. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/vip.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/vip.xml
  2342. new file mode 100644
  2343. --- /dev/null   (date 1619555983381)
  2344. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/vip.xml   (date 1619555983381)
  2345. @@ -0,0 +1,245 @@
  2346. +<?xml version='1.0' encoding='utf-8'?>
  2347. +<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/vip.xsd">
  2348. +    <!--
  2349. +        tier: tier of the vip
  2350. +        points-requires: points required to get to that tier
  2351. +        points-lose: points player will lose after a while.
  2352. +
  2353. +        PS. Client data made for Sylph! Probably works on essence aswell!
  2354. +
  2355. +l2.ini
  2356. +[VipSystem]
  2357. +UseVipInfoWndAden=false
  2358. +
  2359. + -> needs to be true
  2360. +
  2361. +L2 Store needs to be true aswell!
  2362. +
  2363. +ItemIds: 71314, 71315, 71316, 71317, 71268, 71269
  2364. +
  2365. +
  2366. +ItemName_ClassicAden-eu.dat
  2367. +
  2368. +item_name_begin    id=71314    name=[VIP Gain Scroll - 800]    additionalname=[]   description=[VIP Points +800.]  popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2369. +item_name_begin    id=71315    name=[VIP Gain Scroll - 2400]   additionalname=[]   description=[VIP Points +2400.] popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2370. +item_name_begin    id=71316    name=[VIP Gain Scroll - 80] additionalname=[]   description=[VIP Points +80.]   popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2371. +item_name_begin    id=71317    name=[VIP Gain Scroll - 240]    additionalname=[]   description=[VIP Points +240.]  popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2372. +item_name_begin    id=71268    name=[VIP Gain Scroll]  additionalname=[]   description=[VIP Points +27.]   popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2373. +item_name_begin    id=71269    name=[Good VIP Gain Scroll] additionalname=[]   description=[VIP Points +273.]  popup=-1    default_action=[action_skill_reduce_on_skill_success]   use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2374. +item_name_begin    id=71177    name=[Daily Present - VIP 1]    additionalname=[]   description=[Double-click to obtain a Scroll of Escape and 3 HP Replenishing Potions.]  popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2375. +item_name_begin    id=71178    name=[Daily Present - VIP 2]    additionalname=[]   description=[Double-click to obtain a Scroll of Resurrection and 3 HP Replenishing Potions.]    popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2376. +item_name_begin    id=71179    name=[Daily Present - VIP 3]    additionalname=[]   description=[Double-click to obtain a Scroll of Escape, Scroll of Resurrection, 5 HP Replenishing Potions.] popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2377. +item_name_begin    id=71180    name=[Daily Present - VIP 4]    additionalname=[]   description=[Double-click to obtain a Scroll of Escape, Scroll of Resurrection, 3 HP Replenishing Potions.] popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2378. +item_name_begin    id=71181    name=[Daily Present - VIP 5]    additionalname=[]   description=[Double-click to obtain a Blessed Scroll of Escape, 3 High-grade HP Replenishing Potions, 40 VIP Coins.]    popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2379. +item_name_begin    id=71182    name=[Daily Present - VIP 6]    additionalname=[]   description=[Double-click to obtain a Blessed Scroll of Resurrection, 3 High-grade HP Replenishing Potions, 100 VIP Coins.] popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2380. +item_name_begin    id=71183    name=[Daily Present - VIP 7]    additionalname=[]   description=[Double-click to obtain a Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 High-grade HP Replenishing Potions, 150 VIP Coins.] popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2381. +item_name_begin    id=99027    name=[Daily Present - VIP 8]    additionalname=[]   description=[CHANGE ME Double-click to obtain a Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 High-grade HP Replenishing Potions, 150 VIP Coins.]   popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2382. +item_name_begin    id=99028    name=[Daily Present - VIP 9]    additionalname=[]   description=[CHANGE ME Double-click to obtain a Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 High-grade HP Replenishing Potions, 150 VIP Coins.]   popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2383. +item_name_begin    id=99029    name=[Daily Present - VIP 10]   additionalname=[]   description=[CHANGE ME Double-click to obtain a Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 High-grade HP Replenishing Potions, 150 VIP Coins.]   popup=-1    default_action=[action_peel]    use_order=99    name_class=-1   color=1 Tooltip_Texture=[None]  is_trade=0  is_drop=0   is_destruct=1   is_private_store=0  keep_type=1 is_npctrade=0   is_commission_store=0   item_name_end
  2384. +
  2385. +ItemName_ClassicAden-eu.dat [end]
  2386. +item_ex_begin  id=71314    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2387. +item_ex_begin  id=71315    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2388. +item_ex_begin  id=71316    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2389. +item_ex_begin  id=71317    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2390. +item_ex_begin  id=71268    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2391. +item_ex_begin  id=71269    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2392. +item_ex_begin  id=71177    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2393. +item_ex_begin  id=71178    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2394. +item_ex_begin  id=71179    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2395. +item_ex_begin  id=71180    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2396. +item_ex_begin  id=71181    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2397. +item_ex_begin  id=71182    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2398. +item_ex_begin  id=71183    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2399. +item_ex_begin  id=99027    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2400. +item_ex_begin  id=99028    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2401. +item_ex_begin  id=99029    keep_type_selection=normal  keep_type_enchant={0;0;0}   item_ex_end
  2402. +
  2403. +
  2404. +ProductName_ClassicAden-eu.dat
  2405. +product_name_begin id=2090044  outer_name=[VIP Gain Scroll]    description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2406. +product_name_begin id=2090045  outer_name=[Good VIP Gain Scroll]   description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2407. +product_name_begin id=2090046  outer_name=[VIP Gain Scroll - 80]   description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2408. +product_name_begin id=2090047  outer_name=[VIP Gain Scroll - 240]  description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2409. +product_name_begin id=2090048  outer_name=[VIP Gain Scroll - 800]  description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2410. +product_name_begin id=2090049  outer_name=[VIP Gain Scroll - 2400] description=[]  icon=[BranchIcon.Icon.g_bm_vip_potion_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2411. +product_name_begin id=2090050  outer_name=[Daily Present - VIP 1]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i00]  icon_panel=[None]   mainsubject=[]  product_name_end
  2412. +product_name_begin id=2090051  outer_name=[Daily Present - VIP 2]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i01]  icon_panel=[None]   mainsubject=[]  product_name_end
  2413. +product_name_begin id=2090052  outer_name=[Daily Present - VIP 3]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i02]  icon_panel=[None]   mainsubject=[]  product_name_end
  2414. +product_name_begin id=2090053  outer_name=[Daily Present - VIP 4]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i03]  icon_panel=[None]   mainsubject=[]  product_name_end
  2415. +product_name_begin id=2090054  outer_name=[Daily Present - VIP 5]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i04]  icon_panel=[None]   mainsubject=[]  product_name_end
  2416. +product_name_begin id=2090055  outer_name=[Daily Present - VIP 6]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i05]  icon_panel=[None]   mainsubject=[]  product_name_end
  2417. +product_name_begin id=2090056  outer_name=[Daily Present - VIP 7]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i06]  icon_panel=[None]   mainsubject=[]  product_name_end
  2418. +product_name_begin id=2090057  outer_name=[Daily Present - VIP 8]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i08]  icon_panel=[None]   mainsubject=[]  product_name_end
  2419. +product_name_begin id=2090058  outer_name=[Daily Present - VIP 9]  description=[]  icon=[BranchIcon.Icon.etc_vip_present_i09]  icon_panel=[None]   mainsubject=[]  product_name_end
  2420. +product_name_begin id=2090059  outer_name=[Daily Present - VIP 10] description=[]  icon=[BranchIcon.Icon.etc_vip_present_i10]  icon_panel=[None]   mainsubject=[]  product_name_end
  2421. +
  2422. +
  2423. +EtcItemgrp_ClassicAden.dat
  2424. +item_begin tag=2   object_id=71314 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2425. +item_begin tag=2   object_id=71315 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[icon.panel_2]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2426. +item_begin tag=2   object_id=71316 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2427. +item_begin tag=2   object_id=71317 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[icon.panel_2]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2428. +item_begin tag=2   object_id=71268 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2429. +item_begin tag=2   object_id=71269 drop_type=0 drop_anim_type=3    drop_radius=6   drop_height=3   drop_texture={{[dropitems.drop_scroll_m00];{[dropitemstex.drop_scroll_t00]}}}   icon={[BranchIcon.Icon.g_bm_vip_potion_i00];[None];[None];[None];[None]}    durability=-1   weight=5    material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[icon.panel_2]   complete_item_dropsound_type=[None] inventory_type=consumable   mesh={[None]}   texture={[None]}    drop_sound=[ItemSound.itemdrop_scroll]  equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=scroll crystal_type=crystal_free   item_end
  2430. +item_begin tag=2   object_id=71177 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i00];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2431. +item_begin tag=2   object_id=71178 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i01];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2432. +item_begin tag=2   object_id=71179 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i02];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2433. +item_begin tag=2   object_id=71180 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i03];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2434. +item_begin tag=2   object_id=71181 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i04];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2435. +item_begin tag=2   object_id=71182 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i05];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2436. +item_begin tag=2   object_id=71183 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i06];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2437. +item_begin tag=2   object_id=99027 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i08];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2438. +item_begin tag=2   object_id=99028 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i09];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2439. +item_begin tag=2   object_id=99029 drop_type=0 drop_anim_type=3    drop_radius=5   drop_height=6   drop_texture={{[None];{[None]}}}    icon={[BranchIcon.Icon.etc_vip_present_i10];[None];[None];[None];[None]}    durability=-1   weight=10   material_type=paper crystallizable=0    related_quest_id={} color=1 is_attribution=0    property_params=0   icon_panel=[None]   complete_item_dropsound_type=[None] inventory_type=etc  mesh={[None]}   texture={[None]}    drop_sound=[None]   equip_sound=[None]  consume_type=consume_type_stackable etcitem_type=none   crystal_type=crystal_free   item_end
  2440. +
  2441. +
  2442. +Placeholders!!!! The skill exist and is edited. Only client side need to be done. But we cannot open skillgrp yet due missing grp enum.
  2443. +
  2444. +SkillName_ClassicAden-eu.dat
  2445. +skill_begin    skill_id=59723  skill_level=1   skill_sublevel=0    name=[VIP Lv. 8]    desc=[You can obtain a daily VIP chest Lv. 8. Acquired XP/ SP +35%%, item drop rate +300%%, Death XP Penalty -30%%. Increases PvP/ PvE damage, STR/ DEX/ CON/ INT/ WIT/ MEN +2. You can use the world chat at any level (world chat messages +50).] desc_param=[]   enchant_name=[none] enchant_name_param=[]   enchant_desc=[none] enchant_desc_param=[]   skill_end
  2446. +skill_begin    skill_id=59724  skill_level=1   skill_sublevel=0    name=[VIP Lv. 9]    desc=[You can obtain a daily VIP chest Lv. 9. Acquired XP/ SP +40%%, item drop rate +300%%, Death XP Penalty -40%%. Increases PvP/ PvE damage, STR/ DEX/ CON/ INT/ WIT/ MEN +3. You can use the world chat at any level (world chat messages +50).] desc_param=[]   enchant_name=[none] enchant_name_param=[]   enchant_desc=[none] enchant_desc_param=[]   skill_end
  2447. +skill_begin    skill_id=59725  skill_level=1   skill_sublevel=0    name=[VIP Lv. 10]   desc=[You can obtain a daily VIP chest Lv. 10. Acquired XP/ SP +50%%, item drop rate +300%%, Death XP Penalty -50%%. Increases PvP/ PvE damage, STR/ DEX/ CON/ INT/ WIT/ MEN +4. You can use the world chat at any level (world chat messages +50).]    desc_param=[]   enchant_name=[none] enchant_name_param=[]   enchant_desc=[none] enchant_desc_param=[]   skill_end
  2448. +
  2449. +Skillgrp_ClassicAden.dat [Sylph]
  2450. +skill_begin    skill_id=59723  skill_level=1   skill_sublevel=0    icon_type=40    icon_hide=0 MagicType=default   operate_type=2  mp_consume=0    cast_range=-1   cast_style=0    hit_time=0.0    cool_time=0.0   reuse_delay=0.0 effect_point=0  is_magic=0  origin_skill=0  is_double=0 animation={[None]}  skill_visual_effect=[None]  icon=[BranchIcon.Icon.g_skill_vip8] icon_panel=[None]   debuff=0    resist_cast=0   enchant_skill_level=0   enchant_icon=[None] hp_consume=0    rumble_self=-1  rumble_target=-1    level_hide=0    dp_consume=0    energy_consume=0    dbdelete=0  abnormal_time=0 trait_type=None target_type=none    affect_scope=none   skill_end
  2451. +skill_begin    skill_id=59724  skill_level=1   skill_sublevel=0    icon_type=40    icon_hide=0 MagicType=default   operate_type=2  mp_consume=0    cast_range=-1   cast_style=0    hit_time=0.0    cool_time=0.0   reuse_delay=0.0 effect_point=0  is_magic=0  origin_skill=0  is_double=0 animation={[None]}  skill_visual_effect=[None]  icon=[BranchIcon.Icon.g_skill_vip9] icon_panel=[None]   debuff=0    resist_cast=0   enchant_skill_level=0   enchant_icon=[None] hp_consume=0    rumble_self=-1  rumble_target=-1    level_hide=0    dp_consume=0    energy_consume=0    dbdelete=0  abnormal_time=0 trait_type=None target_type=none    affect_scope=none   skill_end
  2452. +skill_begin    skill_id=59725  skill_level=1   skill_sublevel=0    icon_type=40    icon_hide=0 MagicType=default   operate_type=2  mp_consume=0    cast_range=-1   cast_style=0    hit_time=0.0    cool_time=0.0   reuse_delay=0.0 effect_point=0  is_magic=0  origin_skill=0  is_double=0 animation={[None]}  skill_visual_effect=[None]  icon=[BranchIcon.Icon.g_skill_vip10]    icon_panel=[None]   debuff=0    resist_cast=0   enchant_skill_level=0   enchant_icon=[None] hp_consume=0    rumble_self=-1  rumble_target=-1    level_hide=0    dp_consume=0    energy_consume=0    dbdelete=0  abnormal_time=0 trait_type=None target_type=none    affect_scope=none   skill_end
  2453. +
  2454. +
  2455. + -->
  2456. +    
  2457. +    <vip tier="0" points-required="0" points-lose="0">
  2458. +        <bonus/>
  2459. +    </vip>
  2460. +    <vip tier="1" points-required="300" points-lose="300">
  2461. +        <bonus skill="55024"/>
  2462. +    </vip>
  2463. +    <vip tier="2" points-required="1000" points-lose="600">
  2464. +        <bonus skill="55025"/>
  2465. +    </vip>
  2466. +    <vip tier="3" points-required="2000" points-lose="660">
  2467. +        <bonus skill="55026"/>
  2468. +    </vip>
  2469. +    <vip tier="4" points-required="3500" points-lose="1320">
  2470. +        <bonus skill="55027"/>
  2471. +    </vip>
  2472. +    <vip tier="5" points-required="7000" points-lose="2640">
  2473. +        <bonus skill="55028"/>
  2474. +    </vip>
  2475. +    <vip tier="6" points-required="20000" points-lose="5280">
  2476. +        <bonus skill="55029"/>
  2477. +    </vip>
  2478. +    <vip tier="7" points-required="40000" points-lose="10560">
  2479. +        <bonus skill="55030"/>
  2480. +    </vip>
  2481. +   <vip tier="8" points-required="60000" points-lose="15740">
  2482. +        <bonus skill="59723"/>
  2483. +    </vip>
  2484. +   <vip tier="9" points-required="80000" points-lose="21120">
  2485. +        <bonus skill="59724"/>
  2486. +    </vip>
  2487. +   <vip tier="10" points-required="120000" points-lose="31680">
  2488. +        <bonus skill="59725"/>
  2489. +    </vip>
  2490. +</list>
  2491. +
  2492. +
  2493. +<!--
  2494. +<file pattern="kor_prelude_of_war_p10" isSafePackage="true">
  2495. +       <node name="data" reader="UINT" />
  2496. +       <for name="skill" size="#data" hidden="false">
  2497. +           <node name="skill_id" reader="UINT" />
  2498. +           <node name="skill_level" reader="UCHAR" />
  2499. +           <node name="skill_sublevel" reader="SHORT" />
  2500. +           <node name="icon_type" reader="UCHAR" />
  2501. +           <node name="icon_hide" reader="UCHAR" />
  2502. +           <node name="MagicType" reader="UCHAR" enumName="skill_magic_type" />
  2503. +           <node name="operate_type" reader="UCHAR" />
  2504. +           <node name="mp_consume" reader="SHORT" />
  2505. +           <node name="cast_range" reader="UINT" />
  2506. +           <node name="cast_style" reader="UCHAR" />
  2507. +           <node name="hit_time" reader="FLOAT" />
  2508. +           <node name="cool_time" reader="FLOAT" />
  2509. +           <node name="reuse_delay" reader="FLOAT" />
  2510. +           <node name="effect_point" reader="UINT" />
  2511. +           <node name="is_magic" reader="UCHAR" />
  2512. +           <node name="origin_skill" reader="UINT" />
  2513. +           <node name="is_double" reader="UCHAR" />
  2514. +           <node name="animation" reader="UINT" />
  2515. +           <for name="animation" size="#animation">
  2516. +               <node name="param_animation" reader="MAP_INT" />
  2517. +           </for>
  2518. +           <node name="skill_visual_effect" reader="MAP_INT" />
  2519. +           <node name="icon" reader="MAP_INT" />
  2520. +           <node name="icon_panel" reader="MAP_INT" />
  2521. +           <node name="debuff" reader="UCHAR" />
  2522. +           <node name="resist_cast" reader="UCHAR" />
  2523. +           <node name="enchant_skill_level" reader="UCHAR" />
  2524. +           <node name="enchant_icon" reader="MAP_INT" />
  2525. +           <node name="hp_consume" reader="SHORT" />
  2526. +           <node name="rumble_self" reader="UCHAR" />
  2527. +           <node name="rumble_target" reader="UCHAR" />
  2528. +           <node name="level_hide" reader="UCHAR" />
  2529. +           <node name="dp_consume" reader="UCHAR" />
  2530. +           <node name="energy_consume" reader="UCHAR" />
  2531. +           <node name="dbdelete" reader="INT" />
  2532. +           <node name="abnormal_time" reader="UINT" />
  2533. +           <node name="trait_type" reader="UCHAR" enumName="trait_type" />
  2534. +           <node name="target_type" reader="UCHAR" enumName="target_type" />
  2535. +           <node name="affect_scope" reader="UCHAR" enumName="affect_scope" />
  2536. +       </for>
  2537. +       <node name="data2" reader="CNTR" />
  2538. +       <for name="skill_macro" size="#data2" hidden="false">
  2539. +           <node name="skill_id" reader="UINT" />
  2540. +           <node name="automatic_use" reader="UCHAR" />
  2541. +       </for>
  2542. +       <node name="data3" reader="CNTR" />
  2543. +       <for name="skill_ex_icon" size="#data3" hidden="false">
  2544. +           <node name="skill_id" reader="UINT" />
  2545. +           <node name="skill_level" reader="UCHAR" />
  2546. +           <node name="skill_sublevel" reader="SHORT" />
  2547. +           <node name="icon_panel2" reader="MAP_INT" />
  2548. +       </for>
  2549. +   </file>
  2550. +
  2551. +        <enum name="trait_type">
  2552. +            <node index="0" name="None" />
  2553. +        </enum>
  2554. +        <enum name="target_type">
  2555. +            <node index="0" name="none" />
  2556. +            <node index="1" name="self" />
  2557. +            <node index="2" name="target" />
  2558. +            <node index="3" name="targetself" />
  2559. +            <node index="4" name="enemy" />
  2560. +            <node index="5" name="enemyonly" />
  2561. +            <node index="6" name="enemynot" />
  2562. +            <node index="7" name="summon" />
  2563. +        </enum>
  2564. +        <enum name="affect_scope">
  2565. +            <node index="0" name="none" />
  2566. +            <node index="1" name="single" />
  2567. +            <node index="2" name="range" />
  2568. +            <node index="3" name="fan" />
  2569. +            <node index="4" name="pointblank" />
  2570. +            <node index="5" name="party" />
  2571. +            <node index="6" name="square" />
  2572. +            <node index="7" name="pledge" />
  2573. +            <node index="8" name="rangesortbyhp" />
  2574. +            <node index="9" name="rangesortbydist" />
  2575. +        </enum>
  2576. +
  2577. +
  2578. +
  2579. +
  2580. +
  2581. +
  2582. +
  2583. +
  2584. +
  2585. +
  2586. +
  2587. +
  2588. +
  2589. +
  2590. + -->
  2591. \ No newline at end of file
  2592. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/vip.xsd
  2593. IDEA additional info:
  2594. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2595. <+>UTF-8
  2596. ===================================================================
  2597. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/vip.xsd b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/vip.xsd
  2598. new file mode 100644
  2599. --- /dev/null   (date 1619546282869)
  2600. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/vip.xsd   (date 1619546282869)
  2601. @@ -0,0 +1,24 @@
  2602. +<?xml version="1.0" encoding="UTF-8"?>
  2603. +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  2604. +    <xs:element name="list">
  2605. +        <xs:complexType>
  2606. +            <xs:sequence>
  2607. +                <xs:element name="vip" type="TierInfo" minOccurs="0" maxOccurs="unbounded"/>
  2608. +            </xs:sequence>
  2609. +        </xs:complexType>
  2610. +
  2611. +    </xs:element>
  2612. +
  2613. +    <xs:complexType name="TierInfo">
  2614. +        <xs:sequence>
  2615. +            <xs:element name="bonus" type="TierBonusInfo"/>
  2616. +        </xs:sequence>
  2617. +        <xs:attribute name="tier" type="xs:byte" use="required"/>
  2618. +        <xs:attribute name="points-required" type="xs:long" use="required"/>
  2619. +        <xs:attribute name="points-lose" type="xs:long" use="required"/>
  2620. +    </xs:complexType>
  2621. +
  2622. +    <xs:complexType name="TierBonusInfo">
  2623. +        <xs:attribute name="skill" type="xs:int" default="0"/>
  2624. +    </xs:complexType>
  2625. +</xs:schema>
  2626. \ No newline at end of file
  2627. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/VipData.java
  2628. IDEA additional info:
  2629. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2630. <+>UTF-8
  2631. ===================================================================
  2632. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/VipData.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/VipData.java
  2633. new file mode 100644
  2634. --- /dev/null   (date 1619559368938)
  2635. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/data/xml/VipData.java  (date 1619559368938)
  2636. @@ -0,0 +1,137 @@
  2637. +package org.l2jmobius.gameserver.data.xml;
  2638. +
  2639. +import org.l2jmobius.Config;
  2640. +import org.l2jmobius.commons.util.IXmlReader;
  2641. +import org.l2jmobius.gameserver.model.vip.VipInfo;
  2642. +import org.w3c.dom.Document;
  2643. +import org.w3c.dom.NamedNodeMap;
  2644. +import org.w3c.dom.Node;
  2645. +
  2646. +import java.io.File;
  2647. +import java.util.HashMap;
  2648. +import java.util.Map;
  2649. +import java.util.logging.Logger;
  2650. +
  2651. +/**
  2652. + * @author Gabriel Costa Souza
  2653. + * Discord: Gabriel 'GCS'#2589
  2654. + * Skype - email: gabriel_costa25@hotmail.com
  2655. + */
  2656. +public class VipData implements IXmlReader
  2657. +{
  2658. +   private static final Logger LOGGER = Logger.getLogger(VipData.class.getName());
  2659. +
  2660. +   private final Map<Byte, VipInfo> vipTiers = new HashMap<>();
  2661. +
  2662. +   protected VipData()
  2663. +   {
  2664. +       load();
  2665. +   }
  2666. +  
  2667. +   @Override
  2668. +   public void load()
  2669. +   {
  2670. +        if(!Config.VIP_SYSTEM_ENABLED)
  2671. +            return;
  2672. +        vipTiers.clear();
  2673. +       parseDatapackFile("data/vip.xml");
  2674. +       LOGGER.info(getClass().getSimpleName() + ": Loaded " + vipTiers.size() + " vips.");
  2675. +   }
  2676. +  
  2677. +   @Override
  2678. +   public void parseDocument(Document doc, File f)
  2679. +   {
  2680. +        for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
  2681. +        {
  2682. +            if ("list".equalsIgnoreCase(n.getNodeName()))
  2683. +            {
  2684. +                VIP_FILE: for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
  2685. +                {
  2686. +                    if ("vip".equalsIgnoreCase(d.getNodeName()))
  2687. +                    {
  2688. +                        final NamedNodeMap attrs = d.getAttributes();
  2689. +                        Node att;
  2690. +                        byte tier = -1;
  2691. +                        int required = -1;
  2692. +                        int lose = -1;
  2693. +
  2694. +                        att = attrs.getNamedItem("tier");
  2695. +                        if (att == null)
  2696. +                        {
  2697. +                            LOGGER.severe(getClass().getSimpleName() + ": Missing tier for vip, skipping");
  2698. +                            continue;
  2699. +                        }
  2700. +                        tier = Byte.parseByte(att.getNodeValue());
  2701. +
  2702. +                        att = attrs.getNamedItem("points-required");
  2703. +                        if (att == null)
  2704. +                        {
  2705. +                            LOGGER.severe(getClass().getSimpleName() + ": Missing points-required for vip: " + tier + ", skipping");
  2706. +                            continue;
  2707. +                        }
  2708. +
  2709. +                        required = Integer.parseInt(att.getNodeValue());
  2710. +
  2711. +                        att = attrs.getNamedItem("points-lose");
  2712. +                        if (att == null)
  2713. +                        {
  2714. +                            LOGGER.severe(getClass().getSimpleName() + ": Missing points-lose for vip: " + tier + ", skipping");
  2715. +                            continue;
  2716. +                        }
  2717. +
  2718. +                        lose = Integer.parseInt(att.getNodeValue());
  2719. +
  2720. +                        var vipInfo = new VipInfo(tier, required, lose);
  2721. +
  2722. +
  2723. +                        for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
  2724. +                        {
  2725. +                            if ("bonus".equalsIgnoreCase(c.getNodeName()))
  2726. +                            {
  2727. +                                final int skill = Integer.parseInt(c.getAttributes().getNamedItem("skill").getNodeValue());
  2728. +                                try
  2729. +                                {
  2730. +                                    vipInfo.setSkill(skill);
  2731. +                                }
  2732. +                                catch (Exception e)
  2733. +                                {
  2734. +                                    LOGGER.severe(getClass().getSimpleName() + ": Error in bonus parameter for vip: " + tier + ", skipping");
  2735. +                                    continue VIP_FILE;
  2736. +                                }
  2737. +                            }
  2738. +                        }
  2739. +                        vipTiers.put(tier, vipInfo);
  2740. +
  2741. +                    }
  2742. +                }
  2743. +            }
  2744. +        }
  2745. +   }
  2746. +
  2747. +   /**
  2748. +    * Gets the single instance of VipData.
  2749. +    * @return single instance of VipData
  2750. +    */
  2751. +   public static VipData getInstance()
  2752. +   {
  2753. +       return SingletonHolder.INSTANCE;
  2754. +   }
  2755. +  
  2756. +   /**
  2757. +    * The Class SingletonHolder.
  2758. +    */
  2759. +   private static class SingletonHolder
  2760. +   {
  2761. +       protected static final VipData INSTANCE = new VipData();
  2762. +   }
  2763. +
  2764. +
  2765. +   public int getSkillId(byte tier){
  2766. +       return vipTiers.get(tier).getSkill();
  2767. +    }
  2768. +
  2769. +    public Map<Byte, VipInfo> getVipTiers() {
  2770. +        return vipTiers;
  2771. +    }
  2772. +}
  2773. +
  2774. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/primeshop/PrimeShopGroup.java
  2775. IDEA additional info:
  2776. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2777. <+>UTF-8
  2778. ===================================================================
  2779. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/primeshop/PrimeShopGroup.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/primeshop/PrimeShopGroup.java
  2780. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/primeshop/PrimeShopGroup.java    (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  2781. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/primeshop/PrimeShopGroup.java    (date 1619452701759)
  2782. @@ -47,7 +47,9 @@
  2783.     private final int _maxBirthday;
  2784.     private final int _restrictionDay;
  2785.     private final int _availableCount;
  2786. -   private final List<PrimeShopItem> _items;
  2787. +   private final boolean _isVipGift;
  2788. +    private final int _vipTier;
  2789. +    private final List<PrimeShopItem> _items;
  2790.    
  2791.     public PrimeShopGroup(StatSet set, List<PrimeShopItem> items)
  2792.     {
  2793. @@ -73,6 +75,9 @@
  2794.         _maxBirthday = set.getInt("maxBirthday", 0);
  2795.         _restrictionDay = set.getInt("restrictionDay", 0);
  2796.         _availableCount = set.getInt("availableCount", 0);
  2797. +        _isVipGift = set.getBoolean("isVipGift", false);
  2798. +        _vipTier = set.getInt("vipTier", 0);
  2799. +
  2800.         _items = items;
  2801.     }
  2802.    
  2803. @@ -195,8 +200,16 @@
  2804.     {
  2805.         return _availableCount;
  2806.     }
  2807. -  
  2808. -   public List<PrimeShopItem> getItems()
  2809. +
  2810. +    public boolean isVipGift() {
  2811. +        return _isVipGift;
  2812. +    }
  2813. +
  2814. +    public int getVipTier(){
  2815. +       return _vipTier;
  2816. +    }
  2817. +
  2818. +    public List<PrimeShopItem> getItems()
  2819.     {
  2820.         return _items;
  2821.     }
  2822. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71200-71299.xml
  2823. IDEA additional info:
  2824. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2825. <+>UTF-8
  2826. ===================================================================
  2827. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71200-71299.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71200-71299.xml
  2828. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71200-71299.xml   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  2829. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71200-71299.xml   (date 1619408502262)
  2830. @@ -678,24 +678,36 @@
  2831.     <item id="71268" name="VIP Gain Scroll" type="EtcItem">
  2832.         <!-- Allows to regain 27 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  2833.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  2834. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  2835. -       <set name="weight" val="5" />
  2836. -       <set name="is_tradable" val="false" />
  2837. -       <set name="is_dropable" val="false" />
  2838. -       <set name="is_depositable" val="false" />
  2839. -       <set name="is_sellable" val="false" />
  2840. -       <set name="is_stackable" val="true" />
  2841. +        <set name="default_action" val="SKILL_REDUCE" />
  2842. +        <set name="material" val="PAPER" />
  2843. +        <set name="weight" val="5" />
  2844. +        <set name="is_tradable" val="false" />
  2845. +        <set name="is_depositable" val="false" />
  2846. +        <set name="immediate_effect" val="true" />
  2847. +        <set name="is_dropable" val="false" />
  2848. +        <set name="is_sellable" val="false" />
  2849. +        <set name="is_stackable" val="true" />
  2850. +        <set name="handler" val="ItemSkills" />
  2851. +        <skills>
  2852. +            <skill id="56096" level="1" /> <!-- VIP Gain Scroll  -->
  2853. +        </skills>
  2854.     </item>
  2855.     <item id="71269" name="Good VIP Gain Scroll" type="EtcItem">
  2856.         <!-- Allows to regain 273 VIP Points when used. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->
  2857.         <set name="icon" val="BranchIcon.Icon.g_bm_vip_potion_i00" />
  2858. -       <set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
  2859. -       <set name="weight" val="5" />
  2860. -       <set name="is_tradable" val="false" />
  2861. -       <set name="is_dropable" val="false" />
  2862. -       <set name="is_depositable" val="false" />
  2863. -       <set name="is_sellable" val="false" />
  2864. -       <set name="is_stackable" val="true" />
  2865. +        <set name="default_action" val="SKILL_REDUCE" />
  2866. +        <set name="material" val="PAPER" />
  2867. +        <set name="weight" val="5" />
  2868. +        <set name="is_tradable" val="false" />
  2869. +        <set name="is_depositable" val="false" />
  2870. +        <set name="immediate_effect" val="true" />
  2871. +        <set name="is_dropable" val="false" />
  2872. +        <set name="is_sellable" val="false" />
  2873. +        <set name="is_stackable" val="true" />
  2874. +        <set name="handler" val="ItemSkills" />
  2875. +        <skills>
  2876. +            <skill id="56097" level="1" /> <!-- Good VIP Gain Scroll -->
  2877. +        </skills>
  2878.     </item>
  2879.     <item id="71270" name="Venir's Talisman Fragment" type="EtcItem">
  2880.         <!-- Material used to upgrade Venir's Talisman. If upgrade fails, the talisman level value will drop to 1. Cannot be dropped. -->
  2881. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java
  2882. IDEA additional info:
  2883. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2884. <+>UTF-8
  2885. ===================================================================
  2886. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java
  2887. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java  (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  2888. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/model/variables/AccountVariables.java  (date 1619456872774)
  2889. @@ -37,13 +37,18 @@
  2890.     private static final String SELECT_QUERY = "SELECT * FROM account_gsdata WHERE account_name = ?";
  2891.     private static final String DELETE_QUERY = "DELETE FROM account_gsdata WHERE account_name = ?";
  2892.     private static final String INSERT_QUERY = "INSERT INTO account_gsdata (account_name, var, value) VALUES (?, ?, ?)";
  2893. -  
  2894. +   private static final String DELETE_QUERY_VAR = "DELETE FROM account_gsdata where var = ?";
  2895. +
  2896.     // Public variable names
  2897.     public static final String HWID = "HWID";
  2898.     public static final String HWIDSLIT_VAR = " ";
  2899.     public static final String LCOIN_SHOP_PRODUCT_TIME = "LCSTime";
  2900.     public static final String LCOIN_SHOP_PRODUCT_COUNT = "LCSCount";
  2901. -  
  2902. +   public static final String VIP_POINTS = "VipPoints";
  2903. +   public static final String VIP_TIER = "VipTier";
  2904. +   public static final String VIP_EXPIRATION = "VipExpiration";
  2905. +   public static final String VIP_ITEM_BOUGHT = "Vip_Item_Bought";
  2906. +
  2907.     private final String _accountName;
  2908.    
  2909.     public AccountVariables(String accountName)
  2910. @@ -145,4 +150,28 @@
  2911.         }
  2912.         return true;
  2913.     }
  2914. +
  2915. +    /**
  2916. +     * Delete all entries for an requested var
  2917. +     * @param var
  2918. +     * @return success
  2919. +     */
  2920. +   public static boolean deleteVipPurchases(String var)
  2921. +   {
  2922. +       try (Connection con = DatabaseFactory.getConnection())
  2923. +       {
  2924. +           // Clear previous entries.
  2925. +           try (PreparedStatement st = con.prepareStatement(DELETE_QUERY_VAR))
  2926. +           {
  2927. +               st.setString(1, var);
  2928. +               st.execute();
  2929. +           }
  2930. +       }
  2931. +       catch (Exception e)
  2932. +       {
  2933. +           LOGGER.log(Level.WARNING, "AccountVariables: Couldn't delete vip variables!", e);
  2934. +           return false;
  2935. +       }
  2936. +       return true;
  2937. +   }
  2938.  }
  2939. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/VipUp.java
  2940. IDEA additional info:
  2941. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2942. <+>UTF-8
  2943. ===================================================================
  2944. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/VipUp.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/VipUp.java
  2945. new file mode 100644
  2946. --- /dev/null   (date 1619409512038)
  2947. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/VipUp.java    (date 1619409512038)
  2948. @@ -0,0 +1,62 @@
  2949. +package handlers.effecthandlers;
  2950. +
  2951. +import org.l2jmobius.gameserver.model.StatSet;
  2952. +import org.l2jmobius.gameserver.model.actor.Creature;
  2953. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  2954. +import org.l2jmobius.gameserver.model.effects.AbstractEffect;
  2955. +import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
  2956. +import org.l2jmobius.gameserver.model.skills.Skill;
  2957. +
  2958. +/**
  2959. + * @author Gabriel Costa Souza
  2960. + * Discord: Gabriel 'GCS'#2589
  2961. + * Skype - email: gabriel_costa25@hotmail.com
  2962. + */
  2963. +public class VipUp extends AbstractEffect
  2964. +{
  2965. +   private final long _amount;
  2966. +
  2967. +   public VipUp(StatSet params)
  2968. +   {
  2969. +       _amount = params.getLong("amount", 0L);
  2970. +   }
  2971. +
  2972. +    @Override
  2973. +    public boolean isInstant()
  2974. +    {
  2975. +        return true;
  2976. +    }
  2977. +
  2978. +    @Override
  2979. +    public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item)
  2980. +    {
  2981. +        if (effected == null)
  2982. +        {
  2983. +            return;
  2984. +        }
  2985. +
  2986. +        final PlayerInstance player = effected.getActingPlayer();
  2987. +        if (player == null)
  2988. +        {
  2989. +            return;
  2990. +        }
  2991. +
  2992. +        player.updateVipPoints(_amount);
  2993. +    }
  2994. +}
  2995. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/config/AttendanceRewards.ini
  2996. IDEA additional info:
  2997. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  2998. <+>UTF-8
  2999. ===================================================================
  3000. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/AttendanceRewards.ini b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/AttendanceRewards.ini
  3001. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/AttendanceRewards.ini   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  3002. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/config/AttendanceRewards.ini   (date 1619453599284)
  3003. @@ -13,6 +13,10 @@
  3004.  # Default: False
  3005.  PremiumOnlyAttendanceRewards = False
  3006.  
  3007. +# Enable the Attendance Reward system only for Vip accounts.
  3008. +# Default: False
  3009. +VIPOnlyAttendanceRewards = False
  3010. +
  3011.  # Make rewards sharable in the same account.
  3012.  # Default: False (Each character will receive its own rewards.)
  3013.  AttendanceRewardsShareAccount = False
  3014. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/PrimeShop.xsd
  3015. IDEA additional info:
  3016. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  3017. <+>UTF-8
  3018. ===================================================================
  3019. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/PrimeShop.xsd b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/PrimeShop.xsd
  3020. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/PrimeShop.xsd (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  3021. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/xsd/PrimeShop.xsd (date 1619452701767)
  3022. @@ -34,6 +34,8 @@
  3023.                         <xs:attribute type="xs:byte" name="maxBirthday" use="optional" />
  3024.                         <xs:attribute type="xs:byte" name="restrictionDay" use="optional" />
  3025.                         <xs:attribute type="xs:byte" name="availableCount" use="optional" />
  3026. +                       <xs:attribute type="xs:boolean" name="isVipGift" use="optional" />
  3027. +                       <xs:attribute type="xs:byte" name="vipTier" use="optional" />
  3028.                     </xs:complexType>
  3029.                 </xs:element>
  3030.             </xs:sequence>
  3031. Index: L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java
  3032. IDEA additional info:
  3033. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  3034. <+>UTF-8
  3035. ===================================================================
  3036. diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java
  3037. --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  3038. +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/ExIncomingPackets.java (date 1619379122093)
  3039. @@ -129,6 +129,8 @@
  3040.  import org.l2jmobius.gameserver.network.clientpackets.teleports.ExTeleportToRaidPosition;
  3041.  import org.l2jmobius.gameserver.network.clientpackets.teleports.RequestRaidTeleportInfo;
  3042.  import org.l2jmobius.gameserver.network.clientpackets.training.NotifyTrainingRoomEnd;
  3043. +import org.l2jmobius.gameserver.network.clientpackets.vip.ExRequestVipInfo;
  3044. +import org.l2jmobius.gameserver.network.clientpackets.vip.RequestVipLuckGameInfo;
  3045.  
  3046.  /**
  3047.   * @author Sdw
  3048. @@ -400,10 +402,10 @@
  3049.     REQUEST_ITEM_ENSOUL(0x107, RequestItemEnsoul::new, ConnectionState.IN_GAME),
  3050.     REQUEST_CASTLE_WAR_SEASON_REWARD(0x108, null, ConnectionState.IN_GAME),
  3051.     REQUEST_VIP_PRODUCT_LIST(0x109, null, ConnectionState.IN_GAME),
  3052. -   REQUEST_VIP_LUCKY_GAME_INFO(0x10A, null, ConnectionState.IN_GAME),
  3053. +   REQUEST_VIP_LUCKY_GAME_INFO(0x10A, RequestVipLuckGameInfo::new, ConnectionState.IN_GAME),
  3054.     REQUEST_VIP_LUCKY_GAME_ITEM_LIST(0x10B, null, ConnectionState.IN_GAME),
  3055.     REQUEST_VIP_LUCKY_GAME_BONUS(0x10C, null, ConnectionState.IN_GAME),
  3056. -   EX_REQUEST_VIP_INFO(0x10D, null, ConnectionState.IN_GAME),
  3057. +   EX_REQUEST_VIP_INFO(0x10D, ExRequestVipInfo::new, ConnectionState.IN_GAME),
  3058.     REQUEST_CAPTCHA_ANSWER(0x10E, null, ConnectionState.IN_GAME),
  3059.     REQUEST_REFRESH_CAPTCHA_IMAGE(0x10F, null, ConnectionState.IN_GAME),
  3060.     REQUEST_PLEDGE_SIGN_IN_FOR_OPEN_JOINING_METHOD(0x110, RequestPledgeSignInForOpenJoiningMethod::new, ConnectionState.IN_GAME),
  3061. Index: L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71100-71199.xml
  3062. IDEA additional info:
  3063. Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
  3064. <+>UTF-8
  3065. ===================================================================
  3066. diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71100-71199.xml b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71100-71199.xml
  3067. --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71100-71199.xml   (revision 5dccd31cc69ab347a4a7e7c2ddd23325d9458024)
  3068. +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/stats/items/71100-71199.xml   (date 1619451172674)
  3069. @@ -738,86 +738,131 @@
  3070.     <item id="71177" name="Daily Present - VIP 1" type="EtcItem">
  3071.         <!-- Double-click the item to receive 1 Scroll of Escape, 3 Healing Potions, 5 VIP Coins. -->
  3072.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i00" />
  3073. -       <set name="default_action" val="PEEL" />
  3074. -       <set name="immediate_effect" val="true" />
  3075. -       <set name="weight" val="10" />
  3076. -       <set name="is_tradable" val="false" />
  3077. -       <set name="is_dropable" val="false" />
  3078. -       <set name="is_depositable" val="false" />
  3079. -       <set name="is_sellable" val="false" />
  3080. -       <set name="is_stackable" val="true" />
  3081. +        <set name="default_action" val="PEEL" />
  3082. +        <set name="immediate_effect" val="true" />
  3083. +        <set name="material" val="FISH" />
  3084. +        <set name="is_tradable" val="false" />
  3085. +        <set name="is_dropable" val="false" />
  3086. +        <set name="is_sellable" val="false" />
  3087. +        <set name="is_stackable" val="true" />
  3088. +        <set name="handler" val="ExtractableItems" />
  3089. +        <set name="extractableCountMin" val="2" />
  3090. +        <set name="extractableCountMax" val="2" />
  3091. +        <capsuled_items>
  3092. +            <item id="736" min="1" max="1" chance="100.00"/> <!-- Scroll of Escape -->
  3093. +            <item id="29651" min="3" max="3" chance="100.00"/>  <!-- Healing Potion -->
  3094. +        </capsuled_items>
  3095.     </item>
  3096.     <item id="71178" name="Daily Present - VIP 2" type="EtcItem">
  3097.         <!-- Double-click the item to receive 1 Scroll of Resurrection, 3 Healing Potions, 10 VIP Coins. -->
  3098.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i01" />
  3099. -       <set name="default_action" val="PEEL" />
  3100. -       <set name="immediate_effect" val="true" />
  3101. -       <set name="weight" val="10" />
  3102. -       <set name="is_tradable" val="false" />
  3103. -       <set name="is_dropable" val="false" />
  3104. -       <set name="is_depositable" val="false" />
  3105. -       <set name="is_sellable" val="false" />
  3106. -       <set name="is_stackable" val="true" />
  3107. +        <set name="default_action" val="PEEL" />
  3108. +        <set name="immediate_effect" val="true" />
  3109. +        <set name="material" val="FISH" />
  3110. +        <set name="is_tradable" val="false" />
  3111. +        <set name="is_dropable" val="false" />
  3112. +        <set name="is_sellable" val="false" />
  3113. +        <set name="is_stackable" val="true" />
  3114. +        <set name="handler" val="ExtractableItems" />
  3115. +        <set name="extractableCountMin" val="2" />
  3116. +        <set name="extractableCountMax" val="2" />
  3117. +        <capsuled_items>
  3118. +            <item id="737" min="1" max="1" chance="100.00"/> <!-- Scroll of Resurrection -->
  3119. +            <item id="29651" min="3" max="3" chance="100.00"/>  <!-- Healing Potion -->
  3120. +        </capsuled_items>
  3121.     </item>
  3122.     <item id="71179" name="Daily Present - VIP 3" type="EtcItem">
  3123.         <!-- Double-click the item to receive 1 Scroll of Escape, 1 Scroll of Resurrection, 5 Healing Potions, 15 VIP Coins. -->
  3124.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i02" />
  3125. -       <set name="default_action" val="PEEL" />
  3126. -       <set name="immediate_effect" val="true" />
  3127. -       <set name="weight" val="10" />
  3128. -       <set name="is_tradable" val="false" />
  3129. -       <set name="is_dropable" val="false" />
  3130. -       <set name="is_depositable" val="false" />
  3131. -       <set name="is_sellable" val="false" />
  3132. -       <set name="is_stackable" val="true" />
  3133. +        <set name="default_action" val="PEEL" />
  3134. +        <set name="immediate_effect" val="true" />
  3135. +        <set name="material" val="FISH" />
  3136. +        <set name="is_tradable" val="false" />
  3137. +        <set name="is_dropable" val="false" />
  3138. +        <set name="is_sellable" val="false" />
  3139. +        <set name="is_stackable" val="true" />
  3140. +        <set name="handler" val="ExtractableItems" />
  3141. +        <set name="extractableCountMin" val="3" />
  3142. +        <set name="extractableCountMax" val="3" />
  3143. +        <capsuled_items>
  3144. +            <item id="736" min="1" max="1" chance="100.00"/> <!-- Scroll of Escape -->
  3145. +            <item id="737" min="1" max="1" chance="100.00"/> <!-- Scroll of Resurrection -->
  3146. +            <item id="29651" min="3" max="3" chance="100.00"/>  <!-- Healing Potion -->
  3147. +        </capsuled_items>
  3148.     </item>
  3149.     <item id="71180" name="Daily Present - VIP 4" type="EtcItem">
  3150.         <!-- Double-click the item to receive 1 Scroll of Escape, 1 Scroll of Resurrection, 3 Greater Healing Potions, 25 VIP Coins. -->
  3151.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i03" />
  3152. -       <set name="default_action" val="PEEL" />
  3153. -       <set name="immediate_effect" val="true" />
  3154. -       <set name="weight" val="10" />
  3155. -       <set name="is_tradable" val="false" />
  3156. -       <set name="is_dropable" val="false" />
  3157. -       <set name="is_depositable" val="false" />
  3158. -       <set name="is_sellable" val="false" />
  3159. -       <set name="is_stackable" val="true" />
  3160. +        <set name="default_action" val="PEEL" />
  3161. +        <set name="immediate_effect" val="true" />
  3162. +        <set name="material" val="FISH" />
  3163. +        <set name="is_tradable" val="false" />
  3164. +        <set name="is_dropable" val="false" />
  3165. +        <set name="is_sellable" val="false" />
  3166. +        <set name="is_stackable" val="true" />
  3167. +        <set name="handler" val="ExtractableItems" />
  3168. +        <set name="extractableCountMin" val="3" />
  3169. +        <set name="extractableCountMax" val="3" />
  3170. +        <capsuled_items>
  3171. +            <item id="736" min="1" max="1" chance="100.00"/> <!-- Scroll of Escape -->
  3172. +            <item id="737" min="1" max="1" chance="100.00"/> <!-- Scroll of Resurrection -->
  3173. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  3174. +        </capsuled_items>
  3175.     </item>
  3176.     <item id="71181" name="Daily Present - VIP 5" type="EtcItem">
  3177.         <!-- Double-click the item to receive 1 Blessed Scroll of Escape, 3 Greater Healing Potions, 40 VIP Coins. -->
  3178.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i04" />
  3179. -       <set name="default_action" val="PEEL" />
  3180. -       <set name="immediate_effect" val="true" />
  3181. -       <set name="weight" val="10" />
  3182. -       <set name="is_tradable" val="false" />
  3183. -       <set name="is_dropable" val="false" />
  3184. -       <set name="is_depositable" val="false" />
  3185. -       <set name="is_sellable" val="false" />
  3186. -       <set name="is_stackable" val="true" />
  3187. +        <set name="default_action" val="PEEL" />
  3188. +        <set name="immediate_effect" val="true" />
  3189. +        <set name="material" val="FISH" />
  3190. +        <set name="is_tradable" val="false" />
  3191. +        <set name="is_dropable" val="false" />
  3192. +        <set name="is_sellable" val="false" />
  3193. +        <set name="is_stackable" val="true" />
  3194. +        <set name="handler" val="ExtractableItems" />
  3195. +        <set name="extractableCountMin" val="2" />
  3196. +        <set name="extractableCountMax" val="2" />
  3197. +        <capsuled_items>
  3198. +            <item id="91689" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Escape -->
  3199. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  3200. +        </capsuled_items>
  3201.     </item>
  3202.     <item id="71182" name="Daily Present - VIP 6" type="EtcItem">
  3203.         <!-- Double-click on the item to receive 1 Blessed Scroll of Resurrection, 3 Greater Healing Potions, 100 VIP Coins. -->
  3204.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i05" />
  3205. -       <set name="default_action" val="PEEL" />
  3206. -       <set name="immediate_effect" val="true" />
  3207. -       <set name="weight" val="10" />
  3208. -       <set name="is_tradable" val="false" />
  3209. -       <set name="is_dropable" val="false" />
  3210. -       <set name="is_depositable" val="false" />
  3211. -       <set name="is_sellable" val="false" />
  3212. -       <set name="is_stackable" val="true" />
  3213. +        <set name="default_action" val="PEEL" />
  3214. +        <set name="immediate_effect" val="true" />
  3215. +        <set name="material" val="FISH" />
  3216. +        <set name="is_tradable" val="false" />
  3217. +        <set name="is_dropable" val="false" />
  3218. +        <set name="is_sellable" val="false" />
  3219. +        <set name="is_stackable" val="true" />
  3220. +        <set name="handler" val="ExtractableItems" />
  3221. +        <set name="extractableCountMin" val="2" />
  3222. +        <set name="extractableCountMax" val="2" />
  3223. +        <capsuled_items>
  3224. +            <item id="3936" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Resurrection -->
  3225. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  3226. +        </capsuled_items>
  3227.     </item>
  3228.     <item id="71183" name="Daily Present - VIP 7" type="EtcItem">
  3229.         <!-- Double-click the item to receive 1 Blessed Scroll of Escape, 1 Blessed Scroll of Resurrection, 3 Greater Healing Potions, 150 VIP Coins. -->
  3230.         <set name="icon" val="BranchIcon.Icon.etc_vip_present_i06" />
  3231. -       <set name="default_action" val="PEEL" />
  3232. -       <set name="immediate_effect" val="true" />
  3233. -       <set name="weight" val="10" />
  3234. -       <set name="is_tradable" val="false" />
  3235. -       <set name="is_dropable" val="false" />
  3236. -       <set name="is_depositable" val="false" />
  3237. -       <set name="is_sellable" val="false" />
  3238. -       <set name="is_stackable" val="true" />
  3239. +        <set name="default_action" val="PEEL" />
  3240. +        <set name="immediate_effect" val="true" />
  3241. +        <set name="material" val="FISH" />
  3242. +        <set name="is_tradable" val="false" />
  3243. +        <set name="is_dropable" val="false" />
  3244. +        <set name="is_sellable" val="false" />
  3245. +        <set name="is_stackable" val="true" />
  3246. +        <set name="handler" val="ExtractableItems" />
  3247. +        <set name="extractableCountMin" val="3" />
  3248. +        <set name="extractableCountMax" val="3" />
  3249. +        <capsuled_items>
  3250. +            <item id="91689" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Escape -->
  3251. +            <item id="3936" min="1" max="1" chance="100.00"/> <!-- Blessed Scroll of Resurrection -->
  3252. +            <item id="29652" min="3" max="3" chance="100.00"/>  <!-- Major Healing Potion -->
  3253. +        </capsuled_items>
  3254.     </item>
  3255.     <item id="71184" name="Agathion Meliodas" additionalName="Lv. 1" type="Armor">
  3256.         <!-- Activates the power of the Agathion Meliodas. Special abilities may be activated if the Agathion is summoned from the main slot. Can be enchanted up to +7 with the Seven Sins Agathion Growth Book. Cannot be exchanged, dropped, destroyed, or sold. Can be stored in a private warehouse. <Conditions for upgrade>. Enchant to +7 to upgrade to Agathion Meliodas Lv. 2. -->
  3257.  
Add Comment
Please, Sign In to add comment