/* 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' /// Custom nouns to act as the subject of dreams var/list/dream_messages = list("white") /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" dream_messages = list("blue") /obj/item/bedsheet/green icon_state = "sheetgreen" dream_messages = list("green") /obj/item/bedsheet/orange icon_state = "sheetorange" dream_messages = list("orange") /obj/item/bedsheet/purple icon_state = "sheetpurple" dream_messages = list("purple") /obj/item/bedsheet/rainbow icon_state = "sheetrainbow" dream_messages = list("red", "orange", "yellow", "green", "blue", "purple", "a rainbow") /obj/item/bedsheet/red icon_state = "sheetred" dream_messages = list("red") /obj/item/bedsheet/yellow icon_state = "sheetyellow" dream_messages = list("yellow") /obj/item/bedsheet/mime icon_state = "sheetmime" dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime") /obj/item/bedsheet/clown icon_state = "sheetclown" item_state = "sheetrainbow" dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown") /obj/item/bedsheet/captain icon_state = "sheetcaptain" dream_messages = list("authority", "a golden ID", "sunglasses", "a green disc", "an antique gun", "the captain") /obj/item/bedsheet/rd icon_state = "sheetrd" dream_messages = list("authority", "a silvery ID", "a bomb", "a mech", "a facehugger", "maniacal laughter", "the research director") /obj/item/bedsheet/medical name = "medical blanket" desc = "It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station." icon_state = "sheetmedical" dream_messages = list("healing", "life", "surgery", "a doctor") /obj/item/bedsheet/hos icon_state = "sheethos" dream_messages = list("authority", "a silvery ID", "handcuffs", "a baton", "a flashbang", "sunglasses", "the head of security") /obj/item/bedsheet/hop icon_state = "sheethop" dream_messages = list("authority", "a silvery ID", "obligation", "a computer", "an ID", "a corgi", "the head of personnel") /obj/item/bedsheet/ce icon_state = "sheetce" dream_messages = list("authority", "a silvery ID", "the engine", "power tools", "an APC", "a parrot", "the chief engineer") /obj/item/bedsheet/brown icon_state = "sheetbrown" dream_messages = list("brown") /obj/item/bedsheet/ian icon_state = "sheetian" dream_messages = list("a dog", "a corgi", "woof", "bark", "arf") /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)