mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-25 05:57:21 +01:00
Merge branch 'master' into upstream-merge-8222
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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. You’re a weird spooky space monster, so the bar is probably not where you’d want to go if you intend to survive. Of course, you’re 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,4 +1,5 @@
|
||||
/obj/structure/girder
|
||||
name = "girder"
|
||||
icon_state = "girder"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user