From c720e800dfbb5237d3de7dd6dd1e707a2b3cae2f Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:08:02 -0700
Subject: [PATCH 01/12] whew!
---
code/datums/components/killerqueen.dm | 91 +++++++++++++++++++
.../simple_animal/guardian/types/explosive.dm | 63 +++----------
tgstation.dme | 1 +
3 files changed, 103 insertions(+), 52 deletions(-)
create mode 100644 code/datums/components/killerqueen.dm
diff --git a/code/datums/components/killerqueen.dm b/code/datums/components/killerqueen.dm
new file mode 100644
index 0000000000..9930b0d3ac
--- /dev/null
+++ b/code/datums/components/killerqueen.dm
@@ -0,0 +1,91 @@
+/**
+ * KILLER QUEEN
+ *
+ * Simple contact bomb component
+ * Blows up the first person to touch it.
+ */
+/datum/component/killerqueen
+ can_transfer = TRUE
+ /// strength of explosion on the touch-er. 0 to disable. usually only used if the normal explosion is disabled (this is the default).
+ var/ex_strength = EXPLODE_HEAVY
+ /// callback to invoke with (parent, victim) before standard detonation - useful for losing a reference to this component or implementing custom behavior. return FALSE to prevent explosion.
+ var/datum/callback/pre_explode
+ /// callback to invoke with (parent) when deleting without an explosion
+ var/datum/callback/failure
+ /// did we explode
+ var/exploded = FALSE
+ /// examine message
+ var/examine_message
+ /// light explosion radius
+ var/light = 0
+ /// heavy explosion radius
+ var/heavy = 0
+ /// dev explosion radius
+ var/dev = 0
+ /// flame explosion radius
+ var/flame = 0
+ /// only triggered by living mobs
+ var/living_only = TRUE
+
+
+/datum/component/killerqueen/Initialize(ex_strength = EXPLODE_HEAVY, datum/callback/pre_explode, datum/callback/failure, examine_message, light = 0, heavy = 0, dev = 0, flame = 0, living_only = TRUE)
+ . = ..()
+ if(. & COMPONENT_INCOMPATIBLE)
+ return
+ if(!isatom(parent))
+ return COMPONENT_INCOMPATIBLE
+ src.ex_strength = ex_strength
+ src.pre_explode = pre_explode
+ src.failure = failure
+ src.examine_message = examine_message
+ src.light = light
+ src.heavy = heavy
+ src.dev = dev
+ src.flame = flame
+ src.living_only = living_only
+
+/datum/component/killerqueen/Destroy()
+ if(!exploded)
+ failure.Invoke(parent)
+ return ..()
+
+/datum/component/killerqueen/RegisterWithParent()
+ . = ..()
+ RegisterSignal(parent, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW, COMSIG_ATOM_ATTACK_ANIMAL), .proc/touch_detonate)
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/bump_detonate)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_detonate)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+
+/datum/component/killerqueen/UnregisterFromParent()
+ . = ..()
+ UnregisterSignal(parent, list(COMSIG_ATOM_ATTACK_ANIMAL, COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW,
+ COMSIG_MOVABLE_BUMP, COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE))
+
+/datum/component/killerqueen/proc/attackby_detonate(datum/source, obj/item/I, mob/user)
+ detonate(user)
+
+/datum/component/killerqueen/proc/bump_detonate(datum/source, atom/A)
+ detonate(user)
+
+/datum/component/killerqueen/proc/touch_detonate(datum/source, mob/user)
+ detonate(user)
+
+/datum/component/killerqueen/proc/on_examine(datum/source, list/examine_return)
+ if(examine_message)
+ examine_return += examine_message
+
+/datum/component/killerqueen/proc/detonate(atom/victim)
+ if(!isliving(victim) && living_only)
+ return
+ if(pre_explode && !pre_explode.Invoke(parent, victim))
+ return
+ if(ex_strength)
+ victim.ex_act(ex_strength)
+ if(light || heavy || dev || flame)
+ explosion(parent, dev, heavy, light, flame_range = flame)
+ else
+ var/turf/T = get_turf(parent)
+ playsound(T, 'sound/effects/explosion2.ogg', 200, 1)
+ new /obj/effect/temp_visual/explosion(T)
+ exploded = TRUE
+ qdel(src)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index d396434708..4f44a51b32 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -36,61 +36,20 @@
return
if(isobj(A) && Adjacent(A))
if(bomb_cooldown <= world.time && !stat)
- var/obj/guardian_bomb/B = new /obj/guardian_bomb(get_turf(A))
+ var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, CALLBACK(src, .proc/on_explode), CALLBACK(src, .proc/on_failure), \
+ examine_message = "It glows with a strange light!"))
+ QDEL_IN(K, 1 MINUTES)
to_chat(src, "Success! Bomb armed!")
bomb_cooldown = world.time + 200
- B.spawner = src
- B.disguise(A)
else
to_chat(src, "Your powers are on cooldown! You must wait 20 seconds between bombs.")
-/obj/guardian_bomb
- name = "bomb"
- desc = "You shouldn't be seeing this!"
- var/obj/stored_obj
- var/mob/living/simple_animal/hostile/guardian/spawner
+/mob/living/simple_animal/hostile/guardian/bomb/proc/on_explode(atom/bomb, atom/victim)
+ if((victim == src) || (victim == summoner) || (hasmatchingsummoner(victim)))
+ to_chat(victim, "[src] glows with a strange light, and you don't touch it.")
+ return FALSE
+ to_chat(spawner, "One of your explosive traps caught [victim]!")
+ to_chat(victim, "[bomb] was boobytrapped!")
-
-/obj/guardian_bomb/proc/disguise(obj/A)
- A.forceMove(src)
- stored_obj = A
- opacity = A.opacity
- anchored = A.anchored
- density = A.density
- appearance = A.appearance
- addtimer(CALLBACK(src, .proc/disable), 600)
-
-/obj/guardian_bomb/proc/disable()
- stored_obj.forceMove(get_turf(src))
- to_chat(spawner, "Failure! Your trap didn't catch anyone this time.")
- qdel(src)
-
-/obj/guardian_bomb/proc/detonate(mob/living/user)
- if(isliving(user))
- if(user != spawner && user != spawner.summoner && !spawner.hasmatchingsummoner(user))
- to_chat(user, "[src] was boobytrapped!")
- to_chat(spawner, "Success! Your trap caught [user]")
- var/turf/T = get_turf(src)
- stored_obj.forceMove(T)
- playsound(T,'sound/effects/explosion2.ogg', 200, 1)
- new /obj/effect/temp_visual/explosion(T)
- user.ex_act(EXPLODE_HEAVY)
- qdel(src)
- else
- to_chat(user, "[src] glows with a strange light, and you don't touch it.")
-
-/obj/guardian_bomb/Bump(atom/A)
- detonate(A)
- ..()
-
-/obj/guardian_bomb/attackby(mob/living/user)
- detonate(user)
-
-//ATTACK HAND IGNORING PARENT RETURN VALUE
-/obj/guardian_bomb/attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
- detonate(user)
-
-/obj/guardian_bomb/examine(mob/user)
- . = stored_obj.examine(user)
- if(get_dist(user,src)<=2)
- . += "It glows with a strange light!"
+/mob/living/simple_animal/hostile/guardian/bomb/proc/on_failure(atom/bomb)
+ to_chat(spawner, "Failure! Your trap didn't catch anyone this time.")
diff --git a/tgstation.dme b/tgstation.dme
index 75914f9d66..220904c85b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -422,6 +422,7 @@
#include "code\datums\components\igniter.dm"
#include "code\datums\components\infective.dm"
#include "code\datums\components\jousting.dm"
+#include "code\datums\components\killerqueen.dm"
#include "code\datums\components\knockback.dm"
#include "code\datums\components\knockoff.dm"
#include "code\datums\components\lifesteal.dm"
From 4ab175d8126d497b88e60490ee592667619be3b2 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:10:34 -0700
Subject: [PATCH 02/12] sigh
---
.../mob/living/simple_animal/guardian/types/explosive.dm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index 4f44a51b32..c5369afc20 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -37,7 +37,7 @@
if(isobj(A) && Adjacent(A))
if(bomb_cooldown <= world.time && !stat)
var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, CALLBACK(src, .proc/on_explode), CALLBACK(src, .proc/on_failure), \
- examine_message = "It glows with a strange light!"))
+ examine_message = "It glows with a strange light!")
QDEL_IN(K, 1 MINUTES)
to_chat(src, "Success! Bomb armed!")
bomb_cooldown = world.time + 200
@@ -46,10 +46,10 @@
/mob/living/simple_animal/hostile/guardian/bomb/proc/on_explode(atom/bomb, atom/victim)
if((victim == src) || (victim == summoner) || (hasmatchingsummoner(victim)))
- to_chat(victim, "[src] glows with a strange light, and you don't touch it.")
+ to_chat(victim, "[src] glows with a strange light, and you don't touch it.")
return FALSE
- to_chat(spawner, "One of your explosive traps caught [victim]!")
+ to_chat(src, "One of your explosive traps caught [victim]!")
to_chat(victim, "[bomb] was boobytrapped!")
/mob/living/simple_animal/hostile/guardian/bomb/proc/on_failure(atom/bomb)
- to_chat(spawner, "Failure! Your trap didn't catch anyone this time.")
+ to_chat(src, "Failure! Your trap didn't catch anyone this time.")
From fd738fd16a4e800287f637ef81b6a287b1f76dfe Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:12:30 -0700
Subject: [PATCH 03/12] spelling
---
code/datums/components/killerqueen.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/datums/components/killerqueen.dm b/code/datums/components/killerqueen.dm
index 9930b0d3ac..783ec789b7 100644
--- a/code/datums/components/killerqueen.dm
+++ b/code/datums/components/killerqueen.dm
@@ -65,7 +65,7 @@
detonate(user)
/datum/component/killerqueen/proc/bump_detonate(datum/source, atom/A)
- detonate(user)
+ detonate(A)
/datum/component/killerqueen/proc/touch_detonate(datum/source, mob/user)
detonate(user)
From 78b6a60e80f0f44e91df063b36839b036f494e89 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:25:27 -0700
Subject: [PATCH 04/12] oh
---
code/datums/components/killerqueen.dm | 2 +-
.../mob/living/simple_animal/guardian/types/explosive.dm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/datums/components/killerqueen.dm b/code/datums/components/killerqueen.dm
index 783ec789b7..7c469a503b 100644
--- a/code/datums/components/killerqueen.dm
+++ b/code/datums/components/killerqueen.dm
@@ -46,7 +46,7 @@
/datum/component/killerqueen/Destroy()
if(!exploded)
- failure.Invoke(parent)
+ failure?.Invoke(parent)
return ..()
/datum/component/killerqueen/RegisterWithParent()
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index c5369afc20..2bc3cc9480 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -36,7 +36,7 @@
return
if(isobj(A) && Adjacent(A))
if(bomb_cooldown <= world.time && !stat)
- var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, CALLBACK(src, .proc/on_explode), CALLBACK(src, .proc/on_failure), \
+ var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, EXPLODE_HEAVY, CALLBACK(src, .proc/on_explode), CALLBACK(src, .proc/on_failure), \
examine_message = "It glows with a strange light!")
QDEL_IN(K, 1 MINUTES)
to_chat(src, "Success! Bomb armed!")
From c87c2bd850f0452b20b05a99ba644aefcd8e6d66 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Tue, 28 Jul 2020 12:31:35 -0700
Subject: [PATCH 05/12] smh
---
code/datums/components/killerqueen.dm | 2 +-
.../mob/living/simple_animal/guardian/types/explosive.dm | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/code/datums/components/killerqueen.dm b/code/datums/components/killerqueen.dm
index 7c469a503b..1c660d0a87 100644
--- a/code/datums/components/killerqueen.dm
+++ b/code/datums/components/killerqueen.dm
@@ -70,7 +70,7 @@
/datum/component/killerqueen/proc/touch_detonate(datum/source, mob/user)
detonate(user)
-/datum/component/killerqueen/proc/on_examine(datum/source, list/examine_return)
+/datum/component/killerqueen/proc/on_examine(datum/source, mob/examiner, list/examine_return)
if(examine_message)
examine_return += examine_message
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index 2bc3cc9480..26e5d791f3 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -50,6 +50,7 @@
return FALSE
to_chat(src, "One of your explosive traps caught [victim]!")
to_chat(victim, "[bomb] was boobytrapped!")
+ return TRUE
/mob/living/simple_animal/hostile/guardian/bomb/proc/on_failure(atom/bomb)
to_chat(src, "Failure! Your trap didn't catch anyone this time.")
From e197cb44b2f44c2a67d9e06785c23cf668a6758e Mon Sep 17 00:00:00 2001
From: dapnee <33661984+dapnee@users.noreply.github.com>
Date: Fri, 31 Jul 2020 15:37:40 -0600
Subject: [PATCH 06/12] You Thought I Was Done Fucking With Box BUT YOU WERE
WRONG!
Fixed active turfs from plating that sat in space, removed random catwalk to nowhere, turned the medical console in the sleeper room to not face a window, FIXED MAINTENANCE BAR APC NOT ACTUALLY BEING FOR THE MAINTENANCE BAR. As well as fixed the xeno hive ruin on lavaland from having active turfs.
---
.../LavaRuins/lavaland_surface_alien_nest.dmm | 32 ++++----
_maps/map_files/BoxStation/BoxStation.dmm | 81 +++++++------------
2 files changed, 47 insertions(+), 66 deletions(-)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
index 6feb378515..59bda899d6 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
@@ -227,7 +227,7 @@
/area/ruin/unpowered/xenonest)
"ba" = (
/obj/structure/stone_tile/slab,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bb" = (
/obj/structure/stone_tile/cracked{
@@ -241,7 +241,7 @@
dir = 8
},
/obj/item/flashlight/lantern,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bc" = (
/obj/structure/stone_tile/block,
@@ -251,7 +251,7 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bd" = (
/obj/structure/stone_tile/block,
@@ -262,7 +262,7 @@
dir = 1
},
/obj/effect/decal/cleanable/blood/xeno,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"be" = (
/obj/structure/stone_tile/block,
@@ -272,7 +272,7 @@
/obj/structure/stone_tile{
dir = 1
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bf" = (
/obj/structure/stone_tile,
@@ -286,7 +286,7 @@
dir = 4
},
/obj/item/flashlight/lantern,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bg" = (
/obj/structure/alien/weeds,
@@ -303,7 +303,7 @@
/obj/structure/stone_tile{
dir = 8
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bi" = (
/obj/structure/alien/weeds,
@@ -336,7 +336,7 @@
dir = 1
},
/obj/structure/stone_tile,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bm" = (
/obj/structure/stone_tile/slab/cracked,
@@ -352,7 +352,7 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bo" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -383,7 +383,7 @@
dir = 1
},
/obj/effect/decal/cleanable/blood/xeno,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bs" = (
/obj/structure/stone_tile/block{
@@ -416,7 +416,7 @@
dir = 1
},
/obj/structure/stone_tile/cracked,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bw" = (
/obj/structure/stone_tile/cracked{
@@ -430,7 +430,7 @@
dir = 8
},
/obj/item/flashlight/lantern,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bx" = (
/obj/structure/stone_tile/block{
@@ -441,7 +441,7 @@
dir = 8
},
/obj/effect/decal/cleanable/blood/xeno,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"by" = (
/obj/structure/stone_tile/block{
@@ -451,7 +451,7 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bz" = (
/obj/structure/stone_tile/block/cracked{
@@ -461,7 +461,7 @@
/obj/structure/stone_tile{
dir = 8
},
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bA" = (
/obj/structure/stone_tile/cracked{
@@ -475,7 +475,7 @@
},
/obj/structure/stone_tile,
/obj/item/flashlight/lantern,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bB" = (
/obj/structure/alien/weeds,
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 9877f5b259..0a6ab7c1dd 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -5103,7 +5103,7 @@
/area/security/main)
"ajv" = (
/obj/machinery/computer/med_data{
- dir = 3
+ dir = 4
},
/obj/structure/sign/poster/official/medical_green_cross{
pixel_x = -32
@@ -30888,7 +30888,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"bvH" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -53679,9 +53679,6 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/crew_quarters/toilet)
-"dVU" = (
-/turf/open/floor/plating,
-/area/space/nearstation)
"dXq" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
@@ -53734,7 +53731,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 6
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"egt" = (
/obj/effect/turf_decal/tile/bar,
@@ -54363,7 +54360,7 @@
"fIs" = (
/obj/structure/grille,
/obj/structure/lattice,
-/turf/open/floor/plating,
+/turf/open/space/basic,
/area/space/nearstation)
"fJY" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -54521,19 +54518,6 @@
},
/turf/open/floor/carpet,
/area/crew_quarters/cryopod)
-"ghq" = (
-/obj/structure/lattice/catwalk,
-/obj/item/stack/marker_beacon{
- anchored = 1;
- icon_state = "markerburgundy-on";
- light_color = "#FA644B";
- light_power = 3;
- light_range = 3;
- name = "Docking Beacon";
- picked_color = "Burgundy"
- },
-/turf/open/floor/plating,
-/area/space/nearstation)
"ghD" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
@@ -54690,7 +54674,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"gJi" = (
/obj/structure/lattice/catwalk,
@@ -54926,7 +54910,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"hxn" = (
/obj/effect/spawner/structure/window/reinforced,
@@ -57288,7 +57272,7 @@
/area/crew_quarters/theatre)
"oyN" = (
/obj/effect/turf_decal/stripes/line,
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"oyX" = (
/obj/machinery/atmospherics/components/binary/pump/on{
@@ -58410,7 +58394,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"slk" = (
/obj/machinery/door/airlock/maintenance{
@@ -58667,9 +58651,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall/r_wall,
/area/engine/engine_smes)
-"sQX" = (
-/turf/open/floor/plating,
-/area/space)
"sRH" = (
/obj/machinery/autolathe/secure{
name = "public autolathe"
@@ -58786,7 +58767,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"trb" = (
/obj/machinery/light{
@@ -59009,7 +58990,7 @@
/area/hallway/primary/central)
"uaw" = (
/obj/machinery/power/apc{
- areastring = "/area/storage/art";
+ areastring = "/area/maintenance/bar";
dir = 1;
name = "Maint bar";
pixel_y = 24
@@ -59422,7 +59403,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
-/turf/open/floor/plating,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"vbi" = (
/obj/structure/table,
@@ -60521,7 +60502,7 @@
name = "Docking Beacon";
picked_color = "Burgundy"
},
-/turf/open/space/basic,
+/turf/open/floor/plating/airless,
/area/space/nearstation)
"xOx" = (
/obj/structure/chair/comfy/brown{
@@ -66754,11 +66735,11 @@ aaa
aaa
aaa
aaa
-ghq
+xLX
aaa
aaa
aaa
-ghq
+xLX
aaa
aaa
aaa
@@ -67005,9 +66986,9 @@ aaa
aaa
aaa
aaa
-ghq
+xLX
aaa
-ghq
+xLX
aaa
aaa
aaa
@@ -67019,9 +67000,9 @@ gXs
aaa
aaa
aaa
-ghq
+xLX
aaa
-ghq
+xLX
aaa
aaa
aaa
@@ -76570,7 +76551,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -76827,7 +76808,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -77084,7 +77065,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -77341,7 +77322,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -77598,7 +77579,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -77855,7 +77836,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aaa
aaa
@@ -78112,7 +78093,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aoV
bZm
@@ -78369,13 +78350,13 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aoV
bVz
aaf
aaf
-sQX
+aoV
aaa
aaS
aaf
@@ -78626,7 +78607,7 @@ aaa
aaa
aaa
aaa
-aag
+aaa
aaa
aag
bVz
@@ -78883,7 +78864,7 @@ aaa
aaa
aaa
aaa
-aag
+gJi
aaa
aaf
bVz
@@ -79140,7 +79121,7 @@ aaa
aaa
aaa
aaa
-aag
+gJi
aaa
aaf
bVz
@@ -84190,7 +84171,7 @@ aaa
aaa
gXs
gXs
-dVU
+aaH
abc
abu
abu
From bcffff1e7d8779dd955a40429fc8a26228f37cb6 Mon Sep 17 00:00:00 2001
From: dapnee <33661984+dapnee@users.noreply.github.com>
Date: Fri, 31 Jul 2020 16:02:58 -0600
Subject: [PATCH 07/12] Update BoxStation.dmm
fucking amazing
---
_maps/map_files/BoxStation/BoxStation.dmm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 0a6ab7c1dd..f9ff2a594c 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -58111,7 +58111,7 @@
dir = 5
},
/obj/machinery/camera{
- c_tag = "Bar Backroom"
+ c_tag = "Gravity Generator - Fore"
},
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
From 825ac6124b72652cd3ec8d3fa5013811ca491a1e Mon Sep 17 00:00:00 2001
From: dapnee <33661984+dapnee@users.noreply.github.com>
Date: Fri, 31 Jul 2020 16:29:25 -0600
Subject: [PATCH 08/12] missed a tile
oopsy
---
_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
index 59bda899d6..eab08815f3 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_alien_nest.dmm
@@ -340,7 +340,7 @@
/area/ruin/unpowered/xenonest)
"bm" = (
/obj/structure/stone_tile/slab/cracked,
-/turf/open/indestructible/boss/air,
+/turf/open/indestructible/boss,
/area/ruin/unpowered/xenonest)
"bn" = (
/obj/structure/stone_tile/block{
From 06f5ce64012cc278874d1111b3e8110e9779a016 Mon Sep 17 00:00:00 2001
From: silicons <2003111+silicons@users.noreply.github.com>
Date: Sun, 2 Aug 2020 09:30:09 -0700
Subject: [PATCH 09/12] buffs shoving (#12925)
* ^w^
* ok
* ok
---
code/__DEFINES/combat.dm | 7 ++++---
code/__DEFINES/movespeed_modification.dm | 1 -
code/__DEFINES/status_effects.dm | 3 +++
code/datums/status_effects/debuffs.dm | 15 +++++++++++++++
code/modules/clothing/shoes/_shoes.dm | 6 ++----
code/modules/mob/living/carbon/human/human.dm | 6 ------
code/modules/mob/living/carbon/human/species.dm | 6 +++---
code/modules/mob/living/status_procs.dm | 9 +++++++++
code/modules/movespeed/modifiers/mobs.dm | 3 ---
code/modules/recycling/disposal/bin.dm | 1 -
10 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 1bf9b01403..6a60768875 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -154,9 +154,10 @@
#define SHOVE_KNOCKDOWN_HUMAN 30
#define SHOVE_KNOCKDOWN_TABLE 30
#define SHOVE_KNOCKDOWN_COLLATERAL 10
-//for the shove slowdown, see __DEFINES/movespeed_modification.dm
-#define SHOVE_SLOWDOWN_LENGTH 30
-#define SHOVE_SLOWDOWN_STRENGTH 0.85 //multiplier
+/// how long they're staggered for
+#define SHOVE_STAGGER_DURATION 35
+/// how long they're off balance for
+#define SHOVE_OFFBALANCE_DURATION 30
//Shove disarming item list
GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
/obj/item/gun)))
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
index 699f39e79f..5e7d0a2cca 100644
--- a/code/__DEFINES/movespeed_modification.dm
+++ b/code/__DEFINES/movespeed_modification.dm
@@ -63,7 +63,6 @@
#define MOVESPEED_ID_TASED_STATUS "TASED"
#define MOVESPEED_ID_ELECTROSTAFF "ELECTROSTAFF"
-#define MOVESPEED_ID_SHOVE "SHOVE"
#define MOVESPEED_ID_FAT "FAT"
#define MOVESPEED_ID_COLD "COLD"
#define MOVESPEED_ID_HUNGRY "HUNGRY"
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index 14cc7c9e5e..9a3b5d55f4 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -111,6 +111,9 @@
#define STATUS_EFFECT_LIMP /datum/status_effect/limp //For when you have a busted leg (or two!) and want additional slowdown when walking on that leg
+/// shoves inflict this to indicate the next shove while this is in effect should disarm guns
+#define STATUS_EFFECT_OFF_BALANCE /datum/status_effect/off_balance
+
/////////////
// NEUTRAL //
/////////////
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index aa27c6424e..407047410b 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -97,6 +97,21 @@
duration = set_duration
return ..()
+/datum/status_effect/off_balance
+ id = "offbalance"
+ alert_type = null
+
+/datum/status_effect/off_balance/on_creation(mob/living/new_owner, set_duration)
+ if(isnum(set_duration))
+ duration = set_duration
+ return ..()
+
+/datum/status_effect/off_balance/on_remove()
+ var/active_item = owner.get_active_held_item()
+ if(is_type_in_typecache(active_item, GLOB.shove_disarming_types))
+ owner.visible_message("[owner.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE)
+ return ..()
+
/obj/screen/alert/status_effect/asleep
name = "Asleep"
desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 746bd3458a..49256b490d 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -257,10 +257,8 @@
if(14 to 25) // 1.3ish% chance to stumble and be a bit off balance (like being disarmed)
to_chat(our_guy, "You stumble a bit on your untied shoelaces!")
- if(!our_guy.has_movespeed_modifier(/datum/movespeed_modifier/shove))
- our_guy.add_movespeed_modifier(/datum/movespeed_modifier/shove)
- addtimer(CALLBACK(our_guy, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH)
-
+ our_guy.ShoveOffBalance(SHOVE_OFFBALANCE_DURATION)
+ our_guy.Stagger(SHOVE_OFFBALANCE_DURATION) //yes, same.
if(26 to 1000)
wiser = FALSE
if(wiser)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 145db1be1e..b402260611 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1040,12 +1040,6 @@
return TRUE
return FALSE
-/mob/living/carbon/human/proc/clear_shove_slowdown()
- remove_movespeed_modifier(/datum/movespeed_modifier/shove)
- var/active_item = get_active_held_item()
- if(is_type_in_typecache(active_item, GLOB.shove_disarming_types))
- visible_message("[src.name] regains their grip on \the [active_item]!", "You regain your grip on \the [active_item]", null, COMBAT_MESSAGE_RANGE)
-
/mob/living/carbon/human/updatehealth()
. = ..()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 430227a39c..59c7c39e35 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1942,11 +1942,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
target.visible_message("[user.name] shoves [target.name]!",
"[user.name] shoves you!", null, COMBAT_MESSAGE_RANGE, null,
user, "You shove [target.name]!")
+ target.Stagger(SHOVE_STAGGER_DURATION)
var/obj/item/target_held_item = target.get_active_held_item()
if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types))
target_held_item = null
- if(!target.has_movespeed_modifier(/datum/movespeed_modifier/shove))
- target.add_movespeed_modifier(/datum/movespeed_modifier/shove)
+ if(!target.has_status_effect(STATUS_EFFECT_OFF_BALANCE))
if(target_held_item)
if(!HAS_TRAIT(target_held_item, TRAIT_NODROP))
target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!",
@@ -1954,12 +1954,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
append_message += ", loosening their grip on [target_held_item]"
else
append_message += ", but couldn't loose their grip on [target_held_item]"
- addtimer(CALLBACK(target, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH)
else if(target_held_item)
if(target.dropItemToGround(target_held_item))
target.visible_message("[target.name] drops \the [target_held_item]!!",
"You drop \the [target_held_item]!!", null, COMBAT_MESSAGE_RANGE)
append_message += ", causing them to drop [target_held_item]"
+ target.ShoveOffBalance(SHOVE_OFFBALANCE_DURATION)
log_combat(user, target, "shoved", append_message)
/datum/species/proc/apply_damage(damage, damagetype = BRUTE, def_zone = null, blocked, mob/living/carbon/human/H, forced = FALSE, spread_damage = FALSE, wound_bonus = 0, bare_wound_bonus = 0, sharpness = FALSE)
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 0029300936..87fd0cf609 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -500,6 +500,15 @@
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
+///////////////////////////////// OFF BALANCE/SHOVIES ////////////////////////
+/mob/living/proc/ShoveOffBalance(amount)
+ var/datum/status_effect/off_balance/B = has_status_effect(STATUS_EFFECT_OFF_BALANCE)
+ if(B)
+ B.duration = max(world.time + amount, B.duration)
+ else if(amount > 0)
+ B = apply_status_effect(STATUS_EFFECT_OFF_BALANCE, amount)
+ return B
+
///////////////////////////////// FROZEN /////////////////////////////////////
/mob/living/proc/IsFrozen()
diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm
index a2176ca95e..d17767bb1f 100644
--- a/code/modules/movespeed/modifiers/mobs.dm
+++ b/code/modules/movespeed/modifiers/mobs.dm
@@ -78,9 +78,6 @@
blacklisted_movetypes = FLOATING
variable = TRUE
-/datum/movespeed_modifier/shove
- multiplicative_slowdown = SHOVE_SLOWDOWN_STRENGTH
-
/datum/movespeed_modifier/human_carry
variable = TRUE
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index 64fe786219..ba4870903e 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -375,7 +375,6 @@
log_combat(user, target, "shoved", "into [src] (disposal bin)")
return TRUE
-
/obj/machinery/disposal/bin/flush()
..()
full_pressure = FALSE
From a7ba1f0cb76d58af0be73cab0e8ac5b6bd06b6e8 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sun, 2 Aug 2020 11:30:13 -0500
Subject: [PATCH 10/12] Automatic changelog generation for PR #12925 [ci skip]
---
html/changelogs/AutoChangeLog-pr-12925.yml | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-12925.yml
diff --git a/html/changelogs/AutoChangeLog-pr-12925.yml b/html/changelogs/AutoChangeLog-pr-12925.yml
new file mode 100644
index 0000000000..5e38656352
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12925.yml
@@ -0,0 +1,5 @@
+author: "silicons"
+delete-after: True
+changes:
+ - rscadd: "shoves have been buffed to apply a status effect rather than a 0.85 movespeed modifier, meaning repeatedly shoving someone now renews the debuff"
+ - balance: "shoves now stagger for 3.5 seconds."
From a5ac60222f660546c82237c265e8d1ec10c6a586 Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sun, 2 Aug 2020 12:50:38 -0500
Subject: [PATCH 11/12] Automatic changelog generation for PR #12989 [ci skip]
---
html/changelogs/AutoChangeLog-pr-12989.yml | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-12989.yml
diff --git a/html/changelogs/AutoChangeLog-pr-12989.yml b/html/changelogs/AutoChangeLog-pr-12989.yml
new file mode 100644
index 0000000000..6b0c2229af
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12989.yml
@@ -0,0 +1,4 @@
+author: "dapnee"
+delete-after: True
+changes:
+ - bugfix: "active turfs on box and xenohive, maintenance bar APC not being stringed correctly, turned a monitor to face a direction that makes sense, changed tag of camera in gravgen being misnamed"
From e0114c6964e7c1f16aa894236d822265d6bb238e Mon Sep 17 00:00:00 2001
From: CitadelStationBot
Date: Sun, 2 Aug 2020 12:52:10 -0500
Subject: [PATCH 12/12] Automatic changelog generation for PR #12954 [ci skip]
---
html/changelogs/AutoChangeLog-pr-12954.yml | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 html/changelogs/AutoChangeLog-pr-12954.yml
diff --git a/html/changelogs/AutoChangeLog-pr-12954.yml b/html/changelogs/AutoChangeLog-pr-12954.yml
new file mode 100644
index 0000000000..0b28e94936
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12954.yml
@@ -0,0 +1,5 @@
+author: "silicons"
+delete-after: True
+changes:
+ - balance: "explosive stand bombs can now be examined from any distance"
+ - code_imp: "explosive stand bombs are now a component."