diff --git a/code/game/atoms.dm b/code/game/atoms.dm index cb3be24598..71e06abd15 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -394,8 +394,10 @@ blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY) - add_overlay(blood_splatter_icon) + + blood_overlay = image(blood_splatter_icon) + blood_overlay.color = blood_DNA_to_color() + add_overlay(blood_overlay) /obj/item/clothing/gloves/add_blood(mob/living/carbon/M) . = ..() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e851140252..38466c232e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -113,6 +113,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Blood overlay things var/blood_color + var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite /obj/item/Initialize() diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 60bd1477f9..25c91cc9ca 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -262,7 +262,8 @@ "HF" = list("HF", "SY"), "X*" = list("X*", "SY"), "SY" = list("SY"), - "GEL" = list("GEL","SY") + "GEL" = list("GEL","SY"), + "BUG" = list("BUG", "SY") ) var/safe = bloodtypes_safe[bloodtype] diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 6f05eb393d..4d3bbecdaa 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -10,6 +10,7 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null liked_food = GROSS + exotic_bloodtype = "BUG" /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "pestkiller") diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index a04f6030e6..750491f1d6 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -6,6 +6,7 @@ say_mod = "chirps" species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR) mutantlungs = /obj/item/organ/lungs/slime + mutant_heart = /obj/item/organ/heart/slime mutant_bodyparts = list("mam_tail", "mam_ears", "mam_snouts", "taur") //CIT CHANGE default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None") //CIT CHANGE inherent_traits = list(TRAIT_TOXINLOVER) diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index d15d989384..2b1d6cb5db 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,6 +15,7 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth + exotic_bloodtype = "BUG" /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index b5f479ba98..9e5c9c26c4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -502,4 +502,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp . = BLOOD_COLOR_OIL if("GEL")// slimepeople blood, rgb 0, 255, 144 . = BLOOD_COLOR_SLIME + if("BUG") + . = "#a37c0f" //add more stuff to the switch if you have more blood colors for different types diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ff80fb88cf..e0a42147e2 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -30,13 +30,13 @@ if(C.get_blood_id() == bluhduh) if(method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) - C.reagents.add_reagent("toxin", reac_volume * 0.5) + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 0.5) if(data && (data["blood_type"] == "GEL") && (C.dna.species.exotic_blood != "jellyblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //filthy xenos bloooood + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 1.5) //filthy xenos bloooood if(data && (data["blood_type"] == "HF") && (C.dna.species.exotic_blood != "oilblood")) - C.reagents.add_reagent("toxin", reac_volume * 1) //don't fucking put oil in people + C.reagents.add_reagent("bonehurtingjuice", reac_volume * 1) //don't drink oil, silly vampire if(data && (data["blood_type"] == "X*") && (C.dna.species.exotic_blood != "xenoblood")) - C.reagents.add_reagent("toxin", reac_volume * 1.5) //acid blooood + C.reagents.add_reagent("sacid", reac_volume * 1.5) //acid blooood, dumb vampire else C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM) @@ -465,7 +465,7 @@ //We only get 30u to start with... /datum/reagent/fuel/holyoil/reaction_obj(obj/O, reac_volume) - . = ..() + . = ..() if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O reac_volume = min(reac_volume, M.amount) diff --git a/code/modules/research/designs/machine_desings/machine_designs_medical.dm b/code/modules/research/designs/machine_desings/machine_designs_medical.dm index 65b3d74f71..2f95954e01 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_medical.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_medical.dm @@ -89,3 +89,11 @@ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING build_path = /obj/item/circuitboard/machine/clonescanner category = list("Medical Machinery") + +/datum/design/board/bloodbankgen + name = "Machine Design (Blood Bank Generator Board)" + desc = "The circuit board for a blood bank generator." + id = "bloodbankgen" + build_path = /obj/item/circuitboard/machine/bloodbankgen + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + category = list ("Medical Machinery") diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index c6487c92f0..10ee1674f1 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -60,7 +60,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag") + design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 5852cba0c9..4568f85c88 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -45,7 +45,7 @@ /obj/item/organ/heart/prepare_eat() var/obj/S = ..() - S.icon_state = "heart-off" + S.icon_state = "[icon_base]-off" return S /obj/item/organ/heart/on_life() @@ -70,6 +70,12 @@ H.stop_sound_channel(CHANNEL_HEARTBEAT) beat = BEAT_NONE +obj/item/organ/heart/slime + name = "slime heart" + desc = "It seems we've gotten to the slimy core of the matter." + icon_state = "heart-s-on" + icon_base = "heart-s" + /obj/item/organ/heart/cursed name = "cursed heart" desc = "A heart that, when inserted, will force you to pump it manually." @@ -161,6 +167,19 @@ return Stop() +/obj/item/organ/heart/ipc + name = "IPC heart" + desc = "An electronic pump that regulates hydraulic functions, they have an auto-restart after EMPs." + icon_state = "heart-c" + synthetic = TRUE + +/obj/item/organ/heart/ipc/emp_act() + . = ..() + if(. & EMP_PROTECT_SELF) + return + Stop() + addtimer(CALLBACK(src, .proc/Restart), 10) + /obj/item/organ/heart/freedom name = "heart of freedom" desc = "This heart pumps with the passion to give... something freedom." diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 1a3b344566..1bddaaf3b1 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index d786bd6e48..7ccf16c6fc 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -168,6 +168,7 @@ miss_sound = 'sound/weapons/slashmiss.ogg' liked_food = MEAT | FRUIT disliked_food = TOXIC + exotic_bloodtype = "BUG" /datum/species/insect/spec_death(gibbed, mob/living/carbon/human/H) if(H) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index 049a7ab3d8..dafa8a6122 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -12,6 +12,7 @@ default_features = list("ipc_screen" = "Blank", "ipc_antenna" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc mutanttongue = /obj/item/organ/tongue/robot/ipc + mutant_heart = /obj/item/organ/heart/ipc exotic_blood = "oilblood" exotic_bloodtype = "HF"