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