diff --git a/code/game/objects/items/poi_items.dm b/code/game/objects/items/poi_items.dm
index 8d11e747f6..64eaa2977e 100644
--- a/code/game/objects/items/poi_items.dm
+++ b/code/game/objects/items/poi_items.dm
@@ -51,4 +51,15 @@
/obj/item/poi/brokenoldreactor/Destroy()
processing_objects -= src
- return ..()
\ No newline at end of file
+ return ..()
+
+
+//Crashed Cargo Shuttle PoI
+
+/obj/structure/largecrate/animal/crashedshuttle
+ name = "SCP"
+/obj/structure/largecrate/animal/crashedshuttle/New()
+ held_type = pick(/mob/living/simple_animal/hostile/statue, /obj/item/cursed_marble)
+ name = pick("Spicy Crust Pizzeria", "Soap and Care Products", "Sally's Computer Parts", "Steve's Chocolate Pastries", "Smith & Christian's Plastics","Standard Containers & Packaging Co.", "Sanitary Chemical Purgation (LTD)")
+ name += " delivery crate"
+ ..()
diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm
index 6e8805d17a..bf52dbcfec 100644
--- a/code/modules/mob/living/bot/bot.dm
+++ b/code/modules/mob/living/bot/bot.dm
@@ -383,3 +383,6 @@
else return !D.check_access(ID) // it's a real, air blocking door
return 0
+
+/mob/living/bot/isSynthetic() //Robots are synthetic, no?
+ return 1
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9ede47aa1f..33db48993d 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1015,7 +1015,7 @@ default behaviour is:
if(lying != lying_prev)
lying_prev = lying
update_transform()
-
+
return canmove
// Adds overlays for specific modifiers.
@@ -1198,3 +1198,7 @@ default behaviour is:
/mob/living/proc/make_hud_overlays()
return
+
+
+/mob/living/proc/has_vision()
+ return !(eye_blind || (disabilities & BLIND) || stat || blinded)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 602be39e87..62400289d7 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -419,3 +419,6 @@
ghostize(0)
qdel(src)
+
+/mob/living/silicon/has_vision()
+ return 0 //NOT REAL EYES
diff --git a/code/modules/mob/living/simple_animal/aliens/statue.dm b/code/modules/mob/living/simple_animal/aliens/statue.dm
new file mode 100644
index 0000000000..f468403a30
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/aliens/statue.dm
@@ -0,0 +1,431 @@
+// A mob which only moves when it isn't being watched by living beings.
+//Weeping angels/SCP-173 hype
+//Horrible shitcoding and stolen code adaptations below. You have been warned.
+
+/mob/living/simple_animal/hostile/statue
+ name = "statue" // matches the name of the statue with the flesh-to-stone spell
+ desc = "An incredibly lifelike marble carving. Its eyes seems to follow you..." // same as an ordinary statue with the added "eye following you" description
+ icon = 'icons/obj/statue.dmi'
+ tt_desc = "angelum weepicus"
+ icon_state = "human_male"
+ icon_living = "human_male"
+ icon_dead = "human_male"
+ intelligence_level = SA_HUMANOID
+ stop_automated_movement = 1
+ var/annoyance = 30 //stop staring you creep
+ var/respond = 1
+ var/banishable = 0
+ faction = "statue"
+ mob_size = MOB_HUGE
+ response_help = "touches"
+ response_disarm = "pushes"
+ environment_smash = 2
+ can_be_antagged = 1
+ speed = -1
+ maxHealth = 50000
+ health = 50000
+ status_flags = CANPUSH
+// investigates = 1
+ a_intent = I_HURT
+ density = 1
+ mob_bump_flag = HEAVY
+ mob_push_flags = ~HEAVY
+ mob_swap_flags = ~HEAVY
+ harm_intent_damage = 60
+ melee_damage_lower = 50
+ melee_damage_upper = 70
+ attacktext = "clawed"
+ attack_sound = 'sound/hallucinations/growl1.ogg'
+
+ min_oxy = 0
+ max_oxy = 0
+ min_tox = 0
+ max_tox = 0
+ min_co2 = 0
+ max_co2 = 0
+ min_n2 = 0
+ max_n2 = 0
+ minbodytemp = 0
+ maxbodytemp = 9000
+ run_at_them = 0
+
+ move_to_delay = 0 // Very fast
+
+ animate_movement = NO_STEPS // Do not animate movement, you jump around as you're a scary statue.
+
+ see_in_dark = 13
+ view_range = 35 //So it can run at the victim when out of the view
+
+ melee_miss_chance = 0
+
+
+ see_invisible = SEE_INVISIBLE_NOLIGHTING
+ sight = SEE_SELF|SEE_MOBS|SEE_OBJS|SEE_TURFS
+ var/last_hit = 0
+ var/cannot_be_seen = 1
+ var/mob/living/creator = null
+
+
+// No movement while seen code.
+
+/mob/living/simple_animal/hostile/statue/New(loc)
+ ..()
+ // Give spells
+ add_spell(new/spell/aoe_turf/flicker_lights)
+ add_spell(new/spell/aoe_turf/blindness)
+ add_spell(new/spell/aoe_turf/shatter)
+
+/mob/living/simple_animal/hostile/statue/DestroySurroundings()
+ if(can_be_seen(get_turf(loc)))
+ if(client)
+ to_chat(src, "You cannot move, there are eyes on you!")
+ return 0
+ return ..()
+
+/mob/living/simple_animal/hostile/statue/attackby(var/obj/item/O as obj, var/mob/user as mob) //banishing the statue is a risky job
+ if(istype(O, /obj/item/weapon/nullrod))
+ visible_message("[user] tries to banish [src] with [O]!")
+ if(do_after(user, 15, src))
+ if(banishable)
+ visible_message("[src] crumbles into dust!")
+ gib()
+ else
+ visible_message("[src] is too strong to be banished!")
+ Paralyse(rand(8,15))
+
+/mob/living/simple_animal/hostile/statue/death()
+ new /obj/item/stack/material/marble(loc)
+
+/mob/living/simple_animal/hostile/statue/Move(turf/NewLoc)
+ if(can_be_seen(NewLoc))
+ if(client)
+ to_chat(src, "You cannot move, there are eyes on you!")
+ return 0
+ return ..()
+
+/mob/living/simple_animal/hostile/statue/Life()
+ ..()
+ handle_target()
+ handleAnnoyance()
+ if(target_mob) //if there's a victim, statue will use its powers
+ if((annoyance + 4) < 800)
+ annoyance += 4
+ else if ((annoyance - 2) > 0)
+ annoyance -= 2
+
+/mob/living/simple_animal/hostile/statue/proc/handle_target()
+ if(target_mob) // If we have a target and we're AI controlled
+ var/mob/watching = can_be_seen()
+ // If they're not our target
+ if(watching && (watching != target_mob))
+ // This one is closer.
+ if(get_dist(watching, src) > get_dist(target_mob, src))
+ LoseTarget()
+ target_mob = watching
+
+
+/mob/living/simple_animal/hostile/statue/proc/handleAnnoyance()
+ if(respond) //so it won't blind people 24/7
+ respond = 0
+ if (annoyance > 30)
+ AI_blind()
+ annoyance -= 30
+ if (prob(30) && annoyance > 30)
+ var/turf/T = get_turf(loc)
+ if(T.get_lumcount() * 10 > 1.5)
+ AI_flash()
+ annoyance -= 30
+ spawn(20)
+ respond = 1
+
+
+/mob/living/simple_animal/hostile/statue/proc/AI_blind()
+ for(var/mob/living/L in oviewers(12, src)) //the range is so big, because it tries to keep out of sight and can't reengage if you get too far
+ if (prob(70))
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ if (H.species == "Diona" || H.species == "Promethean" || H == creator)// can't blink and organic
+ return
+ to_chat(L, pick("Your eyes feel very heavy.", "You blink suddenly!", "Your eyes close involuntarily!"))
+ L.Blind(2)
+ return
+
+/mob/living/simple_animal/hostile/statue/proc/AI_flash()
+ if (prob(60))
+ visible_message("The statue slowly points at the light.")
+ for(var/obj/machinery/light/L in oview(12, src))
+ L.flicker()
+ return
+
+
+/mob/living/simple_animal/hostile/statue/proc/AI_mirrorshmash()
+ for(var/obj/structure/mirror/M in oview(4, src))
+ if ((!M.shattered )||(!M.glass))
+ visible_message("The statue slowly points at the mirror!")
+ sleep(5)
+ M.shatter()
+ return
+
+
+
+/mob/living/simple_animal/hostile/statue/AttackTarget()
+ if(can_be_seen(get_turf(loc)))
+ if(client)
+ to_chat(src, "You cannot attack, there are eyes on you!")
+ return
+ else
+ spawn(3) //a small delay
+ ..()
+
+
+
+/mob/living/simple_animal/hostile/statue/DoPunch(var/atom/A) //had to redo that, since it's supposed to target only head and upper body
+ if(!Adjacent(A)) // They could've moved in the meantime.
+ return FALSE
+
+ var/damage_to_do = rand(melee_damage_lower, melee_damage_upper)
+
+ for(var/datum/modifier/M in modifiers)
+ if(!isnull(M.outgoing_melee_damage_percent))
+ damage_to_do *= M.outgoing_melee_damage_percent
+
+ // SA attacks can be blocked with shields.
+ if(ishuman(A))
+ var/mob/living/carbon/human/H = A
+ H.adjustBruteLossByPart(damage_to_do*0.9, pick(BP_HEAD, BP_TORSO))
+ playsound(src, attack_sound, 75, 1)
+
+ else if(A.attack_generic(src, damage_to_do, pick(attacktext), attack_armor_type, attack_armor_pen, attack_sharp, attack_edge) && attack_sound)
+ playsound(src, attack_sound, 75, 1)
+
+ return TRUE
+
+
+
+
+
+/mob/living/simple_animal/hostile/statue/face_atom()
+ if(!can_be_seen(get_turf(loc)))
+ ..()
+
+/mob/living/simple_animal/hostile/statue/proc/can_be_seen(turf/destination)
+ if(!cannot_be_seen)
+ return null
+
+ var/turf/T = get_turf(loc)
+/* if(T && destination && T.lighting_overlay)
+ if(T.get_lumcount() * 10 < 0.9 && destination.get_lumcount() * 10 < 0.9) // No one can see us in the darkness, right?
+ return null
+ if(T == destination)
+ destination = null*/
+
+ // loop for viewers.
+ var/list/check_list = list(src)
+ if(destination)
+ check_list += destination
+//&& (M.see_in_dark > 5)
+ // This loop will, at most, loop twice.
+ for(var/atom/check in check_list)
+ for(var/mob/living/M in viewers(world.view + 1, check) - src)
+ if(M != creator)
+ if(!(M.sdisabilities & BLIND) || !(M.blinded)) //if not blinded
+ if(M.has_vision() && !M.isSynthetic()) //is able to see the statue
+ if(T && destination && T.lighting_overlay) // Check for darkness
+ if(T.get_lumcount() * 10 < 0.9 && destination.get_lumcount() * 10 < 0.9) // No one can see us in the darkness, right? WRONG! Damn cats.
+ if(M.see_in_dark > 5)
+ return M
+ return null
+ return M
+ for(var/obj/mecha/M in view(world.view + 1, check)) //assuming if you can see them they can see you
+ if(M.occupant && M.occupant.client && M.occupant != creator)
+ if(M.occupant.has_vision() && !M.occupant.isSynthetic())
+ return M.occupant
+ for(var/obj/structure/mirror/M in view(3, check)) //Weeping angels hate mirrors. Probably because they're ugly af
+ if ((!M.shattered )||(!M.glass))
+ annoyance += 3
+ if (prob(5) && (ai_inactive == 0))
+ AI_mirrorshmash()
+ annoyance -= 50
+ return src //if it sees the mirror, it sees itself, right?
+ return null
+
+// Cannot talk
+
+/mob/living/simple_animal/hostile/statue/say()
+ return 0
+
+// Turn to dust when gibbed
+
+/mob/living/simple_animal/hostile/statue/gib()
+ dust()
+
+
+// Stop attacking clientless mobs
+
+/mob/living/simple_animal/hostile/statue/proc/CanAttack(atom/the_target) //ignore clientless mobs
+ if(isliving(the_target))
+ var/mob/living/L = the_target
+ if(!L.client && !L.ckey)
+ return 0
+ return ..()
+
+// Statue powers
+
+// Flicker lights
+/spell/aoe_turf/flicker_lights
+ name = "Flicker Lights"
+ desc = "You will trigger a large amount of lights around you to flicker."
+ spell_flags = 0
+ charge_max = 400
+ range = 10
+
+/spell/aoe_turf/flicker_lights/cast(list/targets, mob/user = usr)
+ for(var/turf/T in targets)
+ for(var/obj/machinery/light/L in T)
+ L.flicker()
+ return
+
+//Blind AOE
+/spell/aoe_turf/blindness
+ name = "Blindness"
+ desc = "Your prey will be momentarily blind for you to advance on them."
+
+ message = "You glare your eyes."
+ charge_max = 250
+ spell_flags = 0
+ range = 10
+
+/spell/aoe_turf/blindness/cast(list/targets, mob/living/simple_animal/hostile/statue/user = usr)
+ for(var/mob/living/L in targets)
+ if(L == user || L == user.creator)
+ continue
+ var/turf/T = get_turf(L.loc)
+ if(T && T in targets)
+ L.Blind(4)
+ return
+
+
+/spell/aoe_turf/shatter
+ name = "Shatter mirrors!"
+ desc = "That handsome devil has to wait. You have people to make into corpses."
+
+ message = "You glare your eyes."
+ charge_max = 300
+ spell_flags = 0
+ range = 8
+
+
+
+
+/spell/aoe_turf/shatter/cast(list/targets, mob/user = usr)
+ spawn(50)
+ for(var/obj/structure/mirror/M in view(5, src))
+ if ((!M.shattered )||(!M.glass))
+ M.shatter()
+ return
+
+
+
+/mob/living/simple_animal/hostile/statue/verb/toggle_darkness()
+ set name = "Toggle Darkness"
+ set desc = "You ARE the darkness."
+ set category = "Abilities"
+ seedarkness = !seedarkness
+ plane_holder.set_vis(VIS_FULLBRIGHT, !seedarkness)
+ to_chat(src,"You [seedarkness ? "now" : "no longer"] see darkness.")
+
+
+
+/mob/living/simple_animal/hostile/statue/restrained()
+ . = ..()
+ if(can_be_seen(loc))
+ return 1
+
+
+/mob/living/simple_animal/hostile/statue/ListTargets(dist = view_range)
+ var/list/L = mobs_in_xray_view(dist, src)
+
+ for(var/obj/mecha/M in mechas_list)
+ if ((M.z == src.z) && (get_dist(src, M) <= dist) && (isInSight(src,M)))
+ L += M
+ if(creator)
+ L -= creator
+
+ return L
+
+
+
+/obj/item/cursed_marble //slime cube copypaste
+ name = "marble slab"
+ desc = "A peculiar slab of marble, radiating with dark energy."
+ icon = 'icons/obj/stacks.dmi'
+ icon_state = "sheet-marble"
+ description_info = "Summons the Statue - a mysterious powerful creature, that can move only when unsurveyed by living eyes."
+ var/searching = 0
+
+/obj/item/cursed_marble/attack_self(mob/user as mob)
+ if(!searching)
+ to_chat(user, "You rub the slab in hopes a wandering spirit wishes to inhabit it. [src] starts to sparkle!")
+ icon_state = "sheet-snowbrick"
+ searching = 1
+ request_player()
+ spawn(60 SECONDS)
+ reset_search()
+
+
+/obj/item/cursed_marble/proc/request_player()
+ for(var/mob/observer/dead/O in player_list)
+ if(!O.MayRespawn())
+ continue
+ if(O.client)
+ if(O.client.prefs.be_special & BE_ALIEN)
+ question(O.client)
+
+/obj/item/cursed_marble/proc/question(var/client/C)
+ spawn(0)
+ if(!C)
+ return
+ var/response = alert(C, "Someone is requesting a soul for the statue. Would you like to play as one?", "Statue request", "Yes", "No", "Never for this round")
+ if(response == "Yes")
+ response = alert(C, "Are you sure you want to play as the statue?", "Statue request", "Yes", "No")
+ if(!C || 2 == searching)
+ return //handle logouts that happen whilst the alert is waiting for a response, and responses issued after a brain has been located.
+ if(response == "Yes")
+ transfer_personality(C.mob)
+ else if(response == "Never for this round")
+ C.prefs.be_special ^= BE_ALIEN
+
+/obj/item/cursed_marble/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
+ icon_state = "sheet-marble"
+ if(searching == 1)
+ searching = 0
+ var/turf/T = get_turf_or_move(src.loc)
+ for (var/mob/M in viewers(T))
+ M.show_message("[src] fades. Maybe it will spark another time.")
+
+/obj/item/cursed_marble/proc/transfer_personality(var/mob/candidate)
+ announce_ghost_joinleave(candidate, 0, "They are a statue now.")
+ src.searching = 2
+ var/mob/living/simple_animal/hostile/statue/S = new(get_turf(src))
+ S.client = candidate.client
+ to_chat(S, "You are \a [S], brought into existence on [station_name()] by [usr]! Obey all their orders.")
+ S.mind.assigned_role = "The Statue"
+ visible_message("The slab suddenly takes the shape of a humanoid!")
+ qdel(src)
+
+
+/obj/item/cursed_marble/verb/crush() //if there's no ghosts to respond to your request/you want to use the statue for malicious stuff
+ set name = "Crush the marble slab"
+ set category = "Object"
+ set src in usr
+ summonmob(usr)
+
+/obj/item/cursed_marble/proc/summonmob(mob/user as mob)
+ if(searching == 0)
+ var/choice = alert(user, "Are you sure you want to crush the marble? (this will spawn a clientless version of the statue, hostile to everyone, but you)", "Crush it?", "Yes", "No")
+ if(choice)
+ if(choice == "Yes")
+ var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(get_turf(user))
+ visible_message("The slab suddenly takes the shape of a humanoid!")
+ S.creator = user
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index c8b78cfd65..c0870afda3 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -33,11 +33,14 @@ var/global/photo_count = 0
var/icon/img //Big photo image
var/scribble //Scribble on the back.
var/icon/tiny
+ var/cursed = 0
var/photo_size = 3
/obj/item/weapon/photo/New()
id = photo_count++
+
+
/obj/item/weapon/photo/attack_self(mob/user as mob)
user.examinate(src)
@@ -233,6 +236,11 @@ var/global/photo_count = 0
mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. "
else
mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]."
+
+ for(var/mob/living/simple_animal/hostile/statue/S in the_turf)
+ if(S)
+ mob_detail += "You can see \a [S] on the photo. Its stare makes you feel uneasy." //"That which holds the image of an angel, becomes itself an angel."
+
return mob_detail
/obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
@@ -274,7 +282,21 @@ var/global/photo_count = 0
y_c--
x_c = x_c - size
+
+
+
var/obj/item/weapon/photo/p = createpicture(target, user, turfs, mobs, flag)
+ if(findtext(mobs, "Its stare makes you feel uneasy"))
+ p.cursed = 1
+ user.visible_message("Something starts to slowly manifest from the picture!")
+ spawn(150)
+ var/turf/T = get_turf(p)
+ var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T)
+ S.banishable = 1//At least you can get rid of those bastards
+ T.visible_message("The photo turns into \a [S]!")
+ qdel(p)
+
+
printpicture(user, p)
/obj/item/device/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag)
@@ -298,7 +320,6 @@ var/global/photo_count = 0
p.pixel_x = rand(-10, 10)
p.pixel_y = rand(-10, 10)
p.photo_size = size
-
return p
/obj/item/device/camera/proc/printpicture(mob/user, obj/item/weapon/photo/p)
@@ -318,6 +339,16 @@ var/global/photo_count = 0
p.pixel_y = pixel_y
p.photo_size = photo_size
p.scribble = scribble
+ p.cursed = cursed
+ if(p.cursed)
+ var/turf/T = get_turf(p)
+ T.visible_message("Something starts to slowly manifest from the picture!")
+ spawn(150)
+ T = get_turf(p) //second time, because the photo could've moved
+ var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue/(T)
+ S.banishable = 1//At least you can get rid of those bastards
+ T.visible_message("The photo turns into \a [S]!")
+ qdel(p)
if(copy_id)
p.id = id
diff --git a/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm
new file mode 100644
index 0000000000..4ffd4a2fab
--- /dev/null
+++ b/maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm
@@ -0,0 +1,118 @@
+"aa" = (/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"ab" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/submap/crashedcontainmentshuttle)
+"ac" = (/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"ad" = (/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"ae" = (/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"af" = (/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"ag" = (/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"ah" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ai" = (/obj/random/landmine,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aj" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"ak" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"al" = (/obj/structure/lattice,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"am" = (/obj/item/weapon/material/shard,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"an" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ao" = (/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"ap" = (/obj/item/stack/rods,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aq" = (/obj/structure/door_assembly/door_assembly_ext,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"ar" = (/obj/structure/grille,/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"as" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"at" = (/obj/structure/loot_pile/maint/technical,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"au" = (/obj/item/stack/rods,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"av" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aw" = (/obj/structure/frame,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"ax" = (/obj/item/frame/mirror,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"ay" = (/obj/effect/decal/mecha_wreckage/gygax{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"az" = (/obj/effect/gibspawner/generic,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aA" = (/obj/structure/closet/medical_wall,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"aB" = (/obj/structure/largecrate/animal/crashedshuttle,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"aC" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aD" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aE" = (/obj/structure/extinguisher_cabinet,/turf/simulated/shuttle/wall/dark,/area/submap/crashedcontainmentshuttle)
+"aF" = (/obj/machinery/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aG" = (/obj/item/weapon/circuitboard/broken,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aH" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aI" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aK" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"aL" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aM" = (/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aN" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aO" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/frame,/obj/item/weapon/circuitboard/broken,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"aP" = (/turf/simulated/floor/outdoors/rocks,/area/submap/crashedcontainmentshuttle)
+"aQ" = (/obj/item/clothing/suit/space/cult,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aR" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aS" = (/obj/structure/door_assembly/door_assembly_highsecurity{anchored = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aT" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"aU" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"aV" = (/obj/effect/decal/remains/robot,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aW" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"aX" = (/obj/structure/door_assembly/door_assembly_ext{anchored = 1},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aY" = (/obj/effect/decal/remains/human,/obj/effect/gibspawner/human,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"aZ" = (/obj/item/clothing/head/helmet/space/cult,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bb" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bc" = (/obj/structure/door_assembly,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bd" = (/obj/item/weapon/material/knife/ritual,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"be" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/decal/remains/human,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bf" = (/obj/structure/grille,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bg" = (/obj/effect/gibspawner/generic,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bh" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bi" = (/obj/item/weapon/circuitboard/broken,/obj/effect/decal/remains/human,/obj/item/weapon/gun/energy/laser,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bj" = (/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bk" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bl" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bm" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bn" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bo" = (/obj/effect/decal/cleanable/blood/drip,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bp" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bq" = (/obj/item/weapon/circuitboard/broken,/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"br" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bs" = (/obj/structure/table/steel_reinforced,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bt" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bv" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bw" = (/obj/item/weapon/material/knife/ritual,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bx" = (/turf/simulated/shuttle/wall/dark/no_join,/area/submap/crashedcontainmentshuttle)
+"by" = (/obj/random/landmine,/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bz" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/cult,/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bA" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bC" = (/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bD" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bE" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bF" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+"bG" = (/obj/structure/reagent_dispensers/fueltank,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bH" = (/obj/structure/closet/crate{name = "landmines crate"; opened = 1},/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bI" = (/obj/random/landmine,/turf/simulated/shuttle/floor/black,/area/submap/crashedcontainmentshuttle)
+"bJ" = (/obj/random/landmine,/turf/simulated/floor/plating,/area/submap/crashedcontainmentshuttle)
+"bK" = (/obj/random/landmine,/turf/simulated/shuttle/floor/yellow,/area/submap/crashedcontainmentshuttle)
+"bL" = (/obj/effect/decal/cleanable/blood,/obj/random/landmine,/turf/simulated/shuttle/floor/red,/area/submap/crashedcontainmentshuttle)
+"bM" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/remains/human,/obj/item/weapon/flame/lighter/random,/turf/template_noop,/area/submap/crashedcontainmentshuttle)
+"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/gibspawner/generic,/obj/effect/decal/remains/human,/obj/item/weapon/card/id/syndicate{age = "\\42"; blood_type = "\\O+"; desc = "A strange ID card."; dna_hash = "\[REDACTED]"; fingerprint_hash = "\\------"; name = "Aaron Presley's ID Card(Delivery Service) "; registered_name = "Aaron Presley"; sex = "\\Male"},/turf/simulated/shuttle/floor/white,/area/submap/crashedcontainmentshuttle)
+
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaahaaaaaaaianaaaaaaaaaaaaaaajaaaaaaaa
+aaaaabacaaaaaaaaaaaaaaaaalaaaPaPaaamaaaaaaaaaaaaaa
+aaaaacaaaaadaaaaaaaaaialaPaPaPadaPaaaaaaapaaaaaaaa
+aaaaaaaaauaqakaracacataCacacananacabaaaaaaaaaaaaaa
+aaaDaGaaadaoaaadadaiaGbHbyayadadaWacabaaaaaaaaaaaa
+aaaQaaaRacaaadadaValbIbybIazbbadaNacanbJaaaaaaaaaa
+aaaaaYaZbdalalaladadadbIadadauadaNaAaeaTanaaaaapaa
+acaaaaaaaladauadadadacacaSacanadavacbhaeaeahaaaaaa
+aPadaDaRacadadadbiadacbjafafacadadadbKbpaHaraaaaaa
+aaaPadaaacaMadbkadbbacbvaBbwacaLadaSbKbqaHaoalaaaa
+aPbxaDaRacaWadbbadbbanblbLbzanadbbasaebraFaIaabeaa
+aPaPaaaaaaaabEazadadanacacacaEadadahaebpaHaoaabfaa
+aPaPadaaaJalbIadadaPaPadadadadadadacaeaeaeahaaaaaa
+adaaaaaaaaaoadadaPaPaPadacanacbcacacaTbsacacaaaaaa
+aPacaaaaamaladaWaPaPbbadaAbAaUbFaOacacacabaPaaaaaa
+aPaPaaaPacadadadadadadawaxbBagbnbNanabaPaPaaaaaaaa
+aaaaaGaRaaacaXalaoaKanananacacaranabaPaPaabgaaaaaa
+acaaaaaaaPaPaaaoaaaaalalaPaPaPalaPaPaaaaaaaaaaaaaa
+aaaGaaaaaaacaaaaadaaaabmaaboaaaaaaaaaaaaaaaaaaaaaa
+aabtaabgaaataaaaaaaabDbmboaabmbgaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaadaLaaaabmbGbMbmbmaaaaaaaaaaaaaaaaaaaa
+aaaaadadaaaaaaacaPbCbmbmbmaaaiaaaaaaaaaaaaaaaaaaaa
+aaaaaaadaaaaaaaPaPaaaaaabmaaaaaaaaaaaaaaaaaaaaaaaa
+"}
diff --git a/maps/submaps/surface_submaps/mountains/mountains.dm b/maps/submaps/surface_submaps/mountains/mountains.dm
index c661b94bec..dd409e0e62 100644
--- a/maps/submaps/surface_submaps/mountains/mountains.dm
+++ b/maps/submaps/surface_submaps/mountains/mountains.dm
@@ -30,6 +30,7 @@
#include "SwordCave.dmm"
#include "SupplyDrop1.dmm"
#include "BlastMine1.dmm"
+#include "crashedcontainmentshuttle.dmm"
#endif
// The 'mountains' is the mining z-level, and has a lot of caves.
@@ -184,6 +185,13 @@
cost = 10
allow_duplicates = TRUE
+/datum/map_template/surface/mountains/normal/crashedcontainmentshuttle
+ name = "Crashed Cargo Shuttle"
+ desc = "A severely damaged military shuttle, its cargo seems to remain intact."
+ mappath = 'maps/submaps/surface_submaps/mountains/crashedcontainmentshuttle.dmm'
+ cost = 30
+
+
/**************
* Deep Caves *
**************/
@@ -257,3 +265,4 @@
desc = "An abandoned blast mining site, seems that local wildlife has moved in."
mappath = 'maps/submaps/surface_submaps/mountains/BlastMine1.dmm'
cost = 20
+
diff --git a/maps/submaps/surface_submaps/mountains/mountains_areas.dm b/maps/submaps/surface_submaps/mountains/mountains_areas.dm
index 2555b558f9..3baf48c75c 100644
--- a/maps/submaps/surface_submaps/mountains/mountains_areas.dm
+++ b/maps/submaps/surface_submaps/mountains/mountains_areas.dm
@@ -85,4 +85,7 @@
name = "Supply Drop 1"
/area/submap/cave/BlastMine1
- name = "Blast Mine 1"
\ No newline at end of file
+ name = "Blast Mine 1"
+
+/area/submap/crashedcontainmentshuttle
+ name = "Crashed Containment Shuttle"
\ No newline at end of file
diff --git a/polaris.dme b/polaris.dme
index ce47b37d77..47766cdfce 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -1884,6 +1884,7 @@
#include "code\modules\mob\living\simple_animal\aliens\hivebot.dm"
#include "code\modules\mob\living\simple_animal\aliens\mimic.dm"
#include "code\modules\mob\living\simple_animal\aliens\shade.dm"
+#include "code\modules\mob\living\simple_animal\aliens\statue.dm"
#include "code\modules\mob\living\simple_animal\animals\bat.dm"
#include "code\modules\mob\living\simple_animal\animals\bear.dm"
#include "code\modules\mob\living\simple_animal\animals\carp.dm"