From bd5ce18fc19f07b9d0630d6b80c89e6252abdca3 Mon Sep 17 00:00:00 2001 From: Sam Marder Date: Sat, 30 May 2026 14:22:50 +0000 Subject: [PATCH] Fixed Cyclops defence animation Fixed Zombie animations in Ardy sewers Fixed Ghost combat animations in Draynor Manor Fixed potion drinking animation and add two tick potion text delay Fixed Gnome death animation in Khazard Battlefield Fixed Gnome animations in Tree Gnome Village Removed inauthentic + broken Vinesweeper teleport animation --- Server/data/configs/npc_configs.json | 54 ++++++++++++------- .../minigame/vinesweeper/Vinesweeper.kt | 3 +- .../src/main/core/game/consumable/Potion.java | 26 +++++---- 3 files changed, 53 insertions(+), 30 deletions(-) diff --git a/Server/data/configs/npc_configs.json b/Server/data/configs/npc_configs.json index 96b4883b6..816287ac7 100644 --- a/Server/data/configs/npc_configs.json +++ b/Server/data/configs/npc_configs.json @@ -1264,12 +1264,12 @@ }, { "examine": "Like a mini man!", - "melee_animation": "422", - "range_animation": "422", + "melee_animation": "190", + "range_animation": "190", "magic_level": "1", - "defence_animation": "404", + "defence_animation": "193", "magic_animation": "422", - "death_animation": "9055", + "death_animation": "196", "name": "Gnome", "defence_level": "1", "safespot": null, @@ -1281,12 +1281,12 @@ }, { "examine": "Like a mini man!", - "melee_animation": "422", - "range_animation": "422", + "melee_animation": "190", + "range_animation": "190", "magic_level": "1", - "defence_animation": "404", + "defence_animation": "193", "magic_animation": "422", - "death_animation": "9055", + "death_animation": "196", "name": "Gnome", "defence_level": "1", "safespot": null, @@ -1298,12 +1298,12 @@ }, { "examine": "Like a mini man!", - "melee_animation": "422", - "range_animation": "422", + "melee_animation": "190", + "range_animation": "190", "magic_level": "1", - "defence_animation": "404", + "defence_animation": "193", "magic_animation": "422", - "death_animation": "9055", + "death_animation": "196", "name": "Gnome", "defence_level": "1", "safespot": null, @@ -1907,17 +1907,17 @@ }, { "examine": "Eeek! A ghost!", - "melee_animation": "5540", + "melee_animation": "5532", "range_animation": "0", "combat_audio": "436,439,438", "attack_speed": "4", "magic_level": "1", "respawn_delay": "40", - "defence_animation": "5541", + "defence_animation": "5533", "weakness": "5", "slayer_exp": "25", "magic_animation": "0", - "death_animation": "5542", + "death_animation": "5534", "name": "Ghost", "defence_level": "18", "safespot": null, @@ -2182,11 +2182,11 @@ "attack_speed": "4", "magic_level": "1", "respawn_delay": "25", - "defence_animation": "360", + "defence_animation": "4651", "weakness": "8", "slayer_exp": "75", "magic_animation": "359", - "death_animation": "361", + "death_animation": "4653", "name": "Cyclops", "defence_level": "35", "safespot": null, @@ -47336,12 +47336,15 @@ "attack_level": "1" }, { + "combat_audio": "931,923,922", + "melee_animation": "5578", + "defence_animation": "5567", "slayer_exp": "30", + "death_animation": "5569", "name": "Zombie", "defence_level": "1", "safespot": null, "lifepoints": "40", - "combat_audio": "931,923,922", "strength_level": "1", "id": "5394", "range_level": "1", @@ -76045,8 +76048,21 @@ "id": "2239" }, { + "examine": "Like a mini man!", + "combat_style": "1", + "force_talk": "", + "melee_animation": "190", + "attack_speed": "4", + "respawn_delay": "60", + "defence_animation": "193", + "death_animation": "196", "name": "Gnome", - "id": "2251" + "defence_level": "1", + "lifepoints": "3", + "strength_level": "1", + "id": "2251", + "range_level": "1", + "attack_level": "1" }, { "name": "Crow", diff --git a/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt b/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt index 9fe119605..04fe7686a 100644 --- a/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt +++ b/Server/src/main/content/minigame/vinesweeper/Vinesweeper.kt @@ -523,8 +523,7 @@ class Vinesweeper : InteractionListener, InterfaceListener, MapArea { sendNPCDialogue(player, npc.id, "I can't do that, you're teleblocked!", core.game.dialogue.FacialExpression.OLD_ANGRY1) return } - npc.animate(Animation(437)) - npc.faceTemporary(player, 1) + // https://youtu.be/61jVjmXf8tU?t=45 npc.graphics(Graphics(108)) player.lock() playAudio(player, Sounds.CURSE_ALL_125, 0, 1) diff --git a/Server/src/main/core/game/consumable/Potion.java b/Server/src/main/core/game/consumable/Potion.java index 60afb00c3..89912d9f1 100644 --- a/Server/src/main/core/game/consumable/Potion.java +++ b/Server/src/main/core/game/consumable/Potion.java @@ -1,12 +1,16 @@ package core.game.consumable; import content.data.consumables.Consumables; +import core.game.interaction.QueueStrength; import core.game.node.entity.player.Player; import core.game.node.entity.player.link.audio.Audio; import core.game.node.item.Item; +import core.game.system.task.Pulse; +import core.game.world.GameWorld; +import core.game.world.update.flag.context.Animation; import org.rs09.consts.Sounds; -import static core.api.ContentAPIKt.playAudio; +import static core.api.ContentAPIKt.*; public class Potion extends Drink { @@ -15,7 +19,7 @@ public class Potion extends Drink { private static final Audio SOUND = new Audio(2401, 1, 1); public Potion(final int[] ids, final ConsumableEffect effect, final String... messages) { - super(ids, effect, messages); + super(ids, effect, new Animation(829), messages); } @Override @@ -55,13 +59,17 @@ public class Potion extends Drink { } final int dosesLeft = ids.length - consumedDoses; player.getPacketDispatch().sendMessage("You drink some of your " + getFormattedName(item) + "."); - if (dosesLeft > 1) { - player.getPacketDispatch().sendMessage("You have " + dosesLeft + " doses of potion left."); - } else if (dosesLeft == 1) { - player.getPacketDispatch().sendMessage("You have 1 dose of potion left."); - } else { - player.getPacketDispatch().sendMessage("You have finished your potion."); - } + // Remaining dosages message should be delayed - https://youtu.be/n6CCf4Rj8Lg?t=79 + queueScript(player, 2, QueueStrength.SOFT, false, (Integer stage) -> { + if (dosesLeft > 1) { + player.getPacketDispatch().sendMessage("You have " + dosesLeft + " doses of potion left."); + } else if (dosesLeft == 1) { + player.getPacketDispatch().sendMessage("You have 1 dose of potion left."); + } else { + player.getPacketDispatch().sendMessage("You have finished your potion."); + } + return stopExecuting(player); + }); } public int getDose(Item potion){