From 611660cbc382e1effa33f70ee2201d74a7ae7d4c Mon Sep 17 00:00:00 2001 From: Player Name Date: Sat, 13 Jul 2024 02:58:24 +0000 Subject: [PATCH] Fixed fishing trawler bugs Optimised fishing trawler reward logic --- .../FishingTrawlerInteractionHandler.kt | 11 +++++------ .../minigame/fishingtrawler/FishingTrawlerSession.kt | 4 ++++ .../content/minigame/fishingtrawler/TrawlerLoot.kt | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerInteractionHandler.kt b/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerInteractionHandler.kt index 8a74870f1..d619d6539 100644 --- a/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerInteractionHandler.kt +++ b/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerInteractionHandler.kt @@ -74,8 +74,8 @@ class FishingTrawlerInteractionHandler : InteractionListener { } on(REWARD_NET, IntType.SCENERY, "inspect"){ player, _ -> - val session: FishingTrawlerSession? = player.getAttribute("ft-session",null) - if(session == null || session.boatSank){ + val rolls = player.getAttribute("/save:ft-rolls", 0) + if (rolls == 0) { player.dialogueInterpreter.sendDialogues(player, core.game.dialogue.FacialExpression.GUILTY,"I'd better not go stealing other people's fish.") return@on true } @@ -162,9 +162,8 @@ class NetLootDialogue(player: Player? = null): core.game.dialogue.DialoguePlugin } override fun open(vararg args: Any?): Boolean { - session = player.getAttribute("ft-session",null) - if(session == null) return false - rolls = ceil(session!!.fishAmount / session!!.players.size.toDouble()).toInt() + rolls = player.getAttribute("/save:ft-rolls", 0) + if (rolls == 0) return false player.dialogueInterpreter.sendOptions("Skip Junk Items?","Yes","No") stage = 0 return true @@ -177,7 +176,7 @@ class NetLootDialogue(player: Player? = null): core.game.dialogue.DialoguePlugin 2 -> TrawlerLoot.addLootAndMessage(player, level, rolls, false) } player.skills.addExperience(Skills.FISHING,(((0.015 * player.skills.getLevel(Skills.FISHING))) * player.skills.getLevel(Skills.FISHING)) * rolls) - player.removeAttribute("ft-session") + player.removeAttribute("ft-rolls") end() return true } diff --git a/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerSession.kt b/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerSession.kt index a8e4395e2..3cabb8d72 100644 --- a/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerSession.kt +++ b/Server/src/main/content/minigame/fishingtrawler/FishingTrawlerSession.kt @@ -26,6 +26,7 @@ import core.game.system.command.sets.STATS_BASE import core.tools.secondsToTicks import core.tools.ticksToSeconds import java.util.concurrent.TimeUnit +import kotlin.math.ceil import kotlin.random.Random @@ -153,6 +154,9 @@ class FishingTrawlerSession(val activity: FishingTrawlerActivity? = null) : MapA player.interfaceManager.closeOverlay() player.properties.teleportLocation = Location.create(2666, 3162, 0) player.incrementAttribute("/save:$STATS_BASE:$FISHING_TRAWLER_GAMES_WON") + val rolls = ceil(session.fishAmount / session.players.size.toDouble()).toInt() + player.removeAttribute("ft-session") + player.setAttribute("/save:ft-rolls", rolls) clearLogoutListener(player, "ft-logout") } session.zone.unregister(getRegionBorders(session.region.id)) diff --git a/Server/src/main/content/minigame/fishingtrawler/TrawlerLoot.kt b/Server/src/main/content/minigame/fishingtrawler/TrawlerLoot.kt index 70ff89220..8511a1810 100644 --- a/Server/src/main/content/minigame/fishingtrawler/TrawlerLoot.kt +++ b/Server/src/main/content/minigame/fishingtrawler/TrawlerLoot.kt @@ -56,6 +56,7 @@ object TrawlerLoot { */ @JvmStatic fun addLootAndMessage(player: Player, fishLevel: Int, rolls: Int, skipJunk: Boolean) { + if (rolls < 1) return val frequencyList = listOf>(HashMap(), HashMap(), HashMap()) getLoot(fishLevel, rolls, skipJunk).forEach { if (!player.bank.add(it)) GroundItemManager.create(it, player)