Mochi Review

And a couple of other things too.
This commit is contained in:
SabreML
2021-03-30 16:06:37 +01:00
parent 790d306a01
commit f54b7e5f71
2 changed files with 41 additions and 26 deletions
+37 -22
View File
@@ -1,8 +1,8 @@
/proc/gibs(atom/location, datum/dna/MobDNA) //CARN MARKER
new /obj/effect/gibspawner/generic(get_turf(location), MobDNA)
/proc/gibs(atom/location, datum/dna/mob_dna) //CARN MARKER
new /obj/effect/gibspawner/generic(get_turf(location), mob_dna)
/proc/hgibs(atom/location, datum/dna/MobDNA)
new /obj/effect/gibspawner/human(get_turf(location), MobDNA)
/proc/hgibs(atom/location, datum/dna/mob_dna)
new /obj/effect/gibspawner/human(get_turf(location), mob_dna)
/proc/xgibs(atom/location)
new /obj/effect/gibspawner/xeno(get_turf(location))
@@ -16,40 +16,55 @@
var/list/gibamounts = list()
var/list/gibdirections = list() //of lists
/obj/effect/gibspawner/New(location, datum/dna/MobDNA)
/obj/effect/gibspawner/Initialize(mapload, datum/dna/mob_dna)
..()
ASSERT(length(gibtypes) == length(gibamounts))
ASSERT(length(gibamounts) == length(gibdirections))
if(istype(loc, /turf)) //basically if a badmin spawns it
Gib(loc, MobDNA)
if(isturf(loc))
spawn_gibs(loc, mob_dna)
/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA)
return INITIALIZE_HINT_QDEL // qdel once done
/**
* Spawns the gibs (and sparks if applicable) from the gib spawner.
*
* Arguments:
* * location - The position to spawn the gibs on.
* * mob_dna - The [/datum/dna] controlling the blood DNA and colour of the gibs.
*/
/obj/effect/gibspawner/proc/spawn_gibs(atom/location, datum/dna/mob_dna)
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sparks)
do_sparks(2, 1, location)
for(var/I in 1 to length(gibtypes))
if(!gibamounts[I])
for(var/gibtype in 1 to length(gibtypes))
if(!gibamounts[gibtype])
continue
for(var/J in 1 to gibamounts[I])
var/gib_type = gibtypes[I]
for(var/I in 1 to gibamounts[gibtype])
var/gib_type = gibtypes[gibtype]
gib = new gib_type(location)
gib.blood_DNA = list()
gib_dna(gib, MobDNA)
gib_dna(gib, mob_dna)
var/list/directions = gibdirections[I]
var/list/directions = gibdirections[gibtype]
if(length(directions))
gib.streak(directions)
qdel(src) // qdel once done
/**
* Assigns DNA and blood colour to mob gibs.
*
* Returns FALSE if there was no DNA data to transfer to the gibs, and TRUE if there was.
* Arguments:
* * gib - The [/obj/effect/decal/cleanable/blood/gibs] that is being edited.
* * mob_dna - The [/datum/dna] which is being transferred onto the gib.
*/
/obj/effect/gibspawner/proc/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!mob_dna)
return FALSE
/obj/effect/gibspawner/proc/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/MobDNA)
if(!MobDNA)
return TRUE
gib.basecolor = MobDNA.species.blood_color
gib.basecolor = mob_dna.species.blood_color
gib.update_icon()
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
gib.blood_DNA[mob_dna.unique_enzymes] = mob_dna.blood_type
return TRUE
@@ -15,8 +15,8 @@
gibamounts[6] = pick(0,1,2)
..()
/obj/effect/gibspawner/human/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/MobDNA)
if(..()) // Probably a monkey
/obj/effect/gibspawner/human/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!..()) // Probably admin spawned
gib.blood_DNA["Non-human DNA"] = "A+"
/obj/effect/gibspawner/xeno
@@ -28,8 +28,8 @@
gibamounts[6] = pick(0,1,2)
..()
/obj/effect/gibspawner/xeno/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/MobDNA)
if(..())
/obj/effect/gibspawner/xeno/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/mob_dna)
if(!..())
gib.blood_DNA["UNKNOWN DNA"] = "X*"
/obj/effect/gibspawner/robot