Files
Bubberstation/code/game/objects/effects/spawners/message_in_a_bottle.dm
Ghom 73081bcff0 Add messages (paper, photos, cash) in bottles. (#85703)
## About The Pull Request
This PR adds a new persistent feature: message inside bottles. These are
basically glass bottles with inside a piece of paper, a photo or space
cash (no holocredits, and most bills rarely go over 1000 credits anyway)
from a previous round, which can be fished at the beach, or from the
relative fishing portals.

Each piece of written paper or photo that isn't map-loaded has a roughly
a 0.2% chance to be added to the message bottles database at the end of
the round. However, you can also manually toss a glass bottle with
inside a paper/photo/bill into the ocean (or a fishing portal generator
with the ocean/beach module loaded) for guaranteed results.

The bottles are removed from the database once fished up by the by,
unless tossed back into the ocean.

I've also offset a couple bottle sprites that weren't properly aligned
(for the message overlays).

TODO:
- [x] add a couple (20 prob or less) message bottle spawners to the
beach away mission or something.
- [x] add a few sounds for adding and removing the message from the
bottle. (pickup/drop sounds already handle that)
- [x] test it properly.

## Why It's Good For The Game
I think it'd be neat to have a way to send photos, snarky "seek grass"
messages, as well as the occasional financial aid to future players, and
furthermore, another thing to tie fishing to.

## Changelog

🆑
add: You can place papers, photos and cash bills (no holochips) inside
bottles and then toss them into the ocean (or fishing portal gen with
relative settings) with right-click, for others to fish them up on
future rounds.
/🆑
2024-08-24 01:31:38 -04:00

26 lines
811 B
Plaintext

/obj/effect/spawner/message_in_a_bottle
name = "message in a bottle"
desc = "Sending out an SOS"
icon = 'icons/effects/random_spawners.dmi'
icon_state = "message_bottle"
var/probability = 100
/obj/effect/spawner/message_in_a_bottle/Initialize(mapload)
. = ..()
if(!prob(probability))
return INITIALIZE_HINT_QDEL
if(!SSpersistence.initialized)
RegisterSignal(SSpersistence, COMSIG_SUBSYSTEM_POST_INITIALIZE, PROC_REF(on_persistence_init))
else
SSpersistence.load_message_bottle(loc)
return INITIALIZE_HINT_QDEL
/obj/effect/spawner/message_in_a_bottle/proc/on_persistence_init(datum/source)
SIGNAL_HANDLER
UnregisterSignal(SSpersistence, COMSIG_SUBSYSTEM_POST_INITIALIZE)
SSpersistence.load_message_bottle(loc)
qdel(src)
/obj/effect/spawner/message_in_a_bottle/low_prob
probability = 1.5