Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ethereal Visual + Mechanical Overhaul. #1966

Merged
merged 28 commits into from
Jun 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3c076a3
body iteration 1
KittyNoodle May 8, 2024
34ec6a2
this somehow worked first try
KittyNoodle May 8, 2024
608ffd5
horn updating
KittyNoodle May 22, 2024
0bf1de1
Merge branch 'Monkestation:master' into ethereals
KittyNoodle May 22, 2024
ecc755f
fix screenshits
KittyNoodle May 22, 2024
a16fce4
Merge branch 'ethereals' of https://github.com/KittyNoodle/Monkestati…
KittyNoodle May 22, 2024
69650fe
again
KittyNoodle May 22, 2024
1daa0e1
theory
KittyNoodle May 23, 2024
e84686c
when in doubt just start deleting
KittyNoodle May 23, 2024
19afeab
WOOOO
KittyNoodle May 24, 2024
fe4061f
tails, i have discovered a fundimental evil at the very core of mutan…
KittyNoodle May 25, 2024
52ed395
sprite fix
KittyNoodle May 25, 2024
d4da6ad
gah
KittyNoodle May 26, 2024
a4e9f5d
holy shit the ultrakill minotaur boss is so annoying
KittyNoodle May 26, 2024
f06da51
ethereal blood-based charge
KittyNoodle May 28, 2024
350f1a9
bugefix
KittyNoodle May 28, 2024
db898eb
from the top everyone
KittyNoodle May 28, 2024
33deeb1
again!
KittyNoodle May 28, 2024
92bb9c0
gah
KittyNoodle May 28, 2024
272671a
gah
KittyNoodle May 28, 2024
246f4ea
again
KittyNoodle May 29, 2024
f7358c5
oh right here too
KittyNoodle May 29, 2024
6020497
fixes upgraded cyborg chargers
KittyNoodle May 29, 2024
0162142
i literally never undefined it but whatever
KittyNoodle May 29, 2024
c1be586
examine text fix
KittyNoodle May 31, 2024
a08002d
horms v2
KittyNoodle Jun 1, 2024
a8dad5d
gah
KittyNoodle Jun 1, 2024
2bc94a4
cell
KittyNoodle Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -1291,6 +1291,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 @@ -202,6 +202,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV,
"TRAIT_ANALGESIA" = TRAIT_ANALGESIA,
"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 @@ -100,6 +100,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 @@ -236,7 +236,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 @@ -249,7 +249,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
Loading