Merge remote-tracking branch 'upstream/master' into kk-rings
@@ -254,19 +254,19 @@
|
||||
if (!(src.status))
|
||||
if(user)
|
||||
visible_message(span_notice(" [user] has deactivated [src]!"))
|
||||
add_hiddenprint(user)
|
||||
else
|
||||
visible_message(span_notice(" [src] clicks and shuts down. "))
|
||||
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
add_hiddenprint(user)
|
||||
else
|
||||
if(user)
|
||||
visible_message(span_notice(" [user] has reactivated [src]!"))
|
||||
add_hiddenprint(user)
|
||||
else
|
||||
visible_message(span_notice(" [src] clicks and reactivates itself. "))
|
||||
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||
icon_state = initial(icon_state)
|
||||
add_hiddenprint(user)
|
||||
|
||||
/obj/machinery/camera/take_damage(var/force, var/message)
|
||||
//prob(25) gives an average of 3-4 hits
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
/obj/machinery/contraband_scanner
|
||||
name = "contraband scanner"
|
||||
gender = PLURAL
|
||||
icon = 'icons/obj/atm_fieldgen.dmi'
|
||||
icon_state = "arfg_off"
|
||||
desc = "A simple scanner that analyzes those who pass over it, and sounds an alarm if it detects any items that are programmed into its contraband list."
|
||||
anchored = TRUE
|
||||
opacity = FALSE
|
||||
density = FALSE
|
||||
power_channel = EQUIP
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 250
|
||||
|
||||
var/deep_scan = TRUE //check more than just their hands/pockets?
|
||||
var/contraband_count = 0 //how many items have we detected? only one actually needs to be found to set off the alarm
|
||||
var/area_lockdown = TRUE //do we set off the fire alarm for our area when triggered?
|
||||
var/close_blastdoors = TRUE //close all blast doors in the area when triggered?
|
||||
var/power_fields = TRUE //do we activate all ARFs when triggered? use w/ impassable fieldgens. requires area_lockdown = TRUE to do anything.
|
||||
|
||||
var/last_trigger //when were we last triggered? combined with the cooldown below for sanity reasons
|
||||
var/cooldown = 15 SECONDS //minimum time between retriggers, so people can't spam trigger the scanner to be obnoxious
|
||||
var/auto_cancel = TRUE //automatically cancel alarm states after a delay? same duration as the cooldown for sanity
|
||||
var/trigger_message = "The contraband scanner has been tripped!"
|
||||
var/trigger_sound = 'sound/machines/airalarm.ogg' //sound that plays when we're set off
|
||||
|
||||
var/list/contraband = list(/obj/item/melee,/obj/item/gun,/obj/item/material)
|
||||
|
||||
/obj/machinery/contraband_scanner/Crossed(mob/living/M as mob)
|
||||
if(M.is_incorporeal())
|
||||
return
|
||||
if(isliving(M))
|
||||
var/area/A = src.loc.loc
|
||||
if(last_trigger > world.time - cooldown)
|
||||
return
|
||||
for(var/obj/O in M.contents)
|
||||
if(is_type_in_list(O,contraband))
|
||||
contraband_count++
|
||||
if(deep_scan)
|
||||
for(var/obj/O2 in O.contents) //one layer deep is fine for now I think
|
||||
if(is_type_in_list(O2,contraband))
|
||||
contraband_count++
|
||||
if(contraband_count && last_trigger < world.time - cooldown)
|
||||
visible_message(span_danger(trigger_message))
|
||||
playsound(src, trigger_sound, 25, 0, 4, volume_channel = VOLUME_CHANNEL_ALARMS)
|
||||
for(var/obj/machinery/contraband_scanner/CS in A)
|
||||
CS.last_trigger = world.time //set everyone's trigger time at once, to cut down on spam
|
||||
CS.contraband_count = 0 //clear all our contraband counts too
|
||||
if(area_lockdown)
|
||||
if(close_blastdoors)
|
||||
for(var/obj/machinery/door/blast/B in A)
|
||||
if(!B.density)
|
||||
spawn(0)
|
||||
B.close()
|
||||
if(power_fields)
|
||||
A.arfgs_activate()
|
||||
if(auto_cancel)
|
||||
spawn(cooldown)
|
||||
if(close_blastdoors)
|
||||
for(var/obj/machinery/door/blast/B in A)
|
||||
if(B.density)
|
||||
spawn(0)
|
||||
B.open()
|
||||
if(power_fields)
|
||||
A.arfgs_deactivate()
|
||||
|
||||
..()
|
||||
@@ -112,6 +112,10 @@ var/global/list/image/splatter_cache=list()
|
||||
var/obj/structure/bed/chair/wheelchair/W = perp.buckled
|
||||
W.bloodiness = 4
|
||||
|
||||
if(viruses)
|
||||
for(var/datum/disease/D in viruses)
|
||||
perp.ContractDisease(D)
|
||||
|
||||
amount--
|
||||
|
||||
/obj/effect/decal/cleanable/blood/proc/dry()
|
||||
@@ -124,6 +128,11 @@ var/global/list/image/splatter_cache=list()
|
||||
..()
|
||||
if (amount && istype(user))
|
||||
add_fingerprint(user)
|
||||
|
||||
if(viruses)
|
||||
for(var/datum/disease/D in viruses)
|
||||
user.ContractDisease(D)
|
||||
|
||||
if (user.gloves)
|
||||
return
|
||||
var/taken = rand(1,amount)
|
||||
@@ -258,4 +267,14 @@ var/global/list/image/splatter_cache=list()
|
||||
viruses.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/mucus/Crossed(mob/living/carbon/human/perp)
|
||||
if(viruses)
|
||||
for(var/datum/disease/D in viruses)
|
||||
perp.ContractDisease(D)
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/Crossed(mob/living/carbon/human/perp)
|
||||
if(viruses)
|
||||
for(var/datum/disease/D in viruses)
|
||||
perp.ContractDisease(D)
|
||||
|
||||
#undef DRYING_TIME
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
disrupt()
|
||||
..()
|
||||
|
||||
/obj/item/chameleon/attack_self()
|
||||
toggle()
|
||||
/obj/item/chameleon/attack_self(mob/user)
|
||||
toggle(user)
|
||||
|
||||
/obj/item/chameleon/afterattack(atom/target, mob/user , proximity)
|
||||
/obj/item/chameleon/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!active_dummy)
|
||||
if(istype(target,/obj/item) && !istype(target, /obj/item/disk/nuclear))
|
||||
@@ -42,30 +42,32 @@
|
||||
saved_icon_state = target.icon_state
|
||||
saved_overlays = target.overlays
|
||||
|
||||
/obj/item/chameleon/proc/toggle()
|
||||
/obj/item/chameleon/proc/toggle(mob/user)
|
||||
if(!can_use || !saved_item) return
|
||||
if(active_dummy)
|
||||
eject_all()
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
to_chat(usr, span_notice("You deactivate the [src]."))
|
||||
to_chat(user, span_notice("You deactivate the [src]."))
|
||||
var/obj/effect/overlay/T = new /obj/effect/overlay(get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
spawn(8) qdel(T)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), T), 0.8 SECONDS, TIMER_DELETE_ME)
|
||||
else
|
||||
playsound(src, 'sound/effects/pop.ogg', 100, 1, -6)
|
||||
var/obj/O = new saved_item(src)
|
||||
if(!O) return
|
||||
var/obj/effect/dummy/chameleon/C = new /obj/effect/dummy/chameleon(usr.loc)
|
||||
C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, src)
|
||||
if(istype(user.loc, /obj/item/holder)) // This doesn't go well...
|
||||
return
|
||||
var/obj/effect/dummy/chameleon/C = new /obj/effect/dummy/chameleon(user.loc)
|
||||
C.activate(O, user, saved_icon, saved_icon_state, saved_overlays, src)
|
||||
qdel(O)
|
||||
to_chat(usr, span_notice("You activate the [src]."))
|
||||
to_chat(user, span_notice("You activate the [src]."))
|
||||
var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src))
|
||||
T.icon = 'icons/effects/effects.dmi'
|
||||
flick("emppulse",T)
|
||||
spawn(8) qdel(T)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), T), 0.8 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/obj/item/chameleon/proc/disrupt(var/delete_dummy = 1)
|
||||
if(active_dummy)
|
||||
@@ -78,7 +80,10 @@
|
||||
qdel(active_dummy)
|
||||
active_dummy = null
|
||||
can_use = 0
|
||||
spawn(50) can_use = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_use)), 5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/obj/item/chameleon/proc/allow_use()
|
||||
can_use = 1
|
||||
|
||||
/obj/item/chameleon/proc/eject_all()
|
||||
for(var/atom/movable/A in active_dummy)
|
||||
@@ -127,6 +132,9 @@
|
||||
..()
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/proc/allow_move()
|
||||
can_move = 1
|
||||
|
||||
/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction)
|
||||
if(istype(loc, /turf/space)) return //No magical space movement!
|
||||
|
||||
@@ -134,15 +142,15 @@
|
||||
can_move = 0
|
||||
switch(user.bodytemperature)
|
||||
if(300 to INFINITY)
|
||||
spawn(10) can_move = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_move)), 1 SECOND, TIMER_DELETE_ME)
|
||||
if(295 to 300)
|
||||
spawn(13) can_move = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_move)), 1.3 SECONDS, TIMER_DELETE_ME)
|
||||
if(280 to 295)
|
||||
spawn(16) can_move = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_move)), 1.6 SECONDS, TIMER_DELETE_ME)
|
||||
if(260 to 280)
|
||||
spawn(20) can_move = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_move)), 2 SECONDS, TIMER_DELETE_ME)
|
||||
else
|
||||
spawn(25) can_move = 1
|
||||
addtimer(CALLBACK(src, PROC_REF(allow_move)), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||
step(src, direction)
|
||||
return
|
||||
|
||||
|
||||
@@ -572,21 +572,25 @@
|
||||
|
||||
/obj/item/radio/headset/syndicate
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
icon_state = "syndie_headset"
|
||||
syndie = 1
|
||||
ks1type = /obj/item/encryptionkey/syndicate
|
||||
|
||||
/obj/item/radio/headset/alt/syndicate
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
icon_state = "syndie_headset_alt"
|
||||
syndie = 1
|
||||
ks1type = /obj/item/encryptionkey/syndicate
|
||||
|
||||
/obj/item/radio/headset/earbud/syndicate
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
icon_state = "syndie_earbud"
|
||||
syndie = 1
|
||||
ks1type = /obj/item/encryptionkey/syndicate
|
||||
|
||||
/obj/item/radio/headset/raider
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
icon_state = "syndie_headset"
|
||||
syndie = 1
|
||||
ks1type = /obj/item/encryptionkey/raider
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@
|
||||
else
|
||||
dat += span_warning("Unknown substance[(unknown > 1)?"s":""] found in subject's dermis.")
|
||||
dat += "<br>"
|
||||
if(C.resistances.len)
|
||||
if(LAZYLEN(C.resistances))
|
||||
for (var/datum/disease/virus in C.GetViruses())
|
||||
if(virus.visibility_flags & HIDDEN_SCANNER || virus.visibility_flags & HIDDEN_PANDEMIC)
|
||||
continue
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
//For bypassing locked /obj/structure/simple_doors
|
||||
|
||||
/obj/item/lockpick
|
||||
name = "set of lockpicks"
|
||||
desc = "A set of picks and tension wrenches, ideal for picking old-style mechanical locks... not that any of those exist on most NT facilities these days. Still, it might be useful elsewhere?"
|
||||
icon = 'icons/obj/lockpicks.dmi'
|
||||
icon_state = "lockpicks"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
var/pick_type = "simple"
|
||||
var/pick_time = 10 SECONDS
|
||||
var/pick_verb = "pick"
|
||||
|
||||
/obj/item/lockpick/afterattack(atom/A, mob/user)
|
||||
if(!user.IsAdvancedToolUser()) //no lockpicking for monkeys
|
||||
return
|
||||
if(istype(A, /obj/structure/simple_door))
|
||||
var/obj/structure/simple_door/D = A
|
||||
if(!D.locked) //you can pick your nose, but you can't pick an unlocked door
|
||||
to_chat(user, span_notice("\The [D] isn't locked."))
|
||||
return
|
||||
else if(D.lock_type != pick_type) //make sure our types match
|
||||
to_chat(user, span_warning("\The [src] can't pick \the [D]. Another tool might work?"))
|
||||
return
|
||||
else if(!D.can_pick) //make sure we're actually allowed to bypass it at all
|
||||
to_chat(user, span_warning("\The [D] can't be [pick_verb]ed."))
|
||||
return
|
||||
else //finally, we can assume that they do match
|
||||
to_chat(user, span_notice("You start to [pick_verb] the lock on \the [D]..."))
|
||||
playsound(src, D.keysound,100, 1)
|
||||
if(do_after(user, pick_time * D.lock_difficulty))
|
||||
to_chat(user, span_notice("Success!"))
|
||||
D.locked = FALSE
|
||||
else if(istype(A,/mob/living/carbon/human)) //you can pick your friends, and you can pick your nose, but you can't pick your friend's nose
|
||||
var/mob/living/carbon/human/H = A
|
||||
if(user.zone_sel.selecting == BP_HEAD)
|
||||
if(H == user)
|
||||
to_chat(user, span_notice("Your nose isn't locked. If you're feeling stuffy, maybe you should talk to a doctor..?"))
|
||||
else
|
||||
user.visible_message(span_notice("[user] tries to [pick_verb] [H]'s nose with \the [src]! They don't seem to be having much success."),span_notice("You try to [pick_verb] [H]'s nose. It doesn't seem to be working."))
|
||||
return
|
||||
|
||||
/obj/item/lockpick/pick_gun
|
||||
name = "pick gun"
|
||||
desc = "A more sophisticated and automated alternative to traditional lockpicking methods. Contains a dazzling array of tools in a simple-to-use housing: just press the face plate against the lock face and hold the trigger down until it goes click."
|
||||
icon_state = "pick_gun"
|
||||
pick_time = 3 SECONDS
|
||||
|
||||
/obj/item/lockpick/mag_sequencer
|
||||
name = "magnetic sequencer"
|
||||
desc = "A deceptively simple gadget that brute-forces magnetic locks using a small electromagnet. A predecessor to the cryptographic sequencer, a more complicated device that is considered contraband in most jurisdictions. Not that these aren't illegal either, mind you!"
|
||||
icon_state = "mag_sequencer"
|
||||
pick_type = "maglock"
|
||||
pick_time = 5 SECONDS
|
||||
pick_verb = "bypass"
|
||||
@@ -16,4 +16,24 @@
|
||||
else
|
||||
M.ClearTransform()
|
||||
M.update_transform()
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
// Do not ever just leave this laying about, it will go horribly wrong!
|
||||
/obj/item/squishhammer/dark
|
||||
name = "The Dark Short Stacker"
|
||||
desc = "Wield the power of this weapon with responsibility (God knows you won't)."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "dark_hammer"
|
||||
attack_verb = list("stacked")
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/squishhammer/dark/attack(mob/M as mob, mob/user as mob)
|
||||
..()
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H))
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
E.fracture() // Oof, ouch, owie
|
||||
var/turf/T = M.loc
|
||||
if(isturf(T))
|
||||
new /obj/effect/gibspawner/generic(T)
|
||||
|
||||
@@ -108,12 +108,12 @@
|
||||
if(M == user)
|
||||
if(!M.can_eat(loaded))
|
||||
return
|
||||
M.visible_message(span_bold("\The [user]") + "eats some of [loaded] with \the [src].")
|
||||
M.visible_message(span_bold("\The [user]") + " eats some of [loaded] with \the [src].")
|
||||
else
|
||||
user.visible_message(span_warning("\The [user] begins to feed \the [M]!"))
|
||||
if(!(M.can_force_feed(user, loaded) && do_mob(user, M, 5 SECONDS)))
|
||||
return
|
||||
M.visible_message(span_bold("\The [user]") + "feeds some of [loaded] to \the [M] with \the [src].")
|
||||
M.visible_message(span_bold("\The [user]") + " feeds some of [loaded] to \the [M] with \the [src].")
|
||||
playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1)
|
||||
loaded = null
|
||||
update_icon()
|
||||
|
||||
@@ -13,4 +13,42 @@
|
||||
sharp = TRUE
|
||||
edge = FALSE
|
||||
attack_verb = list("stabbed", "lunged at", "dextrously struck", "sliced", "lacerated", "impaled", "diced", "charioted")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
/obj/item/melee/hammer
|
||||
name = "claw hammer"
|
||||
desc = "A simple claw hammer for hitting things or people with, and the claw part probably does something too."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "claw_hammer"
|
||||
force = 15
|
||||
throwforce = 10
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("smashed", "swung at", "pummelled", "nailed", "crushed", "bonked", "hammered", "cracked")
|
||||
defend_chance = 0
|
||||
|
||||
/obj/item/melee/hammer/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone, var/attack_modifier)
|
||||
if(istype(target,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(prob(50))
|
||||
var/obj/item/organ/external/affecting = H.get_organ(hit_zone)
|
||||
affecting.fracture()
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/hammer/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
..()
|
||||
if(A)
|
||||
if(istype(A,/obj/structure/window))
|
||||
var/obj/structure/window/W = A
|
||||
if(prob(50))
|
||||
W.visible_message(span_warning("\The [W] shatters under the force of the impact!"))
|
||||
W.shatter()
|
||||
else if(istype(A,/obj/structure/barricade))
|
||||
var/obj/structure/barricade/B = A
|
||||
if(prob(50))
|
||||
B.visible_message(span_warning("\The [B] is broken apart with ease!"))
|
||||
B.dismantle()
|
||||
else if(istype(A,/obj/structure/grille))
|
||||
if(prob(50))
|
||||
A.visible_message(span_warning("\The [A] is smashed open!"))
|
||||
qdel(A)
|
||||
|
||||
@@ -556,9 +556,9 @@
|
||||
* This one is a bit more fancy than others. Anything in the contents (PLEASE LIMIT TO ONE THING)
|
||||
* will show up inside it! Also if you map in an item on it, it will grab that at mapload and start
|
||||
* in the 'closed, full of fluid' state, so you can put a body on it or whatever.
|
||||
*
|
||||
*
|
||||
* As an aghost you can also dragdrop something into it (you have to be ghosted next to it)
|
||||
*
|
||||
*
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* open: Open, no fluid or anything. At the end the contents are ejected.
|
||||
* closed: Closed, full of liquid
|
||||
@@ -582,7 +582,7 @@
|
||||
/obj/structure/prop/machine/nt_pod/Initialize(mapload)
|
||||
// Our non-map-preview state
|
||||
icon_state = "nt_pod"
|
||||
|
||||
|
||||
// Alpha mask to make sure things don't sneak out
|
||||
var/obj/effect/overlay/vis/mask = new
|
||||
mask.icon = icon
|
||||
@@ -607,7 +607,7 @@
|
||||
// Save old settings
|
||||
contents_vis_flags = AM.vis_flags
|
||||
contents_original_pixel_y = AM.pixel_y
|
||||
|
||||
|
||||
// Arrange
|
||||
AM.add_filter("podmask", 1, alpha_mask_filter(render_source = "nt_podmask[REF(src)]", flags = MASK_INVERSE))
|
||||
AM.pixel_y = 12
|
||||
@@ -616,7 +616,7 @@
|
||||
if(ismob(AM))
|
||||
var/mob/M = AM
|
||||
buckle_mob(M, TRUE, FALSE)
|
||||
|
||||
|
||||
// TRAP THEM
|
||||
change_state("closed")
|
||||
|
||||
@@ -639,7 +639,7 @@
|
||||
return
|
||||
if(!user.client?.holder)
|
||||
return
|
||||
|
||||
|
||||
AM.forceMove(src)
|
||||
|
||||
/obj/structure/prop/machine/nt_pod/change_state(state)
|
||||
@@ -648,17 +648,17 @@
|
||||
if("open")
|
||||
cut_overlay("nt_pod_top_on")
|
||||
cut_overlay("nt_pod_under")
|
||||
|
||||
|
||||
// Fluid drains
|
||||
fluid.icon_state = "nothing"
|
||||
flick("nt_pod_emptying", fluid) // 8ds
|
||||
sleep(8)
|
||||
|
||||
|
||||
// Door opens
|
||||
door.icon_state = "nothing"
|
||||
flick("nt_pod_opening", door) // 9ds
|
||||
sleep(9)
|
||||
|
||||
|
||||
// GET OUT
|
||||
outside.layer = BELOW_MOB_LAYER
|
||||
if(contents.len)
|
||||
@@ -670,7 +670,7 @@
|
||||
cut_overlay("nt_pod_top_on")
|
||||
add_overlay("nt_pod_top_on")
|
||||
add_overlay("nt_pod_under")
|
||||
|
||||
|
||||
// Door closes
|
||||
door.icon_state = "nt_pod_glass"
|
||||
flick("nt_pod_closing", door) // 9ds
|
||||
@@ -683,4 +683,90 @@
|
||||
cut_overlay("nt_pod_panel")
|
||||
add_overlay("nt_pod_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("nt_pod_panel")
|
||||
cut_overlay("nt_pod_panel")
|
||||
|
||||
// Old Virology stuff
|
||||
|
||||
/obj/structure/prop/machine/centrifuge
|
||||
name = "centrifuge"
|
||||
desc = "Used to separate things with different weight. Spin 'em round, round, right round."
|
||||
icon = 'icons/obj/virology_vr.dmi'
|
||||
icon_state = "centrifuge"
|
||||
var/on = FALSE
|
||||
|
||||
/obj/structure/prop/machine/centrifuge/attack_hand(mob/user as mob)
|
||||
..()
|
||||
|
||||
if(!on)
|
||||
on = TRUE
|
||||
user.visible_message("\The [user] turns on \the [src].")
|
||||
icon_state = "centrifuge_moving"
|
||||
else
|
||||
on = FALSE
|
||||
user.visible_message("\The [user] turns off \the [src].")
|
||||
icon_state = "centrifuge"
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/prop/machine/incubator
|
||||
name = "incubator"
|
||||
desc = "Encourages the growth of diseases. This model comes with a dispenser system and a small radiation generator."
|
||||
icon = 'icons/obj/virology_vr.dmi'
|
||||
icon_state = "incubator"
|
||||
var/on = FALSE
|
||||
|
||||
/obj/structure/prop/machine/incubator/attack_hand(mob/user as mob)
|
||||
..()
|
||||
|
||||
if(!on)
|
||||
on = TRUE
|
||||
user.visible_message("\The [user] turns on \the [src].")
|
||||
icon_state = "incubator_on"
|
||||
else
|
||||
on = FALSE
|
||||
user.visible_message("\The [user] turns off \the [src].")
|
||||
icon_state = "incubator"
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/prop/machine/disease_analyser
|
||||
name = "disease analyser"
|
||||
desc = "Analyzes diseases to find out information about them!"
|
||||
icon = 'icons/obj/virology_vr.dmi'
|
||||
icon_state = "analyser"
|
||||
var/on = FALSE
|
||||
|
||||
/obj/structure/prop/machine/disease_analyser/attack_hand(mob/user as mob)
|
||||
..()
|
||||
|
||||
if(!on)
|
||||
on = TRUE
|
||||
user.visible_message("\The [user] turns on \the [src].")
|
||||
icon_state = "analyser_"
|
||||
else
|
||||
on = FALSE
|
||||
user.visible_message("\The [user] turns off \the [src].")
|
||||
icon_state = "analyser"
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/prop/machine/isolator
|
||||
name = "disease isolator"
|
||||
desc = "Used to isolate and identify diseases, allowing for comparison with a remote database."
|
||||
icon = 'icons/obj/virology_vr.dmi'
|
||||
icon_state = "isolator_in"
|
||||
var/on = FALSE
|
||||
|
||||
/obj/structure/prop/machine/isolator/attack_hand(mob/user as mob)
|
||||
..()
|
||||
|
||||
if(!on)
|
||||
on = TRUE
|
||||
user.visible_message("\The [user] turns on \the [src].")
|
||||
icon_state = "isolator_"
|
||||
else
|
||||
on = FALSE
|
||||
user.visible_message("\The [user] turns off \the [src].")
|
||||
icon_state = "isolator_in"
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
|
||||
var/locked = FALSE //has the door been locked?
|
||||
var/lock_id = null //does the door have an associated key?
|
||||
var/lock_type = "simple" //string matched to "pick_type" on /obj/item/lockpick
|
||||
var/can_pick = TRUE //can it be picked/bypassed?
|
||||
var/lock_difficulty = 1 //multiplier to picking/bypassing time
|
||||
var/keysound = 'sound/items/toolbelt_equip.ogg'
|
||||
|
||||
/obj/structure/simple_door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/obj/item/clothing/accessory/choker //A colorable, tagless choker
|
||||
name = "plain choker"
|
||||
slot_flags = SLOT_TIE | SLOT_OCLOTHING
|
||||
desc = "A simple, plain choker. Or maybe it's a collar? Use in-hand to customize it."
|
||||
desc = "A simple, plain choker. Or maybe it's a collar?"
|
||||
icon = 'icons/inventory/accessory/item_vr.dmi'
|
||||
icon_override = 'icons/inventory/accessory/mob_vr.dmi'
|
||||
icon_state = "choker_cst"
|
||||
@@ -44,18 +44,6 @@
|
||||
/obj/item/clothing/accessory/choker/dropped()
|
||||
icon_override = icon_previous_override
|
||||
|
||||
/obj/item/clothing/accessory/choker/attack_self(mob/user as mob)
|
||||
if(!customized)
|
||||
var/design = tgui_input_list(user,"Descriptor?","Pick descriptor","Descriptor", list("plain","simple","ornate","elegant","opulent"))
|
||||
var/material = tgui_input_list(user,"Material?","Pick material","Material", list("leather","velvet","lace","fabric","latex","plastic","metal","chain","silver","gold","platinum","steel","bead","ruby","sapphire","emerald","diamond"))
|
||||
var/type = tgui_input_list(user,"Type?","Pick type","Type", list("choker","collar","necklace"))
|
||||
name = "[design] [material] [type]"
|
||||
desc = "A [type], made of [material]. It's rather [design]."
|
||||
customized = 1
|
||||
to_chat(usr,span_notice("[src] has now been customized."))
|
||||
else
|
||||
to_chat(usr,span_notice("[src] has already been customized!"))
|
||||
|
||||
/obj/item/clothing/accessory/collar
|
||||
slot_flags = SLOT_TIE | SLOT_OCLOTHING
|
||||
icon = 'icons/inventory/accessory/item_vr.dmi'
|
||||
|
||||
@@ -415,7 +415,12 @@
|
||||
/obj/item/stack/medical/advanced/ointment = 6,
|
||||
/obj/item/stack/medical/splint = 4,
|
||||
/obj/item/storage/pill_bottle/carbon = 2,
|
||||
/obj/item/clothing/mask/chewable/candy/lolli = 15)
|
||||
/obj/item/clothing/mask/chewable/candy/lolli = 15,
|
||||
/obj/item/storage/box/khcrystal = 4,
|
||||
/obj/item/backup_implanter = 3,
|
||||
/obj/item/clothing/glasses/omnihud/med = 4,
|
||||
/obj/item/glasses_kit = 1,
|
||||
/obj/item/storage/quickdraw/syringe_case = 4)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
|
||||
/obj/item/reagent_containers/pill/stox = 4,
|
||||
/obj/item/reagent_containers/pill/antitox = 6)
|
||||
@@ -448,7 +453,8 @@
|
||||
products = list(/obj/item/stack/medical/bruise_pack = 2,
|
||||
/obj/item/stack/medical/ointment = 2,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector = 4,
|
||||
/obj/item/healthanalyzer = 1)
|
||||
/obj/item/healthanalyzer = 1,
|
||||
/obj/item/bodybag/cryobag = 2)
|
||||
contraband = list(/obj/item/reagent_containers/syringe/antitoxin = 4,
|
||||
/obj/item/reagent_containers/syringe/antiviral = 4,
|
||||
/obj/item/reagent_containers/pill/tox = 1)
|
||||
@@ -467,14 +473,19 @@
|
||||
/obj/item/reagent_containers/syringe/antitoxin = 3,
|
||||
/obj/item/stack/medical/bruise_pack = 3,
|
||||
/obj/item/stack/medical/ointment =3,
|
||||
/obj/item/healthanalyzer = 3)
|
||||
/obj/item/healthanalyzer = 3,
|
||||
/obj/item/bodybag/cryobag = 3)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 3)
|
||||
req_log_access = access_cmo
|
||||
has_logs = 1
|
||||
can_rotate = 0
|
||||
|
||||
/obj/machinery/vending/wallmed1/public
|
||||
products = list(/obj/item/stack/medical/bruise_pack = 8,/obj/item/stack/medical/ointment = 8,/obj/item/reagent_containers/hypospray/autoinjector = 16,/obj/item/healthanalyzer = 4)
|
||||
products = list(/obj/item/stack/medical/bruise_pack = 8,
|
||||
/obj/item/stack/medical/ointment = 8,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector = 16,
|
||||
/obj/item/healthanalyzer = 4,
|
||||
/obj/item/bodybag/cryobag = 4)
|
||||
|
||||
/obj/machinery/vending/security
|
||||
name = "SecTech"
|
||||
@@ -488,9 +499,15 @@
|
||||
/obj/item/flash = 5,
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain = 6,
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly = 6,
|
||||
/obj/item/storage/box/evidence = 6)
|
||||
/obj/item/storage/box/evidence = 6,
|
||||
/obj/item/gun/energy/taser = 8,
|
||||
/obj/item/gun/energy/stunrevolver = 4,
|
||||
/obj/item/reagent_containers/spray/pepper = 6,
|
||||
/obj/item/taperoll/police = 6,
|
||||
/obj/item/clothing/glasses/omnihud/sec = 6)
|
||||
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,
|
||||
/obj/item/storage/box/donut = 2)
|
||||
/obj/item/storage/box/donut = 2,
|
||||
/obj/item/implanter/compliance = 1)
|
||||
req_log_access = access_armory
|
||||
has_logs = 1
|
||||
|
||||
@@ -553,7 +570,9 @@
|
||||
/obj/item/seeds/pumpkinseed = 3,
|
||||
/obj/item/seeds/cherryseed = 3,
|
||||
/obj/item/seeds/plastiseed = 3,
|
||||
/obj/item/seeds/riceseed = 3)
|
||||
/obj/item/seeds/riceseed = 3,
|
||||
/obj/item/seeds/shrinkshroom = 3,
|
||||
/obj/item/seeds/megashroom = 3)
|
||||
contraband = list(/obj/item/seeds/amanitamycelium = 2,
|
||||
/obj/item/seeds/glowshroom = 2,
|
||||
/obj/item/seeds/libertymycelium = 2,
|
||||
@@ -652,7 +671,8 @@
|
||||
/obj/item/flashlight/glowstick/red = 3,
|
||||
/obj/item/flashlight/glowstick/blue = 3,
|
||||
/obj/item/flashlight/glowstick/orange =3,
|
||||
/obj/item/flashlight/glowstick/yellow = 3)
|
||||
/obj/item/flashlight/glowstick/yellow = 3,
|
||||
/obj/item/reagent_containers/spray/windowsealant = 5)
|
||||
contraband = list(/obj/item/weldingtool/hugetank = 2,
|
||||
/obj/item/clothing/gloves/fyellow = 2)
|
||||
premium = list(/obj/item/clothing/gloves/heavy_engineer = 1) //VOREStation Edit - yellow gloves are common in engineering, let's make "premium" actually mean something
|
||||
@@ -695,8 +715,10 @@
|
||||
/obj/item/circuitboard/body_scanner,
|
||||
/obj/item/circuitboard/medical_kiosk,
|
||||
/obj/item/circuitboard/sleeper,
|
||||
/obj/item/circuitboard/dna_analyzer)
|
||||
contraband = list(/obj/item/cell/potato = 3)
|
||||
/obj/item/circuitboard/dna_analyzer,
|
||||
/obj/item/clothing/glasses/omnihud/eng = 6)
|
||||
contraband = list(/obj/item/cell/potato = 3,
|
||||
/obj/item/rms = 5)
|
||||
premium = list(/obj/item/storage/belt/utility = 3)
|
||||
product_records = list()
|
||||
req_log_access = access_ce
|
||||
|
||||
@@ -1,41 +1,3 @@
|
||||
//Tweaked existing vendors
|
||||
/obj/machinery/vending/hydroseeds/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/seeds/shrinkshroom = 3,/obj/item/seeds/megashroom = 3)
|
||||
|
||||
/obj/machinery/vending/security/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/gun/energy/taser = 8,/obj/item/gun/energy/stunrevolver = 4,
|
||||
/obj/item/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6,
|
||||
/obj/item/clothing/glasses/omnihud/sec = 6)
|
||||
contraband += list(/obj/item/implanter/compliance = 1)
|
||||
|
||||
/obj/machinery/vending/tool/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/reagent_containers/spray/windowsealant = 5)
|
||||
|
||||
/obj/machinery/vending/engivend/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/clothing/glasses/omnihud/eng = 6)
|
||||
contraband += list(/obj/item/rms = 5)
|
||||
|
||||
/obj/machinery/vending/medical/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/storage/box/khcrystal = 4,/obj/item/backup_implanter = 3,
|
||||
/obj/item/clothing/glasses/omnihud/med = 4, /obj/item/glasses_kit = 1, /obj/item/storage/quickdraw/syringe_case = 4)
|
||||
|
||||
/obj/machinery/vending/wallmed1/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/bodybag/cryobag = 2)
|
||||
|
||||
/obj/machinery/vending/wallmed2/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/bodybag/cryobag = 3)
|
||||
|
||||
/obj/machinery/vending/wallmed1/public/Initialize()
|
||||
. = ..()
|
||||
products += list(/obj/item/bodybag/cryobag = 4)
|
||||
|
||||
// Food Machines (for event/away maps)
|
||||
|
||||
//I want this not just as part of the zoo. ;v
|
||||
|
||||
@@ -250,7 +250,7 @@ var/const/CE_STABLE_THRESHOLD = 0.5
|
||||
B.data["viruses"] = list()
|
||||
|
||||
for(var/datum/disease/D in GetViruses())
|
||||
if(D.spread_flags & SPECIAL || D.spread_flags & NON_CONTAGIOUS)
|
||||
if(D.spread_flags & SPECIAL)
|
||||
continue
|
||||
B.data["viruses"] |= D.Copy()
|
||||
|
||||
|
||||
@@ -445,10 +445,10 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity)
|
||||
/obj/singularity/proc/smwave()
|
||||
for(var/mob/living/M in view(10, src.loc))
|
||||
if(prob(67))
|
||||
to_chat(M, span_warning("You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."))
|
||||
to_chat(M, span_warning("You hear an unearthly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."))
|
||||
to_chat(M, span_notice("Miraculously, it fails to kill you."))
|
||||
else
|
||||
to_chat(M, span_danger("You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."))
|
||||
to_chat(M, span_danger("You hear an unearthly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."))
|
||||
to_chat(M, span_danger("You don't even have a moment to react as you are reduced to ashes by the intense radiation."))
|
||||
M.dust()
|
||||
SSradiation.radiate(src, rand(energy))
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/reagent_dispensers
|
||||
name = "Dispenser"
|
||||
desc = "..."
|
||||
description_info = "The input can be opened by Alt-clicking it, allowing you to pour reagents inside."
|
||||
icon = 'icons/obj/chemical_tanks.dmi'
|
||||
icon_state = "tank"
|
||||
layer = TABLE_LAYER
|
||||
@@ -16,6 +17,8 @@
|
||||
var/amount_per_transfer_from_this = 10
|
||||
var/possible_transfer_amounts = list(10,25,50,100)
|
||||
|
||||
var/open_top = FALSE
|
||||
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/W as obj, mob/user as mob)
|
||||
return
|
||||
|
||||
@@ -79,6 +82,19 @@
|
||||
/obj/structure/reagent_dispensers/blob_act()
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/AltClick(mob/user)
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
|
||||
if(flags & OPENCONTAINER)
|
||||
to_chat(user, span_notice("You close the input on \the [src]"))
|
||||
flags -= OPENCONTAINER
|
||||
open_top = FALSE
|
||||
else
|
||||
to_chat(user, span_notice("You open the input on \the [src], allowing you to pour reagents in."))
|
||||
flags |= OPENCONTAINER
|
||||
open_top = TRUE
|
||||
|
||||
/*
|
||||
* Tanks
|
||||
*/
|
||||
|
||||
@@ -48,6 +48,9 @@
|
||||
if(!istype(target))
|
||||
return 0
|
||||
|
||||
if(target.open_top)
|
||||
return 0
|
||||
|
||||
if(!target.reagents || !target.reagents.total_volume)
|
||||
to_chat(user, span_notice("[target] is empty."))
|
||||
return 1
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/datum/reagent/mutagen/mutagenvirusfood
|
||||
name = "Mutagenic agar"
|
||||
id = "mutagenvirusfood"
|
||||
description = "mutates blood"
|
||||
description = "Mutates viruses when mixed in blood. This one seems rather alright."
|
||||
color = "#A3C00F"
|
||||
|
||||
/datum/reagent/mutagen/mutagenvirusfood/sugar
|
||||
@@ -32,16 +32,16 @@
|
||||
/datum/reagent/medicine/adranol/adranolvirusfood
|
||||
name = "Virus rations"
|
||||
id = "adranolvirusfood"
|
||||
description = "mutates blood"
|
||||
description = "Mutates viruses when mixed in blood. This one seems rather weak."
|
||||
color = "#D18AA5"
|
||||
|
||||
/datum/reagent/phoron_dust/phoronvirusfood
|
||||
/datum/reagent/toxin/phoron/phoronvirusfood
|
||||
name = "Phoronic virus food"
|
||||
id = "phoronvirusfood"
|
||||
description = "mutates blood"
|
||||
description = "Mutates viruses when mixed in blood. This one seems to be the strongest."
|
||||
color = "#A69DA9"
|
||||
|
||||
/datum/reagent/phoron_dust/phoronvirusfood/weak
|
||||
name = "Weakened phoronic virus food"
|
||||
/datum/reagent/toxin/phoron/phoronvirusfood/weak
|
||||
name = "Weakened phoronic virus food. This one seems to have been weakened, but still strong."
|
||||
id = "weakphoronvirusfood"
|
||||
color = "#CEC3C6"
|
||||
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 725 B |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 52 KiB |
@@ -226,6 +226,29 @@
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef AWAY_MISSION_TEST
|
||||
#include "../redgate/falls/falls.dmm"
|
||||
#include "../redgate/abandonedisland.dmm"
|
||||
#include "../redgate/cybercity.dmm"
|
||||
#include "../redgate/darkadventure.dmm"
|
||||
#include "../redgate/eggnogtown.dmm"
|
||||
#include "../redgate/eggnogtownunderground.dmm"
|
||||
#include "../redgate/facility.dmm"
|
||||
#include "../redgate/fantasy_dungeon.dmm"
|
||||
#include "../redgate/fantasy.dmm"
|
||||
#include "../redgate/hotsprings.dmm"
|
||||
#include "../redgate/innland.dmm"
|
||||
#include "../redgate/islands_underwater.dmm"
|
||||
#include "../redgate/islands.dmm"
|
||||
#include "../redgate/jungle_underground.dmm"
|
||||
#include "../redgate/jungle.dmm"
|
||||
#include "../redgate/laserdome.dmm"
|
||||
#include "../redgate/stardog.dmm"
|
||||
#include "../redgate/teppiranch.dmm"
|
||||
#include "../redgate/train_upper.dmm"
|
||||
#include "../redgate/train.dmm"
|
||||
#endif
|
||||
|
||||
/datum/map_template/common_lateload/redgate
|
||||
name = "Redgate Submap"
|
||||
desc = "Please do not use this."
|
||||
|
||||
@@ -3641,10 +3641,8 @@
|
||||
/turf/simulated/floor/water/digestive_enzymes,
|
||||
/area/redgate/city/waterworks)
|
||||
"eSM" = (
|
||||
/obj/machinery/disease2/incubator,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/book/manual/virology,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/city/science)
|
||||
"eTR" = (
|
||||
@@ -11034,6 +11032,13 @@
|
||||
/obj/structure/undies_wardrobe,
|
||||
/turf/simulated/floor/tiled/freezer,
|
||||
/area/redgate/city/laundry)
|
||||
"ozN" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/prop/machine/disease_analyser,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/city/science)
|
||||
"ozW" = (
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
@@ -14361,8 +14366,8 @@
|
||||
/turf/simulated/floor/tiled/neutral,
|
||||
/area/redgate/city/house10)
|
||||
"sLw" = (
|
||||
/obj/machinery/computer/centrifuge,
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/computer/pandemic,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/city/science)
|
||||
"sLB" = (
|
||||
@@ -17015,7 +17020,7 @@
|
||||
/turf/simulated/floor/tiled/eris/dark/gray_platform,
|
||||
/area/redgate/city/engine)
|
||||
"wgN" = (
|
||||
/obj/machinery/disease2/diseaseanalyser,
|
||||
/obj/structure/prop/machine/centrifuge,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/city/science)
|
||||
"wgO" = (
|
||||
@@ -17388,7 +17393,10 @@
|
||||
/turf/simulated/floor/tiled/steel_dirty,
|
||||
/area/redgate/city/dodgypharmacy)
|
||||
"wIw" = (
|
||||
/obj/machinery/computer/diseasesplicer,
|
||||
/obj/structure/reagent_dispensers/virusfood{
|
||||
pixel_y = 29
|
||||
},
|
||||
/obj/structure/prop/machine/incubator,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/city/science)
|
||||
"wIy" = (
|
||||
@@ -23051,10 +23059,10 @@ lyJ
|
||||
jNE
|
||||
kfL
|
||||
rdM
|
||||
ozN
|
||||
fpI
|
||||
fpI
|
||||
eSM
|
||||
fpI
|
||||
fpI
|
||||
uEa
|
||||
rdM
|
||||
btI
|
||||
kWt
|
||||
|
||||
@@ -4090,7 +4090,7 @@
|
||||
"XK" = (
|
||||
/obj/effect/map_effect/perma_light/gateway{
|
||||
light_color = "#fc8c03";
|
||||
light_power = .5
|
||||
light_power = 0.5
|
||||
},
|
||||
/turf/simulated/floor/wood,
|
||||
/area/redgate/eggnogtown/bar)
|
||||
|
||||
@@ -3246,10 +3246,6 @@
|
||||
/obj/item/bone,
|
||||
/turf/simulated/floor/grass,
|
||||
/area/redgate/facility/cell27)
|
||||
"eFo" = (
|
||||
/obj/machinery/computer/centrifuge,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/cell20)
|
||||
"eGK" = (
|
||||
/turf/simulated/wall/tgmc/whitewall,
|
||||
/area/redgate/facility/cell27)
|
||||
@@ -4471,7 +4467,7 @@
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/cell2)
|
||||
"gmR" = (
|
||||
/obj/machinery/computer/centrifuge,
|
||||
/obj/structure/prop/machine/disease_analyser,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"gmU" = (
|
||||
@@ -4913,13 +4909,6 @@
|
||||
/obj/random/forgotten_tram,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/nw)
|
||||
"gQm" = (
|
||||
/obj/machinery/disease2/isolator,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"gQy" = (
|
||||
/obj/effect/floor_decal/corner/black/border{
|
||||
dir = 4
|
||||
@@ -11648,7 +11637,7 @@
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/cell15)
|
||||
"qsU" = (
|
||||
/obj/machinery/disease2/diseaseanalyser,
|
||||
/obj/structure/prop/machine/centrifuge,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"qtt" = (
|
||||
@@ -11908,7 +11897,7 @@
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/redgate/facility/cell9)
|
||||
"qMo" = (
|
||||
/obj/machinery/disease2/incubator,
|
||||
/obj/structure/closet/l3closet/virology,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"qNh" = (
|
||||
@@ -11950,10 +11939,10 @@
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"qQL" = (
|
||||
/obj/machinery/computer/diseasesplicer,
|
||||
/obj/machinery/light{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/computer/pandemic,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"qQY" = (
|
||||
@@ -14775,12 +14764,7 @@
|
||||
"uMq" = (
|
||||
/obj/structure/closet/walllocker_double/science/east,
|
||||
/obj/item/book/manual/virology,
|
||||
/obj/item/antibody_scanner,
|
||||
/obj/item/antibody_scanner,
|
||||
/obj/item/reagent_containers/glass/beaker,
|
||||
/obj/item/virusdish/random,
|
||||
/obj/item/virusdish/random,
|
||||
/obj/item/virusdish/random,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/redgate/facility/sw)
|
||||
"uNl" = (
|
||||
@@ -19788,7 +19772,7 @@ pLg
|
||||
fPE
|
||||
mzU
|
||||
aOv
|
||||
gQm
|
||||
xRG
|
||||
vrp
|
||||
oWf
|
||||
aOv
|
||||
@@ -30193,7 +30177,7 @@ aKz
|
||||
ehw
|
||||
lnw
|
||||
sCO
|
||||
eFo
|
||||
ehw
|
||||
hgj
|
||||
hgj
|
||||
hgj
|
||||
|
||||
@@ -941,6 +941,7 @@
|
||||
#include "code\game\machinery\cell_charger.dm"
|
||||
#include "code\game\machinery\clawmachine.dm"
|
||||
#include "code\game\machinery\cloning.dm"
|
||||
#include "code\game\machinery\contraband_scanner.dm"
|
||||
#include "code\game\machinery\cryo.dm"
|
||||
#include "code\game\machinery\cryopod.dm"
|
||||
#include "code\game\machinery\cryopod_vr.dm"
|
||||
@@ -1291,6 +1292,7 @@
|
||||
#include "code\game\objects\items\gunbox.dm"
|
||||
#include "code\game\objects\items\gunbox_vr.dm"
|
||||
#include "code\game\objects\items\latexballoon.dm"
|
||||
#include "code\game\objects\items\lockpicks.dm"
|
||||
#include "code\game\objects\items\magazine.dm"
|
||||
#include "code\game\objects\items\paintkit.dm"
|
||||
#include "code\game\objects\items\pizza_voucher_vr.dm"
|
||||
|
||||