diff --git a/code/__DEFINES/dye_keys.dm b/code/__DEFINES/dye_keys.dm index a01dcacc18..fd93beda84 100644 --- a/code/__DEFINES/dye_keys.dm +++ b/code/__DEFINES/dye_keys.dm @@ -4,6 +4,7 @@ #define DYE_REGISTRY_SNEAKERS "sneakers" #define DYE_REGISTRY_FANNYPACK "fannypack" #define DYE_REGISTRY_BEDSHEET "bedsheet" +#define DYE_REGISTRY_DOUBLE_BEDSHEET "double_bedsheet" #define DYE_LAWYER_SPECIAL "lawyer_special" #define DYE_RED "red" diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 3441ac7eaa..8c2d3631e3 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -103,6 +103,31 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_RD = /obj/item/bedsheet/rd, DYE_CMO = /obj/item/bedsheet/cmo, DYE_COSMIC = /obj/item/bedsheet/cosmos + ), + DYE_REGISTRY_DOUBLE_BEDSHEET = list( + DYE_RED = /obj/item/bedsheet/red/double, + DYE_ORANGE = /obj/item/bedsheet/orange/double, + DYE_YELLOW = /obj/item/bedsheet/yellow/double, + DYE_GREEN = /obj/item/bedsheet/green/double, + DYE_BLUE = /obj/item/bedsheet/blue/double, + DYE_PURPLE = /obj/item/bedsheet/purple/double, + DYE_BLACK = /obj/item/bedsheet/black/double, + DYE_WHITE = /obj/item/bedsheet/double, + DYE_RAINBOW = /obj/item/bedsheet/rainbow/double, + DYE_MIME = /obj/item/bedsheet/mime/double, + DYE_CLOWN = /obj/item/bedsheet/clown/double, + DYE_CHAP = /obj/item/bedsheet/chaplain/double, + DYE_QM = /obj/item/bedsheet/qm/double, + DYE_LAW = /obj/item/bedsheet/black/double, + DYE_CAPTAIN = /obj/item/bedsheet/captain/double, + DYE_HOP = /obj/item/bedsheet/hop/double, + DYE_HOS = /obj/item/bedsheet/hos/double, + DYE_CE = /obj/item/bedsheet/ce/double, + DYE_RD = /obj/item/bedsheet/rd/double, + DYE_CMO = /obj/item/bedsheet/cmo/double, + DYE_COSMIC = /obj/item/bedsheet/cosmos/double, + DYE_SYNDICATE = /obj/item/bedsheet/syndie/double, + DYE_CENTCOM = /obj/item/bedsheet/centcom/double ) )) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 968f6fb354..1fbd0433be 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ //CIT CHANGE - adds sofas to metal recipe list new/datum/stack_recipe_list("sofas", list( \ new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ @@ -396,6 +397,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("rag", /obj/item/reagent_containers/rag, 1), \ new/datum/stack_recipe("towel", /obj/item/reagent_containers/rag/towel, 3), \ new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \ + new/datum/stack_recipe("double bedsheet", /obj/item/bedsheet/double, 6), \ new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4), \ new/datum/stack_recipe("padded floor tile", /obj/item/stack/tile/padded, 1, 4, 20), \ null, \ diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index c86c62094b..8f5e1c5079 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -53,6 +53,12 @@ else return ..() +/obj/structure/bed/post_buckle_mob(mob/living/target) + target.pixel_y = target.get_standard_pixel_y_offset(TRUE) + +/obj/structure/bed/double/post_unbuckle_mob(mob/living/target) + target.pixel_y = target.get_standard_pixel_y_offset(FALSE) + /* * Roller beds */ @@ -214,3 +220,24 @@ name = "resting contraption" desc = "This looks similar to contraptions from Earth. Could aliens be stealing our technology?" icon_state = "abed" + +//Double Beds, for luxurious sleeping, i.e. the captain and maybe heads- Do use this for ERP +/obj/structure/bed/double + name = "double bed" + desc = "A luxurious double bed, for those too important for small dreams." + icon_state = "bed_double" + buildstackamount = 4 + max_buckled_mobs = 2 + ///The mob who buckled to this bed second, to avoid other mobs getting pixel-shifted before he unbuckles. + var/mob/living/goldilocks + +/obj/structure/bed/double/post_buckle_mob(mob/living/target) + target.pixel_y = target.get_standard_pixel_y_offset(TRUE) + if(buckled_mobs.len > 1 && !goldilocks) //Push the second buckled mob a bit higher from the normal lying position + target.pixel_y = target.get_standard_pixel_y_offset(FALSE) + 6 + goldilocks = target + +/obj/structure/bed/double/post_unbuckle_mob(mob/living/target) + target.pixel_y = target.get_standard_pixel_y_offset(FALSE) + if(target == goldilocks) + goldilocks = null diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 2172040022..8cd58d7942 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -4,6 +4,41 @@ BEDSHEETS LINEN BINS */ +#define BEDSHEET_SINGLE "single" +#define BEDSHEET_DOUBLE "double" + +GLOBAL_LIST_INIT(double_bedsheets, list(/obj/item/bedsheet/double, + /obj/item/bedsheet/blue/double, + /obj/item/bedsheet/green/double, + /obj/item/bedsheet/grey/double, + /obj/item/bedsheet/orange/double, + /obj/item/bedsheet/purple/double, + /obj/item/bedsheet/patriot/double, + /obj/item/bedsheet/rainbow/double, + /obj/item/bedsheet/red/double, + /obj/item/bedsheet/yellow/double, + /obj/item/bedsheet/mime/double, + /obj/item/bedsheet/clown/double, + /obj/item/bedsheet/captain/double, + /obj/item/bedsheet/rd/double, + /obj/item/bedsheet/medical/double, + /obj/item/bedsheet/cmo/double, + /obj/item/bedsheet/hos/double, + /obj/item/bedsheet/hop/double, + /obj/item/bedsheet/ce/double, + /obj/item/bedsheet/qm/double, + /obj/item/bedsheet/chaplain/double, + /obj/item/bedsheet/brown/double, + /obj/item/bedsheet/black/double, + /obj/item/bedsheet/centcom/double, + /obj/item/bedsheet/syndie/double, + /obj/item/bedsheet/cult/double, + /obj/item/bedsheet/wiz/double, + /obj/item/bedsheet/nanotrasen/double, + /obj/item/bedsheet/ian/double, + /obj/item/bedsheet/cosmos/double + )) + /obj/item/bedsheet name = "bedsheet" desc = "A surprisingly soft linen bedsheet." @@ -21,10 +56,15 @@ LINEN BINS dog_fashion = /datum/dog_fashion/head/ghost var/list/dream_messages = list("white") + var/stack_amount = 3 + var/bedsheet_type = BEDSHEET_SINGLE /obj/item/bedsheet/Initialize(mapload) . = ..() AddElement(/datum/element/bed_tuckable, 0, 0, 0) + if(bedsheet_type == BEDSHEET_DOUBLE) + stack_amount *= 2 + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET /obj/item/bedsheet/attack(mob/living/M, mob/user) if(!attempt_initiate_surgery(src, M, user)) @@ -46,7 +86,7 @@ LINEN BINS /obj/item/bedsheet/attackby(obj/item/I, mob/user, params) if(!(flags_1 & HOLOGRAM_1) && (I.tool_behaviour == TOOL_WIRECUTTER || I.get_sharpness())) - var/obj/item/stack/sheet/cloth/C = new (get_turf(src), 3) + var/obj/item/stack/sheet/cloth/C = new (get_turf(src), stack_amount) transfer_fingerprints_to(C) C.add_fingerprint(user) qdel(src) @@ -247,9 +287,171 @@ LINEN BINS /obj/item/bedsheet/random/Initialize() ..() - var/type = pick(typesof(/obj/item/bedsheet) - (list(/obj/item/bedsheet/random, /obj/item/bedsheet/chameleon) + typesof(/obj/item/bedsheet/unlockable))) - new type(loc) - return INITIALIZE_HINT_QDEL + if(bedsheet_type == BEDSHEET_SINGLE) + var/type = pick(typesof(/obj/item/bedsheet) - (list(/obj/item/bedsheet/random, /obj/item/bedsheet/chameleon) + typesof(/obj/item/bedsheet/unlockable) + GLOB.double_bedsheets)) + new type(loc) + return INITIALIZE_HINT_QDEL + +/obj/item/bedsheet/double + icon_state = "double_sheetwhite" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/blue/double + icon_state = "double_sheetblue" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/green/double + icon_state = "double_sheetgreen" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/grey/double + icon_state = "double_sheetgrey" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/orange/double + icon_state = "double_sheetorange" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/purple/double + icon_state = "double_sheetpurple" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/patriot/double + icon_state = "double_sheetUSA" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/rainbow/double + icon_state = "double_sheetrainbow" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/red/double + icon_state = "double_sheetred" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/yellow/double + icon_state = "double_sheetyellow" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/mime/double + icon_state = "double_sheetmime" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/clown/double + icon_state = "double_sheetclown" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/captain/double + icon_state = "double_sheetcaptain" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/rd/double + icon_state = "double_sheetrd" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/medical/double + icon_state = "double_sheetmedical" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/cmo/double + icon_state = "double_sheetcmo" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/hos/double + icon_state = "double_sheethos" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/hop/double + icon_state = "double_sheethop" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/ce/double + icon_state = "double_sheetce" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/qm/double + icon_state = "double_sheetqm" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/chaplain/double + icon_state = "double_sheetchap" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/brown/double + icon_state = "double_sheetbrown" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/black/double + icon_state = "double_sheetblack" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/centcom/double + icon_state = "double_sheetcentcom" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/syndie/double + icon_state = "double_sheetsyndie" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/cult/double + icon_state = "double_sheetcult" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/wiz/double + icon_state = "double_sheetwiz" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/nanotrasen/double + icon_state = "double_sheetNT" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/ian/double + icon_state = "double_sheetian" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/cosmos/double + icon_state = "double_sheetcosmos" + dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/random/double + icon_state = "random_bedsheet" + bedsheet_type = BEDSHEET_DOUBLE + +/obj/item/bedsheet/random/double/Initialize() + ..() + if(bedsheet_type == BEDSHEET_DOUBLE) + var/type = pick(GLOB.double_bedsheets) + new type(loc) + return INITIALIZE_HINT_QDEL /obj/item/bedsheet/chameleon //donator chameleon bedsheet name = "chameleon bedsheet" diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 2452beb0e1..ba4b02fcf4 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -190,6 +190,10 @@ icon = 'icons/obj/lavaland/survival_pod.dmi' icon_state = "bed" +/obj/structure/bed/double/pod + icon = 'icons/obj/lavaland/survival_pod.dmi' + icon_state = "bed_double" + //Survival Storage Unit /obj/machinery/smartfridge/survival_pod name = "survival pod storage" diff --git a/icons/obj/bedsheets.dmi b/icons/obj/bedsheets.dmi index f62dd34c66..17837b0bc5 100644 Binary files a/icons/obj/bedsheets.dmi and b/icons/obj/bedsheets.dmi differ diff --git a/icons/obj/lavaland/survival_pod.dmi b/icons/obj/lavaland/survival_pod.dmi index 84ea0e1e83..149c2aa888 100644 Binary files a/icons/obj/lavaland/survival_pod.dmi and b/icons/obj/lavaland/survival_pod.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 6d29b8df8e..8eb3b619a1 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ