Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit408
This commit is contained in:
@@ -503,7 +503,7 @@
|
||||
var/mutable_appearance/armrest
|
||||
|
||||
/obj/structure/chair/sofa/Initialize()
|
||||
armrest = mutable_appearance(icon, "[icon_state]_armrest")
|
||||
armrest = mutable_appearance(icon, "[icon_state]_armrest", ABOVE_MOB_LAYER)
|
||||
return ..()
|
||||
|
||||
/obj/structure/chair/sofa/post_buckle_mob(mob/living/M)
|
||||
|
||||
@@ -342,25 +342,21 @@
|
||||
. = TRUE
|
||||
if(opened)
|
||||
if(istype(W, cutting_tool))
|
||||
var/welder = FALSE
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
if(!W.tool_start_check(user, amount=0))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You begin cutting \the [src] apart...</span>")
|
||||
if(W.use_tool(src, user, 40, volume=50))
|
||||
if(eigen_teleport)
|
||||
to_chat(user, "<span class='notice'>The unstable nature of \the [src] makes it impossible to cut!</span>")
|
||||
return
|
||||
if(!opened)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] slices apart \the [src].</span>",
|
||||
"<span class='notice'>You cut \the [src] apart with \the [W].</span>",
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
else // for example cardboard box is cut with wirecutters
|
||||
user.visible_message("<span class='notice'>[user] cut apart \the [src].</span>", \
|
||||
"<span class='notice'>You cut \the [src] apart with \the [W].</span>")
|
||||
to_chat(user, "<span class='notice'>You begin [welder ? "slicing" : "deconstructing"] \the [src] apart...</span>")
|
||||
welder = TRUE
|
||||
if(W.use_tool(src, user, 40, volume=50))
|
||||
if(eigen_teleport)
|
||||
to_chat(user, "<span class='notice'>The unstable nature of \the [src] makes it impossible to [welder ? "slice" : "deconstruct"]!</span>")
|
||||
return
|
||||
if(!opened)
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] [welder ? "slice" : "deconstruct"]s apart \the [src].</span>",
|
||||
"<span class='notice'>You [welder ? "slice" : "deconstruct"] \the [src] apart with \the [W].</span>",
|
||||
"<span class='italics'>You hear [welder ? "welding" : "rustling of screws and metal"].</span>")
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon_state = "cabinet"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
material_drop = /obj/item/stack/sheet/mineral/wood
|
||||
cutting_tool = /obj/item/screwdriver
|
||||
|
||||
/obj/structure/closet/acloset
|
||||
name = "strange closet"
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon_state = "cabinet"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
material_drop = /obj/item/stack/sheet/mineral/wood
|
||||
cutting_tool = /obj/item/screwdriver
|
||||
|
||||
/obj/structure/closet/secure_closet/bar/PopulateContents()
|
||||
..()
|
||||
|
||||
@@ -9,12 +9,19 @@
|
||||
if(registered_name)
|
||||
. += "<span class='notice'>The display reads, \"Owned by [registered_name]\".</span>"
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/check_access(obj/item/card/id/I)
|
||||
/obj/structure/closet/secure_closet/personal/check_access(obj/item/I)
|
||||
. = ..()
|
||||
if(!I || !istype(I))
|
||||
return
|
||||
if(registered_name == I.registered_name)
|
||||
if(istype(I,/obj/item/modular_computer/tablet))
|
||||
var/obj/item/modular_computer/tablet/ourTablet = I
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = ourTablet.all_components[MC_CARD]
|
||||
if(card_slot)
|
||||
return registered_name == card_slot.stored_card.registered_name || registered_name == card_slot.stored_card2.registered_name
|
||||
var/obj/item/card/id/ID = I.GetID()
|
||||
if(ID && registered_name == ID.registered_name)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/PopulateContents()
|
||||
..()
|
||||
@@ -37,11 +44,14 @@
|
||||
icon_state = "cabinet"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
material_drop = /obj/item/stack/sheet/mineral/wood
|
||||
cutting_tool = /obj/item/screwdriver
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/cabinet/PopulateContents()
|
||||
new /obj/item/storage/backpack/satchel/leather/withwallet( src )
|
||||
new /obj/item/instrument/piano_synth(src)
|
||||
new /obj/item/radio/headset( src )
|
||||
new /obj/item/clothing/head/colour(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params)
|
||||
var/obj/item/card/id/I = W.GetID()
|
||||
|
||||
@@ -161,12 +161,16 @@
|
||||
..()
|
||||
new /obj/item/clothing/accessory/armband/medblue(src)
|
||||
new /obj/item/encryptionkey/headset_med(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/detective
|
||||
name = "\improper detective's cabinet"
|
||||
req_access = list(ACCESS_FORENSICS_LOCKERS)
|
||||
icon_state = "cabinet"
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 70
|
||||
material_drop = /obj/item/stack/sheet/mineral/wood
|
||||
cutting_tool = /obj/item/screwdriver
|
||||
|
||||
/obj/structure/closet/secure_closet/detective/PopulateContents()
|
||||
..()
|
||||
new /obj/item/clothing/under/rank/det(src)
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
icon_state = "largebins"
|
||||
open_sound = 'sound/effects/bin_open.ogg'
|
||||
close_sound = 'sound/effects/bin_close.ogg'
|
||||
material_drop = /obj/item/stack/sheet/plastic
|
||||
material_drop_amount = 40
|
||||
anchored = TRUE
|
||||
horizontal = FALSE
|
||||
delivery_icon = null
|
||||
|
||||
@@ -151,6 +151,9 @@
|
||||
log_admin("[key_name(new_spawn)] possessed a golem shell enslaved to [key_name(owner)].")
|
||||
if(ishuman(new_spawn))
|
||||
var/mob/living/carbon/human/H = new_spawn
|
||||
if(has_owner)
|
||||
var/datum/species/golem/G = H.dna.species
|
||||
G.owner = owner
|
||||
H.set_cloned_appearance()
|
||||
if(!name)
|
||||
if(has_owner)
|
||||
@@ -321,8 +324,9 @@
|
||||
|
||||
/datum/outfit/hotelstaff
|
||||
name = "Hotel Staff"
|
||||
uniform = /obj/item/clothing/under/assistantformal
|
||||
uniform = /obj/item/clothing/under/telegram
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
head = /obj/item/clothing/head/hotel
|
||||
r_pocket = /obj/item/radio/off
|
||||
back = /obj/item/storage/backpack
|
||||
implants = list(/obj/item/implant/mindshield)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
//Loom, turns raw cotton and durathread into their respective fabrics.
|
||||
#define FABRIC_PER_SHEET 4
|
||||
|
||||
|
||||
///This is a loom. It's usually made out of wood and used to weave fabric like durathread or cotton into their respective cloth types.
|
||||
/obj/structure/loom
|
||||
name = "loom"
|
||||
desc = "A simple device used to weave cloth and other thread-based fabrics together into usable material."
|
||||
@@ -8,14 +10,35 @@
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/structure/loom/attackby(obj/item/stack/sheet/W, mob/user)
|
||||
if(W.is_fabric && W.amount > 1)
|
||||
user.show_message("<span class='notice'>You start weaving the [W.name] through the loom..</span>", 1)
|
||||
if(W.use_tool(src, user, W.pull_effort))
|
||||
new W.loom_result(drop_location())
|
||||
user.show_message("<span class='notice'>You weave the [W.name] into a workable fabric.</span>", 1)
|
||||
W.amount = (W.amount - 2)
|
||||
if(W.amount < 1)
|
||||
qdel(W)
|
||||
else
|
||||
user.show_message("<span class='notice'>You need a valid fabric and at least 2 of said fabric before using this.</span>", 1)
|
||||
/obj/structure/loom/attackby(obj/item/I, mob/user)
|
||||
if(weave(I, user))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/loom/wrench_act(mob/living/user, obj/item/I)
|
||||
..()
|
||||
default_unfasten_wrench(user, I, 5)
|
||||
return TRUE
|
||||
|
||||
///Handles the weaving.
|
||||
/obj/structure/loom/proc/weave(obj/item/stack/sheet/S, mob/user)
|
||||
if(!istype(S) || !S.is_fabric)
|
||||
return FALSE
|
||||
if(!anchored)
|
||||
user.show_message("<span class='notice'>The loom needs to be wrenched down.</span>", MSG_VISUAL)
|
||||
return FALSE
|
||||
if(S.amount < FABRIC_PER_SHEET)
|
||||
user.show_message("<span class='notice'>You need at least [FABRIC_PER_SHEET] units of fabric before using this.</span>", 1)
|
||||
return FALSE
|
||||
user.show_message("<span class='notice'>You start weaving \the [S.name] through the loom..</span>", MSG_VISUAL)
|
||||
if(S.use_tool(src, user, S.pull_effort))
|
||||
if(S.amount >= FABRIC_PER_SHEET)
|
||||
new S.loom_result(drop_location())
|
||||
S.use(FABRIC_PER_SHEET)
|
||||
user.show_message("<span class='notice'>You weave \the [S.name] into a workable fabric.</span>", MSG_VISUAL)
|
||||
return TRUE
|
||||
|
||||
/obj/structure/loom/unanchored
|
||||
anchored = FALSE
|
||||
|
||||
#undef FABRIC_PER_SHEET
|
||||
@@ -226,9 +226,13 @@
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
if(new_eye_color)
|
||||
H.eye_color = sanitize_hexcolor(new_eye_color)
|
||||
var/n_color = sanitize_hexcolor(new_eye_color)
|
||||
var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES)
|
||||
if(eyes)
|
||||
eyes.eye_color = n_color
|
||||
H.eye_color = n_color
|
||||
H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
|
||||
H.update_body()
|
||||
H.dna.species.handle_body()
|
||||
if(choice)
|
||||
curse(user)
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
|
||||
icon_state = "morgue4" // Cloneable
|
||||
if(mob_occupant.stat == DEAD && beeper)
|
||||
if(world.time > next_beep)
|
||||
playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 50, 0) //Clone them you blind fucks
|
||||
playsound(src, 'sound/machines/beeping_alarm.ogg', 50, 0) //Clone them you blind fucks
|
||||
next_beep = world.time + beep_cooldown
|
||||
break
|
||||
|
||||
|
||||
@@ -15,6 +15,15 @@
|
||||
var/flipped_build_type
|
||||
var/base_icon
|
||||
|
||||
/obj/structure/c_transit_tube/proc/can_wrench_in_loc(mob/user)
|
||||
var/turf/source_turf = get_turf(loc)
|
||||
var/existing_tubes = 0
|
||||
for(var/obj/structure/transit_tube/tube in source_turf)
|
||||
existing_tubes++
|
||||
if(existing_tubes >= 2)
|
||||
to_chat(user, "<span class='warning'>You cannot wrench any more transit tubes!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/c_transit_tube/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -32,9 +41,11 @@
|
||||
icon_state = "[base_icon][flipped]"
|
||||
|
||||
/obj/structure/c_transit_tube/wrench_act(mob/living/user, obj/item/I)
|
||||
if(!can_wrench_in_loc(user))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start attaching the [name]...</span>")
|
||||
add_fingerprint(user)
|
||||
if(I.use_tool(src, user, time_to_unwrench, volume=50))
|
||||
if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, .proc/can_wrench_in_loc, user)))
|
||||
to_chat(user, "<span class='notice'>You attach the [name].</span>")
|
||||
var/obj/structure/transit_tube/R = new build_type(loc, dir)
|
||||
transfer_fingerprints_to(R)
|
||||
|
||||
Reference in New Issue
Block a user