Adds a treasure chest to the ocean/beach fishing spot. (#85276)

## About The Pull Request
This PR adds a treasure chest that can be fished from the ocean if
you're lucky enough (or have enough explosives or lobstrosities to do it
for you). The treasure chest is basically a mystery box (like the ones
from the deathmatch) with a couple catches; the treasure chest can be
opened up to 18 times in total before breaking down, however, it can
only be opened up to 3 times per spaceman, encouraging the player to
share it with others.

Here the possible loot by the by:
- A toolbox containing a master fishing rod, all the hooks and reels,
fish feed, an experi-scanner, an aquarium kit and a can of super baits
- A box containing a lazarus injector, a cup and a bottle of strange
reagent which you can use to revive fish now
- A circuit board for a pre-emagged fishing portal generator
- A master fishing rod
- A can of super fishing baits
- A fish case containing Tiziran fish
- A fish case containing Syndicate fish
- An old, yet fairly strong cutlass
- An old laser gun which fires only 5 shots before running out
- A crank laser musket
- A smoothbore disabler
- A surplus bolt action rifle
- A ration pack
- A can of squid ink
- A bottle of aged rum that forces you to switch to the piratespeak
language
- A money bag with some doubloons inside
- A piratespeak manual
- Pirate armored coat
- Pirate armored hat
- A pre-loaded cannon
- Four trash cannon balls
- Four cannon balls

## Why It's Good For The Game
Mystery boxes are fun, from the little fanfare they play to the
potential loot they can give, and I had an old treasure chest I had
sprited for fun years ago around so I've come up with an entertaining
idea. If you think the loot list is a bit too hot, I can cool it down a
bit.
Also yeah, I wanted to make fish revivable with strange reagent, since
you can already do it with lazarus injectors even though using a lazarus
injector for this would be a severe waste of mining points.

## Changelog

🆑
add: Added a treasure chest you can rarely fish from the ocean/beach,
with loot being a mix of fishing and piratey stuff.
add: You can revive fish with strange reagent now.
/🆑
This commit is contained in:
Ghom
2024-08-16 15:53:52 +02:00
committed by GitHub
parent f3d9017c9c
commit d9168e7254
29 changed files with 322 additions and 43 deletions
@@ -143,6 +143,7 @@
/obj/item/storage/box/aquarium_props
name = "aquarium props box"
desc = "All you need to make your aquarium look good."
illustration = "fish"
/obj/item/storage/box/aquarium_props/PopulateContents()
for(var/prop_type in subtypesof(/obj/item/aquarium_prop))
+33 -5
View File
@@ -3,13 +3,16 @@
desc = "there's a lot of them in there, getting them out takes a while though"
icon = 'icons/obj/fishing.dmi'
icon_state = "bait_can"
base_icon_state = "bait_can"
w_class = WEIGHT_CLASS_SMALL
/// Tracking until we can take out another bait item
COOLDOWN_DECLARE(bait_removal_cooldown)
/// What bait item it produces
var/bait_type
var/obj/item/bait_type = /obj/item/food/bait
/// Time between bait retrievals
var/cooldown_time = 10 SECONDS
var/cooldown_time = 5 SECONDS
/// How many uses does it have left.
var/uses_left = 20
/obj/item/bait_can/attack_self(mob/user, modifiers)
. = ..()
@@ -17,19 +20,44 @@
if(fresh_bait)
user.put_in_hands(fresh_bait)
/obj/item/bait_can/examine(mob/user)
. = ..()
. += span_info("It[uses_left ? " has got [uses_left] [bait_type::name] left" : "'s empty"].")
/obj/item/bait_can/update_icon_state()
. = ..()
icon_state = base_icon_state
if(uses_left <= initial(uses_left))
if(!uses_left)
icon_state = "[icon_state]_empty"
else
icon_state = "[icon_state]_open"
/obj/item/bait_can/proc/retrieve_bait(mob/user)
if(!uses_left)
user.balloon_alert(user, "empty")
return
if(!COOLDOWN_FINISHED(src, bait_removal_cooldown))
user.balloon_alert(user, "wait a bit") //I can't think of generic ic reason.
user.balloon_alert(user, "wait a bit")
return
COOLDOWN_START(src, bait_removal_cooldown, cooldown_time)
update_appearance()
uses_left--
return new bait_type(src)
/obj/item/bait_can/worm
name = "can o' worm"
desc = "this can got worms."
desc = "This can got worms."
bait_type = /obj/item/food/bait/worm
/obj/item/bait_can/worm/premium
name = "can o' worm deluxe"
desc = "this can got fancy worms."
desc = "This can got fancy worms."
bait_type = /obj/item/food/bait/worm/premium
/obj/item/bait_can/super_baits
name = "can o' super-baits"
desc = "This can got the nectar of god."
bait_type = /obj/item/food/bait/doughball/synthetic/super
uses_left = 12
+14
View File
@@ -390,6 +390,20 @@
update_appearance()
SEND_SIGNAL(src, COMSIG_FISH_STATUS_CHANGED)
/obj/item/fish/expose_reagents(list/reagents, datum/reagents/source, methods = TOUCH, volume_modifier = 1, show_message = TRUE)
. = ..()
if(. & COMPONENT_NO_EXPOSE_REAGENTS || status != FISH_DEAD)
return
var/datum/reagent/medicine/strange_reagent/revival = locate() in reagents
if(!revival)
return
if(reagents[revival] >= 2 * w_class)
set_status(FISH_ALIVE)
else
balloon_alert_to_viewers("twitches for a moment!")
animate(src, pixel_x = 1, time = 0.1 SECONDS, loop = 2, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
animate(pixel_x = -1, flags = ANIMATION_RELATIVE)
/obj/item/fish/proc/use_lazarus(datum/source, obj/item/lazarus_injector/injector, mob/user)
SIGNAL_HANDLER
if(injector.revive_type != SENTIENCE_ORGANIC)
+45 -3
View File
@@ -260,7 +260,6 @@
// Can hold fishing rod despite the size
var/static/list/exception_cache = typecacheof(list(
/obj/item/fishing_rod,
/obj/item/fishing_line,
))
atom_storage.exception_hold = exception_cache
@@ -286,30 +285,73 @@
new /obj/item/fishing_hook(src)
new /obj/item/fishing_line(src)
/obj/item/storage/toolbox/fishing/master
name = "super fishing toolbox"
desc = "Contains EVERYTHING (almost) you need for your fishing trip."
icon_state = "gold"
inhand_icon_state = "toolbox_gold"
/obj/item/storage/toolbox/fishing/master/PopulateContents()
new /obj/item/fishing_rod/telescopic/master(src)
new /obj/item/storage/box/fishing_hooks/master(src)
new /obj/item/storage/box/fishing_lines/master(src)
new /obj/item/bait_can/super_baits(src)
new /obj/item/fish_feed(src)
new /obj/item/aquarium_kit(src)
new /obj/item/fish_analyzer(src)
new /obj/item/experi_scanner(src)
/obj/item/storage/box/fishing_hooks
name = "fishing hook set"
illustration = "fish"
/obj/item/storage/box/fishing_hooks/PopulateContents()
. = ..()
new /obj/item/fishing_hook/magnet(src)
new /obj/item/fishing_hook/shiny(src)
new /obj/item/fishing_hook/weighted(src)
/obj/item/storage/box/fishing_hooks/master
/obj/item/storage/box/fishing_hooks/master/PopulateContents()
. = ..()
new /obj/item/fishing_hook/stabilized(src)
new /obj/item/fishing_hook/jaws(src)
/obj/item/storage/box/fishing_lines
name = "fishing line set"
illustration = "fish"
/obj/item/storage/box/fishing_lines/PopulateContents()
. = ..()
new /obj/item/fishing_line/bouncy(src)
new /obj/item/fishing_line/reinforced(src)
new /obj/item/fishing_line/cloaked(src)
/obj/item/storage/box/fishing_lines/master
/obj/item/storage/box/fishing_lines/master/PopulateContents()
. = ..()
new /obj/item/fishing_line/auto_reel(src)
/obj/item/storage/box/fish_debug
name = "box full of fish"
illustration = "fish"
/obj/item/storage/box/fish_debug/PopulateContents()
for(var/fish_type in subtypesof(/obj/item/fish))
new fish_type(src)
///From the fishing mystery box. It's basically a lazarus and a few bottles of strange reagents.
/obj/item/storage/box/fish_revival_kit
name = "fish revival kit"
desc = "Become a fish doctor today."
illustration = "fish"
/obj/item/storage/box/fish_revival_kit/PopulateContents()
new /obj/item/lazarus_injector(src)
new /obj/item/reagent_containers/cup/bottle/strange_reagent(src)
new /obj/item/reagent_containers/cup(src) //to splash the reagents on the fish.
new /obj/item/storage/fish_case(src)
new /obj/item/storage/fish_case(src)
#undef MAGNET_HOOK_BONUS_MULTIPLIER
#undef RESCUE_HOOK_FISH_MULTIPLIER
@@ -100,3 +100,7 @@
if(!choice || !can_interact(user))
return
activate(available_fish_sources[choice])
/obj/machinery/fishing_portal_generator/emagged
obj_flags = parent_type::obj_flags | EMAGGED
circuit = /obj/item/circuitboard/machine/fishing_portal_generator/emagged
@@ -9,9 +9,11 @@
/obj/item/fish/lanternfish = 5,
/obj/item/fish/zipzap = 5,
/obj/item/fish/clownfish/lube = 3,
/obj/structure/mystery_box/fishing = 1,
)
fish_counts = list(
/obj/item/fish/clownfish/lube = 2,
/obj/structure/mystery_box/fishing = 1,
)
fishing_difficulty = FISHING_DEFAULT_DIFFICULTY + 5
explosive_malus = TRUE