Merge branch 'master' into final_shuttle_touches_and_stuff

This commit is contained in:
alberyk
2022-01-14 21:04:38 -03:00
99 changed files with 915 additions and 579 deletions
+9 -7
View File
@@ -8,6 +8,7 @@
w_class = ITEMSIZE_SMALL
drop_sound = 'sound/items/drop/cloth.ogg'
pickup_sound = 'sound/items/pickup/cloth.ogg'
var/deploy_type = /obj/structure/closet/body_bag
/obj/item/bodybag/attack_self(mob/user)
deploy_bag(user, user.loc)
@@ -21,11 +22,15 @@
deploy_bag(user, target)
/obj/item/bodybag/proc/deploy_bag(mob/user, atom/location)
var/obj/structure/closet/body_bag/R = new /obj/structure/closet/body_bag(location)
var/obj/structure/closet/body_bag/R = new deploy_type(location)
R.add_fingerprint(user)
tweak_bag(R)
playsound(src, 'sound/items/drop/cloth.ogg', 30)
qdel(src)
/obj/item/bodybag/proc/tweak_bag(var/obj/structure/closet/body_bag/BB)
return
/obj/item/storage/box/bodybags
name = "body bags"
desc = "This box contains body bags."
@@ -156,15 +161,12 @@
icon = 'icons/obj/cryobag.dmi'
icon_state = "bodybag_folded"
origin_tech = list(TECH_BIO = 4)
deploy_type = /obj/structure/closet/body_bag/cryobag
var/stasis_power
/obj/item/bodybag/cryobag/attack_self(mob/user)
var/obj/structure/closet/body_bag/cryobag/R = new /obj/structure/closet/body_bag/cryobag(user.loc)
/obj/item/bodybag/cryobag/tweak_bag(var/obj/structure/closet/body_bag/cryobag/C)
if(stasis_power)
R.stasis_power = stasis_power
R.update_icon()
R.add_fingerprint(user)
qdel(src)
C.stasis_power = stasis_power
/obj/structure/closet/body_bag/cryobag
name = "stasis bag"
@@ -76,14 +76,23 @@
var/obj/structure/heavy_vehicle_frame/EF = A
if(istype(EF))
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
EF.set_colour(paint_colour)
return
var/obj/item/mech_component/MC = A
if(istype(MC))
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
MC.set_colour(paint_colour)
return
var/obj/structure/bed/B = A
if(istype(B))
playsound(get_turf(src), 'sound/effects/spray3.ogg', 30, 1, -6)
B.set_colour(paint_colour)
B.update_icon()
return
var/turf/simulated/floor/F = A
if(!istype(F))
to_chat(user, "<span class='warning'>\The [src] can only be used on station flooring.</span>")
@@ -41,6 +41,12 @@
var/last_flash = 0 //spam limiter
can_fold = FALSE
/obj/item/paper/business_card/update_icon()
. = ..()
if(worn_overlay)
cut_overlays()
add_overlay(overlay_image(icon, worn_overlay, flags=RESET_COLOR))
/obj/item/paper/business_card/attack_self(mob/living/user)
if(last_flash <= world.time - 20)
last_flash = world.time
@@ -1,74 +0,0 @@
/obj/structure/coatrack
name = "coat rack"
desc = "Rack that holds coats."
icon = 'icons/obj/coatrack.dmi'
icon_state = "coatrack0"
var/obj/item/clothing/suit/coat
var/obj/item/clothing/head/hat
var/list/allowed_coats = list(/obj/item/clothing/suit/storage/toggle/labcoat, /obj/item/clothing/suit/storage/toggle/det_trench,
/obj/item/clothing/suit/storage/toggle/forensics, /obj/item/clothing/suit/storage/toggle/trench,
/obj/item/clothing/suit/storage/det_jacket, /obj/item/clothing/accessory/poncho/tajarancloak)
var/list/allowed_hats = list(/obj/item/clothing/head/det, /obj/item/clothing/head/beret/security, /obj/item/clothing/head/softcap/security)
/obj/structure/coatrack/attack_hand(mob/user as mob)
if (!ishuman(user))
return
if(user.incapacitated())
return
if (!user.can_use_hand())
return
if(coat)
user.visible_message("[user] takes [coat] off \the [src].", SPAN_NOTICE("You take [coat] off the \the [src]."))
user.put_in_hands(coat)
coat = null
update_icon()
else if(hat)
user.visible_message("[user] takes [hat] off \the [src].", SPAN_NOTICE("You take [hat] off the \the [src]."))
user.put_in_hands(hat)
hat = null
update_icon()
/obj/structure/coatrack/attackby(obj/item/W as obj, mob/user as mob)
if (is_type_in_list(W, allowed_coats) && !coat)
user.visible_message("[user] hangs [W] on \the [src].", SPAN_NOTICE("You hang [W] on the \the [src]."))
coat = W
user.drop_from_inventory(coat, src)
update_icon()
else if (is_type_in_list(W, allowed_hats) && !hat)
user.visible_message("[user] hangs [W] on \the [src].", SPAN_NOTICE("You hang [W] on the \the [src]."))
hat = W
user.drop_from_inventory(hat, src)
update_icon()
else
to_chat(user, SPAN_NOTICE("You cannot hang [W] on [src]."))
return ..()
/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if (is_type_in_list(mover, allowed_coats) && !coat)
src.visible_message("[mover] lands on \the [src].")
coat = mover
coat.forceMove(src)
update_icon()
return 0
if (is_type_in_list(mover, allowed_hats) && !hat)
src.visible_message("[mover] lands on \the [src].")
hat = mover
hat.forceMove(src)
update_icon()
return 0
else
return 1
/obj/structure/coatrack/update_icon()
cut_overlays()
if (coat)
if(istype(coat, /obj/item/clothing/suit/storage/toggle))
var/obj/item/clothing/suit/storage/toggle/T = coat
T.icon_state = initial(T.icon_state)
T.opened = FALSE
add_overlay("coat_[coat.icon_state]")
if (hat)
if(istype(hat, /obj/item/clothing/head/softcap/security/idris) || istype(hat, /obj/item/clothing/head/softcap/security/corp))
add_overlay("hat_softcap_[hat.icon_state]")
else
add_overlay("hat_[hat.icon_state]")
+138
View File
@@ -0,0 +1,138 @@
/obj/structure/coatrack
name = "coat rack"
desc = "Rack that holds coats, or hats, if you're so inclined."
icon = 'icons/obj/coatrack.dmi'
icon_state = "coatrack"
layer = ABOVE_MOB_LAYER //Hide behind coat racks. Because funny.
var/obj/item/clothing/coat
var/obj/item/clothing/head/hat
var/list/custom_sprites = list(/obj/item/clothing/head/beret/security, /obj/item/clothing/accessory/poncho/tajarancloak) // Custom manual sprite override.
/obj/structure/coatrack/attack_hand(mob/user as mob)
if(use_check_and_message(user))
return
if(coat && hat)
var/response = ""
response = alert(user, "Do you remove the coat, or the hat?", "Coat Rack Selection", "Coat", "Hat", "Cancel")
if(response == "Coat")
remove_coat(user)
if(response == "Hat")
remove_hat(user)
if(coat)
remove_coat(user)
if(hat)
remove_hat(user)
add_fingerprint(user)
return
/obj/structure/coatrack/proc/remove_coat(mob/user as mob)
user.visible_message("[user] takes [coat] off \the [src].", SPAN_NOTICE("You take [coat] off the \the [src]."))
user.put_in_hands(coat)
coat = null
update_icon()
/obj/structure/coatrack/proc/remove_hat(mob/user as mob)
user.visible_message("[user] takes [hat] off \the [src].", SPAN_NOTICE("You take [hat] off the \the [src]."))
user.put_in_hands(hat)
hat = null
update_icon()
/obj/structure/coatrack/attackby(obj/item/W as obj, mob/user as mob)
if(use_check_and_message(user))
return
if(!coat && (istype(W, /obj/item/clothing/suit/storage/toggle) || istype(W, /obj/item/clothing/accessory/poncho)))
user.visible_message("[user] hangs [W] on \the [src].", SPAN_NOTICE("You hang [W] on the \the [src]."))
coat = W
user.drop_from_inventory(coat, src)
playsound(src, W.drop_sound, DROP_SOUND_VOLUME)
update_icon()
else if(!hat && istype(W, /obj/item/clothing/head) && !istype(W, /obj/item/clothing/head/helmet))
user.visible_message("[user] hangs [W] on \the [src].", SPAN_NOTICE("You hang [W] on the \the [src]."))
hat = W
user.drop_from_inventory(hat, src)
playsound(src, W.drop_sound, DROP_SOUND_VOLUME)
update_icon()
else if(istype(W, /obj/item/clothing))
to_chat(user, SPAN_WARNING("You can't hang that up."))
else
return ..()
/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(!coat && (istype(mover, /obj/item/clothing/suit/storage/toggle) || istype(mover, /obj/item/clothing/accessory/poncho)))
src.visible_message("[mover] lands on \the [src].")
coat = mover
coat.forceMove(src)
update_icon()
return 0
else if(!hat && istype(mover, /obj/item/clothing/head))
src.visible_message("[mover] lands on \the [src].")
hat = mover
hat.forceMove(src)
update_icon()
return 0
else
return 1
/obj/structure/coatrack/update_icon()
cut_overlays()
if(coat)
if(is_type_in_list(coat, custom_sprites))
add_overlay(coat.icon_state)
else if(istype(coat, /obj/item/clothing/suit/storage/toggle)) // Using onmob sprites, because they're more consistent than object sprites.
var/obj/item/clothing/suit/storage/toggle/T = coat
if(!T.opened)
T.opened = TRUE // Makes coats open when hung up. Cause you know, you can't really hang up a closed coat. Well you can, but...code reasons.
T.icon_state = "[T.icon_state]_open"
handle_coat_image(T)
else if(istype(coat, /obj/item/clothing/accessory/poncho)) // Pain.
var/obj/item/clothing/accessory/poncho/T = coat
handle_coat_image(T)
if(hat)
if(is_type_in_list(hat, custom_sprites))
add_overlay(hat.icon_state)
else if(istype(hat, /obj/item/clothing/head))
var/obj/item/clothing/head/H = hat
var/matrix/M = matrix()
var/image/hat_image
if(H.contained_sprite)
var/hat_icon_state = "[H.icon_state][WORN_HEAD]" // Needed to bypass contained sprite phoney baloney.
hat_image = image(H.icon, hat_icon_state, src.layer, EAST)
if(H.build_from_parts)
hat_image.add_overlay(overlay_image(H.icon, "[H.icon_state]_[H.worn_overlay]", flags=RESET_COLOR))
else
hat_image = image(INV_HEAD_DEF_ICON, H.icon_state, src.layer, EAST)
if(H.build_from_parts)
hat_image.add_overlay(overlay_image(icon, "[INV_HEAD_DEF_ICON]_[H.worn_overlay]", flags=RESET_COLOR))
M.Turn(90) // Flip the hat over and stick it on the coatrack.
M.Translate(-6, 6)
hat_image.transform = M
add_overlay(hat_image)
/obj/structure/coatrack/proc/handle_coat_image(var/obj/item/clothing/T)
var/icon/coat_outline = icon('icons/obj/coatrack.dmi', "outline")
var/matrix/M = matrix()
var/coat_icon_state = T.icon_state
var/coat_icon_file = INV_SUIT_DEF_ICON
if(T.contained_sprite)
coat_icon_state = "[T.icon_state][WORN_SUIT]" // Needed to bypass contained sprite phoney baloney.
coat_icon_file = T.icon
var/icon/coat_icon = new(coat_icon_file, coat_icon_state)
coat_icon.Blend(coat_outline, ICON_OVERLAY)
coat_icon.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) //Slice the coat in half.
var/image/coat_image = image(coat_icon)
if(T.color)
coat_image.color = T.color
if(T.build_from_parts)
var/icon/overlay_icon = new(coat_icon_file, "[coat_icon_state]_[T.worn_overlay]")
overlay_icon.Blend(coat_outline, ICON_OVERLAY)
overlay_icon.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) // Slice the overlay in half and slap it on the coat.
var/image/overlay_image = image(overlay_icon)
overlay_image.appearance_flags = RESET_COLOR
coat_image.add_overlay(overlay_image)
M.Translate(-1, 5) // Stick it on the coat rack.
coat_image.transform = M
add_overlay(coat_image)
@@ -5,7 +5,7 @@
/mob/statue_mob/send_emote()
to_chat(src, "You are unable to move while trapped as a statue.")
/mob/statue_mob/say()
/mob/statue_mob/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/ghost_hearing = GHOSTS_ALL_HEAR, var/whisper = FALSE)
to_chat(src, "You are unable to speak while trapped as a statue.")
/obj/structure/closet/statue
@@ -192,4 +192,4 @@
dump_contents()
visible_message("<span class='warning'>\The [src] shatters!</span>")
qdel(src)
qdel(src)
@@ -120,7 +120,7 @@
/obj/structure/closet/wardrobe/xenos/fill()
..()
new /obj/item/clothing/suit/unathi/mantle(src)
new /obj/item/clothing/accessory/poncho/unathimantle(src)
new /obj/item/clothing/suit/unathi/robe/beige(src)
new /obj/item/clothing/shoes/footwraps(src)
new /obj/item/clothing/shoes/footwraps(src)
@@ -25,6 +25,8 @@
var/material_alteration = MATERIAL_ALTERATION_ALL
var/buckling_sound = 'sound/effects/buckle.ogg'
var/painted_colour // Used for paint gun and preset colours. I know this name sucks.
var/can_dismantle = TRUE
var/can_pad = TRUE
@@ -41,7 +43,7 @@
. = ..()
LAZYADD(can_buckle, /mob/living)
/obj/structure/bed/New(newloc, new_material = MATERIAL_STEEL, new_padding_material)
/obj/structure/bed/New(newloc, new_material = MATERIAL_STEEL, new_padding_material, new_painted_colour)
..(newloc)
if(can_buckle)
desc_info = "Click and drag yourself (or anyone) to this to buckle in. Click on this with an empty hand to undo the buckles.<br>\
@@ -55,6 +57,8 @@
return
if(new_padding_material)
padding_material = SSmaterials.get_material_by_name(new_padding_material)
if(new_painted_colour)
painted_colour = new_painted_colour
update_icon()
/obj/structure/bed/buckle(mob/living/M)
@@ -80,10 +84,13 @@
// Padding overlay.
if(padding_material)
var/padding_cache_key = "[base_icon]-[padding_material.name]-padding"
if(!furniture_cache[padding_cache_key])
if(!furniture_cache[padding_cache_key] || painted_colour) //avoid having to regenerate the image everytime unless painted.
var/image/I = image(icon, "[base_icon]_padding")
if(material_alteration & MATERIAL_ALTERATION_COLOR)
I.color = padding_material.icon_colour
if(painted_colour)
I.color = painted_colour
else
I.color = padding_material.icon_colour
furniture_cache[padding_cache_key] = I
add_overlay(furniture_cache[padding_cache_key])
@@ -93,8 +100,13 @@
if(material_alteration & MATERIAL_ALTERATION_DESC)
desc = initial(desc)
desc += padding_material ? " It's made of [material.use_name] and covered with [padding_material.use_name]." : " It's made of [material.use_name]."
desc += padding_material ? " It's made of [material.use_name] and covered with [padding_material.use_name][painted_colour ? ", colored in <font color='[painted_colour]'>[painted_colour]</font>" : ""]." : " It's made of [material.use_name]." //Yeah plain hex codes suck but at least it's a little funny and less of a headache for players.
/obj/structure/bed/proc/set_colour(new_colour)
if(padding_material)
var/last_colour = painted_colour
painted_colour = new_colour
return painted_colour != last_colour
/obj/structure/bed/forceMove(atom/dest)
. = ..()
@@ -162,6 +174,7 @@
return
to_chat(user, "You remove the padding from \the [src].")
playsound(src, 'sound/items/wirecutter.ogg', 100, 1)
painted_colour = null
remove_padding()
else if (W.isscrewdriver())
@@ -197,6 +210,9 @@
W.pixel_x = 10 //make sure they reach the pillow
W.pixel_y = -6
else if(istype(W, /obj/item/device/floor_painter))
return
else if(!istype(W, /obj/item/bedsheet))
..()
@@ -42,7 +42,10 @@
if(!furniture_cache[padding_cache_key])
var/image/I = image(icon, "[base_icon]_padding_over")
if(material_alteration & MATERIAL_ALTERATION_COLOR)
I.color = padding_material.icon_colour
if(painted_colour)
I.color = painted_colour
else if(padding_material.icon_colour)
I.color = padding_material.icon_colour
I.layer = FLY_LAYER
furniture_cache[padding_cache_key] = I
add_overlay(furniture_cache[padding_cache_key])
@@ -62,7 +65,10 @@
var/image/I = image(icon, "[base_icon]_padding_armrest")
I.layer = FLY_LAYER
if(material_alteration & MATERIAL_ALTERATION_COLOR)
I.color = padding_material.icon_colour
if(painted_colour)
I.color = painted_colour
else if(padding_material.icon_colour)
I.color = padding_material.icon_colour
furniture_cache[cache_key] = I
add_overlay(furniture_cache[cache_key])
@@ -84,33 +90,42 @@
if(mover.density && isliving(mover) && (reverse_dir[dir] & angle2dir(Get_Angle(src, mover))))
return FALSE
return ..()
/obj/structure/bed/stool/chair/padded/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/padded/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/chair/padded/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/chair/padded/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/padded/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/chair/padded/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/chair/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/chair/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BEIGE)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/padded/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/padded/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/padded/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa
name = "sofa"
@@ -121,29 +136,38 @@
/obj/structure/bed/stool/chair/sofa/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/chair/sofa/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/chair/sofa/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/chair/sofa/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/chair/sofa/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/chair/sofa/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/left
icon_state = "sofaend_left_preview"
@@ -152,29 +176,38 @@
/obj/structure/bed/stool/chair/sofa/left/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/left/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/left/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/left/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/left/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/chair/sofa/left/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/left/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/chair/sofa/left/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/left/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/chair/sofa/left/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/chair/sofa/left/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/chair/sofa/left/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/left/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/left/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/left/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/left/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/left/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/right
icon_state = "sofaend_right_preview"
@@ -183,29 +216,39 @@
/obj/structure/bed/stool/chair/sofa/right/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/right/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/right/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/right/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/right/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/chair/sofa/right/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/right/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/chair/sofa/right/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/right/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/chair/sofa/right/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/chair/sofa/right/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/chair/sofa/right/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/right/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/right/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/right/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/right/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/right/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/sofa/corner
icon_state = "sofacorner_preview"
@@ -214,29 +257,38 @@
/obj/structure/bed/stool/chair/sofa/corner/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/chair/sofa/corner/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/chair/sofa/corner/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/chair/sofa/corner/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/chair/sofa/corner/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/chair/sofa/corner/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/chair/sofa/corner/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/chair/sofa/corner/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/chair/sofa/corner/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/chair/sofa/corner/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/chair/sofa/corner/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/chair/sofa/corner/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/chair/sofa/corner/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/chair/sofa/corner/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/chair/sofa/corner/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/chair/sofa/corner/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/chair/sofa/corner/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/chair/office // For the love of god, don't use this.
@@ -326,6 +378,7 @@
/obj/structure/bed/stool/chair/unmovable
can_dismantle = FALSE
held_item = null
/obj/structure/bed/stool/chair/shuttle
name = "shuttle chair"
@@ -335,6 +388,7 @@
material_alteration = MATERIAL_ALTERATION_NAME || MATERIAL_ALTERATION_DESC
can_dismantle = FALSE
anchored = TRUE
held_item = null
/obj/structure/bed/stool/chair/shuttle/post_buckle()
if(buckled)
@@ -17,7 +17,7 @@
/obj/structure/bed/stool/MouseDrop(over_object, src_location, over_location)
. = ..()
if(over_object == usr && Adjacent(usr))
if(!held_item || use_check_and_message(usr) || buckled || !can_dismantle || (anchored && padding_material))
if(!held_item || use_check_and_message(usr) || buckled || (anchored && padding_material)) // Make sure held_item = null if you don't want it to get picked up.
return
usr.visible_message(SPAN_NOTICE("[usr] [withdraw_verb]s \the [src.name]."), SPAN_NOTICE("You [withdraw_verb] \the [src.name]."))
var/obj/item/material/stool/S = new held_item(src.loc, material.name, padding_material ? padding_material.name : null) // Handles all the material code so you don't have to.
@@ -28,12 +28,15 @@
S.name = name // Get the name and desc of the stool, rather. We already went through all the trouble in New in bed.dm
if(material_alteration & MATERIAL_ALTERATION_DESC)
S.desc = desc
if(painted_colour)
S.painted_colour = painted_colour
if(blood_DNA)
S.blood_DNA |= blood_DNA // Transfer blood, if any.
S.add_blood()
S.dir = dir
S.add_fingerprint(usr)
usr.put_in_hands(S)
S.update_icon()
qdel(src)
/obj/structure/bed/stool/wood/New(var/newloc)
@@ -45,29 +48,38 @@
/obj/structure/bed/stool/padded/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/padded/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/padded/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/padded/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/padded/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/padded/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BEIGE)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/padded/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/padded/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/padded/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/wood/New(var/newloc)
..(newloc, MATERIAL_WOOD)
@@ -86,32 +98,45 @@
/obj/structure/bed/stool/bar/padded
icon_state = "bar_stool_padded_preview"
// ROYGBIV colors for convenience. Mappers can use custom hex codes or defines if they want special colors.
/obj/structure/bed/stool/bar/padded/brown/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
/obj/structure/bed/stool/bar/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_DARK_GRAY)
/obj/structure/bed/stool/bar/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BEIGE)
/obj/structure/bed/stool/bar/padded/red/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CARPET)
/obj/structure/bed/stool/bar/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_TEAL)
/obj/structure/bed/stool/bar/padded/orange/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_ORANGE)
/obj/structure/bed/stool/bar/padded/black/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLACK)
/obj/structure/bed/stool/bar/padded/yellow/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_YELLOW)
/obj/structure/bed/stool/bar/padded/green/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_GREEN)
/obj/structure/bed/stool/bar/padded/purp/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_PURPLE)
/obj/structure/bed/stool/bar/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BLUE)
/obj/structure/bed/stool/bar/padded/beige/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_BEIGE)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_GREEN)
/obj/structure/bed/stool/bar/padded/lime/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH_LIME)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_LIME)
/obj/structure/bed/stool/bar/padded/blue/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_BLUE)
/obj/structure/bed/stool/bar/padded/teal/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_TEAL)
/obj/structure/bed/stool/bar/padded/purple/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_PURPLE)
/obj/structure/bed/stool/bar/padded/violet/New(var/newloc)
..(newloc, MATERIAL_STEEL, MATERIAL_CLOTH, COLOR_VIOLET)
/obj/structure/bed/stool/bar/wood/New(var/newloc)
..(newloc, MATERIAL_WOOD)
@@ -152,6 +177,7 @@
var/material/padding_material
var/obj/structure/bed/stool/origin_type = /obj/structure/bed/stool
var/deploy_verb = "right"
var/painted_colour
/obj/item/material/stool/New(var/newloc, var/new_material, var/new_padding_material)
..(newloc, new_material) // new_material handled in material_weapons.dm
@@ -231,7 +257,10 @@
padding_overlay.appearance_flags = RESET_COLOR
build_from_parts = TRUE
worn_overlay = "padding"
if(padding_material.icon_colour)
if(painted_colour)
padding_overlay.color = painted_colour
worn_overlay_color = painted_colour
else if(padding_material.icon_colour)
padding_overlay.color = padding_material.icon_colour
worn_overlay_color = padding_material.icon_colour
add_overlay(padding_overlay)
@@ -6,6 +6,7 @@
var/portable_type
can_dismantle = FALSE
var/remote_network // Which network does this remote control belong to?
held_item = null
/obj/structure/bed/stool/chair/remote/Initialize()
. = ..()