Shops will no longer charge if inventory is full

The ::shop can no longer be opened if the player is movement or interaction locked
Rogues now drop the proper coin
Rewrote the canoe station chop down as a soft script to be uninterruptible
Fixed the player locks for Rellekka trapped chest and better handled the case when inventory is full
Corrected the examine text of the armadyl plateskirt
Fixed the dialogue for lady of the lake
The player is now locked and can't interrupt stepping stone shortcuts
This commit is contained in:
Zerken
2023-09-01 12:11:16 +00:00
committed by Ryan
parent 0c6b6540f4
commit abe55aa7f3
9 changed files with 43 additions and 30 deletions
-2
View File
@@ -159,7 +159,6 @@
" /this @name looks dumb",
"AAAAAAAAAAAAAAAAAAAAAAAAHHHHHH!!!",
"como estas @name",
"Summer = always the best community manaer",
"so how about that ceikry guy",
"so how about that kermit dude",
"woah is an abusive mod",
@@ -169,7 +168,6 @@
"Where do i find partyhats?",
"Why do mobs drop boxes?",
"What exp rate do you play on @name?",
"Have you met Summer?",
"Hey @name",
"Hey @name",
"Hey @name",
+2 -2
View File
@@ -10372,13 +10372,13 @@
{
"minAmount": "15",
"weight": "4.0",
"id": "6964",
"id": "995",
"maxAmount": "15"
},
{
"minAmount": "25",
"weight": "1.0",
"id": "6964",
"id": "995",
"maxAmount": "25"
},
{
+1 -1
View File
@@ -99642,7 +99642,7 @@
{
"requirements": "{1,70}-{4,70}",
"ge_buy_limit": "2",
"examine": "A rune plateskirt in the colours of Armadyl.",
"examine": "A plateskirt of great craftsmanship.",
"rare_item": "true",
"durability": null,
"weight": "8",
@@ -1,7 +1,9 @@
package content.global.skill.agility.shortcuts
import core.api.*
import core.cache.def.impl.SceneryDefinition
import core.game.interaction.OptionHandler
import core.game.interaction.QueueStrength
import core.game.node.Node
import core.game.node.entity.impl.ForceMovement
import core.game.node.entity.player.Player
@@ -38,15 +40,18 @@ class SteppingStoneShortcut : OptionHandler() {
}
val offset = getOffset(player,finalDest)
player.debug("Offset: ${offset.first},${offset.second}")
player.pulseManager.run(object : Pulse(2){
override fun pulse(): Boolean {
lock(player, 3)
player.locks.lockTeleport(3)
queueScript(player, 2, QueueStrength.SOFT) {
val there = player.location == finalDest
if (!there) {
lock(player, 3)
player.locks.lockTeleport(3)
ForceMovement.run(player,player.location,player.location.transform(offset.first,offset.second,0), ANIMATION,10)
return@queueScript delayScript(player, 2)
}
return there
return@queueScript stopExecuting(player)
}
})
return true
}
@@ -15,6 +15,8 @@ import core.game.world.update.flag.context.Animation;
import core.plugin.Initializable;
import core.plugin.Plugin;
import static core.api.ContentAPIKt.*;
/**
* Handles the thieving of chests.
* @author Vexia
@@ -146,19 +148,19 @@ public final class ThievableChestPlugin extends OptionHandler {
player.sendMessage("It looks like this chest has already been looted.");
return;
}
player.lock();
player.animate(Animation.create(536));
if (player.getSkills().getLevel(Skills.THIEVING) < level) {
player.lock(2);
animate(player, 536, false);
lock(player, 2);
player.sendMessage("You search the chest for traps.");
player.sendMessage("You find nothing.", 1);
player.unlock();
return;
}
if (player.getInventory().freeSlots() == 0) {
player.getPacketDispatch().sendMessage("Not enough inventory space.");
return;
}
lock(player, 6);
animate(player, 536, false);
player.sendMessage("You find a trap on the chest...");
player.getImpactHandler().setDisabledTicks(6);
GameWorld.getPulser().submit(new Pulse(1, player) {
@@ -172,10 +174,10 @@ public final class ThievableChestPlugin extends OptionHandler {
break;
case 4:
player.animate(Animation.create(536));
player.faceLocation(object.getLocation());
player.sendMessage("You open the chest.");
break;
case 6:
player.unlock();
for (Item i : rewards) {
player.getInventory().add(i, player);
}
@@ -10,6 +10,7 @@ import core.game.interaction.InteractionListener
import core.game.interaction.IntType
import core.api.*
import core.game.interaction.QueueStrength
import org.rs09.consts.Sounds
class CanoeStationListener : InteractionListener {
@@ -52,15 +53,13 @@ class CanoeStationListener : InteractionListener {
player.faceLocation(CanoeUtils.getFaceLocation(player.location))
player.animate(axe.animation)
setVarbit(player,varbit,STAGE_TREE_NONINTERACTABLE)
player.pulseManager.run(object : Pulse(4){
override fun pulse(): Boolean {
queueScript(player, 4, QueueStrength.SOFT) {
player.animator.stop()
setVarbit(player,varbit,STAGE_LOG_CHOPPED)
player.packetDispatch.sendSceneryAnimation(node.asScenery().getChild(player), FALL, false)
player.unlock()
return true
return@queueScript stopExecuting(player)
}
})
return@on true
}
@@ -82,7 +82,14 @@ class TheLadyOfTheLake(player: Player? = null) : DialoguePlugin(player) {
117 -> player("Thanks!").also { stage = 10000 }
145 -> options("I seek the sword Excalibur.", "Good day.").also { stage = 150 }
150 -> when (buttonId) {
1 -> player("I seek the sword Excalibur.").also { stage = 161 }
1 -> {
player("I seek the sword Excalibur.")
if (quest.getStage(player) < 50) {
stage = 250
} else {
stage = 161
}
}
2 -> player("Good day.").also { stage = 10000 }
}
161 -> if (quest.getStage(player) == 50 || quest.getStage(player) == 60) { // they haven't proven themselves yet
+1 -1
View File
@@ -307,7 +307,7 @@ class Shop(val title: String, val stock: Array<ShopItem>, val general: Boolean =
{
if(removeItem(player, cost))
{
if (item.amount == 0 && amountInInventory(player, cost.id) == 0) {
if (item.amount == 0) {
item.amount = 1
}
if(!hasSpaceFor(player, item)) {
@@ -175,7 +175,9 @@ class MiscCommandSet : CommandSet(Privilege.ADMIN){
* Opens the credit/voting shop
*/
define("shop", Privilege.STANDARD, "", "Opens the credit shop."){ player, _ ->
player.interfaceManager.open(Component(Components.CREDIT_SHOP))
if (player.locks.isInteractionLocked || player.locks.isMovementLocked) {
sendMessage(player, "You can't open the shop right now.")
} else player.interfaceManager.open(Component(Components.CREDIT_SHOP))
}
/**