FrankVvv

Untitled

Dec 3rd, 2022
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 63.33 KB | Gaming | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P aCis_gameserver
  3. Index: java/net/sf/l2j/gameserver/model/actor/Player.java
  4. ===================================================================
  5. --- java/net/sf/l2j/gameserver/model/actor/Player.java (revision 3)
  6. +++ java/net/sf/l2j/gameserver/model/actor/Player.java (working copy)
  7. @@ -44,6 +44,7 @@
  8. import net.sf.l2j.gameserver.data.manager.ZoneManager;
  9. import net.sf.l2j.gameserver.data.sql.ClanTable;
  10. import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
  11. +import net.sf.l2j.gameserver.data.xml.AchievementData;
  12. import net.sf.l2j.gameserver.data.xml.AdminData;
  13. import net.sf.l2j.gameserver.data.xml.ItemData;
  14. import net.sf.l2j.gameserver.data.xml.MapRegionData;
  15. @@ -477,6 +478,8 @@
  16.  
  17. private Door _requestedGate;
  18.  
  19. + private List<Integer> _completedAchievements = new ArrayList<>();
  20. +
  21. private boolean _expGain = true;
  22. private final double[] _premium = new double[12];
  23.  
  24. @@ -1580,6 +1583,11 @@
  25. _onlineBeginTime = System.currentTimeMillis();
  26. }
  27.  
  28. + public long getOnlineTime()
  29. + {
  30. + return _onlineTime;
  31. + }
  32. +
  33. /**
  34. * Return the PcInventory Inventory of the Player contained in _inventory.
  35. */
  36. @@ -7908,4 +7916,88 @@
  37. {
  38. _offlineShopStart = time;
  39. }
  40. +
  41. +
  42. + public boolean readyAchievementsList()
  43. + {
  44. + return _completedAchievements.isEmpty();
  45. + }
  46. +
  47. + public List<Integer> getCompletedAchievements()
  48. + {
  49. + return _completedAchievements;
  50. + }
  51. +
  52. + public void saveAchievementData(int achievementID)
  53. + {
  54. + try (Connection con = ConnectionPool.getConnection();
  55. + PreparedStatement ps = con.prepareStatement("UPDATE achievements SET a" + achievementID + "=1 WHERE owner_id=" + getObjectId()))
  56. + {
  57. + if (!_completedAchievements.contains(achievementID))
  58. + _completedAchievements.add(achievementID);
  59. +
  60. + ps.executeUpdate();
  61. + }
  62. + catch (Exception e)
  63. + {
  64. + LOGGER.warn("AchievementData: Save" + e);
  65. + }
  66. + }
  67. +
  68. + public void getAchievemntData()
  69. + {
  70. + int ilosc = AchievementData.getInstance().getAchievementList().size();
  71. +
  72. + try (Connection con = ConnectionPool.getConnection())
  73. + {
  74. + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM achievements WHERE owner_id=?"))
  75. + {
  76. + ps.setInt(1, getObjectId());
  77. +
  78. + try (ResultSet rs = ps.executeQuery())
  79. + {
  80. + while (rs.next())
  81. + {
  82. + _completedAchievements.clear();
  83. +
  84. + for (int i=1; i <=ilosc; i++)
  85. + {
  86. + int a = rs.getInt("a" + i);
  87. +
  88. + if (!_completedAchievements.contains(i))
  89. + {
  90. + if (a == 1)
  91. + _completedAchievements.add(i);
  92. + }
  93. + }
  94. + }
  95. + }
  96. + }
  97. +
  98. + try (PreparedStatement ps = con.prepareStatement("INSERT INTO achievements (owner_id,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE owner_id=VALUES(owner_id)"))
  99. + {
  100. + ps.setInt(1, getObjectId());
  101. + ps.setInt(2, getObjectId());
  102. + ps.setInt(3, getObjectId());
  103. + ps.setInt(4, getObjectId());
  104. + ps.setInt(5, getObjectId());
  105. + ps.setInt(6, getObjectId());
  106. + ps.setInt(7, getObjectId());
  107. + ps.setInt(8, getObjectId());
  108. + ps.setInt(9, getObjectId());
  109. + ps.setInt(10, getObjectId());
  110. + ps.setInt(11, getObjectId());
  111. + ps.setInt(12, getObjectId());
  112. + ps.setInt(13, getObjectId());
  113. + ps.setInt(14, getObjectId());
  114. + ps.setInt(15, getObjectId());
  115. + ps.setInt(16, getObjectId());
  116. + ps.executeUpdate();
  117. + }
  118. + }
  119. + catch (Exception e)
  120. + {
  121. + LOGGER.warn("Achievemnt Data: " + e);
  122. + }
  123. + }
  124. }
  125. \ No newline at end of file
  126. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java
  127. ===================================================================
  128. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (nonexistent)
  129. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (working copy)
  130. @@ -0,0 +1,24 @@
  131. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  132. +
  133. +import net.sf.l2j.gameserver.enums.Paperdoll;
  134. +import net.sf.l2j.gameserver.model.actor.Player;
  135. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  136. +
  137. +public class Gloves extends Condition
  138. +{
  139. + public Gloves(Object value)
  140. + {
  141. + super(value);
  142. + setName("Gloves");
  143. + }
  144. +
  145. + @Override
  146. + public boolean meetConditionRequirements(Player player)
  147. + {
  148. + if (getValue() == null)
  149. + return false;
  150. +
  151. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.GLOVES);
  152. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  153. + }
  154. +}
  155. \ No newline at end of file
  156. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java
  157. ===================================================================
  158. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (nonexistent)
  159. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (working copy)
  160. @@ -0,0 +1,21 @@
  161. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  162. +
  163. +import net.sf.l2j.gameserver.model.actor.Player;
  164. +
  165. +public class Crp extends Condition
  166. +{
  167. + public Crp(Object value)
  168. + {
  169. + super(value);
  170. + setName("Clan Reputation");
  171. + }
  172. +
  173. + @Override
  174. + public boolean meetConditionRequirements(Player player)
  175. + {
  176. + if (getValue() == null)
  177. + return false;
  178. +
  179. + return player.getClan() != null && player.getClan().getReputationScore() >= Integer.parseInt(getValue().toString());
  180. + }
  181. +}
  182. \ No newline at end of file
  183. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java
  184. ===================================================================
  185. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (nonexistent)
  186. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (working copy)
  187. @@ -0,0 +1,21 @@
  188. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  189. +
  190. +import net.sf.l2j.gameserver.model.actor.Player;
  191. +
  192. +public class Level extends Condition
  193. +{
  194. + public Level(Object value)
  195. + {
  196. + super(value);
  197. + setName("Level");
  198. + }
  199. +
  200. + @Override
  201. + public boolean meetConditionRequirements(Player player)
  202. + {
  203. + if (getValue() == null)
  204. + return false;
  205. +
  206. + return player.getStatus().getLevel() >= Integer.parseInt(getValue().toString());
  207. + }
  208. +}
  209. \ No newline at end of file
  210. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java
  211. ===================================================================
  212. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (nonexistent)
  213. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (working copy)
  214. @@ -0,0 +1,21 @@
  215. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  216. +
  217. +import net.sf.l2j.gameserver.model.actor.Player;
  218. +
  219. +public class OnlineTime extends Condition
  220. +{
  221. + public OnlineTime(Object value)
  222. + {
  223. + super(value);
  224. + setName("Online Time");
  225. + }
  226. +
  227. + @Override
  228. + public boolean meetConditionRequirements(Player player)
  229. + {
  230. + if (getValue() == null)
  231. + return false;
  232. +
  233. + return player.getOnlineTime() >= Integer.parseInt(getValue().toString());
  234. + }
  235. +}
  236. \ No newline at end of file
  237. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java
  238. ===================================================================
  239. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (nonexistent)
  240. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (working copy)
  241. @@ -0,0 +1,21 @@
  242. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  243. +
  244. +import net.sf.l2j.gameserver.model.actor.Player;
  245. +
  246. +public class Sub extends Condition
  247. +{
  248. + public Sub(Object value)
  249. + {
  250. + super(value);
  251. + setName("Subclass Count");
  252. + }
  253. +
  254. + @Override
  255. + public boolean meetConditionRequirements(Player player)
  256. + {
  257. + if (getValue() == null)
  258. + return false;
  259. +
  260. + return player.getSubClasses().size() >= Integer.parseInt(getValue().toString());
  261. + }
  262. +}
  263. \ No newline at end of file
  264. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java
  265. ===================================================================
  266. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (nonexistent)
  267. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (working copy)
  268. @@ -0,0 +1,21 @@
  269. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  270. +
  271. +import net.sf.l2j.gameserver.model.actor.Player;
  272. +
  273. +public class ClanLevel extends Condition
  274. +{
  275. + public ClanLevel(Object value)
  276. + {
  277. + super(value);
  278. + setName("Clan Level");
  279. + }
  280. +
  281. + @Override
  282. + public boolean meetConditionRequirements(Player player)
  283. + {
  284. + if (getValue() == null)
  285. + return false;
  286. +
  287. + return player.getClan() != null && player.getClan().getLevel() >= Integer.parseInt(getValue().toString());
  288. + }
  289. +}
  290. \ No newline at end of file
  291. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java
  292. ===================================================================
  293. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (nonexistent)
  294. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (working copy)
  295. @@ -0,0 +1,24 @@
  296. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  297. +
  298. +import net.sf.l2j.gameserver.enums.Paperdoll;
  299. +import net.sf.l2j.gameserver.model.actor.Player;
  300. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  301. +
  302. +public class Legs extends Condition
  303. +{
  304. + public Legs(Object value)
  305. + {
  306. + super(value);
  307. + setName("Legs");
  308. + }
  309. +
  310. + @Override
  311. + public boolean meetConditionRequirements(Player player)
  312. + {
  313. + if (getValue() == null)
  314. + return false;
  315. +
  316. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.LEGS);
  317. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  318. + }
  319. +}
  320. \ No newline at end of file
  321. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java
  322. ===================================================================
  323. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (nonexistent)
  324. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (working copy)
  325. @@ -0,0 +1,21 @@
  326. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  327. +
  328. +import net.sf.l2j.gameserver.model.actor.Player;
  329. +
  330. +public class Pk extends Condition
  331. +{
  332. + public Pk(Object value)
  333. + {
  334. + super(value);
  335. + setName("PK Count");
  336. + }
  337. +
  338. + @Override
  339. + public boolean meetConditionRequirements(Player player)
  340. + {
  341. + if (getValue() == null)
  342. + return false;
  343. +
  344. + return player.getPkKills() >= Integer.parseInt(getValue().toString());
  345. + }
  346. +}
  347. \ No newline at end of file
  348. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java
  349. ===================================================================
  350. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (nonexistent)
  351. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (working copy)
  352. @@ -0,0 +1,24 @@
  353. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  354. +
  355. +import net.sf.l2j.gameserver.enums.Paperdoll;
  356. +import net.sf.l2j.gameserver.model.actor.Player;
  357. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  358. +
  359. +public class WeaponEnchant extends Condition
  360. +{
  361. + public WeaponEnchant(Object value)
  362. + {
  363. + super(value);
  364. + setName("Weapon Enchant");
  365. + }
  366. +
  367. + @Override
  368. + public boolean meetConditionRequirements(Player player)
  369. + {
  370. + if (getValue() == null)
  371. + return false;
  372. +
  373. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.RHAND);
  374. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  375. + }
  376. +}
  377. \ No newline at end of file
  378. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java
  379. ===================================================================
  380. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (nonexistent)
  381. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (working copy)
  382. @@ -0,0 +1,24 @@
  383. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  384. +
  385. +import net.sf.l2j.gameserver.enums.Paperdoll;
  386. +import net.sf.l2j.gameserver.model.actor.Player;
  387. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  388. +
  389. +public class Chest extends Condition
  390. +{
  391. + public Chest(Object value)
  392. + {
  393. + super(value);
  394. + setName("Chests");
  395. + }
  396. +
  397. + @Override
  398. + public boolean meetConditionRequirements(Player player)
  399. + {
  400. + if (getValue() == null)
  401. + return false;
  402. +
  403. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.CHEST);
  404. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  405. + }
  406. +}
  407. \ No newline at end of file
  408. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java
  409. ===================================================================
  410. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (nonexistent)
  411. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (working copy)
  412. @@ -0,0 +1,21 @@
  413. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  414. +
  415. +import net.sf.l2j.gameserver.model.actor.Player;
  416. +
  417. +public class Pvp extends Condition
  418. +{
  419. + public Pvp(Object value)
  420. + {
  421. + super(value);
  422. + setName("PvP Count");
  423. + }
  424. +
  425. + @Override
  426. + public boolean meetConditionRequirements(Player player)
  427. + {
  428. + if (getValue() == null)
  429. + return false;
  430. +
  431. + return player.getPvpKills() >= Integer.parseInt(getValue().toString());
  432. + }
  433. +}
  434. \ No newline at end of file
  435. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java
  436. ===================================================================
  437. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (nonexistent)
  438. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (working copy)
  439. @@ -0,0 +1,21 @@
  440. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  441. +
  442. +import net.sf.l2j.gameserver.model.actor.Player;
  443. +
  444. +public class Adena extends Condition
  445. +{
  446. + public Adena(Object value)
  447. + {
  448. + super(value);
  449. + setName("Adena");
  450. + }
  451. +
  452. + @Override
  453. + public boolean meetConditionRequirements(Player player)
  454. + {
  455. + if (getValue() == null)
  456. + return false;
  457. +
  458. + return player.getInventory().getAdena() >= Integer.parseInt(getValue().toString());
  459. + }
  460. +}
  461. \ No newline at end of file
  462. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java
  463. ===================================================================
  464. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (nonexistent)
  465. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (working copy)
  466. @@ -0,0 +1,24 @@
  467. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  468. +
  469. +import net.sf.l2j.gameserver.enums.Paperdoll;
  470. +import net.sf.l2j.gameserver.model.actor.Player;
  471. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  472. +
  473. +public class Feet extends Condition
  474. +{
  475. + public Feet(Object value)
  476. + {
  477. + super(value);
  478. + setName("Boots");
  479. + }
  480. +
  481. + @Override
  482. + public boolean meetConditionRequirements(Player player)
  483. + {
  484. + if (getValue() == null)
  485. + return false;
  486. +
  487. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.FEET);
  488. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  489. + }
  490. +}
  491. \ No newline at end of file
  492. Index: java/net/sf/l2j/gameserver/data/xml/AchievementData.java
  493. ===================================================================
  494. --- java/net/sf/l2j/gameserver/data/xml/AchievementData.java (nonexistent)
  495. +++ java/net/sf/l2j/gameserver/data/xml/AchievementData.java (working copy)
  496. @@ -0,0 +1,140 @@
  497. +package net.sf.l2j.gameserver.data.xml;
  498. +
  499. +import java.nio.file.Path;
  500. +import java.util.ArrayList;
  501. +import java.util.HashMap;
  502. +import java.util.List;
  503. +import java.util.Map;
  504. +
  505. +import net.sf.l2j.commons.data.xml.IXmlReader;
  506. +import net.sf.l2j.commons.util.StatsSet;
  507. +
  508. +import net.sf.l2j.gameserver.model.actor.Player;
  509. +import net.sf.l2j.gameserver.model.entity.Achievement;
  510. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Adena;
  511. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Castle;
  512. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Chest;
  513. +import net.sf.l2j.gameserver.model.entity.achievement.condition.ClanLevel;
  514. +import net.sf.l2j.gameserver.model.entity.achievement.condition.CompleteAchievements;
  515. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
  516. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Crp;
  517. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Feet;
  518. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Gloves;
  519. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Head;
  520. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Hero;
  521. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Legs;
  522. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Level;
  523. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Noble;
  524. +import net.sf.l2j.gameserver.model.entity.achievement.condition.OnlineTime;
  525. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Pk;
  526. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Pvp;
  527. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Sub;
  528. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Vip;
  529. +import net.sf.l2j.gameserver.model.entity.achievement.condition.WeaponEnchant;
  530. +import net.sf.l2j.gameserver.model.holder.IntIntHolder;
  531. +
  532. +import org.w3c.dom.Document;
  533. +import org.w3c.dom.NamedNodeMap;
  534. +
  535. +public final class AchievementData implements IXmlReader
  536. +{
  537. + private Map<Integer, Achievement> _achievementList = new HashMap<>();
  538. +
  539. + protected AchievementData()
  540. + {
  541. + load();
  542. + }
  543. +
  544. + @Override
  545. + public void load()
  546. + {
  547. + parseFile("./data/xml/achievements.xml");
  548. + LOGGER.info("Loaded {} achievements.", _achievementList.size());
  549. + }
  550. +
  551. + @Override
  552. + public void parseDocument(Document doc, Path path)
  553. + {
  554. + forEach(doc, "list", listNode -> forEach(listNode, "achievement", achievement ->
  555. + {
  556. + final StatsSet set = parseAttributes(achievement);
  557. + List<Condition> conditions = conditionList(achievement.getAttributes());
  558. + _achievementList.put(set.getInteger("id"), new Achievement(set, conditions));
  559. + }));
  560. + }
  561. +
  562. + public void rewardForAchievement(int achievementID, Player player)
  563. + {
  564. + final Achievement achievement = _achievementList.get(achievementID);
  565. +
  566. + for (IntIntHolder reward: achievement.getReward())
  567. + player.addItem(achievement.getName(), reward.getId(), reward.getValue(), player, true);
  568. + }
  569. +
  570. + public static List<Condition> conditionList(NamedNodeMap attributesList)
  571. + {
  572. + List<Condition> conditions = new ArrayList<>();
  573. +
  574. + for (int j = 0; j < attributesList.getLength(); j++)
  575. + addToConditionList(attributesList.item(j).getNodeName(), attributesList.item(j).getNodeValue(), conditions);
  576. +
  577. + return conditions;
  578. + }
  579. +
  580. + private static void addToConditionList(String nodeName, Object value, List<Condition> conditions)
  581. + {
  582. + if (nodeName.equals("minLevel"))
  583. + conditions.add(new Level(value));
  584. + else if (nodeName.equals("minPvPCount"))
  585. + conditions.add(new Pvp(value));
  586. + else if (nodeName.equals("minPkCount"))
  587. + conditions.add(new Pk(value));
  588. + else if (nodeName.equals("minClanLevel"))
  589. + conditions.add(new ClanLevel(value));
  590. + else if (nodeName.equals("mustBeHero"))
  591. + conditions.add(new Hero(value));
  592. + else if (nodeName.equals("mustBeNoble"))
  593. + conditions.add(new Noble(value));
  594. + else if (nodeName.equals("minWeaponEnchant"))
  595. + conditions.add(new WeaponEnchant(value));
  596. + else if (nodeName.equals("minAdenaCount"))
  597. + conditions.add(new Adena(value));
  598. + else if (nodeName.equals("crpAmmount"))
  599. + conditions.add(new Crp(value));
  600. + else if (nodeName.equals("lordOfCastle"))
  601. + conditions.add(new Castle(value));
  602. + else if (nodeName.equals("mustBeVip"))
  603. + conditions.add(new Vip(value));
  604. + else if (nodeName.equals("CompleteAchievements"))
  605. + conditions.add(new CompleteAchievements(value));
  606. + else if (nodeName.equals("minSubclassCount"))
  607. + conditions.add(new Sub(value));
  608. + else if (nodeName.equals("minOnlineTime"))
  609. + conditions.add(new OnlineTime(value));
  610. + else if (nodeName.equals("minHeadEnchant"))
  611. + conditions.add(new Head(value));
  612. + else if (nodeName.equals("minChestEnchant"))
  613. + conditions.add(new Chest(value));
  614. + else if (nodeName.equals("minFeetEnchant"))
  615. + conditions.add(new Feet(value));
  616. + else if (nodeName.equals("minLegsEnchant"))
  617. + conditions.add(new Legs(value));
  618. + else if (nodeName.equals("minGlovestEnchant"))
  619. + conditions.add(new Gloves(value));
  620. + }
  621. +
  622. + public Map<Integer, Achievement> getAchievementList()
  623. + {
  624. + return _achievementList;
  625. + }
  626. +
  627. + public static AchievementData getInstance()
  628. + {
  629. + return SingletonHolder._instance;
  630. + }
  631. +
  632. + private static class SingletonHolder
  633. + {
  634. + protected static final AchievementData _instance = new AchievementData();
  635. + }
  636. +}
  637. \ No newline at end of file
  638. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java
  639. ===================================================================
  640. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (nonexistent)
  641. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (working copy)
  642. @@ -0,0 +1,24 @@
  643. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  644. +
  645. +import net.sf.l2j.gameserver.enums.Paperdoll;
  646. +import net.sf.l2j.gameserver.model.actor.Player;
  647. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  648. +
  649. +public class Head extends Condition
  650. +{
  651. + public Head(Object value)
  652. + {
  653. + super(value);
  654. + setName("Helmets");
  655. + }
  656. +
  657. + @Override
  658. + public boolean meetConditionRequirements(Player player)
  659. + {
  660. + if (getValue() == null)
  661. + return false;
  662. +
  663. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.HEAD);
  664. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  665. + }
  666. +}
  667. \ No newline at end of file
  668. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java
  669. ===================================================================
  670. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (nonexistent)
  671. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (working copy)
  672. @@ -0,0 +1,23 @@
  673. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  674. +
  675. +import net.sf.l2j.gameserver.model.actor.Player;
  676. +
  677. +public class Vip extends Condition
  678. +{
  679. + public Vip(Object value)
  680. + {
  681. + super(value);
  682. + setName("Vip");
  683. + }
  684. +
  685. + @Override
  686. + public boolean meetConditionRequirements(Player player)
  687. + {
  688. + if (getValue() == null)
  689. + return false;
  690. +
  691. +// return player.calculatePremiumAttributes();
  692. + player.getPremiumAttribute(1);
  693. + return false;
  694. + }
  695. +}
  696. \ No newline at end of file
  697. Index: java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java
  698. ===================================================================
  699. --- java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java (nonexistent)
  700. +++ java/net/sf/l2j/gameserver/data/manager/AchievementsManager.java (working copy)
  701. @@ -0,0 +1,243 @@
  702. +package net.sf.l2j.gameserver.data.manager;
  703. +
  704. +import java.util.StringTokenizer;
  705. +
  706. +import net.sf.l2j.gameserver.data.xml.AchievementData;
  707. +import net.sf.l2j.gameserver.model.actor.Player;
  708. +import net.sf.l2j.gameserver.model.actor.instance.Folk;
  709. +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
  710. +import net.sf.l2j.gameserver.model.entity.Achievement;
  711. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
  712. +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
  713. +
  714. +public class AchievementsManager extends Folk
  715. +{
  716. + public AchievementsManager(int objectId, NpcTemplate template)
  717. + {
  718. + super(objectId, template);
  719. + }
  720. +
  721. + @Override
  722. + public void onBypassFeedback(Player player, String command)
  723. + {
  724. + StringTokenizer st = new StringTokenizer(command, " ");
  725. + st.nextToken();
  726. +
  727. + if (command.startsWith("showMyAchievements"))
  728. + {
  729. + player.getAchievemntData();
  730. + showMyAchievements(player);
  731. + }
  732. + else if (command.startsWith("achievementInfo"))
  733. + showAchievementInfo(Integer.parseInt(st.nextToken()), player);
  734. + else if (command.startsWith("topList"))
  735. + showTopListWindow(player);
  736. + else if (command.startsWith("showMainWindow"))
  737. + showChatWindow(player, 0);
  738. + else if (command.startsWith("getReward"))
  739. + {
  740. + int id = Integer.parseInt(st.nextToken());
  741. + AchievementData.getInstance().rewardForAchievement(id, player);
  742. + player.saveAchievementData(id);
  743. + showMyAchievements(player);
  744. + }
  745. + else if (command.startsWith ("showMyStats"))
  746. + showMyStatsWindow(player);
  747. + else if (command.startsWith("showHelpWindow"))
  748. + showHelpWindow(player);
  749. + }
  750. +
  751. + @Override
  752. + public void showChatWindow(Player player, int val)
  753. + {
  754. + StringBuilder tb = new StringBuilder();
  755. + tb.append("<html><title>Achievements Manager</title><body><center><br>");
  756. + tb.append("<img src=\"l2font-e.replay_logo-e\" width=250 height=80><br1><center><img src=\"L2UI.SquareGray\" width=300 height=1></center><table bgcolor=000000 width=319><tr><td><center><font color=\"LEVEL\">Hello <font color=\"LEVEL\">" + player.getName() + "</font></center></td></font></tr></table><center><img src=\"L2UI.SquareGray\" width=300 height=1></center>");
  757. + tb.append("<br><font color=\"LEVEL\">Are you looking for challenge?</font>");
  758. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  759. + tb.append("<button value=\"My Achievements\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
  760. + tb.append("<button value=\"Statistics\" action=\"bypass -h npc_%objectId%_showMyStats\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
  761. + tb.append("<button value=\"Help\" action=\"bypass -h npc_%objectId%_showHelpWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
  762. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  763. + tb.append("<center><br><img src=l2ui.bbs_lineage2 height=16 width=80></center>");
  764. +
  765. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  766. + msg.setHtml(tb.toString());
  767. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  768. +
  769. + player.sendPacket(msg);
  770. + }
  771. +
  772. + private void showMyAchievements(Player player)
  773. + {
  774. + StringBuilder tb = new StringBuilder();
  775. + tb.append("<html><title>Achievements Manager</title><body><br>");
  776. +
  777. + tb.append("<center><font color=\"LEVEL\">My achievements</font>:</center><br>");
  778. +
  779. + if (AchievementData.getInstance().getAchievementList().isEmpty())
  780. + tb.append("There are no Achievements created yet!");
  781. + else
  782. + {
  783. + int i = 0;
  784. +
  785. + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
  786. + tb.append("<tr><td width=270 align=\"left\">Name:</td><td width=60 align=\"right\">Info:</td><td width=200 align=\"center\">Status:</td></tr></table>");
  787. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  788. +
  789. + for (Achievement a: AchievementData.getInstance().getAchievementList().values())
  790. + {
  791. + tb.append(getTableColor(i));
  792. + tb.append("<tr><td width=270 align=\"left\">" + a.getName() + "</td><td width=50 align=\"right\"><a action=\"bypass -h npc_%objectId%_achievementInfo "
  793. + + a.getId() + "\">info</a></td><td width=200 align=\"center\">" + getStatusString(a.getId(), player) + "</td></tr></table>");
  794. + i++;
  795. + }
  796. +
  797. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  798. + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
  799. + }
  800. +
  801. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  802. + msg.setHtml(tb.toString());
  803. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  804. +
  805. + player.sendPacket(msg);
  806. + }
  807. +
  808. + private void showAchievementInfo(int achievementID, Player player)
  809. + {
  810. + Achievement a = AchievementData.getInstance().getAchievementList().get(achievementID);
  811. +
  812. + StringBuilder tb = new StringBuilder();
  813. + tb.append("<html><title>Achievements Manager</title><body><br>");
  814. +
  815. + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
  816. + tb.append("<tr><td width=270 align=\"center\">" + a.getName() + "</td></tr></table><br>");
  817. + tb.append("<center>Status: " + getStatusString(achievementID, player));
  818. +
  819. + if (a.achievementRequirements(player) && !player.getCompletedAchievements().contains(achievementID))
  820. + tb.append("<button value=\"Receive Reward!\" action=\"bypass -h npc_%objectId%_getReward " + a.getId() + "\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\">");
  821. +
  822. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  823. +
  824. + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
  825. + tb.append("<tr><td width=270 align=\"center\">Description</td></tr></table><br>");
  826. + tb.append(a.getDescription());
  827. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  828. +
  829. + tb.append("<table width=270 border=0 bgcolor=\"33FF33\">");
  830. + tb.append("<tr><td width=270 align=\"left\">Condition:</td><td width=100 align=\"right\">Value:</td><td width=200 align=\"center\">Status:</td></tr></table>");
  831. + tb.append(getConditionsStatus(achievementID, player));
  832. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  833. + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMyAchievements\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
  834. +
  835. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  836. + msg.setHtml(tb.toString());
  837. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  838. +
  839. + player.sendPacket(msg);
  840. + }
  841. +
  842. + private void showMyStatsWindow(Player player)
  843. + {
  844. + StringBuilder tb = new StringBuilder();
  845. + tb.append("<html><title>Achievements Manager</title><body><center><br>");
  846. + tb.append("Check your <font color=\"LEVEL\">Achievements </font>statistics:");
  847. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  848. +
  849. + player.getAchievemntData();
  850. + int completedCount = player.getCompletedAchievements().size();
  851. +
  852. + tb.append("You have completed: " + completedCount + "/<font color=\"LEVEL\">" + AchievementData.getInstance().getAchievementList().size() + "</font>");
  853. +
  854. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  855. + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
  856. +
  857. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  858. + msg.setHtml(tb.toString());
  859. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  860. +
  861. + player.sendPacket(msg);
  862. + }
  863. +
  864. + private void showTopListWindow(Player player )
  865. + {
  866. + StringBuilder tb = new StringBuilder();
  867. + tb.append("<html><title>Achievements Manager</title><body><center><br>");
  868. + tb.append("Check your <font color=\"LEVEL\">Achievements </font>Top List:");
  869. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  870. +
  871. + tb.append("List Player " + player.getCompletedAchievements() + " ");
  872. +
  873. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  874. + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
  875. +
  876. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  877. + msg.setHtml(tb.toString());
  878. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  879. +
  880. + player.sendPacket(msg);
  881. + }
  882. +
  883. + private void showHelpWindow(Player player)
  884. + {
  885. + StringBuilder tb = new StringBuilder();
  886. + tb.append("<html><title>Achievements Manager</title><body><center><br>");
  887. + tb.append("Achievements <font color=\"LEVEL\">Help </font>page:");
  888. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1\"><br>");
  889. +
  890. + tb.append("<center>You can check status of your achievements, receive reward if every condition of achievement is meet, if not you can check which condition is still not meet, by using info button");
  891. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  892. + tb.append("<font color=\"FF0000\">Not Completed</font> - you did not meet the achivement requirements.<br>");
  893. + tb.append("<font color=\"LEVEL\">Get Reward</font> - you may receive reward, click info.<br>");
  894. + tb.append("<font color=\"5EA82E\">Completed</font> - achievement completed, reward received.<br></center>");
  895. +
  896. + tb.append("Achievements Engine by <font color=\"LEVEL\">One Games</font>");
  897. + tb.append("<br><img src=\"l2ui.squaregray\" width=\"270\" height=\"1s\"><br>");
  898. + tb.append("<center><button value=\"Back\" action=\"bypass -h npc_%objectId%_showMainWindow\" width=134 height=21 back=\"L2UI_ch3.BigButton3_over\" fore=\"L2UI_ch3.BigButton3\"><center>");
  899. +
  900. + NpcHtmlMessage msg = new NpcHtmlMessage(this.getObjectId());
  901. + msg.setHtml(tb.toString());
  902. + msg.replace("%objectId%", String.valueOf(this.getObjectId()));
  903. +
  904. + player.sendPacket(msg);
  905. + }
  906. +
  907. + private static String getStatusString(int achievementID, Player player)
  908. + {
  909. + if (player.getCompletedAchievements().contains(achievementID))
  910. + return "<font color=\"5EA82E\">Completed</font>";
  911. +
  912. + if (AchievementData.getInstance().getAchievementList().get(achievementID).achievementRequirements(player))
  913. + return "<font color=\"LEVEL\">Get Reward</font>";
  914. +
  915. + return "<font color=\"FF0000\">Not Completed</font>";
  916. + }
  917. +
  918. + private static String getTableColor(int i)
  919. + {
  920. + return (i % 2 == 0) ? "<table width=270 border=0 bgcolor=\"444444\">" : "<table width=270 border=0>";
  921. + }
  922. +
  923. + private static String getConditionsStatus(int achievementID, Player player)
  924. + {
  925. + int i = 0;
  926. + String s = "</center>";
  927. + Achievement a = AchievementData.getInstance().getAchievementList().get(achievementID);
  928. + String completed = "<font color=\"5EA82E\">Completed</font></td></tr></table>";
  929. + String notcompleted = "<font color=\"FF0000\">Not Completed</font></td></tr></table>";
  930. +
  931. + for (Condition c: a.getConditions())
  932. + {
  933. + s+= getTableColor(i);
  934. + s+= "<tr><td width=270 align=\"left\">" + c.getName() + "</td><td width=50 align=\"right\">" + c.getValue() + "</td><td width=200 align=\"center\">";
  935. + i++;
  936. +
  937. + if (c.meetConditionRequirements(player))
  938. + s+= completed;
  939. + else
  940. + s+= notcompleted;
  941. + }
  942. + return s;
  943. + }
  944. +}
  945. \ No newline at end of file
  946. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java
  947. ===================================================================
  948. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (nonexistent)
  949. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (working copy)
  950. @@ -0,0 +1,21 @@
  951. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  952. +
  953. +import net.sf.l2j.gameserver.model.actor.Player;
  954. +
  955. +public class Castle extends Condition
  956. +{
  957. + public Castle(Object value)
  958. + {
  959. + super(value);
  960. + setName("Have Castle");
  961. + }
  962. +
  963. + @Override
  964. + public boolean meetConditionRequirements(Player player)
  965. + {
  966. + if (getValue() == null)
  967. + return false;
  968. +
  969. + return player.getClan() != null && (player.isCastleLord(5)) || (player.isCastleLord(3)) || (player.isCastleLord(7));
  970. + }
  971. +}
  972. \ No newline at end of file
  973. Index: java/net/sf/l2j/gameserver/GameServer.java
  974. ===================================================================
  975. --- java/net/sf/l2j/gameserver/GameServer.java (revision 3)
  976. +++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
  977. @@ -53,6 +53,7 @@
  978. import net.sf.l2j.gameserver.data.sql.PlayerInfoTable;
  979. import net.sf.l2j.gameserver.data.sql.ServerMemoTable;
  980. import net.sf.l2j.gameserver.data.sql.SpawnTable;
  981. +import net.sf.l2j.gameserver.data.xml.AchievementData;
  982. import net.sf.l2j.gameserver.data.xml.AdminData;
  983. import net.sf.l2j.gameserver.data.xml.AnnouncementData;
  984. import net.sf.l2j.gameserver.data.xml.ArmorSetData;
  985. @@ -143,6 +144,9 @@
  986. StringUtil.printSection("Config");
  987. Config.loadGameServer();
  988.  
  989. + StringUtil.printSection("Achievement");
  990. + AchievementData.getInstance();
  991. +
  992. StringUtil.printSection("Poolers");
  993. ConnectionPool.init();
  994. ThreadPool.init();
  995. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java
  996. ===================================================================
  997. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (nonexistent)
  998. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (working copy)
  999. @@ -0,0 +1,21 @@
  1000. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1001. +
  1002. +import net.sf.l2j.gameserver.model.actor.Player;
  1003. +
  1004. +public class CompleteAchievements extends Condition
  1005. +{
  1006. + public CompleteAchievements(Object value)
  1007. + {
  1008. + super(value);
  1009. + setName("Complete Achievements");
  1010. + }
  1011. +
  1012. + @Override
  1013. + public boolean meetConditionRequirements(Player player)
  1014. + {
  1015. + if (getValue() == null)
  1016. + return false;
  1017. +
  1018. + return player.getCompletedAchievements().size() >= Integer.parseInt(getValue().toString());
  1019. + }
  1020. +}
  1021. \ No newline at end of file
  1022. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java
  1023. ===================================================================
  1024. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (nonexistent)
  1025. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (working copy)
  1026. @@ -0,0 +1,31 @@
  1027. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1028. +
  1029. +import net.sf.l2j.gameserver.model.actor.Player;
  1030. +
  1031. +public abstract class Condition
  1032. +{
  1033. + public abstract boolean meetConditionRequirements(Player param);
  1034. +
  1035. + private Object _value;
  1036. + private String _name;
  1037. +
  1038. + public Condition(Object value)
  1039. + {
  1040. + _value = value;
  1041. + }
  1042. +
  1043. + public Object getValue()
  1044. + {
  1045. + return _value;
  1046. + }
  1047. +
  1048. + public void setName(String s)
  1049. + {
  1050. + _name = s;
  1051. + }
  1052. +
  1053. + public String getName()
  1054. + {
  1055. + return _name;
  1056. + }
  1057. +}
  1058. \ No newline at end of file
  1059. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java
  1060. ===================================================================
  1061. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (nonexistent)
  1062. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Adena.java (working copy)
  1063. @@ -0,0 +1,21 @@
  1064. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1065. +
  1066. +import net.sf.l2j.gameserver.model.actor.Player;
  1067. +
  1068. +public class Adena extends Condition
  1069. +{
  1070. + public Adena(Object value)
  1071. + {
  1072. + super(value);
  1073. + setName("Adena");
  1074. + }
  1075. +
  1076. + @Override
  1077. + public boolean meetConditionRequirements(Player player)
  1078. + {
  1079. + if (getValue() == null)
  1080. + return false;
  1081. +
  1082. + return player.getInventory().getAdena() >= Integer.parseInt(getValue().toString());
  1083. + }
  1084. +}
  1085. \ No newline at end of file
  1086. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java
  1087. ===================================================================
  1088. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (nonexistent)
  1089. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Castle.java (working copy)
  1090. @@ -0,0 +1,21 @@
  1091. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1092. +
  1093. +import net.sf.l2j.gameserver.model.actor.Player;
  1094. +
  1095. +public class Castle extends Condition
  1096. +{
  1097. + public Castle(Object value)
  1098. + {
  1099. + super(value);
  1100. + setName("Have Castle");
  1101. + }
  1102. +
  1103. + @Override
  1104. + public boolean meetConditionRequirements(Player player)
  1105. + {
  1106. + if (getValue() == null)
  1107. + return false;
  1108. +
  1109. + return player.getClan() != null && (player.isCastleLord(5)) || (player.isCastleLord(3)) || (player.isCastleLord(7));
  1110. + }
  1111. +}
  1112. \ No newline at end of file
  1113. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java
  1114. ===================================================================
  1115. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (nonexistent)
  1116. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Chest.java (working copy)
  1117. @@ -0,0 +1,24 @@
  1118. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1119. +
  1120. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1121. +import net.sf.l2j.gameserver.model.actor.Player;
  1122. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1123. +
  1124. +public class Chest extends Condition
  1125. +{
  1126. + public Chest(Object value)
  1127. + {
  1128. + super(value);
  1129. + setName("Chests");
  1130. + }
  1131. +
  1132. + @Override
  1133. + public boolean meetConditionRequirements(Player player)
  1134. + {
  1135. + if (getValue() == null)
  1136. + return false;
  1137. +
  1138. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.CHEST);
  1139. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1140. + }
  1141. +}
  1142. \ No newline at end of file
  1143. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java
  1144. ===================================================================
  1145. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (nonexistent)
  1146. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/ClanLevel.java (working copy)
  1147. @@ -0,0 +1,21 @@
  1148. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1149. +
  1150. +import net.sf.l2j.gameserver.model.actor.Player;
  1151. +
  1152. +public class ClanLevel extends Condition
  1153. +{
  1154. + public ClanLevel(Object value)
  1155. + {
  1156. + super(value);
  1157. + setName("Clan Level");
  1158. + }
  1159. +
  1160. + @Override
  1161. + public boolean meetConditionRequirements(Player player)
  1162. + {
  1163. + if (getValue() == null)
  1164. + return false;
  1165. +
  1166. + return player.getClan() != null && player.getClan().getLevel() >= Integer.parseInt(getValue().toString());
  1167. + }
  1168. +}
  1169. \ No newline at end of file
  1170. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java
  1171. ===================================================================
  1172. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (nonexistent)
  1173. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/CompleteAchievements.java (working copy)
  1174. @@ -0,0 +1,21 @@
  1175. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1176. +
  1177. +import net.sf.l2j.gameserver.model.actor.Player;
  1178. +
  1179. +public class CompleteAchievements extends Condition
  1180. +{
  1181. + public CompleteAchievements(Object value)
  1182. + {
  1183. + super(value);
  1184. + setName("Complete Achievements");
  1185. + }
  1186. +
  1187. + @Override
  1188. + public boolean meetConditionRequirements(Player player)
  1189. + {
  1190. + if (getValue() == null)
  1191. + return false;
  1192. +
  1193. + return player.getCompletedAchievements().size() >= Integer.parseInt(getValue().toString());
  1194. + }
  1195. +}
  1196. \ No newline at end of file
  1197. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java
  1198. ===================================================================
  1199. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (nonexistent)
  1200. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Condition.java (working copy)
  1201. @@ -0,0 +1,31 @@
  1202. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1203. +
  1204. +import net.sf.l2j.gameserver.model.actor.Player;
  1205. +
  1206. +public abstract class Condition
  1207. +{
  1208. + public abstract boolean meetConditionRequirements(Player param);
  1209. +
  1210. + private Object _value;
  1211. + private String _name;
  1212. +
  1213. + public Condition(Object value)
  1214. + {
  1215. + _value = value;
  1216. + }
  1217. +
  1218. + public Object getValue()
  1219. + {
  1220. + return _value;
  1221. + }
  1222. +
  1223. + public void setName(String s)
  1224. + {
  1225. + _name = s;
  1226. + }
  1227. +
  1228. + public String getName()
  1229. + {
  1230. + return _name;
  1231. + }
  1232. +}
  1233. \ No newline at end of file
  1234. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java
  1235. ===================================================================
  1236. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (nonexistent)
  1237. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Crp.java (working copy)
  1238. @@ -0,0 +1,21 @@
  1239. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1240. +
  1241. +import net.sf.l2j.gameserver.model.actor.Player;
  1242. +
  1243. +public class Crp extends Condition
  1244. +{
  1245. + public Crp(Object value)
  1246. + {
  1247. + super(value);
  1248. + setName("Clan Reputation");
  1249. + }
  1250. +
  1251. + @Override
  1252. + public boolean meetConditionRequirements(Player player)
  1253. + {
  1254. + if (getValue() == null)
  1255. + return false;
  1256. +
  1257. + return player.getClan() != null && player.getClan().getReputationScore() >= Integer.parseInt(getValue().toString());
  1258. + }
  1259. +}
  1260. \ No newline at end of file
  1261. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java
  1262. ===================================================================
  1263. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (nonexistent)
  1264. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Feet.java (working copy)
  1265. @@ -0,0 +1,24 @@
  1266. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1267. +
  1268. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1269. +import net.sf.l2j.gameserver.model.actor.Player;
  1270. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1271. +
  1272. +public class Feet extends Condition
  1273. +{
  1274. + public Feet(Object value)
  1275. + {
  1276. + super(value);
  1277. + setName("Boots");
  1278. + }
  1279. +
  1280. + @Override
  1281. + public boolean meetConditionRequirements(Player player)
  1282. + {
  1283. + if (getValue() == null)
  1284. + return false;
  1285. +
  1286. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.FEET);
  1287. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1288. + }
  1289. +}
  1290. \ No newline at end of file
  1291. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java
  1292. ===================================================================
  1293. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (nonexistent)
  1294. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Gloves.java (working copy)
  1295. @@ -0,0 +1,24 @@
  1296. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1297. +
  1298. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1299. +import net.sf.l2j.gameserver.model.actor.Player;
  1300. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1301. +
  1302. +public class Gloves extends Condition
  1303. +{
  1304. + public Gloves(Object value)
  1305. + {
  1306. + super(value);
  1307. + setName("Gloves");
  1308. + }
  1309. +
  1310. + @Override
  1311. + public boolean meetConditionRequirements(Player player)
  1312. + {
  1313. + if (getValue() == null)
  1314. + return false;
  1315. +
  1316. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.GLOVES);
  1317. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1318. + }
  1319. +}
  1320. \ No newline at end of file
  1321. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java
  1322. ===================================================================
  1323. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (nonexistent)
  1324. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Head.java (working copy)
  1325. @@ -0,0 +1,24 @@
  1326. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1327. +
  1328. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1329. +import net.sf.l2j.gameserver.model.actor.Player;
  1330. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1331. +
  1332. +public class Head extends Condition
  1333. +{
  1334. + public Head(Object value)
  1335. + {
  1336. + super(value);
  1337. + setName("Helmets");
  1338. + }
  1339. +
  1340. + @Override
  1341. + public boolean meetConditionRequirements(Player player)
  1342. + {
  1343. + if (getValue() == null)
  1344. + return false;
  1345. +
  1346. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.HEAD);
  1347. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1348. + }
  1349. +}
  1350. \ No newline at end of file
  1351. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java
  1352. ===================================================================
  1353. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (nonexistent)
  1354. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (working copy)
  1355. @@ -0,0 +1,21 @@
  1356. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1357. +
  1358. +import net.sf.l2j.gameserver.model.actor.Player;
  1359. +
  1360. +public class Hero extends Condition
  1361. +{
  1362. + public Hero(Object value)
  1363. + {
  1364. + super(value);
  1365. + setName("Hero");
  1366. + }
  1367. +
  1368. + @Override
  1369. + public boolean meetConditionRequirements(Player player)
  1370. + {
  1371. + if (getValue() == null)
  1372. + return false;
  1373. +
  1374. + return player.isHero();
  1375. + }
  1376. +}
  1377. \ No newline at end of file
  1378. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java
  1379. ===================================================================
  1380. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (nonexistent)
  1381. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Legs.java (working copy)
  1382. @@ -0,0 +1,24 @@
  1383. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1384. +
  1385. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1386. +import net.sf.l2j.gameserver.model.actor.Player;
  1387. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1388. +
  1389. +public class Legs extends Condition
  1390. +{
  1391. + public Legs(Object value)
  1392. + {
  1393. + super(value);
  1394. + setName("Legs");
  1395. + }
  1396. +
  1397. + @Override
  1398. + public boolean meetConditionRequirements(Player player)
  1399. + {
  1400. + if (getValue() == null)
  1401. + return false;
  1402. +
  1403. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.LEGS);
  1404. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1405. + }
  1406. +}
  1407. \ No newline at end of file
  1408. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java
  1409. ===================================================================
  1410. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (nonexistent)
  1411. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Level.java (working copy)
  1412. @@ -0,0 +1,21 @@
  1413. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1414. +
  1415. +import net.sf.l2j.gameserver.model.actor.Player;
  1416. +
  1417. +public class Level extends Condition
  1418. +{
  1419. + public Level(Object value)
  1420. + {
  1421. + super(value);
  1422. + setName("Level");
  1423. + }
  1424. +
  1425. + @Override
  1426. + public boolean meetConditionRequirements(Player player)
  1427. + {
  1428. + if (getValue() == null)
  1429. + return false;
  1430. +
  1431. + return player.getStatus().getLevel() >= Integer.parseInt(getValue().toString());
  1432. + }
  1433. +}
  1434. \ No newline at end of file
  1435. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java
  1436. ===================================================================
  1437. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (nonexistent)
  1438. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (working copy)
  1439. @@ -0,0 +1,21 @@
  1440. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1441. +
  1442. +import net.sf.l2j.gameserver.model.actor.Player;
  1443. +
  1444. +public class Noble extends Condition
  1445. +{
  1446. + public Noble(Object value)
  1447. + {
  1448. + super(value);
  1449. + setName("Noble");
  1450. + }
  1451. +
  1452. + @Override
  1453. + public boolean meetConditionRequirements(Player player)
  1454. + {
  1455. + if (getValue() == null)
  1456. + return false;
  1457. +
  1458. + return player.isNoble();
  1459. + }
  1460. +}
  1461. \ No newline at end of file
  1462. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java
  1463. ===================================================================
  1464. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (nonexistent)
  1465. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/OnlineTime.java (working copy)
  1466. @@ -0,0 +1,21 @@
  1467. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1468. +
  1469. +import net.sf.l2j.gameserver.model.actor.Player;
  1470. +
  1471. +public class OnlineTime extends Condition
  1472. +{
  1473. + public OnlineTime(Object value)
  1474. + {
  1475. + super(value);
  1476. + setName("Online Time");
  1477. + }
  1478. +
  1479. + @Override
  1480. + public boolean meetConditionRequirements(Player player)
  1481. + {
  1482. + if (getValue() == null)
  1483. + return false;
  1484. +
  1485. + return player.getOnlineTime() >= Integer.parseInt(getValue().toString());
  1486. + }
  1487. +}
  1488. \ No newline at end of file
  1489. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java
  1490. ===================================================================
  1491. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (nonexistent)
  1492. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pk.java (working copy)
  1493. @@ -0,0 +1,21 @@
  1494. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1495. +
  1496. +import net.sf.l2j.gameserver.model.actor.Player;
  1497. +
  1498. +public class Pk extends Condition
  1499. +{
  1500. + public Pk(Object value)
  1501. + {
  1502. + super(value);
  1503. + setName("PK Count");
  1504. + }
  1505. +
  1506. + @Override
  1507. + public boolean meetConditionRequirements(Player player)
  1508. + {
  1509. + if (getValue() == null)
  1510. + return false;
  1511. +
  1512. + return player.getPkKills() >= Integer.parseInt(getValue().toString());
  1513. + }
  1514. +}
  1515. \ No newline at end of file
  1516. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java
  1517. ===================================================================
  1518. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (nonexistent)
  1519. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Pvp.java (working copy)
  1520. @@ -0,0 +1,21 @@
  1521. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1522. +
  1523. +import net.sf.l2j.gameserver.model.actor.Player;
  1524. +
  1525. +public class Pvp extends Condition
  1526. +{
  1527. + public Pvp(Object value)
  1528. + {
  1529. + super(value);
  1530. + setName("PvP Count");
  1531. + }
  1532. +
  1533. + @Override
  1534. + public boolean meetConditionRequirements(Player player)
  1535. + {
  1536. + if (getValue() == null)
  1537. + return false;
  1538. +
  1539. + return player.getPvpKills() >= Integer.parseInt(getValue().toString());
  1540. + }
  1541. +}
  1542. \ No newline at end of file
  1543. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java
  1544. ===================================================================
  1545. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (nonexistent)
  1546. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Sub.java (working copy)
  1547. @@ -0,0 +1,21 @@
  1548. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1549. +
  1550. +import net.sf.l2j.gameserver.model.actor.Player;
  1551. +
  1552. +public class Sub extends Condition
  1553. +{
  1554. + public Sub(Object value)
  1555. + {
  1556. + super(value);
  1557. + setName("Subclass Count");
  1558. + }
  1559. +
  1560. + @Override
  1561. + public boolean meetConditionRequirements(Player player)
  1562. + {
  1563. + if (getValue() == null)
  1564. + return false;
  1565. +
  1566. + return player.getSubClasses().size() >= Integer.parseInt(getValue().toString());
  1567. + }
  1568. +}
  1569. \ No newline at end of file
  1570. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java
  1571. ===================================================================
  1572. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (nonexistent)
  1573. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Vip.java (working copy)
  1574. @@ -0,0 +1,23 @@
  1575. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1576. +
  1577. +import net.sf.l2j.gameserver.model.actor.Player;
  1578. +
  1579. +public class Vip extends Condition
  1580. +{
  1581. + public Vip(Object value)
  1582. + {
  1583. + super(value);
  1584. + setName("Vip");
  1585. + }
  1586. +
  1587. + @Override
  1588. + public boolean meetConditionRequirements(Player player)
  1589. + {
  1590. + if (getValue() == null)
  1591. + return false;
  1592. +
  1593. +// return player.calculatePremiumAttributes();
  1594. + player.getPremiumAttribute(1);
  1595. + return false;
  1596. + }
  1597. +}
  1598. \ No newline at end of file
  1599. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java
  1600. ===================================================================
  1601. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (nonexistent)
  1602. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/WeaponEnchant.java (working copy)
  1603. @@ -0,0 +1,24 @@
  1604. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1605. +
  1606. +import net.sf.l2j.gameserver.enums.Paperdoll;
  1607. +import net.sf.l2j.gameserver.model.actor.Player;
  1608. +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
  1609. +
  1610. +public class WeaponEnchant extends Condition
  1611. +{
  1612. + public WeaponEnchant(Object value)
  1613. + {
  1614. + super(value);
  1615. + setName("Weapon Enchant");
  1616. + }
  1617. +
  1618. + @Override
  1619. + public boolean meetConditionRequirements(Player player)
  1620. + {
  1621. + if (getValue() == null)
  1622. + return false;
  1623. +
  1624. + final ItemInstance armor = player.getInventory().getItemFrom(Paperdoll.RHAND);
  1625. + return armor != null && armor.getEnchantLevel() >= Integer.parseInt(getValue().toString());
  1626. + }
  1627. +}
  1628. \ No newline at end of file
  1629. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java
  1630. ===================================================================
  1631. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (nonexistent)
  1632. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Hero.java (working copy)
  1633. @@ -0,0 +1,21 @@
  1634. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1635. +
  1636. +import net.sf.l2j.gameserver.model.actor.Player;
  1637. +
  1638. +public class Hero extends Condition
  1639. +{
  1640. + public Hero(Object value)
  1641. + {
  1642. + super(value);
  1643. + setName("Hero");
  1644. + }
  1645. +
  1646. + @Override
  1647. + public boolean meetConditionRequirements(Player player)
  1648. + {
  1649. + if (getValue() == null)
  1650. + return false;
  1651. +
  1652. + return player.isHero();
  1653. + }
  1654. +}
  1655. \ No newline at end of file
  1656. Index: java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java
  1657. ===================================================================
  1658. --- java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (nonexistent)
  1659. +++ java/net/sf/l2j/gameserver/model/entity/achievement/condition/Noble.java (working copy)
  1660. @@ -0,0 +1,21 @@
  1661. +package net.sf.l2j.gameserver.model.entity.achievement.condition;
  1662. +
  1663. +import net.sf.l2j.gameserver.model.actor.Player;
  1664. +
  1665. +public class Noble extends Condition
  1666. +{
  1667. + public Noble(Object value)
  1668. + {
  1669. + super(value);
  1670. + setName("Noble");
  1671. + }
  1672. +
  1673. + @Override
  1674. + public boolean meetConditionRequirements(Player player)
  1675. + {
  1676. + if (getValue() == null)
  1677. + return false;
  1678. +
  1679. + return player.isNoble();
  1680. + }
  1681. +}
  1682. \ No newline at end of file
  1683. Index: java/net/sf/l2j/gameserver/model/entity/Achievement.java
  1684. ===================================================================
  1685. --- java/net/sf/l2j/gameserver/model/entity/Achievement.java (nonexistent)
  1686. +++ java/net/sf/l2j/gameserver/model/entity/Achievement.java (working copy)
  1687. @@ -0,0 +1,70 @@
  1688. +package net.sf.l2j.gameserver.model.entity;
  1689. +
  1690. +import java.util.List;
  1691. +
  1692. +import net.sf.l2j.commons.util.StatsSet;
  1693. +
  1694. +import net.sf.l2j.gameserver.model.actor.Player;
  1695. +import net.sf.l2j.gameserver.model.entity.achievement.condition.Condition;
  1696. +import net.sf.l2j.gameserver.model.holder.IntIntHolder;
  1697. +
  1698. +public class Achievement
  1699. +{
  1700. + private final int _id;
  1701. + private final String _name;
  1702. + private final List<IntIntHolder> _reward;
  1703. + private String _description = "No Description!";
  1704. + private final boolean _repeatable;
  1705. +
  1706. + private List<Condition> _conditions;
  1707. +
  1708. + public Achievement(StatsSet set, List<Condition> conditions)
  1709. + {
  1710. + _id = set.getInteger("id", 0);
  1711. + _name = set.getString("name", null);
  1712. + _reward = set.getIntIntHolderList("reward");
  1713. + _description = set.getString("description", null);
  1714. + _repeatable = set.getBool("repeatable", false);
  1715. + _conditions = conditions;
  1716. + }
  1717. +
  1718. + public int getId()
  1719. + {
  1720. + return _id;
  1721. + }
  1722. +
  1723. + public String getName()
  1724. + {
  1725. + return _name;
  1726. + }
  1727. +
  1728. + public List<IntIntHolder> getReward()
  1729. + {
  1730. + return _reward;
  1731. + }
  1732. +
  1733. + public String getDescription()
  1734. + {
  1735. + return _description;
  1736. + }
  1737. +
  1738. + public boolean getRepeatable()
  1739. + {
  1740. + return _repeatable;
  1741. + }
  1742. +
  1743. + public List<Condition> getConditions()
  1744. + {
  1745. + return _conditions;
  1746. + }
  1747. +
  1748. + public boolean achievementRequirements(Player player)
  1749. + {
  1750. + for (Condition c: getConditions())
  1751. + {
  1752. + if (!c.meetConditionRequirements(player))
  1753. + return false;
  1754. + }
  1755. + return true;
  1756. + }
  1757. +}
  1758. \ No newline at end of file
  1759. Index: sql/achievements.sql
  1760. ===================================================================
  1761. --- sql/achievements.sql (nonexistent)
  1762. +++ sql/achievements.sql (working copy)
  1763. @@ -0,0 +1,19 @@
  1764. +CREATE TABLE `achievements` (
  1765. + `owner_id` int(11) NOT NULL default '0',
  1766. + `a1` int(11) default '0',
  1767. + `a2` int(11) default '0',
  1768. + `a3` int(11) default '0',
  1769. + `a4` int(11) default '0',
  1770. + `a5` int(11) default '0',
  1771. + `a6` int(11) default '0',
  1772. + `a7` int(11) default '0',
  1773. + `a8` int(11) default '0',
  1774. + `a9` int(11) default '0',
  1775. + `a10` int(11) default '0',
  1776. + `a11` int(11) default '0',
  1777. + `a12` int(11) default '0',
  1778. + `a13` int(11) default '0',
  1779. + `a14` int(11) default '0',
  1780. + `a15` int(11) default '0',
  1781. + PRIMARY KEY (`owner_id`)
  1782. +)
  1783. \ No newline at end of file
  1784.  
  1785. Index: data/xml/achievements.xml
  1786. ===================================================================
  1787. --- data/xml/achievements.xml (nonexistent)
  1788. +++ data/xml/achievements.xml (working copy)
  1789. @@ -0,0 +1,18 @@
  1790. +<?xml version='1.0' encoding='UTF-8'?>
  1791. +<list>
  1792. + <achievement id="1" name="Champion" description="Player level 80" reward="3470-5" minLevel="80"/>
  1793. + <achievement id="2" name="Hero" description="player hero status" reward="3470-10" mustBeHero="true"/>
  1794. + <achievement id="3" name="Noble" description="Player noblesse status" reward="3470-10" mustBeNoble="true"/>
  1795. + <achievement id="4" name="Weapon" description="Enchant a weapon min + 20" reward="3470-15" minWeaponEnchant="16" />
  1796. + <achievement id="5" name="Pvp's" description="Need 1,000 PvPs" reward="3470-15" minPvPCount="1000"/>
  1797. + <achievement id="6" name="Pk's" description="Need 1,000 Pks" reward="3470-15" minPkCount="1000"/>
  1798. + <achievement id="7" name="Comander" description="Be clan leader of a clan level 8" reward="3470-10" minClanLevel="8" mustBeClanLeader="true"/>
  1799. + <achievement id="8" name="Adena Player" description="Min adena cout" reward="3470-5" minAdenaCount="100"/>
  1800. + <achievement id="9" name="Achievements" description="Complete all personal achievements" reward="3470-40" CompleteAchievements="15"/>
  1801. + <achievement id="10" name="Reputation Clan" description="Reputation in his clan" reward="3470-5" crpAmmount="100"/>
  1802. + <achievement id="11" name="Leader Of Clan" description="Ter Castle" reward="3470-5" lordOfCastle="true"/>
  1803. + <achievement id="12" name="SubClasses" description="Have 1 subclasses" reward="3470-5" minSubclassCount="1"/>
  1804. + <achievement id="13" name="Gamer" description="Be online for 1 days" reward="3470-10" minOnlineTime="1"/>
  1805. + <achievement id="14" name="Armor" description="Complete the enchantment of armor" reward="3470-10" minHeadEnchant="16" minChestEnchant="16" minFeetEnchant="16" minLegsEnchant="16" minGlovestEnchant="16"/>
  1806. + <achievement id="15" name="Vip" description="Become a VIP player" reward="3470-10" mustBeVip="true"/>
  1807. +</list>
  1808. \ No newline at end of file
  1809.  
Advertisement
Add Comment
Please, Sign In to add comment