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
Date: Thu, 18 Aug 2022 15:14:38 +0300
Subject: [PATCH 03/19] aaaaa
---
.../living/carbon/human/species_types/preternis/preternis.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index 78c9456318e..f52d0e3705c 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -22,7 +22,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
mutantlungs = /obj/item/organ/lungs/preternis
virus_infect_chance = 20
virus_resistance_boost = 10 //YEOUTCH,good luck getting it out
- species_language_holder = /datum/language_holder/preternis
+ species_language_holder = /datum/language_holder/preternis
var/charge = PRETERNIS_LEVEL_FULL
var/eating_msg_cooldown = FALSE
From 079236a15323ef428b9e02fa3d3b2c9ad14b4580 Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:25:16 +0300
Subject: [PATCH 04/19]
---
.../species_types/preternis/power_suck.dm | 4 ++--
.../species_types/preternis/preternis.dm | 24 +++++++++----------
.../species_types/preternis/screen_alerts.dm | 4 ++--
code/modules/movespeed/modifiers/reagent.dm | 4 ++++
4 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index 50161947921..fe297f47bf4 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -61,7 +61,7 @@
var/nutritionIncrease = drain * ELECTRICITY_TO_NUTRIMENT_FACTOR
if(charge + nutritionIncrease > PRETERNIS_LEVEL_FULL)
- nutritionIncrease = CLAMP(PRETERNIS_LEVEL_FULL - charge, PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL) //if their nutrition goes up from some other source, this could be negative, which would cause bad things to happen.
+ nutritionIncrease = clamp(PRETERNIS_LEVEL_FULL - charge, PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL) //if their nutrition goes up from some other source, this could be negative, which would cause bad things to happen.
drain = nutritionIncrease/ELECTRICITY_TO_NUTRIMENT_FACTOR
if (do_after(H,5, target = A))
@@ -78,7 +78,7 @@
if(drained < drain)
to_chat(H,"[A]'s power has been depleted, CONSUME protocol halted.")
done = TRUE
- charge = CLAMP(charge + (drained * ELECTRICITY_TO_NUTRIMENT_FACTOR),PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
+ charge = clamp(charge + (drained * ELECTRICITY_TO_NUTRIMENT_FACTOR),PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(!done)
if(charge > (PRETERNIS_LEVEL_FULL - 25))
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index f52d0e3705c..6db2f385942 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -13,7 +13,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
species_traits = list(EYECOLOR,HAIR,LIPS)
say_mod = "intones"
attack_verb = "assault"
- meat = /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat
+ meat = /obj/item/food/meat/slab/synthmeat
toxic_food = NONE
brutemod = 1.25
burnmod = 1.5
@@ -53,7 +53,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
BP.brute_reduction = initial(BP.brute_reduction)
C.clear_alert("preternis_emag") //this means a changeling can transform from and back to a preternis to clear the emag status but w/e i cant find a solution to not do that
C.clear_fullscreen("preternis_emag")
- C.remove_movespeed_modifier("preternis_teslium")
+ C.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/preternis_teslium, TRUE)
/datum/species/preternis/spec_emp_act(mob/living/carbon/human/H, severity)
. = ..()
@@ -85,8 +85,8 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.adjustBrainLoss(50) //HALP AM DUMB
to_chat(H,"ALERT! MEMORY UNIT [rand(1,5)] FAILURE.NERVEOUS SYSTEM DAMAGE.")
if(2)
- H.overlay_fullscreen("preternis_emag", /obj/screen/fullscreen/high)
- H.throw_alert("preternis_emag", /obj/screen/alert/high/preternis)
+ H.overlay_fullscreen("preternis_emag", /atom/movable/screen/fullscreen/high)
+ H.throw_alert("preternis_emag", /atom/movable/screen/alert/high/preternis)
to_chat(H,"ALERT! OPTIC SENSORS FAILURE.VISION PROCESSOR COMPROMISED.")
/datum/species/preternis/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
@@ -99,7 +99,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER,FALSE,FALSE, BODYPART_ANY)
if(H.reagents.has_reagent(/datum/reagent/teslium,10)) //10 u otherwise it wont update and they will remain quikk
- H.add_movespeed_modifier("preternis_teslium", update=TRUE, priority=101, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING))
+ H.add_movespeed_modifier(/datum/movespeed_modifier/reagent/preternis_teslium, TRUE)
if(H.health < 50 && H.health > 0)
H.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
H.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER,FALSE,FALSE, BODYPART_ANY)
@@ -108,19 +108,19 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.AdjustStun(-3)
H.AdjustKnockdown(-3)
H.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
- charge = CLAMP(charge - 10 * REAGENTS_METABOLISM,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
+ charge = clamp(charge - 10 * REAGENTS_METABOLISM,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
burnmod = 200
tesliumtrip = TRUE
else if(tesliumtrip)
burnmod = initial(burnmod)
tesliumtrip = FALSE
- H.remove_movespeed_modifier("preternis_teslium")
+ H.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/preternis_teslium, TRUE)
if (istype(chem,/datum/reagent/consumable))
var/datum/reagent/consumable/food = chem
if (food.nutriment_factor)
var/nutrition = food.nutriment_factor * 0.2
- charge = CLAMP(charge + nutrition,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
+ charge = clamp(charge + nutrition,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if (!eating_msg_cooldown)
eating_msg_cooldown = TRUE
addtimer(VARSET_CALLBACK(src, eating_msg_cooldown, FALSE), 2 MINUTES)
@@ -149,15 +149,15 @@ adjust_charge - take a positive or negative value to adjust the charge level
handle_charge(H)
/datum/species/preternis/proc/handle_charge(mob/living/carbon/human/H)
- charge = CLAMP(charge - power_drain,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
+ charge = clamp(charge - power_drain,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(charge == PRETERNIS_LEVEL_NONE)
to_chat(H,"Warning! System power criti-$#@$")
H.death()
else if(charge < PRETERNIS_LEVEL_STARVING)
- H.throw_alert("preternis_charge", /obj/screen/alert/preternis_charge, 3)
+ H.throw_alert("preternis_charge", /atom/movable/screen/alert/preternis_charge, 3)
else if(charge < PRETERNIS_LEVEL_HUNGRY)
- H.throw_alert("preternis_charge", /obj/screen/alert/preternis_charge, 2)
+ H.throw_alert("preternis_charge", /atom/movable/screen/alert/preternis_charge, 2)
else if(charge < PRETERNIS_LEVEL_FED)
- H.throw_alert("preternis_charge", /obj/screen/alert/preternis_charge, 1)
+ H.throw_alert("preternis_charge", /atom/movable/screen/alert/preternis_charge, 1)
else
H.clear_alert("preternis_charge")
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/screen_alerts.dm b/code/modules/mob/living/carbon/human/species_types/preternis/screen_alerts.dm
index 596ecc68177..73950fe0adc 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/screen_alerts.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/screen_alerts.dm
@@ -1,8 +1,8 @@
-/obj/screen/alert/high/preternis
+/atom/movable/screen/alert/high/preternis
name = "Optic sensor failure"
desc = "Main unit optic sensors damage detected.Vision processor compromised"
-/obj/screen/alert/preternis_charge
+/atom/movable/screen/alert/preternis_charge
name = "Low power"
desc = "Find a power cell to recharge from or you may lose power."
icon_state = "lowcell"
diff --git a/code/modules/movespeed/modifiers/reagent.dm b/code/modules/movespeed/modifiers/reagent.dm
index ac2f3cdd4c9..b2a1f9d6016 100644
--- a/code/modules/movespeed/modifiers/reagent.dm
+++ b/code/modules/movespeed/modifiers/reagent.dm
@@ -39,3 +39,7 @@
/datum/movespeed_modifier/reagent/nooartrium
multiplicative_slowdown = 2
+
+/datum/movespeed_modifier/reagent/preternis_teslium
+ multiplicative_slowdown = -2
+ priority = 101
From 1120e65e558bdcceed940cea82caea6454dc47df Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:31:23 +0300
Subject: [PATCH 05/19] sex
---
.../human/species_types/preternis/power_suck.dm | 8 ++++----
.../human/species_types/preternis/preternis.dm | 16 ++++++++++------
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index fe297f47bf4..120923f4bef 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -117,7 +117,7 @@
/obj/machinery/power/apc/can_consume_power_from()
if(!cell)
return "APC cell absent, cannot consume power."
- if(stat & BROKEN)
+ if(machine_stat & BROKEN)
return "APC is damaged, cannot consume power."
if(!operating || shorted)
return "APC main breaker is off, cannot consume power."
@@ -136,7 +136,7 @@
//SMES//
/obj/machinery/power/smes/can_consume_power_from()
- if(stat & BROKEN)
+ if(machine_stat & BROKEN)
return "SMES is damaged, cannot consume power."
if(!output_attempt)
return "SMES is not outputting power, cannot consume power."
@@ -151,14 +151,14 @@
return amount
//MECH//
-/obj/mecha/can_consume_power_from()
+/obj/vehicle/sealed/mecha/can_consume_power_from()
if(!cell)
return "Mech power cell absent, cannot consume power."
if(cell.charge < MIN_DRAINABLE_POWER)
return "Mech power cell depleted, cannot consume power."
return TRUE
-/obj/mecha/consume_power_from(amount)
+/obj/vehicle/sealed/mecha/consume_power_from(amount)
occupant_message("Warning: Unauthorized access through sub-route 4, block H, detected.")
if((cell.charge - amount) < MIN_DRAINABLE_POWER)
amount = max(cell.charge - MIN_DRAINABLE_POWER, 0)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index 6db2f385942..f87fbcffbaf 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -34,6 +34,8 @@ adjust_charge - take a positive or negative value to adjust the charge level
/datum/species/preternis/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
. = ..()
+ RegisterSignal(C, COMSIG_ATOM_EMAG_ACT, .proc/on_emag_act)
+ RegisterSignal(C, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act)
for (var/V in C.bodyparts)
var/obj/item/bodypart/BP = V
BP.change_bodypart_status(ORGAN_ROBOTIC,FALSE,TRUE)
@@ -46,6 +48,8 @@ adjust_charge - take a positive or negative value to adjust the charge level
/datum/species/preternis/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
. = ..()
+ UnregisterSignal(C, COMSIG_ATOM_EMAG_ACT)
+ UnregisterSignal(C, COMSIG_ATOM_EMP_ACT)
for (var/V in C.bodyparts)
var/obj/item/bodypart/BP = V
BP.change_bodypart_status(ORGAN_ORGANIC,FALSE,TRUE)
@@ -55,8 +59,8 @@ adjust_charge - take a positive or negative value to adjust the charge level
C.clear_fullscreen("preternis_emag")
C.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/preternis_teslium, TRUE)
-/datum/species/preternis/spec_emp_act(mob/living/carbon/human/H, severity)
- . = ..()
+/datum/species/preternis/proc/on_emp_act(mob/living/carbon/human/H, severity)
+ SIGNAL_HANDLER
switch(severity)
if(EMP_HEAVY)
H.adjustBruteLoss(20)
@@ -73,8 +77,8 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.visible_message("A faint fizzling emanates from [H].", \
"A fit of twitching overtakes you as your subdermal implants convulse violently from the electromagnetic disruption. Your sustenance reserves have been partially depleted from the blast.")
-/datum/species/preternis/spec_emag_act(mob/living/carbon/human/H, mob/user)
- . = ..()
+/datum/species/preternis/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
+ SIGNAL_HANDLER
if(emag_lvl == 2)
return
emag_lvl = min(emag_lvl + 1,2)
@@ -92,7 +96,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
/datum/species/preternis/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
. = ..()
- if(H.reagents.has_reagent(/datum/reagent/oil))
+ if(H.reagents.has_reagent(/datum/reagent/fuel/oil))
H.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER,FALSE,FALSE, BODYPART_ANY)
if(H.reagents.has_reagent(/datum/reagent/fuel))
@@ -127,7 +131,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
to_chat(H,"NOTICE: Digestive subroutines are inefficient. Seek sustenance via power-cell C.O.N.S.U.M.E. technology induction.")
if(chem.current_cycle >= 20)
- H.reagents.del_reagent(chem.id)
+ H.reagents.del_reagent(chem.type)
return FALSE
From 61997250c7d3e373ce9c318956d1aa6795daf2f1 Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:39:08 +0300
Subject: [PATCH 06/19] fix
---
.../living/carbon/human/species_types/preternis/power_suck.dm | 2 +-
.../living/carbon/human/species_types/preternis/preternis.dm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index 120923f4bef..d96c6a1b354 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -159,7 +159,7 @@
return TRUE
/obj/vehicle/sealed/mecha/consume_power_from(amount)
- occupant_message("Warning: Unauthorized access through sub-route 4, block H, detected.")
+ to_chat(occupants,"Warning: Unauthorized access through sub-route 4, block H, detected.")
if((cell.charge - amount) < MIN_DRAINABLE_POWER)
amount = max(cell.charge - MIN_DRAINABLE_POWER, 0)
cell.use(amount)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index f87fbcffbaf..38338e01ba8 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -86,7 +86,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.Paralyze(60)
switch(emag_lvl)
if(1)
- H.adjustBrainLoss(50) //HALP AM DUMB
+ H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50) //HALP AM DUMB
to_chat(H,"ALERT! MEMORY UNIT [rand(1,5)] FAILURE.NERVEOUS SYSTEM DAMAGE.")
if(2)
H.overlay_fullscreen("preternis_emag", /atom/movable/screen/fullscreen/high)
From 7d1e76744c61c7829d28eb9646cd8b0553ce896b Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:47:44 +0300
Subject: [PATCH 07/19] span defines
---
.../species_types/preternis/power_suck.dm | 48 +++++++++----------
.../species_types/preternis/preternis.dm | 16 +++----
2 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
index d96c6a1b354..d044cfedc43 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/power_suck.dm
@@ -10,7 +10,7 @@
return FALSE
if(draining)
- to_chat(H,"CONSUME protocols can only be used on one object at any single time.")
+ to_chat(H,span_info("CONSUME protocols can only be used on one object at any single time."))
return FALSE
if(!A.can_consume_power_from())
return FALSE //if it returns text, we want it to continue so we can get the error message later.
@@ -23,28 +23,28 @@
siemens_coefficient *= 1.5
if (charge >= PRETERNIS_LEVEL_FULL - 25) //just to prevent spam a bit
- to_chat(H,"CONSUME protocol reports no need for additional power at this time.")
+ to_chat(H,span_notice("CONSUME protocol reports no need for additional power at this time."))
draining = FALSE
return TRUE
if(H.gloves)
if(!H.gloves.siemens_coefficient)
- to_chat(H,"NOTICE: [H.gloves] prevent electrical contact - CONSUME protocol aborted.")
+ to_chat(H, span_info("NOTICE: [H.gloves] prevent electrical contact - CONSUME protocol aborted."))
draining = FALSE
return TRUE
else
if(H.gloves.siemens_coefficient < 1)
- to_chat(H,"NOTICE: [H.gloves] are interfering with electrical contact - advise removal before activating CONSUME protocol.")
+ to_chat(H, span_info("NOTICE: [H.gloves] are interfering with electrical contact - advise removal before activating CONSUME protocol."))
siemens_coefficient *= H.gloves.siemens_coefficient
H.face_atom(A)
- H.visible_message("[H] starts placing their hands on [A]...", "You start placing your hands on [A]...")
+ H.visible_message(span_warning("[H] starts placing their hands on [A]..."), span_warning("You start placing your hands on [A]..."))
if(!do_after(H, 20, target = A))
- to_chat(H,"CONSUME protocol aborted.")
+ to_chat(H, span_info("CONSUME protocol aborted."))
draining = FALSE
return TRUE
- to_chat(H,"Extracutaneous implants detect viable power source. Initiating CONSUME protocol.")
+ to_chat(H, span_info("Extracutaneous implants detect viable power source. Initiating CONSUME protocol."))
var/done = FALSE
var/drain = 150 * siemens_coefficient
@@ -76,17 +76,17 @@
spark_system.start()
var/drained = A.consume_power_from(drain)
if(drained < drain)
- to_chat(H,"[A]'s power has been depleted, CONSUME protocol halted.")
+ to_chat(H,span_info("[A]'s power has been depleted, CONSUME protocol halted."))
done = TRUE
charge = clamp(charge + (drained * ELECTRICITY_TO_NUTRIMENT_FACTOR),PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(!done)
if(charge > (PRETERNIS_LEVEL_FULL - 25))
- to_chat(H,"CONSUME protocol complete. Physical nourishment refreshed.")
+ to_chat(H,span_info("CONSUME protocol complete. Physical nourishment refreshed."))
done = TRUE
else if(!(cycle % 4))
var/nutperc = round((charge / PRETERNIS_LEVEL_FULL) * 100)
- to_chat(H,"CONSUME protocol continues. Current satiety level: [nutperc]%.")
+ to_chat(H,span_info("CONSUME protocol continues. Current satiety level: [nutperc]%."))
else
done = TRUE
qdel(spark_system)
@@ -104,7 +104,7 @@
//CELL//
/obj/item/stock_parts/cell/can_consume_power_from()
if(charge < MIN_DRAINABLE_POWER)
- return "Power cell depleted, cannot consume power."
+ return span_info("Power cell depleted, cannot consume power.")
return TRUE
/obj/item/stock_parts/cell/consume_power_from(amount)
@@ -116,13 +116,13 @@
//APC//
/obj/machinery/power/apc/can_consume_power_from()
if(!cell)
- return "APC cell absent, cannot consume power."
+ return span_info("APC cell absent, cannot consume power.")
if(machine_stat & BROKEN)
- return "APC is damaged, cannot consume power."
+ return span_info("APC is damaged, cannot consume power.")
if(!operating || shorted)
- return "APC main breaker is off, cannot consume power."
+ return span_info("APC main breaker is off, cannot consume power.")
if(cell.charge < MIN_DRAINABLE_POWER)
- return "APC cell depleted, cannot consume power."
+ return span_info("APC cell depleted, cannot consume power.")
return TRUE
/obj/machinery/power/apc/consume_power_from(amount)
@@ -137,11 +137,11 @@
//SMES//
/obj/machinery/power/smes/can_consume_power_from()
if(machine_stat & BROKEN)
- return "SMES is damaged, cannot consume power."
+ return span_info("SMES is damaged, cannot consume power.")
if(!output_attempt)
- return "SMES is not outputting power, cannot consume power."
+ return span_info("SMES is not outputting power, cannot consume power.")
if(charge < MIN_DRAINABLE_POWER)
- return "SMES cells depleted, cannot consume power."
+ return span_info("SMES cells depleted, cannot consume power.")
return TRUE
/obj/machinery/power/smes/consume_power_from(amount)
@@ -153,13 +153,13 @@
//MECH//
/obj/vehicle/sealed/mecha/can_consume_power_from()
if(!cell)
- return "Mech power cell absent, cannot consume power."
+ return span_info("Mech power cell absent, cannot consume power.")
if(cell.charge < MIN_DRAINABLE_POWER)
- return "Mech power cell depleted, cannot consume power."
+ return span_info("Mech power cell depleted, cannot consume power.")
return TRUE
/obj/vehicle/sealed/mecha/consume_power_from(amount)
- to_chat(occupants,"Warning: Unauthorized access through sub-route 4, block H, detected.")
+ to_chat(occupants,span_danger("Warning: Unauthorized access through sub-route 4, block H, detected."))
if((cell.charge - amount) < MIN_DRAINABLE_POWER)
amount = max(cell.charge - MIN_DRAINABLE_POWER, 0)
cell.use(amount)
@@ -168,13 +168,13 @@
//BORG//
/mob/living/silicon/robot/can_consume_power_from()
if(!cell)
- return "Cyborg power cell absent, cannot consume power."
+ return span_info("Cyborg power cell absent, cannot consume power.")
if(cell.charge < MIN_DRAINABLE_POWER)
- return "Cyborg power cell depleted, cannot consume power."
+ return span_info("Cyborg power cell depleted, cannot consume power.")
return TRUE
/mob/living/silicon/robot/consume_power_from(amount)
- src << "Warning: Unauthorized access through sub-route 12, block C, detected."
+ to_chat(src,span_danger("Warning: Unauthorized access through sub-route 12, block C, detected."))
if((cell.charge - amount) < MIN_DRAINABLE_POWER)
amount = max(cell.charge - MIN_DRAINABLE_POWER, 0)
cell.use(amount)
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index 38338e01ba8..8c35d4a089a 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -67,15 +67,15 @@ adjust_charge - take a positive or negative value to adjust the charge level
H.adjustFireLoss(20)
H.Paralyze(50)
charge *= 0.4
- H.visible_message("Electricity ripples over [H]'s subdermal implants, smoking profusely.", \
- "A surge of searing pain erupts throughout your very being! As the pain subsides, a terrible sensation of emptiness is left in its wake.")
+ H.visible_message(span_danger("Electricity ripples over [H]'s subdermal implants, smoking profusely."), \
+ span_userdanger(">A surge of searing pain erupts throughout your very being! As the pain subsides, a terrible sensation of emptiness is left in its wake."))
if(EMP_LIGHT)
H.adjustBruteLoss(10)
H.adjustFireLoss(10)
H.Paralyze(20)
charge *= 0.6
- H.visible_message("A faint fizzling emanates from [H].", \
- "A fit of twitching overtakes you as your subdermal implants convulse violently from the electromagnetic disruption. Your sustenance reserves have been partially depleted from the blast.")
+ H.visible_message(span_danger("A faint fizzling emanates from [H]."), \
+ span_userdanger("A fit of twitching overtakes you as your subdermal implants convulse violently from the electromagnetic disruption. Your sustenance reserves have been partially depleted from the blast."))
/datum/species/preternis/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
SIGNAL_HANDLER
@@ -87,11 +87,11 @@ adjust_charge - take a positive or negative value to adjust the charge level
switch(emag_lvl)
if(1)
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 50) //HALP AM DUMB
- to_chat(H,"ALERT! MEMORY UNIT [rand(1,5)] FAILURE.NERVEOUS SYSTEM DAMAGE.")
+ to_chat(H,span_danger("ALERT! MEMORY UNIT [rand(1,5)] FAILURE.NERVEOUS SYSTEM DAMAGE."))
if(2)
H.overlay_fullscreen("preternis_emag", /atom/movable/screen/fullscreen/high)
H.throw_alert("preternis_emag", /atom/movable/screen/alert/high/preternis)
- to_chat(H,"ALERT! OPTIC SENSORS FAILURE.VISION PROCESSOR COMPROMISED.")
+ to_chat(H,span_danger("ALERT! OPTIC SENSORS FAILURE.VISION PROCESSOR COMPROMISED."))
/datum/species/preternis/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
. = ..()
@@ -128,7 +128,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
if (!eating_msg_cooldown)
eating_msg_cooldown = TRUE
addtimer(VARSET_CALLBACK(src, eating_msg_cooldown, FALSE), 2 MINUTES)
- to_chat(H,"NOTICE: Digestive subroutines are inefficient. Seek sustenance via power-cell C.O.N.S.U.M.E. technology induction.")
+ to_chat(H,span_info("NOTICE: Digestive subroutines are inefficient. Seek sustenance via power-cell C.O.N.S.U.M.E. technology induction."))
if(chem.current_cycle >= 20)
H.reagents.del_reagent(chem.type)
@@ -155,7 +155,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
/datum/species/preternis/proc/handle_charge(mob/living/carbon/human/H)
charge = clamp(charge - power_drain,PRETERNIS_LEVEL_NONE,PRETERNIS_LEVEL_FULL)
if(charge == PRETERNIS_LEVEL_NONE)
- to_chat(H,"Warning! System power criti-$#@$")
+ to_chat(H,span_danger("Warning! System power criti-$#@$"))
H.death()
else if(charge < PRETERNIS_LEVEL_STARVING)
H.throw_alert("preternis_charge", /atom/movable/screen/alert/preternis_charge, 3)
From d4353c0bbb2660b764a9657fa0e7a57051ce90dc Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:51:30 +0300
Subject: [PATCH 08/19]
---
code/__DEFINES/traits.dm | 1 +
.../living/carbon/human/species_types/preternis/preternis.dm | 2 +-
code/modules/mob/living/simple_animal/bot/medbot.dm | 3 +++
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index d83c5d41cce..433c353ca3f 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -226,6 +226,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NOSOFTCRIT "nosoftcrit"
#define TRAIT_MINDSHIELD "mindshield"
#define TRAIT_DISSECTED "dissected"
+#define TRAIT_MEDICALIGNORE "medical_ignore"
/// Can hear observers
#define TRAIT_SIXTHSENSE "sixth_sense"
#define TRAIT_FEARLESS "fearless"
diff --git a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
index 8c35d4a089a..9f6a53030ed 100644
--- a/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
+++ b/code/modules/mob/living/carbon/human/species_types/preternis/preternis.dm
@@ -9,7 +9,7 @@ adjust_charge - take a positive or negative value to adjust the charge level
id = "preternis"
default_color = "FFFFFF"
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
- inherent_traits = list(TRAIT_NOHUNGER,TRAIT_RADIMMUNE)
+ inherent_traits = list(TRAIT_NOHUNGER,TRAIT_RADIMMUNE,TRAIT_MEDICALIGNORE)
species_traits = list(EYECOLOR,HAIR,LIPS)
say_mod = "intones"
attack_verb = "assault"
diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm
index 83ef5d45be0..8a6831f8584 100644
--- a/code/modules/mob/living/simple_animal/bot/medbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/medbot.dm
@@ -445,6 +445,9 @@
if(emagged == 2) //Everyone needs our medicine. (Our medicine is toxins)
return TRUE
+ if(HAS_TRAIT(C,TRAIT_MEDICALIGNORE))
+ return FALSE
+
if(HAS_TRAIT(C,TRAIT_MEDIBOTCOMINGTHROUGH) && !HAS_TRAIT_FROM(C,TRAIT_MEDIBOTCOMINGTHROUGH,tag)) //the early medbot gets the worm (or in this case the patient)
return FALSE
From 0c20915690bd0b2aa56059612474406cbe0a38be Mon Sep 17 00:00:00 2001
From: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
Date: Thu, 18 Aug 2022 15:53:22 +0300
Subject: [PATCH 09/19] cryo
---
.../machinery/components/unary_devices/cryo.dm | 9 +++++++++
sound/machines/cryo_warning_ignore.ogg | Bin 0 -> 41609 bytes
2 files changed, 9 insertions(+)
create mode 100644 sound/machines/cryo_warning_ignore.ogg
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 7738ba4a36d..bcdbcecde9f 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -237,6 +237,15 @@ GLOBAL_VAR_INIT(cryo_overlay_cover_off, mutable_appearance('icons/obj/cryogenics
return
if(mob_occupant.stat == DEAD) // We don't bother with dead people.
return
+
+ if(HAS_TRAIT(mob_occupant,TRAIT_MEDICALIGNORE))
+ src.visible_message("[src] is unable to treat [mob_occupant] as they cannot be treated with conventional medicine.")
+ playsound(src,'sound/machines/cryo_warning_ignore.ogg',60,1)
+ on = FALSE
+ sleep(2)// here for timing. Shuts off right at climax of the effect before falloff.
+ update_icon()
+ return
+
if(mob_occupant.get_organic_health() >= mob_occupant.getMaxHealth()) // Don't bother with fully healed people.
if(iscarbon(mob_occupant))
var/mob/living/carbon/C = mob_occupant
diff --git a/sound/machines/cryo_warning_ignore.ogg b/sound/machines/cryo_warning_ignore.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..6b95567cb54dc2a85034e7ee3ad29ad2050c2839
GIT binary patch
literal 41609
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