Merge branch 'master' into 3/4th-closet

This commit is contained in:
S34NW
2021-11-01 10:14:41 +00:00
283 changed files with 11555 additions and 16997 deletions
@@ -74,7 +74,7 @@
if(istype(W, /obj/item/pen))
var/decalselection = input("Please select a decal") as null|anything in list("Atmospherics", "Bartender", "Barber", "Blueshield", "Brig Physician", "Captain",
"Cargo", "Chief Engineer", "Chaplain", "Chef", "Chemist", "Civilian", "Clown", "CMO", "Coroner", "Detective", "Engineering", "Genetics", "HOP",
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Mechanic", "Medical", "Mime", "Mining", "NT Representative", "Paramedic", "Pod Pilot",
"HOS", "Hydroponics", "Internal Affairs Agent", "Janitor", "Magistrate", "Medical", "Mime", "Mining", "NT Representative", "Paramedic",
"Prisoner", "Research Director", "Security", "Syndicate", "Therapist", "Virology", "Warden", "Xenobiology")
if(!decalselection)
return
@@ -2,7 +2,7 @@
/obj/structure/closet/fireaxecabinet
name = "fire axe cabinet"
desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if."
var/obj/item/twohanded/fireaxe/fireaxe = new/obj/item/twohanded/fireaxe
var/obj/item/twohanded/fireaxe/fireaxe
icon_state = "fireaxe1000"
icon_closed = "fireaxe1000"
icon_opened = "fireaxe1100"
@@ -16,6 +16,10 @@
locked = TRUE
var/smashed = FALSE
/obj/structure/closet/fireaxecabinet/populate_contents()
fireaxe = new/obj/item/twohanded/fireaxe(src)
update_icon() // So its initial icon doesn't show it without the fireaxe
/obj/structure/closet/fireaxecabinet/examine(mob/user)
. = ..()
. += "<span class='notice'>Use a multitool to lock/unlock it.</span>"
@@ -113,8 +113,6 @@
open_door_sprite = "generic_door"
/obj/structure/closet/lawcloset/populate_contents()
new /obj/item/storage/box/tapes(src)
new /obj/item/book/manual/faxes(src)
new /obj/item/clothing/under/lawyer/female(src)
new /obj/item/clothing/under/lawyer/black(src)
new /obj/item/clothing/under/lawyer/red(src)
@@ -124,10 +122,6 @@
new /obj/item/clothing/suit/storage/lawyer/purpjacket(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/accessory/lawyers_badge(src)
new /obj/item/clothing/accessory/lawyers_badge(src)
//Paramedic
@@ -37,6 +37,7 @@
new /obj/item/organ/internal/eyes/cybernetic/meson(src)
new /obj/item/clothing/accessory/medal/engineering(src)
new /obj/item/holosign_creator/atmos(src)
new /obj/item/rcd/preloaded(src)
/obj/structure/closet/secure_closet/engineering_electrical
@@ -121,6 +121,7 @@
new /obj/item/clothing/suit/straight_jacket(src)
new /obj/item/reagent_containers/syringe(src)
new /obj/item/reagent_containers/glass/bottle/ether(src)
new /obj/item/clipboard(src)
new /obj/item/storage/fancy/cigarettes/cigpack_med(src)
new /obj/item/storage/fancy/cigarettes/cigpack_med(src)
new /obj/item/storage/fancy/cigarettes/cigpack_med(src)
@@ -170,6 +171,8 @@
new /obj/item/door_remote/chief_medical_officer(src)
new /obj/item/reagent_containers/food/drinks/mug/cmo(src)
new /obj/item/clothing/accessory/medal/medical(src)
new /obj/item/storage/briefcase(src)
new /obj/item/clothing/mask/gas(src)
/obj/structure/closet/secure_closet/animal
@@ -110,6 +110,7 @@
new /obj/item/reagent_containers/food/drinks/mug/hos(src)
new /obj/item/organ/internal/cyberimp/eyes/hud/security(src)
new /obj/item/clothing/accessory/medal/security(src)
new /obj/item/reagent_containers/food/drinks/flask/barflask(src)
/obj/structure/closet/secure_closet/warden
name = "warden's locker"
@@ -367,8 +368,33 @@
new /obj/item/clothing/under/rank/centcom/magistrate(src)
new /obj/item/clothing/suit/judgerobe(src)
new /obj/item/clothing/head/powdered_wig(src)
new /obj/item/clothing/head/justice_wig(src)
new /obj/item/radio/headset/heads/magistrate(src)
new /obj/item/gavelblock(src)
new /obj/item/gavelhammer(src)
new /obj/item/clothing/head/justice_wig(src)
new /obj/item/clothing/accessory/medal/legal(src)
new /obj/item/clothing/accessory/lawyers_badge(src)
/obj/structure/closet/secure_closet/iaa
name = "internal affairs locker"
req_access = list(ACCESS_LAWYER)
icon_state = "iaasecure1"
icon_closed = "iaasecure"
icon_locked = "iaasecure1"
icon_opened = "iaasecureopen"
icon_broken = "iaasecurebroken"
icon_off = "iaasecureoff"
/obj/structure/closet/secure_closet/iaa/populate_contents()
new /obj/item/book/manual/faxes(src)
new /obj/item/storage/box/tapes(src)
new /obj/item/storage/secure/briefcase(src)
new /obj/item/storage/briefcase(src)
new /obj/item/storage/briefcase(src)
new /obj/item/radio/headset/headset_iaa(src)
new /obj/item/clothing/under/rank/internalaffairs(src)
new /obj/item/clothing/suit/storage/internalaffairs(src)
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/glasses/sunglasses/big(src)
new /obj/item/clothing/accessory/lawyers_badge(src)
new /obj/item/clothing/accessory/lawyers_badge(src)
+2 -2
View File
@@ -26,9 +26,9 @@
if(NO_EXTINGUISHER)
return
if(MINI_EXTINGUISHER)
has_extinguisher = new/obj/item/extinguisher/mini
has_extinguisher = new /obj/item/extinguisher/mini(src)
else
has_extinguisher = new/obj/item/extinguisher
has_extinguisher = new /obj/item/extinguisher(src)
/obj/structure/extinguisher_cabinet/examine(mob/user)
. = ..()
+3 -2
View File
@@ -94,9 +94,9 @@
if(density)
smooth = SMOOTH_FALSE
clear_smooth_overlays()
icon_state = "fwall_opening"
flick("fwall_opening", src)
else
icon_state = "fwall_closing"
flick("fwall_closing", src)
/obj/structure/falsewall/update_icon()
if(density)
@@ -297,6 +297,7 @@
/obj/structure/falsewall/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating."
icon = 'icons/turf/walls/sandstone_wall.dmi'
icon_state = "sandstone"
mineral = /obj/item/stack/sheet/mineral/sandstone
walltype = /turf/simulated/wall/mineral/sandstone
-180
View File
@@ -1,180 +0,0 @@
/obj/structure/foodcart
name = "food cart"
desc = "A cart for transporting food and drinks."
icon = 'icons/obj/foodcart.dmi'
icon_state = "cart"
face_while_pulling = FALSE
anchored = 0
density = 1
//Food slots
var/list/food_slots[6]
//var/obj/item/reagent_containers/food/snacks/food1 = null
//var/obj/item/reagent_containers/food/snacks/food2 = null
//var/obj/item/reagent_containers/food/snacks/food3 = null
//var/obj/item/reagent_containers/food/snacks/food4 = null
//var/obj/item/reagent_containers/food/snacks/food5 = null
//var/obj/item/reagent_containers/food/snacks/food6 = null
//Drink slots
var/list/drink_slots[6]
//var/obj/item/reagent_containers/food/drinks/drink1 = null
//var/obj/item/reagent_containers/food/drinks/drink2 = null
//var/obj/item/reagent_containers/food/drinks/drink3 = null
//var/obj/item/reagent_containers/food/drinks/drink4 = null
//var/obj/item/reagent_containers/food/drinks/drink5 = null
//var/obj/item/reagent_containers/food/drinks/drink6 = null
/obj/structure/foodcart/proc/put_in_cart(obj/item/I, mob/user)
user.drop_item()
I.loc = src
updateUsrDialog()
to_chat(user, "<span class='notice'>You put [I] into [src].</span>")
return
/obj/structure/foodcart/attackby(obj/item/I, mob/user, params)
var/fail_msg = "<span class='notice'>There are no open spaces for this in [src].</span>"
if(!I.is_robot_module())
if(istype(I, /obj/item/reagent_containers/food/snacks))
var/success = 0
for(var/s=1,s<=6,s++)
if(!food_slots[s])
put_in_cart(I, user)
food_slots[s]=I
update_icon()
success = 1
break
if(!success)
to_chat(user, fail_msg)
else if(istype(I, /obj/item/reagent_containers/food/drinks))
var/success = 0
for(var/s=1,s<=6,s++)
if(!drink_slots[s])
put_in_cart(I, user)
drink_slots[s]=I
update_icon()
success = 1
break
if(!success)
to_chat(user, fail_msg)
else if(istype(I, /obj/item/wrench))
if(!anchored && !isinspace())
playsound(src.loc, I.usesound, 50, 1)
user.visible_message( \
"[user] tightens \the [src]'s casters.", \
"<span class='notice'> You have tightened \the [src]'s casters.</span>", \
"You hear ratchet.")
anchored = 1
else if(anchored)
playsound(src.loc, I.usesound, 50, 1)
user.visible_message( \
"[user] loosens \the [src]'s casters.", \
"<span class='notice'> You have loosened \the [src]'s casters.</span>", \
"You hear ratchet.")
anchored = 0
else
to_chat(usr, "<span class='warning'>You cannot interface your modules [src]!</span>")
/obj/structure/foodcart/attack_hand(mob/user)
user.set_machine(src)
var/dat
if(food_slots[1])
dat += "<a href='?src=[UID()];f1=1'>[food_slots[1]]</a><br>"
if(food_slots[2])
dat += "<a href='?src=[UID()];f2=1'>[food_slots[2]]</a><br>"
if(food_slots[3])
dat += "<a href='?src=[UID()];f3=1'>[food_slots[3]]</a><br>"
if(food_slots[4])
dat += "<a href='?src=[UID()];f4=1'>[food_slots[4]]</a><br>"
if(food_slots[5])
dat += "<a href='?src=[UID()];f5=1'>[food_slots[5]]</a><br>"
if(food_slots[6])
dat += "<a href='?src=[UID()];f6=1'>[food_slots[6]]</a><br>"
if(drink_slots[1])
dat += "<a href='?src=[UID()];d1=1'>[drink_slots[1]]</a><br>"
if(drink_slots[2])
dat += "<a href='?src=[UID()];d2=1'>[drink_slots[2]]</a><br>"
if(drink_slots[3])
dat += "<a href='?src=[UID()];d3=1'>[drink_slots[3]]</a><br>"
if(drink_slots[4])
dat += "<a href='?src=[UID()];d4=1'>[drink_slots[4]]</a><br>"
if(drink_slots[5])
dat += "<a href='?src=[UID()];d5=1'>[drink_slots[5]]</a><br>"
if(drink_slots[6])
dat += "<a href='?src=[UID()];d6=1'>[drink_slots[6]]</a><br>"
var/datum/browser/popup = new(user, "foodcart", name, 240, 160)
popup.set_content(dat)
popup.open()
/obj/structure/foodcart/Topic(href, href_list)
if(!in_range(src, usr))
return
if(!isliving(usr))
return
var/mob/living/user = usr
if(href_list["f1"])
if(food_slots[1])
user.put_in_hands(food_slots[1])
to_chat(user, "<span class='notice'>You take [food_slots[1]] from [src].</span>")
food_slots[1] = null
if(href_list["f2"])
if(food_slots[2])
user.put_in_hands(food_slots[2])
to_chat(user, "<span class='notice'>You take [food_slots[2]] from [src].</span>")
food_slots[2] = null
if(href_list["f3"])
if(food_slots[3])
user.put_in_hands(food_slots[3])
to_chat(user, "<span class='notice'>You take [food_slots[3]] from [src].</span>")
food_slots[3] = null
if(href_list["f4"])
if(food_slots[4])
user.put_in_hands(food_slots[4])
to_chat(user, "<span class='notice'>You take [food_slots[4]] from [src].</span>")
food_slots[4] = null
if(href_list["f5"])
if(food_slots[5])
user.put_in_hands(food_slots[5])
to_chat(user, "<span class='notice'>You take [food_slots[5]] from [src].</span>")
food_slots[5] = null
if(href_list["f6"])
if(food_slots[6])
user.put_in_hands(food_slots[6])
to_chat(user, "<span class='notice'>You take [food_slots[6]] from [src].</span>")
food_slots[6] = null
if(href_list["d1"])
if(drink_slots[1])
user.put_in_hands(drink_slots[1])
to_chat(user, "<span class='notice'>You take [drink_slots[1]] from [src].</span>")
drink_slots[1] = null
if(href_list["d2"])
if(drink_slots[2])
user.put_in_hands(drink_slots[2])
to_chat(user, "<span class='notice'>You take [drink_slots[2]] from [src].</span>")
drink_slots[2] = null
if(href_list["d3"])
if(drink_slots[3])
user.put_in_hands(drink_slots[3])
to_chat(user, "<span class='notice'>You take [drink_slots[3]] from [src].</span>")
drink_slots[3] = null
if(href_list["d4"])
if(drink_slots[4])
user.put_in_hands(drink_slots[4])
to_chat(user, "<span class='notice'>You take [drink_slots[4]] from [src].</span>")
drink_slots[4] = null
if(href_list["d5"])
if(drink_slots[5])
user.put_in_hands(drink_slots[5])
to_chat(user, "<span class='notice'>You take [drink_slots[5]] from [src].</span>")
drink_slots[5] = null
if(href_list["d6"])
if(drink_slots[6])
user.put_in_hands(drink_slots[6])
to_chat(user, "<span class='notice'>You take [drink_slots[6]] from [src].</span>")
drink_slots[6] = null
update_icon() //Not really needed without overlays, but keeping just in case
updateUsrDialog()
/obj/structure/foodcart/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
new /obj/item/stack/sheet/metal(loc, 4)
qdel(src)
+2
View File
@@ -175,6 +175,8 @@ GLOBAL_LIST_EMPTY(safes)
/obj/structure/safe/attackby(obj/item/I, mob/user, params)
if(open)
if(I.flags && ABSTRACT)
return
if(broken && istype(I, /obj/item/safe_internals) && do_after(user, 2 SECONDS, target = src))
to_chat(user, "<span class='notice'>You replace the broken mechanism.</span>")
qdel(I)
@@ -76,7 +76,7 @@
if(!has_buckled_mobs())
return
var/mob/living/buckled_mob = buckled_mobs[1]
if(istype(A, /obj/machinery/door))
if(istype(A, /obj/machinery/door) || istype(A, /obj/machinery/gateway))
A.Bumped(buckled_mob)
if(propelled)
+3 -1
View File
@@ -508,6 +508,7 @@
/obj/structure/window/reinforced/polarized
name = "electrochromic window"
desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it."
glass_amount = 2
var/id
/obj/machinery/button/windowtint
@@ -674,8 +675,9 @@
/obj/structure/window/full/reinforced/polarized
name = "electrochromic window"
desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it."
glass_amount = 4
var/id
/obj/structure/window/full/reinforced/tinted
name = "tinted window"
desc = "It looks rather strong and opaque. Might take a few good hits to shatter it."