L2ClanMember.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package net.sf.l2j.gameserver.model;
  16. import java.sql.PreparedStatement;
  17. import java.sql.SQLException;
  18. import net.sf.l2j.L2DatabaseFactory;
  19. import net.sf.l2j.gameserver.instancemanager.SiegeManager;
  20. import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
  21. /**
  22. * This class ...
  23. *
  24. * @version $Revision: 1.5.4.2 $ $Date: 2005/03/27 15:29:33 $
  25. */
  26. public class L2ClanMember
  27. {
  28. private L2Clan _clan;
  29. private int _objectId;
  30. private String _name;
  31. private String _title;
  32. private int _powerGrade;
  33. private int _level;
  34. private int _classId;
  35. private boolean _sex;
  36. private int _raceOrdinal;
  37. private L2PcInstance _player;
  38. private int _pledgeType;
  39. private int _apprentice;
  40. private int _sponsor;
  41. public L2ClanMember(L2Clan clan, String name, int level, int classId, int objectId, int pledgeType, int powerGrade, String title, boolean sex, int raceOrdinal)
  42. {
  43. if(clan == null)
  44. throw new IllegalArgumentException("Can not create a ClanMember with a null clan.");
  45. _clan = clan;
  46. _name = name;
  47. _level = level;
  48. _classId = classId;
  49. _objectId = objectId;
  50. _powerGrade = powerGrade;
  51. _title = title;
  52. _pledgeType = pledgeType;
  53. _apprentice = 0;
  54. _sponsor = 0;
  55. _sex = sex;
  56. _raceOrdinal = raceOrdinal;
  57. }
  58. public L2ClanMember(L2Clan clan, L2PcInstance player)
  59. {
  60. _clan = clan;
  61. _name = player.getName();
  62. _level = player.getLevel();
  63. _classId = player.getClassId().getId();
  64. _objectId = player.getObjectId();
  65. _pledgeType = player.getPledgeType();
  66. _powerGrade = player.getPowerGrade();
  67. _title = player.getTitle();
  68. _sponsor = 0;
  69. _apprentice = 0;
  70. _sex = player.getAppearance().getSex();
  71. _raceOrdinal = player.getRace().ordinal();
  72. }
  73. public L2ClanMember(L2PcInstance player)
  74. {
  75. if(player.getClan() == null)
  76. throw new IllegalArgumentException("Can not create a ClanMember if player has a null clan.");
  77. _clan = player.getClan();
  78. _player = player;
  79. _name = _player.getName();
  80. _level = _player.getLevel();
  81. _classId = _player.getClassId().getId();
  82. _objectId = _player.getObjectId();
  83. _powerGrade = _player.getPowerGrade();
  84. _pledgeType = _player.getPledgeType();
  85. _title = _player.getTitle();
  86. _apprentice = 0;
  87. _sponsor = 0;
  88. _sex = _player.getAppearance().getSex();
  89. _raceOrdinal = _player.getRace().ordinal();
  90. }
  91. public void setPlayerInstance(L2PcInstance player)
  92. {
  93. if (player == null && _player != null)
  94. {
  95. // this is here to keep the data when the player logs off
  96. _name = _player.getName();
  97. _level = _player.getLevel();
  98. _classId = _player.getClassId().getId();
  99. _objectId = _player.getObjectId();
  100. _powerGrade = _player.getPowerGrade();
  101. _pledgeType = _player.getPledgeType();
  102. _title = _player.getTitle();
  103. _apprentice = _player.getApprentice();
  104. _sponsor = _player.getSponsor();
  105. _sex = _player.getAppearance().getSex();
  106. _raceOrdinal = _player.getRace().ordinal();
  107. }
  108. if (player != null)
  109. {
  110. if (_clan.getReputationScore() >= 0)
  111. {
  112. L2Skill[] skills = _clan.getAllSkills();
  113. for (L2Skill sk : skills)
  114. {
  115. if(sk.getMinPledgeClass() <= player.getPledgeClass())
  116. player.addSkill(sk, false);
  117. }
  118. }
  119. if (_clan.getLevel() > 3 && player.isClanLeader())
  120. SiegeManager.getInstance().addSiegeSkills(player);
  121. }
  122. _player = player;
  123. }
  124. public L2PcInstance getPlayerInstance()
  125. {
  126. return _player;
  127. }
  128. public boolean isOnline()
  129. {
  130. return _player != null;
  131. }
  132. /**
  133. * @return Returns the classId.
  134. */
  135. public int getClassId()
  136. {
  137. if (_player != null)
  138. {
  139. return _player.getClassId().getId();
  140. }
  141. return _classId;
  142. }
  143. /**
  144. * @return Returns the level.
  145. */
  146. public int getLevel()
  147. {
  148. if (_player != null)
  149. {
  150. return _player.getLevel();
  151. }
  152. return _level;
  153. }
  154. /**
  155. * @return Returns the name.
  156. */
  157. public String getName()
  158. {
  159. if (_player != null)
  160. {
  161. return _player.getName();
  162. }
  163. return _name;
  164. }
  165. /**
  166. * @return Returns the objectId.
  167. */
  168. public int getObjectId()
  169. {
  170. if (_player != null)
  171. {
  172. return _player.getObjectId();
  173. }
  174. return _objectId;
  175. }
  176. public String getTitle() {
  177. if (_player != null) {
  178. return _player.getTitle();
  179. }
  180. return _title;
  181. }
  182. public int getPledgeType()
  183. {
  184. if (_player != null)
  185. {
  186. return _player.getPledgeType();
  187. }
  188. return _pledgeType;
  189. }
  190. public void setPledgeType(int pledgeType)
  191. {
  192. _pledgeType = pledgeType;
  193. if(_player != null)
  194. {
  195. _player.setPledgeType(pledgeType);
  196. }
  197. else
  198. {
  199. //db save if char not logged in
  200. updatePledgeType();
  201. }
  202. }
  203. public void updatePledgeType()
  204. {
  205. java.sql.Connection con = null;
  206. try
  207. {
  208. con = L2DatabaseFactory.getInstance().getConnection();
  209. PreparedStatement statement = con.prepareStatement("UPDATE characters SET subpledge=? WHERE charId=?");
  210. statement.setLong(1, _pledgeType);
  211. statement.setInt(2, getObjectId());
  212. statement.execute();
  213. statement.close();
  214. }
  215. catch (Exception e)
  216. {
  217. //_log.warning("could not set char power_grade:"+e);
  218. }
  219. finally
  220. {
  221. try { con.close(); } catch (Exception e) {}
  222. }
  223. }
  224. public int getPowerGrade()
  225. {
  226. if(_player != null)
  227. return _player.getPowerGrade();
  228. return _powerGrade;
  229. }
  230. /**
  231. * @param powerGrade
  232. */
  233. public void setPowerGrade(int powerGrade)
  234. {
  235. _powerGrade = powerGrade;
  236. if(_player != null)
  237. {
  238. _player.setPowerGrade(powerGrade);
  239. }
  240. else
  241. {
  242. // db save if char not logged in
  243. updatePowerGrade();
  244. }
  245. }
  246. /**
  247. * Update the characters table of the database with power grade.<BR><BR>
  248. */
  249. public void updatePowerGrade()
  250. {
  251. java.sql.Connection con = null;
  252. try
  253. {
  254. con = L2DatabaseFactory.getInstance().getConnection();
  255. PreparedStatement statement = con.prepareStatement("UPDATE characters SET power_grade=? WHERE charId=?");
  256. statement.setLong(1, _powerGrade);
  257. statement.setInt(2, getObjectId());
  258. statement.execute();
  259. statement.close();
  260. }
  261. catch (Exception e)
  262. {
  263. //_log.warning("could not set char power_grade:"+e);
  264. }
  265. finally
  266. {
  267. try { con.close(); } catch (Exception e) {}
  268. }
  269. }
  270. public void initApprenticeAndSponsor(int apprenticeID, int sponsorID)
  271. {
  272. _apprentice = apprenticeID;
  273. _sponsor = sponsorID;
  274. }
  275. public int getRaceOrdinal()
  276. {
  277. if (_player != null) return _player.getRace().ordinal();
  278. else return _raceOrdinal;
  279. }
  280. public boolean getSex()
  281. {
  282. if (_player != null) return _player.getAppearance().getSex();
  283. else return _sex;
  284. }
  285. public int getSponsor()
  286. {
  287. if (_player != null) return _player.getSponsor();
  288. else return _sponsor;
  289. }
  290. public int getApprentice()
  291. {
  292. if (_player != null) return _player.getApprentice();
  293. else return _apprentice;
  294. }
  295. public String getApprenticeOrSponsorName()
  296. {
  297. if(_player != null)
  298. {
  299. _apprentice = _player.getApprentice();
  300. _sponsor = _player.getSponsor();
  301. }
  302. if(_apprentice != 0)
  303. {
  304. L2ClanMember apprentice = _clan.getClanMember(_apprentice);
  305. if(apprentice != null) return apprentice.getName();
  306. else return "Error";
  307. }
  308. if(_sponsor != 0)
  309. {
  310. L2ClanMember sponsor = _clan.getClanMember(_sponsor);
  311. if(sponsor != null) return sponsor.getName();
  312. else return "Error";
  313. }
  314. return "";
  315. }
  316. public L2Clan getClan()
  317. {
  318. return _clan;
  319. }
  320. public int calculatePledgeClass(L2PcInstance player){
  321. int pledgeClass = 0;
  322. L2Clan clan = player.getClan();
  323. if (clan != null)
  324. {
  325. switch (player.getClan().getLevel())
  326. {
  327. case 4:
  328. if (player.isClanLeader())
  329. pledgeClass = 3;
  330. break;
  331. case 5:
  332. if (player.isClanLeader())
  333. pledgeClass = 4;
  334. else
  335. pledgeClass = 2;
  336. break;
  337. case 6:
  338. switch (player.getPledgeType())
  339. {
  340. case -1:
  341. pledgeClass = 1;
  342. break;
  343. case 100:
  344. case 200:
  345. pledgeClass = 2;
  346. break;
  347. case 0:
  348. if (player.isClanLeader())
  349. pledgeClass = 5;
  350. else
  351. switch (clan.getLeaderSubPledge(player.getObjectId()))
  352. {
  353. case 100:
  354. case 200:
  355. pledgeClass = 4;
  356. break;
  357. case -1:
  358. default:
  359. pledgeClass = 3;
  360. break;
  361. }
  362. break;
  363. }
  364. break;
  365. case 7:
  366. switch (player.getPledgeType())
  367. {
  368. case -1:
  369. pledgeClass = 1;
  370. break;
  371. case 100:
  372. case 200:
  373. pledgeClass = 3;
  374. break;
  375. case 1001:
  376. case 1002:
  377. case 2001:
  378. case 2002:
  379. pledgeClass = 2;
  380. break;
  381. case 0:
  382. if (player.isClanLeader())
  383. pledgeClass = 7;
  384. else
  385. switch (clan.getLeaderSubPledge(player.getObjectId()))
  386. {
  387. case 100:
  388. case 200:
  389. pledgeClass = 6;
  390. break;
  391. case 1001:
  392. case 1002:
  393. case 2001:
  394. case 2002:
  395. pledgeClass = 5;
  396. break;
  397. case -1:
  398. default:
  399. pledgeClass = 4;
  400. break;
  401. }
  402. break;
  403. }
  404. break;
  405. case 8:
  406. switch (player.getPledgeType())
  407. {
  408. case -1:
  409. pledgeClass = 1;
  410. break;
  411. case 100:
  412. case 200:
  413. pledgeClass = 4;
  414. break;
  415. case 1001:
  416. case 1002:
  417. case 2001:
  418. case 2002:
  419. pledgeClass = 3;
  420. break;
  421. case 0:
  422. if (player.isClanLeader())
  423. pledgeClass = 8;
  424. else
  425. switch (clan.getLeaderSubPledge(player.getObjectId()))
  426. {
  427. case 100:
  428. case 200:
  429. pledgeClass = 7;
  430. break;
  431. case 1001:
  432. case 1002:
  433. case 2001:
  434. case 2002:
  435. pledgeClass = 6;
  436. break;
  437. case -1:
  438. default:
  439. pledgeClass = 5;
  440. break;
  441. }
  442. break;
  443. }
  444. break;
  445. default:
  446. pledgeClass = 1;
  447. break;
  448. }
  449. }
  450. return pledgeClass;
  451. }
  452. public void saveApprenticeAndSponsor(int apprentice, int sponsor)
  453. {
  454. java.sql.Connection con = null;
  455. try
  456. {
  457. con = L2DatabaseFactory.getInstance().getConnection();
  458. PreparedStatement statement = con.prepareStatement("UPDATE characters SET apprentice=?,sponsor=? WHERE charId=?");
  459. statement.setInt(1, apprentice);
  460. statement.setInt(2, sponsor);
  461. statement.setInt(3, getObjectId());
  462. statement.execute();
  463. statement.close();
  464. }
  465. catch (SQLException e)
  466. {
  467. //_log.warning("could not set apprentice/sponsor:"+e.getMessage());
  468. }
  469. finally
  470. {
  471. try { con.close(); } catch (Exception e) {}
  472. }
  473. }
  474. }