mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-09 16:45:44 -07:00
Implemented thieving candles on Entrana
This commit is contained in:
parent
5c977c0522
commit
2da47d8353
4 changed files with 34 additions and 7 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Scenery> {
|
|||
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,10 +133,11 @@ public final class StallThiefPulse extends SkillPulse<Scenery> {
|
|||
|
||||
@Override
|
||||
public void message(int type) {
|
||||
switch (type) {
|
||||
case 0:
|
||||
if(stall == Stall.CANDLES) {
|
||||
return;
|
||||
}
|
||||
if (type == 0) {
|
||||
player.getPacketDispatch().sendMessage("You attempt to steal some " + stall.msgItem + " from the " + stall.name().toLowerCase().replace('_', ' '));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -141,6 +148,15 @@ public final class StallThiefPulse extends SkillPulse<Scenery> {
|
|||
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!");
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ public class ThievingOptionPlugin extends OptionHandler {
|
|||
public Plugin<Object> 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;
|
||||
|
|
|
|||
|
|
@ -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,9 +2859,11 @@ fun stun(entity: Entity, ticks: Int) {
|
|||
if (entity is Player) {
|
||||
playAudio(entity.asPlayer(), Sounds.STUNNED_2727)
|
||||
entity.animate(Animation(424, Animator.Priority.VERY_HIGH))
|
||||
if (sendMessage) {
|
||||
sendMessage(entity, "You have been stunned!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun isStunned(entity: Entity) : Boolean {
|
||||
return entity.clocks[Clocks.STUN] >= getWorldTicks()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue