Weapons Racks (#19338)

Added weapons racks, can be locked/unlocked with an ID card.
Added weapons racks sprites, from Wezzy.
Refactored some circuitboard code, moved the defines, applied the
defines, DMDocs.
Moved mutable appearance appearance flag set to the mutable appearance
file.
Reorganized the Horizon armory with the weapons racks, moved things
around, put down markers on lockers depending on the danger level of
their content, reorganized content of the remaining lockers.
Made weapons racks constructable with circuitboards.


![image](https://github.com/Aurorastation/Aurora.3/assets/65877598/8b4ec7ae-40c4-4cd7-b338-76120d468b90)

![image](https://github.com/Aurorastation/Aurora.3/assets/65877598/a69d1f85-c4b2-4643-af2b-6832e3ea2c43)

![image](https://github.com/Aurorastation/Aurora.3/assets/65877598/11c1afe4-0fa1-4708-8eb4-64e1f5594913)

sound/items/metal_shutter.ogg -
https://freesound.org/people/bruno.auzet/sounds/524695/ (CC0, sound was
edited)
This commit is contained in:
Fluffy
2024-06-09 19:07:52 +02:00
committed by GitHub
parent aaaaef6122
commit 9acce89e2a
40 changed files with 626 additions and 252 deletions
+3 -1
View File
@@ -42,6 +42,7 @@
#include "code\__DEFINES\byond_compat.dm"
#include "code\__DEFINES\callback.dm"
#include "code\__DEFINES\chemistry.dm"
#include "code\__DEFINES\circuitboard.dm"
#include "code\__DEFINES\color.dm"
#include "code\__DEFINES\components.dm"
#include "code\__DEFINES\construction.dm"
@@ -1210,7 +1211,6 @@
#include "code\game\objects\items\weapons\traps.dm"
#include "code\game\objects\items\weapons\vaurca_items.dm"
#include "code\game\objects\items\weapons\weaponry.dm"
#include "code\game\objects\items\weapons\circuitboards\_defines.dm"
#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm"
#include "code\game\objects\items\weapons\circuitboards\mecha.dm"
#include "code\game\objects\items\weapons\circuitboards\rig.dm"
@@ -1238,6 +1238,7 @@
#include "code\game\objects\items\weapons\circuitboards\machinery\trashcompactor.dm"
#include "code\game\objects\items\weapons\circuitboards\machinery\trolley.dm"
#include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm"
#include "code\game\objects\items\weapons\circuitboards\structure\weapons_rack.dm"
#include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm"
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
#include "code\game\objects\items\weapons\grenades\dynamite.dm"
@@ -1369,6 +1370,7 @@
#include "code\game\objects\structures\warp_drive.dm"
#include "code\game\objects\structures\watercloset.dm"
#include "code\game\objects\structures\weapon_rack.dm"
#include "code\game\objects\structures\weapons_rack.dm"
#include "code\game\objects\structures\windoor_assembly.dm"
#include "code\game\objects\structures\window.dm"
#include "code\game\objects\structures\barricades\_barricade.dm"
+7
View File
@@ -0,0 +1,7 @@
/*##########################
Board types
##########################*/
#define BOARD_MACHINE "machine"
#define BOARD_COMPUTER "computer"
#define BOARD_OTHER "other"
-1
View File
@@ -192,7 +192,6 @@
#define DEFAULT_RENDERER_APPEARANCE_FLAGS (PLANE_MASTER | NO_CLIENT_COLOR)
/image/appearance_flags = DEFAULT_APPEARANCE_FLAGS
/mutable_appearance/appearance_flags = DEFAULT_APPEARANCE_FLAGS // Inherits /image but re docs, subject to change
/atom/proc/hud_layerise()
plane = HUD_PLANE
+3
View File
@@ -4,6 +4,9 @@
// Mutable appearances are children of images, just so you know.
/mutable_appearance
appearance_flags = DEFAULT_APPEARANCE_FLAGS //Bay shit
/mutable_appearance/New(mutable_appearance/to_copy)
..()
if(!to_copy)
-3
View File
@@ -1,8 +1,5 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
/obj/var/list/req_access
/obj/var/list/req_one_access
//returns 1 if this mob has sufficient access to use this object
/obj/proc/allowed(mob/M)
//check if it doesn't require any access at all
@@ -39,7 +39,7 @@
return TRUE
if(istype(attacking_item, /obj/item/circuitboard) && !circuit)
var/obj/item/circuitboard/B = attacking_item
if(B.board_type == "computer")
if(B.board_type == BOARD_COMPUTER)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
to_chat(user, SPAN_NOTICE("You place the circuit board inside the frame."))
src.icon_state = "1"
+1 -1
View File
@@ -108,7 +108,7 @@
if(CIRCUITBOARD_STATE)
if(istype(attacking_item, /obj/item/circuitboard))
var/obj/item/circuitboard/B = attacking_item
if(B.board_type == "machine")
if(B.board_type == BOARD_MACHINE)
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, TRUE)
to_chat(user, SPAN_NOTICE("You add the circuit board to the blueprint."))
circuit = attacking_item
-9
View File
@@ -1,12 +1,3 @@
/obj
var/list/can_buckle
var/buckle_movable = 0
var/buckle_dir = 0
var/buckle_lying = -1 //bed-like behavior, forces mob.lying = buckle_lying if != -1
var/buckle_require_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes
var/atom/movable/buckled = null
var/buckle_delay = 0 //How much extra time to buckle someone to this object.
/obj/attack_hand(mob/living/user)
. = ..()
if(buckled)
@@ -1,2 +0,0 @@
#define BOARD_MACHINE "machine"
#define BOARD_COMPUTER "computer"
@@ -18,7 +18,13 @@
throw_speed = 3
throw_range = 15
var/build_path
var/board_type = "computer"
/**
* The type of board
*
* One of the BOARD_* defines, see `code\game\objects\items\weapons\circuitboards\_defines.dm`
*/
var/board_type = BOARD_COMPUTER
var/list/req_components
var/contain_parts = 1
@@ -5,7 +5,7 @@
/obj/item/circuitboard/biogenerator
name = T_BOARD("biogenerator")
build_path = /obj/machinery/biogenerator
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 2)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 1,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/chem_heater
name = T_BOARD("chem heater")
build_path = /obj/machinery/chem_heater
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 1, TECH_BIO = 2)
req_components = list(
"/obj/item/stock_parts/manipulator" = 3
@@ -5,7 +5,7 @@
/obj/item/circuitboard/clonepod
name = T_BOARD("clone pod")
build_path = /obj/machinery/clonepod
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
@@ -16,7 +16,7 @@
/obj/item/circuitboard/clonescanner
name = T_BOARD("cloning scanner")
build_path = /obj/machinery/dna_scannernew
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/bluespacerelay
name = T_BOARD("bluespacerelay")
build_path = /obj/machinery/bluespacerelay
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_BLUESPACE = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stack/cable_coil" = 30,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/mech_recharger
name = T_BOARD("mech recharger")
build_path = /obj/machinery/mech_recharger
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/stock_parts/capacitor" = 2,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/miningdrill
name = T_BOARD("mining drill head")
build_path = /obj/machinery/mining/drill
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/stock_parts/capacitor" = 1,
@@ -16,6 +16,6 @@
/obj/item/circuitboard/miningdrillbrace
name = T_BOARD("mining drill brace")
build_path = /obj/machinery/mining/brace
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list()
@@ -3,7 +3,7 @@
desc = "The circuitboard for an ore processing machine."
build_path = /obj/machinery/mineral/processing_unit
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -16,7 +16,7 @@
desc = "The circuitboard for an ore redemption console."
build_path = /obj/machinery/mineral/processing_unit_console
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/console_screen" = 1
@@ -39,7 +39,7 @@
desc = "The circuitboard for an unloading machine."
build_path = /obj/machinery/mineral/unloading_machine
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/manipulator" = 2
)
@@ -49,7 +49,7 @@
desc = "The circuitboard for a stacking machine."
build_path = /obj/machinery/mineral/stacking_machine
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/manipulator" = 2
)
@@ -59,7 +59,7 @@
desc = "The circuitboard for an stacking machine console."
build_path = /obj/machinery/mineral/stacking_unit_console
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/console_screen" = 1
@@ -7,14 +7,14 @@
/obj/item/circuitboard/aicore
name = T_BOARD("AI core")
origin_tech = list(TECH_DATA = 4, TECH_BIO = 2)
board_type = "other"
board_type = BOARD_OTHER
/obj/item/circuitboard/sleeper
name = T_BOARD("Sleeper")
desc = "The circuitboard for a sleeper."
build_path = /obj/machinery/sleeper
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 2,
@@ -26,7 +26,7 @@
desc = "The circuitboard for a lifeform stasis unit."
build_path = /obj/machinery/stasis_bed
origin_tech = list(TECH_MAGNET = 4, TECH_ENGINEERING = 4, TECH_BIO = 4)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/micro_laser" = 1,
"/obj/item/stock_parts/capacitor" = 2,
@@ -39,7 +39,7 @@
desc = "The circuitboard for a cryo tube."
build_path = /obj/machinery/atmospherics/unary/cryo_cell
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/console_screen" = 1,
@@ -52,7 +52,7 @@
desc = "The circuitboard for a body scanner machine."
build_path = /obj/machinery/bodyscanner
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -63,7 +63,7 @@
desc = "The circuitboard for a body scanner console."
build_path = /obj/machinery/body_scanconsole
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/console_screen" = 1)
@@ -73,7 +73,7 @@
desc = "The circuitboard for a body scanner console."
build_path = /obj/machinery/requests_console
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/console_screen" = 1)
@@ -83,7 +83,7 @@
desc = "The circuitboard for a operation table."
build_path = /obj/machinery/optable
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1)
@@ -92,7 +92,7 @@
desc = "The circuitboard for a smart fridge."
build_path = /obj/machinery/smartfridge
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 3)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/manipulator" = 3)
@@ -101,7 +101,7 @@
desc = "The circuitboard for an oven."
build_path = /obj/machinery/appliance/cooker/oven
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -112,7 +112,7 @@
desc = "The circuitboard for a deep fryer."
build_path = /obj/machinery/appliance/cooker/fryer
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -123,7 +123,7 @@
desc = "The circuitboard for a stove."
build_path = /obj/machinery/appliance/cooker/stove
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -134,7 +134,7 @@
desc = "The circuitboard for a cereal maker."
build_path = /obj/machinery/appliance/mixer/cereal
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -145,7 +145,7 @@
desc = "The circuitboard for a grill."
build_path = /obj/machinery/appliance/cooker/grill
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/micro_laser" = 1,
@@ -157,7 +157,7 @@
desc = "The circuitboard for a candy machine."
build_path = /obj/machinery/appliance/mixer/candy
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
@@ -168,7 +168,7 @@
desc = "The circuitboard for a holopad."
build_path = /obj/machinery/hologram/holopad
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 1)
@@ -178,7 +178,7 @@
desc = "The circuitboard for a weapons analyzer."
build_path = /obj/machinery/weapons_analyzer
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_COMBAT = 3)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/capacitor" = 1,
@@ -189,7 +189,7 @@
desc = "The circuitboard for an IV drip."
build_path = /obj/machinery/iv_drip
origin_tech = list(TECH_DATA = 1, TECH_BIO = 2)
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list(
"/obj/item/reagent_containers/syringe" = 1,
"/obj/item/stock_parts/matter_bin" = 1,
@@ -198,7 +198,7 @@
/obj/item/circuitboard/oxyregenerator
name = "circuit board (oxygen regenerator)"
build_path = /obj/machinery/atmospherics/binary/oxyregenerator
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/stock_parts/micro_laser" = 1,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/portgen
name = T_BOARD("portable generator")
build_path = /obj/machinery/power/portgen/basic
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 1,
@@ -5,14 +5,14 @@
/obj/item/circuitboard/smes
name = T_BOARD("superconductive magnetic energy storage")
build_path = /obj/machinery/power/smes/buildable
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
req_components = list("/obj/item/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
/obj/item/circuitboard/batteryrack
name = T_BOARD("battery rack PSU")
build_path = /obj/machinery/power/smes/batteryrack
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
req_components = list("/obj/item/cell" = 3)
@@ -20,7 +20,7 @@
name = T_BOARD("makeshift PSU")
desc = "An APC circuit repurposed into some power storage device controller."
build_path = /obj/machinery/power/smes/batteryrack/makeshift
board_type = "machine"
board_type = BOARD_MACHINE
req_components = list("/obj/item/cell" = 3)
/obj/item/circuitboard/ghettosmes/attackby(obj/item/attacking_item, mob/user)
@@ -5,7 +5,7 @@
/obj/item/circuitboard/recharge_station
name = T_BOARD("cyborg recharging station")
build_path = /obj/machinery/recharge_station
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
@@ -5,7 +5,7 @@
/obj/item/circuitboard/rdserver
name = T_BOARD("R&D server")
build_path = /obj/machinery/r_n_d/server
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
@@ -14,7 +14,7 @@
/obj/item/circuitboard/rdtechprocessor
name = T_BOARD("R&D tech processor")
build_path = /obj/machinery/r_n_d/tech_processor
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
@@ -24,7 +24,7 @@
/obj/item/circuitboard/destructive_analyzer
name = T_BOARD("destructive analyzer")
build_path = /obj/machinery/r_n_d/destructive_analyzer
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1,
@@ -34,7 +34,7 @@
/obj/item/circuitboard/autolathe
name = T_BOARD("autolathe")
build_path = /obj/machinery/autolathe
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 3,
@@ -44,7 +44,7 @@
/obj/item/circuitboard/protolathe
name = T_BOARD("protolathe")
build_path = /obj/machinery/r_n_d/protolathe
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 2,
@@ -55,7 +55,7 @@
/obj/item/circuitboard/circuit_imprinter
name = T_BOARD("circuit imprinter")
build_path = /obj/machinery/r_n_d/circuit_imprinter
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 1,
@@ -65,7 +65,7 @@
/obj/item/circuitboard/mechfab
name = "Circuit board (Exosuit Fabricator)"
build_path = /obj/machinery/mecha_part_fabricator
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 2,
@@ -76,7 +76,7 @@
/obj/item/circuitboard/telesci_pad
name = T_BOARD("telepad")
build_path = /obj/machinery/telepad
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_MATERIAL = 3, TECH_BLUESPACE = 4)
req_components = list(
"/obj/item/bluespace_crystal" = 2,
@@ -87,7 +87,7 @@
/obj/item/circuitboard/ntnet_relay
name = "Circuit board (NTNet Quantum Relay)"
build_path = /obj/machinery/ntnet_relay
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 4)
req_components = list(
"/obj/item/stack/cable_coil" = 15)
@@ -4,7 +4,7 @@
/obj/item/circuitboard/shield_gen_ex
name = T_BOARD("hull shield generator")
board_type = "machine"
board_type = BOARD_MACHINE
build_path = /obj/machinery/shield_gen/external
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
@@ -17,7 +17,7 @@
/obj/item/circuitboard/shield_gen
name = T_BOARD("bubble shield generator")
board_type = "machine"
board_type = BOARD_MACHINE
build_path = /obj/machinery/shield_gen
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
@@ -30,7 +30,7 @@
/obj/item/circuitboard/shield_cap
name = T_BOARD("shield capacitor")
board_type = "machine"
board_type = BOARD_MACHINE
build_path = /obj/machinery/shield_capacitor
origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
req_components = list(
@@ -16,7 +16,7 @@
/obj/item/circuitboard/engine/ion
name = T_BOARD("ion propulsion device")
board_type = "machine"
board_type = BOARD_MACHINE
icon_state = "mcontroller"
build_path = /obj/machinery/ion_engine
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
@@ -27,7 +27,7 @@
/obj/item/circuitboard/engine/maneuvering
name = T_BOARD("pulse-maneuvering device")
board_type = "machine"
board_type = BOARD_MACHINE
icon_state = "mcontroller"
build_path = /obj/machinery/maneuvering_engine
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
@@ -40,7 +40,7 @@
//IFF Beacon
/obj/item/circuitboard/iff_beacon
name = T_BOARD("IFF transponder")
board_type = "machine"
board_type = BOARD_MACHINE
icon_state = "mcontroller"
build_path = /obj/machinery/iff_beacon
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
@@ -53,7 +53,7 @@
//Sensors
/obj/item/circuitboard/shipsensors
name = T_BOARD("sensor suite")
board_type = "machine"
board_type = BOARD_MACHINE
icon_state = "mcontroller"
build_path = /obj/machinery/shipsensors
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 5, TECH_BLUESPACE = 3)
@@ -68,7 +68,7 @@
/obj/item/circuitboard/shipsensors/weak
name = T_BOARD("low-power sensor suite")
board_type = "machine"
board_type = BOARD_MACHINE
icon_state = "mcontroller"
build_path = /obj/machinery/shipsensors/weak
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 1)
@@ -3,7 +3,7 @@
#endif
/obj/item/circuitboard/telecomms
board_type = "machine"
board_type = BOARD_MACHINE
/obj/item/circuitboard/telecomms/receiver
name = T_BOARD("subspace receiver")
@@ -5,7 +5,7 @@
/obj/item/circuitboard/crusher
name = T_BOARD("crusher")
build_path = /obj/machinery/crusher_base
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 1, TECH_MAGNET = 1, TECH_MATERIAL = 3)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 4,
@@ -3,7 +3,7 @@
#endif
/obj/item/circuitboard/unary_atmos
board_type = "machine"
board_type = BOARD_MACHINE
var/machine_dir = SOUTH
var/init_dirs = SOUTH
@@ -0,0 +1,8 @@
/obj/item/circuitboard/structure
name = "weapons rack"
build_path = /obj/structure/weapons_rack
board_type = BOARD_MACHINE
origin_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
req_components = list(
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/manipulator" = 1)
+15
View File
@@ -42,6 +42,21 @@
var/surgerysound
/* START BUCKLING VARS */
var/list/can_buckle
var/buckle_movable = 0
var/buckle_dir = 0
var/buckle_lying = -1 //bed-like behavior, forces mob.lying = buckle_lying if != -1
var/buckle_require_restraints = 0 //require people to be handcuffed before being able to buckle. eg: pipes
var/atom/movable/buckled = null
var/buckle_delay = 0 //How much extra time to buckle someone to this object.
/* END BUCKLING VARS */
/* START ACCESS VARS */
var/list/req_access
var/list/req_one_access
/* END ACCESS VARS */
/obj/Destroy()
STOP_PROCESSING(SSprocessing, src)
unbuckle()
@@ -0,0 +1,260 @@
/obj/structure/weapons_rack
name = "weapon rack"
desc = "A rack designed to store weapons."
icon = 'icons/obj/machinery/weapons_rack.dmi'
icon_state = "rack_base"
anchored = TRUE
density = TRUE
///The maximum number of weapons that can be stored in the rack
VAR_PRIVATE/max_weapons_loaded = 4
///Boolean, if the rack is locked (no weapon can be added or removed)
VAR_PRIVATE/locked = FALSE
///Boolean, if the rack is forced open (eg. it was cut open, melted open or whatever)
VAR_PRIVATE/forced_open = FALSE
VAR_PRIVATE/obj/effect/visual_holder
/obj/structure/weapons_rack/Initialize(mapload)
..()
visual_holder = new()
visual_holder.vis_flags |= VIS_INHERIT_ID
visual_holder.appearance_flags |= KEEP_TOGETHER|RESET_TRANSFORM
//This is used to hide any stray pixels that the rifles could have, eg. for overboarding the rack sprite
var/mask_for_rifles_filter = filter(type="alpha", icon = icon(src.icon, "rack_mask"))
visual_holder.filters += mask_for_rifles_filter
src.vis_contents += visual_holder
return INITIALIZE_HINT_LATELOAD
/obj/structure/weapons_rack/LateInitialize()
. = ..()
for(var/obj/item/gun in get_turf(src))
gun.forceMove(src)
//This protects us from mapper mistakes
//don't worry, they will find a way to get this to bug out, just not this particular one
if(length(src.contents) > max_weapons_loaded)
stack_trace("Weapon rack at [src.x],[src.y],[src.z] is full and still find weapons to load on init in the turf!")
qdel(gun)
if(length(req_one_access))
locked = TRUE
update_icon()
/obj/structure/weapons_rack/Destroy()
QDEL_NULL(visual_holder)
. = ..()
/obj/structure/weapons_rack/attackby(obj/item/attacking_item, mob/user, params)
. = ..()
//Hit with a gun, to add it to the rack
if(istype(attacking_item, /obj/item/gun))
//No adding or removing weapons from the rack while locked
if(locked)
to_chat(user, SPAN_WARNING("The rack is locked."))
return
if(length(src.contents) >= max_weapons_loaded)
to_chat(user, SPAN_WARNING("The rack is full."))
return
if(!user.unEquip(attacking_item))
return
attacking_item.forceMove(src)
update_icon()
//Hit with ID, to lock/unlock the rack
else if(istype(attacking_item, /obj/item/card/id))
var/obj/item/card/id/identification_card = attacking_item
if(!forced_open && has_access(req_one_access = src.req_one_access, accesses = identification_card.access))
balloon_alert_to_viewers("[user] [locked ? "unlocks" : "locks"] \the [src]!")
playsound(src, 'sound/items/metal_shutter.ogg', 50, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE)
toggle_lock(user)
else
to_chat(user, SPAN_WARNING("You lack the required access to operate this rack's lock, or the lock mechanism is broken."))
else if(locked && attacking_item.iswelder())
var/obj/item/weldingtool/WT = attacking_item
balloon_alert_to_viewers("[user] starts to cut through the lock on \the [src]!")
if(WT.use_tool(src, user, 20 SECONDS, extra_checks = CALLBACK(src, PROC_REF(can_continue_opening))))
//Last check because use_tool() is shitcoded
if(forced_open || !can_be_opened())
return
toggle_lock(user)
forced_open = TRUE
else
balloon_alert_to_viewers("[src] was unlocked while you was working on it!")
/obj/structure/weapons_rack/attack_hand(mob/living/user)
. = ..()
if(length(src.contents))
//No adding or removing weapons from the rack while locked
if(locked)
to_chat(user, SPAN_WARNING("The rack is locked."))
return
//Build a list of options for the radial menu, based on our content
var/list/radial_options = list()
for(var/obj/item/gun/gun_in_rack in src.contents)
radial_options[gun_in_rack] = image(gun_in_rack.icon, gun_in_rack.icon_state)
//Show the user the radial menu
var/obj/item/gun/rifle_to_take = show_radial_menu(user, src, radial_options, require_near = TRUE, tooltips = TRUE)
//No choice was made, return
if(isnull(rifle_to_take))
return
//Assuming the rifle is still in the rack when the user chooses it, deliver the rifle
if(rifle_to_take in src.contents)
rifle_to_take.forceMove(get_turf(user))
user.put_in_hands(rifle_to_take)
update_icon()
else
to_chat(user, SPAN_WARNING("\The [rifle_to_take] is not in the rack anymore!"))
#define BASE_OFFSET_RIFLE_SLOT -1
#define INTER_OFFSET_RIFLE_SLOT 7
/obj/structure/weapons_rack/update_icon()
. = ..()
visual_holder.overlays.Cut()
ClearOverlays()
for(var/i in 1 to length(src.contents))
var/obj/item/gun/G = src.contents[i]
var/matrix/transform_matrix = matrix(G.transform)
transform_matrix.Turn(-90)
transform_matrix.Scale(0.8, 0.8)
transform_matrix.Translate((((world.icon_size/2)+BASE_OFFSET_RIFLE_SLOT) - world.icon_size) + (i*INTER_OFFSET_RIFLE_SLOT), 0)
//Why not the rifle itself you might ask? Because there's the safety icon on it
var/mutable_appearance/weapon_appearance = mutable_appearance(G.icon, G.icon_state, plane = src.plane, flags = G.appearance_flags, layer = G.layer)
weapon_appearance.transform = transform_matrix
visual_holder.overlays += weapon_appearance
if(locked)
AddOverlays(image(src.icon, "locked_overlay", layer = ABOVE_OBJ_LAYER))
#undef BASE_OFFSET_RIFLE_SLOT
#undef INTER_OFFSET_RIFLE_SLOT
/obj/structure/weapons_rack/get_examine_text(mob/user, distance, is_adjacent, infix, suffix, get_extended)
. = ..()
if(locate(/obj/item/gun) in src)
. += "<br/>It contains:<br/>"
for(var/obj/item/gun/G in src.contents)
. += "\A [G.name]"
if(locked)
. += SPAN_WARNING("It is locked.")
/obj/structure/weapons_rack/emag_act(remaining_charges, mob/user, emag_source)
. = ..()
to_chat(user, SPAN_NOTICE("You start to fiddle with the electronic lock of \the [src]."))
if(do_after(user, 10 SECONDS, src, extra_checks = CALLBACK(src, PROC_REF(can_continue_opening))))
to_chat(user, SPAN_NOTICE("You manage to unlock \the [src]."))
toggle_lock(user)
/obj/structure/weapons_rack/ex_act(severity)
if(severity > 1 && can_be_opened())
toggle_lock()
forced_open = TRUE
if(severity > 2)
for(var/obj/item/gun/G in src.contents)
if(prob(10))
//Uh oh, the munitions cooked in the gun!
fragem(get_turf(G), 4, 7, 3, 3, 10, 1, TRUE)
qdel(G)
else
throw_at_random(TRUE, 4, 7)
. = ..()
/obj/structure/weapons_rack/fire_act(exposed_temperature, exposed_volume)
. = ..()
if(exposed_temperature > 1811) //Melting temperature of steel, in kelvin
//You melted the door
if(can_be_opened())
if(prob(20))
toggle_lock()
forced_open = TRUE
else
var/picked = pick_weight(list("burn_weapon" = 2, "explode_ammos" = 10, "nothing" = 80))
//Burn down one of the guns
if(picked == "burn_weapon" && length(src.contents))
var/obj/item/gun/G = pick(src.contents)
G.forceMove(get_turf(src))
qdel(G)
//Just some explosion effect
else if(picked == "explode_ammos")
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(fragem), get_turf(src), 2, 3, 3, 3, 10, 1, TRUE)
/**
* Locks/unlocks the rack
*
* * user - A `/mob` that is unlocking the rack, optional
*/
/obj/structure/weapons_rack/proc/toggle_lock(mob/user, force_lock_state)
SHOULD_NOT_SLEEP(TRUE)
if(user)
add_fibers(user)
add_fingerprint(user)
locked = !locked
update_icon()
/**
* Checks if the locker can be opened (NOT permissions, as in "did someone else already open it" kind of thing)
*
*/
/obj/structure/weapons_rack/proc/can_be_opened()
SHOULD_NOT_SLEEP(TRUE)
SHOULD_BE_PURE(TRUE)
//Can't open it, it's forced open
if(forced_open)
return FALSE
if(locked)
return TRUE
else
return FALSE
/**
* Basically the inverse of `can_be_opened()`, because the `do_* / use_*` callbacks work the other way around
*
* Used only for callbacks, do not call directly
*/
/obj/structure/weapons_rack/proc/can_continue_opening()
SHOULD_NOT_SLEEP(TRUE)
SHOULD_BE_PURE(TRUE)
return !can_be_opened()
@@ -106,7 +106,7 @@
/obj/item/circuitboard/slime_extractor
name = T_BOARD("slime extractor")
build_path = "/obj/machinery/slime_extractor"
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_BIO = 2, TECH_ENGINEERING = 1, TECH_BLUESPACE = 1)
req_components = list(
"/obj/item/stock_parts/matter_bin" = 1,
+1 -1
View File
@@ -105,7 +105,7 @@
/obj/item/circuitboard/crystal_agitator
name = T_BOARD("Crystal Agitator")
build_path = /obj/machinery/power/crystal_agitator
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(
TECH_ENGINEERING = 3,
TECH_DATA = 2,
+5 -5
View File
@@ -6,7 +6,7 @@
/obj/item/circuitboard/kinetic_harvester
name = T_BOARD("kinetic harvester")
build_path = /obj/machinery/kinetic_harvester
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_MATERIAL = 4)
req_components = list(
"/obj/item/stock_parts/manipulator/pico" = 2,
@@ -18,7 +18,7 @@
/obj/item/circuitboard/fusion_fuel_compressor
name = T_BOARD("fusion fuel compressor")
build_path = /obj/machinery/fusion_fuel_compressor
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 4)
req_components = list(
"/obj/item/stock_parts/manipulator/pico" = 2,
@@ -40,7 +40,7 @@
/obj/item/circuitboard/fusion_core
name = T_BOARD("fusion core")
build_path = /obj/machinery/power/fusion_core
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 4, TECH_POWER = 4)
req_components = list(
"/obj/item/stock_parts/manipulator/pico" = 2,
@@ -53,7 +53,7 @@
/obj/item/circuitboard/fusion_injector
name = T_BOARD("fusion fuel injector")
build_path = /obj/machinery/fusion_fuel_injector
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 4)
req_components = list(
"/obj/item/stock_parts/manipulator/pico" = 2,
@@ -66,7 +66,7 @@
/obj/item/circuitboard/gyrotron
name = T_BOARD("gyrotron")
build_path = /obj/machinery/power/emitter/gyrotron
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/stack/cable_coil" = 20,
+1 -1
View File
@@ -79,7 +79,7 @@
/obj/item/circuitboard/rtg
name = T_BOARD("radioisotope thermoelectric generator")
build_path = /obj/machinery/power/rtg
board_type = "machine"
board_type = BOARD_MACHINE
origin_tech = list(
TECH_ENGINEERING = 3,
TECH_DATA = 2,
+2 -2
View File
@@ -106,7 +106,7 @@
build_path = /obj/machinery/power/tesla_coil
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list("/obj/item/stock_parts/capacitor" = 1)
board_type = "machine"
board_type = BOARD_MACHINE
/obj/item/circuitboard/grounding_rod
name = "grounding rod circuitry"
@@ -114,4 +114,4 @@
build_path = /obj/machinery/power/grounding_rod
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list("/obj/item/stock_parts/capacitor" = 1)
board_type = "machine"
board_type = BOARD_MACHINE
@@ -0,0 +1,63 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
# - (removes an image or sprite)
# spellcheck
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# balance
# - (balance changes)
# code_imp
# - (misc internal code change)
# refactor
# - (refactors code)
# config
# - (makes a change to the config files)
# admin
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
#################################
# Your name.
author: FluffyGhost, Wezzy
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added weapons racks, can be locked/unlocked with an ID card."
- imageadd: "Added weapons racks sprites, from Wezzy."
- refactor: "Refactored some circuitboard code, moved the defines, applied the defines, DMDocs."
- refactor: "Moved mutable appearance appearance flag set to the mutable appearance file."
- qol: "Reorganized the Horizon armory with the weapons racks, moved things around, put down markers on lockers depending on the danger level of their content, reorganized content of the remaining lockers."
- rscadd: "Made weapons racks constructable with a circuitboards."
Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

+187 -166
View File
@@ -1146,8 +1146,8 @@
dir = 5
},
/obj/machinery/alarm/north,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/closet/secure_closet/guncabinet/peac,
/obj/effect/floor_decal/industrial/hatch/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"ayc" = (
@@ -1698,27 +1698,16 @@
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard)
"aLq" = (
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
/obj/item/gun/projectile/automatic/rifle/jingya,
/obj/item/gun/projectile/automatic/rifle/jingya,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/shield/riot,
/obj/item/shield/riot,
/obj/item/clothing/suit/armor/carrier/riot,
/obj/item/clothing/suit/armor/carrier/riot,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/head/helmet/riot,
/obj/machinery/door/window/brigdoor/southright{
name = "Riot Armour";
req_access = list(3)
},
/obj/machinery/light{
dir = 4
/obj/structure/weapons_rack{
req_one_access = list(3);
name = "Ballistics Rack"
},
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"aMa" = (
@@ -5967,22 +5956,8 @@
/area/hallway/primary/central_one)
"cIx" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Ammunition (Rifles and Shotguns)"
name = "Lethal Ammunitions"
},
/obj/item/storage/box/stunshells,
/obj/item/storage/box/flashshells{
pixel_x = -2;
pixel_y = 2
},
/obj/item/storage/box/beanbags{
pixel_x = -4;
pixel_y = 4
},
/obj/item/storage/box/beanbags{
pixel_x = -4;
pixel_y = 4
},
/obj/item/storage/box/trackingslugs,
/obj/item/storage/box/shotgunshells,
/obj/item/storage/box/shotgunshells,
/obj/item/ammo_magazine/a556/carbine/polymer,
@@ -5992,10 +5967,24 @@
/obj/effect/floor_decal/corner_wide/paleblue/full{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/security,
/obj/machinery/light{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/red,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"cIz" = (
@@ -8432,8 +8421,8 @@
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
"dTj" = (
/obj/effect/floor_decal/industrial/hatch/red,
/obj/machinery/anti_bluespace,
/obj/effect/floor_decal/industrial/hatch/grey,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"dTI" = (
@@ -9644,6 +9633,7 @@
/turf/simulated/floor/plating,
/area/engineering/engine_room)
"exu" = (
/obj/effect/floor_decal/industrial/outline/security,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"exw" = (
@@ -12101,15 +12091,23 @@
/turf/simulated/floor/carpet,
/area/crew_quarters/heads/chief)
"fBN" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Weaponry (Energy Carbines)"
},
/obj/item/gun/energy/gun,
/obj/item/gun/energy/gun,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/clothing/suit/armor/carrier/ballistic,
/obj/item/clothing/suit/armor/carrier/ballistic,
/obj/item/clothing/head/helmet/ballistic,
/obj/item/clothing/head/helmet/ballistic,
/obj/machinery/door/window/brigdoor/southright{
name = "Ballistic Armour";
req_access = list(3);
dir = 1
},
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"fCd" = (
@@ -13207,43 +13205,25 @@
/turf/simulated/floor/tiled/white,
/area/rnd/lab)
"gaA" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Ammunition (SMGs and Pistols)"
},
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/shield/riot,
/obj/item/shield/riot,
/obj/item/clothing/suit/armor/carrier/riot,
/obj/item/clothing/suit/armor/carrier/riot,
/obj/item/clothing/head/helmet/riot,
/obj/item/clothing/head/helmet/riot,
/obj/machinery/door/window/brigdoor/southright{
name = "Riot Armour";
req_access = list(3);
dir = 1
},
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"gbk" = (
@@ -15999,9 +15979,7 @@
/turf/simulated/open/airless,
/area/template_noop)
"hjo" = (
/obj/effect/floor_decal/corner/dark_blue/diagonal{
dir = 8
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"hjG" = (
@@ -16308,6 +16286,7 @@
/obj/effect/floor_decal/corner/dark_blue/diagonal{
dir = 1
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"hqd" = (
@@ -16674,6 +16653,7 @@
dir = 9
},
/obj/structure/fireaxecabinet/west,
/obj/effect/floor_decal/industrial/outline/security,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"hAh" = (
@@ -17234,15 +17214,20 @@
/turf/simulated/floor/tiled/dark/full,
/area/rnd/xenobiology/foyer)
"hLh" = (
/obj/effect/floor_decal/corner_wide/paleblue/full{
dir = 8
},
/obj/effect/floor_decal/industrial/warning{
dir = 8
},
/obj/structure/closet/secure_closet/guncabinet{
name = "Weaponry (Shotguns)"
name = "Pistols"
},
/obj/item/gun/projectile/shotgun/pump,
/obj/item/gun/projectile/shotgun/pump,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/effect/floor_decal/industrial/outline/security,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/sec,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"hLJ" = (
@@ -19539,22 +19524,16 @@
/turf/simulated/floor/tiled,
/area/operations/lower/machinist)
"iQK" = (
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
/obj/item/gun/projectile/shotgun/pump,
/obj/item/gun/projectile/shotgun/pump,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/clothing/suit/armor/carrier/ablative,
/obj/item/clothing/suit/armor/carrier/ablative,
/obj/item/clothing/head/helmet/ablative,
/obj/item/clothing/head/helmet/ablative,
/obj/machinery/door/window/brigdoor/southright{
name = "Ablative Armour";
req_access = list(3)
/obj/structure/weapons_rack{
req_one_access = list(3);
name = "Shotguns Rack"
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"iRb" = (
@@ -20857,17 +20836,22 @@
/turf/simulated/floor/tiled/full,
/area/engineering/storage_hard)
"jvp" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Weaponry (Laser Rifles)"
},
/obj/item/gun/energy/rifle/laser,
/obj/item/gun/energy/rifle/laser,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/sign/nosmoking_1{
pixel_y = -32
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/clothing/suit/armor/carrier/ablative,
/obj/item/clothing/suit/armor/carrier/ablative,
/obj/item/clothing/head/helmet/ablative,
/obj/item/clothing/head/helmet/ablative,
/obj/machinery/door/window/brigdoor/southright{
name = "Ablative Armour";
req_access = list(3);
dir = 1
},
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
@@ -20964,6 +20948,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"jzN" = (
@@ -23926,6 +23911,7 @@
dir = 6
},
/obj/machinery/firealarm/east,
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"kXO" = (
@@ -30016,6 +30002,13 @@
/obj/effect/floor_decal/corner/dark_blue/diagonal,
/turf/simulated/floor/tiled/dark,
/area/security/checkpoint2)
"nLE" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"nLG" = (
/obj/effect/floor_decal/corner_wide/lime{
dir = 10
@@ -34206,6 +34199,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/effect/floor_decal/industrial/hatch/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"pNX" = (
@@ -36344,6 +36338,13 @@
/obj/item/device/radio/intercom/west,
/turf/simulated/floor/tiled/full,
/area/horizon/hallway/deck_two/fore)
"qPy" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"qPC" = (
/obj/effect/floor_decal/spline/fancy/wood,
/obj/structure/disposalpipe/segment,
@@ -38315,25 +38316,16 @@
/turf/simulated/floor/tiled/dark,
/area/rnd/xenobiology/xenoflora)
"rKv" = (
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
/obj/item/gun/energy/rifle/laser,
/obj/item/gun/energy/rifle/laser,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/clothing/suit/armor/carrier/ballistic,
/obj/item/clothing/suit/armor/carrier/ballistic,
/obj/item/clothing/head/helmet/ballistic,
/obj/item/clothing/head/helmet/ballistic,
/obj/machinery/door/window/brigdoor/southright{
name = "Ballistic Armour";
req_access = list(3)
},
/obj/structure/sign/nosmoking_1{
pixel_y = 32
/obj/structure/weapons_rack{
req_one_access = list(3);
name = "Laser Rifles Rack"
},
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"rKy" = (
@@ -39847,20 +39839,27 @@
/turf/simulated/floor/tiled/dark/full,
/area/security/checkpoint2)
"swz" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Weaponry (SMGs and Pistols)"
},
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/automatic/wt550,
/obj/item/gun/projectile/automatic/wt550,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/sec,
/obj/effect/floor_decal/corner_wide/paleblue/full,
/obj/effect/floor_decal/industrial/outline/security,
/obj/machinery/light{
dir = 8
},
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/machinery/door/window/brigdoor/southright{
name = "Heavy Armour";
req_access = list(3);
dir = 1
},
/obj/structure/table/rack,
/obj/item/clothing/head/helmet/security/heavy,
/obj/item/clothing/head/helmet/security/heavy,
/obj/item/clothing/suit/armor/carrier/heavy/sec,
/obj/item/clothing/suit/armor/carrier/heavy/sec,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"swH" = (
@@ -42864,6 +42863,7 @@
dir = 8;
network = list("Security","Armory")
},
/obj/effect/floor_decal/industrial/outline/red,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"tTM" = (
@@ -50737,25 +50737,18 @@
/turf/simulated/floor/tiled/dark,
/area/horizon/crew_quarters/lounge/bar)
"xxa" = (
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/security,
/obj/structure/window/reinforced{
dir = 8
/obj/item/gun/energy/gun,
/obj/item/gun/energy/gun,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/machinery/door/window/brigdoor/southright{
name = "Heavy Armour";
req_access = list(3)
},
/obj/item/clothing/suit/armor/carrier/heavy/sec,
/obj/item/clothing/suit/armor/carrier/heavy/sec,
/obj/item/clothing/head/helmet/security/heavy,
/obj/item/clothing/head/helmet/security/heavy,
/obj/machinery/light{
dir = 1
/obj/structure/weapons_rack{
req_one_access = list(3);
name = "Small Arms Rack"
},
/obj/item/gun/projectile/automatic/wt550,
/obj/item/gun/projectile/automatic/wt550,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"xxc" = (
@@ -52133,14 +52126,42 @@
/area/engineering/engine_room/rust)
"ybf" = (
/obj/structure/closet/secure_closet/guncabinet{
name = "Weaponry (Burst Rifle)"
name = "Less than Lethal Ammunitions"
},
/obj/item/gun/projectile/automatic/rifle/jingya,
/obj/item/gun/projectile/automatic/rifle/jingya,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/item/ammo_magazine/c45m/rubber,
/obj/effect/floor_decal/corner_wide/paleblue{
dir = 10
},
/obj/effect/floor_decal/industrial/outline/security,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/item/storage/box/flashshells{
pixel_x = -2;
pixel_y = 2
},
/obj/item/storage/box/trackingslugs,
/obj/item/storage/box/beanbags{
pixel_x = -4;
pixel_y = 4
},
/obj/item/storage/box/beanbags{
pixel_x = -4;
pixel_y = 4
},
/obj/item/storage/box/stunshells,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/security/armoury)
"ybh" = (
@@ -77477,7 +77498,7 @@ hIK
wdF
jYJ
bZE
hjo
exu
gaA
pMf
xYO
@@ -77879,7 +77900,7 @@ bFU
vYW
pMf
xxa
pNG
nLE
dTj
exu
jvp
@@ -78081,9 +78102,9 @@ mGr
bmY
pMf
rKv
pNG
qPy
qlU
exu
hjo
hLh
pMf
gis
+4
View File
@@ -107,3 +107,7 @@ ATTRIBUTIONS SECTOR START
sound/machines/clanking.ogg - https://freesound.org/people/simone_ds/sounds/366084/
sound/machines/howitzer/fire.ogg - https://freesound.org/people/qubodup/sounds/161341/
ATTRIBUTIONS SECTION END
ATTRIBUTIONS SECTOR START
sound/items/metal_shutter.ogg - https://freesound.org/people/bruno.auzet/sounds/524695/
ATTRIBUTIONS SECTION END
Binary file not shown.