Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit28
This commit is contained in:
@@ -298,6 +298,16 @@
|
||||
icon = "the_lightbulb"
|
||||
desc = "A cafe popular among moths and moffs. Once shut down for a week after the bartender used mothballs to protect her spare uniforms."
|
||||
|
||||
/datum/barsign/cybersylph
|
||||
name = "Cyber Sylph's"
|
||||
icon = "cybersylph"
|
||||
desc = "A cafe renowed for its out-of-boundaries futuristic insignia."
|
||||
|
||||
/datum/barsign/meow_mix
|
||||
name = "Meow Mix"
|
||||
icon = "meow_mix"
|
||||
desc = "No, we don't serve catnip, officer!"
|
||||
|
||||
/datum/barsign/hiddensigns
|
||||
hidden = TRUE
|
||||
|
||||
|
||||
@@ -225,6 +225,39 @@ LINEN BINS
|
||||
item_color = "ian"
|
||||
dream_messages = list("a dog", "a corgi", "woof", "bark", "arf")
|
||||
|
||||
/obj/item/bedsheet/runtime
|
||||
icon_state = "sheetruntime"
|
||||
item_color = "runtime"
|
||||
dream_messages = list("a kitty", "a cat", "meow", "purr", "nya~")
|
||||
|
||||
/obj/item/bedsheet/pirate
|
||||
name = "pirate's bedsheet"
|
||||
desc = "It has a Jolly Roger emblem on it and has a faint scent of grog."
|
||||
icon_state = "sheetpirate"
|
||||
item_color = "black"
|
||||
dream_messages = list("doing whatever oneself wants", "cause a pirate is free", "being a pirate", "stealing", "landlubbers", "gold", "a buried treasure", "yarr", "avast", "a swashbuckler", "sailing the Seven Seas", "a parrot", "a monkey", "an island", "a talking skull")
|
||||
|
||||
/obj/item/bedsheet/gondola
|
||||
name = "gondola bedsheet"
|
||||
desc = "A precious bedsheet made from the hide of a rare and peculiar critter."
|
||||
icon_state = "sheetgondola"
|
||||
item_color = "cargo"
|
||||
var/g_mouth
|
||||
var/g_eyes
|
||||
|
||||
/obj/item/bedsheet/gondola/Initialize()
|
||||
. = ..()
|
||||
g_mouth = "sheetgondola_mouth[rand(1, 4)]"
|
||||
g_eyes = "sheetgondola_eyes[rand(1, 4)]"
|
||||
add_overlay(g_mouth)
|
||||
add_overlay(g_eyes)
|
||||
|
||||
/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += mutable_appearance(icon_file, g_mouth)
|
||||
. += mutable_appearance(icon_file, g_eyes)
|
||||
|
||||
/obj/item/bedsheet/cosmos
|
||||
name = "cosmic space bedsheet"
|
||||
desc = "Made from the dreams of those who wonder at the stars."
|
||||
@@ -258,7 +291,6 @@ LINEN BINS
|
||||
var/list/sheets = list()
|
||||
var/obj/item/hidden = null
|
||||
|
||||
|
||||
/obj/structure/bedsheetbin/examine(mob/user)
|
||||
..()
|
||||
if(amount < 1)
|
||||
|
||||
@@ -147,47 +147,48 @@
|
||||
/obj/structure/closet/proc/insert(atom/movable/AM)
|
||||
if(contents.len >= storage_capacity)
|
||||
return -1
|
||||
if(insertion_allowed(AM))
|
||||
AM.forceMove(src)
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/structure/closet/proc/insertion_allowed(atom/movable/AM)
|
||||
if(ismob(AM))
|
||||
if(!isliving(AM)) //let's not put ghosts or camera mobs inside closets...
|
||||
return
|
||||
return FALSE
|
||||
var/mob/living/L = AM
|
||||
if(L.anchored || L.buckled || L.incorporeal_move || L.has_buckled_mobs())
|
||||
return
|
||||
return FALSE
|
||||
if(L.mob_size > MOB_SIZE_TINY) // Tiny mobs are treated as items.
|
||||
if(horizontal && L.density)
|
||||
return
|
||||
return FALSE
|
||||
if(L.mob_size > max_mob_size)
|
||||
return
|
||||
return FALSE
|
||||
var/mobs_stored = 0
|
||||
for(var/mob/living/M in contents)
|
||||
if(++mobs_stored >= mob_storage_capacity)
|
||||
return
|
||||
return FALSE
|
||||
L.stop_pulling()
|
||||
|
||||
else if(istype(AM, /obj/structure/closet))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
else if(istype(AM, /obj/effect))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
else if(isobj(AM))
|
||||
if (istype(AM, /obj/item))
|
||||
var/obj/item/I = AM
|
||||
if (I.item_flags & NODROP)
|
||||
return
|
||||
if((!allow_dense && AM.density) || AM.anchored || AM.has_buckled_mobs())
|
||||
return FALSE
|
||||
if(isitem(AM) && !HAS_TRAIT(AM, TRAIT_NODROP))
|
||||
return TRUE
|
||||
else if(!allow_objects && !istype(AM, /obj/effect/dummy/chameleon))
|
||||
return
|
||||
if(!allow_dense && AM.density)
|
||||
return
|
||||
if(AM.anchored || AM.has_buckled_mobs())
|
||||
return
|
||||
return FALSE
|
||||
else
|
||||
return
|
||||
return FALSE
|
||||
|
||||
AM.forceMove(src)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/structure/closet/proc/close(mob/living/user)
|
||||
if(!opened || !can_close(user))
|
||||
|
||||
@@ -21,35 +21,62 @@
|
||||
|
||||
/obj/structure/dresser/attack_hand(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(. || !ishuman(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
if(!Adjacent(user))//no tele-grooming
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
to_chat(H, "<span class='warning'>You are not capable of wearing underwear.</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.dna && H.dna.species && (NO_UNDERWEAR in H.dna.species.species_traits))
|
||||
to_chat(user, "<span class='warning'>You are not capable of wearing underwear.</span>")
|
||||
return
|
||||
var/list/undergarment_choices = list("Underwear", "Underwear Color", "Undershirt", "Undershirt Color", "Socks", "Socks Color")
|
||||
if(!UNDIE_COLORABLE(GLOB.underwear_list[H.underwear]))
|
||||
undergarment_choices -= "Underwear Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.undershirt_list[H.undershirt]))
|
||||
undergarment_choices -= "Undershirt Color"
|
||||
if(!UNDIE_COLORABLE(GLOB.socks_list[H.socks]))
|
||||
undergarment_choices -= "Socks Color"
|
||||
|
||||
var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks")
|
||||
var/choice = input(H, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in undergarment_choices
|
||||
if(!H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
var/dye_undie = FALSE
|
||||
var/dye_shirt = FALSE
|
||||
var/dye_socks = FALSE
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
var/new_undies = input(H, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
|
||||
if(H.underwear)
|
||||
H.underwear = new_undies
|
||||
H.saved_underwear = new_undies
|
||||
var/datum/sprite_accessory/underwear/bottom/B = GLOB.underwear_list[new_undies]
|
||||
dye_undie = B?.has_color
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(H, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
H.saved_undershirt = new_undershirt
|
||||
var/datum/sprite_accessory/underwear/top/T = GLOB.undershirt_list[new_undershirt]
|
||||
dye_shirt = T?.has_color
|
||||
if("Socks")
|
||||
var/new_socks = input(H, "Select your socks", "Changing") as null|anything in GLOB.socks_list
|
||||
if(new_socks)
|
||||
H.socks = new_socks
|
||||
H.saved_socks = new_socks
|
||||
var/datum/sprite_accessory/underwear/socks/S = GLOB.socks_list[new_socks]
|
||||
dye_socks = S?.has_color
|
||||
if(dye_undie || choice == "Underwear Color")
|
||||
H.undie_color = recolor_undergarment(H, "underwear", H.undie_color)
|
||||
if(dye_shirt || choice == "Undershirt Color")
|
||||
H.shirt_color = recolor_undergarment(H, "undershirt", H.shirt_color)
|
||||
if(dye_socks || choice == "Socks Color")
|
||||
H.socks_color = recolor_undergarment(H, "socks", H.socks_color)
|
||||
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in GLOB.underwear_list
|
||||
if(new_undies)
|
||||
H.underwear = new_undies
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(user, "Select your undershirt", "Changing") as null|anything in GLOB.undershirt_list
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
if("Socks")
|
||||
var/new_socks = input(user, "Select your socks", "Changing") as null|anything in GLOB.socks_list
|
||||
if(new_socks)
|
||||
H.socks= new_socks
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
/obj/structure/dresser/proc/recolor_undergarment(mob/living/carbon/human/H, garment_type = "underwear", default_color)
|
||||
var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null
|
||||
if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return default_color
|
||||
return n_color
|
||||
|
||||
@@ -262,7 +262,7 @@
|
||||
if(isobj(AM))
|
||||
if(prob(50) && anchored && !broken)
|
||||
var/obj/O = AM
|
||||
if(O.throwforce != 0)//don't want to let people spam tesla bolts, this way it will break after time
|
||||
if(O.throwforce != 0 && O.damtype != STAMINA)//don't want to let people spam tesla bolts, this way it will break after time
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/structure/cable/C = T.get_cable_node()
|
||||
if(C)
|
||||
|
||||
@@ -180,12 +180,13 @@
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "offhand"
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
item_flags = ABSTRACT | NODROP | NOBLUDGEON | DROPDEL
|
||||
item_flags = ABSTRACT | NOBLUDGEON | DROPDEL
|
||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/obj/machinery/manned_turret/turret
|
||||
|
||||
/obj/item/gun_control/Initialize()
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
|
||||
turret = loc
|
||||
if(!istype(turret))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
Reference in New Issue
Block a user