Big bass, shark, and swordfish are now obtainable from fishing

The message for catching shark now ends with an authentic exclamation mark
The fishing skill cape perk now logs catching a second fish in player stats
This commit is contained in:
Player Name 2023-10-27 12:37:13 +00:00 committed by Ryan
parent 4942ae0079
commit a74583b13b
2 changed files with 23 additions and 3 deletions

View file

@ -36,10 +36,14 @@ enum class Fish(val id: Int, val level: Int, val experience: Double, val lowChan
companion object { companion object {
val fishMap: HashMap<Int, Fish> = HashMap() val fishMap: HashMap<Int, Fish> = HashMap()
val bigFishMap: HashMap<Fish, Int> = HashMap()
init { init {
for(fish in values()) { for(fish in values()) {
fishMap[fish.id] = fish fishMap[fish.id] = fish
} }
bigFishMap[Fish.BASS] = Items.BIG_BASS_7989
bigFishMap[Fish.SWORDFISH] = Items.BIG_SWORDFISH_7991
bigFishMap[Fish.SHARK] = Items.BIG_SHARK_7993
} }
@JvmStatic @JvmStatic
@ -47,7 +51,10 @@ enum class Fish(val id: Int, val level: Int, val experience: Double, val lowChan
return fishMap[item.id] return fishMap[item.id]
} }
@JvmStatic
fun getBigFish(fish: Fish) : Int? {
return bigFishMap[fish]
}
} }
fun getSuccessChance(level: Int): Double { fun getSuccessChance(level: Int): Double {

View file

@ -19,6 +19,7 @@ import core.game.node.entity.skill.Skills
import core.game.node.item.Item import core.game.node.item.Item
import core.game.system.command.sets.STATS_BASE import core.game.system.command.sets.STATS_BASE
import core.game.system.command.sets.STATS_FISH import core.game.system.command.sets.STATS_FISH
import core.game.world.GameWorld
import core.game.world.map.path.Pathfinder import core.game.world.map.path.Pathfinder
import core.tools.RandomFunction import core.tools.RandomFunction
import core.tools.colorize import core.tools.colorize
@ -68,13 +69,25 @@ class FishingListener : InteractionListener{
if (!hasSpaceFor(player, Item(fish.id)) || !op.removeBait(player)) return restartScript(player) if (!hasSpaceFor(player, Item(fish.id)) || !op.removeBait(player)) return restartScript(player)
player.dispatch(ResourceProducedEvent(fish.id, fish.getItem().amount, node)) player.dispatch(ResourceProducedEvent(fish.id, fish.getItem().amount, node))
val item = fish.getItem() val item = fish.getItem()
sendMessage(player, "You successfully catch some ${item.name.lowercase().replace("raw ", "")}.") val bigFishId = Fish.getBigFish(fish)
val bigFishChance = if (GameWorld.settings?.isDevMode == true) 10 else 5000
if (bigFishId != null && RandomFunction.roll(bigFishChance)) {
sendMessage(player, "You catch an enormous" + getItemName(fish!!.id).lowercase().replace("raw", "") + "!")
addItemOrDrop(player, bigFishId, 1)
} else {
var msg = if (fish == Fish.ANCHOVIE || fish == Fish.SHRIMP) "You catch some" else "You catch a"
msg += getItemName(fish!!.id).lowercase().replace("raw", "").replace("big", "")
msg += if (fish == Fish.SHARK) "!" else "."
sendMessage(player, msg)
addItemOrDrop(player, item.id, item.amount)
}
if (isActive(SkillcapePerks.GREAT_AIM, player) && RandomFunction.roll(20)) { if (isActive(SkillcapePerks.GREAT_AIM, player) && RandomFunction.roll(20)) {
addItemOrDrop(player, item.id, item.amount) addItemOrDrop(player, item.id, item.amount)
sendMessage(player, colorize("%RYour expert aim catches you a second fish.")) sendMessage(player, colorize("%RYour expert aim catches you a second fish."))
player.incrementAttribute("$STATS_BASE:$STATS_FISH")
} }
addItemOrDrop(player, item.id, item.amount)
player.incrementAttribute("$STATS_BASE:$STATS_FISH") player.incrementAttribute("$STATS_BASE:$STATS_FISH")
var xp = fish.experience var xp = fish.experience
if ((item.id == Items.RAW_SWORDFISH_371 && inEquipment(player, Items.SWORDFISH_GLOVES_12860)) if ((item.id == Items.RAW_SWORDFISH_371 && inEquipment(player, Items.SWORDFISH_GLOVES_12860))