diff --git a/_maps/RandomRuins/LavaRuins/miningbase.dmm b/_maps/RandomRuins/LavaRuins/miningbase.dmm
index 33d38be9ae..636d5fb3fd 100644
--- a/_maps/RandomRuins/LavaRuins/miningbase.dmm
+++ b/_maps/RandomRuins/LavaRuins/miningbase.dmm
@@ -2533,20 +2533,20 @@ ab
ab
ab
ab
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ak
ak
ak
ak
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
"}
(2,1,1) = {"
aP
@@ -2565,9 +2565,9 @@ ab
ab
ab
ab
-ac
-ac
-ac
+ab
+ab
+ab
ak
ak
ak
@@ -2576,9 +2576,9 @@ ak
ak
ak
ak
-ac
-ac
-ac
+ab
+ab
+ab
"}
(3,1,1) = {"
aP
@@ -2597,8 +2597,8 @@ ab
ab
ab
ab
-ac
-ac
+ab
+ab
ak
ak
ak
@@ -2609,8 +2609,8 @@ ak
ak
ak
ak
-ac
-ac
+ab
+ab
"}
(4,1,1) = {"
aP
@@ -2629,8 +2629,8 @@ ab
ab
ab
ab
-ac
-ac
+ab
+ab
ak
ak
ak
@@ -2661,7 +2661,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2693,7 +2693,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2725,7 +2725,7 @@ ab
ab
ab
ab
-ac
+ab
ak
ak
ak
@@ -2770,7 +2770,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(9,1,1) = {"
ab
@@ -2802,7 +2802,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(10,1,1) = {"
ab
@@ -2834,7 +2834,7 @@ ak
ak
ak
ac
-ac
+ab
"}
(11,1,1) = {"
ab
@@ -2866,7 +2866,7 @@ ak
ak
ac
ac
-ac
+ab
"}
(12,1,1) = {"
ab
@@ -2927,7 +2927,7 @@ et
vr
eu
ac
-ab
+ac
ab
ab
ab
@@ -3440,7 +3440,7 @@ LK
pN
bQ
ac
-ab
+ac
ab
ab
"}
@@ -3472,7 +3472,7 @@ FI
jQ
bQ
ac
-ab
+ac
ab
ab
"}
@@ -3630,8 +3630,8 @@ ac
ac
ac
ac
-ac
-ac
+ab
+ab
ab
ab
ab
@@ -3660,10 +3660,10 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3690,12 +3690,12 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3722,12 +3722,12 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
@@ -3755,17 +3755,17 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
+ab
ab
ab
ab
"}
(40,1,1) = {"
-ac
+ab
ac
ac
ak
@@ -3788,17 +3788,17 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
+ab
+ab
+ab
+ab
ab
ab
ab
"}
(41,1,1) = {"
-ac
-ac
+ab
+ab
ac
ac
ak
@@ -3821,16 +3821,16 @@ ac
ac
ac
ac
-ac
-ac
-ac
+ab
+ab
+ab
ab
ab
ab
"}
(42,1,1) = {"
-ac
-ac
+ab
+ab
ac
ac
eM
@@ -3853,15 +3853,15 @@ ac
ac
ac
ac
-ac
-ac
-ac
+ab
+ab
+ab
ab
ab
ab
"}
(43,1,1) = {"
-ac
+ab
ac
ac
aw
@@ -3886,8 +3886,8 @@ ac
ac
ac
ac
-ac
-ac
+ab
+ab
ab
ab
ab
@@ -3919,7 +3919,7 @@ ac
ac
ac
ac
-ac
+ab
ab
ab
ab
@@ -3951,7 +3951,7 @@ ak
ac
ac
ac
-ac
+ab
ab
ab
ab
@@ -4176,7 +4176,7 @@ ak
ak
ak
ac
-ab
+ac
ab
ab
"}
@@ -4208,7 +4208,7 @@ ak
ak
ac
ac
-ab
+ac
ab
ab
"}
@@ -4240,7 +4240,7 @@ ak
ak
ak
ac
-ab
+ac
ab
ab
"}
@@ -4272,8 +4272,8 @@ ak
ak
ak
ak
-ab
-ab
+ac
+ac
ab
"}
(56,1,1) = {"
@@ -4304,8 +4304,8 @@ ak
ak
ak
ac
-ab
-ab
+ac
+ac
ab
"}
(57,1,1) = {"
@@ -4336,7 +4336,7 @@ ak
ak
ac
ac
-ab
+ac
ab
ab
"}
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 5d960964a0..2ef9608a96 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -701,6 +701,7 @@ SUBSYSTEM_DEF(ticker)
round_end_sound = pick(\
'sound/roundend/newroundsexy.ogg',
'sound/roundend/apcdestroyed.ogg',
+ 'sound/roundend/seeyoulaterokay.ogg',
'sound/roundend/bangindonk.ogg',
'sound/roundend/leavingtg.ogg',
'sound/roundend/its_only_game.ogg',
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index 81ee5c3989..1464927c3a 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -243,6 +243,11 @@
description = "I have been scorched by the unforgiving rays of the sun.\n"
mood_change = -6
timeout = 15 MINUTES
+
+/datum/mood_event/bloodsucker_disgust
+ description = "Something I recently ate was horrifyingly disgusting.\n"
+ mood_change = -5
+ timeout = 5 MINUTES
/datum/mood_event/nanite_sadness
description = "+++++++HAPPINESS SUPPRESSION+++++++\n"
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index a28166606e..b1e86d6643 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -242,10 +242,8 @@
if(slot == user.getBeltSlot())
return TRUE
-/obj/item/defibrillator/compact/loaded/Initialize()
- . = ..()
- cell = new(src)
- update_power()
+/obj/item/defibrillator/compact/loaded
+ cell = /obj/item/stock_parts/cell/high
/obj/item/defibrillator/compact/combat
name = "combat defibrillator"
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
index 0179c60ef1..e774cf4250 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
@@ -315,7 +315,7 @@
bloodsuckerdatum.handle_eat_human_food(food_nutrition)
-/datum/antagonist/bloodsucker/proc/handle_eat_human_food(var/food_nutrition) // Called from snacks.dm and drinks.dm
+/datum/antagonist/bloodsucker/proc/handle_eat_human_food(food_nutrition, puke_blood = TRUE, masquerade_override) // Called from snacks.dm and drinks.dm
set waitfor = FALSE
if(!owner.current || !iscarbon(owner.current))
return
@@ -324,14 +324,14 @@
C.nutrition -= food_nutrition
foodInGut += food_nutrition
// Already ate some bad clams? Then we can back out, because we're already sick from it.
- if (foodInGut != food_nutrition)
+ if(foodInGut != food_nutrition)
return
// Haven't eaten, but I'm in a Human Disguise.
- else if (poweron_masquerade)
+ else if(poweron_masquerade && !masquerade_override)
to_chat(C, "Your stomach turns, but your \"human disguise\" keeps the food down...for now.")
// Keep looping until we purge. If we have activated our Human Disguise, we ignore the food. But it'll come up eventually...
var/sickphase = 0
- while (foodInGut)
+ while(foodInGut)
sleep(50)
C.adjust_disgust(10 * sickphase)
// Wait an interval...
@@ -340,24 +340,29 @@
if(C.stat == DEAD)
return
// Put up disguise? Then hold off the vomit.
- if(poweron_masquerade)
+ if(poweron_masquerade && !masquerade_override)
if(sickphase > 0)
to_chat(C, "Your stomach settles temporarily. You regain your composure...for now.")
sickphase = 0
continue
switch(sickphase)
- if (1)
+ if(1)
to_chat(C, "You feel unwell. You can taste ash on your tongue.")
C.Stun(10)
- if (2)
+ if(2)
to_chat(C, "Your stomach turns. Whatever you ate tastes of grave dirt and brimstone.")
C.Dizzy(15)
C.Stun(13)
- if (3)
+ if(3)
to_chat(C, "You purge the food of the living from your viscera! You've never felt worse.")
- C.vomit(foodInGut * 4, foodInGut * 2, 0) // (var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0)
- C.blood_volume = max(0, C.blood_volume - foodInGut * 2)
+ //Puke blood only if puke_blood is true, and loose some blood, else just puke normally.
+ if(puke_blood)
+ C.blood_volume = max(0, C.blood_volume - foodInGut * 2)
+ C.vomit(foodInGut * 4, foodInGut * 2, 0)
+ else
+ C.vomit(foodInGut * 4, FALSE, 0)
C.Stun(30)
//C.Dizzy(50)
foodInGut = 0
+ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "vampdisgust", /datum/mood_event/bloodsucker_disgust)
sickphase ++
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 4d3e8acb28..6f61bf56cb 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -480,8 +480,6 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
allowed = list(/obj/item/clothing/mask/facehugger/toy)
-
-
// WINTER COATS
/obj/item/clothing/suit/hooded/wintercoat
@@ -521,6 +519,7 @@
/obj/item/clothing/suit/hooded/wintercoat/captain
name = "captain's winter coat"
+ desc = "A luxuriant winter coat, stuffed with the down of the endangered Uka bird and trimmed with genuine sable. The fabric is an indulgently soft micro-fiber, and the deep ultramarine color is only one that could be achieved with minute amounts of crystalline bluespace dust woven into the thread between the plectrums. Extremely lavish, and extremely durable. The tiny flakes of protective material make it nothing short of extremely light lamellar armor."
icon_state = "coatcaptain"
item_state = "coatcaptain"
armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
@@ -531,20 +530,24 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/captain
+ desc = "A blue and yellow hood attached to a heavy winter jacket."
icon_state = "winterhood_captain"
/obj/item/clothing/suit/hooded/wintercoat/hop
name = "head of personnel's winter coat"
+ desc = "A cozy winter coat, covered in thick fur. The breast features a proud yellow chevron, reminding everyone that you're the second banana."
icon_state = "coathop"
item_state = "coathop"
armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 5, "bio" = 5, "rad" = 0, "fire" = 0, "acid" = 5)
hoodtype = /obj/item/clothing/head/hooded/winterhood/hop
/obj/item/clothing/head/hooded/winterhood/hop
+ desc = "A cozy winter hood attached to a heavy winter jacket."
icon_state = "winterhood_hop"
/obj/item/clothing/suit/hooded/wintercoat/security
name = "security winter coat"
+ desc = "A red, armor-padded winter coat. It glitters with a mild ablative coating and a robust air of authority. The zipper tab is a pair of jingly little handcuffs and got annoying after the first ten seconds."
icon_state = "coatsecurity"
item_state = "coatsecurity"
armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
@@ -555,10 +558,12 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/security
+ desc = "A red, armor-padded winter hood."
icon_state = "winterhood_security"
/obj/item/clothing/suit/hooded/wintercoat/hos
name = "head of security's winter coat"
+ desc = "A red, armor-padded winter coat, lovingly woven with a Kevlar interleave and reinforced with semi-ablative polymers and a silver azide fill material. The zipper tab looks like a tiny replica of Beepsky."
icon_state = "coathos"
item_state = "coathos"
armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 15, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 55)
@@ -569,10 +574,12 @@
allowed = GLOB.security_wintercoat_allowed
/obj/item/clothing/head/hooded/winterhood/hos
+ desc = "A red, armor-padded winter hood, lovingly woven with a Kevlar interleave. Definitely not bulletproof, especially not the part where your face goes."
icon_state = "winterhood_hos"
/obj/item/clothing/suit/hooded/wintercoat/medical
name = "medical winter coat"
+ desc = "An arctic white winter coat with a small blue caduceus instead of a plastic zipper tab. Snazzy."
icon_state = "coatmedical"
item_state = "coatmedical"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -580,10 +587,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical
/obj/item/clothing/head/hooded/winterhood/medical
+ desc = "A white winter coat hood."
icon_state = "winterhood_medical"
/obj/item/clothing/suit/hooded/wintercoat/cmo
name = "chief medical officer's winter coat"
+ desc = "An arctic white winter coat with a small blue caduceus instead of a plastic zipper tab. The normal liner is replaced with an exceptionally thick, soft layer of fur."
icon_state = "coatcmo"
item_state = "coatcmo"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -591,10 +600,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/cmo
/obj/item/clothing/head/hooded/winterhood/cmo
+ desc = "A white winter coat hood."
icon_state = "winterhood_cmo"
/obj/item/clothing/suit/hooded/wintercoat/chemistry
name = "chemistry winter coat"
+ desc = "A lab-grade winter coat made with acid resistant polymers. For the enterprising chemist who was exiled to a frozen wasteland on the go."
icon_state = "coatchemistry"
item_state = "coatchemistry"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -602,10 +613,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/chemistry
/obj/item/clothing/head/hooded/winterhood/chemistry
+ desc = "A white winter coat hood."
icon_state = "winterhood_chemistry"
/obj/item/clothing/suit/hooded/wintercoat/viro
name = "virology winter coat"
+ desc = "A white winter coat with green markings. Warm, but wont fight off the common cold or any other disease. Might make people stand far away from you in the hallway. The zipper tab looks like an oversized bacteriophage."
icon_state = "coatviro"
item_state = "coatviro"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -613,10 +626,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/viro
/obj/item/clothing/head/hooded/winterhood/viro
+ desc = "A white winter coat hood with green markings."
icon_state = "winterhood_viro"
/obj/item/clothing/suit/hooded/wintercoat/science
name = "science winter coat"
+ desc = "A white winter coat with an outdated atomic model instead of a plastic zipper tab."
icon_state = "coatscience"
item_state = "coatscience"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -624,10 +639,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/science
/obj/item/clothing/head/hooded/winterhood/science
+ desc = "A white winter coat hood. This one will keep your brain warm. About as much as the others, really."
icon_state = "winterhood_science"
/obj/item/clothing/suit/hooded/wintercoat/robotics
name = "robotics winter coat"
+ desc = "A black winter coat with a badass flaming robotic skull for the zipper tab. This one has bright red designs and a few useless buttons."
icon_state = "coatrobotics"
item_state = "coatrobotics"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/screwdriver, /obj/item/crowbar, /obj/item/wrench, /obj/item/stack/cable_coil, /obj/item/weldingtool, /obj/item/multitool)
@@ -635,20 +652,24 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/robotics
/obj/item/clothing/head/hooded/winterhood/robotics
+ desc = "A black winter coat hood. You can pull it down over your eyes and pretend that you're an outdated, late 1980s interpretation of a futuristic mechanized police force. They'll fix you. They fix everything."
icon_state = "winterhood_robotics"
/obj/item/clothing/suit/hooded/wintercoat/genetics
name = "genetics winter coat"
+ desc = "A white winter coat with a DNA helix for the zipper tab. "
icon_state = "coatgenetics"
item_state = "coatgenetics"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
hoodtype = /obj/item/clothing/head/hooded/winterhood/genetics
/obj/item/clothing/head/hooded/winterhood/genetics
+ desc = "A white winter coat hood. It's warm."
icon_state = "winterhood_genetics"
/obj/item/clothing/suit/hooded/wintercoat/rd
name = "research director's winter coat"
+ desc = "A thick arctic winter coat with an outdated atomic model instead of a plastic zipper tab. Most in the know are heavily aware that Bohr's model of the atom was outdated by the time of the 1930s when the Heisenbergian and Schrodinger models were generally accepted for true. Nevertheless, we still see its use in anachronism, roleplaying, and, in this case, as a zipper tab. At least it should keep you warm on your ivory pillar."
icon_state = "coatrd"
item_state = "coatrd"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
@@ -656,10 +677,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/rd
/obj/item/clothing/head/hooded/winterhood/rd
+ desc = "A white winter coat hood. It smells faintly of hair gel."
icon_state = "winterhood_rd"
/obj/item/clothing/suit/hooded/wintercoat/ce
name = "chief engineer's winter coat"
+ desc = "A white winter coat with reflective green and yellow stripes. Stuffed with asbestos, treated with fire retardant PBDE, lined with a micro thin sheet of lead foil and snugly fitted to your body's measurements. This baby's ready to save you from anything except the thyroid cancer and systemic fibrosis you'll get from wearing it. The zipper tab is a tiny golden wrench."
icon_state = "coatce"
item_state = "coatce"
armor = list("melee" = 0, "bullet" = 0, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 30, "fire" = 35, "acid" = 45)
@@ -667,10 +690,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/ce
/obj/item/clothing/head/hooded/winterhood/ce
+ desc = "A white winter coat hood. Feels surprisingly heavy. The tag says that it's not child safe."
icon_state = "winterhood_ce"
/obj/item/clothing/suit/hooded/wintercoat/engineering
name = "engineering winter coat"
+ desc = "A surprisingly heavy yellow winter coat with reflective orange stripes. It has a small wrench for its zipper tab, and the inside layer is covered with a radiation-resistant silver-nylon blend. Because you're worth it."
icon_state = "coatengineer"
item_state = "coatengineer"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45)
@@ -678,29 +703,35 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
/obj/item/clothing/head/hooded/winterhood/engineering
+ desc = "A yellow winter coat hood. Definitely not a replacement for a hard hat."
icon_state = "winterhood_engineer"
/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
name = "atmospherics winter coat"
+ desc = "A yellow and blue winter coat. The zipper pull-tab is made to look like a miniature breath mask."
icon_state = "coatatmos"
item_state = "coatatmos"
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/atmos
/obj/item/clothing/head/hooded/winterhood/engineering/atmos
+ desc = "A yellow and blue winter coat hood."
icon_state = "winterhood_atmos"
/obj/item/clothing/suit/hooded/wintercoat/hydro
name = "hydroponics winter coat"
+ desc = "A green and blue winter coat. The zipper tab looks like the flower from a member of Rosa Hesperrhodos, a pretty pink-and-white rose. The colors absolutely clash."
icon_state = "coathydro"
item_state = "coathydro"
allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro
/obj/item/clothing/head/hooded/winterhood/hydro
+ desc = "A green winter coat hood."
icon_state = "winterhood_hydro"
/obj/item/clothing/suit/hooded/wintercoat/cosmic
name = "cosmic winter coat"
+ desc = "A starry winter coat that even glows softly."
icon_state = "coatcosmic"
item_state = "coatcosmic"
hoodtype = /obj/item/clothing/head/hooded/winterhood/cosmic
@@ -708,48 +739,58 @@
light_range = 1.2
/obj/item/clothing/head/hooded/winterhood/cosmic
+ desc = "A starry winter hood."
icon_state = "winterhood_cosmic"
/obj/item/clothing/suit/hooded/wintercoat/janitor
name = "janitors winter coat"
+ desc = "A purple-and-beige winter coat that smells of space cleaner."
icon_state = "coatjanitor"
item_state = "coatjanitor"
allowed = list(/obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/grenade/chem_grenade,/obj/item/lightreplacer,/obj/item/flashlight,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/spray,/obj/item/soap,/obj/item/holosign_creator,/obj/item/key/janitor,/obj/item/melee/flyswatter,/obj/item/paint/paint_remover,/obj/item/storage/bag/trash,/obj/item/reagent_containers/glass/bucket)
hoodtype = /obj/item/clothing/head/hooded/winterhood/janitor
/obj/item/clothing/head/hooded/winterhood/janitor
+ desc = "A purple hood that smells of space cleaner."
icon_state = "winterhood_janitor"
/obj/item/clothing/suit/hooded/wintercoat/cargo
name = "cargo winter coat"
+ desc = "A tan-and-grey winter coat that has a crate for its zipper pull tab. It fills you with the warmth of a fierce independence."
icon_state = "coatcargo"
item_state = "coatcargo"
hoodtype = /obj/item/clothing/head/hooded/winterhood/cargo
/obj/item/clothing/head/hooded/winterhood/cargo
+ desc = "A grey hood for a winter coat."
icon_state = "winterhood_cargo"
/obj/item/clothing/suit/hooded/wintercoat/qm
name = "quartermaster's winter coat"
+ desc = "A dark brown winter coat that has a golden crate pin for its zipper pully."
icon_state = "coatqm"
item_state = "coatqm"
hoodtype = /obj/item/clothing/head/hooded/winterhood/qm
/obj/item/clothing/head/hooded/winterhood/qm
+ desc = "A dark brown winter hood"
icon_state = "winterhood_qm"
/obj/item/clothing/suit/hooded/wintercoat/aformal
name = "assistant's formal winter coat"
+ desc = "A black button up winter coat."
icon_state = "coataformal"
item_state = "coataformal"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/clothing/gloves/color/yellow)
hoodtype = /obj/item/clothing/head/hooded/winterhood/aformal
/obj/item/clothing/head/hooded/winterhood/aformal
+ desc = "A black winter coat hood."
icon_state = "winterhood_aformal"
/obj/item/clothing/suit/hooded/wintercoat/miner
name = "mining winter coat"
+ desc = "A dusty button up winter coat. The zipper tab looks like a tiny pickaxe."
icon_state = "coatminer"
item_state = "coatminer"
allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -757,10 +798,12 @@
hoodtype = /obj/item/clothing/head/hooded/winterhood/miner
/obj/item/clothing/head/hooded/winterhood/miner
+ desc = "A dusty winter coat hood."
icon_state = "winterhood_miner"
/obj/item/clothing/suit/hooded/wintercoat/ratvar
name = "ratvarian winter coat"
+ desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red gemstone inset."
icon_state = "coatratvar"
item_state = "coatratvar"
armor = list("melee" = 30, "bullet" = 45, "laser" = -10, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
@@ -770,6 +813,7 @@
/obj/item/clothing/head/hooded/winterhood/ratvar
icon_state = "winterhood_ratvar"
+ desc = "A brass-plated winter hood that glows softly, hinting at its divinity."
light_range = 3
light_power = 1
light_color = "#B18B25" //clockwork slab background top color
@@ -788,6 +832,7 @@
/obj/item/clothing/suit/hooded/wintercoat/narsie
name = "narsian winter coat"
+ desc = "A somber button-up in tones of grey entropy and a wicked crimson zipper. When pulled all the way up, the zipper looks like a bloody gash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
item_state = "coatnarsie"
armor = list("melee" = 30, "bullet" = 20, "laser" = 30,"energy" = 10, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 30, "acid" = 30)
@@ -808,10 +853,12 @@
user.adjustBruteLoss(rand(10,16))
/obj/item/clothing/head/hooded/winterhood/narsie
+ desc = "A black winter hood full of whispering secrets that only She shall ever know."
icon_state = "winterhood_narsie"
/obj/item/clothing/suit/hooded/wintercoat/ratvar/fake
name = "brass winter coat"
+ desc = "A brass-plated button up winter coat. Instead of a zipper tab, it has a brass cog with a tiny red piece of plastic as an inset."
icon_state = "coatratvar"
item_state = "coatratvar"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -820,6 +867,7 @@
/obj/item/clothing/suit/hooded/wintercoat/narsie/fake
name = "runed winter coat"
+ desc = "A dusty button up winter coat in the tones of oblivion and ash. The zipper pull looks like a single drop of blood."
icon_state = "coatnarsie"
item_state = "coatnarsie"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
@@ -842,7 +890,6 @@
icon_state = "winterhood_durathread"
armor = list("melee" = 20, "bullet" = 8, "laser" = 15, "energy" = 8, "bomb" = 25, "bio" = 10, "rad" = 15, "fire" = 75, "acid" = 37)
-
/obj/item/clothing/suit/spookyghost
name = "spooky ghost"
desc = "This is obviously just a bedsheet, but maybe try it on?"
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 53c3389695..d3525c951d 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -36,7 +36,7 @@
plantname = "Blood-Tomato Plants"
product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood
mutatelist = list()
- reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
+ reagents_add = list(/datum/reagent/blood/tomato = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
rarity = 20
/obj/item/reagent_containers/food/snacks/grown/tomato/blood
@@ -47,7 +47,7 @@
splat_type = /obj/effect/gibspawner/generic
filling_color = "#FF0000"
foodtype = FRUIT | GROSS
- grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0)
+ grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood/tomato = 0)
distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary
// Blue Tomato
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index 8c5dc6aa0b..e3512e3929 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -49,6 +49,7 @@
message = "moans!"
message_mime = "appears to moan!"
emote_type = EMOTE_AUDIBLE
+ stat_allowed = SOFT_CRIT
/datum/emote/living/carbon/roll
key = "roll"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index e8cf0225e6..df6257e38b 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -249,7 +249,7 @@
var/current_dir
if(isliving(AM))
current_dir = AM.dir
- if(step(AM, t))
+ if(step(AM, t) && Process_Spacemove(t))
step(src, t)
if(current_dir)
AM.setDir(current_dir)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 858adc0d66..67cc371c3b 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -328,12 +328,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(power)
soundloop.volume = min(40, (round(power/100)/50)+1) // 5 +1 volume per 20 power. 2500 power is max
- if(isclosedturf(T))
- var/turf/did_it_melt = T.Melt()
- if(!isclosedturf(did_it_melt)) //In case some joker finds way to place these on indestructible walls
- visible_message("[src] melts through [T]!")
- return
-
//Ok, get the air from the turf
var/datum/gas_mixture/env = T.return_air()
@@ -345,9 +339,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
else
// Pass all the gas related code an empty gas container
removed = new()
- damage_archived = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
- matter_power += damage - damage_archived
- damage = damage_archived
+ damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
+ damage_archived = damage
if(!removed || !removed.total_moles() || isspaceturf(T)) //we're in space or there is no gas to process
if(takes_damage)
damage += max((power / 1000) * DAMAGE_INCREASE_MULTIPLIER, 0.1) // always does at least some damage
@@ -531,7 +524,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
message_admins("[src] has been powered for the first time [ADMIN_JMP(src)].")
has_been_powered = TRUE
else if(takes_damage)
- damage += Proj.damage * config_bullet_energy
+ matter_power += Proj.damage * config_bullet_energy
return BULLET_ACT_HIT
/obj/machinery/power/supermatter_crystal/singularity_act()
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 4aabd82d6a..bd6c37973f 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -221,3 +221,13 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
rs += "[R.name], [R.volume]"
return rs.Join(" | ")
+
+//For easy bloodsucker disgusting and blood removal
+/datum/reagent/proc/disgust_bloodsucker(mob/living/carbon/C, disgust, blood_change, blood_puke = TRUE, force)
+ if(isvamp(C))
+ var/datum/antagonist/bloodsucker/bloodsuckerdatum = C.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
+ if(disgust)
+ bloodsuckerdatum.handle_eat_human_food(disgust, blood_puke, force)
+ if(blood_change)
+ bloodsuckerdatum.AddBloodVolume(blood_change)
+
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 4b65776ce9..e22f8caf89 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -579,8 +579,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
value = 1.3
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C)
- if((HAS_TRAIT(C, TRAIT_NOMARROW)))
- return
+ if(isvamp(C))
+ disgust_bloodsucker(FALSE, 1) //Bloodsuckers get SOME blood from it, for style reasons.
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss.
..()
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index adc30ecdc9..9794b58112 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -13,7 +13,7 @@
shot_glass_icon_state = "shotglassred"
pH = 7.4
-/datum/reagent/blood/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
+/datum/reagent/blood/reaction_mob(mob/living/L, method = TOUCH, reac_volume)
if(data && data["viruses"])
for(var/thing in data["viruses"])
var/datum/disease/D = thing
@@ -26,6 +26,18 @@
else //ingest, patch or inject
L.ForceContractDisease(D)
+ if(data["blood_type"] == "SY")
+ //Synthblood is very disgusting to bloodsuckers. They will puke it out to expel it, unless they have masquarade on
+ switch(reac_volume)
+ if(0 to 3)
+ disgust_bloodsucker(L, 3, FALSE, FALSE, FALSE)
+ if(3 to 6)
+ //If theres more than 8 units, they will start expelling it, even if they are masquarading.
+ disgust_bloodsucker(L, 5, FALSE, FALSE, TRUE)
+ else
+ //If they have too much in them, they will also puke out their blood.
+ disgust_bloodsucker(L, 7, -5, TRUE, TRUE)
+
if(iscarbon(L))
var/mob/living/carbon/C = L
var/blood_id = C.get_blood_id()
@@ -37,10 +49,8 @@
L.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"]))
/datum/reagent/blood/on_mob_life(mob/living/carbon/C) //Because lethals are preferred over stamina. damnifino.
- if((HAS_TRAIT(C, TRAIT_NOMARROW)))
- return //We dont want vampires getting toxed from blood
var/blood_id = C.get_blood_id()
- if((blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood))
+ if((blood_id in GLOB.blood_reagent_types) && !HAS_TRAIT(C, TRAIT_NOMARROW))
if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be
C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person
..()
@@ -117,7 +127,7 @@
if(!istype(D, /datum/disease/advance))
preserve += D
data["viruses"] = preserve
- return 1
+ return TRUE
/datum/reagent/blood/proc/get_diseases()
. = list()
@@ -142,6 +152,13 @@
taste_mult = 1.3
pH = 4
+/datum/reagent/blood/tomato
+ data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
+ name = "Tomato Blood"
+ description = "This highly resembles blood, but it doesnt actually function like it, resembling more ketchup, with a more blood-like consistency."
+ taste_description = "sap" //Like tree sap?
+ pH = 7.45
+
/datum/reagent/blood/jellyblood/on_mob_life(mob/living/carbon/M)
if(prob(10))
if(M.dna?.species?.exotic_bloodtype != "GEL")
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 2f5fb067ea..3296586c94 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -89,7 +89,7 @@
blood_type = "BUG"
/obj/item/reagent_containers/blood/attackby(obj/item/I, mob/user, params)
- if (istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
+ if(istype(I, /obj/item/pen) || istype(I, /obj/item/toy/crayon))
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the label of [src]!")
return
@@ -107,25 +107,31 @@
else
return ..()
-/obj/item/reagent_containers/blood/attack(mob/M, mob/user, def_zone)
- if(user.a_intent == INTENT_HELP && reagents.total_volume > 0)
- if (user != M)
- to_chat(user, "You force [M] to drink from the [src]")
- user.visible_message("[user] forces [M] to drink from the [src].")
- if(!do_mob(user, M, 50))
+/obj/item/reagent_containers/blood/attack(mob/living/carbon/C, mob/user, def_zone)
+ if(user.a_intent == INTENT_HELP && reagents.total_volume > 0 && iscarbon(C) && user.a_intent == INTENT_HELP)
+ if(C.is_mouth_covered())
+ to_chat(user, "You cant drink from the [src] while your mouth is covered.")
+ return
+ if(user != C)
+ user.visible_message("[user] forces [C] to drink from the [src].", \
+ "You force [C] to drink from the [src]")
+ if(!do_mob(user, C, 50))
return
else
- if(!do_mob(user, M, 10))
+ if(!do_mob(user, C, 10))
return
+
to_chat(user, "You take a sip from the [src].")
user.visible_message("[user] puts the [src] up to their mouth.")
if(reagents.total_volume <= 0) // Safety: In case you spam clicked the blood bag on yourself, and it is now empty (below will divide by zero)
return
- var/gulp_size = 5
+ var/gulp_size = 3
var/fraction = min(gulp_size / reagents.total_volume, 1)
- reagents.reaction(M, INGEST, fraction) //checkLiked(fraction, M) // Blood isn't food, sorry.
- reagents.trans_to(M, gulp_size)
- playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
+ reagents.reaction(C, INGEST, fraction) //checkLiked(fraction, M) // Blood isn't food, sorry.
+ reagents.trans_to(C, gulp_size)
+ reagents.remove_reagent(src, 2) //Inneficency, so hey, IVs are usefull.
+ playsound(C.loc,'sound/items/drink.ogg', rand(10, 50), TRUE)
+ return
..()
/obj/item/reagent_containers/blood/bluespace
@@ -133,3 +139,14 @@
desc = "Contains blood used for transfusion, this one has been made with bluespace technology to hold much more blood. Must be attached to an IV drip."
icon_state = "bsbloodpack"
volume = 600 //its a blood bath!
+
+/obj/item/reagent_containers/blood/bluespace/attack(mob/living/carbon/C, mob/user, def_zone)
+ if(user.a_intent == INTENT_HELP)
+ if(user != C)
+ to_chat(user, "You can't force people to drink from the [src]. Nothing comes out from it.")
+ return
+ else
+ to_chat(user, "You try to suck on the [src], but nothing comes out.")
+ return
+ else
+ ..()
diff --git a/html/changelogs/AutoChangeLog-pr-11041.yml b/html/changelogs/AutoChangeLog-pr-11041.yml
new file mode 100644
index 0000000000..b9d9a993a2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11041.yml
@@ -0,0 +1,4 @@
+author: "Arturlang"
+delete-after: True
+changes:
+ - balance: "Bloodsuckers can no longer get usable blood from blood tomatoes."
diff --git a/html/changelogs/AutoChangeLog-pr-11271.yml b/html/changelogs/AutoChangeLog-pr-11271.yml
new file mode 100644
index 0000000000..382144298a
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11271.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - tweak: "Pushing is no longer free space movement."
diff --git a/html/changelogs/AutoChangeLog-pr-11283.yml b/html/changelogs/AutoChangeLog-pr-11283.yml
new file mode 100644
index 0000000000..ae0d2706da
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11283.yml
@@ -0,0 +1,4 @@
+author: "Ragolution"
+delete-after: True
+changes:
+ - rscadd: "All winter coats and hoods might be different if slightly from one a other."
diff --git a/html/changelogs/AutoChangeLog-pr-11287.yml b/html/changelogs/AutoChangeLog-pr-11287.yml
new file mode 100644
index 0000000000..5a1939e90c
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11287.yml
@@ -0,0 +1,4 @@
+author: "monster860"
+delete-after: True
+changes:
+ - tweak: "You can now moan in soft crit"
diff --git a/html/changelogs/AutoChangeLog-pr-11291.yml b/html/changelogs/AutoChangeLog-pr-11291.yml
new file mode 100644
index 0000000000..829de0f341
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11291.yml
@@ -0,0 +1,4 @@
+author: "YakumoChen"
+delete-after: True
+changes:
+ - bugfix: "Mining base looks more natural where it's spawned."
diff --git a/html/changelogs/AutoChangeLog-pr-11296.yml b/html/changelogs/AutoChangeLog-pr-11296.yml
new file mode 100644
index 0000000000..3c255ee7de
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11296.yml
@@ -0,0 +1,5 @@
+author: "Putnam3145"
+delete-after: True
+changes:
+ - bugfix: "Actually made things work as intended."
+ - code_imp: "Removed a redundant turf melting check from the supermatter."
diff --git a/html/changelogs/AutoChangeLog-pr-11302.yml b/html/changelogs/AutoChangeLog-pr-11302.yml
new file mode 100644
index 0000000000..b4012bd269
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-11302.yml
@@ -0,0 +1,4 @@
+author: "kevinz000"
+delete-after: True
+changes:
+ - bugfix: "compact defibs have 10k cells again"
diff --git a/sound/roundend/seeyoulaterokay.ogg b/sound/roundend/seeyoulaterokay.ogg
new file mode 100644
index 0000000000..8d08103a73
Binary files /dev/null and b/sound/roundend/seeyoulaterokay.ogg differ