@@ -3,7 +3,7 @@
|
|||||||
#define REAGENT_STATE_GAS 3
|
#define REAGENT_STATE_GAS 3
|
||||||
#define FOOD_METABOLISM 0.4
|
#define FOOD_METABOLISM 0.4
|
||||||
#define REAGENTS_OVERDOSE 30
|
#define REAGENTS_OVERDOSE 30
|
||||||
#define REM REAGENTS_EFFECT_MULTIPLIER
|
#define REM REAGENTS_EFFECT_MULTIPLIER //0.5
|
||||||
|
|
||||||
// Use in chem.flags.
|
// Use in chem.flags.
|
||||||
#define CHEMFLAG_DISHONORABLE 1
|
#define CHEMFLAG_DISHONORABLE 1
|
||||||
@@ -524,6 +524,7 @@
|
|||||||
#define CAFFEINE "caffeine"
|
#define CAFFEINE "caffeine"
|
||||||
#define MIMOSA "mimosa"
|
#define MIMOSA "mimosa"
|
||||||
#define LEMONDROP "lemondrop"
|
#define LEMONDROP "lemondrop"
|
||||||
|
#define FEVERFEW "feverfew"
|
||||||
|
|
||||||
#define ACRYLIC "acrylic"
|
#define ACRYLIC "acrylic"
|
||||||
#define ACETONE "acetone"
|
#define ACETONE "acetone"
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ var/list/global/id_cards = list()
|
|||||||
var/registered_name = "Unknown" // The name registered_name on the card
|
var/registered_name = "Unknown" // The name registered_name on the card
|
||||||
slot_flags = SLOT_ID
|
slot_flags = SLOT_ID
|
||||||
|
|
||||||
|
var/show_biometrics = TRUE //Necessary to display the below stats
|
||||||
var/blood_type = "\[UNSET\]"
|
var/blood_type = "\[UNSET\]"
|
||||||
var/dna_hash = "\[UNSET\]"
|
var/dna_hash = "\[UNSET\]"
|
||||||
var/fingerprint_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)
|
user.show_message(text("The current assignment on the card is [assignment]."),1)
|
||||||
else
|
else
|
||||||
user.show_message(text("No assignment has been set. Use an identification computer to edit."),1)
|
user.show_message(text("No assignment has been set. Use an identification computer to edit."),1)
|
||||||
if (dna_hash == "\[UNSET\]")
|
if(show_biometrics)
|
||||||
user.show_message(text("No biometric data referenced. Use a body scanner at Medbay to imprint."),1)
|
if (dna_hash == "\[UNSET\]")
|
||||||
else
|
user.show_message(text("No biometric data referenced. Use a body scanner at Medbay to imprint."),1)
|
||||||
user.show_message("Blood Type: [blood_type].",1)
|
else
|
||||||
user.show_message("DNA: [dna_hash].",1)
|
user.show_message("Blood Type: [blood_type].",1)
|
||||||
user.show_message("Fingerprint: [fingerprint_hash].",1)
|
user.show_message("DNA: [dna_hash].",1)
|
||||||
|
user.show_message("Fingerprint: [fingerprint_hash].",1)
|
||||||
if(dchip && dchip.stamped.len)
|
if(dchip && dchip.stamped.len)
|
||||||
to_chat(user,"<span class='bad'>It has a demotion modchip with the following stamps: [english_list(uniquenamelist(dchip.stamped))].</span>")
|
to_chat(user,"<span class='bad'>It has a demotion modchip with the following stamps: [english_list(uniquenamelist(dchip.stamped))].</span>")
|
||||||
|
|
||||||
|
|||||||
@@ -735,6 +735,16 @@
|
|||||||
block = HEADACHEBLOCK
|
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
|
/obj/item/weapon/dnainjector/nofail/antiepi
|
||||||
name = "DNA-Injector (Anti-Epi.)"
|
name = "DNA-Injector (Anti-Epi.)"
|
||||||
desc = "Will fix you up from shaking the room."
|
desc = "Will fix you up from shaking the room."
|
||||||
|
|||||||
@@ -272,7 +272,8 @@ var/global/list/dockinglights = list()
|
|||||||
|
|
||||||
/obj/machinery/docklight/New()
|
/obj/machinery/docklight/New()
|
||||||
..()
|
..()
|
||||||
dockinglights += src
|
if(!triggered) //don't add the permanently-on lights
|
||||||
|
dockinglights += src
|
||||||
|
|
||||||
/obj/machinery/docklight/Destroy()
|
/obj/machinery/docklight/Destroy()
|
||||||
dockinglights -= src
|
dockinglights -= src
|
||||||
@@ -292,3 +293,10 @@ var/global/list/dockinglights = list()
|
|||||||
<ul>
|
<ul>
|
||||||
<li>[format_tag("ID Tag","id_tag")]</li>
|
<li>[format_tag("ID Tag","id_tag")]</li>
|
||||||
</ul>"}
|
</ul>"}
|
||||||
|
|
||||||
|
/obj/machinery/docklight/alwayson
|
||||||
|
triggered = 1
|
||||||
|
|
||||||
|
/obj/machinery/docklight/alwayson/New()
|
||||||
|
..()
|
||||||
|
update_icon()
|
||||||
@@ -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
|
if(reagents.has_reagent(CLOTTING_AGENT) || reagents.has_reagent(BIOFOAM)) //Clotting agent and biofoam stop bleeding entirely
|
||||||
blood_factor = 0
|
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
|
if(bodytemperature < 170) //Cryo stops bleeding entirely
|
||||||
blood_factor = 0
|
blood_factor = 0
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,15 @@
|
|||||||
max_shells = 3
|
max_shells = 3
|
||||||
silencer_offset = list(22,5)
|
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
|
//this is largely hacky and bad :( -Pete
|
||||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
|
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
|
||||||
name = "double-barreled shotgun"
|
name = "double-barreled shotgun"
|
||||||
|
|||||||
@@ -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.set_up(3, 0, T)
|
||||||
smoke.start()
|
smoke.start()
|
||||||
return 1
|
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
|
||||||
@@ -14,7 +14,11 @@
|
|||||||
SHC = (for(components of recipe) total_SHC *= component SHC)
|
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
|
/datum/reagent
|
||||||
var/name = "Reagent"
|
var/name = "Reagent"
|
||||||
@@ -6129,6 +6133,20 @@ var/procizine_tolerance = 0
|
|||||||
color = "#D9C0E7" //rgb: 217, 192, 231
|
color = "#D9C0E7" //rgb: 217, 192, 231
|
||||||
custom_metabolism = 0.1
|
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
|
/datum/reagent/caffeine
|
||||||
name = "Caffeine"
|
name = "Caffeine"
|
||||||
id = CAFFEINE
|
id = CAFFEINE
|
||||||
|
|||||||
@@ -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?")
|
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
|
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.")
|
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
|
||||||
@@ -515,6 +515,14 @@
|
|||||||
..()
|
..()
|
||||||
reagents.add_reagent(ARITHRAZINE, 10)
|
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
|
/obj/item/weapon/reagent_containers/pill/nanofloxacin
|
||||||
name = "nanofloxacin pill"
|
name = "nanofloxacin pill"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 126 KiB |
BIN
icons/turf/meat.dmi
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 5.9 KiB |
328
maps/RandomZLevels/wildwest_props.dm
Normal file
@@ -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, "<span class='danger'>You prick yourself on \the [src].</span>")
|
||||||
|
|
||||||
|
/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, "<span class='danger'>You prick yourself on \the [src].</span>")
|
||||||
|
|
||||||
|
/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, "<span class='warning'>Gravity seems to lapse as you float into the sky!</span>")
|
||||||
|
|
||||||
|
//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
|
||||||
BIN
sound/music/xfiles.ogg
Normal file
@@ -2916,5 +2916,6 @@
|
|||||||
#include "maps\RandomZLevels\stationCollision.dm"
|
#include "maps\RandomZLevels\stationCollision.dm"
|
||||||
#include "maps\RandomZLevels\tomb.dm"
|
#include "maps\RandomZLevels\tomb.dm"
|
||||||
#include "maps\RandomZLevels\wildwest.dm"
|
#include "maps\RandomZLevels\wildwest.dm"
|
||||||
|
#include "maps\RandomZLevels\wildwest_props.dm"
|
||||||
#include "maps\wheelstation\areas.dm"
|
#include "maps\wheelstation\areas.dm"
|
||||||
// END_INCLUDE
|
// END_INCLUDE
|
||||||
|
|||||||