mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-01-29 10:21:52 +00:00
Added a verb to beds, bedsheets and sub-objects to allow them to be flipped to face the opposite direction (if they have directional sprites available). This applies to chairs too, because why not. If it's possible for me to just not display the verb for non-flippable subtypes, let me know how! Also swaps out some beds on the Stellar Delight to face the other direction so that their pillows are against the wall.
267 lines
5.7 KiB
Plaintext
267 lines
5.7 KiB
Plaintext
/*
|
|
CONTAINS:
|
|
BEDSHEETS
|
|
LINEN BINS
|
|
*/
|
|
|
|
/obj/item/bedsheet
|
|
name = "bedsheet"
|
|
desc = "A surprisingly soft linen bedsheet."
|
|
icon = 'icons/obj/items.dmi'
|
|
icon_state = "sheet"
|
|
slot_flags = SLOT_BACK
|
|
plane = MOB_PLANE
|
|
layer = BELOW_MOB_LAYER
|
|
throwforce = 1
|
|
throw_speed = 1
|
|
throw_range = 2
|
|
w_class = ITEMSIZE_SMALL
|
|
drop_sound = 'sound/items/drop/clothing.ogg'
|
|
pickup_sound = 'sound/items/pickup/clothing.ogg'
|
|
|
|
/obj/item/bedsheet/attack_self(mob/user as mob)
|
|
user.drop_item()
|
|
if(layer == initial(layer))
|
|
layer = ABOVE_MOB_LAYER
|
|
else
|
|
reset_plane_and_layer()
|
|
add_fingerprint(user)
|
|
return
|
|
|
|
/obj/item/bedsheet/attackby(obj/item/I, mob/user)
|
|
if(is_sharp(I))
|
|
user.visible_message(span_infoplain(span_bold("\The [user]") + " begins cutting up [src] with [I]."), span_notice("You begin cutting up [src] with [I]."))
|
|
if(do_after(user, 50))
|
|
to_chat(user, span_notice("You cut [src] into pieces!"))
|
|
for(var/i in 1 to rand(2,5))
|
|
new /obj/item/reagent_containers/glass/rag(drop_location())
|
|
qdel(src)
|
|
return
|
|
..()
|
|
|
|
/obj/item/bedsheet/verb/turn_around()
|
|
set name = "Turn Around"
|
|
set category = "Object"
|
|
set src in oview(1)
|
|
|
|
if(!usr || !isturf(usr.loc))
|
|
return
|
|
if(usr.stat || usr.restrained())
|
|
return
|
|
if(ismouse(usr) || (isobserver(usr) && !CONFIG_GET(flag/ghost_interaction)))
|
|
return
|
|
|
|
if(dir >= 2)
|
|
src.set_dir(1)
|
|
else
|
|
src.set_dir(2)
|
|
|
|
/obj/item/bedsheet/blue
|
|
icon_state = "sheetblue"
|
|
|
|
/obj/item/bedsheet/green
|
|
icon_state = "sheetgreen"
|
|
|
|
/obj/item/bedsheet/orange
|
|
icon_state = "sheetorange"
|
|
|
|
/obj/item/bedsheet/purple
|
|
icon_state = "sheetpurple"
|
|
|
|
/obj/item/bedsheet/rainbow
|
|
icon_state = "sheetrainbow"
|
|
|
|
/obj/item/bedsheet/red
|
|
icon_state = "sheetred"
|
|
|
|
/obj/item/bedsheet/yellow
|
|
icon_state = "sheetyellow"
|
|
|
|
/obj/item/bedsheet/mime
|
|
icon_state = "sheetmime"
|
|
|
|
/obj/item/bedsheet/clown
|
|
icon_state = "sheetclown"
|
|
item_state = "sheetrainbow"
|
|
|
|
/obj/item/bedsheet/captain
|
|
icon_state = "sheetcaptain"
|
|
|
|
/obj/item/bedsheet/rd
|
|
icon_state = "sheetrd"
|
|
|
|
/obj/item/bedsheet/medical
|
|
icon_state = "sheetmedical"
|
|
|
|
/obj/item/bedsheet/hos
|
|
icon_state = "sheethos"
|
|
|
|
/obj/item/bedsheet/hop
|
|
icon_state = "sheethop"
|
|
|
|
/obj/item/bedsheet/ce
|
|
icon_state = "sheetce"
|
|
|
|
/obj/item/bedsheet/brown
|
|
icon_state = "sheetbrown"
|
|
|
|
/obj/item/bedsheet/ian
|
|
icon_state = "sheetian"
|
|
|
|
/obj/item/bedsheet/double
|
|
icon_state = "doublesheet"
|
|
item_state = "sheet"
|
|
|
|
/obj/item/bedsheet/bluedouble
|
|
icon_state = "doublesheetblue"
|
|
item_state = "sheetblue"
|
|
|
|
/obj/item/bedsheet/greendouble
|
|
icon_state = "doublesheetgreen"
|
|
item_state = "sheetgreen"
|
|
|
|
/obj/item/bedsheet/orangedouble
|
|
icon_state = "doublesheetorange"
|
|
item_state = "sheetorange"
|
|
|
|
/obj/item/bedsheet/purpledouble
|
|
icon_state = "doublesheetpurple"
|
|
item_state = "sheetpurple"
|
|
|
|
/obj/item/bedsheet/rainbowdouble //all the way across the sky.
|
|
icon_state = "doublesheetrainbow"
|
|
item_state = "sheetrainbow"
|
|
|
|
/obj/item/bedsheet/reddouble
|
|
icon_state = "doublesheetred"
|
|
item_state = "sheetred"
|
|
|
|
/obj/item/bedsheet/yellowdouble
|
|
icon_state = "doublesheetyellow"
|
|
item_state = "sheetyellow"
|
|
|
|
/obj/item/bedsheet/mimedouble
|
|
icon_state = "doublesheetmime"
|
|
item_state = "sheetmime"
|
|
|
|
/obj/item/bedsheet/clowndouble
|
|
icon_state = "doublesheetclown"
|
|
item_state = "sheetrainbow"
|
|
|
|
/obj/item/bedsheet/captaindouble
|
|
icon_state = "doublesheetcaptain"
|
|
item_state = "sheetcaptain"
|
|
|
|
/obj/item/bedsheet/rddouble
|
|
icon_state = "doublesheetrd"
|
|
item_state = "sheetrd"
|
|
|
|
/obj/item/bedsheet/hosdouble
|
|
icon_state = "doublesheethos"
|
|
item_state = "sheethos"
|
|
|
|
/obj/item/bedsheet/hopdouble
|
|
icon_state = "doublesheethop"
|
|
item_state = "sheethop"
|
|
|
|
/obj/item/bedsheet/cedouble
|
|
icon_state = "doublesheetce"
|
|
item_state = "sheetce"
|
|
|
|
/obj/item/bedsheet/browndouble
|
|
icon_state = "doublesheetbrown"
|
|
item_state = "sheetbrown"
|
|
|
|
/obj/item/bedsheet/iandouble
|
|
icon_state = "doublesheetian"
|
|
item_state = "sheetian"
|
|
|
|
/obj/structure/bedsheetbin
|
|
name = "linen bin"
|
|
desc = "A linen bin. It looks rather cosy."
|
|
icon = 'icons/obj/structures.dmi'
|
|
icon_state = "linenbin-full"
|
|
anchored = TRUE
|
|
var/amount = 20
|
|
var/list/sheets = list()
|
|
var/obj/item/hidden = null
|
|
|
|
|
|
/obj/structure/bedsheetbin/examine(mob/user)
|
|
. = ..()
|
|
|
|
if(amount < 1)
|
|
. += "There are no bed sheets in the bin."
|
|
else if(amount == 1)
|
|
. += "There is one bed sheet in the bin."
|
|
else
|
|
. += "There are [amount] bed sheets in the bin."
|
|
|
|
/obj/structure/bedsheetbin/update_icon()
|
|
if(amount == 0)
|
|
icon_state = "linenbin-empty"
|
|
else if(amount <= (amount / 2))
|
|
icon_state = "linenbin-half"
|
|
else
|
|
icon_state = "linenbin-full"
|
|
|
|
/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob)
|
|
if(istype(I, /obj/item/bedsheet))
|
|
user.drop_item()
|
|
I.loc = src
|
|
sheets.Add(I)
|
|
amount++
|
|
to_chat(user, span_notice("You put [I] in [src]."))
|
|
else if(amount && !hidden && I.w_class < ITEMSIZE_LARGE) //make sure there's sheets to hide it among, make sure nothing else is hidden in there.
|
|
user.drop_item()
|
|
I.loc = src
|
|
hidden = I
|
|
to_chat(user, span_notice("You hide [I] among the sheets."))
|
|
|
|
/obj/structure/bedsheetbin/attack_hand(mob/user as mob)
|
|
if(amount >= 1)
|
|
amount--
|
|
|
|
var/obj/item/bedsheet/B
|
|
if(sheets.len > 0)
|
|
B = sheets[sheets.len]
|
|
sheets.Remove(B)
|
|
|
|
else
|
|
B = new /obj/item/bedsheet(loc)
|
|
|
|
B.loc = user.loc
|
|
user.put_in_hands(B)
|
|
to_chat(user, span_notice("You take [B] out of [src]."))
|
|
|
|
if(hidden)
|
|
hidden.loc = user.loc
|
|
to_chat(user, span_notice("[hidden] falls out of [B]!"))
|
|
hidden = null
|
|
|
|
|
|
add_fingerprint(user)
|
|
|
|
/obj/structure/bedsheetbin/attack_tk(mob/user as mob)
|
|
if(amount >= 1)
|
|
amount--
|
|
|
|
var/obj/item/bedsheet/B
|
|
if(sheets.len > 0)
|
|
B = sheets[sheets.len]
|
|
sheets.Remove(B)
|
|
|
|
else
|
|
B = new /obj/item/bedsheet(loc)
|
|
|
|
B.loc = loc
|
|
to_chat(user, span_notice("You telekinetically remove [B] from [src]."))
|
|
update_icon()
|
|
|
|
if(hidden)
|
|
hidden.loc = loc
|
|
hidden = null
|
|
|
|
|
|
add_fingerprint(user)
|