From f1d0cb6b4da9f74f9ce283f00cf09730d2470b31 Mon Sep 17 00:00:00 2001 From: P0nk Date: Mon, 29 Aug 2022 21:42:57 +0200 Subject: [PATCH] Make Shade killable after talking to lamp post --- scripts/npc/1052107.js | 8 +++-- .../scripting/AbstractPlayerInteraction.java | 26 +++++++++++++++++ .../reactor/ReactorActionManager.java | 29 ------------------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/scripts/npc/1052107.js b/scripts/npc/1052107.js index f7ea9439ac..b7e381f445 100644 --- a/scripts/npc/1052107.js +++ b/scripts/npc/1052107.js @@ -46,8 +46,12 @@ function action(mode, type, selection) { } if (status == 0) { - cm.sendOk("A small focus of light lighting in the immersive darkness."); - cm.dispose(); + cm.sendAcceptDecline("This is a small lamp with a switch. Would you like to turn it on?"); + return; + } else if (status == 1) { + cm.weakenAreaBoss(5090000, "You have turned the lamp on. Shade's strength will rapidly weaken due to the light."); } + + cm.dispose(); } } diff --git a/src/main/java/scripting/AbstractPlayerInteraction.java b/src/main/java/scripting/AbstractPlayerInteraction.java index 86f008b5eb..12a0f34f40 100644 --- a/src/main/java/scripting/AbstractPlayerInteraction.java +++ b/src/main/java/scripting/AbstractPlayerInteraction.java @@ -1185,4 +1185,30 @@ public class AbstractPlayerInteraction { public long getCurrentTime() { return Server.getInstance().getCurrentTime(); } + + public void weakenAreaBoss(int monsterId, String message) { + MapleMap map = c.getPlayer().getMap(); + Monster monster = map.getMonsterById(monsterId); + if (monster == null) { + return; + } + + applySealSkill(monster); + applyReduceAvoid(monster); + sendBlueNotice(map, message); + } + + private void applySealSkill(Monster monster) { + MobSkill sealSkill = MobSkillFactory.getMobSkill(157, 1); + sealSkill.applyEffect(monster); + } + + private void applyReduceAvoid(Monster monster) { + MobSkill reduceAvoidSkill = MobSkillFactory.getMobSkill(155, 2); + reduceAvoidSkill.applyEffect(monster); + } + + private void sendBlueNotice(MapleMap map, String message) { + map.dropMessage(6, message); + } } \ No newline at end of file diff --git a/src/main/java/scripting/reactor/ReactorActionManager.java b/src/main/java/scripting/reactor/ReactorActionManager.java index 9eb1ae98dc..a2095bbcbe 100644 --- a/src/main/java/scripting/reactor/ReactorActionManager.java +++ b/src/main/java/scripting/reactor/ReactorActionManager.java @@ -32,8 +32,6 @@ import scripting.AbstractPlayerInteraction; import server.ItemInformationProvider; import server.TimerManager; import server.life.LifeFactory; -import server.life.MobSkill; -import server.life.MobSkillFactory; import server.life.Monster; import server.maps.MapMonitor; import server.maps.MapleMap; @@ -344,31 +342,4 @@ public class ReactorActionManager extends AbstractPlayerInteraction { getPlayer().getMap().getBlueTeamBuffs().remove(skil); } } - - public void weakenAreaBoss(int monsterId, String message) { - MapleMap map = reactor.getMap(); - Monster monster = map.getMonsterById(monsterId); - if (monster == null) { - System.err.println("Area boss not found. Monster id " + monsterId); - return; - } - - applySealSkill(monster); - applyReduceAvoid(monster); - sendBlueNotice(map, message); - } - - private void applySealSkill(Monster monster) { - MobSkill sealSkill = MobSkillFactory.getMobSkill(157, 1); - sealSkill.applyEffect(monster); - } - - private void applyReduceAvoid(Monster monster) { - MobSkill reduceAvoidSkill = MobSkillFactory.getMobSkill(155, 2); - reduceAvoidSkill.applyEffect(monster); - } - - private void sendBlueNotice(MapleMap map, String message) { - map.dropMessage(6, message); - } } \ No newline at end of file