diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index e8e91b73f0..0d2e88042d 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -276,8 +276,6 @@
#define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool.
#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength)
-//Blood color
-#define COMSIG_BLOOD_COLOR "blood_DNA_to_color" //RGB blood stuff
//Food
#define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder)
diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index ae385339be..ffad931cd8 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -91,13 +91,7 @@ GLOBAL_LIST_INIT(all_types_bloods,list(
"BUG"
))
-GLOBAL_LIST_INIT(blood_types, list(
- "blood",
- "jellyblood"
+GLOBAL_LIST_INIT(blood_reagent_types, list(
+ /datum/reagent/blood,
+ /datum/reagent/blood/jellyblood
))
-
-GLOBAL_LIST_INIT(blood_id_types, list(
- "blood" = /datum/reagent/blood,
- "jellyblood" = /datum/reagent/blood/jellyblood
- ))
-
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 85a89178bb..960e1cc513 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -505,9 +505,8 @@
return final_rgb
/atom/proc/clean_blood()
- if(islist(blood_DNA))
- blood_DNA = null
- return TRUE
+ . = blood_DNA? TRUE : FALSE
+ blood_DNA = null
/atom/proc/wash_cream()
return TRUE
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 89f70efc38..3a2ce43315 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -266,7 +266,7 @@
for(var/atom/movable/AM in things_to_clear) //Scorches away blood and forensic evidence, although the SSU itself is unaffected
SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG)
AM.clean_blood()
- AM.fingerprints = list()
+ AM.fingerprints = null
var/datum/component/radioactive/contamination = AM.GetComponent(/datum/component/radioactive)
if(contamination)
qdel(contamination)
diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm
index 748b8c9453..3afc0ef671 100644
--- a/code/game/objects/effects/decals/cleanable/aliens.dm
+++ b/code/game/objects/effects/decals/cleanable/aliens.dm
@@ -29,13 +29,19 @@
var/list/diseases = list()
SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases)
var/direction = pick(directions)
- for(var/i in 0 to pick(0, 200; 1, 150; 2, 50))
- sleep(2)
- if(i > 0)
+ var/dist = 0
+ if(prob(50)) //yes this and the one below are different for a reason.
+ if(prob(25))
+ dist = 2
+ else
+ dist = 1
+ if(dist)
+ for(var/i in 1 to dist)
+ sleep(2)
var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases)
splat.transfer_blood_dna(blood_DNA, diseases)
- if(!step_to(src, get_step(src, direction), 0))
- break
+ if(!step_to(src, get_step(src, direction), 0))
+ break
/obj/effect/decal/cleanable/blood/gibs/xeno/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm
index 9680dc2034..b6b93850f1 100644
--- a/code/game/objects/effects/decals/cleanable/gibs.dm
+++ b/code/game/objects/effects/decals/cleanable/gibs.dm
@@ -5,6 +5,7 @@
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
+ bloodiness = 0 //This isn't supposed to be bloody.
var/body_colors = "#e3ba84" //a default color just in case.
var/gibs_reagent_id = /datum/reagent/liquidgibs
var/gibs_bloodtype = "A+"
@@ -19,7 +20,6 @@
add_blood_DNA(list("Non-human DNA" = gibs_bloodtype, diseases))
update_icon()
-
/obj/effect/decal/cleanable/blood/gibs/update_icon()
add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY)
cut_overlays()
@@ -44,13 +44,18 @@
var/list/diseases = list()
SEND_SIGNAL(src, COMSIG_GIBS_STREAK, directions, diseases)
var/direction = pick(directions)
- for(var/i in 0 to pick(0, 200; 1, 150; 2, 50))
- sleep(2)
- if(i > 0)
+ var/dist = 0
+ if(prob(50)) //yes this and the one below are different for a reason.
+ if(prob(25))
+ dist = 2
+ else
+ dist = 1
+ if(dist)
+ for(var/i in 1 to dist)
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.transfer_blood_dna(blood_DNA, diseases)
- if(!step_to(src, get_step(src, direction), 0))
- break
+ if(!step_to(src, get_step(src, direction), 0))
+ break
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index d42d7d6b88..ab0d1caca4 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -5,12 +5,12 @@
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_BLOOD
- bloodiness = MAX_SHOE_BLOODINESS
+ bloodiness = BLOOD_AMOUNT_PER_DECAL
color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere.
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
if (C.blood_DNA)
- blood_DNA |= C.blood_DNA.Copy()
+ blood_DNA |= C.blood_DNA
update_icon()
..()
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 4887483334..c23311cf22 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -407,19 +407,17 @@ SLIME SCANNER
// Blood Level
if(M.has_dna())
var/mob/living/carbon/C = M
- var/blood_id = C.get_blood_id()
- if(blood_id)
+ var/blood_typepath = C.get_blood_id()
+ if(blood_typepath)
if(ishuman(C))
if(H.bleed_rate)
msg += "Subject is bleeding!\n"
var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
var/blood_type = C.dna.blood_type
- if(blood_id != ("blood" || "jellyblood"))//special blood substance
- var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
+ if(!(blood_typepath in GLOB.blood_reagent_types))
+ var/datum/reagent/R = GLOB.chemical_reagents_list[blood_typepath]
if(R)
blood_type = R.name
- else
- blood_type = blood_id
if(C.scan_blood_volume() <= (BLOOD_VOLUME_SAFE*C.blood_ratio) && C.scan_blood_volume() > (BLOOD_VOLUME_OKAY*C.blood_ratio))
msg += "LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]\n"
else if(C.scan_blood_volume() <= (BLOOD_VOLUME_OKAY*C.blood_ratio))
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 324b40ac7f..36c4992e8f 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -399,11 +399,14 @@
. = ..()
/obj/item/stack/proc/copy_evidences(obj/item/stack/from)
- blood_DNA = from.blood_DNA
- fingerprints = from.fingerprints
- fingerprintshidden = from.fingerprintshidden
- fingerprintslast = from.fingerprintslast
- //TODO bloody overlay
+ if(from.blood_DNA)
+ blood_DNA = from.blood_DNA.Copy()
+ if(from.fingerprints)
+ fingerprints = from.fingerprints.Copy()
+ if(from.fingerprintshidden)
+ fingerprintshidden = from.fingerprintshidden.Copy()
+ if(from.fingerprintslast)
+ fingerprintslast = from.fingerprintslast
/obj/item/stack/microwave_act(obj/machinery/microwave/M)
if(istype(M) && M.dirty < 100)
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 4a3522fbd4..bfffe0fc60 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -35,7 +35,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
/obj/item/storage/toolbox/update_icon()
..()
cut_overlays()
- if(blood_DNA && blood_DNA.len)
+ if(length(blood_DNA))
add_blood_overlay()
if(has_latches)
var/icon/I = icon('icons/obj/storage.dmi', latches)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index 206e3dfc5c..fc9e138f4b 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -347,7 +347,6 @@
icon_state = "dualsaber[item_color][wielded]"
else
icon_state = "dualsaber0"
-
clean_blood()
/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user)
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 794010d9c0..1bb1b8533a 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -753,7 +753,7 @@
var/turf/T = get_turf(target)
if(T)
for(var/obj/effect/decal/cleanable/blood/B in view(T, 2))
- if(B.blood_state == "blood")
+ if(B.blood_state == BLOOD_STATE_BLOOD)
if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam
temp += 30
else
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index e6bb3f1295..492da73e66 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -246,7 +246,7 @@
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
var/mob/living/carbon/human/target = null
- var/list/mob/living/carbon/human/possible = list()
+ var/list/mob/living/carbon/human/possible
var/obj/item/voodoo_link = null
var/cooldown_time = 30 //3s
var/cooldown = 0
@@ -284,7 +284,7 @@
user.unset_machine()
/obj/item/voodoo/attack_self(mob/user)
- if(!target && possible.len)
+ if(!target && length(possible))
target = input(user, "Select your victim!", "Voodoo") as null|anything in possible
return
@@ -324,12 +324,12 @@
cooldown = world.time + cooldown_time
/obj/item/voodoo/proc/update_targets()
- LAZYINITLIST(possible)
+ possible = null
if(!voodoo_link)
return
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
if(md5(H.dna.uni_identity) in voodoo_link.fingerprints)
- possible |= H
+ LAZYOR(possible, H)
/obj/item/voodoo/proc/GiveHint(mob/victim,force=0)
if(prob(50) || force)
diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm
index 634401d0d8..3b1b00fc3a 100644
--- a/code/modules/detectivework/detective_work.dm
+++ b/code/modules/detectivework/detective_work.dm
@@ -9,8 +9,7 @@
else if(M.bloody_hands > 1)
if(add_blood_DNA(M.blood_DNA, M.diseases))
M.bloody_hands--
- if(!suit_fibers)
- suit_fibers = list()
+ LAZYINITLIST(suit_fibers)
var/fibertext
var/item_multiplier = isitem(src)?1.2:1
if(M.wear_suit)
@@ -66,7 +65,6 @@
fingerprintslast = M.ckey
-
//Set ignoregloves to add prints irrespective of the mob having gloves on.
/atom/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE)
if(!M || !M.key)
@@ -93,15 +91,10 @@
fingerprints[full_print] = full_print
/atom/proc/transfer_fingerprints_to(atom/A)
- // Make sure everything are lists.
- LAZYINITLIST(A.fingerprints)
- LAZYINITLIST(A.fingerprintshidden)
- LAZYINITLIST(fingerprints)
- LAZYINITLIST(fingerprintshidden)
-
- // Transfer
if(fingerprints)
- A.fingerprints |= fingerprints.Copy() //detective
+ LAZYINITLIST(A.fingerprints)
+ A.fingerprints |= fingerprints //detective
if(fingerprintshidden)
- A.fingerprintshidden |= fingerprintshidden.Copy() //admin
- A.fingerprintslast = fingerprintslast
\ No newline at end of file
+ LAZYINITLIST(A.fingerprintshidden)
+ A.fingerprintshidden |= fingerprintshidden //admin
+ A.fingerprintslast = fingerprintslast
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index 30fde325df..c569a2c59a 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -33,7 +33,7 @@
bleed_rate = 0
return
- if(bleed_rate <= 0)
+ if(bleed_rate < 0)
bleed_rate = 0
if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here.
@@ -94,12 +94,12 @@
//We want an accurate reading of .len
listclearnulls(BP.embedded_objects)
- temp_bleed += 0.5*BP.embedded_objects.len
+ temp_bleed += 0.5 * BP.embedded_objects.len
if(brutedamage >= 20)
temp_bleed += (brutedamage * 0.013)
- bleed_rate = max(bleed_rate - 0.50, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases
+ bleed_rate = max(bleed_rate - 0.5, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases
if(bleed_rate && !bleedsuppress && !(HAS_TRAIT(src, TRAIT_FAKEDEATH)))
bleed(bleed_rate)
@@ -289,8 +289,7 @@
drop.update_icon()
return
else
- temp_blood_DNA = list()
- temp_blood_DNA |= drop.blood_DNA.Copy() //we transfer the dna from the drip to the splatter
+ temp_blood_DNA = drop.blood_DNA.Copy() //transfer dna from drip to splatter.
qdel(drop)//the drip is replaced by a bigger splatter
else
drop = new(T, get_static_viruses())
diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm
index 11c4d7dbef..689ab56842 100644
--- a/code/modules/mob/living/carbon/carbon_defines.dm
+++ b/code/modules/mob/living/carbon/carbon_defines.dm
@@ -49,7 +49,6 @@
//Gets filled up in create_bodyparts()
var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems)
- var/list/leg_bodyparts = list()
var/icon_render_key = ""
var/static/list/limb_icon_cache = list()
diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm
index 5bffc4e276..5020cc7379 100644
--- a/code/modules/mob/living/carbon/damage_procs.dm
+++ b/code/modules/mob/living/carbon/damage_procs.dm
@@ -87,7 +87,7 @@
if(!forced && HAS_TRAIT(src, TRAIT_TOXINLOVER)) //damage becomes healing and healing becomes damage
amount = -amount
if(amount > 0)
- blood_volume -= 3*amount // x5 is too much, x3 should be still penalizing enough.
+ blood_volume -= 3 * amount //5x was too much, this is punishing enough.
else
blood_volume -= amount
return ..()
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 460dd6ea51..f37673a5a3 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -59,7 +59,7 @@
var/obj/effect/decal/cleanable/blood/footprints/oldFP = locate(/obj/effect/decal/cleanable/blood/footprints) in T
if(oldFP && (oldFP.blood_state == S.blood_state && oldFP.color == bloodtype_to_color(S.last_bloodtype)))
return
- S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state]-BLOOD_LOSS_PER_STEP)
+ S.bloody_shoes[S.blood_state] = max(0, S.bloody_shoes[S.blood_state] - BLOOD_LOSS_PER_STEP)
var/obj/effect/decal/cleanable/blood/footprints/FP = new /obj/effect/decal/cleanable/blood/footprints(T)
FP.blood_state = S.blood_state
FP.entered_dirs |= dir
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 0d909f5642..0e8e009ca8 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -494,7 +494,7 @@
if(isturf(next))
if(bloodiness)
var/obj/effect/decal/cleanable/blood/tracks/B = new(loc)
- if(blood_DNA && blood_DNA.len)
+ if(length(blood_DNA))
B.blood_DNA |= blood_DNA.Copy()
var/newdir = get_dir(next, loc)
if(newdir == dir)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index f6f9204d09..c7e574594b 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1062,7 +1062,7 @@
if((HAS_TRAIT(C, TRAIT_NOMARROW)))
return
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
- C.blood_volume += 0.01 //we'll have synthetics from medbay.
+ C.blood_volume += 0.25
..()
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index e2c77fa177..097be23c40 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -773,8 +773,6 @@
px_y = 12
stam_heal_tick = 4
max_stamina_damage = 50
- var/blood_state = BLOOD_STATE_NOT_BLOODY
- var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
/obj/item/bodypart/l_leg/is_disabled()
if(HAS_TRAIT(owner, TRAIT_PARALYSIS_L_LEG))
@@ -833,8 +831,6 @@
px_y = 12
max_stamina_damage = 50
stam_heal_tick = 4
- var/blood_state = BLOOD_STATE_NOT_BLOODY
- var/list/bloody_legs = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0)
/obj/item/bodypart/r_leg/is_disabled()
if(HAS_TRAIT(owner, TRAIT_PARALYSIS_R_LEG))
diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm
index 51866b6719..eed8f62e10 100644
--- a/code/modules/surgery/bodyparts/helpers.dm
+++ b/code/modules/surgery/bodyparts/helpers.dm
@@ -17,7 +17,6 @@
return L
return FALSE
-
/mob/proc/has_left_hand(check_disabled = TRUE)
return TRUE
@@ -29,7 +28,7 @@
return FALSE
/mob/living/carbon/alien/larva/has_left_hand()
- return 1
+ return TRUE
/mob/proc/has_right_hand(check_disabled = TRUE)
@@ -43,9 +42,7 @@
return FALSE
/mob/living/carbon/alien/larva/has_right_hand()
- return 1
-
-
+ return TRUE
/mob/proc/has_left_leg()
return TRUE
@@ -67,7 +64,6 @@
else
return FALSE
-
//Limb numbers
/mob/proc/get_num_arms(check_disabled = TRUE)
return 2
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 51784bdc61..2d70f44e06 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -220,21 +220,12 @@ obj/item/organ/heart/cybernetic/upgraded/on_life()
addtimer(VARSET_CALLBACK(src, dose_available, TRUE), 5 MINUTES)
ramount = 0
-
-
/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"
organ_flags = ORGAN_SYNTHETIC
-/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/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
index 32474263c4..41eccb7054 100644
--- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
+++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
@@ -1,7 +1,7 @@
//body bluids
/datum/reagent/consumable/semen
name = "Semen"
- description = "Sperm from some animal. I bet you'll drink this out of a bucket someday."
+ description = "Sperm from some animal. Useless for anything but insemination, really."
taste_description = "something salty"
taste_mult = 2 //Not very overpowering flavor
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
@@ -32,15 +32,15 @@
icon_state = "semen1"
random_icon_states = list("semen1", "semen2", "semen3", "semen4")
-/obj/effect/decal/cleanable/semen/New()
- ..()
- dir = pick(1,2,4,8)
+/obj/effect/decal/cleanable/semen/Initialize(mapload)
+ . = ..()
+ dir = GLOB.cardinals
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S)
if(S.blood_DNA)
- blood_DNA |= S.blood_DNA.Copy()
- ..()
+ blood_DNA |= S.blood_DNA
+ return ..()
/datum/reagent/consumable/femcum
name = "Female Ejaculate"
@@ -65,15 +65,15 @@
blood_state = null
bloodiness = null
-/obj/effect/decal/cleanable/femcum/New()
- ..()
- dir = pick(1,2,4,8)
+/obj/effect/decal/cleanable/femcum/Initialize(mapload)
+ . = ..()
+ dir = GLOB.cardinals
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F)
if(F.blood_DNA)
- blood_DNA |= F.blood_DNA.Copy()
- ..()
+ blood_DNA |= F.blood_DNA
+ return ..()
/datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume)
if(!istype(T))