okay we're starting to pass our blood type to bloodmeme now

STILL JUST FUCKING FOOTSTEPS LEFT THO GOD FUCKING DAMNIT
This commit is contained in:
Poojawa
2019-05-09 08:17:18 -05:00
parent 5ad532f723
commit 7b6a65ce3b
14 changed files with 299 additions and 219 deletions
+9 -2
View File
@@ -30,8 +30,6 @@ proc/get_racelist(var/mob/user)//This proc returns a list of species that 'user'
GLOB.whitelisted_species_list[S.id] = S.type
return GLOB.whitelisted_species_list
//blood types
GLOBAL_LIST_INIT(blood_types, list("blood","syntheticblood","xenoblood","oilblood","jellyblood"))
//Mammal Species
GLOBAL_LIST_EMPTY(mam_body_markings_list)
@@ -112,6 +110,15 @@ GLOBAL_LIST_INIT(paw_taurs, list(
"Tiger"
))
//blood types
GLOBAL_LIST_INIT(blood_types, list(
"blood",
"syntheticblood",
"xenoblood",
"oilblood",
"jellyblood"
))
GLOBAL_LIST_INIT(blood_id_types, list(
"blood" = /datum/reagent/blood,
"syntheticblood" = /datum/reagent/blood/synthetics,
+8
View File
@@ -322,6 +322,14 @@
if(!dna.species)
var/rando_race = pick(GLOB.roundstart_races)
dna.species = new rando_race()
if(isjellyperson(dna.species))
dna.blood_type = "GEL"
if(isipcperson(dna.species))
dna.blood_type = "HF"
if(isxenoperson(dna.species))
dna.blood_type = "X*"
if(islizard(dna.species))
dna.blood_type = "L"
//proc used to update the mob's appearance after its dna UI has been changed
/mob/living/carbon/proc/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0)
+16 -11
View File
@@ -319,29 +319,34 @@
//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list
/mob/living/proc/get_blood_dna_list()
to_chat(world, "living's get_blood_dna_list called")
for(var/bluhduh in GLOB.blood_types)
var/datum/reagent/blood/B = bluhduh
if(get_blood_id() != B)
return
if(get_blood_id() != "blood")
return
return list("ANIMAL DNA" = "Y-")
/mob/living/carbon/get_blood_dna_list()
to_chat(world, "carbon's get_blood_dna_list called by [src]")
for(var/bluhduh in GLOB.blood_types)
var/datum/reagent/blood/B = bluhduh
if(get_blood_id() != B)
to_chat(world, "[src] apparently doesn't have a valid blood type of [B]")
var/blood_id = get_blood_id()
to_chat(world, "We got [blood_id] for a return")
for(var/B in GLOB.blood_id_types)
to_chat(world, "checking blood_id_types")
var/list/bluhduh = typecacheof(B)
to_chat(world, "We bluhduh now, let's compare with [blood_id] now")
if(!blood_id in bluhduh)
to_chat(world, "[src] apparently doesn't have a valid blood type of blood, we're returning null due to [bluhduh]")
return
to_chat(world, "[src] has an approved type of blood.")
var/list/blood_dna = list()
to_chat(world, "blood_dna list made.")
if(dna)
blood_dna = get_blood_data(B)
to_chat(world, "[src] has dna, we know the bloodtype to be [dna.blood_type].")
blood_dna[dna.unique_enzymes] = dna.blood_type
else
to_chat(world, "[src] doesn't have dna I guess.")
blood_dna["UNKNOWN DNA"] = "X*"
to_chat(world, "blood_dna is [blood_dna]")
return blood_dna
/mob/living/carbon/alien/get_blood_dna_list()
to_chat(world, "alien's get_blood_dna_list called")
return list("UNKNOWN DNA" = "X*")
//to add a mob's dna info into an object's blood_DNA list.
@@ -27,8 +27,8 @@
mergeable_decal = FALSE
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidxenogibs", 5)
. = ..()
/obj/effect/decal/cleanable/blood/xenoblood/xgibs/proc/streak(list/directions)
set waitfor = 0
@@ -0,0 +1,158 @@
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
var/gib_overlay = FALSE
/obj/effect/decal/cleanable/blood/gibs/proc/guts()
if(gib_overlay)
var/icon/gibz = new(icon, icon_state + "-overlay")
add_overlay(gibz)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
if(istype(L) && has_gravity(loc))
playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1)
. = ..()
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.color = color
splat.bloodmeme = bloodmeme
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")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/old
name = "old rotting gibs"
desc = "Space Jesus, why didn't anyone clean this up? It smells terrible."
bloodiness = 0
/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
setDir(pick(1,2,4,8))
icon_state += "-old"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's gooey."
icon_state = "1"
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
bloodiness = 0
var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
/obj/effect/decal/cleanable/blood/gibs/human
/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidgibs", 5)
update_icon()
guts()
/obj/effect/decal/cleanable/blood/gibs/human/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/human/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
// Slime Gibs
/obj/effect/decal/cleanable/blood/gibs/slime
desc = "They look gooey and gruesome."
/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidslimegibs", 5)
update_icon()
guts()
/obj/effect/decal/cleanable/blood/gibs/slime/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidsyntheticgibs", 5)
update_icon()
guts()
@@ -29,7 +29,18 @@
update_icon()
/obj/effect/decal/cleanable/blood/update_icon()
color = blood_DNA_to_color()
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
color = bloodtype_to_color(R.data["blood_type"])
else if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
color = bloodtype_to_color(R.data["blood_type"])
else
color = blood_DNA_to_color()
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
@@ -76,150 +87,6 @@
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
var/gib_overlay = FALSE
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
. = ..()
if(gib_overlay)
var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1)
add_overlay(gibz)
if(!reagents)
reagents.add_reagent("liquidgibs", 5)
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
if(istype(L) && has_gravity(loc))
playsound(loc, 'sound/effects/gib_step.ogg', L.has_trait(TRAIT_LIGHT_STEP) ? 20 : 50, 1)
. = ..()
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.color = color
splat.bloodmeme = bloodmeme
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")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/old
name = "old rotting gibs"
desc = "Space Jesus, why didn't anyone clean this up? It smells terrible."
bloodiness = 0
/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
setDir(pick(1,2,4,8))
icon_state += "-old"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's gooey."
icon_state = "1"
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
bloodiness = 0
var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
/obj/effect/decal/cleanable/blood/gibs/slime
desc = "They look gooey and gruesome."
/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases)
. = ..()
if(gib_overlay)
var/image/gibz = image(icon, icon_state + "-overlay", layer = LOW_OBJ_LAYER-0.1)
add_overlay(gibz)
reagents.add_reagent("liquidslimegibs", 5)
for(var/datum/reagent/R in reagents.reagent_list)
// Get blood data from the blood reagent.
if(istype(R, /datum/reagent/blood))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
if(istype(R, /datum/reagent/liquidgibs))
if(R.data["blood_type"])
bloodmeme = R.data["blood_type"]
/obj/effect/decal/cleanable/blood/gibs/slime/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/body
random_icon_states = list("gibhead", "gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/torso
random_icon_states = list("gibtorso")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/limb
random_icon_states = list("gibleg", "gibarm")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/slime/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
gib_overlay = TRUE
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidsyntheticgibs", 5)
//BLOODY FOOTPRINTS
/obj/effect/decal/cleanable/blood/footprints
name = "tracks"
@@ -54,6 +54,7 @@
/obj/effect/decal/cleanable/oil/Initialize()
. = ..()
reagents.add_reagent("oil", 30)
reagents.add_reagent("liquidoilgibs", 5)
/obj/effect/decal/cleanable/oil/streak
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
@@ -33,16 +33,36 @@
var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling.
to_chat(world, "Attempting to add DNA to pass to gibs")
if(source_mob)
to_chat(world, "We got a source mob, [source_mob]")
dna_to_add = source_mob.get_blood_dna_list() //ez pz
else if(gib_mob_type)
to_chat(world, "We got a mob type, [gib_mob_type]")
var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs.
if(gib_mob_species)
to_chat(world, "We got a mob species too, [gib_mob_species]")
if(ishuman(temp_mob))
to_chat(world, "it's a human type mob for sure")
var/mob/living/carbon/human/H = temp_mob
H.set_species(gib_mob_species)
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
if(isjellyperson(H))
H.dna.blood_type = "GEL"
if(isipcperson(H))
H.dna.blood_type = "HF"
if(isxenoperson(H))
H.dna.blood_type = "X*"
if(islizard(H))
H.dna.blood_type = "L"
to_chat(world, "temp_mob is a [H.dna.species]")
dna_to_add = temp_mob.get_blood_dna_list()
qdel(H)
else
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it.
@@ -57,6 +77,8 @@
digester.stomach_contents += gib
gib.add_blood_DNA(dna_to_add)
// color them properly, please.
gib.update_icon()
var/list/directions = gibdirections[i]
if(isturf(loc))
@@ -82,7 +104,7 @@
/obj/effect/gibspawner/human
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/up, /obj/effect/decal/cleanable/blood/gibs/human/down, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/body, /obj/effect/decal/cleanable/blood/gibs/human/limb, /obj/effect/decal/cleanable/blood/gibs/human/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/human
@@ -95,7 +117,7 @@
/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/human/bodypartless/Initialize()
@@ -104,58 +126,43 @@
return ..()
/obj/effect/gibspawner/human/lizard
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/lizard
/obj/effect/gibspawner/slimeperson
/obj/effect/gibspawner/human/lizard/bodypartless
/obj/effect/gibspawner/human/slimeperson
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
sound_vol = 50
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/jelly
/obj/effect/gibspawner/slimeperson/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/slimeperson/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/slimeperson/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/human/slimeperson/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/torso)
gibamounts = list(2, 0, 1, 1, 2, 0)
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/up, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/down, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
/obj/effect/gibspawner/xeno/xenoperson
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/xeno
/obj/effect/gibspawner/xeno/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/core, /obj/effect/decal/cleanable/blood/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/xeno/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno/xenoperson
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/xeno
/obj/effect/gibspawner/xeno/xenoperson/bodypartless
/obj/effect/gibspawner/larva
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/xgibs/larva/body)
@@ -176,8 +183,6 @@
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
return ..()
/obj/effect/gibspawner/robot
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
@@ -190,15 +195,6 @@
gibamounts[6] = pick(0, 1, 2)
return ..()
/obj/effect/gibspawner/ipc
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/robot/ipc
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/ipc
/obj/effect/gibspawner/ipc/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
+17 -9
View File
@@ -230,15 +230,23 @@
return "blood"
/mob/living/carbon/get_blood_id()
var/mob/living/carbon/human/H = src
for(var/bluhduh in GLOB.blood_types[H.dna.species.exotic_blood])
if(!bluhduh)
to_chat(world, "[H] has [H.dna.species.exotic_blood] for blood")
return H.dna.species.exotic_blood
else if((NOBLOOD in H.dna.species.species_traits) || (has_trait(TRAIT_NOCLONE)))
return null
else
return bluhduh
to_chat(world, "carbon's get blood id called")
var/mob/living/carbon/C = src
if(ishuman(C))
to_chat(world, "[C] is a [dna.species]")
var/mob/living/carbon/human/H = C
if(H.dna.species.exotic_blood)
to_chat(world, "[H] has [H.dna.species.exotic_blood]")
return "[H.dna.species.exotic_blood]"
if(dna.species.exotic_blood)
to_chat(world, "[src] apparently isn't a human. but has exotic blood, [dna.species.exotic_blood].")
return dna.species.exotic_blood
else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE)))
to_chat(world, "[src] apparently isn't a human. And has no clone or no blood")
return
else
to_chat(world, "[src] apparently isn't a human, doesn't have snowflake blood either or something.")
return "blood"
// This is has more potential uses, and is probably faster than the old proc.
/proc/get_safe_blood(bloodtype)
+12 -1
View File
@@ -9,7 +9,10 @@
/mob/living/brain/Initialize()
. = ..()
create_dna(src)
stored_dna.initialize_dna(random_blood_type())
if(stored_dna.blood_type)
stored_dna.initialize_dna(stored_dna.blood_type)
else
stored_dna.initialize_dna(random_blood_type())
if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned)
var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it.
OB.brainmob = src
@@ -20,6 +23,14 @@
if(!stored_dna.species)
var/rando_race = pick(GLOB.roundstart_races)
stored_dna.species = new rando_race()
if(isjellyperson(stored_dna.species))
stored_dna.blood_type = "GEL"
if(isipcperson(stored_dna.species))
stored_dna.blood_type = "HF"
if(isxenoperson(stored_dna.species))
stored_dna.blood_type = "X*"
if(islizard(stored_dna.species))
stored_dna.blood_type = "L"
/mob/living/brain/Destroy()
if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting.
@@ -7,18 +7,18 @@
/mob/living/carbon/human/spawn_gibs(with_bodyparts)
if(isjellyperson(src))
if(with_bodyparts)
new /obj/effect/gibspawner/slimeperson(drop_location(), dna, get_static_viruses())
new /obj/effect/gibspawner/human/slimeperson(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/slimeperson/bodypartless(drop_location(), dna, get_static_viruses())
new /obj/effect/gibspawner/human/slimeperson/bodypartless(drop_location(), dna, get_static_viruses())
if(isipcperson(src))
new /obj/effect/gibspawner/ipc(drop_location(), dna, get_static_viruses())
new /obj/effect/gibspawner/robot/ipc(drop_location(), dna, get_static_viruses())
if(isxenoperson(src))
if(with_bodyparts)
new /obj/effect/gibspawner/xeno(drop_location(), dna, get_static_viruses())
new /obj/effect/gibspawner/xeno/xenoperson(drop_location(), dna, get_static_viruses())
else
new /obj/effect/gibspawner/xeno/bodypartless(drop_location(), dna, get_static_viruses())
new /obj/effect/gibspawner/xeno/xenoperson/bodypartless(drop_location(), dna, get_static_viruses())
else
if(with_bodyparts)
@@ -268,7 +268,16 @@ GLOBAL_LIST_EMPTY(roundstart_races)
regenerate_organs(C,old_species)
if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype)
C.dna.blood_type = exotic_bloodtype
if(isjellyperson(C))
C.dna.blood_type = "GEL"
if(isipcperson(C))
C.dna.blood_type = "HF"
if(isxenoperson(C))
C.dna.blood_type = "X*"
if(islizard(C))
C.dna.blood_type = "L"
else
C.dna.blood_type = exotic_bloodtype
if(old_species.mutanthands)
for(var/obj/item/I in C.held_items)
@@ -304,7 +313,16 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/datum/species/proc/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
if(C.dna.species.exotic_bloodtype)
C.dna.blood_type = random_blood_type()
if(isjellyperson(C))
C.dna.blood_type = "GEL"
if(isipcperson(C))
C.dna.blood_type = "HF"
if(isxenoperson(C))
C.dna.blood_type = "X*"
if(islizard(C))
C.dna.blood_type = "L"
else
C.dna.blood_type = random_blood_type()
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(TRUE)
for(var/X in inherent_traits)
@@ -8,7 +8,7 @@
id = "slimeperson"
limbs_id = "slime"
default_color = "00FFFF"
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
inherent_traits = list(TRAIT_TOXINLOVER)
mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur")
default_features = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "mam_body_markings" = "Plain", "mam_snouts" = "None", "taur" = "None")
+1
View File
@@ -729,6 +729,7 @@
#include "code\game\objects\effects\decals\misc.dm"
#include "code\game\objects\effects\decals\remains.dm"
#include "code\game\objects\effects\decals\cleanable\aliens.dm"
#include "code\game\objects\effects\decals\cleanable\gibs.dm"
#include "code\game\objects\effects\decals\cleanable\humans.dm"
#include "code\game\objects\effects\decals\cleanable\misc.dm"
#include "code\game\objects\effects\decals\cleanable\robots.dm"