Advertisement
Guest User

NPCCONVO

a guest
Apr 19th, 2014
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.21 KB | None | 0 0
  1. /*
  2. This file is part of the OdinMS Maple Story Server
  3. Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
  4. Matthias Butz <matze@odinms.de>
  5. Jan Christian Meyer <vimes@odinms.de>
  6.  
  7. This program is free software: you can redistribute it and/or modify
  8. it under the terms of the GNU Affero General Public License as
  9. published by the Free Software Foundation version 3 as published by
  10. the Free Software Foundation. You may not use, modify or distribute
  11. this program under any other version of the GNU Affero General Public
  12. License.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. GNU Affero General Public License for more details.
  18.  
  19. You should have received a copy of the GNU Affero General Public License
  20. along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. */
  22. package scripting.npc;
  23.  
  24. import client.Equip;
  25. import client.ISkill;
  26. import client.ItemFactory;
  27. import java.sql.PreparedStatement;
  28. import java.sql.ResultSet;
  29. import constants.ExpTable;
  30. import client.MapleCharacter;
  31. import client.MapleClient;
  32. import client.MapleInventoryType;
  33. import client.MapleJob;
  34. import client.MaplePet;
  35. import client.MapleSkinColor;
  36. import client.MapleStat;
  37. import client.SkillFactory;
  38. import tools.Randomizer;
  39. import java.io.File;
  40. import java.rmi.RemoteException;
  41. import java.sql.SQLException;
  42. import java.util.LinkedList;
  43. import java.util.List;
  44. import net.channel.ChannelServer;
  45. import tools.DatabaseConnection;
  46. import net.world.MapleParty;
  47. import net.world.guild.MapleAlliance;
  48. import server.MapleShopFactory;
  49. import net.world.guild.MapleGuild;
  50. import net.world.remote.WorldChannelInterface;
  51. import provider.MapleData;
  52. import provider.MapleDataProviderFactory;
  53. import scripting.AbstractPlayerInteraction;
  54. import scripting.event.EventManager;
  55. import server.MapleInventoryManipulator;
  56. import server.MapleItemInformationProvider;
  57. import server.MapleSquad;
  58. import server.MapleSquadType;
  59. import server.MapleStatEffect;
  60. import server.events.MapleEvent;
  61. import server.maps.MapleMap;
  62. import server.quest.MapleQuest;
  63. import tools.MaplePacketCreator;
  64. import client.MapleInventory;
  65. import client.IItem;
  66.  
  67. /**
  68. *
  69. * @author Matze
  70. */
  71. public class NPCConversationManager extends AbstractPlayerInteraction {
  72.  
  73. private int npc;
  74. private String getText;
  75.  
  76. public NPCConversationManager(MapleClient c, int npc) {
  77. super(c);
  78. this.npc = npc;
  79. }
  80.  
  81. public int getNpc() {
  82. return npc;
  83. }
  84.  
  85. public static int editEquipById(MapleCharacter chr, int max, int itemid, String stat, int newval) {
  86. return editEquipById(chr,max,itemid,stat,(short)newval);
  87. }
  88.  
  89. public void gainEpicItem (byte slot, MapleCharacter player, short str, short dex, short Int, short luk, short wa, short ma) {
  90. MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
  91. Equip eu = (Equip) equip.getItem(slot);
  92. int item = equip.getItem(slot).getItemId();
  93. short hand = eu.getHands();
  94. byte level = eu.getLevel();
  95. Equip nItem = new Equip(item, equip.getNextFreeSlot());
  96. nItem.setStr(str); // STR
  97. nItem.setDex(dex); // DEX
  98. nItem.setInt(Int); // INT
  99. nItem.setLuk(luk); //LUK
  100. nItem.setWatk(wa);
  101. nItem.setMatk(ma);
  102. nItem.setUpgradeSlots(nItem.getUpgradeSlots()); // Can Upgrade amount
  103. nItem.setHands(hand);
  104. nItem.setLevel(level);
  105. player.getInventory(MapleInventoryType.EQUIP).removeItem(slot);
  106. player.getInventory(MapleInventoryType.EQUIP).addItem(nItem);
  107. }
  108. public void gainEpicItem (MapleCharacter player, short str, short dex, short Int, short luk, short wa, short ma) {
  109. byte slot = player.getInventory(MapleInventoryType.EQUIP).getNextFreeSlot();
  110. MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
  111. Equip eu = (Equip) equip.getItem(slot);
  112. int item = equip.getItem(slot).getItemId();
  113. short hand = eu.getHands();
  114. byte level = eu.getLevel();
  115. Equip nItem = new Equip(item, equip.getNextFreeSlot());
  116. nItem.setStr(str); // STR
  117. nItem.setDex(dex); // DEX
  118. nItem.setInt(Int); // INT
  119. nItem.setLuk(luk); //LUK
  120. nItem.setWatk(wa);
  121. nItem.setMatk(ma);
  122. nItem.setUpgradeSlots(nItem.getUpgradeSlots()); // Can Upgrade amount
  123. nItem.setHands(hand);
  124. nItem.setLevel(level);
  125. player.getInventory(MapleInventoryType.EQUIP).removeItem(slot);
  126. player.getInventory(MapleInventoryType.EQUIP).addItem(nItem);
  127. }
  128.  
  129. public void MakeGMItem (byte slot, MapleCharacter player) {
  130. MapleInventory equip = player.getInventory(MapleInventoryType.EQUIP);
  131. Equip eu = (Equip) equip.getItem(slot);
  132. int item = equip.getItem(slot).getItemId();
  133. short hand = eu.getHands();
  134. byte level = eu.getLevel();
  135. Equip nItem = new Equip(item, equip.getNextFreeSlot());
  136. nItem.setStr((short) 30000); // STR
  137. nItem.setDex((short) 30000); // DEX
  138. nItem.setInt((short) 30000); // INT
  139. nItem.setLuk((short) 30000); //LUK
  140. nItem.setUpgradeSlots((byte) 0);
  141. nItem.setHands(hand);
  142. nItem.setLevel(level);
  143. player.getInventory(MapleInventoryType.EQUIP).removeItem(slot);
  144. player.getInventory(MapleInventoryType.EQUIP).addFromDB(nItem);
  145. }
  146.  
  147. public String EquipList(MapleClient c) {
  148. StringBuilder str = new StringBuilder();
  149. MapleInventory equip = c.getPlayer().getInventory(MapleInventoryType.EQUIP);
  150. List<String> stra = new LinkedList<String>();
  151. for (IItem item : equip.list()) {
  152. stra.add("#L"+item.getPosition()+"##v"+item.getItemId()+"##l");
  153. }
  154. for (String strb : stra) {
  155. str.append(strb);
  156. }
  157. return str.toString();
  158. }
  159.  
  160. public void reloadChar() {
  161. getPlayer().getClient().announce(MaplePacketCreator.getCharInfo(getPlayer()));
  162. getPlayer().getMap().removePlayer(getPlayer());
  163. getPlayer().getMap().addPlayer(getPlayer());
  164. }
  165.  
  166. public void MakeDonatorItem5000 (byte slot, MapleCharacter player) {
  167. Equip nEquip = (Equip) getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(slot);
  168. nEquip.donator5000(getPlayer(), slot);
  169. }
  170.  
  171.  
  172. public boolean makeProItem(int id, int hardcore) {
  173. MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
  174. IItem item = ii.getEquipById(id);
  175. MapleInventoryType type = ii.getInventoryType(id);
  176. if (type.equals(MapleInventoryType.EQUIP)) {
  177. MapleInventoryManipulator.addFromDrop(c, ii.hardcoreItem((Equip) item, (short) hardcore), true);
  178. return true;
  179. } else {
  180. return false;
  181. }
  182. }
  183.  
  184. public void dispose() {
  185. NPCScriptManager.getInstance().dispose(this);
  186. }
  187.  
  188. public void sendNext(String text) {
  189. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", (byte) 0));
  190. }
  191.  
  192. public void sendPrev(String text) {
  193. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", (byte) 0));
  194. }
  195.  
  196. public void sendNextPrev(String text) {
  197. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", (byte) 0));
  198. }
  199.  
  200. public void sendOk(String text) {
  201. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", (byte) 0));
  202. }
  203.  
  204. public void sendYesNo(String text) {
  205. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, "", (byte) 0));
  206. }
  207.  
  208. public void sendAcceptDecline(String text) {
  209. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", (byte) 0));
  210. }
  211.  
  212. public void sendSimple(String text) {
  213. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, "", (byte) 0));
  214. }
  215.  
  216. public void sendNext(String text, byte speaker) {
  217. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", speaker));
  218. }
  219.  
  220. public void sendPrev(String text, byte speaker) {
  221. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", speaker));
  222. }
  223.  
  224. public void sendNextPrev(String text, byte speaker) {
  225. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", speaker));
  226. }
  227.  
  228. public void sendOk(String text, byte speaker) {
  229. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", speaker));
  230. }
  231.  
  232. public void sendYesNo(String text, byte speaker) {
  233. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, "", speaker));
  234. }
  235.  
  236. public void sendAcceptDecline(String text, byte speaker) {
  237. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", speaker));
  238. }
  239.  
  240. public void sendSimple(String text, byte speaker) {
  241. getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, "", speaker));
  242. }
  243.  
  244. public void sendStyle(String text, int styles[]) {
  245. getClient().announce(MaplePacketCreator.getNPCTalkStyle(npc, text, styles));
  246. }
  247.  
  248. public void sendGetNumber(String text, int def, int min, int max) {
  249. getClient().announce(MaplePacketCreator.getNPCTalkNum(npc, text, def, min, max));
  250. }
  251.  
  252. public void sendGetText(String text) {
  253. getClient().announce(MaplePacketCreator.getNPCTalkText(npc, text));
  254. }
  255.  
  256. public void setGetText(String text) {
  257. this.getText = text;
  258. }
  259.  
  260. public String getText() {
  261. return this.getText;
  262. }
  263.  
  264. public int getJobId() {
  265. return getPlayer().getJob().getId();
  266. }
  267.  
  268. public void startQuest(int id) {
  269. try {
  270. MapleQuest.getInstance(id).forceStart(getPlayer(), npc);
  271. } catch (NullPointerException ex) {
  272. }
  273. }
  274.  
  275. public void completeQuest(int id) {
  276. try {
  277. MapleQuest.getInstance(id).forceComplete(getPlayer(), npc);
  278. } catch (NullPointerException ex) {
  279. }
  280. }
  281.  
  282. public int getMeso() {
  283. return getPlayer().getMeso();
  284. }
  285.  
  286. public void gainMeso(int gain) {
  287. getPlayer().gainMeso(gain, true, false, true);
  288. }
  289.  
  290. public void gainExp(int gain) {
  291. getPlayer().gainExp(gain, true, true);
  292. }
  293.  
  294. public int getLevel() {
  295. return getPlayer().getLevel();
  296. }
  297.  
  298. public EventManager getEventManager(String event) {
  299. return getClient().getChannelServer().getEventSM().getEventManager(event);
  300. }
  301.  
  302. public void showEffect(String effect) {
  303. getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(effect, 3));
  304. }
  305.  
  306. public void playSound(String sound) {
  307. getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(sound, 4));
  308. }
  309.  
  310. public void setHair(int hair) {
  311. getPlayer().setHair(hair);
  312. getPlayer().updateSingleStat(MapleStat.HAIR, hair);
  313. getPlayer().equipChanged();
  314. }
  315.  
  316. public void setFace(int face) {
  317. getPlayer().setFace(face);
  318. getPlayer().updateSingleStat(MapleStat.FACE, face);
  319. getPlayer().equipChanged();
  320. }
  321. public void openShop(int shop) {
  322. MapleShopFactory.getInstance().getShop(shop).sendShop(c);
  323. }
  324.  
  325. public void setSkin(int color) {
  326. getPlayer().setSkinColor(MapleSkinColor.getById(color));
  327. getPlayer().updateSingleStat(MapleStat.SKIN, color);
  328. getPlayer().equipChanged();
  329. }
  330.  
  331. public int itemQuantity(int itemid) {
  332. return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).countById(itemid);
  333. }
  334.  
  335. public void displayGuildRanks() {
  336. MapleGuild.displayGuildRanks(getClient(), npc);
  337. }
  338.  
  339. @Override
  340. public MapleParty getParty() {
  341. return getPlayer().getParty();
  342. }
  343.  
  344. @Override
  345. public void resetMap(int mapid) {
  346. getClient().getChannelServer().getMapFactory().getMap(mapid).resetReactors();
  347. }
  348.  
  349. public void environmentChange(String env, int mode) {
  350. getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(env, mode));
  351. }
  352.  
  353. public void gainCloseness(int closeness) {
  354. for (MaplePet pet : getPlayer().getPets()) {
  355. if (pet.getCloseness() > 30000) {
  356. pet.setCloseness(30000);
  357. return;
  358. }
  359. pet.gainCloseness(closeness);
  360. while (pet.getCloseness() > ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
  361. pet.setLevel(pet.getLevel() + 1);
  362. getClient().announce(MaplePacketCreator.showOwnPetLevelUp(getPlayer().getPetIndex(pet)));
  363. }
  364. getPlayer().getClient().announce(MaplePacketCreator.updatePet(pet));
  365. }
  366. }
  367.  
  368. public String getName() {
  369. return getPlayer().getName();
  370. }
  371.  
  372. public int getGender() {
  373. return getPlayer().getGender();
  374. }
  375.  
  376. public void changeJobById(int a) {
  377. getPlayer().changeJob(MapleJob.getById(a));
  378. }
  379.  
  380. public void addRandomItem(int id) {
  381. MapleItemInformationProvider i = MapleItemInformationProvider.getInstance();
  382. MapleInventoryManipulator.addFromDrop(getClient(), i.randomizeStats((Equip) i.getEquipById(id)), true);
  383. }
  384.  
  385. public MapleJob getJobName(int id) {
  386. return MapleJob.getById(id);
  387. }
  388.  
  389. public MapleStatEffect getItemEffect(int itemId) {
  390. return MapleItemInformationProvider.getInstance().getItemEffect(itemId);
  391. }
  392.  
  393. public void resetStats() {
  394. getPlayer().resetStats();
  395. }
  396.  
  397. public void maxMastery() {
  398. for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
  399. try {
  400. ISkill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
  401. if ((skill.getId() / 10000 % 10 == 2 || (getClient().getPlayer().isCygnus() && skill.getId() / 10000 % 10 == 1) || (getClient().getPlayer().isAran() && skill.getId() / 10000 % 10 == 2)) && getPlayer().getSkillLevel(skill) < 1) {
  402. getPlayer().changeSkillLevel(skill, 0, skill.getMaxLevel(), -1);
  403. }
  404. } catch (NumberFormatException nfe) {
  405. break;
  406. } catch (NullPointerException npe) {
  407. continue;
  408. }
  409. }
  410. }
  411.  
  412. public void processGachapon(int[] id, boolean remote) {
  413. int[] gacMap = {100000000, 101000000, 102000000, 103000000, 105040300, 800000000, 809000101, 809000201, 600000000, 120000000};
  414. int itemid = id[Randomizer.nextInt(id.length)];
  415. addRandomItem(itemid);
  416. if (!remote) {
  417. gainItem(5220000, (short) -1);
  418. }
  419. sendNext("You have obtained a #b#t" + itemid + "##k.");
  420. getClient().getChannelServer().broadcastPacket(MaplePacketCreator.gachaponMessage(getPlayer().getInventory(MapleInventoryType.getByType((byte) (itemid / 1000000))).findById(itemid), c.getPlayer().getMapName(gacMap[(getNpc() != 9100117 && getNpc() != 9100109) ? (getNpc() - 9100100) : getNpc() == 9100109 ? 8 : 9]), getPlayer()));
  421. }
  422.  
  423. public void disbandAlliance(MapleClient c, int allianceId) {
  424. PreparedStatement ps = null;
  425. try {
  426. ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM `alliance` WHERE id = ?");
  427. ps.setInt(1, allianceId);
  428. ps.executeUpdate();
  429. ps.close();
  430. c.getChannelServer().getWorldInterface().allianceMessage(c.getPlayer().getGuild().getAllianceId(), MaplePacketCreator.disbandAlliance(allianceId), -1, -1);
  431. c.getChannelServer().getWorldInterface().disbandAlliance(allianceId);
  432. } catch (RemoteException r) {
  433. c.getChannelServer().reconnectWorld();
  434. } catch (SQLException sqle) {
  435. sqle.printStackTrace();
  436. } finally {
  437. try {
  438. if (ps != null) {
  439. ps.close();
  440. }
  441. } catch (SQLException ex) {
  442. }
  443. }
  444. }
  445.  
  446. public boolean canBeUsedAllianceName(String name) {
  447. if (name.contains(" ") || name.length() > 12) {
  448. return false;
  449. }
  450. try {
  451. PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name FROM alliance WHERE name = ?");
  452. ps.setString(1, name);
  453. ResultSet rs = ps.executeQuery();
  454. if (rs.next()) {
  455. ps.close();
  456. rs.close();
  457. return false;
  458. }
  459. ps.close();
  460. rs.close();
  461. return true;
  462. } catch (SQLException e) {
  463. return false;
  464. }
  465. }
  466.  
  467. public static MapleAlliance createAlliance(MapleCharacter chr1, MapleCharacter chr2, String name) {
  468. int id = 0;
  469. int guild1 = chr1.getGuildId();
  470. int guild2 = chr2.getGuildId();
  471. try {
  472. PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `alliance` (`name`, `guild1`, `guild2`) VALUES (?, ?, ?)");
  473. ps.setString(1, name);
  474. ps.setInt(2, guild1);
  475. ps.setInt(3, guild2);
  476. ps.executeUpdate();
  477. ResultSet rs = ps.getGeneratedKeys();
  478. rs.next();
  479. id = rs.getInt(1);
  480. rs.close();
  481. ps.close();
  482. } catch (SQLException e) {
  483. e.printStackTrace();
  484. return null;
  485. }
  486. MapleAlliance alliance = new MapleAlliance(name, id, guild1, guild2);
  487. try {
  488. WorldChannelInterface wci = chr1.getClient().getChannelServer().getWorldInterface();
  489. wci.setGuildAllianceId(guild1, id);
  490. wci.setGuildAllianceId(guild2, id);
  491. chr1.setAllianceRank(1);
  492. chr1.saveGuildStatus();
  493. chr2.setAllianceRank(2);
  494. chr2.saveGuildStatus();
  495. wci.addAlliance(id, alliance);
  496. wci.allianceMessage(id, MaplePacketCreator.makeNewAlliance(alliance, chr1.getClient()), -1, -1);
  497. } catch (RemoteException e) {
  498. chr1.getClient().getChannelServer().reconnectWorld();
  499. chr2.getClient().getChannelServer().reconnectWorld();
  500. return null;
  501. }
  502. return alliance;
  503. }
  504.  
  505. public List<MapleCharacter> getPartyMembers() {
  506. if (getPlayer().getParty() == null) {
  507. return null;
  508. }
  509. List<MapleCharacter> chars = new LinkedList<MapleCharacter>();
  510. for (ChannelServer channel : ChannelServer.getAllInstances()) {
  511. for (MapleCharacter chr : channel.getPartyMembers(getPlayer().getParty())) {
  512. if (chr != null) {
  513. chars.add(chr);
  514. }
  515. }
  516. }
  517. return chars;
  518. }
  519.  
  520. public void warpParty(int id) {
  521. for (MapleCharacter mc : getPartyMembers()) {
  522. if (id == 925020100) {
  523. mc.setDojoParty(true);
  524. }
  525. mc.changeMap(getWarpMap(id));
  526. }
  527. }
  528.  
  529. public boolean hasMerchant() {
  530. return getPlayer().hasMerchant();
  531. }
  532.  
  533. public boolean hasMerchantItems() {
  534. try {
  535. if (!ItemFactory.MERCHANT.loadItems(getPlayer().getId(), false).isEmpty()) {
  536. return true;
  537. }
  538. } catch (SQLException e) {
  539. return false;
  540. }
  541. if (getPlayer().getMerchantMeso() == 0) {
  542. return false;
  543. } else {
  544. return true;
  545. }
  546. }
  547.  
  548. public void showFredrick() {
  549. c.announce(MaplePacketCreator.getFredrick(getPlayer()));
  550. }
  551.  
  552. public int partyMembersInMap() {
  553. int inMap = 0;
  554. for (MapleCharacter char2 : getPlayer().getMap().getCharacters()) {
  555. if (char2.getParty() == getPlayer().getParty()) {
  556. inMap++;
  557. }
  558. }
  559. return inMap;
  560. }
  561.  
  562. public MapleSquad createMapleSquad(MapleSquadType type) {
  563. MapleSquad squad = new MapleSquad(c.getChannel(), getPlayer());
  564. if (getSquadState(type) == 0) {
  565. c.getChannelServer().addMapleSquad(squad, type);
  566. } else {
  567. return null;
  568. }
  569. return squad;
  570. }
  571.  
  572. public MapleCharacter getSquadMember(MapleSquadType type, int index) {
  573. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  574. MapleCharacter ret = null;
  575. if (squad != null) {
  576. ret = squad.getMembers().get(index);
  577. }
  578. return ret;
  579. }
  580.  
  581. public int getSquadState(MapleSquadType type) {
  582. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  583. if (squad != null) {
  584. return squad.getStatus();
  585. }
  586. return 0;
  587. }
  588.  
  589. public void setSquadState(MapleSquadType type, int state) {
  590. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  591. if (squad != null) {
  592. squad.setStatus(state);
  593. }
  594. }
  595.  
  596. public boolean checkSquadLeader(MapleSquadType type) {
  597. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  598. if (squad != null) {
  599. return squad.getLeader().getId() == getPlayer().getId();
  600. }
  601. return false;
  602. }
  603.  
  604. public int numSquadMembers(MapleSquadType type) {
  605. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  606. int ret = 0;
  607. if (squad != null) {
  608. ret = squad.getSquadSize();
  609. }
  610. return ret;
  611. }
  612.  
  613. public boolean isSquadMember(MapleSquadType type) {
  614. return c.getChannelServer().getMapleSquad(type).containsMember(getPlayer());
  615. }
  616.  
  617. public void addSquadMember(MapleSquadType type) {
  618. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  619. if (squad != null) {
  620. squad.addMember(getPlayer());
  621. }
  622. }
  623.  
  624. public void removeSquadMember(MapleSquadType type, int index, boolean ban) {
  625. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  626. if (squad != null) {
  627. squad.banMember(squad.getMembers().get(index), ban);
  628. }
  629. }
  630.  
  631. public boolean canAddSquadMember(MapleSquadType type) {
  632. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  633. if (squad != null) {
  634. return !squad.isBanned(getPlayer());
  635. }
  636. return false;
  637. }
  638.  
  639. public void warpSquadMembers(MapleSquadType type, int mapId) {
  640. MapleSquad squad = c.getChannelServer().getMapleSquad(type);
  641. MapleMap map = c.getChannelServer().getMapFactory().getMap(mapId);
  642. if (squad != null) {
  643. if (checkSquadLeader(type)) {
  644. for (MapleCharacter chr : squad.getMembers()) {
  645. chr.changeMap(map, map.getPortal(0));
  646. }
  647. }
  648. }
  649. }
  650.  
  651. public MapleEvent getEvent() {
  652. return c.getChannelServer().getEvent();
  653. }
  654.  
  655. public void divideTeams() {
  656. if (getEvent() != null) {
  657. getPlayer().setTeam(getEvent().getLimit() % 2); //muhaha :D
  658. }
  659. }
  660. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement