You can use a fishing rod to snatch organs during organ manipulation surgery (feat organs sanity fix) (#87774)

## About The Pull Request
This allows you to use a fishing rod during the "manipulate organs" step
of the aforementioned surgery to snatch organs from a target.

Unlike other fish sources, this one has a negative fishing difficulty of
-20, which when summed with the default minigame difficulty should still
result in a negative difficulty. In layman terms, this means the
minigame is skipped here (unless you're wearing some clunky stuff like
insulated or boxing gloves). It also has a wait time of 8 to 13 seconds
versus the more random standard 3 to 25 seconds.

A small side-effect of this is that explosions during the "manipulate
organs" step will basically disembowel you, but it kinda fits anyway.

By the by, because of this, there is a tiny chance bluespace fishing
rods can yield you random organs. Worry not, they're newly generated, so
you won't be snatching it from another player by accident (at least for
now).

## Why It's Good For The Game
It adds more possible weird and rare shenanigans involving surgery.

## Changelog

🆑
Add: You can use a fishing rod to snatch organs during organ
manipulation surgery
/🆑
This commit is contained in:
Ghom
2024-11-20 22:13:18 +00:00
committed by GitHub
parent 538463ffbc
commit 6272b3680c
57 changed files with 286 additions and 215 deletions
+2 -2
View File
@@ -212,13 +212,13 @@ Unlike normal organs, we're actually inside a persons limbs at all times
///Store our old datum here for if our antennae are healed
var/original_sprite_datum
/obj/item/organ/antennae/mob_insert(mob/living/carbon/receiver, special, movement_flags)
/obj/item/organ/antennae/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
RegisterSignal(receiver, COMSIG_HUMAN_BURNING, PROC_REF(try_burn_antennae))
RegisterSignal(receiver, COMSIG_LIVING_POST_FULLY_HEAL, PROC_REF(heal_antennae))
/obj/item/organ/antennae/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
/obj/item/organ/antennae/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
UnregisterSignal(organ_owner, list(COMSIG_HUMAN_BURNING, COMSIG_LIVING_POST_FULLY_HEAL))
+2 -2
View File
@@ -16,13 +16,13 @@
organ_flags = parent_type::organ_flags | ORGAN_EXTERNAL
/obj/item/organ/spines/mob_insert(mob/living/carbon/receiver, special, movement_flags)
/obj/item/organ/spines/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
// If we have a tail, attempt to add a tail spines overlay
var/obj/item/organ/tail/our_tail = receiver.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.try_insert_tail_spines(our_tail.bodypart_owner)
return ..()
/obj/item/organ/spines/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
/obj/item/organ/spines/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
// If we have a tail, remove any tail spines overlay
var/obj/item/organ/tail/our_tail = organ_owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
our_tail?.remove_tail_spines(our_tail.bodypart_owner)
+4 -5
View File
@@ -22,11 +22,10 @@
///The overlay for tail spines, if any
var/datum/bodypart_overlay/mutant/tail_spines/tail_spines_overlay
/obj/item/organ/tail/mob_insert(mob/living/carbon/receiver, special, movement_flags)
/obj/item/organ/tail/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(.)
receiver.clear_mood_event("tail_lost")
receiver.clear_mood_event("tail_balance_lost")
receiver.clear_mood_event("tail_lost")
receiver.clear_mood_event("tail_balance_lost")
if(!special) // if some admin wants to give someone tail moodles for tail shenanigans, they can spawn it and do it by hand
original_owner ||= WEAKREF(receiver)
@@ -77,7 +76,7 @@
bodypart.remove_bodypart_overlay(tail_spines_overlay)
QDEL_NULL(tail_spines_overlay)
/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special)
/obj/item/organ/tail/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
if(wag_flags & WAG_WAGGING)
@@ -33,14 +33,14 @@
QDEL_NULL(fly)
return ..()
/obj/item/organ/wings/functional/mob_insert(mob/living/carbon/receiver, special, movement_flags)
/obj/item/organ/wings/functional/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
if(QDELETED(fly))
fly = new
fly.Grant(receiver)
/obj/item/organ/wings/functional/mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
/obj/item/organ/wings/functional/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
fly?.Remove(organ_owner)
if(wings_open)