diff --git a/Server/data/configs/drop_tables.json b/Server/data/configs/drop_tables.json index bd39837e2..cbfc65315 100644 --- a/Server/data/configs/drop_tables.json +++ b/Server/data/configs/drop_tables.json @@ -15934,25 +15934,13 @@ { "minAmount": "1", "weight": "50.0", - "id": "1069", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "25.0", - "id": "1197", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "5.0", - "id": "1161", + "id": "1365", "maxAmount": "1" }, { "minAmount": "1", "weight": "50.0", - "id": "1365", + "id": "1069", "maxAmount": "1" }, { @@ -15967,6 +15955,24 @@ "id": "1243", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "25.0", + "id": "1197", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "5.0", + "id": "1145", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "25.0", + "id": "1161", + "maxAmount": "1" + }, { "minAmount": "1", "weight": "25.0", @@ -15977,7 +15983,7 @@ "minAmount": "75", "weight": "50.0", "id": "555", - "maxAmount": "150" + "maxAmount": "75" }, { "minAmount": "37", @@ -15987,52 +15993,34 @@ }, { "minAmount": "15", - "weight": "50.0", + "weight": "25.0", "id": "561", "maxAmount": "15" }, { "minAmount": "30", - "weight": "50.0", + "weight": "25.0", "id": "561", "maxAmount": "30" }, + { + "minAmount": "75", + "weight": "5.0", + "id": "561", + "maxAmount": "75" + }, { "minAmount": "3", "weight": "50.0", "id": "563", "maxAmount": "3" }, - { - "minAmount": "1", - "weight": "50.0", - "id": "209", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "50.0", - "id": "205", - "maxAmount": "1" - }, { "minAmount": "1", "weight": "25.0", "id": "199", "maxAmount": "1" }, - { - "minAmount": "1", - "weight": "25.0", - "id": "211", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "25.0", - "id": "215", - "maxAmount": "1" - }, { "minAmount": "1", "weight": "25.0", @@ -16045,18 +16033,42 @@ "id": "203", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "25.0", + "id": "205", + "maxAmount": "1" + }, { "minAmount": "1", "weight": "25.0", "id": "207", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "25.0", + "id": "209", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "25.0", + "id": "211", + "maxAmount": "1" + }, { "minAmount": "1", "weight": "25.0", "id": "213", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "25.0", + "id": "215", + "maxAmount": "1" + }, { "minAmount": "1", "weight": "25.0", @@ -16095,13 +16107,13 @@ }, { "minAmount": "1", - "weight": "5.0", + "weight": "15.5", "id": "31", "maxAmount": "1" }, { "minAmount": "1", - "weight": "100.0", + "weight": "150.0", "id": "0", "maxAmount": "1" } @@ -33764,50 +33776,38 @@ "main": [ { "minAmount": "9", - "weight": "1.0", + "weight": "0.665", "id": "6522", - "maxAmount": "9" - }, - { - "minAmount": "11", - "weight": "1.0", - "id": "6522", - "maxAmount": "11" + "maxAmount": "19" }, { "minAmount": "1", - "weight": "1.0", + "weight": "0.665", "id": "6523", "maxAmount": "1" }, { "minAmount": "1", - "weight": "1.0", + "weight": "0.665", "id": "6525", "maxAmount": "1" }, { "minAmount": "1", - "weight": "1.0", - "id": "6524", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "1.0", + "weight": "0.665", "id": "6568", "maxAmount": "1" }, { "minAmount": "1", "weight": "25.0", - "id": "161", + "id": "149", "maxAmount": "1" }, { "minAmount": "1", "weight": "25.0", - "id": "149", + "id": "161", "maxAmount": "1" }, { @@ -33820,13 +33820,25 @@ "minAmount": "100", "weight": "50.0", "id": "6529", - "maxAmount": "1500" + "maxAmount": "2000" }, { - "minAmount": "2", + "minAmount": "15000", + "weight": "0.665", + "id": "6529", + "maxAmount": "15000" + }, + { + "minAmount": "1", "weight": "50.0", "id": "12168", - "maxAmount": "2" + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "50.0", + "id": "7054", + "maxAmount": "1" }, { "minAmount": "1", @@ -33845,6 +33857,12 @@ "weight": "5.0", "id": "31", "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "50.0", + "id": "0", + "maxAmount": "1" } ] }, @@ -33856,10 +33874,22 @@ "main": [ { "minAmount": "1", - "weight": "5.0", + "weight": "0.685", "id": "6528", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "0.685", + "id": "6524", + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "0.685", + "id": "6568", + "maxAmount": "1" + }, { "minAmount": "1", "weight": "5.0", @@ -33867,21 +33897,15 @@ "maxAmount": "1" }, { - "minAmount": "1", - "weight": "1.0", - "id": "6524", - "maxAmount": "1" - }, - { - "minAmount": "1", - "weight": "1.0", - "id": "6568", - "maxAmount": "1" + "minAmount": "12", + "weight": "5.0", + "id": "562", + "maxAmount": "12" }, { "minAmount": "1", "weight": "25.0", - "id": "167", + "id": "149", "maxAmount": "1" }, { @@ -33890,17 +33914,29 @@ "id": "161", "maxAmount": "1" }, + { + "minAmount": "1", + "weight": "25.0", + "id": "167", + "maxAmount": "1" + }, { "minAmount": "100", "weight": "50.0", "id": "6529", - "maxAmount": "1900" + "maxAmount": "2000" }, { "minAmount": "1", "weight": "50.0", "id": "12168", - "maxAmount": "2" + "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "50.0", + "id": "7054", + "maxAmount": "1" }, { "minAmount": "1", @@ -33908,35 +33944,23 @@ "id": "379", "maxAmount": "1" }, - { - "minAmount": "1", - "weight": "25.0", - "id": "7054", - "maxAmount": "1" - }, - { - "minAmount": "2", - "weight": "25.0", - "id": "7054", - "maxAmount": "2" - }, { "minAmount": "1", "weight": "25.0", "id": "9194", - "maxAmount": "4" - }, - { - "minAmount": "5", - "weight": "5.0", - "id": "7936", - "maxAmount": "5" + "maxAmount": "3" }, { "minAmount": "1", "weight": "5.0", "id": "31", "maxAmount": "1" + }, + { + "minAmount": "1", + "weight": "50.0", + "id": "0", + "maxAmount": "1" } ] }, diff --git a/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java b/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java index 742e75021..b81f26dd6 100644 --- a/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java +++ b/Server/src/main/java/core/game/node/entity/skill/agility/AgilityHandler.java @@ -1,5 +1,7 @@ package core.game.node.entity.skill.agility; +import api.ContentAPI; +import core.game.node.entity.player.link.TeleportManager; import core.game.node.entity.skill.Skills; import core.game.interaction.MovementPulse; import core.game.node.entity.combat.ImpactHandler.HitsplatType; @@ -100,21 +102,26 @@ public final class AgilityHandler { */ public static void fail(final Player player, int delay, final Location dest, Animation anim, final int hit, final String message) { if (anim != null) { - player.animate(anim); + ContentAPI.animate(player, anim, true); } - GameWorld.getPulser().submit(new Pulse(anim.getDefinition().getDurationTicks(), player) { + ContentAPI.submitWorldPulse(new Pulse(ContentAPI.animationDuration(anim), player) { + boolean dmg = false; @Override public boolean pulse() { - player.getProperties().setTeleportLocation(dest); - player.animate(Animation.RESET); - if (hit > 0) { - player.getImpactHandler().setDisabledTicks(0); - player.getImpactHandler().manualHit(player, hit, HitsplatType.NORMAL); + ContentAPI.teleport(player, dest, TeleportManager.TeleportType.INSTANT); + ContentAPI.animate(player, Animation.RESET, true); + if(!dmg) { + if (hit > 0) { + player.getImpactHandler().setDisabledTicks(0); + ContentAPI.impact(player, hit, HitsplatType.NORMAL); + } + if (message != null) { + ContentAPI.sendMessage(player, message); + } + dmg = true; } - if (message != null) { - player.getPacketDispatch().sendMessage(message); - } - return true; + setDelay(0); + return player.getLocation().equals(dest); } }); } diff --git a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java index e9e86aa25..347939349 100644 --- a/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java +++ b/Server/src/main/java/core/game/node/entity/skill/slayer/dungeon/AncientCavern.java @@ -1,5 +1,6 @@ package core.game.node.entity.skill.slayer.dungeon; +import api.ContentAPI; import core.cache.def.impl.ObjectDefinition; import core.game.component.CloseEvent; import core.game.component.Component; @@ -67,6 +68,7 @@ public final class AncientCavern extends MapZone implements Plugin { @Override public boolean handle(final Player player, Node node, String option) { + ContentAPI.lock(player, 30); AgilityHandler.forceWalk(player, -1, player.getLocation(), player.getLocation().transform(0, -6, 0), Animation.create(6723), 10, 0.0, null); GameWorld.getPulser().submit(new Pulse(1, player) { int count; @@ -83,6 +85,9 @@ public final class AncientCavern extends MapZone implements Plugin { player.getInterfaceManager().closeOverlay(); player.getProperties().setTeleportLocation(Location.create(1763, 5365, 1)); player.getPacketDispatch().sendMessages("You dive into the swirling maelstorm of the whirlpool.", "You are swirled beneath the water, the darkness and pressure are overwhelming.", "Mystical forces guide you into a cavern below the whirlpool."); + break; + case 8: + ContentAPI.unlock(player); return true; } return false; diff --git a/Server/src/main/kotlin/api/ContentAPI.kt b/Server/src/main/kotlin/api/ContentAPI.kt index 7a185f1f6..1c54f0737 100644 --- a/Server/src/main/kotlin/api/ContentAPI.kt +++ b/Server/src/main/kotlin/api/ContentAPI.kt @@ -767,7 +767,8 @@ object ContentAPI { */ @JvmStatic fun teleport(entity: Entity, loc: Location, type: TeleportManager.TeleportType = TeleportManager.TeleportType.INSTANT){ - entity.teleporter.send(loc,type) + if(type == TeleportManager.TeleportType.INSTANT) entity.properties.teleportLocation = loc + else entity.teleporter.send(loc,type) } /** diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt index 2d1d69121..2ddb3bd7d 100644 --- a/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt +++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/agility/WildernessCourse.kt @@ -1,5 +1,6 @@ package rs09.game.node.entity.skill.agility +import api.ContentAPI import core.cache.def.impl.ObjectDefinition import core.game.content.global.action.DoorActionHandler import core.game.node.Node @@ -176,26 +177,26 @@ class WildernessCourse * @param object the object. */ private fun handleSteppingStones(player: Player, `object`: Scenery) { - player.locks.lock() + ContentAPI.lock(player, 50) val fail = AgilityHandler.hasFailed(player, 1, 0.3) - player.addExtension(LogoutTask::class.java, LocationLogoutTask(12, player.location)) - GameWorld.Pulser.submit(object : Pulse(2, player) { + val origLoc = player.location + ContentAPI.registerLogoutListener(player, "steppingstone"){p -> + ContentAPI.teleport(p, origLoc) + } + ContentAPI.submitWorldPulse(object : Pulse(2, player){ var counter = 0 override fun pulse(): Boolean { if (counter == 3 && fail) { AgilityHandler.fail(player, -1, Location.create(3001, 3963, 0), Animation.create(771), (player.skills.lifepoints * 0.26).toInt(), "...You lose your footing and fall into the lava.") return true } - AgilityHandler.forceWalk(player, if (counter == 5) 2 else -1, player.location, player.location.transform(-1, 0, 0), Animation.create(741), 10, if (counter == 5) 20.0 else 0.toDouble(), if (counter != 0) null else "You carefully start crossing the stepping stones...") + AgilityHandler.forceWalk(player, if (counter == 5) 2 else -1, player.location, player.location.transform(-1, 0, 0), Animation.create(741), 10, if (counter == 5) 20.0 else 0.0, if (counter != 0) null else "You carefully start crossing the stepping stones...") if(++counter == 6){ - player.unlock() + ContentAPI.unlock(player) + ContentAPI.clearLogoutListener(player, "steppingstone") } return counter == 6 } - - override fun stop() { - super.stop() - } }) }