diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm
index 0357863726c..5883bfd3394 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_asteroid.dmm
@@ -1,50 +1,12 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"a" = (
-/turf/open/genturf,
-/area/mine/unexplored)
-"b" = (
-/turf/closed/mineral/random/snow,
-/area/icemoon/surface)
"c" = (
/turf/closed/wall/mineral/bronze,
/area/icemoon/surface)
-"d" = (
-/obj/structure/fluff/clockwork/fallen_armor,
+"e" = (
+/obj/structure/fluff/clockwork/alloy_shards/medium,
/turf/open/floor/bronze,
/area/icemoon/surface)
-"i" = (
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"k" = (
-/obj/structure/fluff/clockwork/alloy_shards,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"n" = (
-/obj/effect/mob_spawn/human/skeleton,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"p" = (
-/obj/structure/fluff/clockwork/alloy_shards/large,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"r" = (
-/obj/structure/fluff/clockwork/blind_eye,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"u" = (
-/obj/structure/table/bronze,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"v" = (
-/obj/structure/fluff/clockwork/alloy_shards/medium_gearbit,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"w" = (
-/turf/open/floor/bronze{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/icemoon/surface)
-"x" = (
+"h" = (
/obj/effect/mob_spawn/human/skeleton,
/obj/item/clothing/suit/bronze,
/obj/item/clothing/shoes/bronze,
@@ -53,7 +15,39 @@
initial_gas_mix = "TEMP=2.7"
},
/area/icemoon/surface)
-"z" = (
+"m" = (
+/obj/item/nullrod/spear{
+ name = "empowered bronze spear"
+ },
+/turf/open/floor/bronze{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/icemoon/surface)
+"o" = (
+/turf/open/floor/bronze{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/icemoon/surface)
+"A" = (
+/obj/structure/fluff/clockwork/clockgolem_remains,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"B" = (
+/turf/open/genturf,
+/area/mine/unexplored)
+"C" = (
+/obj/structure/fluff/clockwork/blind_eye,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"D" = (
+/obj/structure/fluff/clockwork/alloy_shards/large,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"G" = (
+/obj/structure/fluff/clockwork/alloy_shards/medium_gearbit,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"I" = (
/obj/structure/table/bronze,
/obj/item/toy/clockwork_watch{
desc = "You can still feel the embers of a once great empire in your hand...";
@@ -61,11 +55,41 @@
},
/turf/open/floor/bronze,
/area/icemoon/surface)
-"P" = (
-/obj/structure/fluff/clockwork/clockgolem_remains,
+"J" = (
+/obj/effect/mob_spawn/human/skeleton,
/turf/open/floor/bronze,
/area/icemoon/surface)
-"Q" = (
+"K" = (
+/obj/structure/table/bronze,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"L" = (
+/mob/living/simple_animal/hostile/megafauna/clockwork_defender,
+/turf/open/floor/bronze{
+ initial_gas_mix = "TEMP=2.7"
+ },
+/area/icemoon/surface)
+"M" = (
+/obj/structure/fluff/clockwork/fallen_armor,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"N" = (
+/turf/closed/mineral/random/snow,
+/area/icemoon/surface)
+"O" = (
+/obj/structure/fluff/clockwork/alloy_shards,
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"W" = (
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"X" = (
+/obj/machinery/door/airlock/bronze{
+ use_power = 0
+ },
+/turf/open/floor/bronze,
+/area/icemoon/surface)
+"Y" = (
/obj/item/paper{
info = "We tried to use the power of this moon to bring him back, but we've failed... I've contained what remains of his power here... if you find this, make sure those Nar-Sian Dogs don't last a second."
},
@@ -74,69 +98,51 @@
initial_gas_mix = "TEMP=2.7"
},
/area/icemoon/surface)
-"R" = (
-/obj/item/nullrod/spear{
- name = "empowered bronze spear"
- },
-/turf/open/floor/bronze{
- initial_gas_mix = "TEMP=2.7"
- },
-/area/icemoon/surface)
-"U" = (
-/obj/machinery/door/airlock/bronze{
- use_power = 0
- },
-/turf/open/floor/bronze,
-/area/icemoon/surface)
-"V" = (
-/obj/structure/fluff/clockwork/alloy_shards/medium,
-/turf/open/floor/bronze,
-/area/icemoon/surface)
(1,1,1) = {"
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
"}
(2,1,1) = {"
-b
+N
c
c
c
@@ -155,8 +161,8 @@ c
c
c
c
-U
-U
+X
+X
c
c
c
@@ -175,10 +181,10 @@ c
c
c
c
-b
+N
"}
(3,1,1) = {"
-b
+N
c
c
c
@@ -195,12 +201,12 @@ c
c
c
c
-u
-v
-i
-P
-i
-u
+K
+G
+W
+A
+W
+K
c
c
c
@@ -217,1438 +223,1438 @@ c
c
c
c
-b
+N
"}
(4,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-r
-i
-n
-i
-i
-r
+C
+W
+J
+W
+W
+C
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(5,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
c
-U
-U
+X
+X
c
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(6,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(7,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(8,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(9,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(10,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(11,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(12,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(13,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(14,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(15,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(16,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(17,1,1) = {"
-b
+N
c
c
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
c
c
-b
+N
"}
(18,1,1) = {"
-b
+N
c
-u
-r
+K
+C
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-r
-z
+C
+I
c
-b
+N
"}
(19,1,1) = {"
-b
+N
c
-i
-i
+W
+W
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-w
-w
+o
+o
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-i
-p
+W
+D
c
-b
+N
"}
(20,1,1) = {"
-b
-U
-k
-n
-U
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-w
-x
-w
-w
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-U
-n
-i
-U
-b
+N
+X
+O
+J
+X
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+o
+h
+L
+o
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+X
+J
+W
+X
+N
"}
(21,1,1) = {"
-b
-U
-i
-P
-U
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-w
-R
-Q
-w
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-U
-v
-d
-U
-b
+N
+X
+W
+A
+X
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+o
+m
+Y
+o
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+X
+G
+M
+X
+N
"}
(22,1,1) = {"
-b
+N
c
-i
-i
+W
+W
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-w
-w
+o
+o
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-i
-i
+W
+W
c
-b
+N
"}
(23,1,1) = {"
-b
+N
c
-u
-r
+K
+C
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-r
-u
+C
+K
c
-b
+N
"}
(24,1,1) = {"
-b
+N
c
c
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
c
c
-b
+N
"}
(25,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(26,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(27,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(28,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(29,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(30,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(31,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(32,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(33,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(34,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(35,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(36,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
c
-U
-U
+X
+X
c
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(37,1,1) = {"
-b
+N
c
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
-r
-i
-n
-V
-i
-r
+C
+W
+J
+e
+W
+C
c
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
+B
c
c
-b
+N
"}
(38,1,1) = {"
-b
+N
c
c
c
@@ -1665,12 +1671,12 @@ c
c
c
c
-u
-i
-P
-i
-i
-u
+K
+W
+A
+W
+W
+K
c
c
c
@@ -1687,10 +1693,10 @@ c
c
c
c
-b
+N
"}
(39,1,1) = {"
-b
+N
c
c
c
@@ -1709,8 +1715,8 @@ c
c
c
c
-U
-U
+X
+X
c
c
c
@@ -1729,47 +1735,47 @@ c
c
c
c
-b
+N
"}
(40,1,1) = {"
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
-b
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
+N
"}
diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm
index 840a31f90fd..4fb4dc201dd 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm
@@ -40,9 +40,6 @@
/obj/structure/flora/rock/icy,
/turf/closed/mineral/random/snow,
/area/icemoon/surface/outdoors)
-"i" = (
-/turf/template_noop,
-/area/template_noop)
"j" = (
/obj/structure/sink/kitchen,
/turf/open/floor/wood,
@@ -92,245 +89,248 @@
/obj/effect/decal/cleanable/trail_holder,
/turf/open/floor/wood,
/area/ruin/unpowered)
-"u" = (
+"t" = (
+/turf/template_noop,
+/area/template_noop)
+"K" = (
/obj/structure/ladder{
travel_time = 40
},
/turf/open/floor/wood,
/area/ruin/unpowered)
-"G" = (
-/turf/open/openspace/icemoon/ruins,
-/area/icemoon/surface/outdoors)
-"Q" = (
+"W" = (
/turf/open/openspace/icemoon,
/area/template_noop)
+"Y" = (
+/turf/open/openspace/icemoon/ruins,
+/area/icemoon/surface/outdoors)
(1,1,1) = {"
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
+t
"}
(2,1,1) = {"
-i
-i
-i
-i
-i
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
+t
+t
+t
+t
+t
"}
(3,1,1) = {"
-i
-i
-i
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
+t
+t
+t
+t
"}
(4,1,1) = {"
-i
-i
-i
+t
+t
+t
d
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
-i
-i
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
+t
+t
+t
"}
(5,1,1) = {"
-i
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
-i
-i
+t
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
+t
+t
"}
(6,1,1) = {"
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
-i
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
+t
"}
(7,1,1) = {"
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
"}
(8,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
"}
(9,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
b
@@ -338,25 +338,25 @@ b
b
b
b
-G
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(10,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
b
@@ -366,24 +366,24 @@ b
b
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(11,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
c
@@ -393,24 +393,24 @@ o
q
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(12,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
e
@@ -420,24 +420,24 @@ f
r
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(13,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
f
@@ -447,24 +447,24 @@ f
s
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(14,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
g
@@ -474,24 +474,24 @@ f
s
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(15,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
f
@@ -501,24 +501,24 @@ f
s
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(16,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
j
@@ -528,24 +528,24 @@ f
s
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(17,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
k
@@ -555,51 +555,51 @@ f
s
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(18,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
l
f
f
f
-u
+K
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(19,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
b
@@ -609,25 +609,25 @@ p
b
b
b
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(20,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
b
b
@@ -635,161 +635,161 @@ f
b
b
b
-G
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(21,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
f
b
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(22,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
f
b
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
"}
(23,1,1) = {"
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
-G
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
f
b
-G
-G
-G
-G
-G
-G
-G
-G
-G
-i
-i
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+t
+t
"}
(24,1,1) = {"
-i
-i
-G
-G
-G
-G
-G
-G
-G
-G
-G
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
b
n
b
-G
-G
-G
-G
-G
-G
-G
-G
+Y
+Y
+Y
+Y
+Y
+Y
+Y
+Y
d
-i
-i
+t
+t
"}
(25,1,1) = {"
-i
-i
-i
-G
-G
-G
-G
-G
-G
-G
+t
+t
+t
+Y
+Y
+Y
+Y
+Y
+Y
+Y
a
h
h
h
a
-G
-G
-G
-G
-G
-G
+Y
+Y
+Y
+Y
+Y
+Y
d
-i
-i
-i
+t
+t
+t
"}
(26,1,1) = {"
-i
-i
-i
+t
+t
+t
d
-G
-G
-G
-G
-G
+Y
+Y
+Y
+Y
+Y
a
a
a
@@ -797,25 +797,25 @@ h
a
a
a
-G
-G
-G
-G
+Y
+Y
+Y
+Y
d
d
-i
-i
-i
+t
+t
+t
"}
(27,1,1) = {"
-i
-i
-i
-i
+t
+t
+t
+t
d
-G
-G
-G
+Y
+Y
+Y
a
a
a
@@ -825,21 +825,21 @@ a
a
a
a
-G
-G
+Y
+Y
d
d
-i
-i
-i
-i
+t
+t
+t
+t
"}
(28,1,1) = {"
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
d
d
a
@@ -854,21 +854,21 @@ a
a
a
d
-Q
-i
-i
-i
-i
-i
+W
+t
+t
+t
+t
+t
"}
(29,1,1) = {"
-i
-i
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
+t
+t
a
a
a
@@ -880,11 +880,11 @@ a
a
a
a
-i
-i
-i
-i
-i
-i
-i
+t
+t
+t
+t
+t
+t
+t
"}
diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm
index 7f809f10a24..487a143ea12 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_lavaland.dmm
@@ -2,6 +2,10 @@
"b" = (
/turf/closed/mineral/random/snow,
/area/icemoon/underground/unexplored)
+"e" = (
+/obj/structure/trap/cult,
+/turf/open/floor/iron/cult,
+/area/icemoon/underground)
"h" = (
/obj/item/paper{
info = "We have managed to seal the beast inside, the last of its kind they say... unfortunately in doing so, it seems we have spawned creatures beyond our power to contain..."
@@ -11,10 +15,7 @@
initial_gas_mix = "LAVALAND_ATMOS"
},
/area/icemoon/underground)
-"l" = (
-/turf/open/floor/iron/cult,
-/area/icemoon/underground)
-"o" = (
+"q" = (
/turf/open/genturf,
/area/lavaland/surface/outdoors/unexplored/danger)
"w" = (
@@ -36,6 +37,10 @@
initial_gas_mix = "LAVALAND_ATMOS"
},
/area/icemoon/underground)
+"E" = (
+/obj/item/grown/bananapeel,
+/turf/open/floor/iron/cult,
+/area/icemoon/underground)
"J" = (
/turf/closed/wall/mineral/cult,
/area/icemoon/underground)
@@ -45,20 +50,15 @@
"R" = (
/turf/open/floor/mineral/gold,
/area/icemoon/underground)
+"T" = (
+/turf/open/floor/iron/cult,
+/area/icemoon/underground)
"V" = (
/obj/item/storage/toolbox/mechanical/old/clean,
/turf/open/floor/plating/asteroid{
initial_gas_mix = "LAVALAND_ATMOS"
},
/area/icemoon/underground)
-"X" = (
-/obj/item/grown/bananapeel,
-/turf/open/floor/iron/cult,
-/area/icemoon/underground)
-"Y" = (
-/obj/structure/trap/cult,
-/turf/open/floor/iron/cult,
-/area/icemoon/underground)
"Z" = (
/turf/open/floor/plating/asteroid{
initial_gas_mix = "LAVALAND_ATMOS"
@@ -168,10 +168,10 @@ J
J
J
J
-l
-Y
-l
-l
+T
+e
+T
+T
J
J
J
@@ -195,40 +195,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
-l
-l
-X
-l
+T
+T
+E
+T
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -237,40 +237,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
-l
-Y
+T
+e
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -279,40 +279,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
w
w
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -321,40 +321,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -363,40 +363,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -405,40 +405,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -447,40 +447,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -489,40 +489,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -531,40 +531,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -573,40 +573,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -615,40 +615,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -657,40 +657,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -699,40 +699,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -741,19 +741,19 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
V
Z
Z
@@ -762,19 +762,19 @@ Z
Z
Z
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -785,17 +785,17 @@ J
J
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
A
J
J
@@ -804,17 +804,17 @@ J
J
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
J
@@ -824,20 +824,20 @@ b
(19,1,1) = {"
b
J
-l
-l
+T
+T
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
h
J
R
@@ -846,40 +846,40 @@ P
R
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
-l
-l
+T
+T
J
b
"}
(20,1,1) = {"
b
w
-Y
-l
-l
+e
+T
+T
w
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
Z
J
P
@@ -888,40 +888,40 @@ R
P
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
w
-l
-l
-Y
+T
+T
+e
w
b
"}
(21,1,1) = {"
b
w
-l
-X
-Y
+T
+E
+e
w
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
Z
J
P
@@ -930,40 +930,40 @@ y
P
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
w
-Y
-X
-l
+e
+E
+T
w
b
"}
(22,1,1) = {"
b
J
-l
-l
+T
+T
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
Z
J
R
@@ -972,20 +972,20 @@ P
R
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
-l
-l
+T
+T
J
b
"}
@@ -995,17 +995,17 @@ J
J
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
Z
J
J
@@ -1014,17 +1014,17 @@ J
J
J
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
J
@@ -1035,19 +1035,19 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
Z
Z
Z
@@ -1056,19 +1056,19 @@ Z
Z
Z
Z
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1077,40 +1077,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1119,40 +1119,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1161,40 +1161,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1203,40 +1203,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1245,40 +1245,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1287,40 +1287,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1329,40 +1329,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1371,40 +1371,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1413,40 +1413,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1455,40 +1455,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1497,40 +1497,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
w
w
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1539,40 +1539,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
-l
-Y
+T
+e
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1581,40 +1581,40 @@ b
b
J
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
-l
-l
-X
-l
+T
+T
+E
+T
J
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
-o
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
+q
J
J
b
@@ -1638,10 +1638,10 @@ J
J
J
J
-l
-Y
-l
-l
+T
+e
+T
+T
J
J
J
diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm
index 8dcf1ca4166..77d04cd1a26 100644
--- a/code/datums/components/crafting/recipes.dm
+++ b/code/datums/components/crafting/recipes.dm
@@ -837,6 +837,13 @@
/obj/item/stack/sheet/animalhide/ashdrake = 5)
category = CAT_PRIMAL
+/datum/crafting_recipe/godslayer
+ name = "Godslayer Armour"
+ result = /obj/item/clothing/suit/hooded/cloak/godslayer
+ time = 60
+ reqs = list(/obj/item/ice_energy_crystal = 1, /obj/item/wendigo_skull = 1, /obj/item/clockwork_alloy = 1)
+ category = CAT_PRIMAL
+
/datum/crafting_recipe/firebrand
name = "Firebrand"
result = /obj/item/match/firebrand
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 4ed5b63aacc..8a15c697fa7 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -510,3 +510,24 @@
to_chat(owner, "Your bloodlust seeps back into the bog of your subconscious and you regain self control.")
owner.log_message("exited a blood frenzy", LOG_ATTACK)
QDEL_NULL(chainsaw)
+
+/datum/status_effect/speed_boost
+ id = "speed_boost"
+ duration = 2 SECONDS
+ status_type = STATUS_EFFECT_REPLACE
+
+/datum/status_effect/speed_boost/on_creation(mob/living/new_owner, set_duration)
+ if(isnum(set_duration))
+ duration = set_duration
+ . = ..()
+
+/datum/status_effect/speed_boost/on_apply()
+ owner.add_movespeed_modifier(/datum/movespeed_modifier/status_speed_boost, update = TRUE)
+ return ..()
+
+/datum/status_effect/speed_boost/on_remove()
+ owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_speed_boost, update = TRUE)
+
+/datum/movespeed_modifier/status_speed_boost
+ multiplicative_slowdown = -1
+
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 26070bac1a1..076ebd56b57 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -94,6 +94,66 @@
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
+/obj/item/clothing/suit/hooded/cloak/godslayer
+ name = "godslayer armour"
+ icon_state = "godslayer"
+ desc = "A suit of armour fashioned from the remnants of a knight's armor, and parts of a wendigo."
+ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear)
+ armor = list("melee" = 50, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 50, "rad" = 100, "fire" = 100, "acid" = 100)
+ clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL
+ hoodtype = /obj/item/clothing/head/hooded/cloakhood/godslayer
+ cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
+ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ resistance_flags = FIRE_PROOF | ACID_PROOF | FREEZE_PROOF
+ transparent_protection = HIDEGLOVES|HIDESUITSTORAGE|HIDEJUMPSUIT|HIDESHOES
+ /// Amount to heal when the effect is triggered
+ var/heal_amount = 500
+ /// Time until the effect can take place again
+ var/effect_cooldown_time = 10 MINUTES
+ /// Current cooldown for the effect
+ COOLDOWN_DECLARE(effect_cooldown)
+ var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
+
+/obj/item/clothing/head/hooded/cloakhood/godslayer
+ name = "godslayer helm"
+ icon_state = "godslayer"
+ desc = "The horns and skull of a wendigo, held together by the remaining icey energy of a demonic miner."
+ armor = list("melee" = 50, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 50, "rad" = 100, "fire" = 100, "acid" = 100)
+ clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT
+ cold_protection = HEAD
+ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
+ heat_protection = HEAD
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ flash_protect = FLASH_PROTECTION_WELDER
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF
+ resistance_flags = FIRE_PROOF | ACID_PROOF | FREEZE_PROOF
+
+/obj/item/clothing/suit/hooded/cloak/godslayer/examine(mob/user)
+ . = ..()
+ if(loc == user && !COOLDOWN_FINISHED(src, effect_cooldown))
+ . += "You feel like the revival effect will be able to occur again in [COOLDOWN_TIMELEFT(src, effect_cooldown) / 10] seconds."
+
+/obj/item/clothing/suit/hooded/cloak/godslayer/equipped(mob/user, slot)
+ . = ..()
+ if(slot & ITEM_SLOT_OCLOTHING)
+ RegisterSignal(user, COMSIG_MOB_STATCHANGE, .proc/resurrect)
+ return
+ UnregisterSignal(user, COMSIG_MOB_STATCHANGE, .proc/resurrect)
+
+/obj/item/clothing/suit/hooded/cloak/godslayer/dropped(mob/user)
+ ..()
+ UnregisterSignal(user, COMSIG_MOB_STATCHANGE, .proc/resurrect)
+
+/obj/item/clothing/suit/hooded/cloak/godslayer/proc/resurrect(mob/living/carbon/user, new_stat)
+ if(new_stat > CONSCIOUS && new_stat < DEAD && COOLDOWN_FINISHED(src, effect_cooldown))
+ user.heal_ordered_damage(heal_amount, damage_heal_order)
+ user.visible_message("[user] suddenly revives, as their armor swirls with demonic energy!", "You suddenly feel invigorated!")
+ playsound(user.loc, 'sound/magic/clockwork/ratvar_attack.ogg', 50)
+ COOLDOWN_START(src, effect_cooldown, effect_cooldown_time)
+
/obj/item/clothing/neck/cloak/skill_reward
var/associated_skill_path = /datum/skill
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm
new file mode 100644
index 00000000000..abbb7f6d4c1
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/clockwork_knight.dm
@@ -0,0 +1,51 @@
+/*
+
+Difficulty: Very Easy
+Was planned to be something more but due to the content freeze it unfortunately cannot be
+I'd rather there be something than the clockwork ruin be entirely empty though so here is a basic mob
+
+*/
+
+/mob/living/simple_animal/hostile/megafauna/clockwork_defender
+ name = "the clockwork defender"
+ desc = "A traitorous clockwork knight who lived on, despite its creators destruction."
+ health = 300
+ maxHealth = 300
+ icon_state = "clockwork_defender"
+ icon_living = "clockwork_defender"
+ icon = 'icons/mob/icemoon/icemoon_monsters.dmi'
+ attack_verb_continuous = "slashes"
+ attack_verb_simple = "slash"
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+ weather_immunities = list("snow")
+ speak_emote = list("roars")
+ armour_penetration = 40
+ melee_damage_lower = 20
+ melee_damage_upper = 20
+ vision_range = 9
+ aggro_vision_range = 9
+ speed = 5
+ move_to_delay = 5
+ rapid_melee = 2 // every second
+ melee_queue_distance = 20
+ ranged = TRUE
+ gps_name = "Clockwork Signal"
+ loot = list(/obj/item/clockwork_alloy)
+ crusher_loot = list(/obj/item/clockwork_alloy)
+ wander = FALSE
+ del_on_death = TRUE
+ deathmessage = "falls, quickly decaying into centuries old dust."
+ deathsound = "bodyfall"
+ footstep_type = FOOTSTEP_MOB_HEAVY
+ attack_action_types = list()
+
+/mob/living/simple_animal/hostile/megafauna/clockwork_defender/OpenFire()
+ return
+
+/obj/item/clockwork_alloy
+ name = "clockwork alloy"
+ desc = "The remains of the strongest clockwork knight."
+ icon = 'icons/obj/ice_moon/artifacts.dmi'
+ icon_state = "clockwork_alloy"
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 732a47aa457..6caae679cf7 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -31,8 +31,8 @@ Difficulty: Extremely Hard
move_to_delay = 20
gps_name = "Bloodchilling Signal"
ranged = TRUE
- crusher_loot = list(/obj/effect/decal/remains/plasma, /obj/item/crusher_trophy/ice_block_talisman)
- loot = list(/obj/effect/decal/remains/plasma)
+ crusher_loot = list(/obj/effect/decal/remains/plasma, /obj/item/crusher_trophy/ice_block_talisman, /obj/item/ice_energy_crystal)
+ loot = list(/obj/effect/decal/remains/plasma, /obj/item/ice_energy_crystal)
wander = FALSE
del_on_death = TRUE
blood_volume = BLOOD_VOLUME_NORMAL
@@ -421,6 +421,14 @@ Difficulty: Extremely Hard
owner.cut_overlay(cube)
UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
+/obj/item/ice_energy_crystal
+ name = "ice energy crystal"
+ desc = "Remnants of the demonic frost miners ice energy."
+ icon = 'icons/obj/ice_moon/artifacts.dmi'
+ icon_state = "ice_crystal"
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
+
/obj/structure/frost_miner_prism
name = "frost miner light prism"
desc = "A magical crystal enhanced by a demonic presence."
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index bafc459e52d..8ab74e1f840 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -1,3 +1,11 @@
+#define WENDIGO_ENRAGED (health <= maxHealth*0.5)
+#define WENDIGO_CIRCLE_SHOTCOUNT 24
+#define WENDIGO_CIRCLE_REPEATCOUNT 8
+#define WENDIGO_SPIRAL_SHOTCOUNT 40
+#define WENDIGO_WAVE_SHOTCOUNT 7
+#define WENDIGO_WAVE_REPEATCOUNT 32
+#define WENDIGO_SHOTGUN_SHOTCOUNT 5
+
/*
Difficulty: Hard
@@ -23,18 +31,18 @@ Difficulty: Hard
melee_damage_upper = 40
vision_range = 9
aggro_vision_range = 18 // man-eating for a reason
- speed = 8
- move_to_delay = 8
- rapid_melee = 16 // every 1/8 second
- melee_queue_distance = 20 // as far as possible really, need this because of charging and teleports
+ speed = 6
+ move_to_delay = 6
+ rapid_melee = 8 // every 1/4 second
+ melee_queue_distance = 18 // as far as possible really, need this because of charging and teleports
ranged = TRUE
pixel_x = -16
base_pixel_x = -16
gps_name = "Berserk Signal"
loot = list()
butcher_results = list()
- guaranteed_butcher_results = list(/obj/item/wendigo_blood = 1)
- crusher_loot = list(/obj/item/crusher_trophy/demon_claws)
+ guaranteed_butcher_results = list(/obj/item/wendigo_blood = 1, /obj/item/wendigo_skull = 1)
+ crusher_loot = list(/obj/item/crusher_trophy/wendigo_horn)
wander = FALSE
del_on_death = FALSE
blood_volume = BLOOD_VOLUME_NORMAL
@@ -46,7 +54,7 @@ Difficulty: Hard
footstep_type = FOOTSTEP_MOB_HEAVY
attack_action_types = list(/datum/action/innate/megafauna_attack/heavy_stomp,
/datum/action/innate/megafauna_attack/teleport,
- /datum/action/innate/megafauna_attack/disorienting_scream)
+ /datum/action/innate/megafauna_attack/shockwave_scream)
/// Saves the turf the megafauna was created at (spawns exit portal here)
var/turf/starting
/// Range for wendigo stomping when it moves
@@ -55,8 +63,10 @@ Difficulty: Hard
var/stored_move_dirs = 0
/// If the wendigo is allowed to move
var/can_move = TRUE
+ /// Time before the wendigo can scream again
+ var/scream_cooldown_time = 10 SECONDS
/// Stores the last scream time so it doesn't spam it
- var/last_scream = 0
+ COOLDOWN_DECLARE(scream_cooldown)
/datum/action/innate/megafauna_attack/heavy_stomp
name = "Heavy Stomp"
@@ -72,8 +82,8 @@ Difficulty: Hard
chosen_message = "You are now teleporting at the target you click on."
chosen_attack_num = 2
-/datum/action/innate/megafauna_attack/disorienting_scream
- name = "Disorienting Scream"
+/datum/action/innate/megafauna_attack/shockwave_scream
+ name = "Shockwave Scream"
icon_icon = 'icons/turf/walls/wall.dmi'
button_icon_state = "wall-0"
chosen_message = "You are now screeching, disorienting targets around you."
@@ -84,11 +94,10 @@ Difficulty: Hard
starting = get_turf(src)
/mob/living/simple_animal/hostile/megafauna/wendigo/OpenFire()
- SetRecoveryTime(0, 100)
- if(health <= maxHealth*0.5)
- stomp_range = 2
- speed = 6
- move_to_delay = 6
+ SetRecoveryTime(10 SECONDS)
+ if(WENDIGO_ENRAGED)
+ speed = 4
+ move_to_delay = 4
else
stomp_range = initial(stomp_range)
speed = initial(speed)
@@ -99,12 +108,12 @@ Difficulty: Hard
if(1)
heavy_stomp()
if(2)
- teleport()
+ try_teleport()
if(3)
- disorienting_scream()
+ shockwave_scream()
return
- if(world.time > last_scream + 60)
+ if(COOLDOWN_FINISHED(src, scream_cooldown))
chosen_attack = rand(1, 3)
else
chosen_attack = rand(1, 2)
@@ -112,17 +121,10 @@ Difficulty: Hard
if(1)
heavy_stomp()
if(2)
- teleport()
+ try_teleport()
if(3)
- disorienting_scream()
-
-/mob/living/simple_animal/hostile/megafauna/wendigo/Life(delta_time = SSMOBS_DT, times_fired)
- . = ..()
- if(!.)
- return
- if(target || get_dist(src, starting) < 12)
- return
- do_teleport(src, starting, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
+ do_teleport(src, starting, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
+ shockwave_scream()
/mob/living/simple_animal/hostile/megafauna/wendigo/Move(atom/newloc, direct)
if(!can_move)
@@ -134,62 +136,128 @@ Difficulty: Hard
. = ..()
stored_move_dirs &= ~direct
if(!stored_move_dirs)
- INVOKE_ASYNC(src, .proc/ground_slam, stomp_range, 1)
+ INVOKE_ASYNC(GLOBAL_PROC, .proc/wendigo_slam, src, stomp_range, 1, 8)
-/// Slams the ground around the wendigo throwing back enemies caught nearby
-/mob/living/simple_animal/hostile/megafauna/wendigo/proc/ground_slam(range, delay)
- var/turf/orgin = get_turf(src)
+/// Slams the ground around the source throwing back enemies caught nearby, delay is for the radius increase
+/proc/wendigo_slam(atom/source, range, delay, throw_range)
+ var/turf/orgin = get_turf(source)
var/list/all_turfs = RANGE_TURFS(range, orgin)
for(var/i = 0 to range)
- for(var/turf/T in all_turfs)
- if(get_dist(orgin, T) > i)
+ playsound(orgin,'sound/effects/bamf.ogg', 600, TRUE, 10)
+ for(var/turf/stomp_turf in all_turfs)
+ if(get_dist(orgin, stomp_turf) > i)
continue
- playsound(T,'sound/effects/bamf.ogg', 600, TRUE, 10)
- new /obj/effect/temp_visual/small_smoke/halfsecond(T)
- for(var/mob/living/L in T)
- if(L == src || L.throwing)
+ new /obj/effect/temp_visual/small_smoke/halfsecond(stomp_turf)
+ for(var/mob/living/L in stomp_turf)
+ if(L == source || L.throwing)
continue
- to_chat(L, "[src]'s ground slam shockwave sends you flying!")
- var/turf/thrownat = get_ranged_target_turf_direct(src, L, 8, rand(-10, 10))
- L.throw_at(thrownat, 8, 2, src, TRUE, force = MOVE_FORCE_OVERPOWERING, gentle = TRUE)
+ to_chat(L, "[source]'s ground slam shockwave sends you flying!")
+ var/turf/thrownat = get_ranged_target_turf_direct(source, L, throw_range, rand(-10, 10))
+ L.throw_at(thrownat, 8, 2, null, TRUE, force = MOVE_FORCE_OVERPOWERING, gentle = TRUE)
L.apply_damage(20, BRUTE, wound_bonus=CANT_WOUND)
shake_camera(L, 2, 1)
- all_turfs -= T
+ all_turfs -= stomp_turf
sleep(delay)
/// Larger but slower ground stomp
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/heavy_stomp()
can_move = FALSE
- ground_slam(5, 2)
- SetRecoveryTime(0, 0)
+ wendigo_slam(src, 5, 3 - WENDIGO_ENRAGED, 8)
+ SetRecoveryTime(0 SECONDS)
can_move = TRUE
/// Teleports to a location 4 turfs away from the enemy in view
-/mob/living/simple_animal/hostile/megafauna/wendigo/proc/teleport()
- var/list/possible_ends = list()
- for(var/turf/T in view(4, target.loc) - view(3, target.loc))
- if(isclosedturf(T))
- continue
- possible_ends |= T
- if (LAZYLEN(possible_ends))
- var/turf/end = pick(possible_ends)
- do_teleport(src, end, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
- SetRecoveryTime(20, 0)
+/mob/living/simple_animal/hostile/megafauna/wendigo/proc/try_teleport()
+ teleport(6)
+ if(WENDIGO_ENRAGED)
+ playsound(loc, 'sound/magic/clockwork/invoke_general.ogg', 100, TRUE)
+ for(var/shots in 1 to WENDIGO_SHOTGUN_SHOTCOUNT)
+ var/spread = shots * 10 - 30
+ var/turf/startloc = get_step(get_turf(src), get_dir(src, target))
+ var/turf/endloc = get_turf(target)
+ if(!endloc)
+ break
+ var/obj/projectile/wendigo_shockwave/shockwave = new /obj/projectile/wendigo_shockwave(loc)
+ shockwave.speed = 8
+ shockwave.preparePixelProjectile(endloc, startloc, null, spread)
+ shockwave.firer = src
+ if(target)
+ shockwave.original = target
+ shockwave.fire()
+ SetRecoveryTime(0 SECONDS)
-/// Applies dizziness to all nearby enemies that can hear the scream and animates the wendigo shaking up and down
-/mob/living/simple_animal/hostile/megafauna/wendigo/proc/disorienting_scream()
+/mob/living/simple_animal/hostile/megafauna/wendigo/proc/teleport(range = 6)
+ var/list/possible_ends = view(range, target.loc) - view(range - 1, target.loc)
+ for(var/turf/closed/cant_teleport_turf in possible_ends)
+ possible_ends -= cant_teleport_turf
+ if(!possible_ends.len)
+ return
+ var/turf/end = pick(possible_ends)
+ do_teleport(src, end, 0, channel=TELEPORT_CHANNEL_BLUESPACE, forced = TRUE)
+
+/// Applies dizziness to all nearby enemies that can hear the scream and animates the wendigo shaking up and down as shockwave projectiles shoot outward
+/mob/living/simple_animal/hostile/megafauna/wendigo/proc/shockwave_scream()
can_move = FALSE
- last_scream = world.time
- playsound(src, 'sound/magic/demon_dies.ogg', 600, FALSE, 10)
- animate(src, pixel_z = rand(5, 15), time = 1, loop = 6)
+ COOLDOWN_START(src, scream_cooldown, scream_cooldown_time)
+ SLEEP_CHECK_DEATH(5)
+ playsound(loc, 'sound/magic/demon_dies.ogg', 600, FALSE, 10)
+ animate(src, pixel_z = rand(5, 15), time = 1, loop = 20)
animate(pixel_z = 0, time = 1)
- for(var/mob/living/L in get_hearers_in_view(7, src) - src)
- L.Dizzy(6)
- to_chat(L, "[src] screams loudly!")
- SetRecoveryTime(30, 0)
- SLEEP_CHECK_DEATH(12)
+ for(var/mob/living/dizzy_target in get_hearers_in_view(7, src) - src)
+ dizzy_target.Dizzy(6)
+ to_chat(dizzy_target, "The wendigo screams loudly!")
+ SLEEP_CHECK_DEATH(1 SECONDS)
+ spiral_attack()
+ SetRecoveryTime(3 SECONDS)
+ SLEEP_CHECK_DEATH(3 SECONDS)
can_move = TRUE
- teleport()
+
+/// Shoots shockwave projectiles in a random preset pattern
+/mob/living/simple_animal/hostile/megafauna/wendigo/proc/spiral_attack()
+ var/list/choices = list("Alternating Circle", "Spiral")
+ if(WENDIGO_ENRAGED)
+ choices += "Wave"
+ var/spiral_type = pick(choices)
+ switch(spiral_type)
+ if("Alternating Circle")
+ var/shots_per = WENDIGO_CIRCLE_SHOTCOUNT
+ for(var/shoot_times in 1 to WENDIGO_CIRCLE_REPEATCOUNT)
+ var/offset = shoot_times % 2
+ for(var/shot in 1 to shots_per)
+ var/angle = shot * 360 / shots_per + (offset * 360 / shots_per) * 0.5
+ var/obj/projectile/wendigo_shockwave/shockwave = new /obj/projectile/wendigo_shockwave(loc)
+ shockwave.firer = src
+ shockwave.speed = 3 - WENDIGO_ENRAGED
+ shockwave.fire(angle)
+ SLEEP_CHECK_DEATH(6 - WENDIGO_ENRAGED * 2)
+ if("Spiral")
+ var/shots_spiral = WENDIGO_SPIRAL_SHOTCOUNT
+ var/angle_to_target = Get_Angle(src, target)
+ var/spiral_direction = pick(-1, 1)
+ for(var/shot in 1 to shots_spiral)
+ var/shots_per_tick = 5 - WENDIGO_ENRAGED * 3
+ var/angle_change = (5 + WENDIGO_ENRAGED * shot / 6) * spiral_direction
+ for(var/count in 1 to shots_per_tick)
+ var/angle = angle_to_target + shot * angle_change + count * 360 / shots_per_tick
+ var/obj/projectile/wendigo_shockwave/shockwave = new /obj/projectile/wendigo_shockwave(loc)
+ shockwave.firer = src
+ shockwave.damage = 15
+ shockwave.fire(angle)
+ SLEEP_CHECK_DEATH(1)
+ if("Wave")
+ var/shots_per = WENDIGO_WAVE_SHOTCOUNT
+ var/difference = 360 / shots_per
+ var/wave_direction = pick(-1, 1)
+ for(var/shoot_times in 1 to WENDIGO_WAVE_REPEATCOUNT)
+ for(var/shot in 1 to shots_per)
+ var/angle = shot * difference + shoot_times * 5 * wave_direction * -1
+ var/obj/projectile/wendigo_shockwave/shockwave = new /obj/projectile/wendigo_shockwave(loc)
+ shockwave.firer = src
+ shockwave.wave_movement = TRUE
+ shockwave.speed = 8
+ shockwave.wave_speed = 10 * wave_direction
+ shockwave.fire(angle)
+ SLEEP_CHECK_DEATH(2)
/mob/living/simple_animal/hostile/megafauna/wendigo/death(gibbed, list/force_grant)
if(health > 0)
@@ -200,6 +268,28 @@ Difficulty: Hard
exit.set_light(20, 1, COLOR_SOFT_RED)
return ..()
+/obj/projectile/wendigo_shockwave
+ name ="wendigo shockwave"
+ icon_state= "chronobolt"
+ damage = 25
+ armour_penetration = 100
+ speed = 2
+ eyeblur = 5
+ damage_type = BRUTE
+ pass_flags = PASSTABLE
+ /// If wave movement is enabled
+ var/wave_movement = FALSE
+ /// Amount the angle changes every pixel move
+ var/wave_speed = 15
+ /// Amount of movements this projectile has made
+ var/pixel_moves = 0
+
+/obj/projectile/wendigo_shockwave/pixel_move(trajectory_multiplier, hitscanning = FALSE)
+ . = ..()
+ if(wave_movement)
+ pixel_moves++
+ set_angle(original_angle + pixel_moves * wave_speed)
+
/obj/item/wendigo_blood
name = "bottle of wendigo blood"
desc = "You're not actually going to drink this, are you?"
@@ -209,13 +299,13 @@ Difficulty: Hard
/obj/item/wendigo_blood/attack_self(mob/living/user)
if(!ishuman(user))
return
- var/mob/living/carbon/human/H = user
- if(!H.mind)
+ var/mob/living/carbon/human/human_user = user
+ if(!human_user.mind)
return
- to_chat(H, "Power courses through you! You can now shift your form at will.")
- var/obj/effect/proc_holder/spell/targeted/shapeshift/polar_bear/P = new
- H.mind.AddSpell(P)
- playsound(H.loc,'sound/items/drink.ogg', rand(10,50), TRUE)
+ to_chat(human_user, "Power courses through you! You can now shift your form at will.")
+ var/obj/effect/proc_holder/spell/targeted/shapeshift/polar_bear/transformation_spell = new
+ human_user.mind.AddSpell(transformation_spell)
+ playsound(human_user.loc, 'sound/items/drink.ogg', rand(10,50), TRUE)
qdel(src)
/obj/effect/proc_holder/spell/targeted/shapeshift/polar_bear
@@ -224,3 +314,37 @@ Difficulty: Hard
invocation = "RAAAAAAAAWR!"
convert_damage = FALSE
shapeshift_type = /mob/living/simple_animal/hostile/asteroid/polarbear/lesser
+
+/obj/item/crusher_trophy/wendigo_horn
+ name = "wendigo horn"
+ desc = "A horn from the head of an unstoppable beast."
+ icon_state = "wendigo_horn"
+ denied_type = /obj/item/crusher_trophy/wendigo_horn
+
+/obj/item/crusher_trophy/wendigo_horn/effect_desc()
+ return "melee hits inflict twice as much damage"
+
+/obj/item/crusher_trophy/wendigo_horn/add_to(obj/item/kinetic_crusher/crusher, mob/living/user)
+ . = ..()
+ if(.)
+ crusher.AddComponent(/datum/component/two_handed, force_wielded=40)
+
+/obj/item/crusher_trophy/wendigo_horn/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user)
+ . = ..()
+ if(.)
+ crusher.AddComponent(/datum/component/two_handed, force_wielded=20)
+
+/obj/item/wendigo_skull
+ name = "wendigo skull"
+ desc = "A skull of a massive hulking beast."
+ icon = 'icons/obj/ice_moon/artifacts.dmi'
+ icon_state = "wendigo_skull"
+ w_class = WEIGHT_CLASS_TINY
+ throwforce = 0
+
+#undef WENDIGO_CIRCLE_SHOTCOUNT
+#undef WENDIGO_CIRCLE_REPEATCOUNT
+#undef WENDIGO_SPIRAL_SHOTCOUNT
+#undef WENDIGO_WAVE_SHOTCOUNT
+#undef WENDIGO_WAVE_REPEATCOUNT
+#undef WENDIGO_SHOTGUN_SHOTCOUNT
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
index feaec5d750d..e820ec2e38e 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
@@ -15,7 +15,7 @@
projectilesound = 'sound/weapons/pierce.ogg'
ranged = TRUE
ranged_message = "manifests ice"
- ranged_cooldown_time = 3 SECONDS
+ ranged_cooldown_time = 1.5 SECONDS
minimum_distance = 3
retreat_distance = 3
maxHealth = 150
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
index f4f9141f65c..abfb3c732e7 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
@@ -10,7 +10,7 @@
friendly_verb_continuous = "growls at"
friendly_verb_simple = "growl at"
speak_emote = list("growls")
- speed = 8
+ speed = 3
move_to_delay = 8
maxHealth = 300
health = 300
@@ -28,6 +28,7 @@
butcher_results = list(/obj/item/food/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2)
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 1)
loot = list()
+ crusher_loot = /obj/item/crusher_trophy/bear_paw
stat_attack = HARD_CRIT
robust_searching = TRUE
footstep_type = FOOTSTEP_MOB_CLAW
@@ -61,3 +62,20 @@
name = "magic polar bear"
desc = "It seems sentient somehow."
faction = list("neutral")
+
+/obj/item/crusher_trophy/bear_paw
+ name = "polar bear paw"
+ desc = "It's a polar bear paw."
+ icon_state = "bear_paw"
+ denied_type = /obj/item/crusher_trophy/bear_paw
+
+/obj/item/crusher_trophy/bear_paw/effect_desc()
+ return "mark detonation to attack twice if you are below half your life"
+
+/obj/item/crusher_trophy/bear_paw/on_mark_detonation(mob/living/target, mob/living/user)
+ if(user.health / user.maxHealth > 0.5)
+ return
+ var/obj/item/I = user.get_active_held_item()
+ if(!I)
+ return
+ I.melee_attack_chain(user, target, null)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
index a76535a3872..200ccd67781 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
@@ -30,6 +30,7 @@
pull_force = MOVE_FORCE_WEAK
butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2)
loot = list()
+ crusher_loot = /obj/item/crusher_trophy/wolf_ear
stat_attack = HARD_CRIT
robust_searching = TRUE
footstep_type = FOOTSTEP_MOB_CLAW
@@ -57,3 +58,15 @@
return
adjustHealth(-0.0125 * maxHealth * delta_time)
retreat_message_said = FALSE
+
+/obj/item/crusher_trophy/wolf_ear
+ name = "wolf ear"
+ desc = "It's a wolf ear."
+ icon_state = "wolf_ear"
+ denied_type = /obj/item/crusher_trophy/wolf_ear
+
+/obj/item/crusher_trophy/wolf_ear/effect_desc()
+ return "mark detonation to gain a slight speed boost temporarily"
+
+/obj/item/crusher_trophy/wolf_ear/on_mark_detonation(mob/living/target, mob/living/user)
+ user.apply_status_effect(/datum/status_effect/speed_boost, 1 SECONDS)
diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi
index c38827e343a..e3aab8acc2e 100644
Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index 03532206649..9add8630cd2 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 7bf6f227809..c4c1aa2c46b 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 5bee8fc5100..b598ecf7a07 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/ice_moon/artifacts.dmi b/icons/obj/ice_moon/artifacts.dmi
index 93ea79e636f..5a0c790ef44 100644
Binary files a/icons/obj/ice_moon/artifacts.dmi and b/icons/obj/ice_moon/artifacts.dmi differ
diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi
index ae273d71c37..25d8ef8461f 100644
Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 4298243f608..20deb114eb1 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2681,6 +2681,7 @@
#include "code\modules\mob\living\simple_animal\hostile\jungle\seedling.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\clockwork_knight.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\demonic_frost_miner.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm"