mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-12 01:21:20 -07:00
Fixed PVP equipment not fully disintegrating
Fixed tool leprechaun ignoring teleblock Fixed invalid cast in fight caves NPCs Fixed skulled deaths being treated as normal deaths outside the wildy Fixed NPC talk option interrupting combat Removed Elemental Shield from Zaff's shop Quest-locked Elemental Shield Made sure HCIM can't deiron
This commit is contained in:
parent
4a27bf689a
commit
b56b1da8cf
8 changed files with 31 additions and 7 deletions
|
|
@ -1239,7 +1239,7 @@
|
||||||
"general_store": "false",
|
"general_store": "false",
|
||||||
"id": "140",
|
"id": "140",
|
||||||
"title": "Staff Shop",
|
"title": "Staff Shop",
|
||||||
"stock": "{1379,10,100}-{1389,10,100}-{1381,10,100}-{1383,10,100}-{1385,10,100}-{1387,10,100}-{2890,10,100}"
|
"stock": "{1379,10,100}-{1389,10,100}-{1381,10,100}-{1383,10,100}-{1385,10,100}-{1387,10,100}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"npcs": "6971",
|
"npcs": "6971",
|
||||||
|
|
|
||||||
|
|
@ -261,6 +261,7 @@ public final class TzhaarFightCavesPlugin extends ActivityPlugin {
|
||||||
|
|
||||||
/* Kludge to fix this plugin overriding the base NPC death finalization
|
/* Kludge to fix this plugin overriding the base NPC death finalization
|
||||||
* resulting in not dispatching the proper NPC kill event. */
|
* resulting in not dispatching the proper NPC kill event. */
|
||||||
|
if (e instanceof NPC)
|
||||||
killer.dispatch(new NPCKillEvent(e.asNpc()));
|
killer.dispatch(new NPCKillEvent(e.asNpc()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public final class LumbridgeGuideDialogue extends DialoguePlugin {
|
||||||
if (player.getRights() == Rights.PLAYER_MODERATOR && ModeratorZone.isOpen() || player.isAdmin()) {
|
if (player.getRights() == Rights.PLAYER_MODERATOR && ModeratorZone.isOpen() || player.isAdmin()) {
|
||||||
options.add("I would like to access the P-Mod room.");
|
options.add("I would like to access the P-Mod room.");
|
||||||
}
|
}
|
||||||
if (player.getIronmanManager().isIronman()) {
|
if (player.getIronmanManager().isIronman() && player.getIronmanManager().getMode() != IronmanMode.HARDCORE) {
|
||||||
options.add("Would you like to remove Ironman Mode?");
|
options.add("Would you like to remove Ironman Mode?");
|
||||||
}
|
}
|
||||||
options(options.toArray(new String[] {}));
|
options(options.toArray(new String[] {}));
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class GraveManager {
|
||||||
if (player.getDetails().getRights() == Rights.ADMINISTRATOR && GameWorld.getSettings().isHosted()) {
|
if (player.getDetails().getRights() == Rights.ADMINISTRATOR && GameWorld.getSettings().isHosted()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (player.getSkullManager().isWilderness()) {
|
if (player.getSkullManager().isSkulled()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (player.getInventory().itemCount() + player.getEquipment().itemCount() <= (player.getPrayer().get(PrayerType.PROTECT_ITEMS) ? 4 : 3)) {
|
if (player.getInventory().itemCount() + player.getEquipment().itemCount() <= (player.getPrayer().get(PrayerType.PROTECT_ITEMS) ? 4 : 3)) {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import FarmerDialogue.Companion.FARMER_FLAG_LINES
|
||||||
import WinkinDialogue
|
import WinkinDialogue
|
||||||
import api.*
|
import api.*
|
||||||
import core.game.component.Component
|
import core.game.component.Component
|
||||||
|
import core.game.content.dialogue.FacialExpression
|
||||||
import core.game.interaction.DestinationFlag
|
import core.game.interaction.DestinationFlag
|
||||||
import core.game.interaction.MovementPulse
|
import core.game.interaction.MovementPulse
|
||||||
import core.game.node.entity.Entity
|
import core.game.node.entity.Entity
|
||||||
|
|
@ -14,6 +15,7 @@ import core.game.node.entity.npc.AbstractNPC
|
||||||
import core.game.node.entity.npc.NPC
|
import core.game.node.entity.npc.NPC
|
||||||
import core.game.node.entity.player.Player
|
import core.game.node.entity.player.Player
|
||||||
import core.game.node.entity.skill.Skills
|
import core.game.node.entity.skill.Skills
|
||||||
|
import core.game.node.entity.state.EntityState
|
||||||
import core.game.node.item.GroundItemManager
|
import core.game.node.item.GroundItemManager
|
||||||
import core.game.node.item.Item
|
import core.game.node.item.Item
|
||||||
import core.game.node.scenery.Scenery
|
import core.game.node.scenery.Scenery
|
||||||
|
|
@ -499,6 +501,10 @@ class Vinesweeper : InteractionListener, InterfaceListener, MapArea {
|
||||||
object VinesweeperTeleport {
|
object VinesweeperTeleport {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun teleport(npc: NPC, player: Player) {
|
fun teleport(npc: NPC, player: Player) {
|
||||||
|
if (player.stateManager.hasState(EntityState.TELEBLOCK)) {
|
||||||
|
sendNPCDialogue(player, npc.id, "I can't do that, you're teleblocked!", FacialExpression.OLD_ANGRY1)
|
||||||
|
return
|
||||||
|
}
|
||||||
npc.animate(Animation(437))
|
npc.animate(Animation(437))
|
||||||
npc.faceTemporary(player, 1)
|
npc.faceTemporary(player, 1)
|
||||||
npc.graphics(Graphics(108))
|
npc.graphics(Graphics(108))
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,12 @@ class ItemQuestRequirementListener : InteractionListener {
|
||||||
return@onEquip true
|
return@onEquip true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onEquip(Items.ELEMENTAL_SHIELD_2890) { player, _ ->
|
||||||
|
if (!isQuestComplete(player, "Elemental Workshop I")) {
|
||||||
|
sendMessage(player, "You must have completed Elemental Workshop I to equip this.")
|
||||||
|
return@onEquip false
|
||||||
|
}
|
||||||
|
return@onEquip true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package rs09.game.interaction.npc
|
package rs09.game.interaction.npc
|
||||||
|
|
||||||
|
import api.sendMessage
|
||||||
import core.game.content.quest.miniquest.barcrawl.BarcrawlManager
|
import core.game.content.quest.miniquest.barcrawl.BarcrawlManager
|
||||||
import core.game.content.quest.miniquest.barcrawl.BarcrawlType
|
import core.game.content.quest.miniquest.barcrawl.BarcrawlType
|
||||||
import core.game.node.entity.npc.NPC
|
import core.game.node.entity.npc.NPC
|
||||||
|
|
@ -41,6 +42,16 @@ class NPCTalkListener : InteractionListener {
|
||||||
if (!npc.getAttribute("facing_booth", false)) {
|
if (!npc.getAttribute("facing_booth", false)) {
|
||||||
npc.faceLocation(player.location)
|
npc.faceLocation(player.location)
|
||||||
}
|
}
|
||||||
|
// ---------------- THESE DIALOGUES ARE INAUTHENTIC BUT ARE COPING FOR A CORE ISSUE -----------------------
|
||||||
|
if (player.properties.combatPulse.getVictim() == npc) {
|
||||||
|
sendMessage(player, "I don't think they have any interest in talking to me right now!")
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
if (npc.inCombat()) {
|
||||||
|
sendMessage(player, "They look a bit busy at the moment.")
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------------------------------------
|
||||||
//I'm sorry for this but it was honestly the best way to do this
|
//I'm sorry for this but it was honestly the best way to do this
|
||||||
if (player.getAttribute(GC_BASE_ATTRIBUTE + ":" + GC_JOB_ORDINAL, -1) != -1) {
|
if (player.getAttribute(GC_BASE_ATTRIBUTE + ":" + GC_JOB_ORDINAL, -1) != -1) {
|
||||||
val job = GnomeCookingJob.values()[player.getAttribute(GC_BASE_ATTRIBUTE + ":" + GC_JOB_ORDINAL, -1)]
|
val job = GnomeCookingJob.values()[player.getAttribute(GC_BASE_ATTRIBUTE + ":" + GC_JOB_ORDINAL, -1)]
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class EquipmentDegrader{
|
||||||
charge = 0
|
charge = 0
|
||||||
}
|
}
|
||||||
if(this.charge <= 0) {
|
if(this.charge <= 0) {
|
||||||
val charges = itemCharges.getOrElse(this.id, { 1000 })
|
val charges = itemCharges.getOrElse(this.id) { 1000 }
|
||||||
if (set?.size!! > 2) {
|
if (set?.size!! > 2) {
|
||||||
p?.equipment?.remove(this)
|
p?.equipment?.remove(this)
|
||||||
p?.sendMessage("Your $name has degraded.")
|
p?.sendMessage("Your $name has degraded.")
|
||||||
|
|
@ -68,7 +68,7 @@ class EquipmentDegrader{
|
||||||
p?.equipment?.refresh()
|
p?.equipment?.refresh()
|
||||||
}
|
}
|
||||||
} else if (set.size == 2) {
|
} else if (set.size == 2) {
|
||||||
if(set.isLast(set.indexOf(this.id))){
|
if(set.isLast(this.id)){
|
||||||
p?.equipment?.remove(this)
|
p?.equipment?.remove(this)
|
||||||
p?.sendMessage("Your $name degrades into dust.")
|
p?.sendMessage("Your $name degrades into dust.")
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue