Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public final void spawnMist(final MapleMist mist, final int duration, boolean fake) {
- spawnAndAddRangedMapObject(mist, new DelayedPacketCreation() {
- @Override
- public void sendPackets(MapleClient c) {
- mist.sendSpawnData(c);
- }
- });
- final TimerManager tMan = TimerManager.getInstance();
- final ScheduledFuture < ? > poisonSchedule;
- final ScheduledFuture < ? > poisonSchedule1;
- poisonSchedule1 = tMan.register(new Runnable() {
- @Override
- public void run() {
- for (final MapleMapObject mo : c.getPlayer().getMap().getMapObjectsInRect(mist.getBox(), Collections.singletonList(MapleMapObjectType.MONSTER))) {
- if (mist.makeChanceResult()) {
- if (!((MapleMonster) mo).getStats().isBoss()) {
- MapleStatEffect EmeraldFlower = c.getPlayer().getEffect(13111024);
- if (mist.getSourceSkill().getId() == 13111024) {
- ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.SPEED, EmeraldFlower.getZ(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
- }
- if (mist.getSourceSkill().getId() == 13120007) {
- ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.SPEED, EmeraldFlower.getZ(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
- ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.WDEF, 100 + EmeraldFlower.getW(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
- ((MapleMonster) mo).applyStatus(c.getPlayer(), new MonsterStatusEffect(MonsterStatus.WATK, - EmeraldFlower.getY(), mist.getSourceSkill().getId(), null, false), false, duration, false, mist.getSource());
- }
- }
- }
- }
- }
- }, 2000, 2500);
- switch (mist.isPoisonMist()) {
- case 1:
- //poison: 0 = none, 1 = poisonous, 2 = recovery
- final MapleCharacter owner = getCharacterById(mist.getOwnerId());
- final boolean pvp = owner.inPVP();
- poisonSchedule = tMan.register(new Runnable() {
- @Override
- public void run() {
- for (final MapleMapObject mo: getMapObjectsInRect(mist.getBox(), Collections.singletonList(pvp ? MapleMapObjectType.PLAYER : MapleMapObjectType.MONSTER))) {
- if (pvp && mist.makeChanceResult() && !((MapleCharacter) mo).hasDOT() && ((MapleCharacter) mo).getId() != mist.getOwnerId()) {
- ((MapleCharacter) mo).setDOT(mist.getSource().getDOT(), mist.getSourceSkill().getId(), mist.getSkillLevel());
- } else if (!pvp && mist.makeChanceResult() && !((MapleMonster) mo).isBuffed(MonsterStatus.POISON)) {
- ((MapleMonster) mo).applyStatus(owner, new MonsterStatusEffect(MonsterStatus.POISON, 1, mist.getSourceSkill().getId(), null, false), true, duration, true, mist.getSource());
- }
- }
- }
- }, 2000, 2500);
- break;
- case 4:
- poisonSchedule = tMan.register(new Runnable() {
- @Override
- public void run() {
- for (final MapleMapObject mo: getMapObjectsInRect(mist.getBox(), Collections.singletonList(MapleMapObjectType.PLAYER))) {
- if (mist.makeChanceResult()) {
- final MapleCharacter chr = ((MapleCharacter) mo);
- chr.addMP((int)(mist.getSource().getX() * (chr.getStat().getMaxMp() / 100.0)));
- }
- }
- }
- }, 2000, 2500);
- break;
- default:
- poisonSchedule = null;
- break;
- }
- mist.setPoisonSchedule(poisonSchedule);
- mist.setPoisonSchedule(poisonSchedule1);
- mist.setSchedule(tMan.schedule(new Runnable() {
- @Override
- public void run() {
- broadcastMessage(CField.removeMist(mist.getObjectId(), false));
- removeMapObject(mist);
- if (poisonSchedule != null) {
- poisonSchedule.cancel(false);
- }
- }
- }, duration));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement