diff --git a/__DEFINES/reagents.dm b/__DEFINES/reagents.dm
index 8066dd7b9e8..2c1f2d438d6 100644
--- a/__DEFINES/reagents.dm
+++ b/__DEFINES/reagents.dm
@@ -3,7 +3,7 @@
#define REAGENT_STATE_GAS 3
#define FOOD_METABOLISM 0.4
#define REAGENTS_OVERDOSE 30
-#define REM REAGENTS_EFFECT_MULTIPLIER
+#define REM REAGENTS_EFFECT_MULTIPLIER //0.5
// Use in chem.flags.
#define CHEMFLAG_DISHONORABLE 1
@@ -524,6 +524,7 @@
#define CAFFEINE "caffeine"
#define MIMOSA "mimosa"
#define LEMONDROP "lemondrop"
+#define FEVERFEW "feverfew"
#define ACRYLIC "acrylic"
#define ACETONE "acetone"
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index c9aaf567500..40f6ff2d957 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -203,6 +203,7 @@ var/list/global/id_cards = list()
var/registered_name = "Unknown" // The name registered_name on the card
slot_flags = SLOT_ID
+ var/show_biometrics = TRUE //Necessary to display the below stats
var/blood_type = "\[UNSET\]"
var/dna_hash = "\[UNSET\]"
var/fingerprint_hash = "\[UNSET\]"
@@ -236,12 +237,13 @@ var/list/global/id_cards = list()
user.show_message(text("The current assignment on the card is [assignment]."),1)
else
user.show_message(text("No assignment has been set. Use an identification computer to edit."),1)
- if (dna_hash == "\[UNSET\]")
- user.show_message(text("No biometric data referenced. Use a body scanner at Medbay to imprint."),1)
- else
- user.show_message("Blood Type: [blood_type].",1)
- user.show_message("DNA: [dna_hash].",1)
- user.show_message("Fingerprint: [fingerprint_hash].",1)
+ if(show_biometrics)
+ if (dna_hash == "\[UNSET\]")
+ user.show_message(text("No biometric data referenced. Use a body scanner at Medbay to imprint."),1)
+ else
+ user.show_message("Blood Type: [blood_type].",1)
+ user.show_message("DNA: [dna_hash].",1)
+ user.show_message("Fingerprint: [fingerprint_hash].",1)
if(dchip && dchip.stamped.len)
to_chat(user,"It has a demotion modchip with the following stamps: [english_list(uniquenamelist(dchip.stamped))].")
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 9fc6e1cdc67..f83ba2890eb 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -735,6 +735,16 @@
block = HEADACHEBLOCK
..()
+/obj/item/weapon/dnainjector/nofail/eat
+ name = "DNA-Injector (Eat)"
+ desc = "Now I am become gut, devourer of worlds."
+ datatype = DNA2_BUF_SE
+ value = 0xFFF
+
+/obj/item/weapon/dnainjector/nofail/eat/initialize()
+ block = EATBLOCK
+ ..()
+
/obj/item/weapon/dnainjector/nofail/antiepi
name = "DNA-Injector (Anti-Epi.)"
desc = "Will fix you up from shaking the room."
diff --git a/code/game/objects/structures/docking_port.dm b/code/game/objects/structures/docking_port.dm
index 7519e457cac..a91bdcc8f81 100644
--- a/code/game/objects/structures/docking_port.dm
+++ b/code/game/objects/structures/docking_port.dm
@@ -272,7 +272,8 @@ var/global/list/dockinglights = list()
/obj/machinery/docklight/New()
..()
- dockinglights += src
+ if(!triggered) //don't add the permanently-on lights
+ dockinglights += src
/obj/machinery/docklight/Destroy()
dockinglights -= src
@@ -292,3 +293,10 @@ var/global/list/dockinglights = list()
- [format_tag("ID Tag","id_tag")]
"}
+
+/obj/machinery/docklight/alwayson
+ triggered = 1
+
+/obj/machinery/docklight/alwayson/New()
+ ..()
+ update_icon()
\ No newline at end of file
diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm
index c13363bd44f..fe3670c7710 100644
--- a/code/modules/organs/blood.dm
+++ b/code/modules/organs/blood.dm
@@ -221,6 +221,9 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
if(reagents.has_reagent(CLOTTING_AGENT) || reagents.has_reagent(BIOFOAM)) //Clotting agent and biofoam stop bleeding entirely
blood_factor = 0
+ if(reagents.has_reagent(FEVERFEW)) //A powerful anticoagulant that overrides clotting agents
+ blood_factor = 1
+
if(bodytemperature < 170) //Cryo stops bleeding entirely
blood_factor = 0
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index f2455f91fb7..b2e251f04bf 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -90,6 +90,15 @@
max_shells = 3
silencer_offset = list(22,5)
+/obj/item/weapon/gun/projectile/shotgun/pump/combat/pistol
+ name = "shotgun pistol"
+ desc = "Even shortier than the combat shorty."
+ icon_state = "scshotgun"
+ w_class = W_CLASS_SMALL
+ slot_flags = SLOT_BELT
+ max_shells = 1
+ silencer_offset = list(22,5)
+
//this is largely hacky and bad :( -Pete
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
name = "double-barreled shotgun"
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index a920dbb509b..168a4bbd53d 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -1263,3 +1263,14 @@ var/list/laser_tag_vests = list(/obj/item/clothing/suit/tag/redtag, /obj/item/cl
smoke.set_up(3, 0, T)
smoke.start()
return 1
+
+/obj/item/projectile/beam/armawhip
+ name = "bullwhip"
+ icon = 'icons/obj/projectiles.dmi'
+ icon_state = "whip"
+ fire_sound = 'sound/weapons/whip_crack.ogg'
+ travel_range = 5
+ damage = 10
+ damage_type = BRUTE
+ pass_flags = PASSTABLE
+ eyeblur = 0
\ No newline at end of file
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 56d4cba0182..8017ccc3c65 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -14,7 +14,11 @@
SHC = (for(components of recipe) total_SHC *= component SHC)
-*///NO DON'T DO THAT, IF YOU'RE NOT SURE JUST KEEP IT AT WATER'S. IF YOU GET SOMETHING ABOVE 10 LET ALONE IN THE HUNDREDS YOU'RE PROBABLY DOING SOMETHING VERY WRONG
+ NO DON'T DO THAT, IF YOU'RE NOT SURE JUST KEEP IT AT WATER'S. IF YOU GET SOMETHING ABOVE 10 LET ALONE IN THE HUNDREDS YOU'RE PROBABLY DOING SOMETHING VERY WRONG
+
+ It is very common to use REAGENTS_METABOLISM (0.2) or REM / REGEANTS_EFFECT_MULTIPLIER (0.5) in this file.
+
+*/
/datum/reagent
var/name = "Reagent"
@@ -6129,6 +6133,20 @@ var/procizine_tolerance = 0
color = "#D9C0E7" //rgb: 217, 192, 231
custom_metabolism = 0.1
+//Anticoagulant. Great for helping the body fight off viruses but makes one vulnerable to pain, bleeding, and brute damage.
+/datum/reagent/antipathogenic/feverfew
+ name = "Feverfew"
+ id = FEVERFEW
+ description = "Feverfew is a natural anticoagulant useful in fending off viruses, but it leaves one vulnerable to pain and bleeding."
+ color = "#b5651d"
+ pain_resistance = -25
+ data = list ("threshold" = 80)
+
+/datum/reagent/feverfew/on_mob_life(var/mob/living/M)
+ if(..())
+ return 1
+ M.adjustBruteLoss(5 * REM) //2.5 per tick, human healing is around 1.5~2 so this is just barely noticable
+
/datum/reagent/caffeine
name = "Caffeine"
id = CAFFEINE
diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm
index ddf71d78a43..38381de2409 100644
--- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm
@@ -545,3 +545,14 @@ var/global/list/valid_random_food_types = existing_typesof(/obj/item/weapon/reag
desc = pick("Whichever nerves were keeping it wriggling have been ripped off by now.", "It's a lot more foul smelling once you bite into it.", "There's some slimy substance leaking out of it.", "Was this really a good idea?")
else
desc = pick("There's barely anything left of it.", "It could have lived happily in your brain, you know.", "It was only here to help.", "Poor thing.", "You monster.", "At least it's nutritious.")
+
+/obj/item/weapon/reagent_containers/food/snacks/meat/bullmeat
+ name = "carne de lidia"
+ desc = "En algunos lugares, la tauromaquia es incruenta. Aqui no."
+ icon_state = "bearmeat"
+
+/obj/item/weapon/reagent_containers/food/snacks/meat/bullmeat/New()
+ ..()
+ reagents.add_reagent(NUTRIMENT, 12)
+ reagents.add_reagent(BICARIDINE, 5)
+ bitesize = 3
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 3925daae71d..67d3d0e339e 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -515,6 +515,14 @@
..()
reagents.add_reagent(ARITHRAZINE, 10)
+/obj/item/weapon/reagent_containers/pill/lithotorcrazine
+ name = "lithotorcrazine pill"
+ desc = "Shields the body against radiation buildup, but does not cure it. Lasts around 5 minutes."
+ icon_state = "pill38"
+
+/obj/item/weapon/reagent_containers/pill/lithotorcrazine/New()
+ ..()
+ reagents.add_reagent(LITHOTORCRAZINE, 30)
/obj/item/weapon/reagent_containers/pill/nanofloxacin
name = "nanofloxacin pill"
diff --git a/icons/obj/candle.dmi b/icons/obj/candle.dmi
index df5e5cf433e..770b91ea5b5 100644
Binary files a/icons/obj/candle.dmi and b/icons/obj/candle.dmi differ
diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi
index 896758a8929..19575f6db9f 100644
Binary files a/icons/obj/card.dmi and b/icons/obj/card.dmi differ
diff --git a/icons/obj/flora/ausflora.dmi b/icons/obj/flora/ausflora.dmi
index 33584c52c40..2f21f1354e2 100644
Binary files a/icons/obj/flora/ausflora.dmi and b/icons/obj/flora/ausflora.dmi differ
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index a878426dea8..52ad065014b 100755
Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ
diff --git a/icons/turf/meat.dmi b/icons/turf/meat.dmi
new file mode 100644
index 00000000000..98664fb8595
Binary files /dev/null and b/icons/turf/meat.dmi differ
diff --git a/icons/turf/rock_overlay.dmi b/icons/turf/rock_overlay.dmi
index f1e65b44393..06cb63a3128 100644
Binary files a/icons/turf/rock_overlay.dmi and b/icons/turf/rock_overlay.dmi differ
diff --git a/maps/RandomZLevels/wildwest_props.dm b/maps/RandomZLevels/wildwest_props.dm
new file mode 100644
index 00000000000..43a157000df
--- /dev/null
+++ b/maps/RandomZLevels/wildwest_props.dm
@@ -0,0 +1,328 @@
+//Turf
+/turf/unsimulated/wall/meat
+ name = "?"
+ desc = null
+ icon = 'icons/turf/meat.dmi'
+ icon_state = "meat255"
+
+/turf/unsimulated/wall/meat/canSmoothWith()
+ return null
+
+/turf/unsimulated/wall/guts
+ name = "guts"
+ desc = "Some kind of twisting intestinal layers."
+ icon = 'icons/turf/meat.dmi'
+ icon_state = "guts0"
+ walltype = "guts"
+
+/turf/unsimulated/wall/guts/canSmoothWith()
+ var/static/list/smoothables = list(/turf/unsimulated/wall/guts)
+ return smoothables
+
+/turf/simulated/floor/plating/flesh
+ name = "?"
+ desc = null
+ icon = 'icons/turf/meat.dmi'
+ icon_state = "flesh"
+
+/turf/simulated/floor/plating/flesh/New()
+ ..()
+ var/image/img = image('icons/turf/rock_overlay.dmi', "flesh_overlay",layer = SIDE_LAYER)
+ img.pixel_x = -4*PIXEL_MULTIPLIER
+ img.pixel_y = -4*PIXEL_MULTIPLIER
+ img.plane = relative_plane(ABOVE_TURF_PLANE)
+ overlays += img
+
+//Objects
+/obj/item/voucher/free_item/scrip
+ name = "scrip"
+ desc = "Redeem at a Deepvein Trust vendor."
+ freebies = list()
+ vend_amount = 1
+ single_items = 1
+ shred_on_use = 1
+
+/obj/item/voucher/free_item/scrip/liberator
+ name = "liberator scrip"
+ freebies = list(/obj/item/weapon/gun/energy/laser/liberator)
+
+/obj/item/voucher/free_item/scrip/drill
+ name = "drill scrip"
+ freebies = list(/obj/item/weapon/pickaxe/drill)
+
+/obj/item/voucher/free_item/scrip/lazarus
+ name = "lazarus scrip"
+ freebies = list(/obj/item/weapon/lazarus_injector)
+
+/obj/item/voucher/free_item/scrip/rifle
+ name = "rifle scrip"
+ freebies = list(/obj/item/weapon/gun/projectile/hecate/hunting)
+
+/obj/item/voucher/free_item/scrip/sausage
+ name = "sausage scrip"
+ freebies = list(/obj/item/weapon/reagent_containers/food/snacks/sausage)
+
+/obj/item/voucher/free_item/scrip/threefiftyseven
+ name = ".357 scrip"
+ freebies = list(/obj/item/ammo_storage/box/a357)
+
+/obj/machinery/vending/deepvein
+ name = "\improper Deepvein Trust Company Store"
+ desc = "Use your 'wages' here!"
+ product_slogans = list(
+ "Please have your scrip ready for vending."
+ )
+ product_ads = list(
+ "Insert scrip."
+ )
+ vend_reply = "Scrip, scip, lovely scrip!"
+ icon_state = "mining"
+ vouched = list(
+ /obj/item/weapon/pickaxe/drill = 10,
+ /obj/item/weapon/lazarus_injector = 10,
+ /obj/item/weapon/gun/energy/laser/liberator = 10,
+ /obj/item/weapon/gun/projectile/hecate/hunting = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/sausage = 10,
+ /obj/item/ammo_storage/box/a357 = 20
+ )
+
+/obj/item/weapon/card/id/deputy
+ name = "deputy badge"
+ desc = "A metal star that signifies one as a friend of Old Zounds. You're my favorite deputy."
+ assignment = "Deputy"
+ icon_state = "deputystar"
+ //access = list(access_deputy)
+ show_biometrics = FALSE
+
+/obj/machinery/media/jukebox/folk
+ name = "Old Timey Jukebox"
+
+ change_cost = 0
+
+ playlist_id="folk"
+ // Must be defined on your server.
+ playlists=list(
+ "folk" = "House Specials"
+ )
+
+/obj/structure/uraninitecrystal
+ name = "glowing crystal"
+ icon = 'icons/obj/mining.dmi'
+ icon_state = "crystal"
+ light_color = "#00FF00"
+ anchored = TRUE
+ var/lit = 0
+
+/obj/structure/uraninitecrystal/New()
+ ..()
+ set_light(2, l_color = light_color)
+
+/obj/structure/uraninitecrystal/bullet_act()
+ rad_pulse(10)
+
+/obj/structure/uraninitecrystal/kick_act()
+ shake(1, 3)
+ rad_pulse(10)
+
+/obj/structure/uraninitecrystal/ex_act()
+ rad_pulse(4)
+ ..()
+
+/obj/structure/uraninitecrystal/proc/rad_pulse(remaining)
+ lit += remaining
+ lit = clamp(0,lit,40)
+ if(!lit)
+ set_light(2, l_color = light_color)
+ return
+ set_light(6, l_color = light_color)
+ emitted_harvestable_radiation(get_turf(src), 20, range = 5)
+ for(var/mob/living/carbon/M in view(src,3))
+ var/rads = 50 * sqrt( 1 / (get_dist(M, src) + 1) )
+ M.apply_radiation(round(rads/2),RAD_EXTERNAL)
+ spawn(2 SECONDS)
+ rad_pulse(-2) //After 2 seconds, recurse with decrement
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/dorf/New()
+ ..()
+ reagents.add_reagent(MANLYDORF, 50)
+ on_reagent_change()
+
+/obj/structure/cartrail
+ name = "rail"
+ desc = "A hunk of shaped metal."
+ icon = 'icons/obj/mining.dmi'
+ icon_state = "rail"
+
+/obj/structure/rustycart
+ name = "rusty cart"
+ desc = "This isn't going anywhere fast."
+ //old icon and state in 'icons/obj/vehicles.dmi' "mining_cart"
+ icon = 'icons/obj/storage/storage.dmi'
+ icon_state = "miningcar"
+ anchored = TRUE
+ density = TRUE
+
+/obj/structure/flora/desert
+ icon = 'icons/obj/flora/ausflora.dmi'
+ shovelaway = TRUE
+
+/obj/structure/flora/desert/barrelcactus
+ name = "barrel cactus"
+ desc = "That's a barrel. Wait, no."
+ anchored = TRUE
+ icon_state = "barrelcactus_1"
+
+/obj/structure/flora/desert/barrelcactus/New()
+ ..()
+ icon_state = "barrelcactus_[rand(1,2)]"
+
+/obj/structure/flora/desert/barrelcactus/Crossed(atom/movable/AM)
+ ..()
+ if(iscarbon(AM))
+ var/mob/living/carbon/L = AM
+ L.reagents.add_reagent(FEVERFEW,3) //This will take 15 ticks to clear, doing about 22 brute (but brute regens easily)
+ to_chat(L, "You prick yourself on \the [src].")
+
+/obj/structure/flora/desert/saguaro
+ name = "saguaro cactus"
+ desc = "The space saguaro gets its name from the Earth saguaro, which comes from an indigenous Opata word that refers to saguaros."
+ density = TRUE
+ pass_flags_self = PASSTABLE | PASSGLASS
+ anchored = TRUE
+ icon_state = "saguaro_1"
+
+/obj/structure/flora/desert/saguaro/Bumped(atom/movable/AM)
+ ..()
+ if(iscarbon(AM))
+ var/mob/living/carbon/L = AM
+ L.reagents.add_reagent(FEVERFEW,3)
+ to_chat(L, "You prick yourself on \the [src].")
+
+/obj/structure/flora/desert/saguaro/New()
+ ..()
+ icon_state = "saguaro_[rand(1,2)]"
+
+/obj/structure/flora/desert/tumbleweed
+ name = "tumbleweed"
+ desc = "Please, just tumble away. You might need my help some day. Tumble away."
+ icon_state = "tumbleweed"
+
+/obj/structure/flora/desert/tumbleweed/New()
+ ..()
+ processing_objects += src
+
+/obj/structure/flora/desert/tumbleweed/Destroy()
+ processing_objects -= src
+ ..()
+
+/obj/structure/flora/desert/tumbleweed/process()
+ if(prob(98))
+ return
+ throw_at(get_turf(pick(orange(7,src))), 10,2)
+
+/obj/structure/sarcophagus
+ name = "sarcophagus"
+ desc = "Although often associated with Egyptians, sarcophagus is a Greek word meaning 'eater of flesh'. It refers to any stone burial receptacle."
+ density = TRUE
+ anchored = TRUE
+ icon = 'icons/obj/stationobjs.dmi'
+ icon_state = "morguestone"
+
+///////////////Effects//////////////
+
+/obj/effect/floating_candle
+ name = "floating candle"
+ desc = "The ghost of a candle? This is extremely cursed."
+ icon = 'icons/obj/candle.dmi'
+ icon_state = "floatcandle"
+ anchored = TRUE
+
+/obj/effect/floating_candle/New()
+ ..()
+ set_light(4, 2, LIGHT_COLOR_CYAN)
+
+/obj/effect/tractorbeam
+ name = "tractor beam"
+ desc = "???"
+ icon = null
+ icon_state = null
+ anchored = TRUE
+ density = TRUE
+ var/turf/endpoint
+
+/obj/effect/tractorbeam/New()
+ ..()
+ set_light(4, 8, LIGHT_COLOR_HALOGEN)
+ for(var/obj/effect/landmark/L in landmarks_list)
+ if(L.name == "tractor beam")
+ endpoint = get_turf(L)
+ break
+
+/obj/effect/tractorbeam/Bumped(atom/movable/AM)
+ AM.forceMove(endpoint)
+ if(ismob(AM))
+ AM << 'sound/music/xfiles.ogg'
+ to_chat(AM, "Gravity seems to lapse as you float into the sky!")
+
+//Landmarks
+/obj/effect/landmark/respawner/desert
+ name = "Wild West respawner"
+
+///Spells
+/mob/living/proc/mountup()
+ for(var/spell/mountup/M in spell_list)
+ M.cast(src,src)
+ return
+
+/spell/mountup
+ name = "Mount Up"
+ desc = "Mount a steed."
+ charge_max = 0
+ spell_flags = 0
+ cast_delay = 2 SECONDS
+ var/obj/effect/overlay/my_overlay
+ var/active = FALSE
+ var/remembered_speed
+
+/spell/mountup/New()
+ ..()
+ my_overlay = new /obj/effect/overlay/horsebroom_mount
+
+/spell/mountup/choose_targets(var/mob/user = usr)
+ return list(user)
+
+/spell/mountup/perform(mob/user = usr, skipcharge = 0, list/target_override)
+ cast_delay = active ? 0 : initial(cast_delay)
+ ..()
+
+/spell/mountup/cast(var/list/targets, var/mob/user)
+ if(!active)
+ var/choosefile = pick('sound/items/jinglebell1.ogg','sound/items/jinglebell2.ogg','sound/items/jinglebell3.ogg')
+ playsound(user, choosefile, 100, 1)
+ user.register_event(/event/damaged, src, nameof(src::dismount()))
+ user.overlays.Add(my_overlay)
+ active = TRUE
+ if(istype(user,/mob/living/simple_animal))
+ var/mob/living/simple_animal/SA = user
+ remembered_speed = SA.speed
+ SA.speed = max(0.6, SA.speed-0.4)
+ else
+ dismount()
+
+/spell/mountup/proc/dismount(kind, amount)
+ var/mob/living/user = src.holder
+ playsound(user, 'sound/voice/cow.ogg', 100, 1)
+ user.overlays.Remove(my_overlay)
+ user.unregister_event(/event/damaged, src, nameof(src::dismount()))
+ active = FALSE
+ if(istype(user,/mob/living/simple_animal))
+ var/mob/living/simple_animal/SA = user
+ SA.speed = remembered_speed
+
+/obj/effect/overlay/horsebroom_mount
+ name = "steed"
+ icon = 'icons/mob/in-hand/left/items_lefthand.dmi'
+ icon_state = "horsebroom0"
+ layer = VEHICLE_LAYER
+ plane = FLOAT_PLANE + 2
+ mouse_opacity = 0 // Probably does nothing on overlays
\ No newline at end of file
diff --git a/sound/music/xfiles.ogg b/sound/music/xfiles.ogg
new file mode 100644
index 00000000000..39d85338f39
Binary files /dev/null and b/sound/music/xfiles.ogg differ
diff --git a/vgstation13.dme b/vgstation13.dme
index 8271243b89a..47f5315af16 100644
--- a/vgstation13.dme
+++ b/vgstation13.dme
@@ -2916,5 +2916,6 @@
#include "maps\RandomZLevels\stationCollision.dm"
#include "maps\RandomZLevels\tomb.dm"
#include "maps\RandomZLevels\wildwest.dm"
+#include "maps\RandomZLevels\wildwest_props.dm"
#include "maps\wheelstation\areas.dm"
// END_INCLUDE