From 883e6709a1f40ccd93642b417f961919f257d18e Mon Sep 17 00:00:00 2001
From: SabreML <57483089+SabreML@users.noreply.github.com>
Date: Fri, 18 Dec 2020 21:44:49 +0000
Subject: [PATCH 1/4] Update gibs.dm
---
code/game/objects/effects/gibs.dm | 1 +
1 file changed, 1 insertion(+)
diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm
index 5503ac91dd1..39f3f250e00 100644
--- a/code/game/objects/effects/gibs.dm
+++ b/code/game/objects/effects/gibs.dm
@@ -41,6 +41,7 @@
gib.blood_DNA = list()
if(MobDNA)
+ gib.color = MobDNA.species.blood_color
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
else if(istype(src, /obj/effect/gibspawner/xeno))
gib.blood_DNA["UNKNOWN DNA"] = "X*"
From fb2e7c6ecdcd8197b5fb7ab8734b426de37730e9 Mon Sep 17 00:00:00 2001
From: SabreML <57483089+SabreML@users.noreply.github.com>
Date: Sat, 19 Dec 2020 15:38:26 +0000
Subject: [PATCH 2/4] Slime People Colours
---
code/game/objects/effects/gibs.dm | 46 ++++++++++++++++---------------
1 file changed, 24 insertions(+), 22 deletions(-)
diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm
index 39f3f250e00..3b56364babf 100644
--- a/code/game/objects/effects/gibs.dm
+++ b/code/game/objects/effects/gibs.dm
@@ -18,37 +18,39 @@
/obj/effect/gibspawner/New(location, datum/dna/MobDNA)
..()
+ ASSERT(length(gibtypes) == length(gibamounts))
+ ASSERT(length(gibamounts) == length(gibdirections))
- if(istype(loc,/turf)) //basically if a badmin spawns it
+ if(istype(loc, /turf)) //basically if a badmin spawns it
Gib(loc, MobDNA)
/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA = null)
- if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
- to_chat(world, "Gib list length mismatch!")
- return
-
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sparks)
do_sparks(2, 1, location)
- 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(location)
+ for(var/I in 1 to length(gibtypes))
+ if(!gibamounts[I])
+ continue
+ for(var/J in 1 to gibamounts[I])
+ var/gib_type = gibtypes[I]
+ gib = new gib_type(location)
+ gib.blood_DNA = list()
+ if(MobDNA)
+ gib.basecolor = MobDNA.species.blood_color
+ gib.update_icon()
+ gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
- gib.blood_DNA = list()
- if(MobDNA)
- gib.color = MobDNA.species.blood_color
- gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
- else if(istype(src, /obj/effect/gibspawner/xeno))
- gib.blood_DNA["UNKNOWN DNA"] = "X*"
- else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
- gib.blood_DNA["Non-human DNA"] = "A+"
- var/list/directions = gibdirections[i]
- if(directions.len)
- gib.streak(directions)
+ else if(istype(src, /obj/effect/gibspawner/xeno))
+ gib.blood_DNA["UNKNOWN DNA"] = "X*"
- qdel(src)
+ else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
+ gib.blood_DNA["Non-human DNA"] = "A+"
+
+ var/list/directions = gibdirections[I]
+ if(length(directions))
+ gib.streak(directions)
+
+ qdel(src) // qdel once done
From b7aa7265e9706cf18175b10a648f624d8f1b0132 Mon Sep 17 00:00:00 2001
From: SabreML <57483089+SabreML@users.noreply.github.com>
Date: Tue, 22 Dec 2020 19:14:27 +0000
Subject: [PATCH 3/4] Desnowflakeification V1
---
code/game/objects/effects/gibs.dm | 21 +++++++++----------
.../objects/effects/spawners/gibspawner.dm | 8 +++++++
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm
index 3b56364babf..015163c2639 100644
--- a/code/game/objects/effects/gibs.dm
+++ b/code/game/objects/effects/gibs.dm
@@ -24,7 +24,7 @@
if(istype(loc, /turf)) //basically if a badmin spawns it
Gib(loc, MobDNA)
-/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA = null)
+/obj/effect/gibspawner/proc/Gib(atom/location, datum/dna/MobDNA)
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sparks)
@@ -38,19 +38,18 @@
gib = new gib_type(location)
gib.blood_DNA = list()
- if(MobDNA)
- gib.basecolor = MobDNA.species.blood_color
- gib.update_icon()
- gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
-
- else if(istype(src, /obj/effect/gibspawner/xeno))
- gib.blood_DNA["UNKNOWN DNA"] = "X*"
-
- else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
- gib.blood_DNA["Non-human DNA"] = "A+"
+ gib_dna(gib, MobDNA)
var/list/directions = gibdirections[I]
if(length(directions))
gib.streak(directions)
qdel(src) // qdel once done
+
+/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.update_icon()
+ gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index 998fb4a2868..e0bf0edb307 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -15,6 +15,10 @@
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
+ gib.blood_DNA["Non-human DNA"] = "A+"
+
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up,/obj/effect/decal/cleanable/blood/gibs/xeno/down,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno,/obj/effect/decal/cleanable/blood/gibs/xeno/body,/obj/effect/decal/cleanable/blood/gibs/xeno/limb,/obj/effect/decal/cleanable/blood/gibs/xeno/core)
gibamounts = list(1,1,1,1,1,1,1)
@@ -24,6 +28,10 @@
gibamounts[6] = pick(0,1,2)
..()
+/obj/effect/gibspawner/xeno/gib_dna(obj/effect/decal/cleanable/blood/gibs/gib, datum/dna/MobDNA)
+ if(..())
+ gib.blood_DNA["UNKNOWN DNA"] = "X*"
+
/obj/effect/gibspawner/robot
sparks = 1
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/robot/up,/obj/effect/decal/cleanable/blood/gibs/robot/down,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot,/obj/effect/decal/cleanable/blood/gibs/robot/limb)
From f54b7e5f710f294856bf207725305345dd00067d Mon Sep 17 00:00:00 2001
From: SabreML
Date: Tue, 30 Mar 2021 16:06:37 +0100
Subject: [PATCH 4/4] Mochi Review
And a couple of other things too.
---
code/game/objects/effects/gibs.dm | 59 ++++++++++++-------
.../objects/effects/spawners/gibspawner.dm | 8 +--
2 files changed, 41 insertions(+), 26 deletions(-)
diff --git a/code/game/objects/effects/gibs.dm b/code/game/objects/effects/gibs.dm
index 015163c2639..f97b15c1112 100644
--- a/code/game/objects/effects/gibs.dm
+++ b/code/game/objects/effects/gibs.dm
@@ -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
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index e0bf0edb307..3ca1b7d5ae5 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -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