system's mostly working
need to polish out the get_blood_dna_list runtime
This commit is contained in:
@@ -104,6 +104,7 @@
|
||||
#define isaquatic(A) (is_species(A, /datum/species/aquatic))
|
||||
#define isinsect(A) (is_species(A, /datum/species/insect))
|
||||
#define isxenoperson(A) (is_species(A, /datum/species/xeno))
|
||||
#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime))
|
||||
|
||||
#define CITADEL_MENTOR_OOC_COLOUR "#224724"
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
|
||||
#define BLOOD_COLOR_HUMAN "#dc0000"
|
||||
#define BLOOD_COLOR_XENO "#94a83c"
|
||||
#define BLOOD_COLOR_OIL "#301d02"
|
||||
#define BLOOD_COLOR_SYNTHETIC "#0b0730"
|
||||
#define BLOOD_COLOR_SYNTHETIC "#3f48aa"
|
||||
#define BLOOD_COLOR_SLIME "#00ff90"
|
||||
#define BLOOD_COLOR_LIZARD "#db004D"
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
|
||||
/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color)
|
||||
var/obj/item/I = parent
|
||||
if(!I.blood_DNA.len)
|
||||
return
|
||||
if(!_icon)
|
||||
_icon = 'icons/effects/blood.dmi'
|
||||
if(!_icon_state)
|
||||
@@ -21,15 +19,22 @@
|
||||
// It's something which takes on the look of other items, probably
|
||||
icon = I.icon
|
||||
icon_state = I.icon_state
|
||||
var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.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(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
|
||||
blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY)
|
||||
pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state))
|
||||
var/static/list/blood_splatter_appearances = list()
|
||||
//try to find a pre-processed blood-splatter. otherwise, make a new one
|
||||
var/index = "[REF(icon)]-[icon_state]"
|
||||
pic = blood_splatter_appearances[index]
|
||||
|
||||
if(!pic)
|
||||
var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.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(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
|
||||
blood_splatter_icon.Blend(I.blood_DNA_to_color(), ICON_MULTIPLY) //Color the blood with our dna stuff
|
||||
pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state))
|
||||
blood_splatter_appearances[index] = pic
|
||||
return TRUE
|
||||
|
||||
/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override)
|
||||
var/atom/A = parent
|
||||
override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a"
|
||||
override[EXAMINE_POSITION_BEFORE] = " blood-stained "
|
||||
return COMPONENT_EXNAME_CHANGED
|
||||
return COMPONENT_EXNAME_CHANGED
|
||||
+16
-22
@@ -319,36 +319,31 @@
|
||||
|
||||
//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()
|
||||
if(get_blood_id() == null)
|
||||
if(get_blood_id() != "blood")
|
||||
return
|
||||
return list("ANIMAL DNA" = "Y-")
|
||||
|
||||
/mob/living/carbon/get_blood_dna_list()
|
||||
if(get_blood_id() == null)
|
||||
return
|
||||
var/list/blood_dna = list()
|
||||
if(dna)
|
||||
blood_dna[dna.unique_enzymes] = dna.blood_type
|
||||
else
|
||||
blood_dna["UNKNOWN DNA"] = "X*"
|
||||
return blood_dna
|
||||
for(var/bluhduh in GLOB.blood_types)
|
||||
if(get_blood_id() != bluhduh) //are we a null for blood type?
|
||||
var/list/dna_to_add
|
||||
dna_to_add = list("Non-human DNA" = random_blood_type()) //generate a random bloodtype for it.
|
||||
return dna_to_add
|
||||
|
||||
var/list/blood_dna = list()
|
||||
if(dna)
|
||||
blood_dna[dna.unique_enzymes] = dna.blood_type
|
||||
else
|
||||
blood_dna["UNKNOWN DNA"] = "X*"
|
||||
return blood_dna
|
||||
|
||||
/mob/living/carbon/alien/get_blood_dna_list()
|
||||
return list("UNKNOWN DNA" = "X*")
|
||||
|
||||
//to add blood dna info to the object's blood_DNA list
|
||||
/atom/proc/transfer_blood_dna(list/blood_dna)
|
||||
if(!blood_DNA)
|
||||
blood_DNA = list()
|
||||
var/old_length = blood_DNA.len
|
||||
blood_DNA |= blood_dna
|
||||
if(blood_DNA.len > old_length)
|
||||
return TRUE//some new blood DNA was added
|
||||
|
||||
//to add a mob's dna info into an object's blood_DNA list.
|
||||
/atom/proc/transfer_mob_blood_dna(mob/living/L)
|
||||
// Returns 0 if we have that blood already
|
||||
var/new_blood_dna = L.get_blood_dna_list()
|
||||
var/list/new_blood_dna = L.get_blood_dna_list()
|
||||
if(!new_blood_dna)
|
||||
return FALSE
|
||||
var/old_length = blood_DNA_length()
|
||||
@@ -364,9 +359,8 @@
|
||||
return FALSE
|
||||
return add_blood_DNA(blood_dna)
|
||||
|
||||
/atom/proc/blood_DNA_to_color(mob/living/M)
|
||||
/atom/proc/blood_DNA_to_color()
|
||||
var/list/colors = list()//first we make a list of all bloodtypes present
|
||||
var/list/blood_DNA = M.get_blood_dna_list()
|
||||
for(var/bloop in blood_DNA)
|
||||
if(colors[blood_DNA[bloop]])
|
||||
colors[blood_DNA[bloop]]++
|
||||
@@ -741,4 +735,4 @@ Proc for attack log creation, because really why not
|
||||
if(filter_data[name])
|
||||
filter_data -= name
|
||||
update_filters()
|
||||
return TRUE
|
||||
return TRUE
|
||||
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
|
||||
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
|
||||
if(!isspaceturf(T))
|
||||
new /obj/effect/decal/cleanable/blood/xenoblood(T)
|
||||
new /obj/effect/decal/cleanable/xenoblood(T)
|
||||
|
||||
//Station buster Tunguska
|
||||
/obj/effect/meteor/tunguska
|
||||
|
||||
@@ -1,46 +1,72 @@
|
||||
// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood
|
||||
/obj/effect/decal/cleanable/xenoblood
|
||||
name = "xeno blood"
|
||||
desc = "It's green and acidic. It looks like... <i>blood?</i>"
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
bloodiness = BLOOD_AMOUNT_PER_DECAL
|
||||
blood_state = BLOOD_STATE_BLOOD
|
||||
color = BLOOD_COLOR_XENO
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/Initialize()
|
||||
/obj/effect/decal/cleanable/xenoblood/Initialize()
|
||||
. = ..()
|
||||
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs
|
||||
/obj/effect/decal/cleanable/xenoblood/xsplatter
|
||||
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
|
||||
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs
|
||||
name = "xeno gibs"
|
||||
desc = "Gnarly..."
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "xgib1"
|
||||
layer = LOW_OBJ_LAYER
|
||||
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
|
||||
mergeable_decal = FALSE
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/up
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/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)
|
||||
new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc)
|
||||
if(!step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
|
||||
return
|
||||
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/up
|
||||
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/down
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/down
|
||||
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/body
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/body
|
||||
random_icon_states = list("xgibhead", "xgibtorso")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/torso
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/torso
|
||||
random_icon_states = list("xgibtorso")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/limb
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/limb
|
||||
random_icon_states = list("xgibleg", "xgibarm")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/core
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/core
|
||||
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/larva
|
||||
random_icon_states = list("xgiblarva1", "xgiblarva2")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body
|
||||
/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body
|
||||
random_icon_states = list("xgiblarvahead", "xgiblarvatorso")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/tracks
|
||||
color = BLOOD_COLOR_XENO
|
||||
/obj/effect/decal/cleanable/blood/xtracks
|
||||
icon_state = "xtracks"
|
||||
random_icon_states = null
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xenoblood/tracks/Initialize()
|
||||
/obj/effect/decal/cleanable/blood/xtracks/Initialize()
|
||||
. = ..()
|
||||
add_blood_DNA(list("Unknown DNA" = "X*"))
|
||||
add_blood_DNA(list("Unknown DNA" = "X*"))
|
||||
@@ -15,9 +15,8 @@
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/transfer_blood_dna()
|
||||
..()
|
||||
update_icon()
|
||||
/obj/effect/decal/cleanable/blood/add_blood_DNA(list/blood_dna)
|
||||
return TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna()
|
||||
. = ..()
|
||||
@@ -30,6 +29,7 @@
|
||||
name = "dried blood"
|
||||
desc = "Looks like it's been here a while. Eew."
|
||||
bloodiness = 0
|
||||
color = "#3a0505"
|
||||
|
||||
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
|
||||
. = ..()
|
||||
@@ -62,10 +62,6 @@
|
||||
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
|
||||
return TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna()
|
||||
. = ..()
|
||||
update_icon()
|
||||
@@ -82,7 +78,8 @@
|
||||
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
|
||||
. = ..()
|
||||
if(gib_overlay)
|
||||
var/icon/gibz = new(icon, icon_state + "-overlay")
|
||||
var/mutable_appearance/gibz = mutable_appearance(icon, icon_state + "-overlay", layer = -LOW_OBJ_LAYER)
|
||||
gibz.color = null
|
||||
add_overlay(gibz)
|
||||
reagents.add_reagent("liquidgibs", 5)
|
||||
|
||||
|
||||
@@ -2,122 +2,154 @@
|
||||
/obj/effect/gibspawner
|
||||
var/sparks = 0 //whether sparks spread
|
||||
var/virusProb = 20 //the chance for viruses to spread on the gibs
|
||||
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
|
||||
var/sound_to_play = 'sound/effects/blobattack.ogg'
|
||||
var/sound_vol = 60
|
||||
var/list/gibtypes = list() //typepaths of the gib decals to spawn
|
||||
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
|
||||
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
|
||||
var/fleshcolor
|
||||
var/bloodcolor
|
||||
|
||||
/obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA, list/datum/disease/diseases)
|
||||
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases)
|
||||
. = ..()
|
||||
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
to_chat(world, "<span class='danger'>Gib list length mismatch!</span>")
|
||||
if(gibtypes.len != gibamounts.len)
|
||||
stack_trace("Gib list amount length mismatch!")
|
||||
return
|
||||
if(gibamounts.len != gibdirections.len)
|
||||
stack_trace("Gib list dir length mismatch!")
|
||||
return
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
|
||||
if(sound_to_play && isnum(sound_vol))
|
||||
playsound(src, sound_to_play, sound_vol, TRUE)
|
||||
|
||||
if(sparks)
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(2, 1, loc)
|
||||
s.start()
|
||||
|
||||
|
||||
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.
|
||||
if(source_mob)
|
||||
dna_to_add = source_mob.get_blood_dna_list() //ez pz
|
||||
else if(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.
|
||||
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.
|
||||
|
||||
|
||||
for(var/i = 1, i<= gibtypes.len, i++)
|
||||
if(gibamounts[i])
|
||||
for(var/j = 1, j<= gibamounts[i], j++)
|
||||
var/gibType = gibtypes[i]
|
||||
gib = new gibType(loc)
|
||||
gib = new gibType(loc, diseases)
|
||||
if(iscarbon(loc))
|
||||
var/mob/living/carbon/digester = loc
|
||||
digester.stomach_contents += gib
|
||||
|
||||
if(MobDNA)
|
||||
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
|
||||
else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
|
||||
gib.blood_DNA["Non-human DNA"] = "A+"
|
||||
gib.add_blood_DNA(dna_to_add)
|
||||
|
||||
var/list/directions = gibdirections[i]
|
||||
if(isturf(loc))
|
||||
if(directions.len)
|
||||
gib.streak(directions)
|
||||
gib.update_icon()
|
||||
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
|
||||
|
||||
/obj/effect/gibspawner/generic
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(2,2,1)
|
||||
gibamounts = list(2, 2, 1)
|
||||
sound_vol = 40
|
||||
|
||||
/obj/effect/gibspawner/generic/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
|
||||
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
|
||||
. = ..()
|
||||
if(!gibdirections.len)
|
||||
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
|
||||
return ..()
|
||||
|
||||
/obj/effect/gibspawner/generic/animal
|
||||
gib_mob_type = /mob/living/simple_animal/pet
|
||||
|
||||
|
||||
|
||||
/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)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
|
||||
gib_mob_type = /mob/living/carbon/human
|
||||
sound_vol = 50
|
||||
|
||||
/obj/effect/gibspawner/human/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
|
||||
. = ..()
|
||||
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/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso).
|
||||
/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)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1)
|
||||
|
||||
/obj/effect/gibspawner/humanbodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
|
||||
. = ..()
|
||||
/obj/effect/gibspawner/human/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
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/up, /obj/effect/decal/cleanable/blood/xenoblood/gibs/down, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/limb, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
|
||||
gib_mob_type = /mob/living/carbon/alien
|
||||
|
||||
/obj/effect/gibspawner/xeno/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
|
||||
. = ..()
|
||||
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/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso).
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/core, /obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/xenoblood/gibs/torso)
|
||||
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1)
|
||||
|
||||
|
||||
/obj/effect/gibspawner/xenobodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
|
||||
. = ..()
|
||||
/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/larva
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva/body)
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
|
||||
gibamounts = list(1, 1, 1, 1)
|
||||
gib_mob_type = /mob/living/carbon/alien/larva
|
||||
|
||||
/obj/effect/gibspawner/larva/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
|
||||
. = ..()
|
||||
if(!gibdirections.len)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
|
||||
return ..()
|
||||
|
||||
/obj/effect/gibspawner/larvabodypartless
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva, /obj/effect/decal/cleanable/blood/xenoblood/gibs/larva)
|
||||
/obj/effect/gibspawner/larva/bodypartless
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
|
||||
gibamounts = list(1, 1, 1)
|
||||
|
||||
/obj/effect/gibspawner/larvabodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
|
||||
. = ..()
|
||||
/obj/effect/gibspawner/larva/bodypartless/Initialize()
|
||||
if(!gibdirections.len)
|
||||
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)
|
||||
gibamounts = list(1,1,1,1,1,1)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1)
|
||||
gib_mob_type = /mob/living/silicon
|
||||
|
||||
/obj/effect/gibspawner/robot/Initialize()
|
||||
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)
|
||||
. = ..()
|
||||
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 ..()
|
||||
@@ -304,7 +304,7 @@
|
||||
/mob/living/carbon/alien/add_splatter_floor(turf/T, small_drip)
|
||||
if(!T)
|
||||
T = get_turf(src)
|
||||
var/obj/effect/decal/cleanable/blood/xenoblood/B = locate() in T.contents
|
||||
var/obj/effect/decal/cleanable/xenoblood/B = locate() in T.contents
|
||||
if(!B)
|
||||
B = new(T)
|
||||
B.add_blood_DNA(list("UNKNOWN DNA" = "X*"))
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
|
||||
//Makes the mob have the color of the blood pool it came out of
|
||||
var/newcolor = rgb(149, 10, 10)
|
||||
if(istype(B, /obj/effect/decal/cleanable/blood/xenoblood))
|
||||
if(istype(B, /obj/effect/decal/cleanable/xenoblood))
|
||||
newcolor = rgb(43, 186, 0)
|
||||
add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY)
|
||||
// but only for a few seconds
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
var/heat_protection = 0.5
|
||||
var/leaping = 0
|
||||
gib_type = /obj/effect/decal/cleanable/blood/xenoblood/gibs
|
||||
gib_type = /obj/effect/decal/cleanable/xenoblood/xgibs
|
||||
unique_name = 1
|
||||
|
||||
var/static/regex/alien_name_regex = new("alien (larva|sentinel|drone|hunter|praetorian|queen)( \\(\\d+\\))?")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if(with_bodyparts)
|
||||
new /obj/effect/gibspawner/xeno(drop_location())
|
||||
else
|
||||
new /obj/effect/gibspawner/xenobodypartless(drop_location())
|
||||
new /obj/effect/gibspawner/xeno/bodypartless(drop_location())
|
||||
|
||||
/mob/living/carbon/alien/gib_animation()
|
||||
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-a")
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
if(with_bodyparts)
|
||||
new /obj/effect/gibspawner/larva(drop_location())
|
||||
else
|
||||
new /obj/effect/gibspawner/larvabodypartless(drop_location())
|
||||
new /obj/effect/gibspawner/larva/bodypartless(drop_location())
|
||||
|
||||
/mob/living/carbon/alien/larva/gib_animation()
|
||||
new /obj/effect/temp_visual/gib_animation(loc, "gibbed-l")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
if(with_bodyparts)
|
||||
new /obj/effect/gibspawner/human(drop_location(), dna, get_static_viruses())
|
||||
else
|
||||
new /obj/effect/gibspawner/humanbodypartless(drop_location(), dna, get_static_viruses())
|
||||
new /obj/effect/gibspawner/human/bodypartless(drop_location(), dna, get_static_viruses())
|
||||
|
||||
/mob/living/carbon/human/spawn_dust(just_ash = FALSE)
|
||||
if(just_ash)
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
)
|
||||
|
||||
if(blood)
|
||||
target_types += /obj/effect/decal/cleanable/blood/xenoblood
|
||||
target_types += /obj/effect/decal/cleanable/xenoblood
|
||||
target_types += /obj/effect/decal/cleanable/blood
|
||||
target_types += /obj/effect/decal/cleanable/trail_holder
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch
|
||||
childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55)
|
||||
|
||||
wanted_objects = list(/obj/effect/decal/cleanable/blood/xenoblood/gibs, /obj/effect/decal/cleanable/blood/gibs/)
|
||||
wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/)
|
||||
var/obj/item/udder/gutlunch/udder = null
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize()
|
||||
|
||||
@@ -13,6 +13,12 @@
|
||||
/mob/living/carbon/human/species/xeno
|
||||
race = /datum/species/xeno
|
||||
|
||||
/mob/living/carbon/human/species/ipc
|
||||
race = /datum/species/ipc
|
||||
|
||||
/mob/living/carbon/human/species/roundstartslime
|
||||
race = /datum/species/jelly/roundstartslime
|
||||
|
||||
/mob/living/carbon/human/resist()
|
||||
. = ..()
|
||||
if(wear_suit && wear_suit.breakouttime)//added in human cuff breakout proc
|
||||
|
||||
Reference in New Issue
Block a user