diff --git a/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeInterfaceListeners.kt b/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeInterfaceListeners.kt index e45840c1c..3dc553508 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeInterfaceListeners.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeInterfaceListeners.kt @@ -8,6 +8,7 @@ import core.game.node.entity.player.link.diary.DiaryType import core.game.node.entity.skill.Skills import core.game.node.entity.skill.gather.SkillingTool import core.game.system.task.Pulse +import core.game.world.update.flag.context.Animation import core.net.packet.PacketRepository import core.net.packet.context.MinimapStateContext import core.net.packet.out.MinimapState @@ -88,6 +89,12 @@ class CanoeInterfaceListeners : InterfaceListener() { val dest = CanoeUtils.getDestinationFromButtonID(buttonID) val destIndex = CanoeUtils.getStationIndex(dest) val arrivalMessage = CanoeUtils.getNameByIndex(destIndex) + val stationIndex = CanoeUtils.getStationIndex(player.location) + val interfaceAnimationId = CanoeUtils.getTravelAnimation(stationIndex,destIndex) + var animDuration = 15 + if (interfaceAnimationId != null) { + animDuration = Animation(interfaceAnimationId).duration + } val varbit = player.getAttribute("canoe-varbit",VarbitDefinition.forObjectID(0)) if (player.familiarManager.hasFamiliar()) { player.sendMessage("You can't take a follower on a canoe.") @@ -102,18 +109,21 @@ class CanoeInterfaceListeners : InterfaceListener() { 0 -> { player.interfaceManager.openOverlay(Component(Components.FADE_TO_BLACK_120)) player.interfaceManager.open(Component(Components.CANOE_TRAVEL_758)) + if (interfaceAnimationId != null) { + ContentAPI.animateInterface(player, Components.CANOE_TRAVEL_758, 3, interfaceAnimationId) } + } 2 -> { PacketRepository.send(MinimapState::class.java, MinimapStateContext(player, 2)) player.interfaceManager.hideTabs(0, 1, 2, 3, 4, 5, 6, 11, 12) } - 15 -> player.properties.teleportLocation = dest - 16 -> { + animDuration -> player.properties.teleportLocation = dest + animDuration+1 -> { player.interfaceManager.close(Component(Components.CANOE_TRAVEL_758)) player.interfaceManager.closeOverlay() player.interfaceManager.openOverlay(Component(Components.FADE_FROM_BLACK_170)) } - 18 -> { + animDuration+3 -> { player.unlock() player.interfaceManager.restoreTabs() PacketRepository.send(MinimapState::class.java, MinimapStateContext(player, 0)) diff --git a/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeUtils.kt b/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeUtils.kt index ba3113972..d5d07f6c6 100644 --- a/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeUtils.kt +++ b/Server/src/main/kotlin/rs09/game/interaction/object/canoestation/CanoeUtils.kt @@ -39,6 +39,58 @@ object CanoeUtils { } } + fun getTravelAnimation(stationId: Int, destId: Int): Int? { + val fromLumbridge = mapOf( + 4 to 9887, + 3 to 9888, + 2 to 9889, + 1 to 9890 + ) + val fromChampions = mapOf( + 4 to 9891, + 3 to 9892, + 2 to 9893, + 0 to 9906 + ) + val fromBarbarian = mapOf( + 4 to 9894, + 3 to 9895, + 1 to 9905, + 0 to 9906 + ) + val fromEdge = mapOf( + 4 to 9896, + 2 to 9903, + 1 to 9902, + 0 to 9901 + ) + + val fromWilderness = mapOf( + 3 to 9900, + 2 to 9899, + 1 to 9898, + 0 to 9897 + ) + when(stationId){ + 0 -> { + return fromLumbridge[destId] + } + 1 -> { + return fromChampions[destId] + } + 2 -> { + return fromBarbarian[destId] + } + 3 -> { + return fromEdge[destId] + } + 4 -> { + return fromWilderness[destId] + } + } + return 0 + } + fun getShapeAnimation(axe: SkillingTool): Animation{ when(axe){ SkillingTool.BRONZE_AXE -> return Animation(6744); diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/MiscCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/MiscCommandSet.kt index be7ff6000..206ed0a92 100644 --- a/Server/src/main/kotlin/rs09/game/system/command/sets/MiscCommandSet.kt +++ b/Server/src/main/kotlin/rs09/game/system/command/sets/MiscCommandSet.kt @@ -12,8 +12,10 @@ import core.game.node.scenery.Scenery import core.game.node.entity.player.Player import core.game.node.entity.player.info.Rights import core.game.node.entity.skill.Skills +import core.game.node.entity.skill.agility.AgilityHandler import core.game.node.item.Item import core.game.system.communication.CommunicationInfo +import core.game.system.task.Pulse import core.game.world.map.RegionManager import core.game.world.map.build.DynamicRegion import core.plugin.Initializable @@ -35,10 +37,12 @@ import java.awt.Toolkit import java.awt.datatransfer.StringSelection import java.util.* import kotlin.collections.ArrayList +import kotlin.random.Random @Initializable class MiscCommandSet : CommandSet(Command.Privilege.ADMIN){ override fun defineCommands() { + var i = 6500; /** * Toggles debug mode @@ -131,6 +135,35 @@ class MiscCommandSet : CommandSet(Command.Privilege.ADMIN){ player.interfaceManager.open(Component(Components.CREDIT_SHOP)) } + // Cropster Testing Interface Animations + // boat is 3?? + // not 1-400 + //600 ish is promissing + // 5100 is travel + + define("cc", Command.Privilege.STANDARD) { player, args -> + + if (args.size < 2){ + ContentAPI.submitIndividualPulse(player, object : Pulse(2){ + override fun pulse(): Boolean { + while (i < 100000){ + player.interfaceManager.open(Component(Components.CANOE_TRAVEL_758)) + ContentAPI.animateInterface(player, Components.CANOE_TRAVEL_758, 3, i) + player.sendMessage(i.toString()) + i += 1 + return false + } + return true + } + }) + } + else{ + i = args[1].toInt() + player.interfaceManager.open(Component(Components.CANOE_TRAVEL_758)) + ContentAPI.animateInterface(player, Components.CANOE_TRAVEL_758, 3, args[1].toInt()) + } + } + /** * Shows the player a list of currently active GE sell offers */