Files
Bubberstation/code/datums/status_effects/grouped_effect.dm
SkyratBot ec2286db17 [MIRROR] Fishing hook and reel line tweaks (also qol for the fish bounties) [MDB IGNORE] (#26150)
* Fishing hook and reel line tweaks (also qol for the fish bounties) (#80599)

## About The Pull Request
This PR includes a series of small changes and additions to hooks and
reel lines, as well as the aforementioned bounties. My objective here is
to make the (base) hook and reel line feel more useful. Ditto with a few
other things.

Here's the list of changes:
- Almost all fishing rods come with a hook and reel line pre-installed.
The rod from the fishing toolbox comes with separate hook and reel line.
- Without a hook, you cannot fish. Without a reel line, the cast range
is reduced (from 5 to 3).
- Fishing with a reel line installed provides a mild boon to completion
speed by default.
- The sinewy reel line (craftable from lavaland mobs) can now be used to
fish on lava / liquid plasma, but it's a bit stiff and gives a mild
malus to completion speed.
- Unlike other hooks, the rescue and jawed hooks now allow you to cast a
line and reel in living mobs too, not only items. They even get a status
alert they can click to un-snag themselves, or move away far enough to
achieve the same effect.
- Master fishing rod buffed. It now comes with a flexible reel line and
weighted hook pre-installed, and can be cast further than other rods.
- On top of that, the jawed hook will slow down living mobs snagged by
it and is a bit harder to remove.
- when casting a line, it will now show the icon of the current hook as
projectile, not a generic one.
- Reeling now correctly checks movement resistance and anchorage.
- Reeling an object (or a mob) now plays a sound. Ditto for
installing/removing slotted items.
- A few balloon alert feedbacks.
- Minor code improvements.
- The jawed hook should look a smidge sharper.
- reel lines are now small items.

## Why It's Good For The Game
The base hook and reel line didn't do anything begin with, and you would
do just fine without them. In the end it's just a bit unintuitive for
them not to be a requirement.

Beside that, it makes sense for the rescue hook to be able to snag mobs,
so they may as well be used to drag people out of lava or liquid plasma.
As for the jawed hook, it always felt to me a bit underwhelming and a
bit of a filler I had cooked up on the moment. It really could have some
'tactical' utility in virtue of being one of those niche black market
items.

## Changelog

🆑
add: Most fishing rods come with a hook and line preinstalled. Fishing
toolboxes come with separate reel and lines as usual.
balance: Fishing hooks are now required to fish.
balance: Without a reel line, the range of fishing rods is reduced by
two tiles. Conversely, having one installed gives a mild buff to the
minigame completion speed.
balance: The craftable sinewy reel line can now be used to fish on lava
or liquid plasma, but it's a bit harder to use.
balance: The rare-to-find-in-maintenance master fishing rod now comes
with a flexible line and weighted hook preinstalled, and has better
range than other rods.
balance: Fishing reel lines are now small enough to fit pockets.
add: The rescue and jawed hook can now snag and reel in mobs, not only
items. The jawed hook also slows down when applied, a la beartrap.
qol: Fish bounties now accept filled (stasis) fish cases.
qol: Several balloon alerts for fishing rod interactions.
fix: Reeling in items (and mobs) now respects movement resistance and
anchorage.
fix: Fixed the fishing rod equipment UI being too small to fit its
components.
sound: Reeling in something now plays a sound.
/🆑

* Fishing hook and reel line tweaks (also qol for the fish bounties)

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-17 06:41:19 -05:00

25 lines
889 B
Plaintext

/// Status effect from multiple sources, when all sources are removed, so is the effect
/datum/status_effect/grouped
// Grouped effects adds itself to [var/sources] and destroys itself if one exists already, there are never actually multiple
status_type = STATUS_EFFECT_MULTIPLE
/// A list of all sources applying this status effect. Sources are a list of keys
var/list/sources = list()
/datum/status_effect/grouped/on_creation(mob/living/new_owner, source)
var/datum/status_effect/grouped/existing = new_owner.has_status_effect(type)
if(existing)
existing.sources |= source
merge_with_existing(existing, source)
qdel(src)
return FALSE
sources |= source
return ..()
/datum/status_effect/grouped/proc/merge_with_existing(datum/status_effect/grouped/existing, source)
return
/datum/status_effect/grouped/before_remove(source)
sources -= source
return !length(sources)