Merge branch 'master' of https://github.com/PolarisSS13/Polaris into scythe

# Conflicts:
#	icons/obj/weapons.dmi
This commit is contained in:
Anewbe
2017-09-28 16:07:45 -05:00
39 changed files with 620 additions and 102 deletions

View File

@@ -2,4 +2,3 @@
name = mapmerge driver
driver = ./mapmerge.sh %O %A %B
recursive = text

View File

@@ -6,6 +6,7 @@
#define NO_SLIP 0x10 // Cannot fall over.
#define NO_POISON 0x20 // Cannot not suffer toxloss.
#define NO_EMBED 0x40 // Can step on broken glass with no ill-effects and cannot have shrapnel embedded in it.
#define NO_HALLUCINATION 0x80 // Don't hallucinate, ever
// unused: 0x8000 - higher than this will overflow
// Species spawn flags

View File

@@ -14,11 +14,11 @@
desc = "This armor has no inherent ability to absorb shock, as normal armor usually does. Instead, this emits a strong field \
around the wearer, designed to protect from most forms of harm, from lasers to bullets to close quarters combat. It appears to \
require a very potent supply of an energy of some kind in order to function."
icon_state = "reactiveoff" //wip
item_state = "reactiveoff"
icon_state = "shield_armor_0"
blood_overlay_type = "armor"
slowdown = 0
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
action_button_name = "Toggle Shield Projector"
var/active = 0
var/damage_to_energy_multiplier = 50.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 750 energy cost
var/datum/effect/effect/system/spark_spread/spark_system = null
@@ -49,7 +49,7 @@
var/damage_to_energy_cost = (damage_to_energy_multiplier * damage_blocked)
if(!user.technomancer_pay_energy(damage_to_energy_cost))
user << "<span class='danger'>Your shield fades due to lack of energy!</span>"
to_chat(user, "<span class='danger'>Your shield fades due to lack of energy!</span>")
active = 0
update_icon()
return 0
@@ -67,7 +67,7 @@
P.damage = P.damage - damage_blocked
user.visible_message("<span class='danger'>\The [user]'s [src] absorbs [attack_text]!</span>")
user << "<span class='warning'>Your shield has absorbed most of \the [damage_source].</span>"
to_chat(user, "<span class='warning'>Your shield has absorbed most of \the [damage_source].</span>")
spark_system.start()
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
@@ -75,14 +75,17 @@
/obj/item/clothing/suit/armor/shield/attack_self(mob/user)
active = !active
user << "<span class='notice'>You [active ? "" : "de"]active \the [src].</span>"
to_chat(user, "<span class='notice'>You [active ? "" : "de"]activate \the [src].</span>")
update_icon()
user.update_inv_wear_suit()
user.update_action_buttons()
/obj/item/clothing/suit/armor/shield/update_icon()
icon_state = "shield_armor_[active]"
item_state = "shield_armor_[active]"
if(active)
icon_state = "shield_armor"
set_light(2, 1, l_color = "#006AFF")
else
icon_state = "shield_armor_off"
set_light(0, 0, l_color = "#000000")
..()
return

View File

@@ -10,55 +10,70 @@
/obj/item/clothing/suit/armor/tesla
name = "tesla armor"
desc = "This rather dangerous looking armor will hopefully shock your enemies, and not you in the process."
icon_state = "reactive" //wip
item_state = "reactive"
icon_state = "tesla_armor_1" //wip
blood_overlay_type = "armor"
slowdown = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
action_button_name = "Toggle Tesla Armor"
var/active = 1 //Determines if the armor will zap or block
var/ready = 1 //Determines if the next attack will be blocked, as well if a strong lightning bolt is sent out at the attacker.
var/ready_icon_state = "reactive" //also wip
var/normal_icon_state = "reactiveoff"
var/ready_icon_state = "tesla_armor_1" //also wip
var/normal_icon_state = "tesla_armor_0"
var/cooldown_to_charge = 15 SECONDS
/obj/item/clothing/suit/armor/tesla/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
//First, some retaliation.
if(istype(damage_source, /obj/item/projectile))
var/obj/item/projectile/P = damage_source
if(P.firer && get_dist(user, P.firer) <= 3)
if(ready)
shoot_lightning(P.firer, 40)
else
shoot_lightning(P.firer, 15)
else
if(attacker && attacker != user)
if(get_dist(user, attacker) <= 3) //Anyone farther away than three tiles is too far to shoot lightning at.
if(active)
if(istype(damage_source, /obj/item/projectile))
var/obj/item/projectile/P = damage_source
if(P.firer && get_dist(user, P.firer) <= 3)
if(ready)
shoot_lightning(attacker, 40)
shoot_lightning(P.firer, 40)
else
shoot_lightning(attacker, 15)
shoot_lightning(P.firer, 15)
//Deal with protecting our wearer now.
if(ready)
ready = 0
spawn(cooldown_to_charge)
ready = 1
else
if(attacker && attacker != user)
if(get_dist(user, attacker) <= 3) //Anyone farther away than three tiles is too far to shoot lightning at.
if(ready)
shoot_lightning(attacker, 40)
else
shoot_lightning(attacker, 15)
//Deal with protecting our wearer now.
if(ready)
ready = 0
spawn(cooldown_to_charge)
ready = 1
update_icon()
to_chat(user, "<span class='notice'>\The [src] is ready to protect you once more.</span>")
visible_message("<span class='danger'>\The [user]'s [src.name] blocks [attack_text]!</span>")
update_icon()
user << "<span class='notice'>\The [src] is ready to protect you once more.</span>"
visible_message("<span class='danger'>\The [user]'s [src.name] blocks [attack_text]!</span>")
update_icon()
return 1
return 1
return 0
/obj/item/clothing/suit/armor/tesla/attack_self(mob/user)
active = !active
to_chat(user, "<span class='notice'>You [active ? "" : "de"]activate \the [src].</span>")
update_icon()
user.update_inv_wear_suit()
user.update_action_buttons()
/obj/item/clothing/suit/armor/tesla/update_icon()
..()
if(ready)
if(active && ready)
icon_state = ready_icon_state
item_state = ready_icon_state
set_light(2, 1, l_color = "#006AFF")
else
icon_state = normal_icon_state
item_state = normal_icon_state
set_light(0, 0, l_color = "#000000")
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
H.update_inv_wear_suit(0)
H.update_action_buttons()
..()
/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(var/mob/target, var/power)
var/obj/item/projectile/beam/lightning/lightning = new(src)

View File

@@ -102,7 +102,16 @@
flashfail = 1
else if(issilicon(M))
M.Weaken(rand(5,10))
flashfail = 0
var/mob/living/silicon/S = M
if(isrobot(S))
var/mob/living/silicon/robot/R = S
if(R.has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in R
if(shield)
if(shield.active)
shield.adjust_flash_count(R, 1)
flashfail = 1
else
flashfail = 1
@@ -125,6 +134,7 @@
else
user.visible_message("<span class='notice'>[user] overloads [M]'s sensors with the flash!</span>")
M.Weaken(rand(5,10))
else
user.visible_message("<span class='notice'>[user] fails to blind [M] with the flash!</span>")

View File

@@ -25,7 +25,7 @@
return
if ((CLUMSY in user.mutations) && prob(50))
user << "<span class='warning'>Uh ... how do those things work?!</span>"
to_chat(user, "<span class='warning'>Uh ... how do those things work?!</span>")
place_handcuffs(user, user)
return
@@ -38,7 +38,7 @@
if(can_place(C, user))
place_handcuffs(C, user)
else
user << "<span class='danger'>You need to have a firm grip on [C] before you can put \the [src] on!</span>"
to_chat(user, "<span class='danger'>You need to have a firm grip on [C] before you can put \the [src] on!</span>")
/obj/item/weapon/handcuffs/proc/can_place(var/mob/target, var/mob/user)
if(user == target)
@@ -60,11 +60,11 @@
return 0
if (!H.has_organ_for_slot(slot_handcuffed))
user << "<span class='danger'>\The [H] needs at least two wrists before you can cuff them together!</span>"
to_chat(user, "<span class='danger'>\The [H] needs at least two wrists before you can cuff them together!</span>")
return 0
if(istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit.
user << "<span class='danger'>\The [src] won't fit around \the [H.gloves]!</span>"
to_chat(user, "<span class='danger'>\The [src] won't fit around \the [H.gloves]!</span>")
return 0
user.visible_message("<span class='danger'>\The [user] is attempting to put [cuff_type] on \the [H]!</span>")
@@ -166,7 +166,7 @@ var/last_chew = 0
if (R.use(1))
var/obj/item/weapon/material/wirerod/W = new(get_turf(user))
user.put_in_hands(W)
user << "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>"
to_chat(user, "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>")
qdel(src)
update_icon(user)
@@ -188,7 +188,7 @@ var/last_chew = 0
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "handcuff"
icon_state = "legcuff"
flags = CONDUCT
throwforce = 0
w_class = ITEMSIZE_NORMAL
@@ -204,7 +204,7 @@ var/last_chew = 0
return
if ((CLUMSY in user.mutations) && prob(50))
user << "<span class='warning'>Uh ... how do those things work?!</span>"
to_chat(user, "<span class='warning'>Uh ... how do those things work?!</span>")
place_legcuffs(user, user)
return
@@ -217,7 +217,7 @@ var/last_chew = 0
if(can_place(C, user))
place_legcuffs(C, user)
else
user << "<span class='danger'>You need to have a firm grip on [C] before you can put \the [src] on!</span>"
to_chat(user, "<span class='danger'>You need to have a firm grip on [C] before you can put \the [src] on!</span>")
/obj/item/weapon/handcuffs/legcuffs/proc/place_legcuffs(var/mob/living/carbon/target, var/mob/user)
playsound(src.loc, cuff_sound, 30, 1, -2)
@@ -227,11 +227,11 @@ var/last_chew = 0
return 0
if (!H.has_organ_for_slot(slot_legcuffed))
user << "<span class='danger'>\The [H] needs at least two ankles before you can cuff them together!</span>"
to_chat(user, "<span class='danger'>\The [H] needs at least two ankles before you can cuff them together!</span>")
return 0
if(istype(H.shoes,/obj/item/clothing/shoes/magboots/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit.
user << "<span class='danger'>\The [src] won't fit around \the [H.shoes]!</span>"
to_chat(user, "<span class='danger'>\The [src] won't fit around \the [H.shoes]!</span>")
return 0
user.visible_message("<span class='danger'>\The [user] is attempting to put [cuff_type] on \the [H]!</span>")

View File

@@ -0,0 +1,80 @@
/obj/item/weapon/material/gravemarker
name = "grave marker"
desc = "An object used in marking graves."
icon_state = "gravemarker"
w_class = ITEMSIZE_LARGE
fragile = 1
force_divisor = 0.65
thrown_force_divisor = 0.25
var/icon_changes = 1 //Does the sprite change when you put words on it?
var/grave_name = "" //Name of the intended occupant
var/epitaph = "" //A quick little blurb
/obj/item/weapon/material/gravemarker/attackby(obj/item/weapon/W, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver))
var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN)
if(carving_1)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] carves something into \the [src.name].", "You carve your message into \the [src.name].")
grave_name += carving_1
update_icon()
var/carving_2 = sanitizeSafe(input(user, "What message should \the [src.name] have?", "Epitaph Carving", null) as text, MAX_NAME_LEN)
if(carving_2)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] carves something into \the [src.name].", "You carve your message into \the [src.name].")
epitaph += carving_2
update_icon()
if(istype(W, /obj/item/weapon/wrench))
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
material.place_dismantled_product(get_turf(src))
user.visible_message("[user] dismantles down \the [src.name].", "You dismantle \the [src.name].")
qdel(src)
..()
/obj/item/weapon/material/gravemarker/examine(mob/user)
..()
if(get_dist(src, user) < 4)
if(grave_name)
to_chat(user, "Here Lies [grave_name]")
if(get_dist(src, user) < 2)
if(epitaph)
to_chat(user, epitaph)
/obj/item/weapon/material/gravemarker/update_icon()
if(icon_changes)
if(grave_name && epitaph)
icon_state = "[initial(icon_state)]_3"
else if(grave_name)
icon_state = "[initial(icon_state)]_1"
else if(epitaph)
icon_state = "[initial(icon_state)]_2"
else
icon_state = initial(icon_state)
..()
/obj/item/weapon/material/gravemarker/attack_self(mob/user)
src.add_fingerprint(user)
if(!isturf(user.loc))
return 0
if(locate(/obj/structure/gravemarker, user.loc))
to_chat(user, "<span class='warning'>There's already something there.</span>")
return 0
else
to_chat(user, "<span class='notice'>You begin to place \the [src.name].</span>")
if(!do_after(usr, 10))
return 0
var/obj/structure/gravemarker/G = new /obj/structure/gravemarker/(user.loc, src.get_material())
to_chat(user, "<span class='notice'>You place \the [src.name].</span>")
G.grave_name = grave_name
G.epitaph = epitaph
G.add_fingerprint(usr)
G.dir = user.dir
qdel_null(src)
return

View File

@@ -241,6 +241,50 @@
new /obj/item/device/multitool/alien(src)
new /obj/item/stack/cable_coil/alien(src)
/obj/item/weapon/storage/belt/medical/alien
name = "alien belt"
desc = "A belt(?) that can hold things."
icon = 'icons/obj/abductor.dmi'
icon_state = "belt"
item_state = "security"
can_hold = list(
/obj/item/device/healthanalyzer,
/obj/item/weapon/dnainjector,
/obj/item/weapon/reagent_containers/dropper,
/obj/item/weapon/reagent_containers/glass/beaker,
/obj/item/weapon/reagent_containers/glass/bottle,
/obj/item/weapon/reagent_containers/pill,
/obj/item/weapon/reagent_containers/syringe,
/obj/item/weapon/flame/lighter/zippo,
/obj/item/weapon/storage/fancy/cigarettes,
/obj/item/weapon/storage/pill_bottle,
/obj/item/stack/medical,
/obj/item/device/radio/headset,
/obj/item/device/pda,
/obj/item/taperoll,
/obj/item/device/megaphone,
/obj/item/clothing/mask/surgical,
/obj/item/clothing/head/surgery,
/obj/item/clothing/gloves,
/obj/item/weapon/reagent_containers/hypospray,
/obj/item/clothing/glasses,
/obj/item/weapon/crowbar,
/obj/item/device/flashlight,
/obj/item/weapon/cell/device,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/surgical
)
/obj/item/weapon/storage/belt/medical/alien/New()
..()
new /obj/item/weapon/surgical/scalpel/alien(src)
new /obj/item/weapon/surgical/hemostat/alien(src)
new /obj/item/weapon/surgical/retractor/alien(src)
new /obj/item/weapon/surgical/circular_saw/alien(src)
new /obj/item/weapon/surgical/FixOVein/alien(src)
new /obj/item/weapon/surgical/bone_clamp/alien(src)
new /obj/item/weapon/surgical/cautery/alien(src)
/obj/item/weapon/storage/belt/champion
name = "championship belt"
desc = "Proves to the world that you are the strongest!"

View File

@@ -166,13 +166,22 @@
/obj/item/weapon/surgical/bonesetter
name = "bone setter"
desc = "Put them in their place."
icon_state = "bone setter"
icon_state = "bone_setter"
force = 8.0
throwforce = 9.0
throw_speed = 3
throw_range = 5
attack_verb = list("attacked", "hit", "bludgeoned")
/obj/item/weapon/surgical/bone_clamp
name = "bone clamp"
desc = "The best way to get a bone fixed fast."
icon_state = "bone_clamp"
force = 8
throwforce = 9
throw_speed = 3
throw_range = 5
attack_verb = list("attacked", "hit", "bludgeoned")
// Cyborg Tools
@@ -201,4 +210,38 @@
toolspeed = 0.5
/obj/item/weapon/surgical/bonesetter/cyborg
toolspeed = 0.5
toolspeed = 0.5
// Alien Tools
/obj/item/weapon/surgical/retractor/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/hemostat/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/cautery/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/surgicaldrill/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/scalpel/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/circular_saw/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/FixOVein/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.25
/obj/item/weapon/surgical/bone_clamp/alien
icon = 'icons/obj/abductor.dmi'
toolspeed = 0.75

View File

@@ -0,0 +1,137 @@
/obj/structure/gravemarker
name = "grave marker"
desc = "An object used in marking graves."
icon_state = "gravemarker"
density = 1
anchored = 1
throwpass = 1
climbable = 1
layer = 3.1 //Above dirt piles
//Maybe make these calculate based on material?
var/health = 100
var/grave_name = "" //Name of the intended occupant
var/epitaph = "" //A quick little blurb
// var/dir_locked = 0 //Can it be spun? Not currently implemented
var/material/material
/obj/structure/gravemarker/New(var/newloc, var/material_name)
..(newloc)
if(!material_name)
material_name = "wood"
material = get_material_by_name("[material_name]")
if(!material)
qdel(src)
return
color = material.icon_colour
/obj/structure/gravemarker/examine(mob/user)
..()
if(get_dist(src, user) < 4)
if(grave_name)
to_chat(user, "Here Lies [grave_name]")
if(get_dist(src, user) < 2)
if(epitaph)
to_chat(user, epitaph)
/obj/structure/gravemarker/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(!mover)
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
if(get_dir(loc, target) & dir)
return !density
else
return 1
/obj/structure/gravemarker/CheckExit(atom/movable/O as mob|obj, target as turf)
if(istype(O) && O.checkpass(PASSTABLE))
return 1
if(get_dir(O.loc, target) == dir)
return 0
return 1
/obj/structure/gravemarker/attackby(obj/item/weapon/W, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver))
var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN)
if(carving_1)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] carves something into \the [src.name].", "You carve your message into \the [src.name].")
grave_name += carving_1
update_icon()
var/carving_2 = sanitizeSafe(input(user, "What message should \the [src.name] have?", "Epitaph Carving", null) as text, MAX_NAME_LEN)
if(carving_2)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] carves something into \the [src.name].", "You carve your message into \the [src.name].")
epitaph += carving_2
update_icon()
return
if(istype(W, /obj/item/weapon/wrench))
user.visible_message("[user] starts taking down \the [src.name].", "You start taking down \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] takes down \the [src.name].", "You take down \the [src.name].")
dismantle()
..()
/obj/structure/gravemarker/bullet_act(var/obj/item/projectile/Proj)
var/proj_damage = Proj.get_structure_damage()
if(!proj_damage)
return
..()
damage(proj_damage)
return
/obj/structure/gravemarker/ex_act(severity)
switch(severity)
if(1.0)
visible_message("<span class='danger'>\The [src] is blown apart!</span>")
qdel(src)
return
if(2.0)
visible_message("<span class='danger'>\The [src] is blown apart!</span>")
if(prob(50))
dismantle()
else
qdel(src)
return
/obj/structure/gravemarker/proc/damage(var/damage)
health -= damage
if(health <= 0)
visible_message("<span class='danger'>\The [src] falls apart!</span>")
dismantle()
/obj/structure/gravemarker/proc/dismantle()
material.place_dismantled_product(get_turf(src))
qdel(src)
return
/obj/structure/gravemarker/verb/rotate()
set name = "Rotate Grave Marker"
set category = "Object"
set src in oview(1)
if(anchored)
return
if(config.ghost_interaction)
src.set_dir(turn(src.dir, 90))
return
else
if(istype(usr,/mob/living/simple_animal/mouse))
return
if(!usr || !isturf(usr.loc))
return
if(usr.stat || usr.restrained())
return
src.set_dir(turn(src.dir, 90))
return

View File

@@ -209,7 +209,8 @@ var/list/admin_verbs_debug = list(
/datum/admins/proc/view_runtimes,
/client/proc/show_gm_status,
/datum/admins/proc/change_weather,
/datum/admins/proc/change_time
/datum/admins/proc/change_time,
/client/proc/admin_give_modifier
)
var/list/admin_verbs_paranoid_debug = list(

View File

@@ -401,7 +401,7 @@
desc = "A hologram projector in the shape of a gun. There is a dial on the side to change the gun's disguise."
icon_state = "deagle"
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
matter = list()
fire_sound = 'sound/weapons/Gunshot.ogg'

View File

@@ -11,6 +11,7 @@
recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]")
if(integrity>=50)
recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")

View File

@@ -261,8 +261,8 @@
src.brainmob.ckey = candidate.ckey
src.name = "[name] ([src.brainmob.name])"
src.brainmob << "<b>You are a [src], brought into existence on [station_name()].</b>"
src.brainmob << "<b>As a synthetic intelligence, you answer to all crewmembers, as well as the AI.</b>"
src.brainmob << "<b>Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm.</b>"
src.brainmob << "<b>As a synthetic intelligence, you are designed with organic values in mind.</b>"
src.brainmob << "<b>However, unless placed in a lawed chassis, you are not obligated to obey any individual crew member.</b>" //it's not like they can hurt anyone
// src.brainmob << "<b>Use say #b to speak to other artificial intelligences.</b>"
src.brainmob.mind.assigned_role = "Synthetic Brain"
@@ -281,7 +281,7 @@
/obj/item/device/mmi/digital/robot/New()
..()
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN"))]-[rand(1000, 9999)]"
src.brainmob.name = "[pick(list("ADA","DOS","GNU","MAC","WIN","NJS","SKS","DRD","IOS","CRM","IBM","TEX","LVM","BSD",))]-[rand(1000, 9999)]"
src.brainmob.real_name = src.brainmob.name
src.name = "robotic intelligence circuit ([src.brainmob.name])"

View File

@@ -233,7 +233,7 @@
set_light(0)
else
if(species.appearance_flags & RADIATION_GLOWS)
set_light(max(1,min(10,radiation/10)), max(1,min(20,radiation/20)), species.get_flesh_colour(src))
set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
// END DOGSHIT SNOWFLAKE
var/obj/item/organ/internal/diona/nutrients/rad_organ = locate() in internal_organs
@@ -248,6 +248,10 @@
updatehealth()
return
var/obj/item/organ/internal/brain/slime/core = locate() in internal_organs
if(core)
return
var/damage = 0
radiation -= 1 * RADIATION_SPEED_COEFFICIENT
if(prob(25))
@@ -903,7 +907,7 @@
Paralyse(3)
if(hallucination)
if(hallucination >= 20 && !(species.flags & (NO_POISON|IS_PLANT)) )
if(hallucination >= 20 && !(species.flags & (NO_POISON|IS_PLANT|NO_HALLUCINATION)) )
if(prob(3))
fake_attack(src)
if(!handling_hal)

View File

@@ -20,7 +20,7 @@ var/datum/species/shapeshifter/promethean/prometheans
bump_flag = SLIME
swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
push_flags = MONKEY|SLIME|SIMPLE_ANIMAL
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT | NO_HALLUCINATION
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
health_hud_intensity = 2

View File

@@ -715,7 +715,9 @@
overlays += "[panelprefix]-openpanel -c"
if(has_active_type(/obj/item/borg/combat/shield))
overlays += "[module_sprites[icontype]]-shield"
var/obj/item/borg/combat/shield/shield = locate() in src
if(shield && shield.active)
overlays += "[module_sprites[icontype]]-shield"
if(modtype == "Combat")
if(module_active && istype(module_active,/obj/item/borg/combat/mobility))

View File

@@ -70,7 +70,7 @@
//Combat shielding absorbs a percentage of damage directly into the cell.
if(has_active_type(/obj/item/borg/combat/shield))
var/obj/item/borg/combat/shield/shield = locate() in src
if(shield)
if(shield && shield.active)
//Shields absorb a certain percentage of damage based on their power setting.
var/absorb_brute = brute*shield.shield_level
var/absorb_burn = burn*shield.shield_level

View File

@@ -298,11 +298,54 @@
desc = "A powerful experimental module that turns aside or absorbs incoming attacks at the cost of charge."
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
var/shield_level = 0.5 //Percentage of damage absorbed by the shield.
var/shield_level = 0.5 //Percentage of damage absorbed by the shield.
var/active = 1 //If the shield is on
var/flash_count = 0 //Counter for how many times the shield has been flashed
var/overload_threshold = 3 //Number of flashes it takes to overload the shield
var/shield_refresh = 15 SECONDS //Time it takes for the shield to reboot after destabilizing
var/overload_time = 0 //Stores the time of overload
var/last_flash = 0 //Stores the time of last flash
/obj/item/borg/combat/shield/New()
processing_objects.Add(src)
..()
/obj/item/borg/combat/shield/Destroy()
processing_objects.Remove(src)
..()
/obj/item/borg/combat/shield/attack_self(var/mob/living/user)
set_shield_level()
/obj/item/borg/combat/shield/process()
if(active)
if(flash_count && (last_flash + shield_refresh < world.time))
flash_count = 0
last_flash = 0
else if(overload_time + shield_refresh < world.time)
active = 1
flash_count = 0
overload_time = 0
var/mob/living/user = src.loc
user.visible_message("<span class='danger'>[user]'s shield reactivates!</span>", "<span class='danger'>Your shield reactivates!.</span>")
user.update_icon()
/obj/item/borg/combat/shield/proc/adjust_flash_count(var/mob/living/user, amount)
if(active) //Can't destabilize a shield that's not on
flash_count += amount
if(amount > 0)
last_flash = world.time
if(flash_count >= overload_threshold)
overload(user)
/obj/item/borg/combat/shield/proc/overload(var/mob/living/user)
active = 0
user.visible_message("<span class='danger'>[user]'s shield destabilizes!</span>", "<span class='danger'>Your shield destabilizes!.</span>")
user.update_icon()
overload_time = world.time
/obj/item/borg/combat/shield/verb/set_shield_level()
set name = "Set shield level"
set category = "Object"

View File

@@ -58,7 +58,7 @@
return
if(mode == SYRINGE_BROKEN)
user << "<span class='warning'>This syringe is broken!</span>"
to_chat(user, "<span class='warning'>This syringe is broken!</span>")
return
if(user.a_intent == I_HURT && ismob(target))
@@ -70,26 +70,31 @@
switch(mode)
if(SYRINGE_DRAW)
if(!reagents.get_free_space())
user << "<span class='warning'>The syringe is full.</span>"
to_chat(user, "<span class='warning'>The syringe is full.</span>")
mode = SYRINGE_INJECT
return
if(ismob(target))//Blood!
if(reagents.has_reagent("blood"))
user << "<span class='notice'>There is already a blood sample in this syringe.</span>"
to_chat(user, "<span class='notice'>There is already a blood sample in this syringe.</span>")
return
if(istype(target, /mob/living/carbon))
var/amount = reagents.get_free_space()
var/mob/living/carbon/T = target
if(!T.dna)
user << "<span class='warning'>You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum).</span>"
to_chat(user, "<span class='warning'>You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum).</span>")
return
if(NOCLONE in T.mutations) //target done been et, no more blood in him
user << "<span class='warning'>You are unable to locate any blood.</span>"
to_chat(user, "<span class='warning'>You are unable to locate any blood.</span>")
return
if(T.isSynthetic())
to_chat(user, "<span class = 'warning'>You can't draw blood from a synthetic!</span>")
return
if(drawing)
user << "<span class='warning'>You are already drawing blood from [T.name].</span>"
to_chat(user, "<span class='warning'>You are already drawing blood from [T.name].</span>")
return
var/datum/reagent/B
@@ -117,50 +122,51 @@
reagents.update_total()
on_reagent_change()
reagents.handle_reactions()
user << "<span class='notice'>You take a blood sample from [target].</span>"
to_chat(user, "<span class='notice'>You take a blood sample from [target].</span>")
for(var/mob/O in viewers(4, user))
O.show_message("<span class='notice'>[user] takes a blood sample from [target].</span>", 1)
else //if not mob
if(!target.reagents.total_volume)
user << "<span class='notice'>[target] is empty.</span>"
to_chat(user, "<span class='notice'>[target] is empty.</span>")
return
if(!target.is_open_container() && !istype(target, /obj/structure/reagent_dispensers) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/weapon/reagent_containers/food))
user << "<span class='notice'>You cannot directly remove reagents from this object.</span>"
to_chat(user, "<span class='notice'>You cannot directly remove reagents from this object.</span>")
return
var/trans = target.reagents.trans_to_obj(src, amount_per_transfer_from_this)
user << "<span class='notice'>You fill the syringe with [trans] units of the solution.</span>"
to_chat(user, "<span class='notice'>You fill the syringe with [trans] units of the solution.</span>")
update_icon()
if(!reagents.get_free_space())
mode = SYRINGE_INJECT
update_icon()
if(SYRINGE_INJECT)
if(!reagents.total_volume)
user << "<span class='notice'>The syringe is empty.</span>"
to_chat(user, "<span class='notice'>The syringe is empty.</span>")
mode = SYRINGE_DRAW
return
if(istype(target, /obj/item/weapon/implantcase/chem))
return
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/smokable/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
user << "<span class='notice'>You cannot directly fill this object.</span>"
to_chat(user, "<span class='notice'>You cannot directly fill this object.</span>")
return
if(!target.reagents.get_free_space())
user << "<span class='notice'>[target] is full.</span>"
to_chat(user, "<span class='notice'>[target] is full.</span>")
return
var/mob/living/carbon/human/H = target
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
if(!affected)
user << "<span class='danger'>\The [H] is missing that limb!</span>"
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
return
else if(affected.robotic >= ORGAN_ROBOT)
user << "<span class='danger'>You cannot inject a robotic limb.</span>"
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
return
if(ismob(target) && target != user)
@@ -200,9 +206,9 @@
else
trans = reagents.trans_to_obj(target, amount_per_transfer_from_this)
if(trans)
user << "<span class='notice'>You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.</span>"
to_chat(user, "<span class='notice'>You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.</span>")
else
user << "<span class='notice'>The syringe is empty.</span>"
to_chat(user, "<span class='notice'>The syringe is empty.</span>")
if (reagents.total_volume <= 0 && mode == SYRINGE_INJECT)
mode = SYRINGE_DRAW
update_icon()
@@ -245,7 +251,7 @@
var/obj/item/organ/external/affecting = H.get_organ(target_zone)
if (!affecting || affecting.is_stump())
user << "<span class='danger'>They are missing that limb!</span>"
to_chat(user, "<span class='danger'>They are missing that limb!</span>")
return
var/hit_area = affecting.name
@@ -302,10 +308,10 @@
/obj/item/weapon/reagent_containers/syringe/ld50_syringe/afterattack(obj/target, mob/user, flag)
if(mode == SYRINGE_DRAW && ismob(target)) // No drawing 50 units of blood at once
user << "<span class='notice'>This needle isn't designed for drawing blood.</span>"
to_chat(user, "<span class='notice'>This needle isn't designed for drawing blood.</span>")
return
if(user.a_intent == "hurt" && ismob(target)) // No instant injecting
user << "<span class='notice'>This syringe is too big to stab someone with it.</span>"
to_chat(user, "<span class='notice'>This syringe is too big to stab someone with it.</span>")
..()
////////////////////////////////////////////////////////////////////////////////

View File

@@ -473,6 +473,15 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/surgical/scalpel/manager
sort_string = "MBBAD"
/datum/design/item/bone_clamp
name = "Bone Clamp"
desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel."
id = "bone_clamp"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4)
materials = list (DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2500)
build_path = /obj/item/weapon/surgical/bone_clamp
sort_string = "MBBAE"
/datum/design/item/implant
materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)

View File

@@ -145,4 +145,42 @@
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("<font color='red'>[user]'s hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>" , \
"<font color='red'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>")
"<font color='red'>Your hand slips, smearing [tool] in the incision in [target]'s [affected.name]!</font>")
/datum/surgery_step/clamp_bone
allowed_tools = list(
/obj/item/weapon/surgical/bone_clamp = 100
)
can_infect = 1
blood_level = 1
min_duration = 70
max_duration = 90
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if (!hasorgans(target))
return 0
var/obj/item/organ/external/affected = target.get_organ(target_zone)
return affected && (affected.robotic < ORGAN_ROBOT) && affected.open >= 2 && affected.stage == 0
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if (affected.stage == 0)
user.visible_message("<font color='blue'>[user] starts repairing the damaged bones in [target]'s [affected.name] with \the [tool].</font>" , \
"<font color='blue'>You starts repairing the damaged bones in [target]'s [affected.name] with \the [tool].</font>")
target.custom_pain("Something in your [affected.name] is causing you a lot of pain!", 50)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("<font color='blue'>[user] sets the bone in [target]'s [affected.name] with \the [tool].</font>", \
"<font color='blue'>You sets [target]'s bone in [affected.name] with \the [tool].</font>")
affected.status &= ~ORGAN_BROKEN
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("<font color='red'>[user]'s hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>" , \
"<font color='red'>Your hand slips, damaging the bone in [target]'s [affected.name] with \the [tool]!</font>")
affected.createwound(BRUISE, 5)

View File

@@ -168,10 +168,16 @@
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(istype(tool,/obj/item/stack/cable_coil/))
var/obj/item/stack/cable_coil/C = tool
if(!C.can_use(5))
user << "<span class='danger'>You need ten or more cable pieces to repair this damage.</span>" //usage amount made more consistent with regular cable repair
if(affected.burn_dam == 0)
to_chat(user, "<span class='notice'>There are no burnt wires here!</span>")
return SURGERY_FAILURE
C.use(5)
else
if(!C.can_use(5))
to_chat(user, "<span class='danger'>You need at least five cable pieces to repair this part.</span>") //usage amount made more consistent with regular cable repair
return SURGERY_FAILURE
else
C.use(5)
return affected && affected.open == 3 && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 KiB

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -4682,7 +4682,7 @@
"bMb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/mecha_part_fabricator,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/pros_fabricator,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/table/standard,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/posibrain,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/table/standard,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMh" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/multitool{pixel_x = 3},/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/turf/simulated/floor/tiled,/area/assembly/robotics)

View File

@@ -4366,8 +4366,8 @@
"bFX" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"bFY" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineWasteViewport1"; name = "Engine Waste Viewport Shutter"; opacity = 0},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor,/area/engineering/engine_waste)
"bFZ" = (/obj/machinery/atmospherics/pipe/manifold/visible/black{dir = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineWasteViewport1"; name = "Engine Waste Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = null; req_one_access = list(11,24)},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor,/area/engineering/engine_waste)
"bGa" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor,/area/engineering/engine_waste)
"bGb" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/engine_waste)
"bGa" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_waste)
"bGb" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_waste)
"bGc" = (/obj/machinery/atmospherics/pipe/cap/visible,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_waste)
"bGd" = (/obj/machinery/atmospherics/pipe/simple/visible/black,/turf/simulated/floor,/area/engineering/engine_waste)
"bGe" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/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},/turf/simulated/floor,/area/engineering/engine_waste)
@@ -4619,7 +4619,7 @@
"bKQ" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 9},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor,/area/engineering/engine_waste)
"bKR" = (/turf/simulated/floor,/area/engineering/engine_waste)
"bKS" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_waste)
"bKT" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/door/window/northleft{name = "Engine Waste"; req_one_access = list(10,24)},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor,/area/engineering/engine_waste)
"bKT" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/door/window/northleft{name = "Engine Waste"; req_one_access = list(10,24)},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_waste)
"bKU" = (/obj/machinery/door/window/northright{name = "Engine Waste"; req_one_access = list(10,24)},/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 26; pixel_y = 0; req_access = null; req_one_access = list(11,24)},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor,/area/engineering/engine_waste)
"bKV" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/computer/security/engineering{name = "Drone Monitoring Cameras"; network = list("Engineering")},/obj/machinery/camera/network/engineering{c_tag = "ENG - Drone Fabrication"; dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"bKW" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
@@ -4960,7 +4960,7 @@
"bRt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/rnd/research)
"bRu" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/structure/cable/green,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bRv" = (/obj/machinery/mecha_part_fabricator,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bRw" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/steel_reinforced,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/posibrain,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bRw" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/steel_reinforced,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bRx" = (/obj/machinery/pros_fabricator,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bRy" = (/obj/machinery/camera/network/research{c_tag = "SCI - Robotics"; dir = 1},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bRz" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/assembly/robotics)
@@ -4990,9 +4990,9 @@
"bRX" = (/obj/machinery/atmospherics/pipe/cap/visible{dir = 1},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/engineering/engine_room)
"bRY" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/engineering/engine_room)
"bRZ" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/engine_room)
"bSa" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 2; tag_south = 4; tag_west = 0; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor/plating,/area/engineering/engine_room)
"bSa" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 2; tag_south = 4; tag_west = 1; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/structure/sign/warning/nosmoking_2{pixel_x = 32},/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room)
"bSb" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor,/area/engineering/engine_room)
"bSc" = (/obj/machinery/atmospherics/omni/filter{tag_east = 0; tag_north = 2; tag_south = 4; tag_west = 1; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/structure/sign/warning/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plating,/area/engineering/engine_room)
"bSc" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_north = 2; tag_south = 4; tag_west = 0; use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/filter,/turf/simulated/floor/plating,/area/engineering/engine_room)
"bSd" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"bSe" = (/obj/effect/landmark{name = "JoinLateCyborg"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"bSf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/hallway/engineer_hallway)
@@ -5411,7 +5411,7 @@
"cac" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor,/area/engineering/engine_room)
"cad" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/engine_room)
"cae" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_room)
"caf" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_x = 22; pixel_y = 0; req_access = list(10)},/turf/simulated/floor,/area/engineering/engine_room)
"caf" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_x = 22; pixel_y = 0; req_access = list(10)},/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room)
"cag" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_one_access = list(11)},/turf/simulated/floor/tiled,/area/engineering/engine_airlock)
"cah" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/engineering/engine_airlock)
"cai" = (/obj/structure/sign/warning/radioactive,/turf/simulated/wall/r_wall,/area/engineering/engine_airlock)
@@ -5481,7 +5481,7 @@
"cbu" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/button/remote/blast_door{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/turf/simulated/floor,/area/engineering/engine_room)
"cbv" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/engine_room)
"cbw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_room)
"cbx" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor,/area/engineering/engine_room)
"cbx" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_room)
"cby" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor,/area/engineering/engine_monitoring)
"cbz" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"cbA" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/supermatter_engine,/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
@@ -5646,7 +5646,7 @@
"ceD" = (/obj/machinery/disease2/isolator,/obj/effect/floor_decal/corner/lime/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology)
"ceE" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Reactor Vent"; p_open = 0},/obj/machinery/shield_diffuser,/turf/simulated/floor/reinforced/airless,/area/engineering/engine_room)
"ceF" = (/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room)
"ceG" = (/obj/machinery/mass_driver{dir = 8; id = "enginecore"},/obj/machinery/power/supermatter{layer = 4},/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room)
"ceG" = (/obj/machinery/mass_driver{dir = 8; id = "enginecore"},/obj/machinery/power/supermatter{layer = 4},/obj/effect/engine_setup/core,/turf/simulated/floor/greengrid/nitrogen,/area/engineering/engine_room)
"ceH" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/reinforced/nitrogen{nitrogen = 82.1472},/area/engineering/engine_room)
"ceI" = (/obj/effect/wingrille_spawn/reinforced_phoron,/obj/machinery/door/blast/regular{dir = 1; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor,/area/engineering/engine_room)
"ceJ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor,/area/engineering/engine_room)
@@ -5845,7 +5845,7 @@
"ciu" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/lime/full{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology)
"civ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -25; pixel_y = 6; req_access = list(10)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = -25; pixel_y = -6; req_access = list(10)},/turf/simulated/floor,/area/engineering/engine_room)
"ciw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_room)
"cix" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor,/area/engineering/engine_room)
"cix" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/coolant_canister,/turf/simulated/floor,/area/engineering/engine_room)
"ciy" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"ciz" = (/obj/structure/table/reinforced,/obj/item/clothing/ears/earmuffs,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
"ciA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light,/obj/machinery/newscaster{pixel_y = -30},/turf/simulated/floor/tiled,/area/engineering/engine_monitoring)
@@ -5917,7 +5917,7 @@
"cjO" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/camera/network/engine{c_tag = "ENG - Engine Core 3"; dir = 2},/turf/simulated/floor,/area/engineering/engine_room)
"cjP" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor,/area/engineering/engine_room)
"cjQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/engine_room)
"cjR" = (/obj/machinery/atmospherics/binary/pump,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor,/area/engineering/engine_room)
"cjR" = (/obj/machinery/atmospherics/binary/pump,/obj/effect/floor_decal/industrial/warning/corner,/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room)
"cjS" = (/turf/simulated/wall/r_wall,/area/engineering/engine_smes)
"cjT" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/engineering/engine_smes)
"cjU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access = list(11)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/engineering/engine_smes)
@@ -6111,11 +6111,11 @@
"cnA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 9},/turf/simulated/floor,/area/engineering/engine_room)
"cnB" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/engine_room)
"cnC" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/alarm/nobreach{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_room)
"cnD" = (/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating,/area/engineering/engine_smes)
"cnD" = (/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/obj/effect/engine_setup/smes,/turf/simulated/floor/plating,/area/engineering/engine_smes)
"cnE" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/obj/structure/table/steel,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"cnF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/table/steel,/obj/item/device/multitool{pixel_x = 5},/obj/item/clothing/gloves/yellow,/obj/machinery/camera/network/engine{c_tag = "ENG - SMES Room"; dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"cnG" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/engineering/engine_smes)
"cnH" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 750000; output_level = 500000; RCon_tag = "Engine - Main"},/turf/simulated/floor/plating,/area/engineering/engine_smes)
"cnH" = (/obj/structure/cable,/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 750000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/effect/engine_setup/smes/main,/turf/simulated/floor/plating,/area/engineering/engine_smes)
"cnI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/apmaint)
"cnJ" = (/turf/simulated/wall,/area/construction/seconddeck/construction1)
"cnK" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/construction/seconddeck/construction1)
@@ -6371,7 +6371,7 @@
"csA" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport2"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/engineering/engine_room)
"csB" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport2"; name = "Engine Radiator Viewport Shutters"; pixel_x = 0; pixel_y = -25; req_access = list(10)},/turf/simulated/floor,/area/engineering/engine_room)
"csC" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 10; icon_state = "intact"; tag = "icon-intact (SOUTHEAST)"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/engineering/engine_room)
"csD" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor,/area/engineering/engine_room)
"csD" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/outline/blue,/obj/effect/engine_setup/pump_max,/turf/simulated/floor,/area/engineering/engine_room)
"csE" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor,/area/engineering/engine_room)
"csF" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor/plating,/area/engineering/engine_room)
"csG" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/blue,/obj/structure/sign/warning/nosmoking_2{pixel_x = 32},/turf/simulated/floor/plating,/area/engineering/engine_room)
@@ -10489,7 +10489,7 @@ aaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybv
aaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaabDhbMBbMCbMDbMEbMFbMGbDhbMHbMIbKXbMJbysbMKbMLbLcbLcbMMbMNbMObMObMPbMQbMRbLgbMSbMTbMUbMVbMWbMXbMYbMZbNabAhbNbbNcbNdbNebNfbNgbNhbNibNjbNjbNkbNjbNjbNjbNjbpJbpJbxBbNlbpJaaaaaaaaabGKbGKbLCbLDbLEbLEbNmbNnbNobNpbNpbNpbNqbNrbNsbNtbNubNvbNvbNwbNwbNxbNybIGbIGbLKbLObDNbDNaaaaaaaaabrybNzbNAbNBbKrbNCbNDbNEbNFbNGbNHbNIbNJbNKbNLbNMbNNbNObNPbNPbNPbNQbNRbNSbNTbNUbNVbKybNWbNXbNYbNZbOabOabOabOabKBbObbOcbOdbKEbOebOfbFLbOgbOhbOibOjbOkbOlbOmbOnbEFaaaaaaaabaaaaaaaaaaaRaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaafaaaaaaaaabFVbOobFVbOobFVbOobFVbOobFVbOobFVbOoaafaafaafbOpbOqbOqbOqbOqbOqbOpbOrbOsbOqbwObOtbKXbOubysbOvbOwbLcbOxbOybOzbOybOAbOBbOybOCbLgbODbOEbOFbOGbOHbOIbOJbMZbOKbAhbOLbOMbONbOObOPbOQbORbOSbNjbOTbOUbOVbOVbOWbNjbOXbtybxBbOYbClaaaaaaaaabGKbOZbLDbLEbPabPbbPcbPdbPebPfbPgbPhbPibPjbPkbIGbLIbPlbIGbIGbPmbPnbPobPpbPqbIGbLKbPrbDNaaaaaaaaabqvbPsbsIbPtbKrbPubPvbPwbPxbPybPzbPAbPBbPCbPDbMabPEbPFbPGbPHbPGbPIbNUbPJbPKbPLbPMbKybPNbPObPPbPQbPRbPSbOabPTbKBbPUbPVbPWbKEbPXbPYbFLbPZbQabQbbQbbQbbQabQabQcbDgaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabQdbQebQfbQebQfbQebQfbQebQfbQebQfbQebQgbQhbOqbOqbQibQjbQkbQlbQkbQmbQnbQobQpbwObQqbQrbQsbQtbQubQvbLcbQwbOybQxbQybQzbQAbOybQBbLgbQCbQDbQEbQFbQGbQHbAhbQIbQJbQKbQLbQMbQNbQObQPbQQbORbLsbQRbQSbQTbQSbQUbQVbNjbQWbtybxBbQXbClaaaaaabGJbGJbQYbLEbLEbQZbRabRbbRcbRdbRcbRcbRebRfbFtbRgbRhbRibRibRjbRkbRlbRibRibRmbPpbIGbIGbRnbGLbGLaaaaaabqvbPsbsIbRobKrbRpbRqbRrbPxbRsbKrbKrbsTbRtbsTbKybKybRubRvbRwbRxbPIbRybRzbRAbPGbRBbKybRCbRDbREbRFbPRbRGbOabRHbKBbRIbRJbRKbKEbRLbwFbFLbPZbRMbRNbRObRPbRQbRRbQcbBEaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabHJbFWbFWbFWbFWbFWbFWbFWbFWbFWbFWbFWbQgbRSbRTbRUbRVbRWbRXbRYbRWbRZbSabSbbScbwObSdbSebGjbysbSfbSgbLcbShbOybOybSibSjbOybOybSkbLgbSlbSmbSnbSobSpbSqbSrbSsbStbBXbSubOMbLsbSvbSwbSwbSxbLsbNjbSybSzbSAbSBbSCbNjbQWbtybxBbyVbClaaaaaabGJbSDbSEbLEbSFbSGbRbbRbbSHbSIbSJbRbbSKbRfbRfbSLbRibRibSMbSNbSNbSObSPbRibRibSQbSRbSSbSTbSUbGLaaaaaabqvbPsbSVbSVbKrbSWbSXbSXbSYbSZbPAbTabTbbTcbTdbTebMabTfbTgbTgbTgbThbTibTibTjbTkbTibTlbTmbTnbTobTpbOabOabOabTqbKBbTrbTsbTtbKEbMubMvbFLbTubFLbFLbFLbFLbFLbFLbFLbFLbTvbTvaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaabHJbFWbFWbFWbFWbFWbFWbFWbFWbFWbFWbFWbQgbRSbRTbRUbRVbRWbRXbRYbRWbRZbScbSbbSabwObSdbSebGjbysbSfbSgbLcbShbOybOybSibSjbOybOybSkbLgbSlbSmbSnbSobSpbSqbSrbSsbStbBXbSubOMbLsbSvbSwbSwbSxbLsbNjbSybSzbSAbSBbSCbNjbQWbtybxBbyVbClaaaaaabGJbSDbSEbLEbSFbSGbRbbRbbSHbSIbSJbRbbSKbRfbRfbSLbRibRibSMbSNbSNbSObSPbRibRibSQbSRbSSbSTbSUbGLaaaaaabqvbPsbSVbSVbKrbSWbSXbSXbSYbSZbPAbTabTbbTcbTdbTebMabTfbTgbTgbTgbThbTibTibTjbTkbTibTlbTmbTnbTobTpbOabOabOabTqbKBbTrbTsbTtbKEbMubMvbFLbTubFLbFLbFLbFLbFLbFLbFLbFLbTvbTvaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaabFVbOobFVbOobFVbOobFVbOobFVbOobFVbOoaadbTwbTxbTybTzbTAbTBbTCbTAbRZbTDbTEbTFbwObTGbTHbTGbysbTIbTJbLcbTKbOybOybTLbSjbOybOybTMbLgbTNbTObTPbTQbTRbTSbMYbJXbAhbAhbNbbTTbTUbLsbLsbLsbLsbTVbNjbTWbNjbTXbNjbNjbNjbpJbtybxBbTYbpJaaaaaabGKbTZbUabUbbUcbUdbUebUfbUgbUhbUibRbbUjbUjbUkbUlbRibUmbUnbUobUobUpbUqbUrbRibUsbUtbUubSTbUvbDNaaaaaabrybPsbzcbrybKrbUwbUxbUybUybUzbUAbUBbUCbUDbUEbUFbUGbUHbUIbUIbUIbUJbUKbULbUMbUNbUObTlbUPbUQbURbUSbKBbUTbUUbUVbKBbUWbUXbUYbKEbMubMvbUZbVabVbbVcbVdbVebVfbVgbVhbVibVjbVkbVkbVjbVjbVjbVjbVjaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaabQdbQebQfbQebQfbQebQfbQebQfbQebQfbQebQgbVlbOqbVmbTCbTAbTBbTCbTAbRZbVnbVobVobVobVobVobVobVobVpbVqbLcbVrbVsbVtbVubVvbVwbVxbVybLgbLgbVzbLgbVAbVBbLgbVCbJXbAhbAhbVDbLqbVEbVFbVGbVHbVIbVJbNjbVKbNjbVLbNjbVMbVNbVObtybxBbtybpJaaaaaabGKbVPbVQbPgbVRbVSbVTbVUbVVbVWbVXbVYbVZbWabWbbWcbRibWdbWebWfbWgbWhbUqbWibWjbWkbWlbWmbWnbWobDNaaaaaabrybPsbWpbWqbKrbKrbWrbWsbWtbWubPAbWvbWwbWxbWybWzbWAbWBbWCbWDbWEbWFbUKbWGbWHbWIbWJbTlbKBbWKbKBbKBbKBbKBbKBbKBbKBbKEbKEbKEbKEbWLbWMbUZbWNbWObWPbWQbWRbWSbVebVhbVhbVjbWTbWUbWVbVjbWWbWXbVjbVjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvybvybvybvybvybvybvybvybvyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafbQdbWYbWZbWYbWZbWYbWZbWYbWZbWYbWZbWYbQgbXabOqbXbbTCbXcbXdbTCbXcbRZbXebVobXfbXgbXhbXibXjbVobSfbXkbVybVybVybVybVybVybVybVybVybXlbLgbLgbLgbLgbLgbLgbXmbXnbyHbXobXmbXpbXpbXpbXpbXpbXpbXpbXqbXqbXqbXqbNjbXrbXsbpJbXtbXubXvbpJaaaaaabGKbXwbXxbLEbXybXzbRbbRbbRbbRbbRbbRbbXAbXBbXBbXCbRibRibRibRibRibXDbUqbXEbRibIGbWlbWmbWnbXFbDNaaaaaabrybXGbsIbsIbXHbKrbKrbKrbKrbKrbKrbXIbXJbXKbXJbXIbKybKybKybKybKybKybTlbXLbXMbXMbXNbTlbXObXObXObXPbXQbXRbXSbXTbXUbXVbXWbsTbXXbXYbXZbYabYbbYcbYdbWQbWRbYebVebYfbVhbYgbYhbYibYjbVkbYkbYibYlbVjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View File

@@ -2177,7 +2177,7 @@
"PS" = (/obj/structure/table/steel,/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"PT" = (/obj/machinery/atmospherics/unary/freezer{tag = "icon-freezer_0 (WEST)"; icon_state = "freezer_0"; dir = 8},/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
"PU" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/skipjack_station/start)
"PV" = (/obj/structure/table/standard,/obj/item/weapon/legcuffs,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start)
"PV" = (/obj/structure/table/standard,/obj/item/weapon/handcuffs/legcuffs,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start)
"PW" = (/obj/structure/table/standard,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor/black,/area/skipjack_station/start)
"PX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"PY" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start)

View File

@@ -2,4 +2,9 @@
name = "Cave Content"
desc = "Don't dig too deep!"
// To be added: Templates for cave exploration when they are made.
// To be added: Templates for cave exploration when they are made.
/datum/map_template/cave/deadBeacon
name = "Abandoned Relay"
desc = "An unregistered comms relay, abandoned to the elements."
mappath = 'maps/submaps/cave_submaps/deadBeacon.dmm'

View File

@@ -0,0 +1,6 @@
/area/submap/cave
name = "Cave Submap Area"
icon_state = "submap"
/area/submap/cave/deadBeacon
name = "abandoned relay"

View File

@@ -0,0 +1,62 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/simulated/mineral/floor,/area/submap/cave/deadBeacon)
"c" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/mineral/floor,/area/submap/cave/deadBeacon)
"d" = (/turf/simulated/wall/r_wall,/area/submap/cave/deadBeacon)
"e" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"f" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"g" = (/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"h" = (/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/submap/cave/deadBeacon)
"i" = (/obj/structure/grille/broken,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"j" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"k" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"l" = (/obj/item/weapon/material/shard,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"m" = (/obj/structure/table/steel,/obj/item/weapon/circuitboard/comm_server,/obj/machinery/light/built{dir = 8; fitting = ""},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"n" = (/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"o" = (/obj/item/weapon/paper/crumpled{info = "Sampatti Relay Sif-833 <BR> Decryption Key for 12-04-2488: <BR> 849B0022FBA920C244 <BR> Eyes Only. <BR> The insider who knows all the secrets can bring down Lanka."; name = "Dusty Note"},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"p" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"q" = (/obj/item/stack/rods,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"r" = (/obj/machinery/telecomms/relay{active_power_usage = 1; broadcasting = 0; panel_open = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"s" = (/obj/machinery/telecomms/broadcaster{light_power = 0; on = 0},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"t" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"u" = (/obj/machinery/telecomms/receiver{light_power = 0; on = 0},/obj/structure/cable,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"v" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"w" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"x" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"y" = (/obj/effect/decal/remains/robot,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"z" = (/obj/item/stack/cable_coil{amount = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"A" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor,/area/submap/cave/deadBeacon)
"B" = (/obj/structure/grille/broken,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"C" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"D" = (/obj/item/weapon/cigbutt,/obj/item/weapon/wrench,/obj/machinery/light/built,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"E" = (/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"F" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"G" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"H" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"I" = (/obj/machinery/access_button/airlock_interior{dir = 4},/turf/simulated/wall/r_wall,/area/submap/cave/deadBeacon)
"J" = (/obj/structure/grille/broken,/obj/item/stack/rods,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"K" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"L" = (/obj/structure/sign/warning/secure_area,/turf/simulated/wall/r_wall,/area/submap/cave/deadBeacon)
"M" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall/r_wall,/area/submap/cave/deadBeacon)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaabbaaaaaaaa
aaaaaabbabbcbaaaaaaa
aaaaaadefgghidaaaaaa
aaaaaahjkgglhibaaaaa
aaaaahdmnoggggbaaaaa
aaaabnpqnrsgqtbaaaaa
aaaabngnnuvwnxaaaaaa
aaaabhdgynnzkxbaaaaa
aaaaAbBCDnnEFGbaaaaa
aaaaaadidHHIJdbaaaaa
aaaaaaabdgnKbbaaaaaa
aaaaaaaaLHHMaaaaaaaa
aaaaaaaabbbAaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
"}

View File

@@ -922,6 +922,7 @@
#include "code\game\objects\items\weapons\material\ashtray.dm"
#include "code\game\objects\items\weapons\material\bats.dm"
#include "code\game\objects\items\weapons\material\foam.dm"
#include "code\game\objects\items\weapons\material\gravemarker.dm"
#include "code\game\objects\items\weapons\material\kitchen.dm"
#include "code\game\objects\items\weapons\material\knives.dm"
#include "code\game\objects\items\weapons\material\material_armor.dm"
@@ -967,6 +968,7 @@
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\ghost_pods.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\gravemarker.dm"
#include "code\game\objects\structures\grille.dm"
#include "code\game\objects\structures\inflatable.dm"
#include "code\game\objects\structures\janicart.dm"
@@ -2269,6 +2271,7 @@
#include "maps\northern_star\northern_star.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\cave_submaps\cave.dm"
#include "maps\submaps\cave_submaps\cave_areas.dm"
#include "maps\submaps\space_submaps\space.dm"
#include "maps\submaps\surface_submaps\forest.dm"
#include "maps\submaps\surface_submaps\forest_areas.dm"