Advertisement
anhduc2012

Untitled

Feb 22nd, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. public final void spawnMist(final MapleMist mist, final int duration, boolean fake) {
  2. spawnAndAddRangedMapObject(mist, new DelayedPacketCreation() {
  3. @Override
  4. public void sendPackets(MapleClient c) {
  5. mist.sendSpawnData(c);
  6. }
  7. });
  8.  
  9. final TimerManager tMan = TimerManager.getInstance();
  10. final ScheduledFuture < ? > poisonSchedule;
  11. final ScheduledFuture < ? > poisonSchedule1;
  12. poisonSchedule1 = tMan.register(new Runnable() {
  13. @Override
  14. public void run() {
  15. for (final MapleMapObject mo : c.getPlayer().getMap().getMapObjectsInRect(mist.getBox(), Collections.singletonList(MapleMapObjectType.MONSTER))) {
  16. if (mist.makeChanceResult()) {
  17. if (!((MapleMonster) mo).getStats().isBoss()) {
  18. MapleStatEffect EmeraldFlower = c.getPlayer().getEffect(13111024);
  19. if (mist.getSourceSkill().getId() == 13111024) {
  20. ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.SPEED, EmeraldFlower.getZ(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
  21. }
  22. if (mist.getSourceSkill().getId() == 13120007) {
  23. ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.SPEED, EmeraldFlower.getZ(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
  24. ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.WDEF, 100 + EmeraldFlower.getW(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
  25. ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.WATK, - EmeraldFlower.getY(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }, 2000, 2500);
  32. switch (mist.isPoisonMist()) {
  33. case 1:
  34. //poison: 0 = none, 1 = poisonous, 2 = recovery
  35. final MapleCharacter owner = getCharacterById(mist.getOwnerId());
  36. final boolean pvp = owner.inPVP();
  37. poisonSchedule = tMan.register(new Runnable() {
  38. @Override
  39. public void run() {
  40. for (final MapleMapObject mo: getMapObjectsInRect(mist.getBox(), Collections.singletonList(pvp ? MapleMapObjectType.PLAYER : MapleMapObjectType.MONSTER))) {
  41. if (pvp && mist.makeChanceResult() && !((MapleCharacter) mo).hasDOT() && ((MapleCharacter) mo).getId() != mist.getOwnerId()) {
  42. ((MapleCharacter) mo).setDOT(mist.getSource().getDOT(), mist.getSourceSkill().getId(), mist.getSkillLevel());
  43. } else if (!pvp && mist.makeChanceResult() && !((MapleMonster) mo).isBuffed(MonsterStatus.POISON)) {
  44. ((MapleMonster) mo).applyStatus(owner, new MonsterStatusEffect(MonsterStatus.POISON, 1, mist.getSourceSkill().getId(), null, false), true, duration, true, mist.getSource());
  45. }
  46. }
  47. }
  48. }, 2000, 2500);
  49. break;
  50. case 4:
  51. poisonSchedule = tMan.register(new Runnable() {
  52. @Override
  53. public void run() {
  54. for (final MapleMapObject mo: getMapObjectsInRect(mist.getBox(), Collections.singletonList(MapleMapObjectType.PLAYER))) {
  55. if (mist.makeChanceResult()) {
  56. final MapleCharacter chr = ((MapleCharacter) mo);
  57. chr.addMP((int)(mist.getSource().getX() * (chr.getStat().getMaxMp() / 100.0)));
  58. }
  59. }
  60. }
  61. }, 2000, 2500);
  62. break;
  63. default:
  64. poisonSchedule = null;
  65. break;
  66. }
  67. mist.setPoisonSchedule(poisonSchedule);
  68. mist.setPoisonSchedule(poisonSchedule1);
  69. mist.setSchedule(tMan.schedule(new Runnable() {
  70. @Override
  71. public void run() {
  72. broadcastMessage(CField.removeMist(mist.getObjectId(), false));
  73. removeMapObject(mist);
  74. if (poisonSchedule != null) {
  75. poisonSchedule.cancel(false);
  76. }
  77. }
  78. }, duration));
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement