Merge remote-tracking branch 'citadel/master' into mobility_flags

This commit is contained in:
kevinz000
2020-02-13 00:39:20 -07:00
481 changed files with 10666 additions and 9059 deletions
+2 -1
View File
@@ -57,6 +57,7 @@
var/poster_item_name = "hypothetical poster"
var/poster_item_desc = "This hypothetical poster item should not exist, let's be honest here."
var/poster_item_icon_state = "rolled_poster"
var/poster_item_type = /obj/item/poster
/obj/structure/sign/poster/Initialize()
. = ..()
@@ -114,7 +115,7 @@
/obj/structure/sign/poster/proc/roll_and_drop(loc)
pixel_x = 0
pixel_y = 0
var/obj/item/poster/P = new(loc, src)
var/obj/item/poster/P = new poster_item_type(loc, src)
forceMove(P)
return P
@@ -10,7 +10,7 @@
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases)
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases, list/blood_dna)
. = ..()
if(gibtypes.len != gibamounts.len)
stack_trace("Gib list amount length mismatch!")
@@ -33,7 +33,7 @@
var/body_coloring = ""
if(source_mob)
if(!issilicon(source_mob))
dna_to_add = source_mob.get_blood_dna_list() //ez pz
dna_to_add = blood_dna || source_mob.get_blood_dna_list() //ez pz
if(ishuman(source_mob))
var/mob/living/carbon/human/H = source_mob
if(H.dna.species.use_skintones)
@@ -163,6 +163,10 @@ again.
icon_state = "plastitaniumwindow_spawner"
spawn_list = list(/obj/structure/grille, /obj/structure/window/plastitanium)
//plastitanium pirate window
/obj/effect/spawner/structure/window/plastitanium/pirate
spawn_list = list(/obj/structure/grille, /obj/structure/window/plastitanium/pirate)
//ice window
@@ -8,6 +8,7 @@
/obj/structure/sign/poster/wanted
var/wanted_name
poster_item_type = /obj/item/poster/wanted
/obj/structure/sign/poster/wanted/Initialize(mapload, icon/person_icon, person_name, description)
. = ..()
+15 -1
View File
@@ -128,6 +128,9 @@
return
. = ..()
/obj/item/card/emag/empty
uses = 0
/obj/item/emagrecharge
name = "electromagnet charging device"
desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for charging the small batteries found in electromagnetic devices, sadly this can't be recharged like a normal cell."
@@ -538,4 +541,15 @@ update_label("John Doe", "Clowny")
id_color = "#0000FF"
/obj/item/card/id/knight/captain
id_color = "#FFD700"
id_color = "#FFD700"
/obj/item/card/id/debug
name = "\improper Debug ID"
desc = "A debug ID card. Has ALL the all access, you really shouldn't have this."
icon_state = "ert_janitor"
assignment = "Jannie"
/obj/item/card/id/debug/Initialize()
access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
. = ..()
@@ -238,6 +238,14 @@
/obj/machinery/vending/cigarette = "ShadyCigs Deluxe",
/obj/machinery/vending/games = "\improper Good Clean Fun",
/obj/machinery/vending/autodrobe = "AutoDrobe",
/obj/machinery/vending/assist = "\improper Vendomat",
/obj/machinery/vending/engivend = "\improper Engi-Vend",
/obj/machinery/vending/engivend = "\improper YouTool",
/obj/machinery/vending/sustenance = "\improper Sustenance Vendor",
/obj/machinery/vending/dinnerware = "\improper Plasteel Chef's Dinnerware Vendor",
/obj/machinery/vending/cart = "\improper PTech",
/obj/machinery/vending/hydronutrients = "\improper NutriMax",
/obj/machinery/vending/hydroseeds = "\improper MegaSeed Servitor",
/obj/machinery/vending/wardrobe/sec_wardrobe = "SecDrobe",
/obj/machinery/vending/wardrobe/medi_wardrobe = "MediDrobe",
/obj/machinery/vending/wardrobe/engi_wardrobe = "EngiDrobe",
+102
View File
@@ -0,0 +1,102 @@
/* This file contains standalone items for debug purposes. */
/obj/item/debug/human_spawner
name = "human spawner"
desc = "Spawn a human by aiming at a turf and clicking. Use in hand to change type."
icon = 'icons/obj/guns/magic.dmi'
icon_state = "nothingwand"
item_state = "wand"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
var/datum/species/selected_species
var/valid_species = list()
/obj/item/debug/human_spawner/afterattack(atom/target, mob/user, proximity)
..()
if(isturf(target))
var/mob/living/carbon/human/H = new /mob/living/carbon/human(target)
if(selected_species)
H.set_species(selected_species)
/obj/item/debug/human_spawner/attack_self(mob/user)
..()
var/choice = input("Select a species", "Human Spawner", null) in GLOB.species_list
selected_species = GLOB.species_list[choice]
/* Revive this once we purge all the istype checks for tools for tool_behaviour
/obj/item/debug/omnitool
name = "omnitool"
desc = "The original hypertool, born before them all. Use it in hand to unleash it's true power."
icon = 'icons/obj/device.dmi'
icon_state = "hypertool"
item_state = "hypertool"
toolspeed = 0.1
tool_behaviour = null
/obj/item/debug/omnitool/examine()
. = ..()
. += " The mode is: [tool_behaviour]"
/obj/item/debug/omnitool/proc/check_menu(mob/user)
if(!istype(user))
return FALSE
if(user.incapacitated() || !user.Adjacent(src))
return FALSE
return TRUE
/obj/item/debug/omnitool/attack_self(mob/user)
if(!user)
return
var/list/tool_list = list(
"Crowbar" = image(icon = 'icons/obj/tools.dmi', icon_state = "crowbar"),
"Multitool" = image(icon = 'icons/obj/device.dmi', icon_state = "multitool"),
"Screwdriver" = image(icon = 'icons/obj/tools.dmi', icon_state = "screwdriver_map"),
"Wirecutters" = image(icon = 'icons/obj/tools.dmi', icon_state = "cutters_map"),
"Wrench" = image(icon = 'icons/obj/tools.dmi', icon_state = "wrench"),
"Welding Tool" = image(icon = 'icons/obj/tools.dmi', icon_state = "miniwelder"),
"Analyzer" = image(icon = 'icons/obj/device.dmi', icon_state = "analyzer"),
"Mining Tool" = image(icon = 'icons/obj/mining.dmi', icon_state = "minipick"),
"Shovel" = image(icon = 'icons/obj/mining.dmi', icon_state = "spade"),
"Retractor" = image(icon = 'icons/obj/surgery.dmi', icon_state = "retractor"),
"Hemostat" = image(icon = 'icons/obj/surgery.dmi', icon_state = "hemostat"),
"Cautery" = image(icon = 'icons/obj/surgery.dmi', icon_state = "cautery"),
"Drill" = image(icon = 'icons/obj/surgery.dmi', icon_state = "drill"),
"Scalpel" = image(icon = 'icons/obj/surgery.dmi', icon_state = "scalpel"),
"Saw" = image(icon = 'icons/obj/surgery.dmi', icon_state = "saw")
)
var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(tool_result)
if("Crowbar")
tool_behaviour = TOOL_CROWBAR
if("Multitool")
tool_behaviour = TOOL_MULTITOOL
if("Screwdriver")
tool_behaviour = TOOL_SCREWDRIVER
if("Wirecutters")
tool_behaviour = TOOL_WIRECUTTER
if("Wrench")
tool_behaviour = TOOL_WRENCH
if("Welding Tool")
tool_behaviour = TOOL_WELDER
if("Analyzer")
tool_behaviour = TOOL_ANALYZER
if("Mining Tool")
tool_behaviour = TOOL_MINING
if("Shovel")
tool_behaviour = TOOL_SHOVEL
if("Retractor")
tool_behaviour = TOOL_RETRACTOR
if("Hemostat")
tool_behaviour = TOOL_HEMOSTAT
if("Cautery")
tool_behaviour = TOOL_CAUTERY
if("Drill")
tool_behaviour = TOOL_DRILL
if("Scalpel")
tool_behaviour = TOOL_SCALPEL
if("Saw")
tool_behaviour = TOOL_SAW
*/
+1
View File
@@ -8,6 +8,7 @@
var/mob/owner = null //Carp doesn't attack owner, set when using in hand
var/owned = 0 //Boolean, no owner to begin with
var/mobtype = /mob/living/simple_animal/hostile/carp //So admins can change what mob spawns via var fuckery
can_random_spawn = FALSE
//Attack self
/obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user)
+3 -3
View File
@@ -721,7 +721,7 @@ GLOBAL_LIST_EMPTY(PDAs)
return
/obj/item/pda/proc/remove_id(mob/user)
if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
if(hasSiliconAccessInArea(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
do_remove_id(user)
@@ -916,7 +916,7 @@ GLOBAL_LIST_EMPTY(PDAs)
remove_pen()
/obj/item/pda/proc/toggle_light()
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
if(hasSiliconAccessInArea(usr) || !usr.canUseTopic(src, BE_CLOSE))
return
if(fon)
fon = FALSE
@@ -928,7 +928,7 @@ GLOBAL_LIST_EMPTY(PDAs)
/obj/item/pda/proc/remove_pen()
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
if(hasSiliconAccessInArea(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
if(inserted_item)
+3 -2
View File
@@ -100,7 +100,8 @@
bot_access_flags = CLEAN_BOT
/obj/item/cartridge/lawyer
name = "\improper P.R.O.V.E. cartridge"
name = "\improper S.P.A.M. cartridge"
desc = "Introducing the Station Public Announcement Messenger cartridge, featuring the unique ability to broadcast-mark messages, designed for lawyers across Nanotrasen to advertise their useful and important services."
icon_state = "cart-law"
access = CART_SECURITY
spam_enabled = 1
@@ -608,7 +609,7 @@ Code:
/obj/item/cartridge/Topic(href, href_list)
..()
if(!usr.canUseTopic(src, !issilicon(usr)))
if(!usr.canUseTopic(src, !hasSiliconAccessInArea(usr)))
usr.unset_machine()
usr << browse(null, "window=pda")
return
@@ -82,8 +82,9 @@
/obj/item/implant/explosive/proc/boom_goes_the_weasel()
explosion(get_turf(imp_in ? imp_in : src), heavy, medium, weak, weak, flame_range = weak)
imp_in?.gib(TRUE)
qdel(src)
if(!QDELETED(imp_in))
imp_in.gib(TRUE)
qdel(src)
/obj/item/implant/explosive/macro
name = "macrobomb implant"
@@ -0,0 +1,121 @@
#define HIJACK_APC_MAX_AMOUNT 5
/obj/item/implant/hijack
name = "hijack implant"
desc = "Allows you to control the machinery in a room by hacking into the APC."
actions_types = list(/datum/action/item_action/hands_free/activate, /datum/action/item_action/removeAPCs, /datum/action/item_action/accessAPCs, /datum/action/item_action/stealthmodetoggle)
activated = 1
var/toggled = FALSE
icon_state = "hijack"
var/eye_color
var/stealthmode = FALSE
var/stealthcooldown = 0
var/hijacking = FALSE
/obj/item/implant/hijack/activate()
. = ..()
toggled = !toggled
imp_in.click_intercept = toggled ? src : null
imp_in.siliconaccesstoggle = toggled ? TRUE : FALSE
to_chat(imp_in,"<span class='notice'>You turn [toggled ? "on" : "off"] [src]'s silicon interactions.</span>")
toggle_eyes()
/obj/item/implant/hijack/proc/toggle_eyes()
if (!ishuman(imp_in))
return
var/on = toggled && !stealthmode
var/mob/living/carbon/human/H = imp_in
H.eye_color = on ? "ff0" : eye_color
H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK)
H.update_body()
/obj/item/implant/hijack/implant(mob/living/target, mob/user, silent = FALSE)
if(..())
ADD_TRAIT(target, TRAIT_HIJACKER, "implant")
if (ishuman(target))
var/mob/living/carbon/human/H = target
eye_color = H.eye_color
return TRUE
/obj/item/implant/hijack/removed(mob/target, silent = FALSE, special = 0)
if(..())
REMOVE_TRAIT(target, TRAIT_HIJACKER, "implant")
for (var/area/area in imp_in.siliconaccessareas)
imp_in.toggleSiliconAccessArea(area)
var/obj/machinery/power/apc/apc = area.get_apc()
if (apc)
apc.hijacker = null
apc.set_hijacked_lighting()
apc.update_icon()
if (ishuman(target))
var/mob/living/carbon/human/H = target
H.eye_color = eye_color
return TRUE
/obj/item/implant/hijack/proc/InterceptClickOn(mob/living/user,params,atom/object)
if (isitem(object) || !toggled || user.incapacitated())
return
if (stealthmode == FALSE && istype(object,/obj/machinery/power/apc) && !user.CanReach(object))
if (hijack_remotely(object))
return
if (stealthmode && !user.CanReach(object))
return
if (!object.hasSiliconAccessInArea(imp_in))
return
var/list/modifiers = params2list(params)
imp_in.face_atom(object)
if (modifiers["shift"] && modifiers["ctrl"])
object.AICtrlShiftClick(imp_in)
return TRUE
if (modifiers["shift"])
object.AIShiftClick(imp_in)
return TRUE
if (modifiers["ctrl"])
object.AICtrlClick(imp_in)
return TRUE
if (modifiers["alt"])
object.AIAltClick(imp_in)
return TRUE
if (user.get_active_held_item())
return
if (user.CanReach(object))
object.attack_robot(imp_in)
else
object.attack_ai(imp_in)
return TRUE
/obj/item/implant/hijack/proc/hijack_remotely(obj/machinery/power/apc/apc)
if (apc.hijacker || hijacking)
return FALSE //can't remotely hijack an already hijacked APC
hijacking = TRUE
to_chat(imp_in, "<span class='notice'>Establishing remote connection with APC.</span>")
if (!do_after(imp_in, 4 SECONDS,target=apc))
to_chat(imp_in, "<span class='warning'>Aborting.</span>")
hijacking = FALSE
return TRUE
if (LAZYLEN(imp_in.siliconaccessareas) >= HIJACK_APC_MAX_AMOUNT)
to_chat(src,"<span class='warning'>You are connected to too many APCs! Too many more will fry your brain.</span>")
hijacking = FALSE
return TRUE
imp_in.light_power = 2
imp_in.light_range = 2
imp_in.light_color = COLOR_YELLOW
imp_in.update_light()
imp_in.visible_message("<span class='warning'>[imp_in] starts glowing a with a hollow yellow light!</span>")
to_chat(imp_in, "<span class='notice'>Beginning hijack of APC.</span>")
if (do_after(imp_in, 21 SECONDS,target=apc))
apc.hijacker = imp_in
stealthmode = FALSE
apc.set_hijacked_lighting()
imp_in.toggleSiliconAccessArea(apc.area)
apc.update_icon()
stealthcooldown = world.time + 1 MINUTES + 30 SECONDS
toggle_eyes()
else
to_chat(imp_in, "<span class='warning'>Aborting.</span>")
hijacking = FALSE
imp_in.light_power = 0
imp_in.light_range = 0
imp_in.light_color = COLOR_YELLOW
imp_in.update_light()
return TRUE
@@ -74,4 +74,8 @@
/obj/item/implanter/stealth
name = "implanter (stealth)"
imp_type = /obj/item/implant/stealth
imp_type = /obj/item/implant/stealth
/obj/item/implanter/hijack
name = "implanter (hijack)"
imp_type = /obj/item/implant/hijack
+108 -400
View File
@@ -31,7 +31,16 @@
var/normal_desc
//--end of love :'(--
/obj/item/toy/plush/Initialize()
var/snowflake_id //if we set from a config snowflake plushie.
var/can_random_spawn = TRUE //if this is FALSE, don't spawn this for random plushies.
/obj/item/toy/plush/random_snowflake/Initialize(mapload, set_snowflake_id)
. = ..()
var/list/configlist = CONFIG_GET(keyed_list/snowflake_plushies)
var/id = pick(configlist)
set_snowflake_from_config(id)
/obj/item/toy/plush/Initialize(mapload, set_snowflake_id)
. = ..()
AddComponent(/datum/component/squeak, squeak_override)
@@ -50,6 +59,9 @@
normal_desc = desc
if(set_snowflake_id)
set_snowflake_from_config(set_snowflake_id)
/obj/item/toy/plush/Destroy()
QDEL_NULL(grenade)
@@ -97,6 +109,44 @@
return ..()
/obj/item/toy/plush/proc/set_snowflake_from_config(id)
var/list/configlist = CONFIG_GET(keyed_list/snowflake_plushies)
var/list/jsonlist = configlist[id]
ASSERT(jsonlist)
jsonlist = json_decode(jsonlist)
if(jsonlist["inherit_from"])
var/path = text2path(jsonlist["inherit_from"])
if(!ispath(path, /obj/item/toy/plush))
stack_trace("Invalid path for inheritance")
else
var/obj/item/toy/plush/P = new path //can't initial() lists
name = P.name
desc = P.desc
icon_state = P.icon_state
item_state = P.item_state
icon = P.icon
squeak_override = P.squeak_override
attack_verb = P.attack_verb
gender = P.gender
qdel(P)
if(jsonlist["name"])
name = jsonlist["name"]
if(jsonlist["desc"])
desc = jsonlist["desc"]
if(jsonlist["gender"])
gender = jsonlist["gender"]
if(jsonlist["icon_state"])
icon_state = jsonlist["icon_state"]
item_state = jsonlist["item_state"]
icon = 'config/plushies/sprites.dmi'
if(jsonlist["attack_verb"])
attack_verb = jsonlist["attack_verb"]
if(jsonlist["squeak_override"])
squeak_override = jsonlist["squeak_override"]
if(squeak_override)
var/datum/component/squeak/S = GetComponent(/datum/component/squeak)
S?.override_squeak_sounds = squeak_override
/obj/item/toy/plush/handle_atom_del(atom/A)
if(A == grenade)
grenade = null
@@ -367,13 +417,22 @@
if(mood_message)
desc += mood_message
GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
/proc/valid_plushie_paths()
. = list()
for(var/i in subtypesof(/obj/item/toy/plush))
var/obj/item/toy/plush/abstract = i
if(!initial(abstract.can_random_spawn))
continue
. += i
/obj/item/toy/plush/random
name = "Illegal plushie"
desc = "Something fucked up"
var/blacklisted_plushes = list(/obj/item/toy/plush/carpplushie/dehy_carp, /obj/item/toy/plush/awakenedplushie, /obj/item/toy/plush/random)
can_random_spawn = FALSE
/obj/item/toy/plush/random/Initialize()
var/newtype = pick(subtypesof(/obj/item/toy/plush) - typecacheof(blacklisted_plushes))
var/newtype = prob(CONFIG_GET(number/snowflake_plushie_prob))? /obj/item/toy/plush/random_snowflake : pick(GLOB.valid_plushie_paths)
new newtype(loc)
return INITIALIZE_HINT_QDEL
@@ -504,115 +563,12 @@
attack_verb = list("clawed", "hissed", "tail slapped")
squeak_override = list('sound/weapons/slash.ogg' = 1)
/obj/item/toy/plush/lizardplushie/durgit
icon_state = "durgit"
item_state = "durgit"
squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1) //Durgit's the origin of the sound
/obj/item/toy/plush/lizardplushie/rio
icon_state = "rio"
item_state = "rio"
/obj/item/toy/plush/lizardplushie/dan
icon_state = "dan"
item_state = "dan"
/obj/item/toy/plush/lizardplushie/urinsu
icon_state = "urinsu"
item_state = "urinsu"
/obj/item/toy/plush/lizardplushie/arfrehn
icon_state = "arfrehn"
item_state = "arfrehn"
/obj/item/toy/plush/lizardplushie/soars
icon_state = "soars"
item_state = "soars"
/obj/item/toy/plush/lizardplushie/ghostie
icon_state = "ghostie"
item_state = "ghostie"
/obj/item/toy/plush/lizardplushie/amber
icon_state = "amber"
item_state = "amber"
/obj/item/toy/plush/lizardplushie/cyan
icon_state = "cyan"
item_state = "cyan"
/obj/item/toy/plush/lizardplushie/meena
icon_state = "meena"
item_state = "meena"
/obj/item/toy/plush/lizardplushie/stalks
icon_state = "stalks"
item_state = "stalks"
/obj/item/toy/plush/lizardplushie/kobold
name = "kobold plushie"
desc = "An adorable stuffed toy that resembles a kobold."
icon_state = "kobold"
item_state = "kobold"
/obj/item/toy/plush/lizardplushie/gorgi
icon_state = "gorgi"
item_state = "gorgi"
/obj/item/toy/plush/lizardplushie/almaz
icon_state = "almaz"
item_state = "almaz"
squeak_override = list('modular_citadel/sound/voice/raptor_purr.ogg' = 1)
/obj/item/toy/plush/lizardplushie/garou
icon_state = "garou"
item_state = "garou"
/obj/item/toy/plush/lizardplushie/augments
icon_state = "augments"
item_state = "augments"
squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1) //I have no mouth and I must weh
attack_verb = list("hugged", "patted", "snugged", "booped")
/obj/item/toy/plush/lizardplushie/xekov
icon_state = "xekov"
item_state = "xekov"
/obj/item/toy/plush/lizardplushie/greg
icon_state = "greg"
item_state = "greg"
/obj/item/toy/plush/lizardplushie/sin
icon_state = "sin"
item_state = "sin"
desc = "An adorable stuffed toy that resembles a lizardperson.. It faintly smells of sulfur."
/obj/item/toy/plush/lizardplushie/ends
icon_state = "ends"
item_state = "ends"
/obj/item/toy/plush/lizardplushie/lyssa
icon_state = "lyssa"
item_state = "lyssa"
/obj/item/toy/plush/snakeplushie
name = "snake plushie"
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
icon_state = "plushie_snake"
item_state = "plushie_snake"
attack_verb = list("bitten", "hissed", "tail slapped")
squeak_override = list('modular_citadel/sound/voice/hiss.ogg' = 1)
/obj/item/toy/plush/snakeplushie/sasha
icon_state = "sasha"
item_state = "sasha"
/obj/item/toy/plush/snakeplushie/shay
icon_state = "shay"
item_state = "shay"
/obj/item/toy/plush/snakeplushie/vulken
icon_state = "vulken"
item_state = "vulken"
/obj/item/toy/plush/nukeplushie
name = "operative plushie"
desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
@@ -630,29 +586,17 @@
squeak_override = list('sound/effects/blobattack.ogg' = 1)
gender = FEMALE //given all the jokes and drawings, I'm not sure the xenobiologists would make a slimeboy
/obj/item/toy/plush/slimeplushie/annie
desc = "An adorable stuffed toy that resembles a slimey crewmember."
icon_state = "annie"
item_state = "annie"
/obj/item/toy/plush/slimeplushie/paxton
desc = "An adorable stuffed toy that resembles a slimey crewmember."
icon_state = "paxton"
item_state = "paxton"
attack_verb = list("CQC'd", "jabroni'd", "powergamed", "robusted", "cakehatted")
gender = MALE
/obj/item/toy/plush/awakenedplushie
name = "awakened plushie"
desc = "An ancient plushie that has grown enlightened to the true nature of reality."
icon_state = "plushie_awake"
item_state = "plushie_awake"
can_random_spawn = FALSE
/obj/item/toy/plush/awakenedplushie/ComponentInitialize()
. = ..()
AddComponent(/datum/component/edit_complainer)
/obj/item/toy/plush/beeplushie
name = "bee plushie"
desc = "A cute toy that resembles an even cuter bee."
@@ -668,21 +612,7 @@
icon_state = "bumble"
item_state = "bumble"
squeak_override = list('modular_citadel/sound/voice/mothsqueak.ogg' = 1)
/obj/item/toy/plush/mothplushie/nameko
icon_state = "nameko"
item_state = "nameko"
/obj/item/toy/plush/mothplushie/suru
icon_state = "suru"
item_state = "suru"
/obj/item/toy/plush/xeno
name = "xenohybrid plushie"
desc = "An adorable stuffed toy that resmembles a xenomorphic crewmember."
icon_state = "seras"
item_state = "seras"
squeak_override = list('sound/voice/hiss2.ogg' = 1)
can_random_spawn = FALSE
/obj/item/toy/plush/lampplushie
name = "lamp plushie"
@@ -736,20 +666,6 @@
icon_state = "scrubpuppy"
item_state = "scrubpuppy"
/obj/item/toy/plush/borgplushie/seeking
icon_state = "seeking"
item_state = "seeking"
/obj/item/toy/plush/borgplushie/neeb
icon_state = "neeb"
item_state = "neeb"
/obj/item/toy/plush/borgplushie/bhijn
desc = "An adorable stuffed toy of a IPC."
icon_state = "bhijn"
item_state = "bhijn"
attack_verb = list("closed", "reworked", "merged")
/obj/item/toy/plush/aiplush
name = "AI plushie"
desc = "A little stuffed toy AI core... it appears to be malfunctioning."
@@ -758,246 +674,22 @@
attack_verb = list("hacked", "detonated", "overloaded")
squeak_override = list('sound/machines/beep.ogg' = 9, 'sound/machines/buzz-two.ogg' = 1)
/obj/item/toy/plush/bird
name = "bird plushie"
desc = "An adorable stuffed plushie that resembles an avian."
icon_state = "sylas"
item_state = "sylas"
attack_verb = list("peeped", "beeped", "poofed")
squeak_override = list('modular_citadel/sound/voice/peep.ogg' = 1)
/obj/item/toy/plush/bird/esela
icon_state = "esela"
item_state = "esela"
/obj/item/toy/plush/bird/jahonna
icon_state = "jahonna"
item_state = "jahonna"
/obj/item/toy/plush/bird/krick
icon_state = "krick"
item_state = "krick"
/obj/item/toy/plush/bird/birddi
icon_state = "birddi"
item_state = "birddi"
/obj/item/toy/plush/bird/jewel
icon_state = "jewel"
item_state = "jewel"
/obj/item/toy/plush/sergal
name = "sergal plushie"
desc = "An adorable stuffed plushie that resembles a sagaru."
icon_state = "faux"
item_state = "faux"
squeak_override = list('modular_citadel/sound/voice/merp.ogg' = 1)
/obj/item/toy/plush/sergal/gladwyn
icon_state = "gladwyn"
item_state = "gladwyn"
/obj/item/toy/plush/sergal/jermaine
icon_state = "jermaine"
item_state = "jermaine"
/obj/item/toy/plush/mammal
name = "mammal plushie"
desc = "An adorable stuffed toy resembling some sort of crew member."
icon_state = "dubious"
item_state = "dubious"
/obj/item/toy/plush/mammal/gavin
icon_state = "gavin"
item_state = "gavin"
/obj/item/toy/plush/mammal/blep
icon_state = "blep"
item_state = "blep"
/obj/item/toy/plush/mammal/circe
desc = "A luxuriously soft toy that resembles a nine-tailed kitsune."
icon_state = "circe"
item_state = "circe"
attack_verb = list("medicated", "tailhugged", "kissed")
/obj/item/toy/plush/mammal/robin
icon_state = "robin"
item_state = "robin"
/obj/item/toy/plush/mammal/pavel
icon_state = "pavel"
item_state = "pavel"
/obj/item/toy/plush/mammal/mason
icon_state = "mason"
item_state = "mason"
/obj/item/toy/plush/mammal/oten
icon_state = "oten"
item_state = "oten"
/obj/item/toy/plush/mammal/ray
icon_state = "ray"
item_state = "ray"
/obj/item/toy/plush/mammal/redtail
icon_state = "redtail"
item_state = "redtail"
/obj/item/toy/plush/mammal/dawud
icon_state = "dawud"
item_state = "dawud"
/obj/item/toy/plush/mammal/edgar
icon_state = "edgar"
item_state = "edgar"
attack_verb = list("collared", "tricked", "headpatted")
/obj/item/toy/plush/mammal/frank
icon_state = "frank"
item_state = "frank"
/obj/item/toy/plush/mammal/poojawa
icon_state = "poojawa"
item_state = "poojawa"
/obj/item/toy/plush/mammal/hazel
icon_state = "hazel"
item_state = "hazel"
/obj/item/toy/plush/mammal/joker
icon_state = "joker"
item_state = "joker"
/obj/item/toy/plush/mammal/gunther
icon_state = "gunther"
item_state = "gunther"
/obj/item/toy/plush/mammal/fox
icon_state = "fox"
item_state = "fox"
/obj/item/toy/plush/mammal/rae
desc = "An adorable stuffed toy of an artic fox."
icon_state = "rae"
item_state = "rae"
/obj/item/toy/plush/snakeplushie
name = "snake plushie"
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
icon_state = "plushie_snake"
item_state = "plushie_snake"
attack_verb = list("bitten", "hissed", "tail slapped")
squeak_override = list('modular_citadel/sound/voice/hiss.ogg' = 1)
/obj/item/toy/plush/mammal/zed
desc = "A masked stuffed toy that resembles a fierce miner. He even comes with his own little crusher!"
icon_state = "zed"
item_state = "zed"
attack_verb = list("ENDED", "CRUSHED", "GNOMED")
/obj/item/toy/plush/mammal/justin
icon_state = "justin"
item_state = "justin"
attack_verb = list("buttslapped", "fixed")
/obj/item/toy/plush/mammal/reece
icon_state = "reece"
item_state = "reece"
attack_verb = list("healed", "cured", "demoted")
/obj/item/toy/plush/mammal/redwood
desc = "An adorable stuffed toy resembling a Nanotrasen Captain. That just happens to be a bunny."
icon_state = "redwood"
item_state = "redwood"
attack_verb = list("ordered", "bapped", "reprimanded")
/obj/item/toy/plush/mammal/marisol
desc = "An adorable stuffed toy resembling a demi-wolf security officer."
icon_state = "marisol"
item_state = "marisol"
attack_verb = list("arrested", "harmbattoned", "lasered")
/obj/item/toy/plush/mammal/minty
desc = "An adorable stuffed toy resembling some sort of crew member. It smells like mint.."
icon_state = "minty"
item_state = "minty"
attack_verb = list("freshened", "brushed")
/obj/item/toy/plush/mammal/dog
desc = "An adorable stuffed toy that resembles a canine."
icon_state = "katlin"
item_state = "katlin"
attack_verb = list("barked", "boofed", "borked")
squeak_override = list(
'modular_citadel/sound/voice/bark1.ogg' = 1,
'modular_citadel/sound/voice/bark2.ogg' = 1
)
/obj/item/toy/plush/mammal/dog/frost
icon_state = "frost"
item_state = "frost"
/obj/item/toy/plush/mammal/dog/atticus
icon_state = "atticus"
item_state = "atticus"
/obj/item/toy/plush/mammal/dog/fletch
icon_state = "fletch"
item_state = "fletch"
/obj/item/toy/plush/mammal/dog/vincent
icon_state = "vincent"
item_state = "vincent"
/obj/item/toy/plush/mammal/dog/zigfried
desc = "An adorable stuffed toy of a very good boy."
icon_state = "zigfried"
item_state = "zigfried"
/obj/item/toy/plush/mammal/dog/nikolai
icon_state = "nikolai"
item_state = "nikolai"
/obj/item/toy/plush/mammal/dog/flynn
icon_state = "flynn"
item_state = "flynn"
/obj/item/toy/plush/mammal/dog/fritz
icon_state = "fritz"
item_state = "fritz"
attack_verb = list("barked", "boofed", "shotgun'd")
obj_flags = UNIQUE_RENAME
unique_reskin = list("Goodboye" = "fritz", "Badboye" = "fritz_bad")
/obj/item/toy/plush/mammal/dog/jesse
desc = "An adorable wolf toy that resembles a cream-colored wolf. He has a little pride flag!"
icon_state = "jesse"
item_state = "jesse"
attack_verb = list("greeted", "merc'd", "howdy'd")
/obj/item/toy/plush/catgirl
name = "feline plushie"
desc = "An adorable stuffed toy that resembles a feline."
icon_state = "bailey"
item_state = "bailey"
attack_verb = list("headbutt", "scritched", "bit")
squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
/obj/item/toy/plush/catgirl/mikeel
desc = "An adorable stuffed toy of some tauric cat person."
icon_state = "mikeel"
item_state = "mikeel"
/obj/item/toy/plush/catgirl/skylar
desc = "An adorable stuffed toy that resembles a degenerate."
icon_state = "skylar2"
item_state = "skylar2"
attack_verb = list("powergamed", "merged", "tabled")
squeak_override = list('sound/effects/meow1.ogg' = 1)
/obj/item/toy/plush/catgirl/drew
icon_state = "drew"
item_state = "drew"
/obj/item/toy/plush/catgirl/trilby
desc = "A masked stuffed toy that resembles a feline scientist."
icon_state = "trilby"
item_state = "trilby"
attack_verb = list("PR'd", "coded", "remembered")
/obj/item/toy/plush/mammal
name = "mammal plushie"
desc = "An adorable stuffed toy resembling some sort of crew member."
can_random_spawn = FALSE
/obj/item/toy/plush/catgirl/fermis
name = "medcat plushie"
@@ -1007,20 +699,36 @@
attack_verb = list("cuddled", "petpatted", "wigglepurred")
squeak_override = list('modular_citadel/sound/voice/merowr.ogg' = 1)
/obj/item/toy/plush/catgirl/mariaf
desc = "An adorable stuffed toy that resembles a very tall cat girl."
icon_state = "mariaf"
item_state = "mariaf"
attack_verb = list("hugged", "stabbed", "licked")
/obj/item/toy/plush/xeno
name = "xenohybrid plushie"
desc = "An adorable stuffed toy that resmembles a xenomorphic crewmember."
squeak_override = list('sound/voice/hiss2.ogg' = 1)
can_random_spawn = FALSE
/obj/item/toy/plush/catgirl/maya
desc = "An adorable stuffed toy that resembles an angry cat girl. She has her own tiny nuke disk!"
icon_state = "maya"
item_state = "maya"
attack_verb = list("nuked", "arrested", "harmbatonned")
/obj/item/toy/plush/bird
name = "bird plushie"
desc = "An adorable stuffed plushie that resembles an avian."
attack_verb = list("peeped", "beeped", "poofed")
squeak_override = list('modular_citadel/sound/voice/peep.ogg' = 1)
can_random_spawn = FALSE
/obj/item/toy/plush/catgirl/marisa
desc = "An adorable stuffed toy that resembles a crew member, or maybe a witch. Having it makes you feel you can win."
icon_state = "marisa"
item_state = "marisa"
attack_verb = list("blasted", "sparked", "dazzled")
/obj/item/toy/plush/sergal
name = "sergal plushie"
desc = "An adorable stuffed plushie that resembles a sagaru."
squeak_override = list('modular_citadel/sound/voice/merp.ogg' = 1)
can_random_spawn = FALSE
/obj/item/toy/plush/mammal/dog
desc = "An adorable stuffed toy that resembles a canine."
attack_verb = list("barked", "boofed", "borked")
squeak_override = list(
'modular_citadel/sound/voice/bark1.ogg' = 1,
'modular_citadel/sound/voice/bark2.ogg' = 1
)
/obj/item/toy/plush/catgirl
name = "feline plushie"
desc = "An adorable stuffed toy that resembles a feline."
attack_verb = list("headbutt", "scritched", "bit")
squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
can_random_spawn = FALSE
@@ -1,7 +1,11 @@
/* Glass stack types
* Contains:
* Glass sheets
* Plasma glass
* Reinforced glass sheets
* Reinforced plasma glass
* Titanium glass
* Plastitanium glass
* Glass shards - TODO: Move this into code/game/object/item/weapons
*/
@@ -373,4 +377,8 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
throwforce = 11
icon_state = "plasmalarge"
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
icon_prefix = "plasma"
icon_prefix = "plasma"
/obj/item/shard/plasma/alien
name = "alien shard"
desc = "A nasty looking shard of advanced alloy glass."
@@ -401,6 +401,8 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 2, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 15, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien bar stool", /obj/item/chair/stool/bar/alien, 1, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien stool", /obj/item/chair/stool/alien, 1, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 20, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \
@@ -698,6 +698,16 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
/*
* Bones
*/
GLOBAL_LIST_INIT(bone_recipes, list(
new /datum/stack_recipe("Bone Dagger", /obj/item/kitchen/knife/combat/bone, 2, time = 20), \
new /datum/stack_recipe("Skull Helmet", /obj/item/clothing/head/helmet/skull, 4, time = 30), \
new /datum/stack_recipe("Bone Armor", /obj/item/clothing/suit/armor/bone, 6, time = 30)))
/obj/item/stack/sheet/bone/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.bone_recipes
. = ..()
/obj/item/stack/sheet/bone
name = "bones"
icon = 'icons/obj/mining.dmi'
@@ -714,6 +724,10 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
grind_results = list(/datum/reagent/carbon = 10)
merge_type = /obj/item/stack/sheet/bone
/*
* Plastic
*/
GLOBAL_LIST_INIT(plastic_recipes, list(
new /datum/stack_recipe("see-through plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \
new /datum/stack_recipe("opaque plastic flaps", /obj/structure/plasticflaps/opaque, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \
+3
View File
@@ -244,3 +244,6 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna)
return FALSE
/obj/item/storage/book/bible/syndicate/empty
uses = 0
+59
View File
@@ -1288,3 +1288,62 @@
/obj/item/storage/box/marshmallow/PopulateContents()
for (var/i in 1 to 5)
new /obj/item/reagent_containers/food/snacks/marshmallow(src)
/obj/item/storage/box/material/PopulateContents() //less uranium because radioactive
var/static/items_inside = list(
/obj/item/stack/sheet/metal/fifty=1,\
/obj/item/stack/sheet/glass/fifty=1,\
/obj/item/stack/sheet/rglass=50,\
/obj/item/stack/sheet/plasmaglass=50,\
/obj/item/stack/sheet/titaniumglass=50,\
/obj/item/stack/sheet/plastitaniumglass=50,\
/obj/item/stack/sheet/plasteel=50,\
/obj/item/stack/sheet/mineral/plastitanium=50,\
/obj/item/stack/sheet/mineral/titanium=50,\
/obj/item/stack/sheet/mineral/gold=50,\
/obj/item/stack/sheet/mineral/silver=50,\
/obj/item/stack/sheet/mineral/plasma=50,\
/obj/item/stack/sheet/mineral/uranium=50,\
/obj/item/stack/sheet/mineral/diamond=50,\
/obj/item/stack/sheet/bluespace_crystal=50,\
/obj/item/stack/sheet/mineral/bananium=50,\
/obj/item/stack/sheet/mineral/wood=50,\
/obj/item/stack/sheet/plastic/fifty=1,\
/obj/item/stack/sheet/runed_metal/fifty=1
)
generate_items_inside(items_inside, src)
/obj/item/storage/box/debugtools
name = "box of debug tools"
icon_state = "syndiebox"
/obj/item/storage/box/debugtools/PopulateContents()
var/static/items_inside = list(
/obj/item/flashlight/emp/debug=1,\
/obj/item/pda=1,\
/obj/item/modular_computer/tablet/preset/advanced=1,\
/obj/item/geiger_counter=1,\
/obj/item/construction/rcd/combat/admin=1,\
/obj/item/pipe_dispenser=1,\
/obj/item/card/emag=1,\
/obj/item/healthanalyzer/advanced=1,\
/obj/item/disk/tech_disk/debug=1,\
/obj/item/uplink/debug=1,\
/obj/item/uplink/nuclear/debug=1,\
/obj/item/storage/box/beakers/bluespace=1,\
/obj/item/storage/box/beakers/variety=1,\
/obj/item/storage/box/material=1,\
/obj/item/storage/belt/medical/surgery_belt_adv
)
generate_items_inside(items_inside, src)
/obj/item/storage/box/beakers/variety
name = "beaker variety box"
/obj/item/storage/box/beakers/variety/PopulateContents()
new /obj/item/reagent_containers/glass/beaker(src)
new /obj/item/reagent_containers/glass/beaker/large(src)
new /obj/item/reagent_containers/glass/beaker/plastic(src)
new /obj/item/reagent_containers/glass/beaker/meta(src)
new /obj/item/reagent_containers/glass/beaker/noreact(src)
new /obj/item/reagent_containers/glass/beaker/bluespace(src)
+3 -4
View File
@@ -15,7 +15,7 @@
attack_verb = list("beaten")
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
var/stunforce = 140
var/stunforce = 70
var/status = FALSE
var/obj/item/stock_parts/cell/cell
var/hitcost = 1000
@@ -187,9 +187,8 @@
return FALSE
stunpwr *= round(stuncharge/hitcost, 0.1)
L.DefaultCombatKnockdown(stunpwr)
L.adjustStaminaLoss(stunpwr*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
L.apply_damage(stunpwr*0.5, STAMINA, user.zone_selected)
L.apply_effect(EFFECT_STUTTER, stunforce)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
if(user)
@@ -274,7 +273,7 @@
w_class = WEIGHT_CLASS_BULKY
force = 3
throwforce = 5
stunforce = 100
stunforce = 60
hitcost = 2000
throw_hit_chance = 10
slot_flags = ITEM_SLOT_BACK
+2
View File
@@ -453,6 +453,7 @@
force_wielded = 0
attack_verb = list("attacked", "struck", "hit")
total_mass_on = TOTAL_MASS_TOY_SWORD
sharpness = IS_BLUNT
/obj/item/twohanded/dualsaber/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
return FALSE
@@ -472,6 +473,7 @@
attack_verb = list("attacked", "struck", "hit")
total_mass_on = TOTAL_MASS_TOY_SWORD
slowdown_wielded = 0
sharpness = IS_BLUNT
/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
return FALSE
+1 -1
View File
@@ -125,7 +125,7 @@
if ((M.client && M.machine == src))
is_in_use = TRUE
ui_interact(M)
if(isAI(usr) || iscyborg(usr) || IsAdminGhost(usr))
if(isAI(usr) || iscyborg(usr) || IsAdminGhost(usr) || hasSiliconAccessInArea(usr))
if (!(usr in nearby))
if (usr.client && usr.machine==src) // && M.machine == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh.
is_in_use = TRUE
+1 -1
View File
@@ -37,7 +37,7 @@
structureclimber.visible_message("<span class='warning'>[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].</span>")
/obj/structure/ui_act(action, params)
..()
. = ..()
add_fingerprint(usr)
/obj/structure/MouseDrop_T(atom/movable/O, mob/user)
@@ -370,6 +370,43 @@
item_state = "stool_bar"
origin_type = /obj/structure/chair/stool/bar
//////////////////////////
//Alien(Disco) Stools!////
//////////////////////////
/obj/structure/chair/stool/alien
name = "alien stool"
desc = "A hard stool made of advanced alien alloy."
icon_state = "stoolalien"
icon = 'icons/obj/abductor.dmi'
item_chair = /obj/item/chair/stool/alien
buildstacktype = /obj/item/stack/sheet/mineral/abductor
buildstackamount = 1
/obj/structure/chair/stool/bar/alien
name = "bronze bar stool"
desc = "A hard bar stool made of advanced alien alloy."
icon_state = "baralien"
icon = 'icons/obj/abductor.dmi'
item_chair = /obj/item/chair/stool/bar/alien
buildstacktype = /obj/item/stack/sheet/mineral/abductor
buildstackamount = 1
/obj/item/chair/stool/alien
name = "stool"
icon_state = "stoolalien_toppled"
item_state = "stoolalien"
icon = 'icons/obj/abductor.dmi'
origin_type = /obj/structure/chair/stool/alien
break_chance = 0 //It's too sturdy.
/obj/item/chair/stool/bar/alien
name = "bar stool"
icon_state = "baralien_toppled"
item_state = "baralien"
icon = 'icons/obj/abductor.dmi'
origin_type = /obj/structure/chair/stool/bar/alien
//////////////////////////
//Brass & Bronze stools!//
//////////////////////////
+8 -2
View File
@@ -8,14 +8,16 @@
max_integrity = 1
armor = list("melee" = 0, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20)
var/obj/item/holosign_creator/projector
var/init_vis_overlay = TRUE
/obj/structure/holosign/Initialize(mapload, source_projector)
. = ..()
if(source_projector)
projector = source_projector
projector.signs += src
SSvis_overlays.add_vis_overlay(src, icon, icon_state, ABOVE_MOB_LAYER, plane, dir, alpha, RESET_ALPHA) //you see mobs under it, but you hit them like they are above it
alpha = 0
if(init_vis_overlay)
SSvis_overlays.add_vis_overlay(src, icon, icon_state, ABOVE_MOB_LAYER, plane, dir, alpha, RESET_ALPHA) //you see mobs under it, but you hit them like they are above it
alpha = 0
/obj/structure/holosign/Destroy()
if(projector)
@@ -74,8 +76,10 @@
icon_state = "holo_fan"
density = FALSE
anchored = TRUE
layer = ABOVE_NORMAL_TURF_LAYER
CanAtmosPass = ATMOS_PASS_NO
alpha = 150
init_vis_overlay = FALSE
/obj/structure/holosign/barrier/atmos/Initialize()
. = ..()
@@ -100,7 +104,9 @@
max_integrity = 30
density = FALSE
anchored = TRUE
layer = ABOVE_NORMAL_TURF_LAYER
alpha = 150
init_vis_overlay = FALSE
CanAtmosPass = ATMOS_PASS_NO
resistance_flags = FIRE_PROOF
+1 -1
View File
@@ -168,7 +168,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
/obj/structure/bodycontainer/morgue/AltClick(mob/user)
. = ..()
if(!user.canUseTopic(src, !issilicon(user)))
if(!user.canUseTopic(src, !hasSiliconAccessInArea(user)))
return
beeper = !beeper
to_chat(user, "<span class='notice'>You turn the speaker function [beeper ? "on" : "off"].</span>")
+8
View File
@@ -595,6 +595,14 @@
/obj/structure/window/plastitanium/unanchored
anchored = FALSE
//pirate ship windows
/obj/structure/window/plastitanium/pirate
desc = "Yarr this window be explosion proof!"
explosion_block = 30
/obj/structure/window/plastitanium/pirate/unanchored
anchored = FALSE
/obj/structure/window/reinforced/clockwork
name = "brass window"
desc = "A paper-thin pane of translucent yet reinforced brass."