Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
 into pain-run
  • Loading branch information
Absolucy committed Dec 15, 2024
2 parents 8a983f6 + a3cb2b5 commit 713e272
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 18 deletions.
4 changes: 4 additions & 0 deletions html/changelogs/AutoChangeLog-pr-4365.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
author: "Siro"
delete-after: True
changes:
- rscadd: "Added an ability for dead oozelings, \"Membrane Murmur\", allowing them to vocalize a short-range cry for help from their core every so often."
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@
RND_CATEGORY_INITIAL,
RND_CATEGORY_AKHTER_RESOURCES,
)
a
1 change: 0 additions & 1 deletion monkestation/code/modules/events/brand_intelligence.dm
Original file line number Diff line number Diff line change
Expand Up @@ -241,4 +241,3 @@

#undef MAX_INFECTION_DISTANCE
#undef MIN_INFECTION_DISTANCE
z
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
32 changes: 16 additions & 16 deletions monkestation/code/modules/virology/machines/incubator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
idle_power_usage = 100
active_power_usage = 200

// Contains instances of /dish_incubator_dish.
// Contains instances of /datum/dish_incubator_dish.
var/list/dish_data = list(null, null, null)

var/on = FALSE
Expand Down Expand Up @@ -90,7 +90,7 @@
if (!user.transferItemToLoc(VD, src))
return

var/dish_incubator_dish/dish_datum = new
var/datum/dish_incubator_dish/dish_datum = new
dish_datum.dish = VD
dish_data[slot] = dish_datum

Expand All @@ -108,7 +108,7 @@
if ("power")
on = !on
if (on)
for (var/dish_incubator_dish/dish_datum in dish_data)
for (var/datum/dish_incubator_dish/dish_datum in dish_data)
if (dish_datum.dish.contained_virus)
dish_datum.dish.contained_virus.log += "<br />[ROUND_TIME()] Incubation started by [key_name(usr)]"

Expand All @@ -120,7 +120,7 @@
if (slot == null || slot < 1 || slot > dish_data.len)
return TRUE

var/dish_incubator_dish/dish_datum = dish_data[slot]
var/datum/dish_incubator_dish/dish_datum = dish_data[slot]
if (dish_datum == null)
return TRUE

Expand Down Expand Up @@ -154,7 +154,7 @@
if (slot == null || slot < 1 || slot > dish_data.len)
return TRUE

var/dish_incubator_dish/dish_datum = dish_data[slot]
var/datum/dish_incubator_dish/dish_datum = dish_data[slot]
if (dish_datum == null)
return TRUE

Expand All @@ -166,7 +166,7 @@
if (slot == null || slot < 1 || slot > dish_data.len)
return TRUE

var/dish_incubator_dish/dish_datum = dish_data[slot]
var/datum/dish_incubator_dish/dish_datum = dish_data[slot]
if (dish_datum == null)
return TRUE

Expand All @@ -176,7 +176,7 @@
var/slot = text2num(params["slot"])
if(slot == null || slot < 1 || slot > dish_data.len)
return TRUE
var/dish_incubator_dish/dish_datum = dish_data[slot]
var/datum/dish_incubator_dish/dish_datum = dish_data[slot]
if (dish_datum == null)
return TRUE
var/stage_to_focus = input(usr, "Choose a stage to focus on. This will block symptoms from other stages from being mutated. Input 0 to disable effect focusing.", "Choose a stage.") as num
Expand All @@ -195,7 +195,7 @@
if (machine_stat & (NOPOWER))
to_chat(user, span_notice("Deprived of power, \the [src] is unresponsive."))
for (var/i in 1 to dish_data.len)
var/dish_incubator_dish/dish_datum = dish_data[i]
var/datum/dish_incubator_dish/dish_datum = dish_data[i]
if (dish_datum == null)
continue

Expand Down Expand Up @@ -231,7 +231,7 @@
data["dishes"] = dish_ui_data

for (var/i = 1 to dish_data.len)
var/dish_incubator_dish/dish_datum = dish_data[i]
var/datum/dish_incubator_dish/dish_datum = dish_data[i]
var/list/dish_ui_datum = list()
// tfw no linq
dish_ui_data[++dish_ui_data.len] = dish_ui_datum
Expand Down Expand Up @@ -268,7 +268,7 @@

if (on)
use_power = ACTIVE_POWER_USE
for (var/dish_incubator_dish/dish_datum in dish_data)
for (var/datum/dish_incubator_dish/dish_datum in dish_data)
dish_datum.dish.incubate(mutatechance, growthrate, effect_focus)
else
use_power = IDLE_POWER_USE
Expand All @@ -277,15 +277,15 @@


/obj/machinery/disease2/incubator/proc/find_dish_datum(obj/item/weapon/virusdish/dish)
for (var/dish_incubator_dish/dish_datum in dish_data)
for (var/datum/dish_incubator_dish/dish_datum in dish_data)
if (dish_datum.dish == dish)
return dish_datum

return null


/obj/machinery/disease2/incubator/proc/update_major(obj/item/weapon/virusdish/dish)
var/dish_incubator_dish/dish_datum = find_dish_datum(dish)
var/datum/dish_incubator_dish/dish_datum = find_dish_datum(dish)
if (dish_datum == null)
return

Expand All @@ -295,7 +295,7 @@


/obj/machinery/disease2/incubator/proc/update_minor(obj/item/weapon/virusdish/dish, str=0, rob=0, eff=0)
var/dish_incubator_dish/dish_datum = find_dish_datum(dish)
var/datum/dish_incubator_dish/dish_datum = find_dish_datum(dish)
if (dish_datum == null)
return

Expand Down Expand Up @@ -342,7 +342,7 @@
if (dish_data[i] != null)
. += add_dish_sprite(dish_data[i], i)

/obj/machinery/disease2/incubator/proc/add_dish_sprite(dish_incubator_dish/dish_datum, slot)
/obj/machinery/disease2/incubator/proc/add_dish_sprite(datum/dish_incubator_dish/dish_datum, slot)
var/obj/item/weapon/virusdish/dish = dish_datum.dish
var/list/overlays = list()

Expand Down Expand Up @@ -459,7 +459,7 @@
/obj/machinery/disease2/incubator/Destroy()
. = ..()
for (var/i in 1 to dish_data.len)
var/dish_incubator_dish/dish_datum = dish_data[i]
var/datum/dish_incubator_dish/dish_datum = dish_data[i]
if (dish_datum == null)
continue

Expand All @@ -468,7 +468,7 @@

..()

/dish_incubator_dish
/datum/dish_incubator_dish
// The inserted virus dish.
var/obj/item/weapon/virusdish/dish

Expand Down

0 comments on commit 713e272

Please sign in to comment.