Skip to content

Commit

Permalink
Ethereal Visual + Mechanical Overhaul. (#1966)
Browse files Browse the repository at this point in the history
* body iteration 1

* this somehow worked first try

* horn updating

* fix screenshits

* again

* theory

* when in doubt just start deleting

* WOOOO

* tails, i have discovered a fundimental evil at the very core of mutant organ code and its actually poisoning my mind. i have discovered something that could be the possible trigger for the admin spawn glitch and also a fix, that using a ressurection wand on the victim can fix it, but only if the victim is an ethereal. may archous save us all

* sprite fix

* gah

* holy shit the ultrakill minotaur boss is so annoying

* ethereal blood-based charge

* bugefix

* from the top everyone

* again!

* gah

* gah

* again

* oh right here too

* fixes upgraded cyborg chargers

* i literally never undefined it but whatever

* examine text fix

* horms v2

* gah

* cell
  • Loading branch information
KittyNoodle committed Jun 6, 2024
1 parent 4ec0189 commit 08bf643
Show file tree
Hide file tree
Showing 29 changed files with 603 additions and 81 deletions.
13 changes: 13 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,19 @@
#define ETHEREAL_CHARGE_DANGEROUS 3000


//Monkestation Addition: Ethereal Blood Charge
#define ETHEREAL_BLOOD_CHARGE_NONE 0
#define ETHEREAL_BLOOD_CHARGE_LOWEST_PASSIVE 56
#define ETHEREAL_BLOOD_CHARGE_LOW 140
#define ETHEREAL_BLOOD_CHARGE_NORMAL 280
#define ETHEREAL_BLOOD_CHARGE_ALMOSTFULL 420
#define ETHEREAL_BLOOD_CHARGE_FULL 560
#define ETHEREAL_BLOOD_CHARGE_OVERLOAD 700
#define ETHEREAL_BLOOD_CHARGE_DANGEROUS 840

#define ETHEREAL_BLOOD_CHARGE_FACTOR 0.224
//End of Monkestation addition

#define CRYSTALIZE_COOLDOWN_LENGTH (120 SECONDS)
#define CRYSTALIZE_PRE_WAIT_TIME (40 SECONDS)
#define CRYSTALIZE_DISARM_WAIT_TIME (120 SECONDS)
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1296,6 +1296,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// One can breath under water, you get me?
#define TRAIT_WATER_BREATHING "water_breathing"

/// Does not take damage from bloodloss(or any blood shenanigans)
#define TRAIT_NO_BLOODLOSS_DAMAGE "no_bloodloss_damage"

/// Do IPC's dream of doomsday? The answer is yes
#define TRAIT_ROBOT_CAN_BLEED "robots_can_bleed"
//monkestation edit end
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ethereal_horns, GLOB.ethereal_horns_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/ethereal, GLOB.ethereal_tail_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_antenna, GLOB.apid_antenna_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) //Monkestation Addition
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list) //Monkestation Addition
Expand Down
62 changes: 34 additions & 28 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,62 +59,66 @@
return pick(GLOB.backpacklist)

/proc/random_features()
if(!GLOB.tails_list.len)
if(!length(GLOB.tails_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/, GLOB.tails_list, add_blank = TRUE)
if(!GLOB.tails_list_human.len)
if(!length(GLOB.tails_list_human))
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human, add_blank = TRUE)
if(!GLOB.tails_list_lizard.len)
if(!length(GLOB.tails_list_lizard))
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard, add_blank = TRUE)
if(!GLOB.snouts_list.len)
if(!length(GLOB.snouts_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
if(!GLOB.horns_list.len)
if(!length(GLOB.horns_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns, GLOB.horns_list)
if(!GLOB.ears_list.len)
if(!length(GLOB.ears_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.horns_list)
if(!GLOB.frills_list.len)
if(!length(GLOB.frills_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/frills, GLOB.frills_list)
if(!GLOB.spines_list.len)
if(!length(GLOB.spines_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/spines, GLOB.spines_list)
if(!GLOB.legs_list.len)
if(!length(GLOB.legs_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list)
if(!GLOB.body_markings_list.len)
if(!length(GLOB.body_markings_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list)
if(!GLOB.wings_list.len)
if(!length(GLOB.wings_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list)
if(!GLOB.moth_wings_list.len)
if(!length(GLOB.moth_wings_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list)
if(!GLOB.moth_antennae_list.len)
if(!length(GLOB.moth_antennae_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_antennae, GLOB.moth_antennae_list)
if(!GLOB.moth_markings_list.len)
if(!length(GLOB.moth_markings_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list)
if(!GLOB.pod_hair_list.len)
if(!length(GLOB.pod_hair_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/pod_hair, GLOB.pod_hair_list)
//Monkestation Addition Start
if(!GLOB.apid_antenna_list.len)
if(!length(GLOB.ethereal_horns_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/ethereal_horns, GLOB.ethereal_horns_list)
if(!length(GLOB.ethereal_tail_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/ethereal, GLOB.ethereal_tail_list)
if(!length(GLOB.apid_antenna_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_antenna, GLOB.apid_antenna_list)
if(!GLOB.apid_wings_list.len)
if(!length(GLOB.apid_wings_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/apid_wings, GLOB.apid_wings_list)
if(!GLOB.ipc_screens_list.len)
if(!length(GLOB.ipc_screens_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list)
if(!GLOB.ipc_antennas_list.len)
if(!length(GLOB.ipc_antennas_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
if(!GLOB.ipc_chassis_list.len)
if(!length(GLOB.ipc_chassis_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)
if(!GLOB.tails_list_monkey.len)
if(!length(GLOB.tails_list_monkey))
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/monkey, GLOB.tails_list_monkey)
if(!GLOB.anime_top_list.len)
if(!length(GLOB.anime_top_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/anime_head, GLOB.anime_top_list)
if(!GLOB.anime_middle_list.len)
if(!length(GLOB.anime_middle_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/anime_middle, GLOB.anime_middle_list)
if(!GLOB.anime_top_list.len)
if(!length(GLOB.anime_top_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/anime_bottom, GLOB.anime_bottom_list)
if(!GLOB.arachnid_appendages_list.len)
if(!length(GLOB.arachnid_appendages_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_appendages, GLOB.arachnid_appendages_list)
if(!GLOB.arachnid_chelicerae_list.len)
if(!length(GLOB.arachnid_chelicerae_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_chelicerae, GLOB.arachnid_chelicerae_list)
if(!GLOB.goblin_ears_list.len)
if(!length(GLOB.goblin_ears_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/goblin_ears, GLOB.goblin_ears_list)
if(!GLOB.floran_leaves_list.len)
if(!length(GLOB.floran_leaves_list))
init_sprite_accessory_subtypes(/datum/sprite_accessory/floran_leaves, GLOB.floran_leaves_list)
//Monkestation Addition End

Expand All @@ -137,6 +141,8 @@
"moth_wings" = pick(GLOB.moth_wings_list),
"moth_antennae" = pick(GLOB.moth_antennae_list),
"moth_markings" = pick(GLOB.moth_markings_list),
"ethereal_horns" = pick(GLOB.ethereal_horns_list), //Monkestation Addition
"ethereal_tail" = pick(GLOB.ethereal_tail_list), //Monkestation Addition
"apid_antenna" = pick(GLOB.apid_antenna_list), //Monkestation Addition
"apid_wings" = pick(GLOB.apid_wings_list), //Monkestation Addition
"ipc_screen" = pick(GLOB.ipc_screens_list), //Monkestation Addition
Expand Down
6 changes: 5 additions & 1 deletion code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ GLOBAL_LIST_EMPTY(ipc_chassis_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(apid_wings_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(caps_list)
GLOBAL_LIST_EMPTY(pod_hair_list)
GLOBAL_LIST_EMPTY(ethereal_horns_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(ethereal_tail_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(tails_list_monkey) //Monkestation Addition
GLOBAL_LIST_EMPTY(anime_top_list) //Monkestation Addition
GLOBAL_LIST_EMPTY(anime_middle_list) //Monkestation Addition
Expand All @@ -60,7 +62,7 @@ GLOBAL_LIST_INIT(color_list_ethereal, list(
"Burnt Orange" = "#cc4400",
"Cyan Blue" = "#00ffff",
"Dark Blue" = "#6666ff",
"Dark Fuschia" = "#cc0066",
"Dark Fuschia" = "#C70064", //Monkestation Edit: #CC0066 TO #C70064

"Dark Green" = "#37835b",
"Dark Red" = "#9c3030",
Expand All @@ -75,6 +77,8 @@ GLOBAL_LIST_INIT(color_list_ethereal, list(
"Red" = "#ff4d4d",
"Seafoam Green" = "#00fa9a",
"White" = "#f2f2f2",
"Fuschia" = "#FF0066", //Monkestation Addition
"Dark Purple" = "#502A77", //Monkestation Addition
))

GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list(
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ANALGESIA" = TRAIT_ANALGESIA,
"TRAIT_FAST_CLIMBER" = TRAIT_FAST_CLIMBER,
"TRAIT_ON_ELEVATED_SURFACE" = TRAIT_ON_ELEVATED_SURFACE,
"TRAIT_NO_BLOODLOSS_DAMAGE" = TRAIT_NO_BLOODLOSS_DAMAGE, // Monkestation Addition
"TRAIT_CANT_SIGN_SPELLS" = TRAIT_CANT_SIGN_SPELLS, // monke edit
),
/obj/item/bodypart = list(
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/food/meatslab.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
icon_state = "etherealmeat"
desc = "So shiny you feel like ingesting it might make you shine too"
food_reagents = list(/datum/reagent/consumable/liquidelectricity = 10)
tastes = list("pure electricity" = 2, "meat" = 1)
tastes = list("pure electricity" = 2, "glass" = 1) //MONKE EDIT: "meat" to "glass"
foodtypes = RAW | MEAT | TOXIC | GORE
venue_value = FOOD_MEAT_MUTANT

Expand Down
55 changes: 28 additions & 27 deletions code/modules/mob/living/blood.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,33 +40,34 @@

//Effects of bloodloss
var/word = pick("dizzy","woozy","faint")
switch(blood_volume)
if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL)
if(SPT_PROB(7.5, seconds_per_tick))
to_chat(src, span_userdanger("Blood starts to tear your skin apart. You're going to burst!"))
investigate_log("has been gibbed by having too much blood.", INVESTIGATE_DEATHS)
inflate_gib()
if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS)
if(SPT_PROB(5, seconds_per_tick))
to_chat(src, span_warning("You feel terribly bloated."))
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
if(SPT_PROB(2.5, seconds_per_tick))
to_chat(src, span_warning("You feel [word]."))
adjustOxyLoss(round(0.005 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1))
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
adjustOxyLoss(round(0.01 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1))
if(SPT_PROB(2.5, seconds_per_tick))
set_eye_blur_if_lower(12 SECONDS)
to_chat(src, span_warning("You feel very [word]."))
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
adjustOxyLoss(2.5 * seconds_per_tick)
if(SPT_PROB(7.5, seconds_per_tick))
Unconscious(rand(20,60))
to_chat(src, span_warning("You feel extremely [word]."))
if(-INFINITY to BLOOD_VOLUME_SURVIVE)
if(!HAS_TRAIT(src, TRAIT_NODEATH))
investigate_log("has died of bloodloss.", INVESTIGATE_DEATHS)
death()
if(!HAS_TRAIT(src, TRAIT_NO_BLOODLOSS_DAMAGE)) //monkestation addition
switch(blood_volume)
if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL)
if(SPT_PROB(7.5, seconds_per_tick))
to_chat(src, span_userdanger("Blood starts to tear your skin apart. You're going to burst!"))
investigate_log("has been gibbed by having too much blood.", INVESTIGATE_DEATHS)
inflate_gib()
if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS)
if(SPT_PROB(5, seconds_per_tick))
to_chat(src, span_warning("You feel terribly bloated."))
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
if(SPT_PROB(2.5, seconds_per_tick))
to_chat(src, span_warning("You feel [word]."))
adjustOxyLoss(round(0.005 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1))
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
adjustOxyLoss(round(0.01 * (BLOOD_VOLUME_NORMAL - blood_volume) * seconds_per_tick, 1))
if(SPT_PROB(2.5, seconds_per_tick))
set_eye_blur_if_lower(12 SECONDS)
to_chat(src, span_warning("You feel very [word]."))
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
adjustOxyLoss(2.5 * seconds_per_tick)
if(SPT_PROB(7.5, seconds_per_tick))
Unconscious(rand(20,60))
to_chat(src, span_warning("You feel extremely [word]."))
if(-INFINITY to BLOOD_VOLUME_SURVIVE)
if(!HAS_TRAIT(src, TRAIT_NODEATH))
investigate_log("has died of bloodloss.", INVESTIGATE_DEATHS)
death()

var/temp_bleed = 0
//Bleeding out
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/human/dummy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
target.dna.features["tail_lizard"] = "Smooth"
target.dna.features["tail_monkey"] = "Chimp" //Monkestation Addition
target.dna.features["pod_hair"] = "Ivy"
target.dna.features["ethereal_horns"] = "None" //Monkestation Addition
target.dna.features["ethereal_tail"] = "None" //Monkestation Addition
target.dna.features["ipc_screen"] = "BSOD" //Monkestation Addition
target.dna.features["ipc_chassis"] = "Bishop Cyberkinetics" //Monkestation Addition
target.dna.features["ipc_antenna"] = "None" //Monkestation Addition
Expand Down
32 changes: 25 additions & 7 deletions code/modules/mob/living/carbon/human/examine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -244,13 +244,31 @@
var/apparent_blood_volume = blood_volume
if((dna.species.use_skintones)&& skin_tone == "albino")
apparent_blood_volume -= 150 // enough to knock you down one tier
switch(apparent_blood_volume)
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
msg += "[t_He] [t_has] pale skin.\n"
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
msg += "<b>[t_He] look[p_s()] like pale death.</b>\n"
if(-INFINITY to BLOOD_VOLUME_BAD)
msg += "[span_deadsay("<b>[t_He] resemble[p_s()] a crushed, empty juice pouch.</b>")]\n"
if(isethereal(src))//Monkestation Changes Start:
if(appears_dead)
if(blood_volume < ETHEREAL_BLOOD_CHARGE_LOWEST_PASSIVE)
msg += "[span_deadsay("<b>[t_He] resemble[p_s()] a crushed, empty juice pouch.</b>")]\n"
else
switch(blood_volume)
if(ETHEREAL_BLOOD_CHARGE_OVERLOAD to ETHEREAL_BLOOD_CHARGE_DANGEROUS)
msg += "<b>Electricity is arcing off of [t_him]!</b>\n"
if(ETHEREAL_BLOOD_CHARGE_FULL to ETHEREAL_BLOOD_CHARGE_OVERLOAD)
msg += "[t_He] seems unusually bright, and [t_is] sparking occasionally.\n"
if(ETHEREAL_BLOOD_CHARGE_LOW to ETHEREAL_BLOOD_CHARGE_NORMAL)
msg += "[t_His] light is dimming.\n"
if(ETHEREAL_BLOOD_CHARGE_LOWEST_PASSIVE to ETHEREAL_BLOOD_CHARGE_LOW)
msg += "<b>[t_His] light is very dim, and is flickering slightly.</b>\n"
if(-INFINITY to ETHEREAL_BLOOD_CHARGE_LOWEST_PASSIVE)
msg += "<b>[t_His] light is very dim, and is flickering on and off.</b>\n"
msg += "[span_deadsay("<b>[t_His] movements seem painful and [t_his] breathing is erratic!</b>")]\n"
else
switch(apparent_blood_volume)
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
msg += "[t_He] [t_has] pale skin.\n"
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
msg += "<b>[t_He] look[p_s()] like pale death.</b>\n"
if(-INFINITY to BLOOD_VOLUME_BAD)
msg += "[span_deadsay("<b>[t_He] resemble[p_s()] a crushed, empty juice pouch.</b>")]\n"

if(is_bleeding())
var/list/obj/item/bodypart/bleeding_limbs = list()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* // MONKESTATION removal
/datum/species/ethereal
name = "\improper Ethereal"
id = SPECIES_ETHEREAL
Expand Down Expand Up @@ -232,3 +233,4 @@
)
return to_add
*/
8 changes: 4 additions & 4 deletions code/modules/power/apc/apc_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -208,13 +208,13 @@
if(cell.charge <= (cell.maxcharge / 2)) // ethereals can't drain APCs under half charge, this is so that they are forced to look to alternative power sources if the station is running low
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "safeties prevent draining!"), alert_timer_duration)
return
if(stomach.crystal_charge > charge_limit)
if(ethereal.blood_volume > charge_limit) //Monkestation Edit
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "charge is full!"), alert_timer_duration)
return
stomach.drain_time = world.time + APC_DRAIN_TIME
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "draining power"), alert_timer_duration)
if(do_after(user, APC_DRAIN_TIME, target = src))
if(cell.charge <= (cell.maxcharge / 2) || (stomach.crystal_charge > charge_limit))
if(cell.charge <= (cell.maxcharge / 2) || (ethereal.blood_volume > charge_limit)) //Monkestation Edit
return
balloon_alert(ethereal, "received charge")
stomach.adjust_charge(APC_POWER_GAIN)
Expand All @@ -224,14 +224,14 @@
if(cell.charge >= cell.maxcharge - APC_POWER_GAIN)
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "APC can't receive more power!"), alert_timer_duration)
return
if(stomach.crystal_charge < APC_POWER_GAIN)
if(ethereal.blood_volume < APC_POWER_GAIN) //Monkestation Edit
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "charge is too low!"), alert_timer_duration)
return
stomach.drain_time = world.time + APC_DRAIN_TIME
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, balloon_alert), ethereal, "transfering power"), alert_timer_duration)
if(!do_after(user, APC_DRAIN_TIME, target = src))
return
if((cell.charge >= (cell.maxcharge - APC_POWER_GAIN)) || (stomach.crystal_charge < APC_POWER_GAIN))
if((cell.charge >= (cell.maxcharge - APC_POWER_GAIN)) || (ethereal.blood_volume < APC_POWER_GAIN)) //Monkestation Edit
balloon_alert(ethereal, "can't transfer power!")
return
if(istype(stomach))
Expand Down
4 changes: 2 additions & 2 deletions code/modules/power/cell.dm
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@

if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal))

var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN
var/charge_limit = ETHEREAL_BLOOD_CHARGE_DANGEROUS - CELL_POWER_GAIN //Monkestation edit
var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach
if((stomach.drain_time > world.time) || !stomach)
return
Expand All @@ -251,7 +251,7 @@
to_chat(H, span_notice("You begin clumsily channeling power from [src] into your body."))
stomach.drain_time = world.time + CELL_DRAIN_TIME
if(do_after(user, CELL_DRAIN_TIME, target = src))
if((charge < CELL_POWER_DRAIN) || (stomach.crystal_charge > charge_limit))
if((charge < CELL_POWER_DRAIN) || (H.blood_volume > charge_limit)) //Monkestation edit
return
if(istype(stomach))
to_chat(H, span_notice("You receive some charge from [src], wasting some in the process."))
Expand Down
Loading

0 comments on commit 08bf643

Please sign in to comment.