Skip to content

Commit

Permalink
[Bounty] Oozeling Membrane Murmur Ability (#4365)
Browse files Browse the repository at this point in the history
* Adds Membrane Murmur to oozling cores

* Ability clean up when brain deleted

* Moved ability to cooldown removing unneded checks

* Adds Ellipsis filter to the message picked.

* Slight organization.
  • Loading branch information
Coll6 authored Dec 15, 2024
1 parent 229975e commit a1ffdf1
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
39 changes: 39 additions & 0 deletions monkestation/code/modules/smithing/oozelings/actions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,42 @@
else
to_chat(owner, span_notice("You fine-tune the electromagnetic signals from your core to be picked up by GPS receivers upon it's rejection."))
core.gps_active = TRUE
///////
/// MEMBRANE MURMUR SPELL
/// Use your core to attempt to call out for help or attention.
/datum/action/cooldown/membrane_murmur
name = "Membrane Murmur"
desc = "Force your core to pass gasses to make noticable sounds."
button_icon = 'icons/mob/actions/actions_slime.dmi'
button_icon_state = "gel_cocoon"
background_icon_state = "bg_alien"
overlay_icon_state = "bg_alien_border"

cooldown_time = 25 SECONDS
check_flags = NONE

var/static/list/possible_cries = list(
"Blorp... glub... help...",
"Glooop... save me...",
"Alone... burbble too quiet...",
"What’s left... of me...?",
"Can’t feel... can’t... think...",
"Plasma... need... plasma...",
"It’s so... quiet...",
)

/datum/action/cooldown/membrane_murmur/IsAvailable(feedback = FALSE)
. = ..()
if(.)
var/mob/living/brain/brainmob = owner
if(!istype(brainmob) || !istype(brainmob.loc, /obj/item/organ/internal/brain/slime))
return FALSE

/datum/action/cooldown/membrane_murmur/Activate()
. = ..()
var/mob/living/brain/brainmob = owner
if(!istype(brainmob))
CRASH("[src] cast by non-brainmob [owner?.type || "(null)"]")
var/obj/item/organ/internal/brain/slime/brainitem = brainmob.loc
var/final_cry = brainmob.Ellipsis(pick(possible_cries), chance = 30)
brainitem.say(final_cry, "slime", forced = "[src]", message_range = 2)
9 changes: 9 additions & 0 deletions monkestation/code/modules/smithing/oozelings/body/organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,18 @@
var/rebuilt = TRUE
var/coredeath = TRUE

var/datum/action/cooldown/membrane_murmur/membrane_mur

/obj/item/organ/internal/brain/slime/Initialize(mapload, mob/living/carbon/organ_owner, list/examine_list)
. = ..()
membrane_mur = new /datum/action/cooldown/membrane_murmur()
colorize()
transform.Scale(2, 2)

/obj/item/organ/internal/brain/slime/Destroy(force)
QDEL_NULL(membrane_mur)
return ..()

/obj/item/organ/internal/brain/slime/examine()
. = ..()
if(gps_active)
Expand Down Expand Up @@ -165,6 +172,7 @@
AddComponent(/datum/component/gps, "[victim]'s Core")

if(brainmob)
membrane_mur.Grant(brainmob)
var/datum/antagonist/changeling/target_ling = brainmob.mind?.has_antag_datum(/datum/antagonist/changeling)

if(target_ling)
Expand Down Expand Up @@ -283,6 +291,7 @@
new_body.visible_message(span_warning("[new_body]'s body fully forms from [new_body.p_their()] core!"))
to_chat(owner, span_purple("Your body fully forms from your core!"))

membrane_mur.Remove(brainmob)
brainmob?.mind?.transfer_to(new_body)
new_body.grab_ghost()
transfer_observers_to(new_body)
Expand Down

0 comments on commit a1ffdf1

Please sign in to comment.