Merge branch 'master' into upstream-merge-8222

This commit is contained in:
Heroman
2022-02-19 18:41:29 +10:00
1251 changed files with 947582 additions and 38891 deletions
@@ -4,8 +4,7 @@
desc = "It looks like a weird egg."
name = "egg"
icon_state = "egg_growing"
density = 0
anchored = 1
density = FALSE
var/progress = 0
/obj/structure/alien/egg/Initialize()
+36 -6
View File
@@ -1,10 +1,11 @@
/obj/structure/alien //Gurg Addition, framework for alien eggs.
/obj/structure/alien //Gurg Addition, framework for alien eggs and structures.
name = "alien thing"
desc = "There's something alien about this."
icon = 'icons/mob/alien.dmi'
layer = ABOVE_JUNK_LAYER
var/health = 50
unacidable = TRUE
anchored = TRUE
/obj/structure/alien/proc/healthcheck()
if(health <=0)
@@ -46,16 +47,45 @@
..()
return
/obj/structure/alien/attack_generic()
attack_hand(usr)
/obj/structure/alien/attack_generic(var/mob/user, var/damage, var/attack_verb)
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
user.do_attack_animation(src)
health -= damage
healthcheck()
return
/obj/structure/alien/attackby(var/obj/item/weapon/W, var/mob/user)
health = max(0, health - W.force)
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
/obj/structure/alien/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.setClickCooldown(user.get_attack_speed(W))
var/aforce = W.force
health = max(0, health - aforce)
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
visible_message("<span class='danger'>[user] attacks the [src]!</span>")
healthcheck()
..()
return
/obj/structure/alien/attack_hand()
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if (HULK in usr.mutations)
visible_message("<span class='warning'>[usr] destroys the [name]!</span>")
health = 0
else
// Aliens can get straight through these.
if(istype(usr,/mob/living/carbon))
var/mob/living/carbon/M = usr
if(locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs)
visible_message ("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
health = 0
healthcheck()
return
visible_message("<span class='warning'>[usr] claws at the [name]!</span>")
health -= rand(5,10)
healthcheck()
return
/obj/structure/alien/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover) && mover.checkpass(PASSGLASS))
@@ -0,0 +1,17 @@
/obj/structure/alien/wall
name = "resin wall"
desc = "A disgusting mass of purple slime solidified into a wall."
icon_state = "resin wall"
health = 200
opacity = 1
density = TRUE
can_atmos_pass = ATMOS_PASS_NO
/obj/structure/alien/membrane
name = "resin membrane"
desc = "A revolting mass of purple slime, it appears to be stretched enough to be transparent."
icon_state = "resin membrane"
opacity = 0
health = 120
density = TRUE
can_atmos_pass = ATMOS_PASS_NO
+23 -30
View File
@@ -112,7 +112,7 @@
user.visible_message("[user] smears paint on [src], covering the entire thing in paint.", "You smear paint on [src], changing the color of the entire thing.", runemessage = "smears paint")
update_appearance()
return
if(user.a_intent == I_HELP)
tgui_interact(user)
else
@@ -215,7 +215,7 @@
return canvas_color
/obj/item/canvas/proc/try_rename(mob/user)
var/new_name = stripped_input(user,"What do you want to name the painting?")
var/new_name = stripped_input(user,"What do you want to name the painting?", max_length = 250)
if(new_name != painting_name && new_name && CanUseTopic(user, GLOB.tgui_physical_state))
painting_name = new_name
SStgui.update_uis(src)
@@ -291,7 +291,7 @@
if(new_color)
selected_color = new_color
color_drop.color = new_color
cut_overlays()
if(hud_level)
add_overlay(color_drop)
@@ -316,21 +316,10 @@
name = "painting frame"
desc = "The perfect showcase for your favorite deathtrap memories."
icon = 'icons/obj/decals.dmi'
//custom_materials = list(/datum/material/wood = 2000)
//flags_1 = NONE
refund_amt = 5
refund_type = /obj/item/stack/material/wood
icon_state = "frame-empty"
/obj/item/frame/painting/try_build(turf/on_wall, mob/user as mob)
if(get_dist(on_wall, user) > 1)
return
var/ndir = get_dir(on_wall, user)
if (!(ndir in cardinal))
return
if(!istype(on_wall, /turf/simulated/wall))
to_chat(user, "<span class='warning'>Frame cannot be placed on this spot.</span>")
return
new /obj/structure/sign/painting(get_turf(user), ndir, TRUE)
qdel(src)
build_machine_type = /obj/structure/sign/painting
/obj/structure/sign/painting
name = "Painting"
@@ -346,6 +335,7 @@
var/desc_with_canvas
var/persistence_id
var/loaded = FALSE
var/curator = "nobody! Report bug if you see this."
//Presets for art gallery mapping, for paintings to be shared across stations
/obj/structure/sign/painting/public
@@ -356,10 +346,11 @@
/obj/structure/sign/painting/library_secure
name = "\improper Curated Painting Exhibit mounting"
desc = "For masterpieces hand-picked by the curator."
desc_with_canvas = "A masterpiece hand-picked by the curator, supposedly."
desc = "For masterpieces hand-picked by the librarian."
desc_with_canvas = "A masterpiece hand-picked by the librarian, supposedly."
persistence_id = "library"
req_one_access = list(access_library)
curator = "Librarian"
/obj/structure/sign/painting/chapel_secure
name = "\improper Religious Painting Exhibit mounting"
@@ -367,13 +358,15 @@
desc_with_canvas = "A masterpiece hand-picked by the chaplain, supposedly."
persistence_id = "chapel"
req_one_access = list(access_chapel_office)
curator = "Chaplain"
/obj/structure/sign/painting/library_private // keep your smut away from prying eyes, or non-librarians at least
name = "\improper Private Painting Exhibit mounting"
desc = "For art pieces deemed too subversive or too illegal to be shared outside of curators."
desc = "For art pieces deemed too subversive or too illegal to be shared outside of librarians."
desc_with_canvas = "A painting hung away from lesser minds."
persistence_id = "library_private"
req_one_access = list(access_library)
curator = "Librarian"
/obj/structure/sign/painting/away_areas // for very hard-to-get-to areas
name = "\improper Remote Painting Exhibit mounting"
@@ -423,7 +416,7 @@
/obj/structure/sign/painting/proc/frame_canvas(mob/user,obj/item/canvas/new_canvas)
if(!allowed(user))
to_chat(user, "<span class='warning'>You're not comfortable framing this canvas in such a prestigious spot!</span>")
to_chat(user, "<span class='notice'>Access lock prevents you from putting a painting into this frame. Ask [curator] for help!</span>")
return
if(user.drop_from_inventory(new_canvas, src))
current_canvas = new_canvas
@@ -434,7 +427,7 @@
/obj/structure/sign/painting/proc/unframe_canvas(mob/living/user)
if(!allowed(user))
to_chat(user, "<span class='warning'>You're not comfortable removing this prestigious canvas!</span>")
to_chat(user, "<span class='notice'>Access lock prevents you from removing paintings from this frame. Ask [curator] ((or admins)) for help!</span>")
return
if(current_canvas)
current_canvas.forceMove(drop_location())
@@ -483,12 +476,12 @@
/obj/structure/sign/painting/proc/load_persistent()
if(!persistence_id || !LAZYLEN(SSpersistence.unpicked_paintings))
return
var/list/painting_category = list()
for (var/list/P in SSpersistence.unpicked_paintings)
if(P["persistence_id"] == persistence_id)
painting_category[++painting_category.len] = P
var/list/painting
while(!painting)
if(!length(painting_category))
@@ -500,7 +493,7 @@
continue //and try again
painting = chosen
SSpersistence.unpicked_paintings -= list(chosen)
var/title = painting["title"]
var/author_name = painting["author"]
var/author_ckey = painting["ckey"]
@@ -509,7 +502,7 @@
var/obj/item/canvas/new_canvas
var/w = I.Width()
var/h = I.Height()
for(var/T in typesof(/obj/item/canvas))
new_canvas = T
if(initial(new_canvas.width) == w && initial(new_canvas.height) == h)
@@ -519,7 +512,7 @@
if(!new_canvas)
warning("Couldn't find a canvas to match [w]x[h] of painting")
return
new_canvas.fill_grid_from_icon(I)
new_canvas.generated_icon = I
new_canvas.icon_generated = TRUE
@@ -540,7 +533,7 @@
return
if(!current_canvas.painting_name)
current_canvas.painting_name = "Untitled Artwork"
var/data = current_canvas.get_data_string()
var/md5 = md5(lowertext(data))
for(var/list/entry in SSpersistence.all_paintings)
@@ -549,10 +542,10 @@
var/png_directory = "data/persistent/paintings/[persistence_id]/"
var/png_path = png_directory + "[md5].png"
var/result = rustg_dmi_create_png(png_path,"[current_canvas.width]","[current_canvas.height]",data)
if(result)
CRASH("Error saving persistent painting: [result]")
SSpersistence.all_paintings += list(list(
"persistence_id" = persistence_id,
"title" = current_canvas.painting_name,
@@ -104,6 +104,12 @@
return TRUE
return FALSE
/obj/structure/barricade/planks
name = "crude barricade"
icon_state = "barricade_planks"
health = 50
maxhealth = 50
/obj/structure/barricade/sandbag
name = "sandbags"
desc = "Bags. Bags of sand. It's rough and coarse and somehow stays in the bag."
@@ -51,7 +51,7 @@
open_icon.Blend(icon(base_icon, "open"), ICON_OVERLAY)
open_icon.Blend(color, BLEND_ADD)
open_icon.Blend(icon(base_icon, "interior"), ICON_OVERLAY)
door_back_icon = icon(base_icon, "door_back")
door_back_icon.Blend(color, BLEND_ADD)
@@ -74,7 +74,7 @@
this_decal_icon.Blend(decals[thing], BLEND_ADD)
closed_emagged_icon.Blend(this_decal_icon, ICON_OVERLAY)
door_front_icon.Blend(this_decal_icon, ICON_OVERLAY)
door_front_icon.AddAlphaMask(icon(base_icon, "door_front")) // Remove pesky 'more than just door' decals
closed_locked_icon = icon(closed_emagged_icon)
@@ -622,6 +622,13 @@
"vertical_stripe_simple" = COLOR_OFF_WHITE,
)
/decl/closet_appearance/oxygen/fire/atmos
color = COLOR_YELLOW_GRAY
extra_decals = list(
"extinguisher" = COLOR_TEAL,
"vertical_stripe_simple" = COLOR_TEAL,
)
/decl/closet_appearance/alien
color = COLOR_PURPLE
@@ -1437,6 +1444,13 @@
"stripes" = COLOR_OFF_WHITE,
"glass" = COLOR_WHITE
)
/decl/closet_appearance/wall_double/survival
color = COLOR_CYAN_BLUE
decals = null
extra_decals = list(
"stripe_outer" = COLOR_WHITE
)
// Carts
/decl/closet_appearance/cart
@@ -32,6 +32,11 @@
"stripes_horizontal" = COLOR_SKY_BLUE
)
/decl/closet_appearance/secure_closet/talon/miner
extra_decals = list(
"stripes_horizontal" = COLOR_BEASTY_BROWN
)
/decl/closet_appearance/secure_closet/talon/captain
extra_decals = list(
"stripes_horizontal" = COLOR_GOLD
@@ -3,6 +3,35 @@
desc = "It's a storage unit for athletic wear."
closet_appearance = /decl/closet_appearance/wardrobe/mixed
starts_with = list(
/obj/item/clothing/under/shorts/grey,
/obj/item/clothing/under/shorts/black,
/obj/item/clothing/under/shorts/red,
/obj/item/clothing/under/shorts/blue,
/obj/item/clothing/under/shorts/green,
/obj/item/clothing/under/shorts/white,
/obj/item/clothing/suit/storage/toggle/track,
/obj/item/clothing/suit/storage/toggle/track/blue,
/obj/item/clothing/suit/storage/toggle/track/green,
/obj/item/clothing/suit/storage/toggle/track/red,
/obj/item/clothing/suit/storage/toggle/track/white,
/obj/item/clothing/under/pants/track,
/obj/item/clothing/under/pants/track/blue,
/obj/item/clothing/under/pants/track/green,
/obj/item/clothing/under/pants/track/white,
/obj/item/clothing/under/pants/track/red,
/obj/item/clothing/shoes/athletic = 2,
/obj/item/clothing/shoes/hitops,
/obj/item/clothing/shoes/hitops/red,
/obj/item/clothing/shoes/hitops/black,
/obj/item/clothing/shoes/hitops/blue
)
/obj/structure/closet/athletic_swimwear
name = "athletic wardrobe"
desc = "It's a storage unit for swimwear."
closet_appearance = /decl/closet_appearance/wardrobe/mixed
starts_with = list(
/obj/item/clothing/under/shorts/grey,
/obj/item/clothing/under/shorts/black,
@@ -17,6 +46,9 @@
/obj/item/clothing/under/swimsuit/striped,
/obj/item/clothing/under/swimsuit/white,
/obj/item/clothing/under/swimsuit/earth,
/obj/item/clothing/under/wetsuit,
/obj/item/clothing/under/wetsuit_rec,
/obj/item/clothing/under/wetsuit_skimpy,
/obj/item/clothing/mask/snorkel = 2,
/obj/item/clothing/shoes/swimmingfins = 2)
@@ -93,7 +93,7 @@
*/
/obj/structure/closet/secure_closet/pathfinder
name = "pathfinder locker"
req_access = list(access_gateway)
req_access = list(access_pathfinder)
closet_appearance = /decl/closet_appearance/secure_closet/expedition/pathfinder
starts_with = list(
@@ -113,7 +113,6 @@
/obj/item/device/geiger,
/obj/item/weapon/cell/device,
/obj/item/device/radio,
/obj/item/device/bluespaceradio/tether_prelinked,
/obj/item/stack/marker_beacon/thirty,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/material/knife/machete/deluxe,
@@ -41,13 +41,13 @@
/obj/item/device/radio/headset/headset_qm/alt, //VOREStation Edit,
/obj/item/clothing/gloves/black,
/obj/item/clothing/gloves/fingerless,
/obj/item/clothing/suit/fire/firefighter,
/obj/item/weapon/tank/emergency/oxygen,
/obj/item/clothing/mask/gas,
/obj/item/clothing/glasses/meson,
/obj/item/clothing/head/soft,
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo,
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo/qm,
/obj/item/clothing/head/beret/qm,
/obj/item/clothing/shoes/boots/winter/supply)
/obj/structure/closet/secure_closet/quartermaster/Initialize()
@@ -12,7 +12,7 @@
/obj/item/clothing/under/rank/chief_engineer/skirt,
/obj/item/clothing/head/hardhat/white,
/obj/item/clothing/head/welding,
/obj/item/clothing/gloves/yellow,
/obj/item/clothing/gloves/heavy_engineer, //VOREStation Edit: chief gets the good shit
/obj/item/clothing/shoes/brown,
/obj/item/weapon/cartridge/ce,
/obj/item/device/radio/headset/heads/ce,
@@ -28,6 +28,8 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering,
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering/ce,
/obj/item/clothing/shoes/boots/winter/engineering,
/obj/item/clothing/head/beret/engineering/ce,
/obj/item/clothing/head/beret/engineering/ce/white,
/obj/item/weapon/tank/emergency/oxygen/engi,
/obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add
@@ -82,6 +84,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering,
/obj/item/clothing/shoes/boots/winter/engineering,
/obj/item/weapon/tank/emergency/oxygen/engi,
/obj/item/weapon/storage/belt/utility, //VOREStation Add
/obj/item/weapon/reagent_containers/spray/windowsealant) //VOREStation Add
/obj/structure/closet/secure_closet/engineering_personal/Initialize()
@@ -101,10 +104,10 @@
starts_with = list(
/obj/item/clothing/accessory/storage/brown_vest,
/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/head/hardhat/red,
/obj/item/clothing/suit/fire/heavy,
/obj/item/clothing/head/hardhat/firefighter/atmos,
/obj/item/device/flashlight,
/obj/item/weapon/extinguisher,
/obj/item/weapon/extinguisher/atmo,
///obj/item/clamp, //VOREStation Removal: without leaks those are pointless,
/obj/item/device/radio/headset/headset_eng,
/obj/item/device/radio/headset/headset_eng/alt,
@@ -114,7 +117,8 @@
/obj/item/taperoll/atmos,
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos,
/obj/item/clothing/shoes/boots/winter/atmos,
/obj/item/weapon/tank/emergency/oxygen/engi)
/obj/item/weapon/tank/emergency/oxygen/engi,
/obj/item/weapon/storage/belt/utility) //VOREStation Add
/obj/structure/closet/secure_closet/atmos_personal/Initialize()
if(prob(50))
@@ -49,3 +49,15 @@
else
add_overlay("open")
//VOREStation Add Start
/obj/structure/closet/secure_closet/guncabinet/excursion
name = "expedition weaponry cabinet"
req_one_access = list(access_explorer,access_armory)
/obj/structure/closet/secure_closet/guncabinet/excursion/New()
..()
for(var/i = 1 to 2)
new /obj/item/weapon/gun/energy/locked/frontier(src)
for(var/i = 1 to 2)
new /obj/item/weapon/gun/energy/locked/frontier/holdout(src)
//VOREStation Add End
@@ -6,6 +6,7 @@
starts_with = list(
/obj/item/weapon/storage/bag/plants,
/obj/item/clothing/under/rank/hydroponics,
/obj/item/clothing/gloves/botanic_leather,
/obj/item/device/analyzer/plant_analyzer,
/obj/item/device/radio/headset/headset_service,
/obj/item/clothing/head/greenbandana,
@@ -44,7 +44,8 @@
/obj/item/clothing/shoes/boots/winter/medical,
/obj/item/clothing/under/rank/nursesuit,
/obj/item/clothing/head/nursehat,
/obj/item/weapon/storage/box/freezer = 3)
/obj/item/weapon/storage/box/freezer = 3,
/obj/item/weapon/storage/belt/medical) //VOREStation Add
/obj/structure/closet/secure_closet/medical3/Initialize()
if(prob(50))
@@ -141,13 +142,16 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/medical,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/cmo,
/obj/item/clothing/shoes/boots/winter/medical,
/obj/item/clothing/head/beret/medical/cmo,
/obj/item/clothing/head/beret/medical/cmo/blue,
/obj/item/weapon/storage/box/freezer,
/obj/item/clothing/mask/gas,
/obj/item/taperoll/medical,
/obj/item/clothing/suit/bio_suit/cmo,
/obj/item/clothing/head/bio_hood/cmo,
/obj/item/clothing/shoes/white,
/obj/item/weapon/reagent_containers/glass/beaker/vial) //VOREStation Add
/obj/item/weapon/reagent_containers/glass/beaker/vial, //VOREStation Add
/obj/item/weapon/storage/belt/medical) //VOREStation Add
/obj/structure/closet/secure_closet/CMO/Initialize()
if(prob(50))
@@ -47,6 +47,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/science,
/obj/item/clothing/suit/storage/hooded/wintercoat/science/rd,
/obj/item/clothing/shoes/boots/winter/science,
/obj/item/clothing/head/beret/science/rd,
/obj/item/weapon/bluespace_harpoon) //VOREStation Add
/obj/structure/closet/secure_closet/xenoarchaeologist
@@ -58,10 +58,12 @@
/obj/item/clothing/shoes/white,
/obj/item/clothing/under/rank/head_of_personnel_whimsy,
/obj/item/clothing/head/caphat/hop,
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit,
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt,
/obj/item/clothing/under/suit_jacket/teal,
/obj/item/clothing/under/suit_jacket/teal/skirt,
/obj/item/clothing/glasses/sunglasses,
/obj/item/clothing/suit/storage/hooded/wintercoat/hop)
/obj/item/clothing/suit/storage/hooded/wintercoat/hop,
/obj/item/clothing/head/caphat/hop/beret/,
/obj/item/clothing/head/caphat/hop/beret/white)
/obj/structure/closet/secure_closet/hos
@@ -116,7 +116,6 @@
for(var/i = 0, i<2, i++)
for(var/res in resources)
var/obj/item/stack/R = new res(src)
R.amount = R.max_amount
new res(src, -1)
return ..()
@@ -65,7 +65,7 @@
closet_appearance = /decl/closet_appearance/oxygen/fire
starts_with = list(
/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/suit/fire,
/obj/item/clothing/mask/gas,
/obj/item/weapon/tank/oxygen/red,
/obj/item/weapon/extinguisher,
@@ -73,7 +73,7 @@
/obj/structure/closet/firecloset/full
starts_with = list(
/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/suit/fire,
/obj/item/clothing/mask/gas,
/obj/item/device/flashlight,
/obj/item/weapon/tank/oxygen/red,
@@ -82,13 +82,24 @@
/obj/structure/closet/firecloset/full/double
starts_with = list(
/obj/item/clothing/suit/fire/firefighter = 2,
/obj/item/clothing/suit/fire = 2,
/obj/item/clothing/mask/gas = 2,
/obj/item/device/flashlight = 2,
/obj/item/weapon/tank/oxygen/red = 2,
/obj/item/weapon/extinguisher = 2,
/obj/item/clothing/head/hardhat/red = 2)
/obj/structure/closet/firecloset/full/atmos
name = "atmos fire-safety closet"
desc = "It's a storage unit for atmospheric fire-fighting supplies."
closet_appearance = /decl/closet_appearance/oxygen/fire/atmos
starts_with = list(
/obj/item/clothing/suit/fire/heavy,
/obj/item/weapon/tank/oxygen/red,
/obj/item/weapon/extinguisher/atmo,
/obj/item/clothing/head/hardhat/firefighter/atmos)
/*
* Tool Closet
*/
@@ -131,7 +131,7 @@
/obj/structure/closet/walllocker_double/kitchen/east
pixel_x = 32
dir = EAST
/obj/structure/closet/walllocker_double/medical
name = "Medical Cabinet"
desc = "A wall mounted medical supply cabinet. Probably full of drugs!" //not actually full of drugs, sorry!
@@ -152,7 +152,7 @@
/obj/structure/closet/walllocker_double/medical/east
pixel_x = 32
dir = EAST
/obj/structure/closet/walllocker_double/hydrant
name = "fire-safety closet"
desc = "It's a storage cabinet packed with fire-fighting supplies."
@@ -161,7 +161,7 @@
density = FALSE
starts_with = list(
/obj/item/clothing/suit/fire/firefighter,
/obj/item/clothing/suit/fire,
/obj/item/clothing/mask/gas,
/obj/item/device/flashlight,
/obj/item/weapon/tank/oxygen/red,
@@ -183,3 +183,44 @@
/obj/structure/closet/walllocker_double/hydrant/east
pixel_x = 32
dir = EAST
/obj/structure/closet/walllocker_double/survival
desc = "A wall mounted storage cabinet. It contains a small amount of emergency supplies for wilderness survival, but they probably won't last very long."
name = "Emergency Survival Wall Cabinet"
icon = 'icons/obj/closets/bases/wall_double.dmi'
closet_appearance = /decl/closet_appearance/wall_double/survival
density = FALSE
anchored = TRUE
store_mobs = 0
wall_mounted = 1
plane = TURF_PLANE
layer = ABOVE_TURF_LAYER
starts_with = list(
/obj/item/clothing/suit/space/emergency,
/obj/item/clothing/head/helmet/space/emergency,
/obj/item/clothing/mask/breath,
/obj/item/weapon/tank/oxygen,
/obj/item/device/suit_cooling_unit/emergency,
/obj/item/device/gps,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/random/mre,
/obj/item/device/flashlight/color/yellow,
/obj/item/device/flashlight/flare,
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle)
/obj/structure/closet/walllocker_double/survival/north
pixel_y = 32
dir = SOUTH
/obj/structure/closet/walllocker_double/survival/south
pixel_y = -32
dir = NORTH
/obj/structure/closet/walllocker_double/survival/west
pixel_x = -32
dir = WEST
/obj/structure/closet/walllocker_double/survival/east
pixel_x = 32
dir = EAST
@@ -364,8 +364,11 @@
/obj/item/clothing/under/pants/khaki,
/obj/item/clothing/mask/bandana/blue,
/obj/item/clothing/mask/bandana/blue,
/obj/item/clothing/accessory/hawaii,
/obj/item/clothing/accessory/hawaii/random)
/obj/item/clothing/accessory/hawaiian,
/obj/item/clothing/accessory/hawaiian/blue,
/obj/item/clothing/accessory/hawaiian/pink,
/obj/item/clothing/accessory/hawaiian/red,
/obj/item/clothing/accessory/hawaiian/yellow)
/obj/structure/closet/wardrobe/tactical
@@ -448,7 +451,9 @@
/obj/item/clothing/suit/captunic,
/obj/item/clothing/suit/captunic/capjacket,
/obj/item/clothing/head/caphat/cap,
/obj/item/clothing/head/caphat/beret,
/obj/item/clothing/under/rank/captain,
/obj/item/clothing/under/dress/dress_cap/femformal,
/obj/item/clothing/shoes/brown,
/obj/item/clothing/gloves/captain,
/obj/item/clothing/under/dress/dress_cap,
@@ -458,7 +463,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/captain,
/obj/item/clothing/shoes/boots/winter/command,
/obj/item/clothing/head/beret/centcom/captain,
/obj/item/clothing/under/gimmick/rank/captain/suit,
/obj/item/clothing/under/gimmick/rank/captain/suit/skirt,
/obj/item/clothing/under/suit_jacket/green,
/obj/item/clothing/under/suit_jacket/green/skirt,
/obj/item/clothing/glasses/sunglasses,
/obj/item/clothing/head/caphat)
@@ -32,7 +32,7 @@
if(AM.simulated)
AM.forceMove(T)
//VOREStation Add Start
if(isanimal(AM))
if(isanimal(AM))
var/mob/living/simple_mob/AMBLINAL = AM
if(!AMBLINAL.mind)
AMBLINAL.ghostjoin = 1
@@ -65,6 +65,11 @@
ME.attach(H)
..()
/obj/structure/largecrate/donksoftvendor
name = "\improper Donk-Soft vendor crate"
desc = "A hefty wooden crate displaying the logo of Donk-Soft. It's rather heavy."
starts_with = list(/obj/machinery/vending/donksoft)
/obj/structure/largecrate/vehicle
name = "vehicle crate"
desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?"
@@ -121,3 +126,7 @@
/obj/structure/largecrate/animal/chick
name = "chicken crate"
starts_with = list(/mob/living/simple_mob/animal/passive/chick = 5)
/obj/structure/largecrate/animal/catslug
name = "catslug carrier"
starts_with = list(/mob/living/simple_mob/vore/alienanimals/catslug)
+1 -2
View File
@@ -43,8 +43,7 @@
to_chat(user, "<span class='notice'>You start to cut the shower curtains.</span>")
if(do_after(user, 10))
to_chat(user, "<span class='notice'>You cut the shower curtains.</span>")
var/obj/item/stack/material/plastic/A = new /obj/item/stack/material/plastic( src.loc )
A.amount = 3
new /obj/item/stack/material/plastic(src.loc, 3)
qdel(src)
return
else
+1 -2
View File
@@ -113,8 +113,7 @@
if(finished)
to_chat(user, "<span class='notice'>You start breaking down \the [src].</span>")
if(do_after(user, 10 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE))
var/obj/item/stack/S = new /obj/item/stack/material/plasteel(loc)
S.amount = 10
new /obj/item/stack/material/plasteel(loc, 10)
playsound(user, O.usesound, 50, 1)
qdel(src)
else
+4 -2
View File
@@ -17,7 +17,7 @@
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
else
has_extinguisher = new/obj/item/weapon/extinguisher(src)
update_icon()
/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user)
@@ -80,9 +80,11 @@
if(has_extinguisher)
if(istype(has_extinguisher, /obj/item/weapon/extinguisher/mini))
suffix = "mini"
if(istype(has_extinguisher, /obj/item/weapon/extinguisher/atmo))
suffix = "advanced"
else
suffix = "standard"
icon_state = "[initial(icon_state)][opened ? "" : "_closed"]_[suffix]"
/obj/structure/extinguisher_cabinet/old
@@ -479,6 +479,42 @@
adjust_scale(-1, 1)
pixel_x = rand(-4, 4)
/obj/random/pottedplant
name = "random potted plant"
desc = "This is a random potted plant."
/obj/random/pottedplant/item_to_spawn()
return pick(
prob(10);/obj/structure/flora/pottedplant,
prob(10);/obj/structure/flora/pottedplant/large,
prob(10);/obj/structure/flora/pottedplant/fern,
prob(10);/obj/structure/flora/pottedplant/overgrown,
prob(10);/obj/structure/flora/pottedplant/bamboo,
prob(10);/obj/structure/flora/pottedplant/largebush,
prob(10);/obj/structure/flora/pottedplant/thinbush,
prob(10);/obj/structure/flora/pottedplant/mysterious,
prob(10);/obj/structure/flora/pottedplant/smalltree,
prob(10);/obj/structure/flora/pottedplant/unusual,
prob(10);/obj/structure/flora/pottedplant/orientaltree,
prob(10);/obj/structure/flora/pottedplant/smallcactus,
prob(10);/obj/structure/flora/pottedplant/tall,
prob(10);/obj/structure/flora/pottedplant/sticky,
prob(10);/obj/structure/flora/pottedplant/smelly,
prob(10);/obj/structure/flora/pottedplant/small,
prob(10);/obj/structure/flora/pottedplant/aquatic,
prob(10);/obj/structure/flora/pottedplant/shoot,
prob(10);/obj/structure/flora/pottedplant/flower,
prob(10);/obj/structure/flora/pottedplant/crystal,
prob(10);/obj/structure/flora/pottedplant/subterranean,
prob(10);/obj/structure/flora/pottedplant/minitree,
prob(10);/obj/structure/flora/pottedplant/stoutbush,
prob(10);/obj/structure/flora/pottedplant/drooping,
prob(10);/obj/structure/flora/pottedplant/tropical,
prob(10);/obj/structure/flora/pottedplant/dead,
prob(10);/obj/structure/flora/pottedplant/decorative,
prob(1);/obj/structure/flora/pottedplant/xmas
)
/obj/structure/flora/sif
icon = 'icons/obj/flora/sifflora.dmi'
+1 -2
View File
@@ -101,8 +101,7 @@
return
if(product && product_amount) // Make wooden logs.
var/obj/item/stack/material/M = new product(get_turf(src))
M.amount = product_amount
var/obj/item/stack/material/M = new product(get_turf(src), product_amount)
M.update_icon()
visible_message("<span class='danger'>\The [src] is felled!</span>")
stump()
@@ -41,7 +41,8 @@
"Frost Giant Spider" = /mob/living/simple_mob/animal/giant_spider/frost,
"Nurse Giant Spider" = /mob/living/simple_mob/animal/giant_spider/nurse/eggless,
"Giant Spider Queen" = /mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless,
"Weretiger" = /mob/living/simple_mob/vore/weretiger
"Weretiger" = /mob/living/simple_mob/vore/weretiger,
"Catslug" = /mob/living/simple_mob/vore/alienanimals/catslug
)
/obj/structure/ghost_pod/ghost_activated/maintpred/create_occupant(var/mob/M)
@@ -51,6 +52,9 @@
var/finalized = "No"
while(finalized == "No" && M.client)
if(jobban_isbanned(M, "GhostRoles"))
to_chat(M, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
choice = tgui_input_list(M, "What type of predator do you want to play as?", "Maintpred Choice", possible_mobs)
if(!choice)
randomize = TRUE
@@ -76,11 +80,6 @@
to_chat(M, "<span class='warning'>You may be a spooky space monster, but your role is to facilitate spooky space monster roleplay, not to fight the station and kill people. You can of course eat and/or digest people as you like if OOC prefs align, but this should be done as part of roleplay. If you intend to fight the station and kill people and such, you need permission from the staff team. GENERALLY, this role should avoid well populated areas. Youre a weird spooky space monster, so the bar is probably not where youd want to go if you intend to survive. Of course, youre welcome to try to make friends and roleplay how you will in this regard, but something to keep in mind.</span>")
newPred.ckey = M.ckey
newPred.visible_message("<span class='warning'>[newPred] emerges from somewhere!</span>")
if(prob(announce_prob))
spawn(2 MINUTES)
command_announcement.Announce("Unexpected biosignature detected in the maintenance tunnels of [station_name()].", "Lifesign Alert")
qdel(src)
/obj/structure/ghost_pod/ghost_activated/maintpred/no_announce
@@ -115,11 +114,6 @@
newMorph.ckey = M.ckey
newMorph.visible_message("<span class='warning'>A morph appears to crawl out of somewhere.</span>")
if(prob(announce_prob))
spawn(2 MINUTES)
command_announcement.Announce("Unexpected biosignature detected in the maintenance tunnels of [station_name()].", "Lifesign Alert")
qdel(src)
/obj/structure/ghost_pod/ghost_activated/morphspawn/no_announce
@@ -84,6 +84,11 @@
description_info = "A ghost can click on this to return to the round as whatever is contained inside this object."
/obj/structure/ghost_pod/ghost_activated/attack_ghost(var/mob/observer/dead/user)
//VOREStation Add Start
if(jobban_isbanned(user, "GhostRoles"))
to_chat(user, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
//VOREStation Add End
if(used)
to_chat(user, "<span class='warning'>Another spirit appears to have gotten to \the [src] before you. Sorry.</span>")
return
@@ -11,6 +11,10 @@
var/activated = FALSE
/obj/structure/ghost_pod/manual/attack_ghost(var/mob/observer/dead/user)
if(jobban_isbanned(user, "GhostRoles"))
to_chat(user, "<span class='warning'>You cannot inhabit this creature because you are banned from playing ghost roles.</span>")
return
if(!remains_active || busy)
return
+1
View File
@@ -1,4 +1,5 @@
/obj/structure/girder
name = "girder"
icon_state = "girder"
anchored = TRUE
density = TRUE
+42 -16
View File
@@ -21,9 +21,9 @@
var/stripe_color
//rad_resistance_modifier = 0.5
// blend_objects defined on subtypes
// blend_objects defined on subtypes
noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor)
var/default_material = DEFAULT_WALL_MATERIAL
var/datum/material/material
var/grille_type
@@ -38,9 +38,9 @@
if(!materialtype)
materialtype = default_material
material = get_material_by_name(materialtype)
health = material.integrity
return INITIALIZE_HINT_LATELOAD
@@ -79,12 +79,12 @@
if(istype(W, /obj/item/stack/rods))
handle_rod_use(user, W)
return
// Making windows, different per subtype
else if(istype(W, /obj/item/stack/material/glass))
handle_glass_use(user, W)
return
// Dismantling the half wall
if(W.is_wrench())
for(var/obj/structure/S in loc)
@@ -99,6 +99,7 @@
if(do_after(user, 40, src))
to_chat(user, "<span class='notice'>You dissasembled the low wall!</span>")
dismantle()
return
// Handle placing things
if(isrobot(user))
@@ -110,7 +111,7 @@
if(can_place_items() && user.unEquip(W, 0, src.loc) && user.is_preference_enabled(/datum/client_preference/precision_placement))
auto_align(W, click_parameters)
return 1
return ..()
/obj/structure/low_wall/proc/can_place_items()
@@ -121,19 +122,44 @@
return FALSE
return TRUE
/obj/structure/low_wall/MouseDrop_T(obj/O as obj, mob/user as mob)
/obj/structure/low_wall/MouseDrop_T(atom/movable/AM, mob/user, src_location, over_location, src_control, over_control, params)
if(AM == user)
var/mob/living/H = user
if(istype(H) && can_climb(H))
do_climb(AM)
var/obj/O = AM
if(!istype(O))
return
if(istype(O, /obj/structure/window))
var/obj/structure/window/W = O
if(Adjacent(W) && !W.anchored)
to_chat("<span class='notice'>You hoist [W] up onto [src].</span>")
W.forceMove(loc)
return
if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O))
return ..()
if(isrobot(user))
return
if(can_place_items())
user.unEquip(O, 0, src.loc)
if(ismob(O.loc)) //If placing an item
if(!isitem(O) || user.get_active_hand() != O)
return ..()
if(isrobot(user))
return
user.drop_item()
if(O.loc != src.loc)
step(O, get_dir(O, src))
else if(isturf(O.loc) && isitem(O)) //If pushing an item on the tabletop
var/obj/item/I = O
if(I.anchored)
return
if((isliving(user)) && (Adjacent(user)) && !(user.incapacitated()))
if(O.w_class <= user.can_pull_size)
O.forceMove(loc)
auto_align(I, params, TRUE)
else
to_chat(user, SPAN_WARNING("\The [I] is too big for you to move!"))
return
/obj/structure/low_wall/proc/handle_rod_use(mob/user, obj/item/stack/rods/R)
if(!grille_type)
@@ -169,7 +195,7 @@
to_chat(user, "<span class='notice'>Assembling window...</span>")
if(!do_after(user, 4 SECONDS, G, exclusive = TASK_ALL_EXCLUSIVE))
return
if(!G.use(2))
if(!G.use(4))
return
new window_type(loc, null, TRUE)
return
@@ -397,7 +423,7 @@
other_connections = list("0","0","0","0")
else
update_connections()
var/percent_damage = 0 // Used for icon state of damage layer
var/damage_alpha = 0 // Used for alpha blending of damage layer
if (maxhealth && health < maxhealth)
@@ -488,7 +514,7 @@
other_connections = list("0","0","0","0")
else
update_connections()
var/img_dir
var/image/I
for(var/i = 1 to 4)
@@ -555,14 +581,14 @@
if(locate(/obj/effect/low_wall_spawner) in oview(0, src))
warning("Duplicate low wall spawners in [x],[y],[z]!")
return INITIALIZE_HINT_QDEL
if(low_wall_type)
new low_wall_type(loc)
if(grille_type)
new grille_type(loc)
if(window_type)
new window_type(loc)
return INITIALIZE_HINT_QDEL
// Bay types
+1 -2
View File
@@ -22,8 +22,7 @@
to_chat(user, "<span class='notice'>You start to cut the plastic flaps.</span>")
if(do_after(user, 10 * P.toolspeed))
to_chat(user, "<span class='notice'>You cut the plastic flaps.</span>")
var/obj/item/stack/material/plastic/A = new /obj/item/stack/material/plastic( src.loc )
A.amount = 4
new /obj/item/stack/material/plastic(src.loc, 4)
qdel(src)
return
else
+23 -2
View File
@@ -12,6 +12,8 @@
var/isSwitchingStates = 0
var/hardness = 1
var/oreAmount = 7
var/knock_sound = 'sound/machines/door/knock_glass.ogg'
var/knock_hammer_sound = 'sound/weapons/sonic_jackhammer.ogg'
/obj/structure/simple_door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
TemperatureAct(exposed_temperature)
@@ -68,6 +70,21 @@
/obj/structure/simple_door/attack_hand(mob/user as mob)
return TryToSwitchState(user)
/obj/structure/simple_door/AltClick(mob/user as mob)
. = ..()
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
if(!Adjacent(user))
return
else if(user.a_intent == I_HURT)
src.visible_message("<span class='warning'>[user] hammers on \the [src]!</span>", "<span class='warning'>Someone hammers loudly on \the [src]!</span>")
src.add_fingerprint(user)
playsound(src, knock_hammer_sound, 50, 0, 3)
else if(user.a_intent == I_HELP)
src.visible_message("[user] knocks on \the [src].", "Someone knocks on \the [src].")
src.add_fingerprint(user)
playsound(src, knock_sound, 50, 0, 3)
return
/obj/structure/simple_door/CanPass(atom/movable/mover, turf/target)
if(istype(mover, /obj/effect/beam))
return !opacity
@@ -140,7 +157,7 @@
visible_message("<span class='danger'>[user] hits [src] with [W]!</span>")
if(material == get_material_by_name("resin"))
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
else if(material == (get_material_by_name(MAT_WOOD) || get_material_by_name(MAT_SIFWOOD)))
else if(material == (get_material_by_name(MAT_WOOD) || get_material_by_name(MAT_SIFWOOD) || get_material_by_name(MAT_HARDWOOD)))
playsound(src, 'sound/effects/woodcutting.ogg', 100, 1)
else
playsound(src, 'sound/weapons/smash.ogg', 50, 1)
@@ -165,7 +182,7 @@
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
if(material == get_material_by_name("resin"))
playsound(src, 'sound/effects/attackblob.ogg', 100, 1)
else if(material == (get_material_by_name(MAT_WOOD) || get_material_by_name(MAT_SIFWOOD)))
else if(material == (get_material_by_name(MAT_WOOD) || get_material_by_name(MAT_SIFWOOD) || get_material_by_name(MAT_HARDWOOD)))
playsound(src, 'sound/effects/woodcutting.ogg', 100, 1)
else
playsound(src, 'sound/weapons/smash.ogg', 50, 1)
@@ -225,6 +242,10 @@
/obj/structure/simple_door/wood/Initialize(mapload,var/material_name)
..(mapload, material_name || MAT_WOOD)
knock_sound = 'sound/machines/door/knock_wood.wav'
/obj/structure/simple_door/hardwood/Initialize(mapload,var/material_name)
..(mapload, material_name || MAT_HARDWOOD)
/obj/structure/simple_door/sifwood/Initialize(mapload,var/material_name)
..(mapload, material_name || MAT_SIFWOOD)
@@ -127,6 +127,13 @@
playsound(src, W.usesound, 100, 1)
remove_padding()
else if(istype(W, /obj/item/weapon/disk) || (istype(W, /obj/item/toy/plushie)))
user.drop_from_inventory(W, get_turf(src))
W.pixel_x = 10 //make sure they reach the pillow
W.pixel_y = -6
if(istype(W, /obj/item/weapon/disk))
user.visible_message("<span class='notice'>[src] sleeps soundly. Sleep tight, disky.</span>")
else if(istype(W, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = W
var/mob/living/affecting = G.affecting
@@ -290,7 +297,7 @@
/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
. = ..()
playsound(src, 'sound/effects/roll.ogg', 100, 1)
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
@@ -334,7 +334,7 @@
corner_piece = TRUE
//color variations
//Middle sofas first
/obj/structure/bed/chair/sofa
sofa_material = "carpet"
@@ -379,92 +379,92 @@
/obj/structure/bed/chair/sofa/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/brown/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/brown
sofa_material = "leather"
/obj/structure/bed/chair/sofa/brown/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/brown
sofa_material = "leather"
/obj/structure/bed/chair/sofa/brown/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/brown
sofa_material = "leather"
/obj/structure/bed/chair/sofa/teal/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/teal
sofa_material = "teal"
/obj/structure/bed/chair/sofa/teal/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/teal
sofa_material = "teal"
/obj/structure/bed/chair/sofa/teal/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/teal
sofa_material = "teal"
/obj/structure/bed/chair/sofa/black/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/black
sofa_material = "black"
/obj/structure/bed/chair/sofa/black/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/black
sofa_material = "black"
/obj/structure/bed/chair/sofa/black/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/black
sofa_material = "black"
/obj/structure/bed/chair/sofa/green/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/green
sofa_material = "green"
/obj/structure/bed/chair/sofa/green/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/green
sofa_material = "green"
/obj/structure/bed/chair/sofa/green/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/green
sofa_material = "green"
/obj/structure/bed/chair/sofa/purp/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/purp
sofa_material = "purple"
/obj/structure/bed/chair/sofa/purp/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/purp
sofa_material = "purple"
/obj/structure/bed/chair/sofa/purp/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/purp
sofa_material = "purple"
/obj/structure/bed/chair/sofa/blue/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/blue
sofa_material = "blue"
/obj/structure/bed/chair/sofa/blue/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/blue
sofa_material = "blue"
/obj/structure/bed/chair/sofa/blue/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/blue
sofa_material = "blue"
/obj/structure/bed/chair/sofa/beige/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/beige
sofa_material = "beige"
/obj/structure/bed/chair/sofa/beige/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/beige
sofa_material = "beige"
/obj/structure/bed/chair/sofa/beige/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/beige
sofa_material = "beige"
/obj/structure/bed/chair/sofa/lime/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/lime
sofa_material = "lime"
/obj/structure/bed/chair/sofa/lime/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/lime
sofa_material = "lime"
/obj/structure/bed/chair/sofa/lime/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/lime
sofa_material = "lime"
/obj/structure/bed/chair/sofa/yellow/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/yellow
sofa_material = "yellow"
/obj/structure/bed/chair/sofa/yellow/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/yellow
sofa_material = "yellow"
/obj/structure/bed/chair/sofa/yellow/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/yellow
sofa_material = "yellow"
/obj/structure/bed/chair/sofa/orange/left
icon_state = "sofaend_left"
/obj/structure/bed/chair/sofa/left/orange
sofa_material = "orange"
/obj/structure/bed/chair/sofa/orange/right
icon_state = "sofaend_right"
/obj/structure/bed/chair/sofa/right/orange
sofa_material = "orange"
/obj/structure/bed/chair/sofa/orange/corner
icon_state = "sofacorner"
/obj/structure/bed/chair/sofa/corner/orange
sofa_material = "orange"
@@ -69,13 +69,13 @@
var/mob/living/L = user
//They're in it, and want to get out.
if(L.loc == src)
var/choice = tgui_alert(usr, "Do you want to exit \the [src]?","Un-Hide?",list("Exit","Stay"))
var/choice = tgui_alert(user, "Do you want to exit \the [src]?","Un-Hide?",list("Exit","Stay"))
if(choice == "Exit")
if(L == hider)
hider = null
L.forceMove(get_turf(src))
else if(!hider)
var/choice = tgui_alert(usr, "Do you want to hide in \the [src]?","Un-Hide?",list("Hide","Stay"))
var/choice = tgui_alert(user, "Do you want to hide in \the [src]?","Un-Hide?",list("Hide","Stay"))
if(choice == "Hide" && !hider) //Check again because PROMPT
L.forceMove(src)
hider = L
@@ -200,6 +200,7 @@
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
prob(1);/obj/item/clothing/glasses/sunglasses,
prob(1);/obj/item/clothing/glasses/sunglasses/bigshot,
prob(1);/obj/item/clothing/glasses/welding,
prob(1);/obj/item/clothing/gloves/yellow,
prob(1);/obj/item/clothing/head/bio_hood/general,
@@ -231,10 +232,11 @@
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
prob(4);/obj/item/seeds/ambrosiavulgarisseed,
prob(4);/obj/item/weapon/gun/energy/sizegun,
prob(4);/obj/item/weapon/gun/energy/sizegun/old,
prob(3);/obj/item/weapon/material/butterfly,
prob(3);/obj/item/weapon/material/butterfly/switchblade,
prob(3);/obj/item/clothing/gloves/knuckledusters,
prob(3);/obj/item/clothing/gloves/heavy_engineer,
prob(3);/obj/item/weapon/reagent_containers/syringe/drugs,
prob(2);/obj/item/weapon/implanter/sizecontrol,
prob(2);/obj/item/weapon/handcuffs/fuzzy,
@@ -255,7 +257,8 @@
prob(1);/obj/item/weapon/storage/box/survival/space,
prob(1);/obj/item/weapon/storage/secure/briefcase/trashmoney,
prob(1);/obj/item/device/survivalcapsule/popcabin,
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid,
prob(1);/obj/item/capture_crystal)
var/obj/item/I = new path()
return I
+1 -1
View File
@@ -297,7 +297,7 @@
visible_message("<span class='notice'>[user] dismantles \the [src].</span>")
var/obj/item/stack/material/mats = new glasstype(loc)
if(is_fulltile())
mats.amount = 4
mats.set_amount(4)
qdel(src)
else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized))
var/obj/item/stack/cable_coil/C = W