From 5bd9b440a9a90e058e3fb07841f322c41f482be2 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Mon, 1 Nov 2021 11:27:42 -0400
Subject: [PATCH 01/18] Ashen tree!
---
.../mapgen/Cavegens/LavalandGenerator.dm | 2 +-
code/modules/mining/lavaland/ash_tree.dm | 68 ++++++++++++++++++
icons/obj/lavaland/ash_tree.dmi | Bin 0 -> 2637 bytes
tgstation.dme | 1 +
4 files changed, 70 insertions(+), 1 deletion(-)
create mode 100644 code/modules/mining/lavaland/ash_tree.dm
create mode 100644 icons/obj/lavaland/ash_tree.dmi
diff --git a/code/datums/mapgen/Cavegens/LavalandGenerator.dm b/code/datums/mapgen/Cavegens/LavalandGenerator.dm
index b895ad4414..3ce3821708 100644
--- a/code/datums/mapgen/Cavegens/LavalandGenerator.dm
+++ b/code/datums/mapgen/Cavegens/LavalandGenerator.dm
@@ -7,7 +7,7 @@
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/random = 40, /obj/structure/spawner/lavaland = 2, \
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/random = 30, /obj/structure/spawner/lavaland/legion = 3, \
SPAWN_MEGAFAUNA = 4, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10)
- flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2)
+ flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/ashtree = 1)
feature_spawn_list = list(/obj/structure/geyser/random = 1)
initial_closed_chance = 45
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
new file mode 100644
index 0000000000..d9775290f1
--- /dev/null
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -0,0 +1,68 @@
+//Houses the ash tree, a lava land tree that has been burning for quite some time making a maple like sweetener.
+
+/obj/structure/flora/ashtree
+ gender = PLURAL //same as other tree
+ icon = 'icons/obj/lavaland/ash_tree.dmi'
+ icon_state = "ashtree"
+ var/sap_icon_state = "ashtree_maple" //Are icon when we are full of honey or other sap
+ var/tabbed_icon_state = "ashtree_maple" //What we look like when tapping
+ name = "ashed tree"
+ desc = "A once large tree now burnt like the lands around it."
+ density = TRUE
+ pixel_x = -16
+ layer = FLY_LAYER
+ var/coal_amount = 5 //amout of coal in are tree, simular to logs
+ var/sap = FALSE //Do we have sap?
+ var/are_sap = /datum/reagent/consumable/honey //What reagent we have
+ //var/tapping_items = list(/obj/item/reagent_containers/glass) - current dosnt work commiting it out
+ var/harvest_sap_time = 60 //This is in seconds, and now long we wait till are tree is tapped
+ var/container_used
+ var/sap_amount
+
+/obj/structure/flora/ashtree/New()
+ ..()
+ if(prob(50))
+ sap = TRUE
+ icon_state = sap_icon_state
+ desc = "A once large tree now burnt like the lands around it. This one seems to have a sap still inside."
+ sap_amount = rand(60,120) //good amout of honey
+ coal_amount = rand(5,15) //We give a random amout
+
+/obj/structure/flora/ashtree/proc/harvest_sap()
+ desc = "A once large tree now burnt like the lands around it."
+ icon_state = "ashtree"
+ var/obj/item/reagent_containers/RG = container_used
+ if(RG.is_refillable()) //Incase someone was a dumb and used a lidded container
+ if(!RG.reagents.holder_full()) //Make sure that its not filling something thats full
+ RG.reagents.add_reagent(are_sap, min(RG.volume - RG.reagents.total_volume, sap_amount))
+ RG.forceMove(drop_location()) //We drop are used beaker and try to fill it with sap
+
+//Proc stolen from Trees
+//If you hit it with a sharp force aboe 0 item it chops it down, unlike trees tho it dosnt give wood as its already charcoal
+//Also dosnt have a stump
+/obj/structure/flora/ashtree/attackby(obj/item/W, mob/user, params)
+ if(istype(W, /obj/item/reagent_containers))
+ if(sap)
+ user.visible_message("[user] pokes [src] and places a container under the [W].","You set up [src] with [W].")
+ icon_state = tabbed_icon_state
+ sap = FALSE
+ container_used = W
+ W.forceMove(src) //Sadly when cutting down the tree we get deleted with it, otherwise this allows us to get sap!
+ addtimer(CALLBACK(src, .proc/harvest_sap), harvest_sap_time SECONDS)
+ else
+ to_chat(user, "There is no sap to collect.")
+
+ if(coal_amount && (!(flags_1 & NODECONSTRUCT_1)))
+ if(W.sharpness && W.force > 0)
+ if(W.hitsound)
+ playsound(get_turf(src), W.hitsound, 100, 0, 0)
+ user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of brittle sawing.")
+ if(do_after(user, 500/W.force, target = src)) //2.5 seconds with 20 force, 4 seconds with a hatchet, 10 seconds with a shard.
+ user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a crumbling tree.")
+ playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
+ for(var/i=1 to coal_amount)
+ new /obj/item/stack/sheet/mineral/coal(get_turf(src))
+ qdel(src)
+
+ else
+ return ..()
\ No newline at end of file
diff --git a/icons/obj/lavaland/ash_tree.dmi b/icons/obj/lavaland/ash_tree.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..7a8addafe59a5e1d7ec10a77543cdb358463b289
GIT binary patch
literal 2637
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
Date: Mon, 1 Nov 2021 11:40:01 -0400
Subject: [PATCH 02/18] New line linnet thing
---
code/modules/mining/lavaland/ash_tree.dm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index d9775290f1..383283e882 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -65,4 +65,5 @@
qdel(src)
else
- return ..()
\ No newline at end of file
+ return ..()
+
From e10397777c453e117e780fd3df8cb3aff1470d4f Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Tue, 2 Nov 2021 06:06:23 -0400
Subject: [PATCH 03/18] Update ash_tree.dm
---
code/modules/mining/lavaland/ash_tree.dm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index 383283e882..9e1267f0c0 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -28,6 +28,11 @@
sap_amount = rand(60,120) //good amout of honey
coal_amount = rand(5,15) //We give a random amout
+//So we dont lose are bowls, stolen form closet code
+/obj/structure/flora/ashtree/Destroy()
+ dump_contents(override = FALSE)
+ return ..()
+
/obj/structure/flora/ashtree/proc/harvest_sap()
desc = "A once large tree now burnt like the lands around it."
icon_state = "ashtree"
@@ -47,7 +52,7 @@
icon_state = tabbed_icon_state
sap = FALSE
container_used = W
- W.forceMove(src) //Sadly when cutting down the tree we get deleted with it, otherwise this allows us to get sap!
+ W.forceMove(src) //So we dont lose are bowl when cutting it down + needed for the harvest sap proc
addtimer(CALLBACK(src, .proc/harvest_sap), harvest_sap_time SECONDS)
else
to_chat(user, "There is no sap to collect.")
From 7816417c32dcad733791b2e437bf5d4477850514 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Tue, 2 Nov 2021 06:31:15 -0400
Subject: [PATCH 04/18] tree fix and balance honey
---
code/modules/mining/lavaland/ash_tree.dm | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index 9e1267f0c0..7c7a677102 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -25,7 +25,7 @@
sap = TRUE
icon_state = sap_icon_state
desc = "A once large tree now burnt like the lands around it. This one seems to have a sap still inside."
- sap_amount = rand(60,120) //good amout of honey
+ sap_amount = rand(20,60) //good amout of honey
coal_amount = rand(5,15) //We give a random amout
//So we dont lose are bowls, stolen form closet code
@@ -33,6 +33,11 @@
dump_contents(override = FALSE)
return ..()
+/obj/structure/flora/ashtree/proc/dump_contents(override = TRUE) //Override is for not revealing the locker electronics when you open the locker, for example
+ var/atom/L = drop_location()
+ for(var/atom/movable/AM in src)
+ AM.forceMove(L)
+
/obj/structure/flora/ashtree/proc/harvest_sap()
desc = "A once large tree now burnt like the lands around it."
icon_state = "ashtree"
From 2a4968489d85a5e7cbc6e668f805f81468d12e9f Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Tue, 2 Nov 2021 09:31:54 -0400
Subject: [PATCH 05/18] 10-30
---
code/modules/mining/lavaland/ash_tree.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index 7c7a677102..65d8264561 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -25,7 +25,7 @@
sap = TRUE
icon_state = sap_icon_state
desc = "A once large tree now burnt like the lands around it. This one seems to have a sap still inside."
- sap_amount = rand(20,60) //good amout of honey
+ sap_amount = rand(10,30) //good amout of honey
coal_amount = rand(5,15) //We give a random amout
//So we dont lose are bowls, stolen form closet code
From c7fb7dd90f51a2616b85bc9ddd2d0b50c6d3a135 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Wed, 3 Nov 2021 14:16:36 -0400
Subject: [PATCH 06/18] lower honey + metadata
---
code/modules/mining/lavaland/ash_tree.dm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index 65d8264561..2ae5bffe7b 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -25,8 +25,9 @@
sap = TRUE
icon_state = sap_icon_state
desc = "A once large tree now burnt like the lands around it. This one seems to have a sap still inside."
- sap_amount = rand(10,30) //good amout of honey
+ sap_amount = rand(5,15) //good amout of honey
coal_amount = rand(5,15) //We give a random amout
+ SSblackbox.record_feedback("tally", "Honey Tree", 1, "Trees Spawned") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//So we dont lose are bowls, stolen form closet code
/obj/structure/flora/ashtree/Destroy()
@@ -46,6 +47,7 @@
if(!RG.reagents.holder_full()) //Make sure that its not filling something thats full
RG.reagents.add_reagent(are_sap, min(RG.volume - RG.reagents.total_volume, sap_amount))
RG.forceMove(drop_location()) //We drop are used beaker and try to fill it with sap
+ SSblackbox.record_feedback("tally", "Honey Tree", 1, "Harvested Honey") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//Proc stolen from Trees
//If you hit it with a sharp force aboe 0 item it chops it down, unlike trees tho it dosnt give wood as its already charcoal
@@ -73,6 +75,7 @@
for(var/i=1 to coal_amount)
new /obj/item/stack/sheet/mineral/coal(get_turf(src))
qdel(src)
+ SSblackbox.record_feedback("tally", "Honey Tree", 1, "Cutted Tree") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else
return ..()
From 41b36436310aa0d8e8429bc372b050ca96abe228 Mon Sep 17 00:00:00 2001
From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com>
Date: Tue, 9 Nov 2021 23:41:57 -0500
Subject: [PATCH 07/18] tested and all working
---
code/modules/mining/lavaland/ash_tree.dm | 80 ++++++++++++++----------
1 file changed, 47 insertions(+), 33 deletions(-)
diff --git a/code/modules/mining/lavaland/ash_tree.dm b/code/modules/mining/lavaland/ash_tree.dm
index 2ae5bffe7b..5dca7a8e2f 100644
--- a/code/modules/mining/lavaland/ash_tree.dm
+++ b/code/modules/mining/lavaland/ash_tree.dm
@@ -1,40 +1,49 @@
//Houses the ash tree, a lava land tree that has been burning for quite some time making a maple like sweetener.
/obj/structure/flora/ashtree
- gender = PLURAL //same as other tree
- icon = 'icons/obj/lavaland/ash_tree.dmi'
- icon_state = "ashtree"
- var/sap_icon_state = "ashtree_maple" //Are icon when we are full of honey or other sap
- var/tabbed_icon_state = "ashtree_maple" //What we look like when tapping
name = "ashed tree"
desc = "A once large tree now burnt like the lands around it."
+ layer = FLY_LAYER
+ gender = PLURAL //same as other tree
density = TRUE
pixel_x = -16
- layer = FLY_LAYER
- var/coal_amount = 5 //amout of coal in are tree, simular to logs
- var/sap = FALSE //Do we have sap?
- var/are_sap = /datum/reagent/consumable/honey //What reagent we have
- //var/tapping_items = list(/obj/item/reagent_containers/glass) - current dosnt work commiting it out
- var/harvest_sap_time = 60 //This is in seconds, and now long we wait till are tree is tapped
+ icon = 'icons/obj/lavaland/ash_tree.dmi'
+ icon_state = "ashtree"
+ //Are icon when we are full of honey or other sap
+ var/sap_icon_state = "ashtree_maple"
+ //What we look like when tapping
+ var/tabbed_icon_state = "ashtree_maple"
+ //amout of coal in are tree, simular to logs
+ var/coal_amount = 5
+ //Do we have sap?
+ var/sap = FALSE
+ //What reagent we have
+ var/sap_type = /datum/reagent/consumable/honey
+ //This is in seconds, and now long we wait till are tree is tapped
+ var/harvest_sap_time = 60
var/container_used
var/sap_amount
-/obj/structure/flora/ashtree/New()
+/obj/structure/flora/ashtree/Initialize(mapload)
..()
if(prob(50))
sap = TRUE
icon_state = sap_icon_state
desc = "A once large tree now burnt like the lands around it. This one seems to have a sap still inside."
- sap_amount = rand(5,15) //good amout of honey
- coal_amount = rand(5,15) //We give a random amout
- SSblackbox.record_feedback("tally", "Honey Tree", 1, "Trees Spawned") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ //If we have sap, we can generate a bit of it
+ sap_amount = rand(5,15)
+ //Random coal or wood amount, so its not bog standered.
+ coal_amount = rand(5,15)
+ //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ SSblackbox.record_feedback("tally", "Honey Tree", 1, "Trees Spawned")
//So we dont lose are bowls, stolen form closet code
/obj/structure/flora/ashtree/Destroy()
dump_contents(override = FALSE)
return ..()
-/obj/structure/flora/ashtree/proc/dump_contents(override = TRUE) //Override is for not revealing the locker electronics when you open the locker, for example
+//Override is for not revealing the locker electronics when you open the locker, for example
+/obj/structure/flora/ashtree/proc/dump_contents(override = TRUE)
var/atom/L = drop_location()
for(var/atom/movable/AM in src)
AM.forceMove(L)
@@ -43,10 +52,13 @@
desc = "A once large tree now burnt like the lands around it."
icon_state = "ashtree"
var/obj/item/reagent_containers/RG = container_used
- if(RG.is_refillable()) //Incase someone was a dumb and used a lidded container
- if(!RG.reagents.holder_full()) //Make sure that its not filling something thats full
- RG.reagents.add_reagent(are_sap, min(RG.volume - RG.reagents.total_volume, sap_amount))
- RG.forceMove(drop_location()) //We drop are used beaker and try to fill it with sap
+ //Incase someone was a dumb and used a lidded container
+ if(RG.is_refillable())
+ //Make sure that its not filling something thats full
+ if(!RG.reagents.holder_full())
+ RG.reagents.add_reagent(sap_type, min(RG.volume - RG.reagents.total_volume, sap_amount))
+ //We drop are used beaker and try to fill it with sap
+ RG.forceMove(drop_location())
SSblackbox.record_feedback("tally", "Honey Tree", 1, "Harvested Honey") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//Proc stolen from Trees
@@ -59,24 +71,26 @@
icon_state = tabbed_icon_state
sap = FALSE
container_used = W
- W.forceMove(src) //So we dont lose are bowl when cutting it down + needed for the harvest sap proc
+ //So we dont lose are bowl when cutting it down + needed for the harvest sap proc
+ user.transferItemToLoc(W, src)
addtimer(CALLBACK(src, .proc/harvest_sap), harvest_sap_time SECONDS)
else
to_chat(user, "There is no sap to collect.")
if(coal_amount && (!(flags_1 & NODECONSTRUCT_1)))
- if(W.sharpness && W.force > 0)
- if(W.hitsound)
- playsound(get_turf(src), W.hitsound, 100, 0, 0)
- user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of brittle sawing.")
- if(do_after(user, 500/W.force, target = src)) //2.5 seconds with 20 force, 4 seconds with a hatchet, 10 seconds with a shard.
- user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a crumbling tree.")
- playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
- for(var/i=1 to coal_amount)
- new /obj/item/stack/sheet/mineral/coal(get_turf(src))
- qdel(src)
- SSblackbox.record_feedback("tally", "Honey Tree", 1, "Cutted Tree") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ if(!W.sharpness || !W.force)
+ return
+ if(W.hitsound)
+ playsound(get_turf(src), W.hitsound, 100, 0, 0)
+ user.visible_message("[user] begins to cut down [src] with [W].","You begin to cut down [src] with [W].", "You hear the sound of brittle sawing.")
+ //2.5 seconds with 20 force, 4 seconds with a hatchet, 10 seconds with a shard.
+ if(do_after(user, 500/W.force, target = src))
+ user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a crumbling tree.")
+ playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , 0, 0)
+ for(var/i=1 to coal_amount)
+ new /obj/item/stack/sheet/mineral/coal(get_turf(src))
+ qdel(src)//If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ SSblackbox.record_feedback("tally", "Honey Tree", 1, "Cutted Tree")
- else
return ..()
From 74ecee8253c67f782cfc9be17d84935cae5e6aad Mon Sep 17 00:00:00 2001
From: Putnam3145
Date: Tue, 7 Dec 2021 21:40:02 -0800
Subject: [PATCH 08/18] Atmos flux event
---
code/modules/events/atmos_speed.dm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 code/modules/events/atmos_speed.dm
diff --git a/code/modules/events/atmos_speed.dm b/code/modules/events/atmos_speed.dm
new file mode 100644
index 0000000000..9b248e2775
--- /dev/null
+++ b/code/modules/events/atmos_speed.dm
@@ -0,0 +1,23 @@
+/datum/round_event_control/atmos_flux
+ name = "Atmospheric Flux"
+ typepath = /datum/round_event/atmos_flux
+ max_occurrences = 1
+ weight = 5
+ endWhen = 600
+ var/original_speed
+
+/datum/round_event/atmos_flux
+ announceWhen = 1
+
+/datum/round_event/atmos_flux/announce(fake)
+ priority_announce("Atmospheric flux in your sector detected. Sensors show that air may move [(SSair.share_max_steps_target > original_speed) ? "faster" : "slower"] than usual for some time.", "Atmos Alert")
+
+/datum/round_event/atmos_flux/start()
+ original_speed = SSair.share_max_steps_target
+ if(prob(20))
+ SSair.share_max_steps_target = max(1, original_speed - rand(1,original_speed-1))
+ else
+ SSair.share_max_steps_target += rand(2,10)
+
+/datum/round_event/atmos_flux/end()
+ SSair.share_max_steps_target = original_speed
From c392b7c3fbecf486fe61f7c8eccd640c6a75b98b Mon Sep 17 00:00:00 2001
From: Putnam3145
Date: Fri, 31 Dec 2021 14:36:55 -0800
Subject: [PATCH 09/18] Allows pod people to be made using other fluids
---
.../objects/effects/decals/cleanable/gibs.dm | 4 +-
.../objects/effects/spawners/gibspawner.dm | 5 +-
code/modules/arousal/genitals.dm | 4 +-
code/modules/hydroponics/grown/replicapod.dm | 40 ++++-----
code/modules/mob/living/blood.dm | 87 +++++++++----------
5 files changed, 66 insertions(+), 74 deletions(-)
diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm
index 09fbdb6528..2762416949 100644
--- a/code/game/objects/effects/decals/cleanable/gibs.dm
+++ b/code/game/objects/effects/decals/cleanable/gibs.dm
@@ -11,12 +11,12 @@
var/gibs_reagent_id = /datum/reagent/liquidgibs
var/gibs_bloodtype = "A+"
-/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
+/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases, list/blood_data)
. = ..()
if(random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0)
icon_state = pick(random_icon_states)
if(gibs_reagent_id)
- reagents.add_reagent(gibs_reagent_id, 5)
+ reagents.add_reagent(gibs_reagent_id, 5, blood_data)
if(gibs_bloodtype)
add_blood_DNA(list("Non-human DNA" = gibs_bloodtype), diseases)
update_icon()
diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm
index 231c1465cd..00ddf0e9ef 100644
--- a/code/game/objects/effects/spawners/gibspawner.dm
+++ b/code/game/objects/effects/spawners/gibspawner.dm
@@ -31,7 +31,10 @@
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.
var/body_coloring = ""
+
+ var/list/blood_data_to_add
if(source_mob)
+ blood_data_to_add = source_mob.get_blood_data()
if(!issilicon(source_mob))
dna_to_add = blood_dna || source_mob.get_blood_dna_list() //ez pz
if(ishuman(source_mob))
@@ -65,7 +68,7 @@
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
- gib = new gibType(loc, diseases)
+ gib = new gibType(loc, diseases, blood_data_to_add)
if(iscarbon(loc))
var/mob/living/carbon/digester = loc
digester.stomach_contents += gib
diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm
index b7e90e5b84..60a858386c 100644
--- a/code/modules/arousal/genitals.dm
+++ b/code/modules/arousal/genitals.dm
@@ -168,9 +168,9 @@
R.clear_reagents()
R.maximum_volume = fluid_max_volume
if(fluid_id)
- R.add_reagent(fluid_id,amount)
+ R.add_reagent(fluid_id,amount, owner.get_blood_data())
else if(linked_organ?.fluid_id)
- R.add_reagent(linked_organ.fluid_id,amount)
+ R.add_reagent(linked_organ.fluid_id,amount, owner.get_blood_data())
return TRUE
/obj/item/organ/genital/proc/update_link()
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index 328b4c391c..053daaf3af 100644
--- a/code/modules/hydroponics/grown/replicapod.dm
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -53,31 +53,21 @@
/obj/item/seeds/replicapod/on_reagent_change(changetype)
if(changetype == ADD_REAGENT)
- var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood)
- if(B)
- if(B.data["mind"] && B.data["cloneable"])
- mind = B.data["mind"]
- ckey = B.data["ckey"]
- realName = B.data["real_name"]
- blood_gender = B.data["gender"]
- blood_type = B.data["blood_type"]
- features = B.data["features"]
- factions = B.data["factions"]
- quirks = B.data["quirks"]
- contains_sample = TRUE
- visible_message("The [src] is injected with a fresh blood sample.")
- else
- visible_message("The [src] rejects the sample!")
-
- if(!reagents.has_reagent(/datum/reagent/blood))
- mind = null
- ckey = null
- realName = null
- blood_gender = null
- blood_type = null
- features = null
- factions = null
- contains_sample = FALSE
+ for(var/datum/reagent/R as anything in reagents.reagent_list)
+ if(R.data["mind"])
+ if(R.data["cloneable"])
+ mind = R.data["mind"]
+ ckey = R.data["ckey"]
+ realName = R.data["real_name"]
+ blood_gender = R.data["gender"]
+ blood_type = R.data["blood_type"]
+ features = R.data["features"]
+ factions = R.data["factions"]
+ quirks = R.data["quirks"]
+ contains_sample = TRUE
+ visible_message("The [src] is injected with a fresh blood sample.")
+ else
+ visible_message("The [src] rejects the sample!")
/obj/item/seeds/replicapod/get_analyzer_text()
var/text = ..()
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index 7615792028..2a05639ad9 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -156,7 +156,7 @@
blood_volume -= amount
- var/list/blood_data = get_blood_data(blood_id)
+ var/list/blood_data = get_blood_data()
if(iscarbon(AM))
var/mob/living/carbon/C = AM
@@ -177,54 +177,53 @@
return TRUE
-/mob/living/proc/get_blood_data(blood_id)
+/mob/living/proc/get_blood_data()
return
-/mob/living/carbon/get_blood_data(blood_id)
- if(blood_id == /datum/reagent/blood || /datum/reagent/blood/jellyblood) //actual blood reagent
- var/blood_data = list()
- //set the blood data
- blood_data["donor"] = src
- blood_data["viruses"] = list()
+/mob/living/carbon/get_blood_data()
+ var/blood_data = list()
+ //set the blood data
+ blood_data["donor"] = src
+ blood_data["viruses"] = list()
- for(var/thing in diseases)
- var/datum/disease/D = thing
- blood_data["viruses"] += D.Copy()
+ for(var/thing in diseases)
+ var/datum/disease/D = thing
+ blood_data["viruses"] += D.Copy()
- blood_data["blood_DNA"] = dna.unique_enzymes
- blood_data["bloodcolor"] = dna.species.exotic_blood_color
- if(disease_resistances && disease_resistances.len)
- blood_data["resistances"] = disease_resistances.Copy()
- var/list/temp_chem = list()
- for(var/datum/reagent/R in reagents.reagent_list)
- temp_chem[R.type] = R.volume
- blood_data["trace_chem"] = list2params(temp_chem)
- if(mind)
- blood_data["mind"] = mind
- else if(last_mind)
- blood_data["mind"] = last_mind
- if(ckey)
- blood_data["ckey"] = ckey
- else if(last_mind)
- blood_data["ckey"] = ckey(last_mind.key)
+ blood_data["blood_DNA"] = dna.unique_enzymes
+ blood_data["bloodcolor"] = dna.species.exotic_blood_color
+ if(disease_resistances && disease_resistances.len)
+ blood_data["resistances"] = disease_resistances.Copy()
+ var/list/temp_chem = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ temp_chem[R.type] = R.volume
+ blood_data["trace_chem"] = list2params(temp_chem)
+ if(mind)
+ blood_data["mind"] = mind
+ else if(last_mind)
+ blood_data["mind"] = last_mind
+ if(ckey)
+ blood_data["ckey"] = ckey
+ else if(last_mind)
+ blood_data["ckey"] = ckey(last_mind.key)
- if(!suiciding)
- blood_data["cloneable"] = 1
- blood_data["blood_type"] = dna.blood_type
- blood_data["gender"] = gender
- blood_data["real_name"] = real_name
- blood_data["features"] = dna.features
- blood_data["factions"] = faction
- blood_data["quirks"] = list()
- for(var/V in roundstart_quirks)
- var/datum/quirk/T = V
- blood_data["quirks"] += T.type
- blood_data["changeling_loudness"] = 0
- if(mind)
- var/datum/antagonist/changeling/ling = mind.has_antag_datum(/datum/antagonist/changeling)
- if(istype(ling))
- blood_data["changeling_loudness"] = ling.loudfactor
- return blood_data
+ if(!suiciding)
+ blood_data["cloneable"] = 1
+ blood_data["blood_type"] = dna.blood_type
+ blood_data["gender"] = gender
+ blood_data["real_name"] = real_name
+ blood_data["features"] = dna.features
+ blood_data["factions"] = faction
+ blood_data["quirks"] = list()
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ blood_data["quirks"] += T.type
+ blood_data["changeling_loudness"] = 0
+ if(mind)
+ var/datum/antagonist/changeling/ling = mind.has_antag_datum(/datum/antagonist/changeling)
+ if(istype(ling))
+ blood_data["changeling_loudness"] = ling.loudfactor
+ return blood_data
//get the id of the substance this mob use as blood.
/mob/proc/get_blood_id()
From b1d05d49566456c617b6224fb6bc01953b8023be Mon Sep 17 00:00:00 2001
From: Putnam3145
Date: Thu, 13 Jan 2022 20:25:53 -0800
Subject: [PATCH 10/18] Fixes hydrogen fires to have right products
---
code/modules/atmospherics/auxgm/gas_types.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm
index 8c9b1495c6..c984d0df08 100644
--- a/code/modules/atmospherics/auxgm/gas_types.dm
+++ b/code/modules/atmospherics/auxgm/gas_types.dm
@@ -113,7 +113,7 @@
powermix = 1
heat_penalty = 3
transmit_modifier = 10
- fire_products = list(GAS_H2O = 2)
+ fire_products = list(GAS_H2O = 1)
fire_burn_rate = 2
fire_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 50
@@ -128,7 +128,7 @@
powermix = 1
heat_penalty = 10
transmit_modifier = 30
- fire_products = list(GAS_H2O = 2)
+ fire_products = list(GAS_H2O = 1)
fire_burn_rate = 2
fire_radiation_released = 50 // arbitrary number, basically 60 moles of trit burning will just barely start to harm you
fire_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 50
From ece671087ff7cf1e1a803be1977a11f496cdeb6d Mon Sep 17 00:00:00 2001
From: Putnam3145
Date: Thu, 13 Jan 2022 20:30:26 -0800
Subject: [PATCH 11/18] Added a bit of enthalpy to tritium
---
code/modules/atmospherics/auxgm/gas_types.dm | 1 +
1 file changed, 1 insertion(+)
diff --git a/code/modules/atmospherics/auxgm/gas_types.dm b/code/modules/atmospherics/auxgm/gas_types.dm
index c984d0df08..aaf3945aac 100644
--- a/code/modules/atmospherics/auxgm/gas_types.dm
+++ b/code/modules/atmospherics/auxgm/gas_types.dm
@@ -129,6 +129,7 @@
heat_penalty = 10
transmit_modifier = 30
fire_products = list(GAS_H2O = 1)
+ enthalpy = 40000
fire_burn_rate = 2
fire_radiation_released = 50 // arbitrary number, basically 60 moles of trit burning will just barely start to harm you
fire_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - 50
From 023177cb45f2e11b89808105adaf0f2b2d276d68 Mon Sep 17 00:00:00 2001
From: Letter N <24603524+LetterN@users.noreply.github.com>
Date: Tue, 18 Jan 2022 11:43:49 +0800
Subject: [PATCH 12/18] Revert "Bump pillow from 8.3.2 to 9.0.0 in /tools"
---
tools/requirements.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/requirements.txt b/tools/requirements.txt
index c4f554212c..a9abe5e826 100644
--- a/tools/requirements.txt
+++ b/tools/requirements.txt
@@ -1,6 +1,6 @@
pygit2==1.0.1
bidict==0.13.1
-Pillow==9.0.0
+Pillow==8.3.2
# changelogs
PyYaml==5.4
From 4387c06efc6642dc28413a3e31bcf876232f365d Mon Sep 17 00:00:00 2001
From: Changelogs
Date: Thu, 20 Jan 2022 00:33:52 +0000
Subject: [PATCH 13/18] Automatic changelog compile [ci skip]
---
html/changelog.html | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/html/changelog.html b/html/changelog.html
index 9098c074a2..c4e3548eb0 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -325,30 +325,6 @@
Reagent repeater and smart dart repeater rifle start with 4 syringes instead of a full clip.
reagent repeater synthesizes a new syringe every 20 seconds. tweak: smart dart guns now use the syringe gun as an inhands sprite.
-
- 18 November 2021
- DeltaFire15 updated:
-
- - Devastation level explosions no longer delete your organs after gibbing you.
- - Adjusted all overrides of ex_act() and contents_explosion() to take account of current args for them.
- - Reebe can now be loaded via a proc. tweak: The clockwork relay in reebe is now indestructible and not deconstrutible to avoid some issues.
-
- Putnam3145 updated:
-
- - Regal rat can no longer keep spawning stuff while dead
-
- SandPoot updated:
-
- - When your statpanel doesn't load, you'll get a message with a button to fix it.
- - The fix chat message button now works.
-
- keronshb updated:
-
- - Ball
- - Spookystation Map
- - Tree chopping/Grass cutting
- - Vectorcars
-
GoonStation 13 Development Team
From b0a2c983a0442cb22bb89f70ac9bcb357db76dc9 Mon Sep 17 00:00:00 2001
From: Changelogs
Date: Fri, 21 Jan 2022 00:28:00 +0000
Subject: [PATCH 14/18] Automatic changelog compile [ci skip]
---
html/changelog.html | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/html/changelog.html b/html/changelog.html
index c4e3548eb0..5df8515302 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -316,15 +316,6 @@
Acid will disappear when not existant.
Updates component Destroy code, might result in less component related runtimes.
-
- 19 November 2021
- shellspeed1 updated:
-
- - An experimental smart dart repeater rifle has been added by NT. It accepts both a large and small hypovials and uses it to fill the smart darts it synthesizes. It can hold 6 smart darts and makes a new one every 20 seconds. To research it, grab the medical weaponry node. tweak: Reagent gun renamed to reagent repeater
- - reagent repeater now holds 6 syringes.
- - Reagent repeater and smart dart repeater rifle start with 4 syringes instead of a full clip.
- - reagent repeater synthesizes a new syringe every 20 seconds. tweak: smart dart guns now use the syringe gun as an inhands sprite.
-
GoonStation 13 Development Team
From f02c54f31deca6270d170babfd0495edc098eb92 Mon Sep 17 00:00:00 2001
From: Changelogs
Date: Sat, 22 Jan 2022 00:27:40 +0000
Subject: [PATCH 15/18] Automatic changelog compile [ci skip]
---
html/changelog.html | 7 -------
1 file changed, 7 deletions(-)
diff --git a/html/changelog.html b/html/changelog.html
index 5df8515302..a04e263cd2 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -309,13 +309,6 @@
- Adds Cogscarab spell tweak: Cogscarabs gib now because I have no idea how to fix the issue of dead pogscarabs eating up the limit.
-
- 20 November 2021
- SandPoot updated:
-
- - Acid will disappear when not existant.
- - Updates component Destroy code, might result in less component related runtimes.
-
GoonStation 13 Development Team
From 0390e5e22194b6f243689ee9a0d6bd436023c177 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 22 Jan 2022 06:34:30 -0600
Subject: [PATCH 16/18] Automatic changelog generation for PR #15324 [ci skip]
---
html/changelogs/AutoChangeLog-pr-15324.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-15324.yml
diff --git a/html/changelogs/AutoChangeLog-pr-15324.yml b/html/changelogs/AutoChangeLog-pr-15324.yml
new file mode 100644
index 0000000000..001a69ac55
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15324.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - rscadd: "New type of flora to lava land, an Ash Tree, can be harvested for coal or if lucky used to gather honey. Just use a container!"
From afd1147e3a6af551f499a612152cdcbba0882363 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 22 Jan 2022 06:34:44 -0600
Subject: [PATCH 17/18] Automatic changelog generation for PR #15419 [ci skip]
---
html/changelogs/AutoChangeLog-pr-15419.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-15419.yml
diff --git a/html/changelogs/AutoChangeLog-pr-15419.yml b/html/changelogs/AutoChangeLog-pr-15419.yml
new file mode 100644
index 0000000000..a3e88c9aa4
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15419.yml
@@ -0,0 +1,4 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - rscadd: "Atmospheric Flux event"
From efb26ee532dc51f3e050ea4caa4c67fbba73e724 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sat, 22 Jan 2022 06:35:01 -0600
Subject: [PATCH 18/18] Automatic changelog generation for PR #15449 [ci skip]
---
html/changelogs/AutoChangeLog-pr-15449.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-15449.yml
diff --git a/html/changelogs/AutoChangeLog-pr-15449.yml b/html/changelogs/AutoChangeLog-pr-15449.yml
new file mode 100644
index 0000000000..d8c18dea1a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-15449.yml
@@ -0,0 +1,4 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - balance: "A lot more fluids can be used for replica pods"