From 2da47d8353638ec5d0a5c3c474036305f372653e Mon Sep 17 00:00:00 2001 From: GregF Date: Sun, 31 Mar 2024 14:29:25 +0000 Subject: [PATCH] Implemented thieving candles on Entrana --- .../content/global/skill/thieving/Stall.java | 7 ++++-- .../skill/thieving/StallThiefPulse.java | 24 +++++++++++++++---- .../skill/thieving/ThievingOptionPlugin.java | 2 ++ Server/src/main/core/api/ContentAPI.kt | 8 ++++++- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/Server/src/main/content/global/skill/thieving/Stall.java b/Server/src/main/content/global/skill/thieving/Stall.java index bd1dcefee..efc8ed56c 100644 --- a/Server/src/main/content/global/skill/thieving/Stall.java +++ b/Server/src/main/content/global/skill/thieving/Stall.java @@ -6,6 +6,9 @@ import core.tools.RandomFunction; import java.util.*; +import static org.rs09.consts.Items.CANDLE_36; +import static org.rs09.consts.Scenery.CANDLES_19127; + /** * Represents a thieving stall. * @author Ceikry, Woahscam @@ -28,9 +31,9 @@ public enum Stall { SCIMITAR_STALL(new Integer[]{4878}, new Integer[] { 4797 }, 65, new Item[]{new Item(1323, 1)}, 100, 134,"equipment"), MAGIC_STALL(new Integer[]{4877}, new Integer[] { 4797 }, 65, new Item[]{new Item(556, 1), new Item(557, 1), new Item(554, 1), new Item(555, 1), new Item(563, 1)}, 100, 134,"equipment"), GENERAL_STALL(new Integer[]{4876}, new Integer[] { 4797 }, 5, new Item[]{new Item(1931, 1), new Item(2347, 1), new Item(590, 1)}, 16, 12,"goods"), - FOOD_STALL(new Integer[]{4875}, new Integer[] { 4797 }, 5, new Item[]{new Item(1963, 1)}, 16, 12,"food"); + FOOD_STALL(new Integer[]{4875}, new Integer[] { 4797 }, 5, new Item[]{new Item(1963, 1)}, 16, 12,"food"), //CRAFTING_STALL (Ape Atoll) shares same drops/exp as regular crafting stall - + CANDLES(new Integer[]{CANDLES_19127}, new Integer[]{CANDLES_19127}, 20, new Item[]{new Item(CANDLE_36, 1)}, 20, 0, "candles"); //Quest Stalls Rocking Out //CUSTOMS_EVIDENCE_FILES(new Integer[]{FIND OBJ ID}, FIND OBJ EMPTY ID, 63, new Item[]{new Item(1333, 1), new Item(1617, 1), new Item(1619, 1), new Item(1623, 1), new Item(385, 1), new Item(2359, 1), new Item(2357, 1), new Item(2351, 1), new Item(7114, 1), new Item(7134, 1), new Item(1025, 1), new Item(1281, 1), new Item(1325, 1), new Item(1323, 1), new Item(1321, 1), new Item(995, 300)}, 75, 100); diff --git a/Server/src/main/content/global/skill/thieving/StallThiefPulse.java b/Server/src/main/content/global/skill/thieving/StallThiefPulse.java index 7cb9b2dd8..280f2cdcb 100644 --- a/Server/src/main/content/global/skill/thieving/StallThiefPulse.java +++ b/Server/src/main/content/global/skill/thieving/StallThiefPulse.java @@ -1,6 +1,7 @@ package content.global.skill.thieving; import core.game.event.ResourceProducedEvent; +import core.game.node.entity.combat.ImpactHandler; import core.game.node.entity.skill.SkillPulse; import core.game.node.entity.skill.Skills; import core.game.node.entity.npc.NPC; @@ -9,6 +10,8 @@ import core.game.node.item.Item; import core.game.node.scenery.Scenery; import core.game.node.scenery.SceneryBuilder; import core.game.world.GameWorld; +import core.game.world.map.Direction; +import core.game.world.map.Location; import core.game.world.map.RegionManager; import core.game.world.update.flag.context.Animation; import core.tools.RandomFunction; @@ -119,6 +122,9 @@ public final class StallThiefPulse extends SkillPulse { player.getPacketDispatch().sendMessage("You steal grapes from the grape stall."); return true; } + if(stall == Stall.CANDLES) { + return true; + } player.getPacketDispatch().sendMessage("You steal " + (StringUtils.isPlusN(item.getName()) ? "an" : "a") + " " + item.getName().toLowerCase() + " from the " + stall.name().toLowerCase().replace('_',' ') + "."); player.dispatch(new ResourceProducedEvent(item.getId(), item.getAmount(), node, 0)); } @@ -127,11 +133,12 @@ public final class StallThiefPulse extends SkillPulse { @Override public void message(int type) { - switch (type) { - case 0: - player.getPacketDispatch().sendMessage("You attempt to steal some " + stall.msgItem + " from the " + stall.name().toLowerCase().replace('_',' ')); - break; + if(stall == Stall.CANDLES) { + return; } + if (type == 0) { + player.getPacketDispatch().sendMessage("You attempt to steal some " + stall.msgItem + " from the " + stall.name().toLowerCase().replace('_', ' ')); + } } /** @@ -141,6 +148,15 @@ public final class StallThiefPulse extends SkillPulse { private boolean success() { int mod = 0; if (RandomFunction.random(15 + mod) < 4) { + if(stall == Stall.CANDLES) { + stun(player, 15, false); + impact(player, 1, ImpactHandler.HitsplatType.NORMAL); + // Location playerLoc = player.getLocation(); + // forceMove(player, playerLoc, new Location(playerLoc.getX() - 1, playerLoc.getY() - 1), + // 0, 4, Direction.SOUTH_WEST, 819, null); + player.sendMessage("A higher power smites you"); + return false; + } for (NPC npc : RegionManager.getLocalNpcs(player.getLocation(), 8)) { if (!npc.getProperties().getCombatPulse().isAttacking() && (npc.getId() == 32 || npc.getId() == 2236)) { npc.sendChat("Hey! Get your hands off there!"); diff --git a/Server/src/main/content/global/skill/thieving/ThievingOptionPlugin.java b/Server/src/main/content/global/skill/thieving/ThievingOptionPlugin.java index f5d0c8a26..2d5103734 100644 --- a/Server/src/main/content/global/skill/thieving/ThievingOptionPlugin.java +++ b/Server/src/main/content/global/skill/thieving/ThievingOptionPlugin.java @@ -20,6 +20,7 @@ public class ThievingOptionPlugin extends OptionHandler { public Plugin newInstance(Object arg) throws Throwable { SceneryDefinition.setOptionHandler("steal-from", this); SceneryDefinition.setOptionHandler("steal from", this); + SceneryDefinition.setOptionHandler("steal", this); return this; } @@ -28,6 +29,7 @@ public class ThievingOptionPlugin extends OptionHandler { switch (option) { case "steal-from": case "steal from": + case "steal": player.getPulseManager().run(new StallThiefPulse(player, (Scenery) node, Stall.forObject((Scenery) node))); player.getLocks().lockInteractions(6); break; diff --git a/Server/src/main/core/api/ContentAPI.kt b/Server/src/main/core/api/ContentAPI.kt index f79e89ba7..8bd1ef83e 100644 --- a/Server/src/main/core/api/ContentAPI.kt +++ b/Server/src/main/core/api/ContentAPI.kt @@ -2847,6 +2847,10 @@ fun delayAttack(entity: Entity, ticks: Int) { } fun stun(entity: Entity, ticks: Int) { + stun(entity, ticks, true) +} + +fun stun(entity: Entity, ticks: Int, sendMessage: Boolean) { entity.walkingQueue.reset() entity.pulseManager.clear() entity.locks.lockMovement(ticks) @@ -2855,7 +2859,9 @@ fun stun(entity: Entity, ticks: Int) { if (entity is Player) { playAudio(entity.asPlayer(), Sounds.STUNNED_2727) entity.animate(Animation(424, Animator.Priority.VERY_HIGH)) - sendMessage(entity, "You have been stunned!") + if (sendMessage) { + sendMessage(entity, "You have been stunned!") + } } }