Merge branch 'master' of https://github.com/VOREStation/VOREStation into Fluff_Items_worshop

This commit is contained in:
JoanRisu
2017-03-10 15:13:01 -08:00
19 changed files with 488 additions and 38 deletions
+12
View File
@@ -43,6 +43,18 @@
if (isarea(A))
return A
/** Checks if any living humans are in a given area. */
/proc/area_is_occupied(var/area/myarea)
// Testing suggests looping over human_mob_list is quicker than looping over area contents
for(var/mob/living/carbon/human/H in human_mob_list)
if(H.stat >= DEAD) //Conditions for exclusion here, like if disconnected people start blocking it.
continue
var/area/A = get_area(H)
if(A == myarea) //The loc of a turf is the area it is in.
return 1
return 0
/proc/in_range(source, user)
if(get_dist(source, user) <= 1)
return 1
+14
View File
@@ -0,0 +1,14 @@
/datum/supply_packs/misc/beltminer
name = "Belt-miner gear crate"
contains = list(
/obj/item/weapon/gun/energy/particle = 2,
/obj/item/weapon/cell/device/weapon = 2,
/obj/item/weapon/storage/firstaid/regular = 1,
/obj/item/device/gps = 2,
/obj/item/weapon/storage/box/traumainjectors = 1
)
cost = 50
containertype = /obj/structure/closet/crate/secure/gear
containername = "Belt-miner gear crate"
access = access_mining
+63 -6
View File
@@ -39,10 +39,8 @@
var/obj/item/stack/stack = I
var/transfer
var/amount_needed = 2
if (stack.amount >= amount_needed)
if(stat & BROKEN)
user << "<span class='notice'>It looks like \the [src] is pretty busted. There's not much point reinforcing it.</span>"
return 1
if(stat & BROKEN)
user << "<span class='notice'>It looks like \the [src] is pretty busted.</span>"
if (reinforcing)
transfer = stack.transfer_to(reinforcing, amount_needed - reinforcing.amount)
if (!transfer)
@@ -57,13 +55,50 @@
if (transfer)
user << "<span class='notice'>You fit [transfer] [stack.singular_name]\s to \the [src].</span>"
return 1
return 0
if(istype(I, /obj/item/stack/material) && I.get_material_name() == src.get_material_name())
if(stat & BROKEN)
if(health >= maxhealth && destroy_hits >= 10)
user << "<span class='notice'>The [src] is about as shored up as it's going to get.</span>"
return 1
if(!density)
user << "<span class='warning'>\The [src] must be closed before you can repair it.</span>"
return 1
//figure out how much metal we need
var/amount_needed = (maxhealth - health) / DOOR_REPAIR_AMOUNT
if (destroy_hits < 10)
amount_needed += (20*(10 - destroy_hits) / DOOR_REPAIR_AMOUNT)
amount_needed = (round(amount_needed) == amount_needed)? amount_needed : round(amount_needed) + 1 //Why does BYOND not have a ceiling proc?
var/obj/item/stack/stack = I
var/transfer
if (repairing)
transfer = stack.transfer_to(repairing, amount_needed - repairing.amount)
if (!transfer)
user << "<span class='warning'>You must weld or remove \the [repairing] from \the [src] before you can add anything else.</span>"
else
repairing = stack.split(amount_needed)
if (repairing)
repairing.loc = src
transfer = repairing.amount
if (transfer)
user << "<span class='notice'>\The [src] is completely broken inside, but you manage to fit [transfer] [stack.singular_name]\s to shore it up.</span>"
return 1
return 0
if(reinforcing && istype(I, /obj/item/weapon/weldingtool))
var/amount_needed = 2
if(!density)
user << "<span class='warning'>\The [src] must be closed before you can repair it.</span>"
return 1
if (reinforcing.amount < amount_needed)
user << "<span class='notice'>You need [amount_needed] [reinforcing.singular_name]\s to reinforce \the [src].</span>"
return 1
var/obj/item/weapon/weldingtool/welder = I
if(welder.remove_fuel(0,user))
user << "<span class='notice'>You start to weld \the [reinforcing] into place.</span>"
@@ -76,6 +111,28 @@
reinforcing = null
return 1
if(repairing && istype(I, /obj/item/weapon/weldingtool) && (stat & BROKEN))
if(!density)
user << "<span class='warning'>\The [src] must be closed before you can shore it up.</span>"
return 1
var/obj/item/weapon/weldingtool/welder = I
if(welder.remove_fuel(0,user))
user << "<span class='notice'>You start to weld \the [repairing] into place.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, 5 * repairing.amount) && welder && welder.isOn())
user << "<span class='notice'>You finish shoring up \the [src]. It'll hold for at least a little while.</span>"
var/damagerepaired = repairing.amount*DOOR_REPAIR_AMOUNT
if (destroy_hits < 10)
var/severedamage = 10 - destroy_hits
destroy_hits = between(destroy_hits, destroy_hits + (damagerepaired)/20, 10)
damagerepaired -= 20 * severedamage
health = between(health, health + damagerepaired, maxhealth)
update_icon()
qdel(repairing)
repairing = null
return 1
if(reinforcing && istype(I, /obj/item/weapon/crowbar))
user << "<span class='notice'>You remove \the [reinforcing].</span>"
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
+1 -1
View File
@@ -19,7 +19,7 @@
..()
/obj/machinery/vending/medical/New()
products += list(/obj/item/weapon/storage/box/khcrystal = 4,/obj/item/weapon/storage/box/backup_kit = 2,
products += list(/obj/item/weapon/storage/box/khcrystal = 4,/obj/item/weapon/backup_implanter = 3,
/obj/item/clothing/glasses/omnihud/med = 2, /obj/item/device/glasses_kit = 1)
..()
+90
View File
@@ -0,0 +1,90 @@
//
// This event causes a gas leak of phoron, sleeping_agent, or carbon_dioxide in a random unoccupied area.
// One wonders, where did the gas come from? Who knows! Its SPACE! But if you want something a touch
// more "explainable" then check out the canister_leak event instead.
//
/datum/event/atmos_leak
startWhen = 5 // Nobody will actually be in the room, but still give a bit of warning.
var/area/target_area // Chosen target area
var/area/target_turf // Chosen target turf in target_area
var/gas_type // Chosen gas to release
// Exclude these types and sub-types from targeting eligibilty
var/list/area/excluded = list(
/area/shuttle,
/area/crew_quarters,
/area/holodeck,
/area/engineering/engine_room
)
// Decide which area will be targeted!
/datum/event/atmos_leak/setup()
var/gas_choices = list("carbon_dioxide", "sleeping_agent") // Annoying
if(severity >= EVENT_LEVEL_MODERATE)
gas_choices += "phoron" // Dangerous
if(severity >= EVENT_LEVEL_MAJOR)
gas_choices += "volatile_fuel" // Dangerous and no default atmos setup!
gas_type = pick(gas_choices)
// Assemble areas that all exists (See DM reference if you are confused about loop labels)
var/list/area/grand_list_of_areas = list()
looping_station_areas:
for(var/parentpath in global.the_station_areas)
// Check its not excluded
for(var/excluded_path in excluded)
if(ispath(parentpath, excluded_path))
continue looping_station_areas
// Otherwise add it and all subtypes that exist on the map to our grand list
for(var/areapath in typesof(parentpath))
var/area/A = locate(areapath) // Check if it actually exists
if(istype(A) && A.z in using_map.player_levels)
grand_list_of_areas += A
// Okay, now lets try and pick a target! Lets try 10 times, otherwise give up
for(var/i in 1 to 10)
var/area/A = pick(grand_list_of_areas)
if(is_area_occupied(A))
log_debug("atmos_leak event: Rejected [A] because it is occupied.")
continue
// A good area, great! Lets try and pick a turf
var/list/turfs = list()
for(var/turf/simulated/floor/F in A)
if(turf_clear(F))
turfs += F
if(turfs.len == 0)
log_debug("atmos_leak event: Rejected [A] because it has no clear turfs.")
continue
target_area = A
target_turf = pick(turfs)
// If we can't find a good target, give up
if(!target_area)
log_debug("atmos_leak event: Giving up after too many failures to pick target area")
kill()
return
/** Checks if any living humans are in a given area! */
/datum/event/atmos_leak/proc/is_area_occupied(var/area/myarea)
// Testing suggests looping over human_mob_list is quicker than looping over area contents
for(var/mob/living/carbon/human/H in human_mob_list)
if(H.stat >= DEAD) //Conditions for exclusion here, like if disconnected people start blocking it.
continue
var/area/A = get_area(H)
if(A == myarea) //The loc of a turf is the area it is in.
return 1
return 0
/datum/event/atmos_leak/announce()
command_announcement.Announce("Warning, hazardous [gas_data.name[gas_type]] gas leak detected in \the [target_area], evacuate the area and contain the damage!", "Hazard Alert")
/datum/event/atmos_leak/start()
// Okay, time to actually put the gas in the room!
// TODO - Would be nice to break a waste pipe perhaps?
// TODO - Maybe having it released from a single point and thus causing airflow to blow stuff around
// Fow now just add a bunch of it to the air
var/datum/gas_mixture/air_contents = new
air_contents.temperature = T20C + ((severity - 1) * rand(-50, 50))
air_contents.gas[gas_type] = 10 * MOLES_CELLSTANDARD
target_turf.assume_air(air_contents)
playsound(target_turf, 'sound/effects/smoke.ogg', 50, 1)
+30
View File
@@ -0,0 +1,30 @@
//
// This event chooses a random canister on player levels and breaks it, releasing its contents!
// On severity EVENT_LEVEL_MUNDANE or below it checks to make sure nobody is in the area, otherwise... good luck.
//
/datum/event/canister_leak/start()
// List of all non-destroyed canisters on station levels
var/list/all_canisters = list()
for(var/obj/machinery/portable_atmospherics/canister/C in machines)
if(!C.destroyed && (C.z in using_map.station_levels))
all_canisters += C
for(var/i in 1 to 10)
var/obj/machinery/portable_atmospherics/canister/C = pick(all_canisters)
if(severity <= EVENT_LEVEL_MUNDANE && area_is_occupied(get_area(C)))
log_debug("canister_leak event: Rejecting canister [C] ([C.x],[C.y],[C.z]) because area is occupied")
continue
// Okay lets break it
break_canister(C)
return
// If we got to here we failed to find it
log_debug("canister_leak event: Giving up after too many failures to pick target canister")
kill()
return
/datum/event/canister_leak/proc/break_canister(var/obj/machinery/portable_atmospherics/canister/C)
log_debug("canister_leak event: Canister [C] ([C.x],[C.y],[C.z]) destroyed.")
C.health = 0
C.healthcheck()
@@ -0,0 +1,24 @@
//
// This event chooses a random canister on player levels and breaks it, releasing its contents!
//
/datum/gm_action/canister_leak
name = "Canister Leak"
departments = list(ROLE_ENGINEERING)
chaotic = 20
/datum/gm_action/canister_leak/get_weight()
return metric.count_people_in_department(ROLE_ENGINEERING) * 30
/datum/gm_action/canister_leak/start()
..()
// List of all non-destroyed canisters on station levels
var/list/all_canisters = list()
for(var/obj/machinery/portable_atmospherics/canister/C in machines)
if(!C.destroyed && (C.z in using_map.station_levels))
all_canisters += C
var/obj/machinery/portable_atmospherics/canister/C = pick(all_canisters)
log_debug("canister_leak event: Canister [C] ([C.x],[C.y],[C.z]) destroyed.")
C.health = 0
C.healthcheck()
return
@@ -1,5 +1,5 @@
/obj/item/weapon/gun/energy/particle //base gun, similar stats to an egun
name = "Antiparticle projector pistol"
name = "Anti-particle projector pistol"
icon = 'icons/obj/gun_vr.dmi'
icon_state = "ppistol"
item_state = "ppistol_item"
@@ -18,27 +18,28 @@
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
projectile_type = /obj/item/projectile/bullet/particle
origin_tech = null
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_MATERIAL = 2)
fire_delay = 10
charge_cost = 240 //same cost as lasers
charge_cost = 200 //slightly more shots than lasers
var/safetycatch = 0 //if 1, won't let you fire in pressurised environment, rather than malfunctioning
var/obj/item/pressurelock/attached_safety
/obj/item/weapon/gun/energy/particle/advanced //particle equivalent of AEG
name = "Advanced antiparticle rifle"
name = "Advanced anti-particle rifle"
icon_state = "particle"
item_state = "particle_item"
desc = "An antiparticle projector gun with an enhanced power-generation unit."
slot_flags = SLOT_BELT
force = 8 //looks heavier than a pistol
w_class = ITEMSIZE_LARGE //bigger than a pistol, too.
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3)
fire_delay = 6 //This one's not a handgun, it should have the same fire delay as everything else
self_recharge = 1
modifystate = null
battery_lock = 1
recharge_time = 15 // every 15 ticks, recharge 2 shots. Rather slower than AEG.
charge_delay = 20 //Starts recharging faster after firing than an AEG, but much slower recharge rate. Balances out for a full charge.
recharge_time = 6 // every 6 ticks, recharge 2 shots. Slightly slower than AEG.
charge_delay = 10 //Starts recharging faster after firing than an AEG though.
/obj/item/weapon/gun/energy/particle/cannon //particle version of laser cannon
name = "Anti-particle cannon"
@@ -47,17 +48,18 @@
item_state = "heavyparticle_item"
fire_sound = 'sound/weapons/lasercannonfire.ogg'
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
projectile_type = /obj/item/projectile/bullet/particle/heavy
battery_lock = 1
fire_delay = 20
fire_delay = 15 // fires faster than a laser cannon. c'mon, it's an awesome-but-impractical endgame gun.
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
force = 10
one_handed_penalty = 6 // The thing's heavy and huge.
one_handed_penalty = 8 // The thing's heavy and huge.
accuracy = 3
charge_cost = 480 // 5 shots
charge_cost = 400 // 6 shots
self_recharge = 1
charge_delay = 20 //won't start charging until it's ready to fire again
recharge_time = 20 //100 ticks after that to refill the whole thing.
charge_delay = 15 //won't start charging until it's ready to fire again
recharge_time = 8 //40 ticks after that to refill the whole thing.
//special behaviours for particle guns below
@@ -161,7 +163,7 @@
icon_state = "pressurelock"
desc = "A safety interlock that can be installed in an antiparticle projector. It prevents the weapon from discharging in pressurised environments."
w_class = ITEMSIZE_TINY
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
// projectiles below
@@ -48,3 +48,29 @@
user << "<span class='notice'>\The [src] already has a vial.</span>"
else
..()
/obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer
name = "Emergency trauma injector"
desc = "A rapid injector for emergency treatment of injuries. The warning label advises that it is not a substitute for proper medical treatment."
icon_state = "autoinjector"
item_state = "autoinjector"
amount_per_transfer_from_this = 10
volume = 10
/obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer/New()
..()
reagents.add_reagent("bicaridine", 5)
reagents.add_reagent("tricordrazine", 3)
reagents.add_reagent("tramadol", 2)
update_icon()
return
/obj/item/weapon/storage/box/traumainjectors
name = "box of emergency trauma injectors"
desc = "Contains emergency trauma autoinjectors."
icon_state = "syringe"
/obj/item/weapon/storage/box/traumainjectors/New()
..()
for (var/i = 1 to 7)
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/beltminer(src)
+39 -8
View File
@@ -8,27 +8,51 @@
build_path = /obj/item/weapon/pickaxe/excavationdrill
/datum/design/item/implant/language
name = "language implant"
name = "Language implant"
id = "implant_language"
req_tech = list(TECH_MATERIAL = 5, TECH_BIO = 5, TECH_DATA = 4, TECH_ENGINEERING = 4) //This is not an easy to make implant.
materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000, "gold" = 2000, "diamond" = 3000)
build_path = /obj/item/weapon/implantcase/vrlanguage
/datum/design/item/implant/backup
name = "backup implant"
name = "Backup implant"
id = "implant_backup"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_DATA = 4, TECH_ENGINEERING = 2)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
build_path = /obj/item/weapon/implantcase/backup
/datum/design/item/weapon/sizegun
name = "shrink ray"
name = "Shrink ray"
id = "shrinkray"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "uranium" = 2000)
build_path = /obj/item/weapon/gun/energy/sizegun
sort_string = "TAAAB"
/datum/design/item/item/pressureinterlock
name = "APP pressure interlock"
id = "pressureinterlock"
req_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 250)
build_path = /obj/item/pressurelock
sort_string = "TAADA"
/datum/design/item/weapon/advparticle
name = "Advanced anti-particle rifle"
id = "advparticle"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3)
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "gold" = 1000, "uranium" = 750)
build_path = /obj/item/weapon/gun/energy/particle/advanced
sort_string = "TAADB"
/datum/design/item/weapon/particlecannon
name = "Anti-particle cannon"
id = "particlecannon"
req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1500, "gold" = 2000, "uranium" = 1000, "diamond" = 2000)
build_path = /obj/item/weapon/gun/energy/particle/cannon
sort_string = "TAADC"
/datum/design/item/hud/omni
name = "AR glasses"
id = "omnihud"
@@ -38,17 +62,24 @@
sort_string = "GAAFB"
/datum/design/item/translocator
name = "personal translocator"
name = "Personal translocator"
id = "translocator"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 7)
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "uranium" = 4000, "diamond" = 2000)
build_path = /obj/item/device/perfect_tele
sort_string = "HABAF"
/datum/design/item/translator
name = "handheld translator"
id = "translator"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
build_path = /obj/item/device/universal_trans
sort_string = "HABBA"
// Resleeving Circuitboards
/datum/design/circuit/comm_server
/datum/design/circuit/transhuman_clonepod
name = "grower pod"
id = "transhuman_clonepod"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
@@ -63,21 +94,21 @@
sort_string = "HAADB"
/datum/design/circuit/transhuman_resleever
name = "resleeving pod"
name = "Resleeving pod"
id = "transhuman_resleever"
req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4)
build_path = /obj/item/weapon/circuitboard/transhuman_resleever
sort_string = "HAADC"
/datum/design/circuit/resleeving_control
name = "resleeving control console"
name = "Resleeving control console"
id = "resleeving_control"
req_tech = list(TECH_DATA = 5)
build_path = /obj/item/weapon/circuitboard/resleeving_control
sort_string = "HAADE"
/datum/design/circuit/partslathe
name = "parts lathe"
name = "Parts lathe"
id = "partslathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/weapon/circuitboard/partslathe
+86
View File
@@ -7,6 +7,8 @@
/obj/item/weapon/implant/backup
name = "backup implant"
desc = "A mindstate backup implant that occasionally stores a copy of one's mind on a central server for backup purposes."
icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "backup_implant"
var/last_attempt
var/attempt_delay = 5 MINUTES
@@ -52,6 +54,90 @@
spawn(attempt_delay)
backup()
//New, modern implanter instead of old style implanter.
/obj/item/weapon/backup_implanter
name = "backup implanter"
desc = "After discovering that Nanotrasen was just re-using the same implanters over and over again on organics, leading to cross-contamination, Kitsuhana Heavy industries designed this self-cleaning model. Holds four backup implants at a time."
icon = 'icons/obj/device_alt.dmi'
icon_state = "bimplant"
item_state = "syringe_0"
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
var/obj/item/weapon/implant/backup/list/imps = list()
var/max_implants = 4 //Iconstates need to exist due to the update proc!
/obj/item/weapon/backup_implanter/New()
..()
for(var/i = 1 to max_implants)
var/obj/item/weapon/implant/backup/imp = new(src)
imps |= imp
imp.germ_level = 0
update()
/obj/item/weapon/backup_implanter/proc/update()
icon_state = "[initial(icon_state)][imps.len]"
germ_level = 0
/obj/item/weapon/backup_implanter/attack_self(mob/user as mob)
if(!istype(user))
return
if(imps.len)
user << "<span class='notice'>You eject a backup implant.</span>"
var/obj/item/weapon/implant/backup/imp = imps[imps.len]
imp.forceMove(get_turf(user))
imps -= imp
user.put_in_any_hand_if_possible(imp)
update()
else
user << "<span class='warning'>\The [src] is empty.</span>"
return
/obj/item/weapon/backup_implanter/attackby(obj/W, mob/user)
if(istype(W,/obj/item/weapon/implant/backup))
if(imps.len < max_implants)
user.unEquip(W)
imps |= W
W.germ_level = 0
W.forceMove(src)
update()
user << "<span class='notice'>You load \the [W] into \the [src].</span>"
else
user << "<span class='warning'>\The [src] is already full!</span>"
/obj/item/weapon/backup_implanter/attack(mob/M as mob, mob/user as mob)
if (!istype(M, /mob/living/carbon))
return
if (user && imps.len)
M.visible_message("<span class='notice'>[user] is injecting a backup implant into [M].</span>")
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(M)
var/turf/T1 = get_turf(M)
if (T1 && ((M == user) || do_after(user, 5 SECONDS)))
if(user && M && (get_turf(M) == T1) && src && src.imps.len)
M.visible_message("<span class='notice'>[M] has been backup implanted by [user].</span>")
var/obj/item/weapon/implant/backup/imp = imps[imps.len]
if(imp.implanted(M))
imp.forceMove(M)
imps -= imp
imp.imp_in = M
imp.implanted = 1
admin_attack_log(user, M, "Implanted using \the [src.name] ([imp.name])", "Implanted with \the [src.name] ([imp.name])", "used an implanter, [src.name] ([imp.name]), on")
if (ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
affected.implants += imp
imp.part = affected
BITSET(H.hud_updateflag, BACKUP_HUD)
update()
//The glass case for the implant
/obj/item/weapon/implantcase/backup
name = "glass case - 'backup'"
@@ -981,6 +981,17 @@
M.update_inv_wear_mask()
usr.update_action_buttons()
//Vorrarkul: Theodora Lindt
/obj/item/clothing/suit/chococoat
name = "Chococoat"
desc = "A long coat designed to resemble Getmore Chocolate Corp's namesake chocolate bar wrapper." //A walking advertisement?
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "chococoat_on"
icon_state = "chococoat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
allowed = list (/obj/item/weapon/material/knife)
/*
Departamental Swimsuits, for general use
*/
@@ -865,3 +865,60 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie
B.internal_contents |= src
user.visible_message("<span class='warning'>[user] eats a telebeacon!</span>","You eat the the beacon!")
playsound(user, B.vore_sound, 70, 1)
//Universal translator
/obj/item/device/universal_trans
name = "handheld translator"
desc = "This handy device appears to translate the languages it hears into onscreen text for a user."
icon = 'icons/obj/device_alt.dmi'
icon_state = "atmos"
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
var/listening = 0
var/datum/language/langset
/obj/item/device/universal_trans/attack_self(mob/user)
if(!listening) //Turning ON
langset = input(user,"Translate to which of your languages?","Language Selection") as anything|null in user.languages
if(langset)
listening = 1
listening_objects |= src
icon_state = "[initial(icon_state)]1"
user << "<span class='notice'>You enable \the [src], translating into [langset.name].</span>"
else //Turning OFF
listening = 0
listening_objects -= src
langset = null
icon_state = "[initial(icon_state)]"
user << "<span class='notice'>You disable \the [src].</span>"
/obj/item/device/universal_trans/hear_talk(var/mob/speaker,var/message,var/vrb,var/datum/language/language)
if(!listening || !istype(speaker))
return
//Show the "I heard something" animation.
flick("[initial(icon_state)]2",src)
//Handheld or pocket only.
if(!isliving(loc))
return
var/mob/living/L = loc
if (language && (language.flags & NONVERBAL))
return //Not gonna translate sign language
//Only translate if they can't understand, otherwise pointlessly spammy
//I'll just assume they don't look at the screen in that case
//They don't understand the spoken language we're translating FROM
if(!L.say_understands(speaker,language))
//They understand the PRINTED language
if(L.say_understands(null,langset))
L << "<i><b>[src]</b> displays, </i>\"<span class='[langset.colour]'>[message]</span>\""
//They don't understand the PRINTED language
else
L << "<i><b>[src]</b> displays, </i>\"<span class='[langset.colour]'>[langset.scramble(message)]</span>\""
+6
View File
@@ -478,6 +478,12 @@ character_name: Nyssa Brennan
item_path: /obj/item/clothing/suit/storage/hooded/wintercoat/cargo
}
{
ckey: vorrarkul
character_name: Theodora Lindt
item_path: /obj/item/clothing/suit/chococoat
}
{
ckey: Viveret
character_name: Keturah
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

+11 -11
View File
@@ -682,7 +682,7 @@
"anf" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/glasses/hud/security,/obj/item/clothing/shoes/boots/jackboots/toeless,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"ang" = (/obj/structure/closet/secure_closet/security,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/glasses/hud/security,/obj/item/clothing/suit/armor/vest/wolftaur,/obj/item/clothing/shoes/boots/jackboots/toeless,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"anh" = (/obj/structure/closet/wardrobe/red,/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"ani" = (/obj/structure/table/standard,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/megaphone,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/corner/red/full{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"ani" = (/obj/structure/table/standard,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/megaphone,/obj/item/weapon/packageWrap,/obj/item/weapon/storage/box,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/floor_decal/corner/red/full{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/item/weapon/hand_labeler,/obj/item/device/universal_trans,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"anj" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"ank" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"anl" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/soap/nanotrasen,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
@@ -3044,7 +3044,7 @@
"bgB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgC" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgD" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgE" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgE" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/item/device/universal_trans,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgF" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/item/weapon/deck/cards,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bgH" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/medbay{c_tag = "MED - Break Room"; dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
@@ -3752,7 +3752,7 @@
"buh" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bui" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buk" = (/obj/item/weapon/stool/padded,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/item/weapon/storage/box/backup_kit,/turf/simulated/floor/tiled/white,/area/medical/reception)
"buk" = (/obj/structure/table/standard,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/item/weapon/backup_implanter,/turf/simulated/floor/tiled/white,/area/medical/reception)
"bul" = (/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/medical/morgue)
"bum" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/medical/morgue)
"bun" = (/obj/structure/closet/secure_closet{name = "Psychiatrist's Locker"; req_access = list(64)},/obj/item/clothing/suit/straight_jacket{layer = 3},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/floor/tiled,/area/medical/morgue)
@@ -3800,7 +3800,7 @@
"bvd" = (/turf/simulated/wall,/area/medical/reception)
"bve" = (/obj/structure/bed/chair{dir = 4},/obj/structure/sign/nosmoking_1{pixel_x = -32},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvg" = (/obj/structure/table/standard,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvg" = (/obj/item/weapon/stool/padded,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvh" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/reception)
"bvj" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/medical/reception)
@@ -3967,7 +3967,7 @@
"byo" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
"byp" = (/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/reception)
"byq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/reception)
"byr" = (/obj/structure/table/standard,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/reception)
"byr" = (/obj/structure/table/standard,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access = list(5)},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = -5},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/item/weapon/backup_implanter,/turf/simulated/floor/tiled/white,/area/medical/reception)
"bys" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/reception)
"byt" = (/obj/effect/floor_decal/corner/paleblue{dir = 2},/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/tiled/white,/area/medical/reception)
"byu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
@@ -4258,7 +4258,7 @@
"bDT" = (/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled,/area/hydroponics)
"bDU" = (/obj/effect/floor_decal/corner/lime{dir = 5},/obj/machinery/alarm{pixel_y = 22},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/hydroponics)
"bDV" = (/turf/simulated/wall/r_wall,/area/maintenance/research_shuttle)
"bDW" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/recharger,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bDW" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/recharger,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bDX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)
"bDY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/directions/medical{dir = 4; pixel_x = 32; pixel_y = 0},/obj/structure/sign/directions/cargo{dir = 2; pixel_x = 32; pixel_z = 8},/obj/structure/sign/directions/engineering{dir = 2; pixel_x = 32; pixel_z = -8},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
"bDZ" = (/obj/structure/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/obj/effect/floor_decal/corner/paleblue{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/reception)
@@ -4367,7 +4367,7 @@
"bFY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bFZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bGa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bGb" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bGb" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bGc" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 4; id = "resleeve_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "resleeve_tint"},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced/polarized{dir = 1; id = "resleeve_tint"},/obj/structure/window/reinforced/polarized{id = "resleeve_tint"},/turf/simulated/floor/plating,/area/medical/resleeving)
"bGd" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/paleblue{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bGe" = (/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/structure/bed/chair,/turf/simulated/floor/tiled/white,/area/medical/resleeving)
@@ -4803,7 +4803,7 @@
"bOs" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/medical/medbay_emt_bay)
"bOt" = (/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "MED - Resleeving"; dir = 1},/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bOu" = (/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bOv" = (/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/structure/table/standard,/obj/item/weapon/storage/box/backup_kit,/obj/item/weapon/storage/box/backup_kit,/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bOv" = (/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/structure/table/standard,/obj/item/weapon/backup_implanter,/obj/item/weapon/backup_implanter,/obj/item/weapon/backup_implanter,/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bOw" = (/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bOx" = (/obj/effect/floor_decal/corner/pink/full,/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/machinery/light,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/medical/patient_a)
"bOy" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_a)
@@ -5296,7 +5296,7 @@
"bXR" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/hallway/secondary/medical_emergency_hallway)
"bXS" = (/obj/effect/floor_decal/corner/pink{dir = 9},/obj/structure/bed/chair/office/light,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/network/medbay{c_tag = "MED - Patient Room C"; dir = 4},/turf/simulated/floor/tiled/white,/area/medical/patient_a)
"bXT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Patient Room A"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/medical/patient_a)
"bXU" = (/obj/item/weapon/storage/box/cdeathalarm_kit,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/obj/structure/table/steel,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/storage/box/backup_kit,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXU" = (/obj/item/weapon/storage/box/cdeathalarm_kit,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/obj/structure/table/steel,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/storage/box/backup_kit,/obj/item/weapon/backup_implanter,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXV" = (/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/circuitboard/autolathe,/obj/machinery/light/small{dir = 1},/obj/item/weapon/circuitboard/partslathe,/turf/simulated/floor,/area/storage/tech)
"bXW" = (/obj/effect/floor_decal/corner/pink{dir = 5},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/button/windowtint{id = "pr5_window_tint"; pixel_y = 26},/turf/simulated/floor/tiled/white,/area/medical/patient_c)
"bXX" = (/obj/structure/window/reinforced/polarized{dir = 1; id = "pr4_window_tint"},/obj/structure/grille,/obj/machinery/door/firedoor,/obj/structure/window/reinforced/polarized{dir = 2; id = "pr4_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "pr4_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "pr4_window_tint"},/turf/simulated/floor,/area/medical/patient_d)
@@ -10105,8 +10105,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaX
aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaaaaaaaayaaaaaeaaaaaaaaaaaaaaeaaeaaaaaaaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpWaaiaaibpXblmblnbrubrvblmbrwblqbikbikbikbrxblqbikbiybvSbjQbfEbgTbgUbgVbgWbgXbgYbgZbfEdIXbcEbqhbaZbqibqjbqkbqkbqlbqmbqnbqoboObqpboQbqqbqrbqsboUbqtbquaaiaaiaWEaVGaZhbeIaWEaaiaaiaaiaaiaaiaaiaafaafbhrbhrbnibnjbqvbnlbqwbnlbnkbnjbnmbhrbhraafaafaVeaVOaVeaaiaVPbawaYebqxbdWbnnbqybcXbqzaYjaYjaYjbqybcXbqzbiTbdSbphaYebawaVPaaiaVWaUubbyaPRbplaaiaaibckbckbqAbckbckbjebjebjebqBbqBbqBbqBbqCbqDbqBbqBbqEbqFbqGbqHbqHbqIbqJbqFbqKbqLbqMbpJbqObqPbqQbIZbmobpKbqNbpLbqSbqRbIZaXCaVnaafbdzbqWbqXbkYbqYblabqZblabrabjEbrbbjEbrcbdzbrdbfCbrebrfbrgbrhbribdzaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaXDaaaaaaaayaaabrjbrkbrlaaabrjbrkbrlaaabrjbrkbrlaaabrjbrkbrlaaabrjbrkbrlaaaaayaaeaaeaaaaaaaaaaaaaaaaaabrmbrnbrobrpaaaaaabrqbrrbrsbrqbrqbrtbjGbjHbjIbjHbjGbikaaiaaiaaiaaiaaiaaibrmbsZbrzbtabfEbipbiqbirbisbitbiubivbiwdIZdIYdJabmZbrEbrFbrGbnabrHbbLbrIbrJbrKbrLbrMbrNbrNbrNbrObrPbrQaaiaaiaWEaVGaZhbeIaWEaaiaaiaaiaaiaaiaafaafaafbhrbhrbrRbrSbrTbnlbnlbnlbrUbrVbrWbhrbhraafaafaVeaVOaVeaaiaaiaYqaXdaYebqxbdWbrXbrYbrZbdabdabdabrXbrYbrZbdSbphaYeaWPaYdaaiaaiaXebaAbaBbsabplaaiaaibsbbscbsdbsebsfbsgbshbsibqBbsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbqJbqTbsxbsybszbsAbsBbsybsAbIZbqVbqUbOubswbOubOubIZaXCaVnaafbdzbdzbfybsIbicbmsbsJbjEbjxbjEbjEbrhbsKbdzbsLbsMbsNbsObpRbsPbdzbdzaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaXDaXDaaaaaaaaaaaaaayaaebrjbsQbrlaaebrjbsQbrlaaebrjbsQbrlaaebrjbsQbrlaaebrjbsQbrlaaeaazaaaaaeaaeaaaaaaaaaaaaaaabrmbrmbsRbsSbrmbsTbsUbsVbsWbsXbsYbikbikabxabxbilbikbikcxVcxVaaiaaiaaiaaibrmbrmbrzbuJbfEbjKbjLbgVbjMbjNbjObjPbfEdJbbtcbtdboHbtebtfbtgbthbmZbtibtjbtkbtlbtmbtnbtobtpbtqbtrbtsbiHaaiaaiaWAaVGbttbeIaWAaaiaaiaaiaafaafaafaafaafaafbhrbhrbtubrSbtvbtwbtxbtybtzbhrbhraafaafaafaVeaVOaVeaaiaaiaaiaYqaVSbaxbdUbdUbtAbtBbtCbtDbtCbtEbtFbdUbdUbtGaVQaYdaaiaaiaaiaYraUubtHaPRbtIaaiaaibtJbtKbsdbtLbtMbtNbtObtPbqBbtQbtRbtSbtTbtTbtUbtVbtWbtXbtYbtZbtZbuabubbucbudbuebufbugbuhbuibujbIZbsDbsCbsFbsEbsEbsGbIZaXCaVnaafaafbdzbdzbdzbdzbuqburbusbjxbutbuubuvbdzbdzbiebdzbuxbuybuzbdzbdzaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaaaaaaaaaaaaaaaaayaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaaaaeaaaaaaaaeaaeaaaaaaaaaaaabrmbuAbuBbuCbrmbuDbuEbuFbuGbuHbuIdIScxVaaiaaiaaiaaicxVcxVaaiaaiaaiaaiaaiaaibrmbrzdIRbfEbfEbfEbfEbfEbfEbfEbfEbfEdJcbuMbuNbaZbuObuPbuQbuRboHbuSbrIbqhbrKbuTbuUbuVbiHbuWbuXbuWbiHaaibbkbbkbiIbiJbiKaXOaaiaaiaafaafaafaafaafaafaafbhrbhrbhrbuYbuZbvabvbbvcbhrbhrbhraafaafaVeaVeaVOaVeaVeaaiaaiaaiaVPaVQaVRaVSaVPaVPaVQaVRaVSaVPaVPaVQaVRaVSaVPaaiaaiaaiaaiaOKaVkbiVaVmaOKaOKaaibvdbvebvfbtNbvgbvhbvibvjbqBbvkbvlbvmbvnbtTbtTbvobnHbvpbvqbqLbqLbvrbqJbvsbvtbvubvvbvwbvxbvybvzbIZbIZbIZbIZbsHbIZbIZbIZaXCaVnaafaafaafaafaafbdzbvBbvCbdzbvDbdzbvBbvEbdzbvFbvGbdzbvHbvIbdzbdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaaaaeaaaaaaaaaaaeaaeaaaaaaaaabrmbvJbvKbvLbrmbvMbvNbvObvPbvQbvRbrqaafaafaafaaiaaiaaiaaiaaiaaiaaiaaiaafaafbrmbvSbuKbuKbvTbvUbvVbvWbvXbvYbvZbuKdJdbwbbwcbaZbwdbwebwfbwgbaZbwhbrIbwibwjbwjbwjbwjbwjbwkbwlbwmbwjbcJbbkbwnaVGaZhbwoaXOaVeaafaafaafaafaafaafaafaafaafbhrbhrbhrbwpbhrbhrbhrbhrbhraafaafaVeaVeaVNaVOaVNaVeaVeaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaVeaOKaUubwqbgibwraOKbwsbwtbwubwvbwwbwxbwybukbwAbwBbwCbwDbwEbwFbtTbwGbqBcsVbqFbwIbwJbwKbwLbwMbwNbwObwPbwQbwRbwSbwTbwUbwVbulbwZbumbwZbwZbunbwVaXCaVnaafaafaafaafaafbdzbxcbxdbxebxfbxgbxhbxibxjbxkbxlbdzbxmbxnbxobdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXDaXDaXDaXDaXDaXDaXDaaaaaaaaaaaaaaaaayaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaaaaeaaaaaaaaeaaeaaaaaaaaaaaabrmbuAbuBbuCbrmbuDbuEbuFbuGbuHbuIdIScxVaaiaaiaaiaaicxVcxVaaiaaiaaiaaiaaiaaibrmbrzdIRbfEbfEbfEbfEbfEbfEbfEbfEbfEdJcbuMbuNbaZbuObuPbuQbuRboHbuSbrIbqhbrKbuTbuUbuVbiHbuWbuXbuWbiHaaibbkbbkbiIbiJbiKaXOaaiaaiaafaafaafaafaafaafaafbhrbhrbhrbuYbuZbvabvbbvcbhrbhrbhraafaafaVeaVeaVOaVeaVeaaiaaiaaiaVPaVQaVRaVSaVPaVPaVQaVRaVSaVPaVPaVQaVRaVSaVPaaiaaiaaiaaiaOKaVkbiVaVmaOKaOKaaibvdbvebvfbtNbukbvhbvibvjbqBbvkbvlbvmbvnbtTbtTbvobnHbvpbvqbqLbqLbvrbqJbvsbvtbvubvvbvwbvxbvybvzbIZbIZbIZbIZbsHbIZbIZbIZaXCaVnaafaafaafaafaafbdzbvBbvCbdzbvDbdzbvBbvEbdzbvFbvGbdzbvHbvIbdzbdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaaaaeaaaaaaaaaaaeaaeaaaaaaaaabrmbvJbvKbvLbrmbvMbvNbvObvPbvQbvRbrqaafaafaafaaiaaiaaiaaiaaiaaiaaiaaiaafaafbrmbvSbuKbuKbvTbvUbvVbvWbvXbvYbvZbuKdJdbwbbwcbaZbwdbwebwfbwgbaZbwhbrIbwibwjbwjbwjbwjbwjbwkbwlbwmbwjbcJbbkbwnaVGaZhbwoaXOaVeaafaafaafaafaafaafaafaafaafbhrbhrbhrbwpbhrbhrbhrbhrbhraafaafaVeaVeaVNaVOaVNaVeaVeaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaVeaOKaUubwqbgibwraOKbwsbwtbwubwvbwwbwxbwybvgbwAbwBbwCbwDbwEbwFbtTbwGbqBcsVbqFbwIbwJbwKbwLbwMbwNbwObwPbwQbwRbwSbwTbwUbwVbulbwZbumbwZbwZbunbwVaXCaVnaafaafaafaafaafbdzbxcbxdbxebxfbxgbxhbxibxjbxkbxlbdzbxmbxnbxobdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaaeaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaabrjbsQbrlaaaaaeaaaaaaaaaaaaaaebxpbxqbxqbxqbxqbxrbrmbrmbrqbxsbxtbxubxvbxwbrqaafaafaafaafaaiaaiaaiaaiaaiaaiaafaafaafbrmbvSbuKbxxbxybxzbxAbxBbxCbxDbxEbxFdJebxHbxIbxJbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbxVbxSbxWbxXbxYbxZbyabybbbiaWBbeHbeIbycaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaafaafbydbyebydbydaVeaVeaVeaVeaVeaVebyfbygbyhbyiaVNaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVeaVebyjbykbylbymaPQbynbyobypbtNbyqbtNbyrbvhbysbytbspbyubyvbywbyxbyybyzbspbyAbyBbnMbyCbyCbyDbqJbyEbudbyFbyGbyHbvybyIbyJbwVbwVbwVbwVbuobwVbwVbwVbyOaVnaafaafaafaafaafbdzbdzbyPbyQbyRbySbyTbyUbyVbyWbyXbyYbyZbzabzbbdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaaaaaaaebzcaaeaaaaaebzcaaeaaaaaebzcaaeaaaaaebzcaaeaaaaaebzcaaeaaaaaeaaaaaabzdbzebzebzfbzgbzhbzibzjbzkbzlbzmbrqbznbzobzpbzqbzrbrqaafaafaafaafaafaaiaaiaaiaaiaafaafaafaafbrmbvSbuKbzsbxzbztbzubzvbzwbzxbzwbzybzzbzAbzBbzCbhebzDbhebzEbhebhebzFbzGbzHbzIbzJbzKbzLbzMbzNbzObzPbzQbzRbzSbzTbzUbzVbzWbzXbzYbzZbzZbzZbzZbAabzZbAbaVeaVeaVeaVebAcaVeaVeaVebAdbAebAebAebAebAebAfbAgbAhbAibAibAibAibAibAibAibAjbAibAibAibAkbAlbAlbAlbAlbAlbAlbAlbAlbAmbAlbAnbAobApbAqbAraYvbAsbAtbAubAvbAwbtLbAxbtNbAybAzbtVbAAbupbACbADbAEbAFbtVbAGbAHbAIbAJbAJbAKbALbAMbvtbANbAObAPbAQbARbwVbwVbwzbvAbwXbwWbxabwYbwVbyOaVnaafaafaafaafaafaafbdzbdzbdzbAWbAXbdzbdzbdzbdzbdzbdzbAYbAZbdzbdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaebBabBbbBbbBbbBcbBbbBbbBbbBcbBbbBbbBbbBcbBbbBbbBbbBcbBbbBbbBbbBcbBbbBbbBbbBbbBdbBebBfbBgbBhbBibBjbBkbBlbBmbBnbBobrqbrqbBpbrqbrqbBqbrqaafaafaafaafaafaafaafaaiaaiaafaafaafaafbrmbvSbuKbBrbBsbBtbBubBvbBwbBxbBybuKbBzbBAbBBbBCbBDbBEbBFbBGbBHbBIbBJbBKbwjbBLbBMbBNbBObBPbBQbxYbxZbyabybbbibbibBRbBSbBTaVebBUbBVbBWbBXbBYbBZbCabCbbCcbCdbCebCfbCgbzZbzZbzZbChaVeaVeaVeaVeaVNbCibCjbCkbClbClbClbClbClbClbClbCmbClbClbClbCnbCobCobCobCobCobCobCobFpbfYbhtaVebCqaUubbybCraQIbCsbCtbCubCvbCwbCxbCybCzbCAbCBbqBbqCbqDbCCbqCbCDbqDbqBbCEbqFbwIbwJbwKbCFbqJbCGbsxbCHbCIbsxbwVbwVbwVbCJbyKbxbbxbbCNbwZbyLbwVbyOaVnaafaafaafaafaafaafaafbdzbCObCPbCQbdzaafaafaafaafbdzbdzbdzbdzaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+4
View File
@@ -234,6 +234,7 @@
#include "code\datums\supplypacks\materials.dm"
#include "code\datums\supplypacks\medical.dm"
#include "code\datums\supplypacks\misc.dm"
#include "code\datums\supplypacks\misc_vr.dm"
#include "code\datums\supplypacks\munitions.dm"
#include "code\datums\supplypacks\recreation.dm"
#include "code\datums\supplypacks\robotics.dm"
@@ -1392,9 +1393,11 @@
#include "code\modules\error_handler\error_viewer.dm"
#include "code\modules\error_handler\~defines.dm"
#include "code\modules\events\apc_damage.dm"
#include "code\modules\events\atmos_leak.dm"
#include "code\modules\events\blob.dm"
#include "code\modules\events\brand_intelligence.dm"
#include "code\modules\events\camera_damage.dm"
#include "code\modules\events\canister_leak.dm"
#include "code\modules\events\carp_migration.dm"
#include "code\modules\events\comms_blackout.dm"
#include "code\modules\events\communications_blackout.dm"
@@ -1454,6 +1457,7 @@
#include "code\modules\gamemaster\game_master.dm"
#include "code\modules\gamemaster\helpers.dm"
#include "code\modules\gamemaster\actions\action.dm"
#include "code\modules\gamemaster\actions\canister_leak.dm"
#include "code\modules\gamemaster\actions\carp_migration.dm"
#include "code\modules\gamemaster\actions\comms_blackout.dm"
#include "code\modules\gamemaster\actions\dust.dm"