Merge remote-tracking branch 'origin/master' into what-should-i-name-this-branch

This commit is contained in:
LetterN
2021-12-21 07:59:33 +08:00
164 changed files with 128258 additions and 912 deletions
@@ -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
+206 -4
View File
@@ -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"
@@ -672,3 +672,15 @@
if(allowed(user))
return TRUE
to_chat(user, "<span class='notice'>Access denied.</span>")
/obj/structure/closet/on_object_saved(depth)
if(depth >= 10)
return ""
var/dat = ""
for(var/obj/item in contents)
var/metadata = generate_tgm_metadata(item)
dat += "[dat ? ",\n" : ""][item.type][metadata]"
//Save the contents of things inside the things inside us, EG saving the contents of bags inside lockers
var/custom_data = item.on_object_saved(depth++)
dat += "[custom_data ? ",\n[custom_data]" : ""]"
return dat
+20 -1
View File
@@ -57,6 +57,7 @@
hole_size = LARGE_HOLE
/obj/structure/fence/attackby(obj/item/W, mob/user)
var/current_stage = hole_size
if(W.tool_behaviour == TOOL_WIRECUTTER)
if(!cuttable)
to_chat(user, "<span class='notice'>This section of the fence can't be cut.</span>")
@@ -64,7 +65,6 @@
if(invulnerable)
to_chat(user, "<span class='notice'>This fence is too strong to cut through.</span>")
return
var/current_stage = hole_size
if(current_stage >= MAX_HOLE_SIZE)
to_chat(user, "<span class='notice'>This fence has too much cut out of it already.</span>")
return
@@ -86,6 +86,25 @@
update_cut_status()
else if(istype(W, /obj/item/stack/rods) && broken)
if(!hole_size)
to_chat(user, "<span class='info'>The [src] has no cuts in it!</span>")
return
var/obj/item/stack/rods/R = W
if(do_after(user, CUT_TIME, target = src))
if(current_stage == hole_size)
switch(--hole_size)
if(NO_HOLE)
visible_message("<span class='notice'>\The [user] repairs \the [src] fully.</span>")
to_chat(user, "<span class='info'>You repaire the [src] back to it's former glory.</span>")
climbable = TRUE
if(MEDIUM_HOLE)
visible_message("<span class='notice'>\The [user] patches up \the [src].</span>")
to_chat(user, "<span class='info'>The hole in \the [src] is reduced slightly, though someone could probably sill squeeze though if you don't patch it up more.</span>")
climbable = FALSE
R.use(1)
update_cut_status()
return TRUE
/obj/structure/fence/proc/update_cut_status()
+6
View File
@@ -78,6 +78,12 @@
deconstructible = FALSE
layer = EDGED_TURF_LAYER
/obj/structure/fluff/lightpost/light
desc = "That which most enchants the Edinians is the lighting by gas of the boulevards... These humble rows of lamps, shining with a clarity white and pure, have a marvelous effect upon the streets on Nova Edina. Adorned with a cheery garb, in tune with the festive spirits of the city."
light_power = 0.8
light_range = 10
light_color = "#ffeeab"
/obj/structure/fluff/bus
name = "bus"
desc = "GO TO SCHOOL. READ A BOOK."