mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Vore Updates and merges
This commit is contained in:
@@ -200,7 +200,7 @@
|
||||
"moles" = round(air2.gas[output_gas], 0.01))
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "algae_farm_vr.tmpl", "Algae Farm Control Panel", 500, 600)
|
||||
ui.set_initial_data(data)
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(W.is_wrench())
|
||||
playsound(src, W.usesound, 75, 1)
|
||||
anchored = !anchored
|
||||
user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
)
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -243,7 +243,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (unlocked)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>")
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
overlays += image('icons/obj/pipeturbine.dmi', "hi-turb")
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(W.is_wrench())
|
||||
anchored = !anchored
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.</span>")
|
||||
@@ -259,7 +259,7 @@
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(W.is_wrench())
|
||||
anchored = !anchored
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
turbine = null
|
||||
|
||||
@@ -140,7 +140,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
)
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -222,7 +222,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (!(stat & NOPOWER) && use_power)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench this [src], turn it off first.</span>")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
data = build_uidata()
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330)
|
||||
@@ -181,7 +181,7 @@
|
||||
switch_filter(dir_flag(href_list["dir"]), mode_return_switch(new_filter))
|
||||
|
||||
update_icon()
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/mode_return_switch(var/mode)
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
|
||||
data = build_uidata()
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330)
|
||||
@@ -200,7 +200,7 @@
|
||||
con_lock(dir_flag(href_list["dir"]))
|
||||
|
||||
update_icon()
|
||||
nanomanager.update_uis(src)
|
||||
GLOB.nanomanager.update_uis(src)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/omni/mixer/proc/switch_mode(var/port = NORTH, var/mode = ATM_NONE)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/omni/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if(!istype(W, /obj/item/weapon/wrench))
|
||||
if(!W.is_wrench())
|
||||
return ..()
|
||||
|
||||
if(!can_unwrench())
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (connected_device)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], dettach \the [connected_device] first.</span>")
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if(!can_unwrench())
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it too exerted due to internal pressure.</span>")
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
go_to_side()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (istype(src, /obj/machinery/atmospherics/tvalve/digital))
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], it's too complicated.</span>")
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
data["gasTemperatureClass"] = temp_class
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -180,4 +180,4 @@
|
||||
/obj/machinery/atmospherics/unary/freezer/examine(mob/user)
|
||||
..(user)
|
||||
if(panel_open)
|
||||
user << "The maintenance hatch is open."
|
||||
to_chat(user, "The maintenance hatch is open.")
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
return 1
|
||||
|
||||
attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
var/turf/T = src.loc
|
||||
if (level==1 && isturf(T) && !T.is_plating())
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
data["gasTemperatureClass"] = temp_class
|
||||
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
@@ -167,4 +167,4 @@
|
||||
/obj/machinery/atmospherics/unary/heater/examine(mob/user)
|
||||
..(user)
|
||||
if(panel_open)
|
||||
user << "The maintenance hatch is open."
|
||||
to_chat(user, "The maintenance hatch is open.")
|
||||
|
||||
@@ -407,7 +407,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (!(stat & NOPOWER) && use_power)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>")
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
var/hibernate = 0 //Do we even process?
|
||||
var/scrubbing = 1 //0 = siphoning, 1 = scrubbing
|
||||
var/list/scrubbing_gas = list("carbon_dioxide", "phoron")
|
||||
var/list/scrubbing_gas = list("carbon_dioxide")
|
||||
|
||||
var/panic = 0 //is this scrubber panicked?
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (!(stat & NOPOWER) && use_power)
|
||||
to_chat(user, "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>")
|
||||
|
||||
2
code/ATMOSPHERICS/components/unary/vent_scrubber_vr.dm
Normal file
2
code/ATMOSPHERICS/components/unary/vent_scrubber_vr.dm
Normal file
@@ -0,0 +1,2 @@
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber
|
||||
scrubbing_gas = list("carbon_dioxide", "phoron")
|
||||
@@ -288,7 +288,7 @@
|
||||
open()
|
||||
|
||||
/obj/machinery/atmospherics/valve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
if (istype(src, /obj/machinery/atmospherics/valve/digital) && !src.allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
|
||||
@@ -10,7 +10,7 @@ datum/pipeline
|
||||
var/alert_pressure = 0
|
||||
|
||||
Destroy()
|
||||
qdel_null(network)
|
||||
QDEL_NULL(network)
|
||||
|
||||
if(air && air.volume)
|
||||
temporarily_store_air()
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
return parent.return_network(reference)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Destroy()
|
||||
qdel_null(parent)
|
||||
QDEL_NULL(parent)
|
||||
if(air_temporary)
|
||||
loc.assume_air(air_temporary)
|
||||
for(var/obj/machinery/meter/meter in loc)
|
||||
@@ -89,7 +89,7 @@
|
||||
if(istype(W,/obj/item/device/pipe_painter))
|
||||
return 0
|
||||
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
var/turf/T = src.loc
|
||||
if (level==1 && isturf(T) && !T.is_plating())
|
||||
|
||||
@@ -40,15 +40,11 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
||||
|
||||
obj/var/contaminated = 0
|
||||
|
||||
obj/var/phoronproof = 0
|
||||
|
||||
|
||||
/obj/item/proc/can_contaminate()
|
||||
//Clothing and backpacks can be contaminated.
|
||||
if(flags & PHORONGUARD)
|
||||
return 0
|
||||
else if(phoronproof == 1)
|
||||
return 0
|
||||
else if(istype(src,/obj/item/weapon/storage/backpack))
|
||||
return 0 //Cannot be washed :(
|
||||
else if(istype(src,/obj/item/clothing))
|
||||
@@ -148,7 +144,7 @@ obj/var/phoronproof = 0
|
||||
//Checks if the head is adequately sealed. //This is just odd. TODO: Make this respect the body_parts_covered stuff like thermal gear does.
|
||||
if(head)
|
||||
if(vsc.plc.PHORONGUARD_ONLY)
|
||||
if(head.flags & PHORONGUARD || head.phoronproof)
|
||||
if(head.flags & PHORONGUARD)
|
||||
return 1
|
||||
else if(head.body_parts_covered & EYES)
|
||||
return 1
|
||||
@@ -160,7 +156,7 @@ obj/var/phoronproof = 0
|
||||
for(var/obj/item/protection in list(wear_suit, gloves, shoes)) //This is why it's odd. If I'm in a full suit, but my shoes and gloves aren't phoron proof, damage.
|
||||
if(!protection)
|
||||
continue
|
||||
if(vsc.plc.PHORONGUARD_ONLY && !(protection.flags & PHORONGUARD) && !protection.phoronproof)
|
||||
if(vsc.plc.PHORONGUARD_ONLY && !(protection.flags & PHORONGUARD))
|
||||
return 0
|
||||
coverage |= protection.body_parts_covered
|
||||
|
||||
|
||||
38
code/__datastructures/globals.dm
Normal file
38
code/__datastructures/globals.dm
Normal file
@@ -0,0 +1,38 @@
|
||||
//See controllers/globals.dm
|
||||
#define GLOBAL_MANAGED(X, InitValue)\
|
||||
/datum/controller/global_vars/proc/InitGlobal##X(){\
|
||||
##X = ##InitValue;\
|
||||
gvars_datum_init_order += #X;\
|
||||
}
|
||||
#define GLOBAL_UNMANAGED(X, InitValue) /datum/controller/global_vars/proc/InitGlobal##X()
|
||||
|
||||
#ifndef TESTING
|
||||
#define GLOBAL_PROTECT(X)\
|
||||
/datum/controller/global_vars/InitGlobal##X(){\
|
||||
..();\
|
||||
gvars_datum_protected_varlist += #X;\
|
||||
}
|
||||
#else
|
||||
#define GLOBAL_PROTECT(X)
|
||||
#endif
|
||||
|
||||
#define GLOBAL_REAL_VAR(X) var/global/##X
|
||||
#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X
|
||||
|
||||
#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X
|
||||
|
||||
#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list())
|
||||
|
||||
#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue)
|
||||
|
||||
#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, null)
|
||||
|
||||
#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, null)
|
||||
|
||||
#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, null)
|
||||
@@ -1,13 +1,14 @@
|
||||
#define MC_TICK_CHECK ( ( TICK_USAGE > Master.current_ticklimit || src.state != SS_RUNNING ) ? pause() : 0 )
|
||||
#define MC_TICK_CHECK ( ( TICK_USAGE > GLOB.CURRENT_TICKLIMIT || src.state != SS_RUNNING ) ? pause() : 0 )
|
||||
|
||||
// Used for splitting up your remaining time into phases, if you want to evenly divide it.
|
||||
#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = Master.current_ticklimit; var/split_tick_phases = ##phase_count
|
||||
#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = GLOB.CURRENT_TICKLIMIT; var/split_tick_phases = ##phase_count
|
||||
|
||||
#define MC_SPLIT_TICK \
|
||||
if(split_tick_phases > 1){\
|
||||
Master.current_ticklimit = ((original_tick_limit - TICK_USAGE) / split_tick_phases) + TICK_USAGE;\
|
||||
GLOB.CURRENT_TICKLIMIT = ((original_tick_limit - world.tick_usage) / split_tick_phases) + world.tick_usage;\
|
||||
--split_tick_phases;\
|
||||
} else {\
|
||||
Master.current_ticklimit = original_tick_limit;\
|
||||
GLOB.CURRENT_TICKLIMIT = original_tick_limit;\
|
||||
}
|
||||
|
||||
// Boilerplate code for multi-step processors. See machines.dm for example use.
|
||||
@@ -78,9 +79,15 @@ if(current_step == this_step || (initial_step && !resumed)) /* So we start at st
|
||||
#define SS_PAUSING 5 //in the middle of pausing
|
||||
|
||||
// Standard way to define a global subsystem, keep boilerplate organized here!
|
||||
#define SUBSYSTEM_DEF(X) var/datum/controller/subsystem/##X/SS##X;\
|
||||
#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\
|
||||
/datum/controller/subsystem/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/##X
|
||||
#define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\
|
||||
/datum/controller/subsystem/processing/##X/New(){\
|
||||
NEW_SS_GLOBAL(SS##X);\
|
||||
PreInit();\
|
||||
}\
|
||||
/datum/controller/subsystem/processing/##X
|
||||
@@ -73,6 +73,7 @@ What is the naming convention for planes or layers?
|
||||
#define ABOVE_JUNK_LAYER 3.1 // Things that want to be slightly above common objects
|
||||
#define DOOR_CLOSED_LAYER 3.1 // Doors when closed
|
||||
#define WINDOW_LAYER 3.2 // Windows
|
||||
#define ABOVE_WINDOW_LAYER 3.25 //Above full tile windows so wall items are clickable
|
||||
#define ON_WINDOW_LAYER 3.3 // Ontop of a window
|
||||
|
||||
// Mob planes
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#define TICK_LIMIT_MC 70
|
||||
#define TICK_LIMIT_MC_INIT_DEFAULT 98
|
||||
|
||||
#define TICK_CHECK ( TICK_USAGE > Master.current_ticklimit )
|
||||
#define TICK_CHECK ( TICK_USAGE > GLOB.CURRENT_TICKLIMIT )
|
||||
#define CHECK_TICK if TICK_CHECK stoplag()
|
||||
|
||||
#define TICK_USAGE world.tick_usage
|
||||
|
||||
17
code/__defines/color.dm
Normal file
17
code/__defines/color.dm
Normal file
@@ -0,0 +1,17 @@
|
||||
//Color defines used by the assembly detailer.
|
||||
#define COLOR_ASSEMBLY_BLACK "#545454"
|
||||
#define COLOR_ASSEMBLY_BGRAY "#9497AB"
|
||||
#define COLOR_ASSEMBLY_WHITE "#E2E2E2"
|
||||
#define COLOR_ASSEMBLY_RED "#CC4242"
|
||||
#define COLOR_ASSEMBLY_ORANGE "#E39751"
|
||||
#define COLOR_ASSEMBLY_BEIGE "#AF9366"
|
||||
#define COLOR_ASSEMBLY_BROWN "#97670E"
|
||||
#define COLOR_ASSEMBLY_GOLD "#AA9100"
|
||||
#define COLOR_ASSEMBLY_YELLOW "#CECA2B"
|
||||
#define COLOR_ASSEMBLY_GURKHA "#999875"
|
||||
#define COLOR_ASSEMBLY_LGREEN "#789876"
|
||||
#define COLOR_ASSEMBLY_GREEN "#44843C"
|
||||
#define COLOR_ASSEMBLY_LBLUE "#5D99BE"
|
||||
#define COLOR_ASSEMBLY_BLUE "#38559E"
|
||||
#define COLOR_ASSEMBLY_PURPLE "#6F6192"
|
||||
#define COLOR_ASSEMBLY_HOT_PINK "#FF69B4"
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#define WORLD_ICON_SIZE 32 // Size of a standard tile in pixels (world.icon_size)
|
||||
#define PIXEL_MULTIPLIER WORLD_ICON_SIZE/32 // Convert from normal icon size of 32 to whatever insane thing this server is using.
|
||||
#define HOLOMAP_ICON 'icons/480x480_vr.dmi' // Icon file to start with when drawing holomaps (to get a 480x480 canvas).
|
||||
#define HOLOMAP_ICON 'icons/480x480.dmi' // Icon file to start with when drawing holomaps (to get a 480x480 canvas).
|
||||
#define HOLOMAP_ICON_SIZE 480 // Pixel width & height of the holomap icon. Used for auto-centering etc.
|
||||
#define ui_holomap "CENTER-7, CENTER-7" // Screen location of the holomap "hud"
|
||||
|
||||
|
||||
3
code/__defines/integrated_circuits.dm
Normal file
3
code/__defines/integrated_circuits.dm
Normal file
@@ -0,0 +1,3 @@
|
||||
// Methods of obtaining a circuit.
|
||||
#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer.
|
||||
#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it.
|
||||
@@ -282,3 +282,9 @@ var/global/list/##LIST_NAME = list();\
|
||||
#define MATRIX_Achromatomaly list(0.62, 0.32, 0.06, 0.16, 0.78, 0.06, 0.16, 0.32, 0.52)
|
||||
#define MATRIX_Vulp_Colorblind list(0.50, 0.40, 0.10, 0.50, 0.40, 0.10, 0, 0.20, 0.80)
|
||||
#define MATRIX_Taj_Colorblind list(0.40, 0.20, 0.40, 0.40, 0.60, 0, 0.20, 0.20, 0.60)
|
||||
|
||||
// Tool substitution defines
|
||||
#define IS_SCREWDRIVER "screwdriver"
|
||||
#define IS_CROWBAR "crowbar"
|
||||
#define IS_WIRECUTTER "wirecutter"
|
||||
#define IS_WRENCH "wrench"
|
||||
@@ -168,18 +168,19 @@
|
||||
#define MODIFIER_GENETIC 1 // Modifiers with this flag will be copied to mobs who get cloned.
|
||||
|
||||
// Bodyparts and organs.
|
||||
#define O_MOUTH "mouth"
|
||||
#define O_EYES "eyes"
|
||||
#define O_HEART "heart"
|
||||
#define O_CELL "cell"
|
||||
#define O_LUNGS "lungs"
|
||||
#define O_BRAIN "brain"
|
||||
#define O_LIVER "liver"
|
||||
#define O_KIDNEYS "kidneys"
|
||||
#define O_APPENDIX "appendix"
|
||||
#define O_VOICE "voicebox"
|
||||
#define O_STANDARD list(O_EYES, O_HEART, O_LUNGS, O_BRAIN, O_LIVER, O_KIDNEYS, O_APPENDIX, O_VOICE)
|
||||
|
||||
// Non-Standard organs
|
||||
#define O_MOUTH "mouth"
|
||||
#define O_CELL "cell"
|
||||
#define O_PLASMA "plasma vessel"
|
||||
#define O_HIVE "hive node"
|
||||
#define O_NUTRIENT "nutrient vessel"
|
||||
@@ -191,7 +192,9 @@
|
||||
#define O_ACID "acid gland"
|
||||
#define O_EGG "egg sac"
|
||||
#define O_RESIN "resin spinner"
|
||||
#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_ACID, O_EGG, O_RESIN)
|
||||
|
||||
// External organs, aka limbs
|
||||
#define BP_L_FOOT "l_foot"
|
||||
#define BP_R_FOOT "r_foot"
|
||||
#define BP_L_LEG "l_leg"
|
||||
|
||||
@@ -10,5 +10,16 @@
|
||||
#define WEATHER_HOT "hot"
|
||||
#define WEATHER_BLOOD_MOON "blood moon" // For admin fun or cult later on.
|
||||
|
||||
#define MOON_PHASE_NEW_MOON "new moon"
|
||||
#define MOON_PHASE_WAXING_CRESCENT "waxing crescent"
|
||||
#define MOON_PHASE_FIRST_QUARTER "first quarter"
|
||||
#define MOON_PHASE_WAXING_GIBBOUS "waxing gibbous"
|
||||
#define MOON_PHASE_FULL_MOON "full moon" // ware-shantaks sold seperately.
|
||||
#define MOON_PHASE_WANING_GIBBOUS "waning gibbous"
|
||||
#define MOON_PHASE_LAST_QUARTER "last quarter"
|
||||
#define MOON_PHASE_WANING_CRESCENT "waning crescent"
|
||||
|
||||
#define PLANET_PROCESS_SUN 0x1
|
||||
#define PLANET_PROCESS_TEMP 0x2
|
||||
|
||||
#define PLANET_TIME_MODIFIER 1 // If you want planet time to go faster than realtime, increase this number.
|
||||
@@ -54,3 +54,125 @@
|
||||
#define SMALL_SOFTFLOOR ROOM
|
||||
#define ASTEROID CAVE
|
||||
#define SPACE UNDERWATER
|
||||
|
||||
// Ambience presets.
|
||||
// All you need to do to make an area play one of these is set their ambience var to one of these lists.
|
||||
// You can even combine them by adding them together, since they're just lists, however you'd have to do that in initialization.
|
||||
|
||||
// For weird alien places like the crashed UFO.
|
||||
#define AMBIENCE_OTHERWORLDLY list(\
|
||||
'sound/ambience/otherworldly/otherworldly1.ogg',\
|
||||
'sound/ambience/otherworldly/otherworldly2.ogg',\
|
||||
'sound/ambience/otherworldly/otherworldly3.ogg'\
|
||||
)
|
||||
|
||||
// Restricted, military, or mercenary aligned locations like the armory, the merc ship/base, BSD, etc.
|
||||
#define AMBIENCE_HIGHSEC list(\
|
||||
'sound/ambience/highsec/highsec1.ogg',\
|
||||
'sound/ambience/highsec/highsec2.ogg'\
|
||||
)
|
||||
|
||||
// Ruined structures found on the surface or in the caves.
|
||||
#define AMBIENCE_RUINS list(\
|
||||
'sound/ambience/ruins/ruins1.ogg',\
|
||||
'sound/ambience/ruins/ruins2.ogg',\
|
||||
'sound/ambience/ruins/ruins3.ogg',\
|
||||
'sound/ambience/ruins/ruins4.ogg',\
|
||||
'sound/ambience/ruins/ruins5.ogg',\
|
||||
'sound/ambience/ruins/ruins6.ogg'\
|
||||
)
|
||||
|
||||
// Similar to the above, but for more technology/signaling based ruins.
|
||||
#define AMBIENCE_TECH_RUINS list(\
|
||||
'sound/ambience/tech_ruins/tech_ruins1.ogg',\
|
||||
'sound/ambience/tech_ruins/tech_ruins2.ogg',\
|
||||
'sound/ambience/tech_ruins/tech_ruins3.ogg'\
|
||||
)
|
||||
|
||||
// The actual chapel room, and maybe some other places of worship.
|
||||
#define AMBIENCE_CHAPEL list(\
|
||||
'sound/ambience/chapel/chapel1.ogg',\
|
||||
'sound/ambience/chapel/chapel2.ogg',\
|
||||
'sound/ambience/chapel/chapel3.ogg',\
|
||||
'sound/ambience/chapel/chapel4.ogg'\
|
||||
)
|
||||
|
||||
// For peaceful, serene areas, distinct from the Chapel.
|
||||
#define AMBIENCE_HOLY list(\
|
||||
'sound/ambience/holy/holy1.ogg',\
|
||||
'sound/ambience/holy/holy2.ogg'\
|
||||
)
|
||||
|
||||
// Generic sounds for less special rooms.
|
||||
#define AMBIENCE_GENERIC list(\
|
||||
'sound/ambience/generic/generic1.ogg',\
|
||||
'sound/ambience/generic/generic2.ogg',\
|
||||
'sound/ambience/generic/generic3.ogg',\
|
||||
'sound/ambience/generic/generic4.ogg'\
|
||||
)
|
||||
|
||||
// Sounds of PA announcements, presumably involving shuttles?
|
||||
#define AMBIENCE_ARRIVALS list(\
|
||||
'sound/ambience/arrivals/arrivals1.ogg',\
|
||||
'sound/ambience/arrivals/arrivals2.ogg'\
|
||||
)
|
||||
|
||||
// Sounds suitable for being inside dark, tight corridors in the underbelly of the station.
|
||||
#define AMBIENCE_MAINTENANCE list(\
|
||||
'sound/ambience/maintenance/maintenance1.ogg',\
|
||||
'sound/ambience/maintenance/maintenance2.ogg',\
|
||||
'sound/ambience/maintenance/maintenance3.ogg',\
|
||||
'sound/ambience/maintenance/maintenance4.ogg',\
|
||||
'sound/ambience/maintenance/maintenance5.ogg',\
|
||||
'sound/ambience/maintenance/maintenance6.ogg'\
|
||||
)
|
||||
|
||||
// Life support machinery at work, keeping everyone breathing.
|
||||
#define AMBIENCE_ENGINEERING list(\
|
||||
'sound/ambience/engineering/engineering1.ogg',\
|
||||
'sound/ambience/engineering/engineering2.ogg',\
|
||||
'sound/ambience/engineering/engineering3.ogg'\
|
||||
)
|
||||
|
||||
// Creepy AI/borg stuff.
|
||||
#define AMBIENCE_AI list(\
|
||||
'sound/ambience/ai/ai1.ogg'\
|
||||
)
|
||||
|
||||
// Peaceful sounds when floating in the void.
|
||||
#define AMBIENCE_SPACE list(\
|
||||
'sound/ambience/space/space_serithi.ogg',\
|
||||
'sound/ambience/space/space1.ogg'\
|
||||
)
|
||||
|
||||
// Vaguely spooky sounds when around dead things.
|
||||
#define AMBIENCE_GHOSTLY list(\
|
||||
'sound/ambience/ghostly/ghostly1.ogg',\
|
||||
'sound/ambience/ghostly/ghostly2.ogg'\
|
||||
)
|
||||
|
||||
// Concerning sounds, for when one discovers something horrible happened in a PoI.
|
||||
#define AMBIENCE_FOREBODING list(\
|
||||
'sound/ambience/foreboding/foreboding1.ogg',\
|
||||
'sound/ambience/foreboding/foreboding2.ogg'\
|
||||
)
|
||||
|
||||
// Ambience heard when aboveground on Sif and not in a Point of Interest.
|
||||
#define AMBIENCE_SIF list(\
|
||||
'sound/ambience/sif/sif1.ogg'\
|
||||
)
|
||||
|
||||
// If we ever add geothermal PoIs or other places that are really hot, this will do.
|
||||
#define AMBIENCE_LAVA list(\
|
||||
'sound/ambience/lava/lava1.ogg'\
|
||||
)
|
||||
|
||||
// Cult-y ambience, for some PoIs, and maybe when the cultists darken the world with the ritual.
|
||||
#define AMBIENCE_UNHOLY list(\
|
||||
'sound/ambience/unholy/unholy1.ogg'\
|
||||
)
|
||||
|
||||
// For the memes.
|
||||
#define AMBIENCE_AESTHETIC list(\
|
||||
'sound/ambience/vaporwave.ogg'\
|
||||
)
|
||||
@@ -1,3 +1,18 @@
|
||||
//Timing subsystem
|
||||
//Don't run if there is an identical unique timer active
|
||||
#define TIMER_UNIQUE 0x1
|
||||
//For unique timers: Replace the old timer rather then not start this one
|
||||
#define TIMER_OVERRIDE 0x2
|
||||
//Timing should be based on how timing progresses on clients, not the sever.
|
||||
// tracking this is more expensive,
|
||||
// should only be used in conjuction with things that have to progress client side, such as animate() or sound()
|
||||
#define TIMER_CLIENT_TIME 0x4
|
||||
//Timer can be stopped using deltimer()
|
||||
#define TIMER_STOPPABLE 0x8
|
||||
//To be used with TIMER_UNIQUE
|
||||
//prevents distinguishing identical timers with the wait variable
|
||||
#define TIMER_NO_HASH_WAIT 0x10
|
||||
#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something
|
||||
|
||||
#define INITIALIZATION_INSSATOMS 0 //New should not call Initialize
|
||||
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
|
||||
@@ -7,6 +22,15 @@
|
||||
#define INITIALIZE_HINT_LATELOAD 1 //Call LateInitialize
|
||||
#define INITIALIZE_HINT_QDEL 2 //Call qdel on the atom
|
||||
|
||||
//type and all subtypes should always call Initialize in New()
|
||||
#define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){\
|
||||
..();\
|
||||
if(!initialized) {\
|
||||
args[1] = TRUE;\
|
||||
SSatoms.InitAtom(src, args);\
|
||||
}\
|
||||
}
|
||||
|
||||
// SS runlevels
|
||||
|
||||
#define RUNLEVEL_INIT 0 // "Initialize Only" - Used for subsystems that should never be fired (Should also have SS_NO_FIRE set)
|
||||
@@ -32,8 +56,10 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
||||
#define INIT_ORDER_LIGHTING 0
|
||||
#define INIT_ORDER_AIR -1
|
||||
#define INIT_ORDER_PLANETS -4
|
||||
#define INIT_ORDER_HOLOMAPS -5
|
||||
#define INIT_ORDER_OVERLAY -6
|
||||
#define INIT_ORDER_XENOARCH -20
|
||||
#define INIT_ORDER_CIRCUIT -21
|
||||
|
||||
|
||||
// Subsystem fire priority, from lowest to highest priority
|
||||
|
||||
19
code/__defines/supply.dm
Normal file
19
code/__defines/supply.dm
Normal file
@@ -0,0 +1,19 @@
|
||||
// Supply shuttle status defines
|
||||
#define SUP_SHUTTLE_ERROR -1 // Error state
|
||||
#define SUP_SHUTTLE_DOCKED 0
|
||||
#define SUP_SHUTTLE_UNDOCKED 1
|
||||
#define SUP_SHUTTLE_DOCKING 2
|
||||
#define SUP_SHUTTLE_UNDOCKING 3
|
||||
#define SUP_SHUTTLE_TRANSIT 4
|
||||
#define SUP_SHUTTLE_AWAY 5
|
||||
|
||||
// Supply computer access levels
|
||||
#define SUP_SEND_SHUTTLE 0x1 // Send the shuttle back and forth
|
||||
#define SUP_ACCEPT_ORDERS 0x2 // Accept orders
|
||||
#define SUP_CONTRABAND 0x4 // Able to order contraband supply packs
|
||||
|
||||
// Supply_order status values
|
||||
#define SUP_ORDER_REQUESTED "Requested"
|
||||
#define SUP_ORDER_APPROVED "Approved"
|
||||
#define SUP_ORDER_DENIED "Denied"
|
||||
#define SUP_ORDER_SHIPPED "Shipped"
|
||||
32
code/_global_vars/lists/mapping.dm
Normal file
32
code/_global_vars/lists/mapping.dm
Normal file
@@ -0,0 +1,32 @@
|
||||
GLOBAL_LIST_INIT(cardinal, list(NORTH, SOUTH, EAST, WEST))
|
||||
GLOBAL_LIST_INIT(cardinalz, list(NORTH, SOUTH, EAST, WEST, UP, DOWN))
|
||||
GLOBAL_LIST_INIT(cornerdirs, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
|
||||
GLOBAL_LIST_INIT(cornerdirsz, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST, NORTH|UP, EAST|UP, WEST|UP, SOUTH|UP, NORTH|DOWN, EAST|DOWN, WEST|DOWN, SOUTH|DOWN))
|
||||
GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
|
||||
GLOBAL_LIST_INIT(reverse_dir, list( // reverse_dir[dir] = reverse of dir
|
||||
2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15,
|
||||
32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47,
|
||||
16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31,
|
||||
48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(flip_dir, list( // flip_dir[dir] = 180 degree rotation of dir. Unlike reverse_dir, UP remains UP & DOWN remains DOWN.
|
||||
2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15,
|
||||
16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31, // UP - Same as first line but +16
|
||||
32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47, // DOWN - Same as first line but +32
|
||||
48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63 // UP+DOWN - Same as first line but +48
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(cw_dir, list( // cw_dir[dir] = clockwise rotation of dir. Unlike reverse_dir, UP remains UP & DOWN remains DOWN.
|
||||
4, 8, 12, 2, 6, 10, 14, 1, 5, 9, 13, 3, 7, 11, 15,
|
||||
16, 20, 24, 28, 18, 22, 26, 30, 17, 21, 25, 19, 29, 23, 27, 31, // UP - Same as first line but +16
|
||||
32, 36, 40, 44, 34, 38, 42, 46, 33, 37, 41, 45, 35, 39, 43, 47, // DOWN - Same as first line but +32
|
||||
48, 52, 56, 40, 50, 54, 58, 62, 49, 53, 57, 61, 51, 55, 59, 63 // UP+DOWN - Same as first line but +48
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(cww_dir, list( // cww_dir[dir] = counter-clockwise rotation of dir. Unlike reverse_dir, UP remains UP & DOWN remains DOWN.
|
||||
8, 4, 12, 1, 9, 5, 13, 2, 10, 6, 14, 3, 11, 7, 15,
|
||||
16, 24, 20, 28, 17, 25, 21, 29, 18, 26, 22, 30, 19, 27, 23, 31, // UP - Same as first line but +16
|
||||
32, 40, 36, 44, 33, 41, 37, 45, 34, 42, 38, 46, 35, 43, 39, 47, // DOWN - Same as first line but +32
|
||||
48, 56, 52, 60, 49, 57, 53, 61, 50, 58, 54, 62, 51, 59, 55, 63 // UP+DOWN - Same as first line but +48
|
||||
))
|
||||
1
code/_global_vars/misc.dm
Normal file
1
code/_global_vars/misc.dm
Normal file
@@ -0,0 +1 @@
|
||||
GLOBAL_LIST_EMPTY(all_observable_events)
|
||||
2
code/_global_vars/mobs.dm
Normal file
2
code/_global_vars/mobs.dm
Normal file
@@ -0,0 +1,2 @@
|
||||
GLOBAL_LIST_EMPTY(admins) //all clients whom are admins
|
||||
GLOBAL_PROTECT(admins)
|
||||
11
code/_global_vars/sensitive.dm
Normal file
11
code/_global_vars/sensitive.dm
Normal file
@@ -0,0 +1,11 @@
|
||||
// MySQL configuration
|
||||
GLOBAL_REAL_VAR(sqladdress) = "localhost"
|
||||
GLOBAL_REAL_VAR(sqlport) = "3306"
|
||||
GLOBAL_REAL_VAR(sqldb) = "tgstation"
|
||||
GLOBAL_REAL_VAR(sqllogin) = "root"
|
||||
GLOBAL_REAL_VAR(sqlpass) = ""
|
||||
// Feedback gathering sql connection
|
||||
GLOBAL_REAL_VAR(sqlfdbkdb) = "test"
|
||||
GLOBAL_REAL_VAR(sqlfdbklogin) = "root"
|
||||
GLOBAL_REAL_VAR(sqlfdbkpass) = ""
|
||||
GLOBAL_REAL_VAR(sqllogging) = 0 // Should we log deaths, population stats, etc.?
|
||||
@@ -546,7 +546,7 @@ datum/projectile_data
|
||||
/proc/getOPressureDifferential(var/turf/loc)
|
||||
var/minp=16777216;
|
||||
var/maxp=0;
|
||||
for(var/dir in cardinal)
|
||||
for(var/dir in GLOB.cardinal)
|
||||
var/turf/simulated/T=get_turf(get_step(loc,dir))
|
||||
var/cp=0
|
||||
if(T && istype(T) && T.zone)
|
||||
@@ -567,7 +567,7 @@ datum/projectile_data
|
||||
|
||||
/proc/getCardinalAirInfo(var/turf/loc, var/list/stats=list("temperature"))
|
||||
var/list/temps = new/list(4)
|
||||
for(var/dir in cardinal)
|
||||
for(var/dir in GLOB.cardinal)
|
||||
var/direction
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
|
||||
@@ -634,7 +634,6 @@ as a single icon. Useful for when you want to manipulate an icon via the above a
|
||||
The _flatIcons list is a cache for generated icon files.
|
||||
*/
|
||||
|
||||
// Creates a single icon from a given /atom or /image. Only the first argument is required.
|
||||
/proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE)
|
||||
// We start with a blank canvas, otherwise some icon procs crash silently
|
||||
var/icon/flat = icon('icons/effects/effects.dmi', "nothing") // Final flattened icon
|
||||
@@ -824,6 +823,9 @@ The _flatIcons list is a cache for generated icon files.
|
||||
else
|
||||
return icon(flat, "", SOUTH)
|
||||
|
||||
|
||||
|
||||
|
||||
/proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N
|
||||
var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A.
|
||||
for(var/I in A.overlays)//For every image in overlays. var/image/I will not work, don't try it.
|
||||
@@ -874,10 +876,13 @@ The _flatIcons list is a cache for generated icon files.
|
||||
if(4) I.pixel_y++
|
||||
overlays += I//And finally add the overlay.
|
||||
|
||||
/proc/getHologramIcon(icon/A, safety=1)//If safety is on, a new icon is not created.
|
||||
/proc/getHologramIcon(icon/A, safety=1, no_color = FALSE)//If safety is on, a new icon is not created.
|
||||
var/icon/flat_icon = safety ? A : new(A)//Has to be a new icon to not constantly change the same icon.
|
||||
//flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish. //VOREStation Removal for AI Vore effects
|
||||
//flat_icon.ChangeOpacity(0.5)//Make it half transparent. //VOREStation Removal for AI Vore effects
|
||||
/* VOREStation Removal - For AI Vore effects
|
||||
if(!no_color)
|
||||
flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish.
|
||||
flat_icon.ChangeOpacity(0.5)//Make it half transparent.
|
||||
*/ //VOREStation Removal End
|
||||
var/icon/alpha_mask = new('icons/effects/effects.dmi', "scanline")//Scanline effect.
|
||||
flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect.
|
||||
return flat_icon
|
||||
|
||||
@@ -135,6 +135,6 @@ var/round_start_time = 0
|
||||
. += CEILING(i*DELTA_CALC, 1)
|
||||
sleep(i*world.tick_lag*DELTA_CALC)
|
||||
i *= 2
|
||||
while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, Master.current_ticklimit))
|
||||
while (TICK_USAGE > min(TICK_LIMIT_TO_RUN, GLOB.CURRENT_TICKLIMIT))
|
||||
|
||||
#undef DELTA_CALC
|
||||
@@ -1057,62 +1057,21 @@ proc/get_mob_with_client_list()
|
||||
//Quick type checks for some tools
|
||||
var/global/list/common_tools = list(
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/weapon/tool/wrench,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/tool/screwdriver,
|
||||
/obj/item/weapon/tool/wirecutters,
|
||||
/obj/item/device/multitool,
|
||||
/obj/item/weapon/crowbar)
|
||||
/obj/item/weapon/tool/crowbar)
|
||||
|
||||
/proc/istool(O)
|
||||
if(O && is_type_in_list(O, common_tools))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iswrench(O)
|
||||
if(istype(O, /obj/item/weapon/wrench))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iswelder(O)
|
||||
if(istype(O, /obj/item/weapon/weldingtool))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iscoil(O)
|
||||
if(istype(O, /obj/item/stack/cable_coil))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iswirecutter(O)
|
||||
if(istype(O, /obj/item/weapon/wirecutters))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isscrewdriver(O)
|
||||
if(istype(O, /obj/item/weapon/screwdriver))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/ismultitool(O)
|
||||
if(istype(O, /obj/item/device/multitool))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iscrowbar(O)
|
||||
if(istype(O, /obj/item/weapon/crowbar))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/iswire(O)
|
||||
if(istype(O, /obj/item/stack/cable_coil))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/is_wire_tool(obj/item/I)
|
||||
if(istype(I, /obj/item/device/multitool))
|
||||
return TRUE
|
||||
if(istype(I, /obj/item/weapon/wirecutters))
|
||||
if(istype(I, /obj/item/device/multitool) || I.is_wirecutter())
|
||||
return TRUE
|
||||
if(istype(I, /obj/item/device/assembly/signaler))
|
||||
return TRUE
|
||||
@@ -1152,24 +1111,30 @@ proc/is_hot(obj/item/W as obj)
|
||||
|
||||
//Whether or not the given item counts as sharp in terms of dealing damage
|
||||
/proc/is_sharp(obj/O as obj)
|
||||
if (!O) return 0
|
||||
if (O.sharp) return 1
|
||||
if (O.edge) return 1
|
||||
return 0
|
||||
if(!O)
|
||||
return FALSE
|
||||
if(O.sharp)
|
||||
return TRUE
|
||||
if(O.edge)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//Whether or not the given item counts as cutting with an edge in terms of removing limbs
|
||||
/proc/has_edge(obj/O as obj)
|
||||
if (!O) return 0
|
||||
if (O.edge) return 1
|
||||
return 0
|
||||
if(!O)
|
||||
return FALSE
|
||||
if(O.edge)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape.
|
||||
/proc/can_puncture(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
|
||||
if(!W) return 0
|
||||
if(W.sharp) return 1
|
||||
if(!W)
|
||||
return FALSE
|
||||
if(W.sharp)
|
||||
return TRUE
|
||||
return ( \
|
||||
W.sharp || \
|
||||
istype(W, /obj/item/weapon/screwdriver) || \
|
||||
W.is_screwdriver() || \
|
||||
istype(W, /obj/item/weapon/pen) || \
|
||||
istype(W, /obj/item/weapon/weldingtool) || \
|
||||
istype(W, /obj/item/weapon/flame/lighter/zippo) || \
|
||||
@@ -1497,7 +1462,5 @@ var/mob/dview/dview_mob = new
|
||||
var/datum/D = list_or_datum
|
||||
D.vars[var_name] = var_value
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/proc/pass()
|
||||
return
|
||||
|
||||
@@ -65,9 +65,9 @@
|
||||
|
||||
#define CanInteract(user, state) (CanUseTopic(user, state) == STATUS_INTERACTIVE)
|
||||
|
||||
#define qdel_null_list(x) if(x) { for(var/y in x) { qdel(y) } ; x = null }
|
||||
#define QDEL_NULL_LIST(x) if(x) { for(var/y in x) { qdel(y) } ; x = null }
|
||||
|
||||
#define qdel_null(x) if(x) { qdel(x) ; x = null }
|
||||
#define QDEL_NULL(x) if(x) { qdel(x) ; x = null }
|
||||
|
||||
#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") }
|
||||
|
||||
@@ -92,3 +92,5 @@
|
||||
#define LAZYCLEARLIST(L) if(L) L.Cut()
|
||||
// Reads L or an empty list if L is not a list. Note: Does NOT assign, L may be an expression.
|
||||
#define SANITIZE_LIST(L) ( islist(L) ? L : list() )
|
||||
// Turns LAZYINITLIST(L) L[K] = V into ... for associated lists
|
||||
#define LAZYSET(L, K, V) if(!L) { L = list(); } L[K] = V;
|
||||
@@ -76,7 +76,7 @@
|
||||
if(A == loc || (A in loc) || (A in contents))
|
||||
// No adjacency checks
|
||||
|
||||
var/resolved = A.attackby(W,src)
|
||||
var/resolved = A.attackby(W, src, 1)
|
||||
if(!resolved && A && W)
|
||||
W.afterattack(A,src,1,params)
|
||||
return
|
||||
@@ -88,7 +88,7 @@
|
||||
if(isturf(A) || isturf(A.loc))
|
||||
if(A.Adjacent(src)) // see adjacent.dm
|
||||
|
||||
var/resolved = A.attackby(W, src)
|
||||
var/resolved = A.attackby(W, src, 1)
|
||||
if(!resolved && A && W)
|
||||
W.afterattack(A, src, 1, params)
|
||||
return
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
if(owner)
|
||||
Remove(owner)
|
||||
target = null
|
||||
qdel_null(button)
|
||||
QDEL_NULL(button)
|
||||
return ..()
|
||||
|
||||
/datum/action/proc/Grant(mob/living/T)
|
||||
@@ -48,7 +48,7 @@
|
||||
if(button)
|
||||
if(T.client)
|
||||
T.client.screen -= button
|
||||
qdel_null(button)
|
||||
QDEL_NULL(button)
|
||||
T.actions.Remove(src)
|
||||
T.update_action_buttons()
|
||||
owner = null
|
||||
|
||||
@@ -15,7 +15,7 @@ var/list/global_huds = list(
|
||||
global_hud.meson,
|
||||
global_hud.science,
|
||||
global_hud.material,
|
||||
global_hud.holomap // VOREStation Edit - Holomap
|
||||
global_hud.holomap
|
||||
)
|
||||
|
||||
/datum/hud/var/obj/screen/grab_intent
|
||||
@@ -36,7 +36,7 @@ var/list/global_huds = list(
|
||||
var/obj/screen/meson
|
||||
var/obj/screen/science
|
||||
var/obj/screen/material
|
||||
var/obj/screen/holomap // VOREStation Edit - Holomap
|
||||
var/obj/screen/holomap
|
||||
|
||||
/datum/global_hud/proc/setup_overlay(var/icon_state)
|
||||
var/obj/screen/screen = new /obj/screen()
|
||||
@@ -92,7 +92,6 @@ var/list/global_huds = list(
|
||||
science = setup_overlay("science_hud")
|
||||
material = setup_overlay("material_hud")
|
||||
|
||||
// VOREStation Edit Begin - Holomap
|
||||
// The holomap screen object is actually totally invisible.
|
||||
// Station maps work by setting it as an images location before sending to client, not
|
||||
// actually changing the icon or icon state of the screen object itself!
|
||||
@@ -104,7 +103,6 @@ var/list/global_huds = list(
|
||||
holomap.icon = null
|
||||
holomap.screen_loc = ui_holomap
|
||||
holomap.mouse_opacity = 0
|
||||
// VOREStation Edit End
|
||||
|
||||
var/obj/screen/O
|
||||
var/i
|
||||
|
||||
@@ -28,26 +28,29 @@ avoid code duplication. This includes items that may sometimes act as a standard
|
||||
return
|
||||
|
||||
//I would prefer to rename this to attack(), but that would involve touching hundreds of files.
|
||||
/obj/item/proc/resolve_attackby(atom/A, mob/user)
|
||||
/obj/item/proc/resolve_attackby(atom/A, mob/user, var/attack_modifier = 1)
|
||||
pre_attack(A, user)
|
||||
add_fingerprint(user)
|
||||
return A.attackby(src, user)
|
||||
return A.attackby(src, user, attack_modifier)
|
||||
|
||||
// No comment
|
||||
/atom/proc/attackby(obj/item/W, mob/user)
|
||||
/atom/proc/attackby(obj/item/W, mob/user, var/attack_modifier)
|
||||
return
|
||||
|
||||
/atom/movable/attackby(obj/item/W, mob/user)
|
||||
/atom/movable/attackby(obj/item/W, mob/user, var/attack_modifier)
|
||||
if(!(W.flags & NOBLUDGEON))
|
||||
visible_message("<span class='danger'>[src] has been hit by [user] with [W].</span>")
|
||||
|
||||
/mob/living/attackby(obj/item/I, mob/user)
|
||||
/mob/living/attackby(obj/item/I, mob/user, var/attack_modifier)
|
||||
if(!ismob(user))
|
||||
return 0
|
||||
if(can_operate(src) && I.do_surgery(src,user)) //Surgery
|
||||
if(can_operate(src) && I.do_surgery(src,user))
|
||||
if(I.can_do_surgery(src,user))
|
||||
return 1
|
||||
if(attempt_vr(src,"vore_attackby",args)) return //VOREStation Code
|
||||
return I.attack(src, user, user.zone_sel.selecting)
|
||||
else
|
||||
return 0
|
||||
if(attempt_vr(src,"vore_attackby",args)) return //VOREStation Add - The vore, of course.
|
||||
return I.attack(src, user, user.zone_sel.selecting, attack_modifier)
|
||||
|
||||
// Used to get how fast a mob should attack, and influences click delay.
|
||||
// This is just for inheritence.
|
||||
@@ -71,7 +74,7 @@ avoid code duplication. This includes items that may sometimes act as a standard
|
||||
return
|
||||
|
||||
//I would prefer to rename this attack_as_weapon(), but that would involve touching hundreds of files.
|
||||
/obj/item/proc/attack(mob/living/M, mob/living/user, var/target_zone)
|
||||
/obj/item/proc/attack(mob/living/M, mob/living/user, var/target_zone, var/attack_modifier)
|
||||
if(!force || (flags & NOBLUDGEON))
|
||||
return 0
|
||||
if(M == user && user.a_intent != I_HURT)
|
||||
@@ -90,12 +93,12 @@ avoid code duplication. This includes items that may sometimes act as a standard
|
||||
|
||||
var/hit_zone = M.resolve_item_attack(src, user, target_zone)
|
||||
if(hit_zone)
|
||||
apply_hit_effect(M, user, hit_zone)
|
||||
apply_hit_effect(M, user, hit_zone, attack_modifier)
|
||||
|
||||
return 1
|
||||
|
||||
//Called when a weapon is used to make a successful melee attack on a mob. Returns the blocked result
|
||||
/obj/item/proc/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
/obj/item/proc/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone, var/attack_modifier)
|
||||
user.break_cloak()
|
||||
if(hitsound)
|
||||
playsound(loc, hitsound, 50, 1, -1)
|
||||
@@ -104,7 +107,10 @@ avoid code duplication. This includes items that may sometimes act as a standard
|
||||
for(var/datum/modifier/M in user.modifiers)
|
||||
if(!isnull(M.outgoing_melee_damage_percent))
|
||||
power *= M.outgoing_melee_damage_percent
|
||||
|
||||
if(HULK in user.mutations)
|
||||
power *= 2
|
||||
return target.hit_with_weapon(src, user, power, hit_zone)
|
||||
|
||||
power *= attack_modifier
|
||||
|
||||
return target.hit_with_weapon(src, user, power, hit_zone)
|
||||
@@ -154,7 +154,7 @@ var/const/tk_maxrange = 15
|
||||
O.anchored = 1
|
||||
O.density = 0
|
||||
O.layer = FLY_LAYER
|
||||
O.set_dir(pick(cardinal))
|
||||
O.set_dir(pick(GLOB.cardinal))
|
||||
O.icon = 'icons/effects/effects.dmi'
|
||||
O.icon_state = "nothing"
|
||||
flick("empdisable",O)
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
|
||||
/datum/controller/process/nanoui/statProcess()
|
||||
..()
|
||||
stat(null, "[nanomanager.processing_uis.len] UIs")
|
||||
stat(null, "[GLOB.nanomanager.processing_uis.len] UIs")
|
||||
|
||||
/datum/controller/process/nanoui/doWork()
|
||||
for(last_object in nanomanager.processing_uis)
|
||||
for(last_object in GLOB.nanomanager.processing_uis)
|
||||
var/datum/nanoui/NUI = last_object
|
||||
if(istype(NUI) && !QDELETED(NUI))
|
||||
try
|
||||
@@ -16,4 +16,4 @@
|
||||
catchException(e, NUI)
|
||||
else
|
||||
catchBadType(NUI)
|
||||
nanomanager.processing_uis -= NUI
|
||||
GLOB.nanomanager.processing_uis -= NUI
|
||||
@@ -8,15 +8,22 @@
|
||||
//Computers are in /code/game/machinery/computer/supply.dm
|
||||
|
||||
/datum/supply_order
|
||||
var/ordernum
|
||||
var/datum/supply_packs/object = null
|
||||
var/orderedby = null
|
||||
var/comment = null
|
||||
var/ordernum // Unfabricatable index
|
||||
var/index // Fabricatable index
|
||||
var/datum/supply_pack/object = null
|
||||
var/cost // Cost of the supply pack (Fabricatable) (Changes not reflected when purchasing supply packs, this is cosmetic only)
|
||||
var/name // Name of the supply pack datum (Fabricatable)
|
||||
var/ordered_by = null // Who requested the order
|
||||
var/comment = null // What reason was given for the order
|
||||
var/approved_by = null // Who approved the order
|
||||
var/ordered_at // Date and time the order was requested at
|
||||
var/approved_at // Date and time the order was approved at
|
||||
var/status // [Requested, Accepted, Denied, Shipped]
|
||||
|
||||
/datum/exported_crate
|
||||
var/name
|
||||
var/value
|
||||
|
||||
var/list/contents
|
||||
|
||||
var/datum/controller/supply/supply_controller = new()
|
||||
|
||||
@@ -25,25 +32,29 @@ var/datum/controller/supply/supply_controller = new()
|
||||
var/points = 50
|
||||
var/points_per_process = 1.5
|
||||
var/points_per_slip = 2
|
||||
var/points_per_platinum = 5 // 5 points per sheet
|
||||
var/points_per_phoron = 5
|
||||
var/points_per_money = 0.02 // 1 point for $50
|
||||
//control
|
||||
var/ordernum
|
||||
var/list/shoppinglist = list()
|
||||
var/list/requestlist = list()
|
||||
var/list/supply_packs = list()
|
||||
var/list/exported_crates = list()
|
||||
var/list/shoppinglist = list() // Approved orders
|
||||
var/list/supply_pack = list() // All supply packs
|
||||
var/list/exported_crates = list() // Crates sent from the station
|
||||
var/list/order_history = list() // History of orders, showing edits made by users
|
||||
var/list/adm_order_history = list() // Complete history of all orders, for admin use
|
||||
var/list/adm_export_history = list() // Complete history of all crates sent back on the shuttle, for admin use
|
||||
//shuttle movement
|
||||
var/movetime = 1200
|
||||
var/datum/shuttle/ferry/supply/shuttle
|
||||
var/list/material_points_conversion = list( // Any materials not named in this list are worth 0 points
|
||||
"phoron" = 5,
|
||||
"platinum" = 5
|
||||
)
|
||||
|
||||
/datum/controller/supply/New()
|
||||
ordernum = rand(1,9000)
|
||||
|
||||
for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs))
|
||||
var/datum/supply_packs/P = new typepath()
|
||||
supply_packs[P.name] = P
|
||||
for(var/typepath in subtypesof(/datum/supply_pack))
|
||||
var/datum/supply_pack/P = new typepath()
|
||||
supply_pack[P.name] = P
|
||||
|
||||
/datum/controller/process/supply/setup()
|
||||
name = "supply controller"
|
||||
@@ -80,23 +91,17 @@ var/datum/controller/supply/supply_controller = new()
|
||||
|
||||
callHook("sell_shuttle", list(area_shuttle));
|
||||
|
||||
var/phoron_count = 0
|
||||
var/plat_count = 0
|
||||
var/money_count = 0
|
||||
|
||||
exported_crates = list()
|
||||
|
||||
for(var/atom/movable/MA in area_shuttle)
|
||||
if(MA.anchored)
|
||||
continue
|
||||
|
||||
var/datum/exported_crate/EC = new /datum/exported_crate()
|
||||
EC.name = "\proper[MA.name]"
|
||||
EC.value = 0
|
||||
EC.contents = list()
|
||||
|
||||
// Must be in a crate!
|
||||
if(istype(MA,/obj/structure/closet/crate))
|
||||
var/oldpoints = points
|
||||
var/oldphoron = phoron_count
|
||||
var/oldplatinum = plat_count
|
||||
var/oldmoney = money_count
|
||||
|
||||
var/obj/structure/closet/crate/CR = MA
|
||||
callHook("sell_crate", list(CR, area_shuttle))
|
||||
|
||||
@@ -104,44 +109,63 @@ var/datum/controller/supply/supply_controller = new()
|
||||
var/find_slip = 1
|
||||
|
||||
for(var/atom/A in CR)
|
||||
EC.contents[++EC.contents.len] = list(
|
||||
"object" = "\proper[A.name]",
|
||||
"value" = 0,
|
||||
"quantity" = 1
|
||||
)
|
||||
|
||||
// Sell manifests
|
||||
if(find_slip && istype(A,/obj/item/weapon/paper/manifest))
|
||||
var/obj/item/weapon/paper/manifest/slip = A
|
||||
if(!slip.is_copy && slip.stamped && slip.stamped.len) //yes, the clown stamp will work. clown is the highest authority on the station, it makes sense
|
||||
points += points_per_slip
|
||||
EC.contents[EC.contents.len]["value"] = points_per_slip
|
||||
find_slip = 0
|
||||
continue
|
||||
|
||||
// Sell phoron and platinum
|
||||
if(istype(A, /obj/item/stack))
|
||||
var/obj/item/stack/P = A
|
||||
switch(P.get_material_name())
|
||||
if("phoron")
|
||||
phoron_count += P.get_amount()
|
||||
if("platinum")
|
||||
plat_count += P.get_amount()
|
||||
if(material_points_conversion[P.get_material_name()])
|
||||
EC.contents[EC.contents.len]["value"] = P.get_amount() * material_points_conversion[P.get_material_name()]
|
||||
EC.contents[EC.contents.len]["quantity"] = P.get_amount()
|
||||
EC.value += EC.contents[EC.contents.len]["value"]
|
||||
|
||||
//Sell spacebucks
|
||||
if(istype(A, /obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/cashmoney = A
|
||||
money_count += cashmoney.worth
|
||||
EC.contents[EC.contents.len]["value"] = cashmoney.worth * points_per_money
|
||||
EC.contents[EC.contents.len]["quantity"] = cashmoney.worth
|
||||
EC.value += EC.contents[EC.contents.len]["value"]
|
||||
|
||||
|
||||
|
||||
// Make a log of it, but it wasn't shipped properly, and so isn't worth anything
|
||||
else
|
||||
EC.contents = list(
|
||||
"error" = "Error: Product was improperly packaged. Payment rendered null under terms of agreement."
|
||||
)
|
||||
|
||||
var/datum/exported_crate/EC = new /datum/exported_crate()
|
||||
EC.name = CR.name
|
||||
EC.value = points - oldpoints
|
||||
EC.value += (phoron_count - oldphoron) * points_per_phoron
|
||||
EC.value += (plat_count - oldplatinum) * points_per_platinum
|
||||
EC.value += (money_count - oldmoney) * points_per_money
|
||||
exported_crates += EC
|
||||
points += EC.value
|
||||
|
||||
// Duplicate the receipt for the admin-side log
|
||||
var/datum/exported_crate/adm = new()
|
||||
adm.name = EC.name
|
||||
adm.value = EC.value
|
||||
adm.contents = deepCopyList(EC.contents)
|
||||
adm_export_history += adm
|
||||
|
||||
qdel(MA)
|
||||
|
||||
points += phoron_count * points_per_phoron
|
||||
points += plat_count * points_per_platinum
|
||||
points += money_count * points_per_money
|
||||
|
||||
//Buying
|
||||
/datum/controller/supply/proc/buy()
|
||||
var/list/shoppinglist = list()
|
||||
for(var/datum/supply_order/SO in order_history)
|
||||
if(SO.status == SUP_ORDER_APPROVED)
|
||||
shoppinglist += SO
|
||||
|
||||
if(!shoppinglist.len)
|
||||
return
|
||||
|
||||
@@ -165,17 +189,16 @@ var/datum/controller/supply/supply_controller = new()
|
||||
continue
|
||||
clear_turfs += T
|
||||
|
||||
for(var/S in shoppinglist)
|
||||
for(var/datum/supply_order/SO in shoppinglist)
|
||||
if(!clear_turfs.len)
|
||||
break
|
||||
|
||||
var/i = rand(1,clear_turfs.len)
|
||||
var/turf/pickedloc = clear_turfs[i]
|
||||
clear_turfs.Cut(i,i+1)
|
||||
shoppinglist -= S
|
||||
|
||||
var/datum/supply_order/SO = S
|
||||
var/datum/supply_packs/SP = SO.object
|
||||
SO.status = SUP_ORDER_SHIPPED
|
||||
var/datum/supply_pack/SP = SO.object
|
||||
|
||||
var/obj/A = new SP.containertype(pickedloc)
|
||||
A.name = "[SP.containername] [SO.comment ? "([SO.comment])":"" ]"
|
||||
@@ -202,8 +225,8 @@ var/datum/controller/supply/supply_controller = new()
|
||||
log_debug("<span class='danger'>Supply pack with invalid access restriction [SP.access] encountered!</span>")
|
||||
|
||||
var/list/contains
|
||||
if(istype(SP,/datum/supply_packs/randomised))
|
||||
var/datum/supply_packs/randomised/SPR = SP
|
||||
if(istype(SP,/datum/supply_pack/randomised))
|
||||
var/datum/supply_pack/randomised/SPR = SP
|
||||
contains = list()
|
||||
if(SPR.contains.len)
|
||||
for(var/j=1,j<=SPR.num_contained,j++)
|
||||
@@ -227,3 +250,141 @@ var/datum/controller/supply/supply_controller = new()
|
||||
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
|
||||
|
||||
return
|
||||
|
||||
// Will attempt to purchase the specified order, returning TRUE on success, FALSE on failure
|
||||
/datum/controller/supply/proc/approve_order(var/datum/supply_order/O, var/mob/user)
|
||||
// Not enough points to purchase the crate
|
||||
if(supply_controller.points <= O.object.cost)
|
||||
return FALSE
|
||||
|
||||
// Based on the current model, there shouldn't be any entries in order_history, requestlist, or shoppinglist, that aren't matched in adm_order_history
|
||||
var/datum/supply_order/adm_order
|
||||
for(var/datum/supply_order/temp in adm_order_history)
|
||||
if(temp.ordernum == O.ordernum)
|
||||
adm_order = temp
|
||||
break
|
||||
|
||||
var/idname = "*None Provided*"
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
idname = H.get_authentification_name()
|
||||
else if(issilicon(user))
|
||||
idname = user.real_name
|
||||
|
||||
// Update order status
|
||||
O.status = SUP_ORDER_APPROVED
|
||||
O.approved_by = idname
|
||||
O.approved_at = stationdate2text() + " - " + stationtime2text()
|
||||
// Update admin-side mirror
|
||||
adm_order.status = SUP_ORDER_APPROVED
|
||||
adm_order.approved_by = idname
|
||||
adm_order.approved_at = stationdate2text() + " - " + stationtime2text()
|
||||
|
||||
// Deduct cost
|
||||
supply_controller.points -= O.object.cost
|
||||
return TRUE
|
||||
|
||||
// Will deny the specified order. Only useful if the order is currently requested, but available at any status
|
||||
/datum/controller/supply/proc/deny_order(var/datum/supply_order/O, var/mob/user)
|
||||
// Based on the current model, there shouldn't be any entries in order_history, requestlist, or shoppinglist, that aren't matched in adm_order_history
|
||||
var/datum/supply_order/adm_order
|
||||
for(var/datum/supply_order/temp in adm_order_history)
|
||||
if(temp.ordernum == O.ordernum)
|
||||
adm_order = temp
|
||||
break
|
||||
|
||||
var/idname = "*None Provided*"
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
idname = H.get_authentification_name()
|
||||
else if(issilicon(user))
|
||||
idname = user.real_name
|
||||
|
||||
// Update order status
|
||||
O.status = SUP_ORDER_DENIED
|
||||
O.approved_by = idname
|
||||
O.approved_at = stationdate2text() + " - " + stationtime2text()
|
||||
// Update admin-side mirror
|
||||
adm_order.status = SUP_ORDER_DENIED
|
||||
adm_order.approved_by = idname
|
||||
adm_order.approved_at = stationdate2text() + " - " + stationtime2text()
|
||||
return
|
||||
|
||||
// Will deny all requested orders
|
||||
/datum/controller/supply/proc/deny_all_pending(var/mob/user)
|
||||
for(var/datum/supply_order/O in order_history)
|
||||
if(O.status == SUP_ORDER_REQUESTED)
|
||||
deny_order(O, user)
|
||||
|
||||
// Will delete the specified order from the user-side list
|
||||
/datum/controller/supply/proc/delete_order(var/datum/supply_order/O, var/mob/user)
|
||||
// Making sure they know what they're doing
|
||||
if(alert(user, "Are you sure you want to delete this record? If it has been approved, cargo points will NOT be refunded!", "Delete Record","No","Yes") == "Yes")
|
||||
if(alert(user, "Are you really sure? There is no way to recover the order once deleted.", "Delete Record", "No", "Yes") == "Yes")
|
||||
log_admin("[key_name(user)] has deleted supply order \ref[O] [O] from the user-side order history.")
|
||||
supply_controller.order_history -= O
|
||||
return
|
||||
|
||||
// Will generate a new, requested order, for the given supply pack type
|
||||
/datum/controller/supply/proc/create_order(var/datum/supply_pack/S, var/mob/user, var/reason)
|
||||
var/datum/supply_order/new_order = new()
|
||||
var/datum/supply_order/adm_order = new() // Admin-recorded order must be a separate copy in memory, or user-made edits will corrupt it
|
||||
|
||||
var/idname = "*None Provided*"
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
idname = H.get_authentification_name()
|
||||
else if(issilicon(user))
|
||||
idname = user.real_name
|
||||
|
||||
new_order.ordernum = ++ordernum // Ordernum is used to track the order between the playerside list of orders and the adminside list
|
||||
new_order.index = new_order.ordernum // Index can be fabricated, or falsified. Ordernum is a permanent marker used to track the order
|
||||
new_order.object = S
|
||||
new_order.name = S.name
|
||||
new_order.cost = S.cost
|
||||
new_order.ordered_by = idname
|
||||
new_order.comment = reason
|
||||
new_order.ordered_at = stationdate2text() + " - " + stationtime2text()
|
||||
new_order.status = SUP_ORDER_REQUESTED
|
||||
|
||||
adm_order.ordernum = new_order.ordernum
|
||||
adm_order.index = new_order.index
|
||||
adm_order.object = new_order.object
|
||||
adm_order.name = new_order.name
|
||||
adm_order.cost = new_order.cost
|
||||
adm_order.ordered_by = new_order.ordered_by
|
||||
adm_order.comment = new_order.comment
|
||||
adm_order.ordered_at = new_order.ordered_at
|
||||
adm_order.status = new_order.status
|
||||
|
||||
order_history += new_order
|
||||
adm_order_history += adm_order
|
||||
|
||||
// Will delete the specified export receipt from the user-side list
|
||||
/datum/controller/supply/proc/delete_export(var/datum/exported_crate/E, var/mob/user)
|
||||
// Making sure they know what they're doing
|
||||
if(alert(user, "Are you sure you want to delete this record?", "Delete Record","No","Yes") == "Yes")
|
||||
if(alert(user, "Are you really sure? There is no way to recover the receipt once deleted.", "Delete Record", "No", "Yes") == "Yes")
|
||||
log_admin("[key_name(user)] has deleted export receipt \ref[E] [E] from the user-side export history.")
|
||||
supply_controller.exported_crates -= E
|
||||
return
|
||||
|
||||
// Will add an item entry to the specified export receipt on the user-side list
|
||||
/datum/controller/supply/proc/add_export_item(var/datum/exported_crate/E, var/mob/user)
|
||||
var/new_name = input(user, "Name", "Please enter the name of the item.") as null|text
|
||||
if(!new_name)
|
||||
return
|
||||
|
||||
var/new_quantity = input(user, "Name", "Please enter the quantity of the item.") as null|num
|
||||
if(!new_quantity)
|
||||
return
|
||||
|
||||
var/new_value = input(user, "Name", "Please enter the value of the item.") as null|num
|
||||
if(!new_value)
|
||||
return
|
||||
|
||||
E.contents[++E.contents.len] = list(
|
||||
"object" = new_name,
|
||||
"quantity" = new_quantity,
|
||||
"value" = new_value
|
||||
)
|
||||
|
||||
@@ -14,14 +14,13 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
|
||||
|
||||
var/datum/controller/exclude_these = new
|
||||
gvars_datum_in_built_vars = exclude_these.vars + list("gvars_datum_protected_varlist", "gvars_datum_in_built_vars", "gvars_datum_init_order")
|
||||
qdel(exclude_these)
|
||||
|
||||
log_world("[vars.len - gvars_datum_in_built_vars.len] global variables")
|
||||
|
||||
Initialize()
|
||||
Initialize(exclude_these)
|
||||
|
||||
/datum/controller/global_vars/Destroy(force)
|
||||
stack_trace("Some fucker qdel'd the global holder!")
|
||||
crash_with("There was an attempt to qdel the global vars holder!")
|
||||
if(!force)
|
||||
return QDEL_HINT_LETMELIVE
|
||||
|
||||
@@ -39,31 +38,22 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
|
||||
|
||||
stat("Globals:", statclick.update("Edit"))
|
||||
|
||||
/datum/controller/global_vars/can_vv_get(var_name)
|
||||
if(gvars_datum_protected_varlist[var_name])
|
||||
return FALSE
|
||||
return ..()
|
||||
/datum/controller/global_vars/VV_hidden()
|
||||
return ..() + gvars_datum_protected_varlist
|
||||
|
||||
/datum/controller/global_vars/vv_edit_var(var_name, var_value)
|
||||
if(gvars_datum_protected_varlist[var_name])
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/controller/global_vars/Initialize()
|
||||
/datum/controller/global_vars/Initialize(var/exclude_these)
|
||||
gvars_datum_init_order = list()
|
||||
gvars_datum_protected_varlist = list("gvars_datum_protected_varlist" = TRUE)
|
||||
var/list/global_procs = typesof(/datum/controller/global_vars/proc)
|
||||
var/expected_len = vars.len - gvars_datum_in_built_vars.len
|
||||
if(global_procs.len != expected_len)
|
||||
warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!")
|
||||
if(global_procs.len)
|
||||
var/list/expected_global_procs = vars - gvars_datum_in_built_vars
|
||||
for(var/I in global_procs)
|
||||
expected_global_procs -= replacetext("[I]", "InitGlobal", "")
|
||||
//log_world("Missing procs: [expected_global_procs.Join(", ")]")
|
||||
for(var/I in global_procs)
|
||||
gvars_datum_protected_varlist = list("gvars_datum_protected_varlist")
|
||||
|
||||
//See https://github.com/tgstation/tgstation/issues/26954
|
||||
for(var/I in typesof(/datum/controller/global_vars/proc))
|
||||
var/CLEANBOT_RETURNS = "[I]"
|
||||
pass(CLEANBOT_RETURNS)
|
||||
|
||||
for(var/I in (vars - gvars_datum_in_built_vars))
|
||||
var/start_tick = world.time
|
||||
call(src, I)()
|
||||
call(src, "InitGlobal[I]")()
|
||||
var/end_tick = world.time
|
||||
if(end_tick - start_tick)
|
||||
warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!")
|
||||
warning("Global [I] slept during initialization!")
|
||||
QDEL_NULL(exclude_these)
|
||||
@@ -6,7 +6,21 @@
|
||||
* Odds are, there is a reason
|
||||
*
|
||||
**/
|
||||
var/datum/controller/master/Master = new()
|
||||
|
||||
//This is the ABSOLUTE ONLY THING that should init globally like this
|
||||
GLOBAL_REAL(Master, /datum/controller/master) = new
|
||||
|
||||
//THIS IS THE INIT ORDER
|
||||
//Master -> SSPreInit -> GLOB -> world -> config -> SSInit -> Failsafe
|
||||
//GOT IT MEMORIZED?
|
||||
GLOBAL_VAR_INIT(MC_restart_clear, 0)
|
||||
GLOBAL_VAR_INIT(MC_restart_timeout, 0)
|
||||
GLOBAL_VAR_INIT(MC_restart_count, 0)
|
||||
|
||||
//current tick limit, assigned by the queue controller before running a subsystem.
|
||||
//used by check_tick as well so that the procs subsystems call can obey that SS's tick limits
|
||||
GLOBAL_VAR_INIT(CURRENT_TICKLIMIT, TICK_LIMIT_RUNNING)
|
||||
|
||||
|
||||
/datum/controller/master
|
||||
name = "Master"
|
||||
@@ -48,10 +62,6 @@ var/datum/controller/master/Master = new()
|
||||
var/static/restart_timeout = 0
|
||||
var/static/restart_count = 0
|
||||
|
||||
//current tick limit, assigned before running a subsystem.
|
||||
//used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
|
||||
var/static/current_ticklimit = TICK_LIMIT_RUNNING
|
||||
|
||||
/datum/controller/master/New()
|
||||
// Highlander-style: there can only be one! Kill off the old and replace it with the new.
|
||||
var/list/_subsystems = list()
|
||||
@@ -67,6 +77,9 @@ var/datum/controller/master/Master = new()
|
||||
_subsystems += new I
|
||||
Master = src
|
||||
|
||||
if(!GLOB)
|
||||
new /datum/controller/global_vars
|
||||
|
||||
/datum/controller/master/Destroy()
|
||||
..()
|
||||
// Tell qdel() to Del() this object.
|
||||
@@ -85,14 +98,14 @@ var/datum/controller/master/Master = new()
|
||||
// -1 if we encountered a runtime trying to recreate it
|
||||
/proc/Recreate_MC()
|
||||
. = -1 //so if we runtime, things know we failed
|
||||
if (world.time < Master.restart_timeout)
|
||||
if (world.time < GLOB.MC_restart_timeout)
|
||||
return 0
|
||||
if (world.time < Master.restart_clear)
|
||||
Master.restart_count *= 0.5
|
||||
if (world.time < GLOB.MC_restart_clear)
|
||||
GLOB.MC_restart_count *= 0.5
|
||||
|
||||
var/delay = 50 * ++Master.restart_count
|
||||
Master.restart_timeout = world.time + delay
|
||||
Master.restart_clear = world.time + (delay * 2)
|
||||
var/delay = 50 * ++GLOB.MC_restart_count
|
||||
GLOB.MC_restart_timeout = world.time + delay
|
||||
GLOB.MC_restart_clear = world.time + (delay * 2)
|
||||
Master.processing = FALSE //stop ticking this one
|
||||
try
|
||||
new/datum/controller/master()
|
||||
@@ -136,6 +149,7 @@ var/datum/controller/master/Master = new()
|
||||
if (istype(Master.subsystems))
|
||||
if(FireHim)
|
||||
Master.subsystems += new BadBoy.type //NEW_SS_GLOBAL will remove the old one
|
||||
|
||||
subsystems = Master.subsystems
|
||||
current_runlevel = Master.current_runlevel
|
||||
StartProcessing(10)
|
||||
@@ -162,13 +176,13 @@ var/datum/controller/master/Master = new()
|
||||
|
||||
var/start_timeofday = REALTIMEOFDAY
|
||||
// Initialize subsystems.
|
||||
current_ticklimit = config.tick_limit_mc_init
|
||||
GLOB.CURRENT_TICKLIMIT = config.tick_limit_mc_init
|
||||
for (var/datum/controller/subsystem/SS in subsystems)
|
||||
if (SS.flags & SS_NO_INIT)
|
||||
continue
|
||||
SS.Initialize(REALTIMEOFDAY)
|
||||
CHECK_TICK
|
||||
current_ticklimit = TICK_LIMIT_RUNNING
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
var/time = (REALTIMEOFDAY - start_timeofday) / 10
|
||||
|
||||
var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!"
|
||||
@@ -279,7 +293,7 @@ var/datum/controller/master/Master = new()
|
||||
tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((REALTIMEOFDAY - init_timeofday) - (world.time - init_time)) / world.tick_lag)))
|
||||
var/starting_tick_usage = TICK_USAGE
|
||||
if (processing <= 0)
|
||||
current_ticklimit = TICK_LIMIT_RUNNING
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
sleep(10)
|
||||
continue
|
||||
|
||||
@@ -288,7 +302,7 @@ var/datum/controller/master/Master = new()
|
||||
// (because sleeps are processed in the order received, longer sleeps are more likely to run first)
|
||||
if (starting_tick_usage > TICK_LIMIT_MC) //if there isn't enough time to bother doing anything this tick, sleep a bit.
|
||||
sleep_delta *= 2
|
||||
current_ticklimit = TICK_LIMIT_RUNNING * 0.5
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING * 0.5
|
||||
sleep(world.tick_lag * (processing * sleep_delta))
|
||||
continue
|
||||
|
||||
@@ -334,7 +348,7 @@ var/datum/controller/master/Master = new()
|
||||
if (!error_level)
|
||||
iteration++
|
||||
error_level++
|
||||
current_ticklimit = TICK_LIMIT_RUNNING
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
sleep(10)
|
||||
continue
|
||||
|
||||
@@ -346,7 +360,7 @@ var/datum/controller/master/Master = new()
|
||||
if (!error_level)
|
||||
iteration++
|
||||
error_level++
|
||||
current_ticklimit = TICK_LIMIT_RUNNING
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
sleep(10)
|
||||
continue
|
||||
error_level--
|
||||
@@ -357,9 +371,9 @@ var/datum/controller/master/Master = new()
|
||||
iteration++
|
||||
last_run = world.time
|
||||
src.sleep_delta = MC_AVERAGE_FAST(src.sleep_delta, sleep_delta)
|
||||
current_ticklimit = TICK_LIMIT_RUNNING
|
||||
GLOB.CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
if (processing * sleep_delta <= world.tick_lag)
|
||||
current_ticklimit -= (TICK_LIMIT_RUNNING * 0.25) //reserve the tail 1/4 of the next tick for the mc if we plan on running next tick
|
||||
GLOB.CURRENT_TICKLIMIT -= (TICK_LIMIT_RUNNING * 0.25) //reserve the tail 1/4 of the next tick for the mc if we plan on running next tick
|
||||
sleep(world.tick_lag * (processing * sleep_delta))
|
||||
|
||||
|
||||
@@ -451,7 +465,7 @@ var/datum/controller/master/Master = new()
|
||||
// Reduce tick allocation for subsystems that overran on their last tick.
|
||||
tick_precentage = max(tick_precentage*0.5, tick_precentage-queue_node.tick_overrun)
|
||||
|
||||
current_ticklimit = round(TICK_USAGE + tick_precentage)
|
||||
GLOB.CURRENT_TICKLIMIT = round(TICK_USAGE + tick_precentage)
|
||||
|
||||
if (!(queue_node_flags & SS_TICKER))
|
||||
ran_non_ticker = TRUE
|
||||
|
||||
96
code/controllers/subsystems/circuits.dm
Normal file
96
code/controllers/subsystems/circuits.dm
Normal file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// This is for custom circuits, mostly the initialization of global properties about them.
|
||||
// Might make this also process them in the future if its better to do that than using the obj ticker.
|
||||
//
|
||||
SUBSYSTEM_DEF(circuit)
|
||||
name = "Circuit"
|
||||
init_order = INIT_ORDER_CIRCUIT
|
||||
flags = SS_NO_FIRE
|
||||
var/list/all_components = list() // Associative list of [component_name]:[component_path] pairs
|
||||
var/list/cached_components = list() // Associative list of [component_path]:[component] pairs
|
||||
var/list/all_assemblies = list() // Associative list of [assembly_name]:[assembly_path] pairs
|
||||
var/list/cached_assemblies = list() // Associative list of [assembly_path]:[assembly] pairs
|
||||
var/list/all_circuits = list() // Associative list of [circuit_name]:[circuit_path] pairs
|
||||
var/list/circuit_fabricator_recipe_list = list() // Associative list of [category_name]:[list_of_circuit_paths] pairs
|
||||
// var/cost_multiplier = MINERAL_MATERIAL_AMOUNT / 10 // Each circuit cost unit is 200cm3
|
||||
|
||||
/datum/controller/subsystem/circuit/Recover()
|
||||
flags |= SS_NO_INIT // Make extra sure we don't initialize twice.
|
||||
|
||||
/datum/controller/subsystem/circuit/Initialize(timeofday)
|
||||
circuits_init()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/circuit/proc/circuits_init()
|
||||
//Cached lists for free performance
|
||||
for(var/path in typesof(/obj/item/integrated_circuit))
|
||||
var/obj/item/integrated_circuit/IC = path
|
||||
var/name = initial(IC.name)
|
||||
all_components[name] = path // Populating the component lists
|
||||
cached_components[IC] = new path
|
||||
|
||||
if(!(initial(IC.spawn_flags) & (IC_SPAWN_DEFAULT | IC_SPAWN_RESEARCH)))
|
||||
continue
|
||||
|
||||
var/category = initial(IC.category_text)
|
||||
if(!circuit_fabricator_recipe_list[category])
|
||||
circuit_fabricator_recipe_list[category] = list()
|
||||
var/list/category_list = circuit_fabricator_recipe_list[category]
|
||||
category_list += IC // Populating the fabricator categories
|
||||
|
||||
for(var/path in typesof(/obj/item/device/electronic_assembly))
|
||||
var/obj/item/device/electronic_assembly/A = path
|
||||
var/name = initial(A.name)
|
||||
all_assemblies[name] = path
|
||||
cached_assemblies[A] = new path
|
||||
|
||||
|
||||
circuit_fabricator_recipe_list["Assemblies"] = list(
|
||||
/obj/item/device/electronic_assembly/default,
|
||||
/obj/item/device/electronic_assembly/calc,
|
||||
/obj/item/device/electronic_assembly/clam,
|
||||
/obj/item/device/electronic_assembly/simple,
|
||||
/obj/item/device/electronic_assembly/hook,
|
||||
/obj/item/device/electronic_assembly/pda,
|
||||
/obj/item/device/electronic_assembly/tiny/default,
|
||||
/obj/item/device/electronic_assembly/tiny/cylinder,
|
||||
/obj/item/device/electronic_assembly/tiny/scanner,
|
||||
/obj/item/device/electronic_assembly/tiny/hook,
|
||||
/obj/item/device/electronic_assembly/tiny/box,
|
||||
/obj/item/device/electronic_assembly/medium/default,
|
||||
/obj/item/device/electronic_assembly/medium/box,
|
||||
/obj/item/device/electronic_assembly/medium/clam,
|
||||
/obj/item/device/electronic_assembly/medium/medical,
|
||||
/obj/item/device/electronic_assembly/medium/gun,
|
||||
/obj/item/device/electronic_assembly/medium/radio,
|
||||
/obj/item/device/electronic_assembly/large/default,
|
||||
/obj/item/device/electronic_assembly/large/scope,
|
||||
/obj/item/device/electronic_assembly/large/terminal,
|
||||
/obj/item/device/electronic_assembly/large/arm,
|
||||
/obj/item/device/electronic_assembly/large/tall,
|
||||
/obj/item/device/electronic_assembly/large/industrial,
|
||||
/obj/item/device/electronic_assembly/drone/default,
|
||||
/obj/item/device/electronic_assembly/drone/arms,
|
||||
/obj/item/device/electronic_assembly/drone/secbot,
|
||||
/obj/item/device/electronic_assembly/drone/medbot,
|
||||
/obj/item/device/electronic_assembly/drone/genbot,
|
||||
/obj/item/device/electronic_assembly/drone/android,
|
||||
/obj/item/device/electronic_assembly/wallmount/tiny,
|
||||
/obj/item/device/electronic_assembly/wallmount/light,
|
||||
/obj/item/device/electronic_assembly/wallmount,
|
||||
/obj/item/device/electronic_assembly/wallmount/heavy,
|
||||
/obj/item/weapon/implant/integrated_circuit,
|
||||
/obj/item/clothing/under/circuitry,
|
||||
/obj/item/clothing/gloves/circuitry,
|
||||
/obj/item/clothing/glasses/circuitry,
|
||||
/obj/item/clothing/shoes/circuitry,
|
||||
/obj/item/clothing/head/circuitry,
|
||||
/obj/item/clothing/ears/circuitry,
|
||||
/obj/item/clothing/suit/circuitry
|
||||
)
|
||||
|
||||
circuit_fabricator_recipe_list["Tools"] = list(
|
||||
/obj/item/device/integrated_electronics/wirer,
|
||||
/obj/item/device/integrated_electronics/debugger,
|
||||
/obj/item/device/integrated_electronics/detailer
|
||||
)
|
||||
@@ -57,6 +57,7 @@ SUBSYSTEM_DEF(planets)
|
||||
else
|
||||
P.planet_walls -= T
|
||||
T.vis_contents -= P.weather_holder.visuals
|
||||
T.vis_contents -= P.weather_holder.special_visuals
|
||||
|
||||
/datum/controller/subsystem/planets/proc/allocateTurfs(var/initial = FALSE)
|
||||
var/list/currentlist = new_outdoor_turfs
|
||||
@@ -67,6 +68,7 @@ SUBSYSTEM_DEF(planets)
|
||||
var/datum/planet/P = z_to_planet[OT.z]
|
||||
P.planet_floors |= OT
|
||||
OT.vis_contents |= P.weather_holder.visuals
|
||||
OT.vis_contents |= P.weather_holder.special_visuals
|
||||
if(!initial && MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
@@ -85,6 +87,7 @@ SUBSYSTEM_DEF(planets)
|
||||
var/datum/planet/P = z_to_planet[T.z]
|
||||
P.planet_floors -= T
|
||||
T.vis_contents -= P.weather_holder.visuals
|
||||
T.vis_contents -= P.weather_holder.special_visuals
|
||||
|
||||
|
||||
/datum/controller/subsystem/planets/fire(resumed = 0)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
debug_variables(alarm_manager)
|
||||
feedback_add_details("admin_verb", "DAlarm")
|
||||
if("Nano")
|
||||
debug_variables(nanomanager)
|
||||
debug_variables(GLOB.nanomanager)
|
||||
feedback_add_details("admin_verb", "DNano")
|
||||
if("Chemistry")
|
||||
debug_variables(chemistryProcess)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/category_item/autolathe/tools/crowbar
|
||||
name = "crowbar"
|
||||
path =/obj/item/weapon/crowbar
|
||||
path =/obj/item/weapon/tool/crowbar
|
||||
|
||||
/datum/category_item/autolathe/tools/multitool
|
||||
name = "multitool"
|
||||
@@ -21,15 +21,15 @@
|
||||
|
||||
/datum/category_item/autolathe/tools/screwdriver
|
||||
name = "screwdriver"
|
||||
path =/obj/item/weapon/screwdriver
|
||||
path =/obj/item/weapon/tool/screwdriver
|
||||
|
||||
/datum/category_item/autolathe/tools/wirecutters
|
||||
name = "wirecutters"
|
||||
path =/obj/item/weapon/wirecutters
|
||||
path =/obj/item/weapon/tool/wirecutters
|
||||
|
||||
/datum/category_item/autolathe/tools/wrench
|
||||
name = "wrench"
|
||||
path =/obj/item/weapon/wrench
|
||||
path =/obj/item/weapon/tool/wrench
|
||||
|
||||
/datum/category_item/autolathe/tools/hatchet
|
||||
name = "hatchet"
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
/datum/proc/Destroy(force=FALSE)
|
||||
weakref = null // Clear this reference to ensure it's kept for as brief duration as possible.
|
||||
tag = null
|
||||
nanomanager.close_uis(src)
|
||||
GLOB.nanomanager.close_uis(src)
|
||||
return QDEL_HINT_QUEUE
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
#define FORWARD -1
|
||||
#define BACKWARD 1
|
||||
|
||||
|
||||
// As of August 4th, 2018, these datums are only used in Mech construction.
|
||||
/datum/construction
|
||||
var/list/steps
|
||||
var/atom/holder
|
||||
var/result
|
||||
var/list/steps_desc
|
||||
|
||||
New(atom)
|
||||
/datum/construction/New(atom)
|
||||
..()
|
||||
holder = atom
|
||||
if(!holder) //don't want this without a holder
|
||||
@@ -16,7 +18,7 @@
|
||||
set_desc(steps.len)
|
||||
return
|
||||
|
||||
proc/next_step()
|
||||
/datum/construction/proc/next_step()
|
||||
steps.len--
|
||||
if(!steps.len)
|
||||
spawn_result()
|
||||
@@ -24,31 +26,45 @@
|
||||
set_desc(steps.len)
|
||||
return
|
||||
|
||||
proc/action(atom/used_atom,mob/user as mob)
|
||||
/datum/construction/proc/action(var/obj/item/I,mob/user as mob)
|
||||
return
|
||||
|
||||
proc/check_step(atom/used_atom,mob/user as mob) //check last step only
|
||||
var/valid_step = is_right_key(used_atom)
|
||||
/datum/construction/proc/check_step(var/obj/item/I,mob/user as mob) //check last step only
|
||||
var/valid_step = is_right_key(I)
|
||||
if(valid_step)
|
||||
if(custom_action(valid_step, used_atom, user))
|
||||
if(custom_action(valid_step, I, user))
|
||||
next_step()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type.
|
||||
/datum/construction/proc/is_right_key(var/obj/item/I) // returns current step num if I is of the right type.
|
||||
var/list/L = steps[steps.len]
|
||||
if(istype(used_atom, L["key"]))
|
||||
switch(L["key"])
|
||||
if(IS_SCREWDRIVER)
|
||||
if(I.is_screwdriver())
|
||||
return steps.len
|
||||
if(IS_CROWBAR)
|
||||
if(I.is_crowbar())
|
||||
return steps.len
|
||||
if(IS_WIRECUTTER)
|
||||
if(I.is_wirecutter())
|
||||
return steps.len
|
||||
if(IS_WRENCH)
|
||||
if(I.is_wrench())
|
||||
return steps.len
|
||||
|
||||
if(istype(I, L["key"]))
|
||||
return steps.len
|
||||
return 0
|
||||
|
||||
proc/custom_action(step, used_atom, user)
|
||||
/datum/construction/proc/custom_action(step, I, user)
|
||||
return 1
|
||||
|
||||
proc/check_all_steps(atom/used_atom,mob/user as mob) //check all steps, remove matching one.
|
||||
/datum/construction/proc/check_all_steps(var/obj/item/I,mob/user as mob) //check all steps, remove matching one.
|
||||
for(var/i=1;i<=steps.len;i++)
|
||||
var/list/L = steps[i];
|
||||
if(istype(used_atom, L["key"]))
|
||||
if(custom_action(i, used_atom, user))
|
||||
if(istype(I, L["key"]))
|
||||
if(custom_action(i, I, user))
|
||||
steps[i]=null;//stupid byond list from list removal...
|
||||
listclearnulls(steps);
|
||||
if(!steps.len)
|
||||
@@ -57,27 +73,29 @@
|
||||
return 0
|
||||
|
||||
|
||||
proc/spawn_result()
|
||||
/datum/construction/proc/spawn_result()
|
||||
if(result)
|
||||
new result(get_turf(holder))
|
||||
spawn()
|
||||
qdel(holder)
|
||||
return
|
||||
|
||||
proc/set_desc(index as num)
|
||||
/datum/construction/proc/set_desc(index as num)
|
||||
var/list/step = steps[index]
|
||||
holder.desc = step["desc"]
|
||||
return
|
||||
|
||||
|
||||
// Reversible
|
||||
/datum/construction/reversible
|
||||
var/index
|
||||
|
||||
New(atom)
|
||||
/datum/construction/reversible/New(atom)
|
||||
..()
|
||||
index = steps.len
|
||||
return
|
||||
|
||||
proc/update_index(diff as num)
|
||||
/datum/construction/reversible/proc/update_index(diff as num)
|
||||
index+=diff
|
||||
if(index==0)
|
||||
spawn_result()
|
||||
@@ -85,21 +103,50 @@
|
||||
set_desc(index)
|
||||
return
|
||||
|
||||
is_right_key(atom/used_atom) // returns index step
|
||||
/datum/construction/reversible/is_right_key(var/obj/item/I) // returns index step
|
||||
var/list/L = steps[index]
|
||||
if(istype(used_atom, L["key"]))
|
||||
|
||||
switch(L["key"])
|
||||
if(IS_SCREWDRIVER)
|
||||
if(I.is_screwdriver())
|
||||
return FORWARD
|
||||
if(IS_CROWBAR)
|
||||
if(I.is_crowbar())
|
||||
return FORWARD
|
||||
if(IS_WIRECUTTER)
|
||||
if(I.is_wirecutter())
|
||||
return FORWARD
|
||||
if(IS_WRENCH)
|
||||
if(I.is_wrench())
|
||||
return FORWARD
|
||||
|
||||
switch(L["backkey"])
|
||||
if(IS_SCREWDRIVER)
|
||||
if(I.is_screwdriver())
|
||||
return BACKWARD
|
||||
if(IS_CROWBAR)
|
||||
if(I.is_crowbar())
|
||||
return BACKWARD
|
||||
if(IS_WIRECUTTER)
|
||||
if(I.is_wirecutter())
|
||||
return BACKWARD
|
||||
if(IS_WRENCH)
|
||||
if(I.is_wrench())
|
||||
return BACKWARD
|
||||
|
||||
if(istype(I, L["key"]))
|
||||
return FORWARD //to the first step -> forward
|
||||
else if(L["backkey"] && istype(used_atom, L["backkey"]))
|
||||
else if(L["backkey"] && istype(I, L["backkey"]))
|
||||
return BACKWARD //to the last step -> backwards
|
||||
return 0
|
||||
|
||||
check_step(atom/used_atom,mob/user as mob)
|
||||
var/diff = is_right_key(used_atom)
|
||||
/datum/construction/reversible/check_step(var/obj/item/I,mob/user as mob)
|
||||
var/diff = is_right_key(I)
|
||||
if(diff)
|
||||
if(custom_action(index, diff, used_atom, user))
|
||||
if(custom_action(index, diff, I, user))
|
||||
update_index(diff)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
custom_action(index, diff, used_atom, user)
|
||||
/datum/construction/reversible/custom_action(index, diff, I, user)
|
||||
return 1
|
||||
@@ -85,7 +85,7 @@
|
||||
current.verbs -= /datum/changeling/proc/EvolutionMenu
|
||||
current.mind = null
|
||||
|
||||
nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user
|
||||
GLOB.nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user
|
||||
if(new_character.mind) //remove any mind currently in our new body's mind variable
|
||||
new_character.mind.current = null
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// /old_dir: The dir before the change.
|
||||
// /new_dir: The dir after the change.
|
||||
|
||||
var/decl/observ/dir_set/dir_set_event = new()
|
||||
GLOBAL_DATUM_INIT(dir_set_event, /decl/observ/dir_set, new)
|
||||
|
||||
/decl/observ/dir_set
|
||||
name = "Direction Set"
|
||||
@@ -27,9 +27,9 @@ var/decl/observ/dir_set/dir_set_event = new()
|
||||
|
||||
/atom/movable/Entered(var/atom/movable/am, atom/old_loc)
|
||||
. = ..()
|
||||
if(. != CANCEL_MOVE_EVENT && dir_set_event.has_listeners(am))
|
||||
dir_set_event.register(src, am, /atom/proc/recursive_dir_set)
|
||||
if(. != CANCEL_MOVE_EVENT && GLOB.dir_set_event.has_listeners(am))
|
||||
GLOB.dir_set_event.register(src, am, /atom/proc/recursive_dir_set)
|
||||
|
||||
/atom/movable/Exited(var/atom/movable/am, atom/old_loc)
|
||||
. = ..()
|
||||
dir_set_event.unregister(src, am, /atom/proc/recursive_dir_set)
|
||||
GLOB.dir_set_event.unregister(src, am, /atom/proc/recursive_dir_set)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// /mob/equipper: The mob that equipped the item.
|
||||
// /obj/item/item: The equipped item.
|
||||
// slot: The slot equipped to.
|
||||
var/decl/observ/mob_equipped/mob_equipped_event = new()
|
||||
GLOBAL_DATUM_INIT(mob_equipped_event, /decl/observ/mob_equipped, new)
|
||||
|
||||
/decl/observ/mob_equipped
|
||||
name = "Mob Equipped"
|
||||
@@ -22,7 +22,7 @@ var/decl/observ/mob_equipped/mob_equipped_event = new()
|
||||
// /obj/item/item: The equipped item.
|
||||
// /mob/equipper: The mob that equipped the item.
|
||||
// slot: The slot equipped to.
|
||||
var/decl/observ/item_equipped/item_equipped_event = new()
|
||||
GLOBAL_DATUM_INIT(item_equipped_event, /decl/observ/item_equipped, new)
|
||||
|
||||
/decl/observ/item_equipped
|
||||
name = "Item Equipped"
|
||||
@@ -34,5 +34,5 @@ var/decl/observ/item_equipped/item_equipped_event = new()
|
||||
|
||||
/obj/item/equipped(var/mob/user, var/slot)
|
||||
. = ..()
|
||||
mob_equipped_event.raise_event(user, src, slot)
|
||||
item_equipped_event.raise_event(src, user, slot)
|
||||
GLOB.mob_equipped_event.raise_event(user, src, slot)
|
||||
GLOB.item_equipped_event.raise_event(src, user, slot)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/atom/movable/proc/recursive_move(var/atom/movable/am, var/old_loc, var/new_loc)
|
||||
moved_event.raise_event(src, old_loc, new_loc)
|
||||
GLOB.moved_event.raise_event(src, old_loc, new_loc)
|
||||
|
||||
/atom/movable/proc/move_to_destination(var/atom/movable/am, var/old_loc, var/new_loc)
|
||||
var/turf/T = get_turf(new_loc)
|
||||
@@ -10,9 +10,9 @@
|
||||
set_dir(new_dir)
|
||||
|
||||
/proc/register_all_movement(var/event_source, var/listener)
|
||||
moved_event.register(event_source, listener, /atom/movable/proc/recursive_move)
|
||||
dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set)
|
||||
GLOB.moved_event.register(event_source, listener, /atom/movable/proc/recursive_move)
|
||||
GLOB.dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set)
|
||||
|
||||
/proc/unregister_all_movement(var/event_source, var/listener)
|
||||
moved_event.unregister(event_source, listener, /atom/movable/proc/recursive_move)
|
||||
dir_set_event.unregister(event_source, listener, /atom/proc/recursive_dir_set)
|
||||
GLOB.moved_event.unregister(event_source, listener, /atom/movable/proc/recursive_move)
|
||||
GLOB.dir_set_event.unregister(event_source, listener, /atom/proc/recursive_dir_set)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// Arguments that the called proc should expect:
|
||||
// /mob/joiner: The mob that has logged in
|
||||
|
||||
var/decl/observ/logged_in/logged_in_event = new()
|
||||
GLOBAL_DATUM_INIT(logged_in_event, /decl/observ/logged_in, new)
|
||||
|
||||
/decl/observ/logged_in
|
||||
name = "Logged In"
|
||||
@@ -18,4 +18,4 @@ var/decl/observ/logged_in/logged_in_event = new()
|
||||
|
||||
/mob/Login()
|
||||
..()
|
||||
logged_in_event.raise_event(src)
|
||||
GLOB.logged_in_event.raise_event(src)
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
// /atom/old_loc: The loc before the move.
|
||||
// /atom/new_loc: The loc after the move.
|
||||
|
||||
var/decl/observ/moved/moved_event = new()
|
||||
|
||||
GLOBAL_DATUM_INIT(moved_event, /decl/observ/moved, new)
|
||||
|
||||
/decl/observ/moved
|
||||
name = "Moved"
|
||||
@@ -27,26 +28,26 @@ var/decl/observ/moved/moved_event = new()
|
||||
|
||||
/atom/Entered(var/atom/movable/am, var/atom/old_loc)
|
||||
. = ..()
|
||||
moved_event.raise_event(am, old_loc, am.loc)
|
||||
GLOB.moved_event.raise_event(am, old_loc, am.loc)
|
||||
|
||||
/atom/movable/Entered(var/atom/movable/am, atom/old_loc)
|
||||
. = ..()
|
||||
if(moved_event.has_listeners(am))
|
||||
moved_event.register(src, am, /atom/movable/proc/recursive_move)
|
||||
if(GLOB.moved_event.has_listeners(am))
|
||||
GLOB.moved_event.register(src, am, /atom/movable/proc/recursive_move)
|
||||
|
||||
/atom/movable/Exited(var/atom/movable/am, atom/old_loc)
|
||||
. = ..()
|
||||
moved_event.unregister(src, am, /atom/movable/proc/recursive_move)
|
||||
GLOB.moved_event.unregister(src, am, /atom/movable/proc/recursive_move)
|
||||
|
||||
// Entered() typically lifts the moved event, but in the case of null-space we'll have to handle it.
|
||||
/atom/movable/Move()
|
||||
var/old_loc = loc
|
||||
. = ..()
|
||||
if(. && !loc)
|
||||
moved_event.raise_event(src, old_loc, null)
|
||||
GLOB.moved_event.raise_event(src, old_loc, null)
|
||||
|
||||
/atom/movable/forceMove(atom/destination)
|
||||
var/old_loc = loc
|
||||
. = ..()
|
||||
if(. && !loc)
|
||||
moved_event.raise_event(src, old_loc, null)
|
||||
GLOB.moved_event.raise_event(src, old_loc, null)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// /mob/equipped: The mob that unequipped/dropped the item.
|
||||
// /obj/item/item: The unequipped item.
|
||||
|
||||
var/decl/observ/mob_unequipped/mob_unequipped_event = new()
|
||||
GLOBAL_DATUM_INIT(mob_unequipped_event, /decl/observ/mob_unequipped, new)
|
||||
|
||||
/decl/observ/mob_unequipped
|
||||
name = "Mob Unequipped"
|
||||
@@ -22,7 +22,7 @@ var/decl/observ/mob_unequipped/mob_unequipped_event = new()
|
||||
// /obj/item/item: The unequipped item.
|
||||
// /mob/equipped: The mob that unequipped/dropped the item.
|
||||
|
||||
var/decl/observ/item_unequipped/item_unequipped_event = new()
|
||||
GLOBAL_DATUM_INIT(item_unequipped_event, /decl/observ/item_unequipped, new)
|
||||
|
||||
/decl/observ/item_unequipped
|
||||
name = "Item Unequipped"
|
||||
@@ -34,5 +34,5 @@ var/decl/observ/item_unequipped/item_unequipped_event = new()
|
||||
|
||||
/obj/item/dropped(var/mob/user)
|
||||
..()
|
||||
mob_unequipped_event.raise_event(user, src)
|
||||
item_unequipped_event.raise_event(src, user)
|
||||
GLOB.mob_unequipped_event.raise_event(user, src)
|
||||
GLOB.item_unequipped_event.raise_event(src, user)
|
||||
|
||||
@@ -25,5 +25,5 @@
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/eng
|
||||
id_type = /obj/item/weapon/card/id/cargo/mining
|
||||
pda_type = /obj/item/device/pda/shaftminer
|
||||
backpack_contents = list(/obj/item/weapon/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1)
|
||||
backpack_contents = list(/obj/item/weapon/tool/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1)
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/datum/progressbar/Destroy()
|
||||
if (client)
|
||||
client.images -= bar
|
||||
qdel_null(bar)
|
||||
QDEL_NULL(bar)
|
||||
user = null
|
||||
client = null
|
||||
return ..()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/datum/recipe
|
||||
var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
|
||||
var/list/items // example: = list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
|
||||
var/list/items // example: = list(/obj/item/weapon/tool/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
|
||||
var/list/fruit // example: = list("fruit" = 3)
|
||||
var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
|
||||
var/time = 100 // 1/10 part of second
|
||||
|
||||
18
code/datums/repositories/ammomaterial.dm
Normal file
18
code/datums/repositories/ammomaterial.dm
Normal file
@@ -0,0 +1,18 @@
|
||||
var/global/datum/repository/ammomaterial/ammo_repository = new()
|
||||
|
||||
/datum/repository/ammomaterial
|
||||
var/list/ammotypes
|
||||
|
||||
/datum/repository/ammomaterial/New()
|
||||
ammotypes = list()
|
||||
..()
|
||||
|
||||
/datum/repository/ammomaterial/proc/get_materials_from_object(obj/item/ammo_casing/I)
|
||||
|
||||
if(!(I in ammotypes))
|
||||
ammotypes += I
|
||||
var/obj/item/ammo_casing/temp = new I
|
||||
ammotypes[I] = temp.matter
|
||||
qdel(temp)
|
||||
|
||||
return ammotypes[I]
|
||||
@@ -122,7 +122,7 @@ var/global/repository/radiation/radiation_repository = new()
|
||||
|
||||
/turf/simulated/wall/calc_rad_resistance()
|
||||
radiation_repository.resistance_cache[src] = (length(contents) + 1)
|
||||
cached_rad_resistance = (density ? material.weight : 0)
|
||||
cached_rad_resistance = (density ? material.weight + material.radiation_resistance : 0)
|
||||
|
||||
/obj
|
||||
var/rad_resistance = 0 // Allow overriding rad resistance
|
||||
|
||||
@@ -4,45 +4,45 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/atmos
|
||||
/datum/supply_pack/atmos
|
||||
group = "Atmospherics"
|
||||
|
||||
/datum/supply_packs/atmos/inflatable
|
||||
/datum/supply_pack/atmos/inflatable
|
||||
name = "Inflatable barriers"
|
||||
contains = list(/obj/item/weapon/storage/briefcase/inflatable = 3)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "Inflatable Barrier Crate"
|
||||
|
||||
/datum/supply_packs/atmos/canister_empty
|
||||
/datum/supply_pack/atmos/canister_empty
|
||||
name = "Empty gas canister"
|
||||
cost = 7
|
||||
containername = "Empty gas canister crate"
|
||||
containertype = /obj/structure/largecrate
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister)
|
||||
|
||||
/datum/supply_packs/atmos/canister_air
|
||||
/datum/supply_pack/atmos/canister_air
|
||||
name = "Air canister"
|
||||
cost = 10
|
||||
containername = "Air canister crate"
|
||||
containertype = /obj/structure/largecrate
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/air)
|
||||
|
||||
/datum/supply_packs/atmos/canister_oxygen
|
||||
/datum/supply_pack/atmos/canister_oxygen
|
||||
name = "Oxygen canister"
|
||||
cost = 15
|
||||
containername = "Oxygen canister crate"
|
||||
containertype = /obj/structure/largecrate
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/oxygen)
|
||||
|
||||
/datum/supply_packs/atmos/canister_nitrogen
|
||||
/datum/supply_pack/atmos/canister_nitrogen
|
||||
name = "Nitrogen canister"
|
||||
cost = 10
|
||||
containername = "Nitrogen canister crate"
|
||||
containertype = /obj/structure/largecrate
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen)
|
||||
|
||||
/datum/supply_packs/atmos/canister_phoron
|
||||
/datum/supply_pack/atmos/canister_phoron
|
||||
name = "Phoron gas canister"
|
||||
cost = 60
|
||||
containername = "Phoron gas canister crate"
|
||||
@@ -50,7 +50,7 @@
|
||||
access = access_atmospherics
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/phoron)
|
||||
|
||||
/datum/supply_packs/atmos/canister_sleeping_agent
|
||||
/datum/supply_pack/atmos/canister_sleeping_agent
|
||||
name = "N2O gas canister"
|
||||
cost = 15
|
||||
containername = "N2O gas canister crate"
|
||||
@@ -58,7 +58,7 @@
|
||||
access = access_atmospherics
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/sleeping_agent)
|
||||
|
||||
/datum/supply_packs/atmos/canister_carbon_dioxide
|
||||
/datum/supply_pack/atmos/canister_carbon_dioxide
|
||||
name = "Carbon dioxide gas canister"
|
||||
cost = 15
|
||||
containername = "CO2 canister crate"
|
||||
@@ -66,7 +66,7 @@
|
||||
access = access_atmospherics
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide)
|
||||
|
||||
/datum/supply_packs/atmos/air_dispenser
|
||||
/datum/supply_pack/atmos/air_dispenser
|
||||
contains = list(/obj/machinery/pipedispenser/orderable)
|
||||
name = "Pipe Dispenser"
|
||||
cost = 25
|
||||
@@ -74,7 +74,7 @@
|
||||
containername = "Pipe Dispenser Crate"
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/atmos/disposals_dispenser
|
||||
/datum/supply_pack/atmos/disposals_dispenser
|
||||
contains = list(/obj/machinery/pipedispenser/disposal/orderable)
|
||||
name = "Disposals Pipe Dispenser"
|
||||
cost = 25
|
||||
@@ -82,7 +82,7 @@
|
||||
containername = "Disposal Dispenser Crate"
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/atmos/internals
|
||||
/datum/supply_pack/atmos/internals
|
||||
name = "Internals crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/mask/gas = 3,
|
||||
@@ -92,7 +92,7 @@
|
||||
containertype = /obj/structure/closet/crate/internals
|
||||
containername = "Internals crate"
|
||||
|
||||
/datum/supply_packs/atmos/evacuation
|
||||
/datum/supply_pack/atmos/evacuation
|
||||
name = "Emergency equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/toolbox/emergency = 2,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/randomised/contraband
|
||||
/datum/supply_pack/randomised/contraband
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/seeds/bloodtomatoseed,
|
||||
@@ -20,7 +20,7 @@
|
||||
contraband = 1
|
||||
group = "Supplies"
|
||||
|
||||
/datum/supply_packs/security/specialops
|
||||
/datum/supply_pack/security/specialops
|
||||
name = "Special Ops supplies"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/emps,
|
||||
@@ -32,7 +32,7 @@
|
||||
containername = "Special Ops crate"
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/supply/moghes
|
||||
/datum/supply_pack/supply/moghes
|
||||
name = "Moghes imports"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew = 2,
|
||||
@@ -43,7 +43,7 @@
|
||||
containername = "Moghes imports crate"
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/munitions/bolt_rifles_militia
|
||||
/datum/supply_pack/munitions/bolt_rifles_militia
|
||||
name = "Weapon - Surplus militia rifles"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 3,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/supply/stolen
|
||||
/datum/supply_pack/supply/stolen
|
||||
name = "Stolen supply crate"
|
||||
contains = list(/obj/item/stolenpackage = 1)
|
||||
cost = 1000
|
||||
@@ -6,14 +6,14 @@
|
||||
containername = "Stolen crate"
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/supply/wolfgirl
|
||||
/datum/supply_pack/supply/wolfgirl
|
||||
name = "Wolfgirl Crate"
|
||||
cost = 200 //I mean, it's a whole wolfgirl
|
||||
containertype = /obj/structure/largecrate/animal/wolfgirl
|
||||
containername = "Wolfgirl crate"
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/supply/catgirl
|
||||
/datum/supply_pack/supply/catgirl
|
||||
name = "Catgirl Crate"
|
||||
cost = 200 //I mean, it's a whole catgirl
|
||||
containertype = /obj/structure/largecrate/animal/catgirl
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/costumes
|
||||
/datum/supply_pack/costumes
|
||||
group = "Costumes"
|
||||
|
||||
/datum/supply_packs/randomised/costumes
|
||||
/datum/supply_pack/randomised/costumes
|
||||
group = "Costumes"
|
||||
|
||||
/datum/supply_packs/costumes/wizard
|
||||
/datum/supply_pack/costumes/wizard
|
||||
name = "Wizard costume"
|
||||
contains = list(
|
||||
/obj/item/weapon/staff,
|
||||
@@ -22,7 +22,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wizard costume crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/hats
|
||||
/datum/supply_pack/randomised/costumes/hats
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
/obj/item/clothing/head/collectable/chef,
|
||||
@@ -51,7 +51,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Collectable hats crate! Brought to you by Bass.inc!"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/costume
|
||||
/datum/supply_pack/randomised/costumes/costume
|
||||
num_contained = 3
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/pirate,
|
||||
@@ -87,7 +87,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Actor Costumes"
|
||||
|
||||
/datum/supply_packs/costumes/formal_wear
|
||||
/datum/supply_pack/costumes/formal_wear
|
||||
contains = list(
|
||||
/obj/item/clothing/head/bowler,
|
||||
/obj/item/clothing/head/that,
|
||||
@@ -109,7 +109,7 @@
|
||||
containertype = /obj/structure/closet
|
||||
containername = "Formalwear for the best occasions."
|
||||
|
||||
datum/supply_packs/costumes/witch
|
||||
datum/supply_pack/costumes/witch
|
||||
name = "Witch costume"
|
||||
containername = "Witch costume"
|
||||
containertype = /obj/structure/closet
|
||||
@@ -121,7 +121,7 @@ datum/supply_packs/costumes/witch
|
||||
/obj/item/weapon/staff/broom
|
||||
)
|
||||
|
||||
/datum/supply_packs/randomised/costumes/costume_hats
|
||||
/datum/supply_pack/randomised/costumes/costume_hats
|
||||
name = "Costume hats"
|
||||
containername = "Actor hats crate"
|
||||
containertype = /obj/structure/closet/crate
|
||||
@@ -146,7 +146,7 @@ datum/supply_packs/costumes/witch
|
||||
/obj/item/clothing/head/ushanka
|
||||
)
|
||||
|
||||
/datum/supply_packs/randomised/costumes/dresses
|
||||
/datum/supply_pack/randomised/costumes/dresses
|
||||
name = "Womens formal dress locker"
|
||||
containername = "Pretty dress locker"
|
||||
containertype = /obj/structure/closet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/costumes/xenowear_vr
|
||||
/datum/supply_pack/costumes/xenowear_vr
|
||||
name = "Xenowear crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/shoes/footwraps,
|
||||
@@ -19,7 +19,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Xenowear crate"
|
||||
|
||||
/datum/supply_packs/costumes/tesh_smocks_vr
|
||||
/datum/supply_pack/costumes/tesh_smocks_vr
|
||||
name = "Teshari smocks"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/seromi/smock,
|
||||
@@ -32,93 +32,93 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Teshari smocks crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/tesh_coats_vr
|
||||
/datum/supply_pack/randomised/costumes/tesh_coats_vr
|
||||
name = "Teshari undercoats"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
/obj/item/clothing/under/seromi/undercoat/blue_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/brown_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/green_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/lightgrey_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/orange,
|
||||
/obj/item/clothing/under/seromi/undercoat/orange_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/pink_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/purple_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/rainbow,
|
||||
/obj/item/clothing/under/seromi/undercoat/red_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/white_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/yellow_grey
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/blue_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/brown_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/green_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/lightgrey_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/orange,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/orange_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/pink_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/purple_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/rainbow,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/red_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/white_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/yellow_grey
|
||||
)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Teshari undercoats crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/tesh_coats_b_vr
|
||||
/datum/supply_pack/randomised/costumes/tesh_coats_b_vr
|
||||
name = "Teshari undercoats (black)"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
/obj/item/clothing/under/seromi/undercoat/black,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_blue,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_brown,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_green,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_lightgrey,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_midgrey,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_orange,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_pink,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_purple,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_red,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_white,
|
||||
/obj/item/clothing/under/seromi/undercoat/black_yellow
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_blue,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_brown,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_green,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_grey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_lightgrey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_midgrey,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_orange,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_pink,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_purple,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_red,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_white,
|
||||
/obj/item/clothing/under/seromi/undercoat/standard/black_yellow
|
||||
)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Teshari undercoats crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/tesh_cloaks_vr
|
||||
/datum/supply_pack/randomised/costumes/tesh_cloaks_vr
|
||||
name = "Teshari cloaks"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/blue_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/brown_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/green_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/lightgrey_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/orange,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/orange_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/pink_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/purple_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/rainbow,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/red_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/white_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/yellow_grey
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/blue_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/brown_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/green_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/lightgrey_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/orange_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/pink_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/purple_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/rainbow,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/red_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/white_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/yellow_grey
|
||||
)
|
||||
cost = 40
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Teshari cloaks crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/tesh_cloaks_b_vr
|
||||
/datum/supply_pack/randomised/costumes/tesh_cloaks_b_vr
|
||||
name = "Teshari cloaks (black)"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_blue,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_brown,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_green,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_lightgrey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_midgrey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_orange,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_pink,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_purple,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_red,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_white,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_yellow
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_blue,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_brown,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_green,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_grey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_lightgrey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_midgrey,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_orange,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_pink,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_purple,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_red,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_white,
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/standard/black_yellow
|
||||
)
|
||||
cost = 40
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Teshari cloaks crate"
|
||||
|
||||
/datum/supply_packs/costumes/utility_vr
|
||||
/datum/supply_pack/costumes/utility_vr
|
||||
name = "Utility uniforms"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/utility,
|
||||
@@ -129,7 +129,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Utility uniforms crate"
|
||||
|
||||
/datum/supply_packs/costumes/skirts_vr
|
||||
/datum/supply_pack/costumes/skirts_vr
|
||||
name = "Skirts crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/skirt,
|
||||
@@ -147,7 +147,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Skirts crate"
|
||||
|
||||
/datum/supply_packs/costumes/varsity_vr
|
||||
/datum/supply_pack/costumes/varsity_vr
|
||||
name = "Varsity jackets"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/varsity,
|
||||
@@ -161,7 +161,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Varsity jackets crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/leathergear_vr
|
||||
/datum/supply_pack/randomised/costumes/leathergear_vr
|
||||
name = "Leather gear"
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
@@ -192,7 +192,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Leather gear crate"
|
||||
|
||||
/datum/supply_packs/costumes/eyewear_vr
|
||||
/datum/supply_pack/costumes/eyewear_vr
|
||||
name = "Eyewear crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/glasses/eyepatch,
|
||||
@@ -211,7 +211,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Eyewear crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/gloves_vr
|
||||
/datum/supply_pack/randomised/costumes/gloves_vr
|
||||
name = "Gloves crate"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
@@ -235,7 +235,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Gloves crate"
|
||||
|
||||
/datum/supply_packs/randomised/costumes/boots_vr
|
||||
/datum/supply_pack/randomised/costumes/boots_vr
|
||||
name = "Boots crate"
|
||||
num_contained = 3
|
||||
contains = list(
|
||||
@@ -252,7 +252,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Boots crate"
|
||||
|
||||
/datum/supply_packs/costumes/taurbags
|
||||
/datum/supply_pack/costumes/taurbags
|
||||
name = "Saddlebags crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/backpack/saddlebag_common,
|
||||
|
||||
@@ -4,66 +4,66 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/eng
|
||||
/datum/supply_pack/eng
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/eng/lightbulbs
|
||||
/datum/supply_pack/eng/lightbulbs
|
||||
name = "Replacement lights"
|
||||
contains = list(/obj/item/weapon/storage/box/lights/mixed = 3)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Replacement lights"
|
||||
|
||||
/datum/supply_packs/eng/smescoil
|
||||
/datum/supply_pack/eng/smescoil
|
||||
name = "Superconducting Magnetic Coil"
|
||||
contains = list(/obj/item/weapon/smes_coil)
|
||||
cost = 75
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "Superconducting Magnetic Coil crate"
|
||||
|
||||
/datum/supply_packs/eng/shield_capacitor
|
||||
/datum/supply_pack/eng/shield_capacitor
|
||||
name = "Shield Capacitor"
|
||||
contains = list(/obj/machinery/shield_capacitor)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "shield capacitor crate"
|
||||
|
||||
/datum/supply_packs/eng/shield_capacitor/advanced
|
||||
/datum/supply_pack/eng/shield_capacitor/advanced
|
||||
name = "Advanced Shield Capacitor"
|
||||
contains = list(/obj/machinery/shield_capacitor/advanced)
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "advanced shield capacitor crate"
|
||||
|
||||
/datum/supply_packs/eng/bubble_shield
|
||||
/datum/supply_pack/eng/bubble_shield
|
||||
name = "Bubble Shield Generator"
|
||||
contains = list(/obj/machinery/shield_gen)
|
||||
cost = 40
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "shield bubble generator crate"
|
||||
|
||||
/datum/supply_packs/eng/bubble_shield/advanced
|
||||
/datum/supply_pack/eng/bubble_shield/advanced
|
||||
name = "Advanced Bubble Shield Generator"
|
||||
contains = list(/obj/machinery/shield_gen/advanced)
|
||||
cost = 60
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "advanced bubble shield generator crate"
|
||||
|
||||
/datum/supply_packs/eng/hull_shield
|
||||
/datum/supply_pack/eng/hull_shield
|
||||
name = "Hull Shield Generator"
|
||||
contains = list(/obj/machinery/shield_gen/external)
|
||||
cost = 80
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "shield hull generator crate"
|
||||
|
||||
/datum/supply_packs/eng/hull_shield/advanced
|
||||
/datum/supply_pack/eng/hull_shield/advanced
|
||||
name = "Advanced Hull Shield Generator"
|
||||
contains = list(/obj/machinery/shield_gen/external/advanced)
|
||||
cost = 120
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "advanced hull shield generator crate"
|
||||
|
||||
/datum/supply_packs/eng/electrical
|
||||
/datum/supply_pack/eng/electrical
|
||||
name = "Electrical maintenance crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/toolbox/electrical = 2,
|
||||
@@ -75,7 +75,7 @@
|
||||
containertype = /obj/structure/closet/crate/engineering/electrical
|
||||
containername = "Electrical maintenance crate"
|
||||
|
||||
/datum/supply_packs/eng/e_welders
|
||||
/datum/supply_pack/eng/e_welders
|
||||
name = "Electric welder crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/weldingtool/electric = 3
|
||||
@@ -84,7 +84,7 @@
|
||||
containertype = /obj/structure/closet/crate/engineering/electrical
|
||||
containername = "Electric welder crate"
|
||||
|
||||
/datum/supply_packs/eng/mechanical
|
||||
/datum/supply_pack/eng/mechanical
|
||||
name = "Mechanical maintenance crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/utility/full = 3,
|
||||
@@ -96,14 +96,14 @@
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "Mechanical maintenance crate"
|
||||
|
||||
/datum/supply_packs/eng/fueltank
|
||||
/datum/supply_pack/eng/fueltank
|
||||
name = "Fuel tank crate"
|
||||
contains = list(/obj/structure/reagent_dispensers/fueltank)
|
||||
cost = 10
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "fuel tank crate"
|
||||
|
||||
/datum/supply_packs/eng/solar
|
||||
/datum/supply_pack/eng/solar
|
||||
name = "Solar Pack crate"
|
||||
contains = list(
|
||||
/obj/item/solar_assembly = 21,
|
||||
@@ -115,7 +115,7 @@
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
containername = "Solar pack crate"
|
||||
|
||||
/datum/supply_packs/eng/engine
|
||||
/datum/supply_pack/eng/engine
|
||||
name = "Emitter crate"
|
||||
contains = list(/obj/machinery/power/emitter = 2)
|
||||
cost = 10
|
||||
@@ -123,27 +123,27 @@
|
||||
containername = "Emitter crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/engine/field_gen
|
||||
/datum/supply_pack/eng/engine/field_gen
|
||||
name = "Field Generator crate"
|
||||
contains = list(/obj/machinery/field_generator = 2)
|
||||
containertype = /obj/structure/closet/crate/secure/engineering
|
||||
containername = "Field Generator crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/engine/sing_gen
|
||||
/datum/supply_pack/eng/engine/sing_gen
|
||||
name = "Singularity Generator crate"
|
||||
contains = list(/obj/machinery/the_singularitygen)
|
||||
containertype = /obj/structure/closet/crate/secure/engineering
|
||||
containername = "Singularity Generator crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/engine/collector
|
||||
/datum/supply_pack/eng/engine/collector
|
||||
name = "Collector crate"
|
||||
contains = list(/obj/machinery/power/rad_collector = 3)
|
||||
containertype = /obj/structure/closet/crate/secure/engineering
|
||||
containername = "Collector crate"
|
||||
|
||||
/datum/supply_packs/eng/engine/PA
|
||||
/datum/supply_pack/eng/engine/PA
|
||||
name = "Particle Accelerator crate"
|
||||
cost = 40
|
||||
contains = list(
|
||||
@@ -159,7 +159,7 @@
|
||||
containername = "Particle Accelerator crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/shield_gen
|
||||
/datum/supply_pack/eng/shield_gen
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_gen)
|
||||
name = "Bubble shield generator circuitry"
|
||||
cost = 30
|
||||
@@ -167,7 +167,7 @@
|
||||
containername = "bubble shield generator circuitry crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/shield_gen_ex
|
||||
/datum/supply_pack/eng/shield_gen_ex
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_gen_ex)
|
||||
name = "Hull shield generator circuitry"
|
||||
cost = 30
|
||||
@@ -175,7 +175,7 @@
|
||||
containername = "hull shield generator circuitry crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/shield_cap
|
||||
/datum/supply_pack/eng/shield_cap
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_cap)
|
||||
name = "Bubble shield capacitor circuitry"
|
||||
cost = 30
|
||||
@@ -183,7 +183,7 @@
|
||||
containername = "shield capacitor circuitry crate"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/smbig
|
||||
/datum/supply_pack/eng/smbig
|
||||
name = "Supermatter Core"
|
||||
contains = list(/obj/machinery/power/supermatter)
|
||||
cost = 150
|
||||
@@ -191,7 +191,7 @@
|
||||
containername = "Supermatter crate (CAUTION)"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eng/teg
|
||||
/datum/supply_pack/eng/teg
|
||||
contains = list(/obj/machinery/power/generator)
|
||||
name = "Mark I Thermoelectric Generator"
|
||||
cost = 40
|
||||
@@ -199,7 +199,7 @@
|
||||
containername = "Mk1 TEG crate"
|
||||
access = access_engine
|
||||
|
||||
/datum/supply_packs/eng/circulator
|
||||
/datum/supply_pack/eng/circulator
|
||||
contains = list(/obj/machinery/atmospherics/binary/circulator)
|
||||
name = "Binary atmospheric circulator"
|
||||
cost = 20
|
||||
@@ -207,7 +207,7 @@
|
||||
containername = "Atmospheric circulator crate"
|
||||
access = access_engine
|
||||
|
||||
/datum/supply_packs/eng/radsuit
|
||||
/datum/supply_pack/eng/radsuit
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/radiation = 3,
|
||||
/obj/item/clothing/head/radiation = 3
|
||||
@@ -217,7 +217,7 @@
|
||||
containertype = /obj/structure/closet/radiation
|
||||
containername = "Radiation suit locker"
|
||||
|
||||
/datum/supply_packs/eng/pacman_parts
|
||||
/datum/supply_pack/eng/pacman_parts
|
||||
name = "P.A.C.M.A.N. portable generator parts"
|
||||
cost = 25
|
||||
containername = "P.A.C.M.A.N. Portable Generator Construction Kit"
|
||||
@@ -230,7 +230,7 @@
|
||||
/obj/item/weapon/circuitboard/pacman
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/super_pacman_parts
|
||||
/datum/supply_pack/eng/super_pacman_parts
|
||||
name = "Super P.A.C.M.A.N. portable generator parts"
|
||||
cost = 35
|
||||
containername = "Super P.A.C.M.A.N. portable generator construction kit"
|
||||
@@ -243,7 +243,7 @@
|
||||
/obj/item/weapon/circuitboard/pacman/super
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/fusion_core
|
||||
/datum/supply_pack/eng/fusion_core
|
||||
name = "R-UST Mk. 8 Tokamak fusion core crate"
|
||||
cost = 50
|
||||
containername = "R-UST Mk. 8 Tokamak Fusion Core crate"
|
||||
@@ -255,7 +255,7 @@
|
||||
/obj/item/weapon/circuitboard/fusion_core
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/fusion_fuel_injector
|
||||
/datum/supply_pack/eng/fusion_fuel_injector
|
||||
name = "R-UST Mk. 8 fuel injector crate"
|
||||
cost = 30
|
||||
containername = "R-UST Mk. 8 fuel injector crate"
|
||||
@@ -267,7 +267,7 @@
|
||||
/obj/item/weapon/circuitboard/fusion_injector
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/gyrotron
|
||||
/datum/supply_pack/eng/gyrotron
|
||||
name = "Gyrotron crate"
|
||||
cost = 15
|
||||
containername = "Gyrotron Crate"
|
||||
@@ -278,14 +278,14 @@
|
||||
/obj/item/weapon/circuitboard/gyrotron
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/fusion_fuel_compressor
|
||||
/datum/supply_pack/eng/fusion_fuel_compressor
|
||||
name = "Fusion Fuel Compressor circuitry crate"
|
||||
cost = 10
|
||||
containername = "Fusion Fuel Compressor circuitry crate"
|
||||
containertype = /obj/structure/closet/crate/engineering
|
||||
contains = list(/obj/item/weapon/circuitboard/fusion_fuel_compressor)
|
||||
|
||||
/datum/supply_packs/eng/tritium
|
||||
/datum/supply_pack/eng/tritium
|
||||
name = "Tritium crate"
|
||||
cost = 75
|
||||
containername = "Tritium crate"
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
/datum/supply_packs/eng/thermoregulator
|
||||
/datum/supply_pack/eng/thermoregulator
|
||||
contains = list(/obj/machinery/power/thermoregulator)
|
||||
name = "Thermal Regulator"
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/large
|
||||
containername = "thermal regulator crate"
|
||||
|
||||
/datum/supply_packs/eng/radsuit
|
||||
/datum/supply_pack/eng/radsuit
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/radiation = 3,
|
||||
/obj/item/clothing/head/radiation = 3
|
||||
)
|
||||
|
||||
/datum/supply_packs/eng/algae
|
||||
/datum/supply_pack/eng/algae
|
||||
contains = list(/obj/item/stack/material/algae/ten)
|
||||
name = "Algae Sheets (10)"
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "algae sheets crate"
|
||||
|
||||
/datum/supply_packs/eng/engine/tesla_gen
|
||||
/datum/supply_pack/eng/engine/tesla_gen
|
||||
name = "Tesla Generator crate"
|
||||
contains = list(/obj/machinery/the_singularitygen/tesla)
|
||||
containertype = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/hospitality
|
||||
/datum/supply_pack/hospitality
|
||||
group = "Hospitality"
|
||||
|
||||
/datum/supply_packs/hospitality/party
|
||||
/datum/supply_pack/hospitality/party
|
||||
name = "Party equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/mixedglasses = 2,
|
||||
@@ -26,7 +26,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Party equipment"
|
||||
|
||||
/datum/supply_packs/hospitality/barsupplies
|
||||
/datum/supply_pack/hospitality/barsupplies
|
||||
name = "Bar supplies"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/glasses/cocktail,
|
||||
@@ -46,10 +46,10 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "crate of bar supplies"
|
||||
|
||||
/datum/supply_packs/randomised/hospitality/
|
||||
/datum/supply_pack/randomised/hospitality/
|
||||
group = "Hospitality"
|
||||
|
||||
/datum/supply_packs/randomised/hospitality/pizza
|
||||
/datum/supply_pack/randomised/hospitality/pizza
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/pizzabox/margherita,
|
||||
@@ -62,7 +62,7 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Pizza crate"
|
||||
|
||||
/datum/supply_packs/hospitality/gifts
|
||||
/datum/supply_pack/hospitality/gifts
|
||||
name = "Gift crate"
|
||||
contains = list(
|
||||
/obj/item/toy/bouquet = 3,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/randomised/hospitality/burgers_vr
|
||||
/datum/supply_pack/randomised/hospitality/burgers_vr
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,
|
||||
@@ -12,7 +12,7 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Burger crate"
|
||||
/*
|
||||
/datum/supply_packs/randomised/hospitality/bakery_vr
|
||||
/datum/supply_pack/randomised/hospitality/bakery_vr
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/baguette,
|
||||
@@ -38,7 +38,7 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Bakery products crate"
|
||||
|
||||
/datum/supply_packs/randomised/hospitality/cakes_vr
|
||||
/datum/supply_pack/randomised/hospitality/cakes_vr
|
||||
num_contained = 2
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake,
|
||||
@@ -56,7 +56,7 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Cake crate"
|
||||
|
||||
/datum/supply_packs/randomised/hospitality/mexican_vr
|
||||
/datum/supply_pack/randomised/hospitality/mexican_vr
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito,
|
||||
@@ -69,7 +69,7 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Mexican takeout crate"
|
||||
*/
|
||||
/datum/supply_packs/randomised/hospitality/asian_vr
|
||||
/datum/supply_pack/randomised/hospitality/asian_vr
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/generalschicken,
|
||||
@@ -80,5 +80,5 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Chinese takeout crate"
|
||||
|
||||
/datum/supply_packs/randomised/hospitality/pizza
|
||||
/datum/supply_pack/randomised/hospitality/pizza
|
||||
cost = 50
|
||||
@@ -4,45 +4,45 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/hydro
|
||||
/datum/supply_pack/hydro
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/hydro/monkey
|
||||
/datum/supply_pack/hydro/monkey
|
||||
name = "Monkey crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Monkey crate"
|
||||
|
||||
/datum/supply_packs/hydro/farwa
|
||||
/datum/supply_pack/hydro/farwa
|
||||
name = "Farwa crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/farwacubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Farwa crate"
|
||||
|
||||
/datum/supply_packs/hydro/neara
|
||||
/datum/supply_pack/hydro/neara
|
||||
name = "Neaera crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/neaeracubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Neaera crate"
|
||||
|
||||
/datum/supply_packs/hydro/stok
|
||||
/datum/supply_pack/hydro/stok
|
||||
name = "Stok crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/stokcubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Stok crate"
|
||||
|
||||
/datum/supply_packs/hydro/lisa
|
||||
/datum/supply_pack/hydro/lisa
|
||||
name = "Corgi Crate"
|
||||
contains = list()
|
||||
cost = 50
|
||||
containertype = /obj/structure/largecrate/animal/corgi
|
||||
containername = "Corgi Crate"
|
||||
|
||||
/datum/supply_packs/hydro/hydroponics
|
||||
/datum/supply_pack/hydro/hydroponics
|
||||
name = "Hydroponics Supply Crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone = 4,
|
||||
@@ -60,28 +60,28 @@
|
||||
containername = "Hydroponics crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/cow
|
||||
/datum/supply_pack/hydro/cow
|
||||
name = "Cow crate"
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate/animal/cow
|
||||
containername = "Cow crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/goat
|
||||
/datum/supply_pack/hydro/goat
|
||||
name = "Goat crate"
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate/animal/goat
|
||||
containername = "Goat crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/chicken
|
||||
/datum/supply_pack/hydro/chicken
|
||||
name = "Chicken crate"
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate/animal/chick
|
||||
containername = "Chicken crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/seeds
|
||||
/datum/supply_pack/hydro/seeds
|
||||
name = "Seeds crate"
|
||||
contains = list(
|
||||
/obj/item/seeds/chiliseed,
|
||||
@@ -107,7 +107,7 @@
|
||||
containername = "Seeds crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/weedcontrol
|
||||
/datum/supply_pack/hydro/weedcontrol
|
||||
name = "Weed control crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/material/knife/machete/hatchet = 2,
|
||||
@@ -121,14 +121,14 @@
|
||||
containername = "Weed control crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/watertank
|
||||
/datum/supply_pack/hydro/watertank
|
||||
name = "Water tank crate"
|
||||
contains = list(/obj/structure/reagent_dispensers/watertank)
|
||||
cost = 10
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "water tank crate"
|
||||
|
||||
/datum/supply_packs/hydro/bee_keeper
|
||||
/datum/supply_pack/hydro/bee_keeper
|
||||
name = "Beekeeping crate"
|
||||
contains = list(
|
||||
/obj/item/beehive_assembly,
|
||||
@@ -141,7 +141,7 @@
|
||||
containername = "Beekeeping crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/tray
|
||||
/datum/supply_pack/hydro/tray
|
||||
name = "Empty hydroponics trays"
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
/datum/supply_packs/hydro/birds
|
||||
/datum/supply_pack/hydro/birds
|
||||
name = "Birds Crate"
|
||||
cost = 200 //You're getting 22 birds. Of course it's going to be a lot!
|
||||
containertype = /obj/structure/largecrate/birds
|
||||
containername = "Bird crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/hydro/sobaka
|
||||
/datum/supply_pack/hydro/sobaka
|
||||
name = "Sobaka crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/sobakacubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Sobaka crate"
|
||||
|
||||
/datum/supply_packs/hydro/saru
|
||||
/datum/supply_pack/hydro/saru
|
||||
name = "Saru crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/sarucubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Saru crate"
|
||||
|
||||
/datum/supply_packs/hydro/sparra
|
||||
/datum/supply_pack/hydro/sparra
|
||||
name = "Sparra crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/sparracubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Sparra crate"
|
||||
|
||||
/datum/supply_packs/hydro/wolpin
|
||||
/datum/supply_pack/hydro/wolpin
|
||||
name = "Wolpin crate"
|
||||
contains = list (/obj/item/weapon/storage/box/monkeycubes/wolpincubes)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Wolpin crate"
|
||||
|
||||
/datum/supply_packs/hydro/fennec
|
||||
/datum/supply_pack/hydro/fennec
|
||||
name = "Fennec crate"
|
||||
cost = 60 //considering a corgi crate is 50, and you get two fennecs
|
||||
containertype = /obj/structure/largecrate/animal/fennec
|
||||
|
||||
@@ -4,45 +4,45 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/materials
|
||||
/datum/supply_pack/materials
|
||||
group = "Materials"
|
||||
|
||||
/datum/supply_packs/materials/metal50
|
||||
/datum/supply_pack/materials/metal50
|
||||
name = "50 metal sheets"
|
||||
contains = list(/obj/fiftyspawner/steel)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Metal sheets crate"
|
||||
|
||||
/datum/supply_packs/materials/glass50
|
||||
/datum/supply_pack/materials/glass50
|
||||
name = "50 glass sheets"
|
||||
contains = list(/obj/fiftyspawner/glass)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Glass sheets crate"
|
||||
|
||||
/datum/supply_packs/materials/wood50
|
||||
/datum/supply_pack/materials/wood50
|
||||
name = "50 wooden planks"
|
||||
contains = list(/obj/fiftyspawner/wood)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wooden planks crate"
|
||||
|
||||
/datum/supply_packs/materials/plastic50
|
||||
/datum/supply_pack/materials/plastic50
|
||||
name = "50 plastic sheets"
|
||||
contains = list(/obj/fiftyspawner/plastic)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Plastic sheets crate"
|
||||
|
||||
/datum/supply_packs/materials/cardboard_sheets
|
||||
/datum/supply_pack/materials/cardboard_sheets
|
||||
contains = list(/obj/fiftyspawner/cardboard)
|
||||
name = "50 cardboard sheets"
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Cardboard sheets crate"
|
||||
|
||||
/datum/supply_packs/materials/carpet
|
||||
/datum/supply_pack/materials/carpet
|
||||
name = "Imported carpet"
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Imported carpet crate"
|
||||
@@ -53,7 +53,7 @@
|
||||
)
|
||||
|
||||
|
||||
/datum/supply_packs/misc/linoleum
|
||||
/datum/supply_pack/misc/linoleum
|
||||
name = "Linoleum"
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Linoleum crate"
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/med
|
||||
/datum/supply_pack/med
|
||||
group = "Medical"
|
||||
|
||||
/datum/supply_packs/med/medical
|
||||
/datum/supply_pack/med/medical
|
||||
name = "Medical crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/firstaid/regular,
|
||||
@@ -25,28 +25,28 @@
|
||||
containertype = /obj/structure/closet/crate/medical
|
||||
containername = "Medical crate"
|
||||
|
||||
/datum/supply_packs/med/bloodpack
|
||||
/datum/supply_pack/med/bloodpack
|
||||
name = "BloodPack crate"
|
||||
contains = list(/obj/item/weapon/storage/box/bloodpacks = 3)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/medical
|
||||
containername = "BloodPack crate"
|
||||
|
||||
/datum/supply_packs/med/bodybag
|
||||
/datum/supply_pack/med/bodybag
|
||||
name = "Body bag crate"
|
||||
contains = list(/obj/item/weapon/storage/box/bodybags = 3)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/medical
|
||||
containername = "Body bag crate"
|
||||
|
||||
/datum/supply_packs/med/cryobag
|
||||
/datum/supply_pack/med/cryobag
|
||||
name = "Stasis bag crate"
|
||||
contains = list(/obj/item/bodybag/cryobag = 3)
|
||||
cost = 40
|
||||
containertype = /obj/structure/closet/crate/medical
|
||||
containername = "Stasis bag crate"
|
||||
|
||||
/datum/supply_packs/med/surgery
|
||||
/datum/supply_pack/med/surgery
|
||||
name = "Surgery crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/surgical/cautery,
|
||||
@@ -66,7 +66,7 @@
|
||||
containername = "Surgery crate"
|
||||
access = access_medical
|
||||
|
||||
/datum/supply_packs/med/deathalarm
|
||||
/datum/supply_pack/med/deathalarm
|
||||
name = "Death Alarm crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/cdeathalarm_kit,
|
||||
@@ -77,7 +77,7 @@
|
||||
containername = "Death Alarm crate"
|
||||
access = access_medical
|
||||
|
||||
/datum/supply_packs/med/clotting
|
||||
/datum/supply_pack/med/clotting
|
||||
name = "Clotting Medicine crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/firstaid/clotting
|
||||
@@ -87,7 +87,7 @@
|
||||
containername = "Clotting Medicine crate"
|
||||
access = access_medical
|
||||
|
||||
/datum/supply_packs/med/sterile
|
||||
/datum/supply_pack/med/sterile
|
||||
name = "Sterile equipment crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/rank/medical/scrubs/green = 2,
|
||||
@@ -100,7 +100,7 @@
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Sterile equipment crate"
|
||||
|
||||
/datum/supply_packs/med/extragear
|
||||
/datum/supply_pack/med/extragear
|
||||
name = "Medical surplus equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/medical = 3,
|
||||
@@ -113,7 +113,7 @@
|
||||
containername = "Medical surplus equipment"
|
||||
access = access_medical
|
||||
|
||||
/datum/supply_packs/med/cmogear
|
||||
/datum/supply_pack/med/cmogear
|
||||
name = "Chief medical officer equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/medical,
|
||||
@@ -137,7 +137,7 @@
|
||||
containername = "Chief medical officer equipment"
|
||||
access = access_cmo
|
||||
|
||||
/datum/supply_packs/med/doctorgear
|
||||
/datum/supply_pack/med/doctorgear
|
||||
name = "Medical Doctor equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/medical,
|
||||
@@ -160,7 +160,7 @@
|
||||
containername = "Medical Doctor equipment"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/chemistgear
|
||||
/datum/supply_pack/med/chemistgear
|
||||
name = "Chemist equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/beakers,
|
||||
@@ -183,7 +183,7 @@
|
||||
containername = "Chemist equipment"
|
||||
access = access_chemistry
|
||||
|
||||
/datum/supply_packs/med/paramedicgear
|
||||
/datum/supply_pack/med/paramedicgear
|
||||
name = "Paramedic equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/medical/emt,
|
||||
@@ -211,7 +211,7 @@
|
||||
containername = "Paramedic equipment"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/psychiatristgear
|
||||
/datum/supply_pack/med/psychiatristgear
|
||||
name = "Psychiatrist equipment"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/rank/psych,
|
||||
@@ -230,7 +230,7 @@
|
||||
containername = "Psychiatrist equipment"
|
||||
access = access_psychiatrist
|
||||
|
||||
/datum/supply_packs/med/medicalscrubs
|
||||
/datum/supply_pack/med/medicalscrubs
|
||||
name = "Medical scrubs"
|
||||
contains = list(
|
||||
/obj/item/clothing/shoes/white = 3,,
|
||||
@@ -251,7 +251,7 @@
|
||||
containername = "Medical scrubs crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/autopsy
|
||||
/datum/supply_pack/med/autopsy
|
||||
name = "Autopsy equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/folder/white,
|
||||
@@ -268,7 +268,7 @@
|
||||
containername = "Autopsy equipment crate"
|
||||
access = access_morgue
|
||||
|
||||
/datum/supply_packs/med/medicaluniforms
|
||||
/datum/supply_pack/med/medicaluniforms
|
||||
name = "Medical uniforms"
|
||||
contains = list(
|
||||
/obj/item/clothing/shoes/white = 3,
|
||||
@@ -295,7 +295,7 @@
|
||||
containername = "Medical uniform crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/medicalbiosuits
|
||||
/datum/supply_pack/med/medicalbiosuits
|
||||
name = "Medical biohazard gear"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/bio_hood = 3,
|
||||
@@ -313,7 +313,7 @@
|
||||
containername = "Medical biohazard equipment"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/portablefreezers
|
||||
/datum/supply_pack/med/portablefreezers
|
||||
name = "Portable freezers crate"
|
||||
contains = list(/obj/item/weapon/storage/box/freezer = 7)
|
||||
cost = 25
|
||||
@@ -321,7 +321,7 @@
|
||||
containername = "Portable freezers"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/med/virus
|
||||
/datum/supply_pack/med/virus
|
||||
name = "Virus sample crate"
|
||||
contains = list(/obj/item/weapon/virusdish/random = 4)
|
||||
cost = 25
|
||||
@@ -329,7 +329,7 @@
|
||||
containername = "Virus sample crate"
|
||||
access = access_cmo
|
||||
|
||||
/datum/supply_packs/med/defib
|
||||
/datum/supply_pack/med/defib
|
||||
name = "Defibrillator crate"
|
||||
contains = list(/obj/item/device/defib_kit = 2)
|
||||
cost = 30
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/med/medicalbiosuits
|
||||
/datum/supply_pack/med/medicalbiosuits
|
||||
contains = list(
|
||||
/obj/item/clothing/head/bio_hood/scientist = 3,
|
||||
/obj/item/clothing/suit/bio_suit/scientist = 3,
|
||||
@@ -14,7 +14,7 @@
|
||||
)
|
||||
cost = 40
|
||||
|
||||
/datum/supply_packs/med/virologybiosuits
|
||||
/datum/supply_pack/med/virologybiosuits
|
||||
name = "Virology biohazard gear"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/bio_suit/virology = 3,
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/misc
|
||||
/datum/supply_pack/misc
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/randomised/misc
|
||||
/datum/supply_pack/randomised/misc
|
||||
group = "Miscellaneous"
|
||||
|
||||
|
||||
/datum/supply_packs/randomised/misc/card_packs
|
||||
/datum/supply_pack/randomised/misc/card_packs
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
/obj/item/weapon/pack/cardemon,
|
||||
@@ -23,14 +23,14 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "cards crate"
|
||||
|
||||
/datum/supply_packs/misc/eftpos
|
||||
/datum/supply_pack/misc/eftpos
|
||||
contains = list(/obj/item/device/eftpos)
|
||||
name = "EFTPOS scanner"
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "EFTPOS crate"
|
||||
|
||||
/datum/supply_packs/misc/chaplaingear
|
||||
/datum/supply_pack/misc/chaplaingear
|
||||
name = "Chaplain equipment"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/rank/chaplain,
|
||||
@@ -48,14 +48,14 @@
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Chaplain equipment crate"
|
||||
|
||||
/datum/supply_packs/misc/hoverpod
|
||||
/datum/supply_pack/misc/hoverpod
|
||||
name = "Hoverpod Shipment"
|
||||
contains = list()
|
||||
cost = 80
|
||||
containertype = /obj/structure/largecrate/hoverpod
|
||||
containername = "Hoverpod Crate"
|
||||
|
||||
/datum/supply_packs/randomised/misc/webbing
|
||||
/datum/supply_pack/randomised/misc/webbing
|
||||
name = "Webbing crate"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
@@ -71,7 +71,7 @@
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Webbing crate"
|
||||
|
||||
/datum/supply_packs/misc/holoplant
|
||||
/datum/supply_pack/misc/holoplant
|
||||
name = "Holoplant Pot"
|
||||
contains = list(/obj/machinery/holoplant/shipped)
|
||||
cost = 15
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
/datum/supply_packs/misc/beltminer
|
||||
/datum/supply_pack/misc/beltminer
|
||||
name = "Belt-miner gear crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/particle = 2,
|
||||
@@ -13,7 +13,7 @@
|
||||
containername = "Belt-miner gear crate"
|
||||
access = access_mining
|
||||
|
||||
/datum/supply_packs/misc/eva_rig
|
||||
/datum/supply_pack/misc/eva_rig
|
||||
name = "eva hardsuit (empty)"
|
||||
contains = list(
|
||||
/obj/item/weapon/rig/eva = 1
|
||||
@@ -23,7 +23,7 @@
|
||||
containername = "eva hardsuit crate"
|
||||
access = access_mining
|
||||
|
||||
/datum/supply_packs/misc/mining_rig
|
||||
/datum/supply_pack/misc/mining_rig
|
||||
name = "industrial hardsuit (empty)"
|
||||
contains = list(
|
||||
/obj/item/weapon/rig/industrial = 1
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
* related to weapons live.
|
||||
*/
|
||||
|
||||
/datum/supply_packs/munitions
|
||||
/datum/supply_pack/munitions
|
||||
group = "Munitions"
|
||||
|
||||
/datum/supply_packs/randomised/munitions
|
||||
/datum/supply_pack/randomised/munitions
|
||||
group = "Munitions"
|
||||
/* VOREStation Removal - What? This crate costs 40... the crate with just two eguns costs 50... what??? This crate is also like "the armory" and has OFFICER access?
|
||||
/datum/supply_packs/munitions/weapons
|
||||
/datum/supply_pack/munitions/weapons
|
||||
name = "Weapons - Security basic equipment"
|
||||
contains = list(
|
||||
/obj/item/device/flash = 2,
|
||||
@@ -24,7 +24,7 @@
|
||||
containername = "Security equipment crate"
|
||||
access = access_security*/
|
||||
|
||||
/datum/supply_packs/munitions/egunpistol
|
||||
/datum/supply_pack/munitions/egunpistol
|
||||
name = "Weapons - Energy sidearms"
|
||||
contains = list(/obj/item/weapon/gun/energy/gun = 2)
|
||||
cost = 50
|
||||
@@ -32,7 +32,7 @@
|
||||
containername = "Energy sidearms crate"
|
||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||
|
||||
/datum/supply_packs/munitions/flareguns
|
||||
/datum/supply_pack/munitions/flareguns
|
||||
name = "Weapons - Flare guns"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/projectile/sec/flash,
|
||||
@@ -45,7 +45,7 @@
|
||||
containername = "Flare gun crate"
|
||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||
|
||||
/datum/supply_packs/munitions/eweapons
|
||||
/datum/supply_pack/munitions/eweapons
|
||||
name = "Weapons - Experimental weapons crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/xray = 2,
|
||||
@@ -55,7 +55,7 @@
|
||||
containername = "Experimental weapons crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/energyweapons
|
||||
/datum/supply_pack/munitions/energyweapons
|
||||
name = "Weapons - Laser rifle crate"
|
||||
contains = list(/obj/item/weapon/gun/energy/laser = 2) //VOREStation Edit - Made to be consistent with the energy guns crate.
|
||||
cost = 50
|
||||
@@ -63,7 +63,7 @@
|
||||
containername = "Energy weapons crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/shotgun
|
||||
/datum/supply_pack/munitions/shotgun
|
||||
name = "Weapons - Shotgun crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo,
|
||||
@@ -75,7 +75,7 @@
|
||||
containername = "Shotgun crate"
|
||||
access = access_armory
|
||||
/* VOREStation edit -- This is a bad idea. -- So is this.
|
||||
/datum/supply_packs/munitions/erifle
|
||||
/datum/supply_pack/munitions/erifle
|
||||
name = "Weapons - Energy marksman"
|
||||
contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2)
|
||||
cost = 100
|
||||
@@ -83,7 +83,7 @@
|
||||
containername = "Energy marksman crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/burstlaser
|
||||
/datum/supply_pack/munitions/burstlaser
|
||||
name = "Weapons - Burst laser"
|
||||
contains = list(/obj/item/weapon/gun/energy/gun/burst = 2)
|
||||
cost = 50
|
||||
@@ -91,7 +91,7 @@
|
||||
containername = "Burst laser crate"
|
||||
access = access_armory
|
||||
*/
|
||||
/datum/supply_packs/munitions/ionweapons
|
||||
/datum/supply_pack/munitions/ionweapons
|
||||
name = "Weapons - Electromagnetic Rifles"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/ionrifle = 2,
|
||||
@@ -102,7 +102,7 @@
|
||||
containername = "Electromagnetic weapons crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/ionpistols
|
||||
/datum/supply_pack/munitions/ionpistols
|
||||
name = "Weapons - Electromagnetic pistols"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/ionrifle/pistol = 2,
|
||||
@@ -113,7 +113,7 @@
|
||||
containername = "Electromagnetic weapons crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/bsmg
|
||||
/datum/supply_pack/munitions/bsmg
|
||||
name = "Weapons - Ballistic SMGs"
|
||||
contains = list(/obj/item/weapon/gun/projectile/automatic/wt550 = 2)
|
||||
cost = 50
|
||||
@@ -121,7 +121,7 @@
|
||||
containername = "Ballistic weapon crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/brifle
|
||||
/datum/supply_pack/munitions/brifle
|
||||
name = "Weapons - Ballistic Rifles"
|
||||
contains = list(/obj/item/weapon/gun/projectile/automatic/z8 = 2)
|
||||
cost = 80
|
||||
@@ -129,7 +129,7 @@
|
||||
containername = "Ballistic weapon crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/bolt_rifles_competitive
|
||||
/datum/supply_pack/munitions/bolt_rifles_competitive
|
||||
name = "Weapons - Competitive shooting rifles"
|
||||
contains = list(
|
||||
/obj/item/device/assembly/timer,
|
||||
@@ -144,7 +144,7 @@
|
||||
containername = "Ballistic Weapons crate"
|
||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||
|
||||
/datum/supply_packs/munitions/shotgunammo
|
||||
/datum/supply_pack/munitions/shotgunammo
|
||||
name = "Ammunition - Shotgun shells"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo = 2,
|
||||
@@ -155,7 +155,7 @@
|
||||
containername = "Ballistic ammunition crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/beanbagammo
|
||||
/datum/supply_pack/munitions/beanbagammo
|
||||
name = "Ammunition - Beanbag shells"
|
||||
contains = list(/obj/item/weapon/storage/box/beanbags = 3)
|
||||
cost = 25
|
||||
@@ -163,7 +163,7 @@
|
||||
containername = "Ballistic ammunition crate"
|
||||
access = access_armory //VOREStation Edit - Guns are for the armory.
|
||||
|
||||
/datum/supply_packs/munitions/bsmgammo
|
||||
/datum/supply_pack/munitions/bsmgammo
|
||||
name = "Ammunition - 9mm top mounted lethal"
|
||||
contains = list(/obj/item/ammo_magazine/m9mmt = 6)
|
||||
cost = 25
|
||||
@@ -171,7 +171,7 @@
|
||||
containername = "Ballistic ammunition crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/bsmgammorubber
|
||||
/datum/supply_pack/munitions/bsmgammorubber
|
||||
name = "Ammunition - 9mm top mounted rubber"
|
||||
contains = list(/obj/item/ammo_magazine/m9mmt/rubber = 6)
|
||||
cost = 25
|
||||
@@ -179,7 +179,7 @@
|
||||
containername = "Ballistic ammunition crate"
|
||||
access = access_security
|
||||
|
||||
/datum/supply_packs/munitions/brifleammo
|
||||
/datum/supply_pack/munitions/brifleammo
|
||||
name = "Ammunition - 7.62mm lethal"
|
||||
contains = list(/obj/item/ammo_magazine/m762 = 6)
|
||||
cost = 25
|
||||
@@ -187,7 +187,7 @@
|
||||
containername = "Ballistic ammunition crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/munitions/pcellammo
|
||||
/datum/supply_pack/munitions/pcellammo
|
||||
name = "Ammunition - Power cell"
|
||||
contains = list(/obj/item/weapon/cell/device/weapon = 3)
|
||||
cost = 50
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/munitions/expeditionguns
|
||||
/datum/supply_pack/munitions/expeditionguns
|
||||
name = "Frontier phaser (station-locked) crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/frontier/locked = 2,
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/recreation
|
||||
/datum/supply_pack/recreation
|
||||
group = "Recreation"
|
||||
|
||||
/datum/supply_packs/randomised/recreation
|
||||
/datum/supply_pack/randomised/recreation
|
||||
group = "Recreation"
|
||||
access = access_security
|
||||
|
||||
/datum/supply_packs/recreation/foam_weapons
|
||||
/datum/supply_pack/recreation/foam_weapons
|
||||
name = "Foam Weapon Crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/material/sword/foam = 2,
|
||||
@@ -23,7 +23,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "foam weapon crate"
|
||||
|
||||
/datum/supply_packs/recreation/lasertag
|
||||
/datum/supply_pack/recreation/lasertag
|
||||
name = "Lasertag equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/gun/energy/lasertag/red,
|
||||
@@ -35,7 +35,7 @@
|
||||
containername = "Lasertag Closet"
|
||||
cost = 10
|
||||
|
||||
/datum/supply_packs/recreation/artscrafts
|
||||
/datum/supply_pack/recreation/artscrafts
|
||||
name = "Arts and Crafts supplies"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/fancy/crayons,
|
||||
@@ -58,7 +58,7 @@
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Arts and Crafts crate"
|
||||
|
||||
/datum/supply_packs/recreation/painters
|
||||
/datum/supply_pack/recreation/painters
|
||||
name = "Station Painting Supplies"
|
||||
cost = 10
|
||||
containername = "station painting supplies crate"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
/datum/supply_packs/recreation/rover
|
||||
/datum/supply_pack/recreation/rover
|
||||
name = "NT Humvee"
|
||||
contains = list(
|
||||
/obj/vehicle/train/rover/engine
|
||||
@@ -8,7 +8,7 @@
|
||||
containername = "NT Humvee Crate"
|
||||
cost = 100
|
||||
*/
|
||||
/datum/supply_packs/recreation/restraints
|
||||
/datum/supply_pack/recreation/restraints
|
||||
name = "Recreational Restraints"
|
||||
contains = list(
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
@@ -27,7 +27,7 @@
|
||||
containername = "Restraints crate"
|
||||
cost = 30
|
||||
|
||||
/datum/supply_packs/recreation/wolfgirl_cosplay_crate
|
||||
/datum/supply_pack/recreation/wolfgirl_cosplay_crate
|
||||
name = "Wolfgirl Cosplay Crate"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/fluff/awoo = 1,
|
||||
@@ -40,7 +40,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "wolfgirl cosplay crate"
|
||||
|
||||
/datum/supply_packs/randomised/recreation/figures_vr
|
||||
/datum/supply_pack/randomised/recreation/figures_vr
|
||||
name = "Action figures crate"
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
@@ -50,7 +50,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Action figures crate"
|
||||
|
||||
/datum/supply_packs/recreation/characters_vr
|
||||
/datum/supply_pack/recreation/characters_vr
|
||||
name = "Tabletop miniatures"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/characters
|
||||
@@ -59,7 +59,7 @@
|
||||
containername = "Tabletop miniatures crate"
|
||||
cost = 50
|
||||
|
||||
/datum/supply_packs/randomised/recreation/plushies_vr
|
||||
/datum/supply_pack/randomised/recreation/plushies_vr
|
||||
name = "Plushies crate"
|
||||
num_contained = 3
|
||||
contains = list(
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/robotics
|
||||
/datum/supply_pack/robotics
|
||||
group = "Robotics"
|
||||
|
||||
/datum/supply_packs/randomised/robotics
|
||||
/datum/supply_pack/randomised/robotics
|
||||
group = "Robotics"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robotics_assembly
|
||||
/datum/supply_pack/robotics/robotics_assembly
|
||||
name = "Robotics assembly crate"
|
||||
contains = list(
|
||||
/obj/item/device/assembly/prox_sensor = 3,
|
||||
@@ -24,7 +24,7 @@
|
||||
containername = "Robotics assembly"
|
||||
access = access_robotics
|
||||
|
||||
/*/datum/supply_packs/robotics/robolimbs_basic
|
||||
/*/datum/supply_pack/robotics/robolimbs_basic
|
||||
name = "Basic robolimb blueprints"
|
||||
contains = list(
|
||||
/obj/item/weapon/disk/limb/morpheus,
|
||||
@@ -35,7 +35,7 @@
|
||||
containername = "Robolimb blueprints (basic)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs_adv
|
||||
/datum/supply_pack/robotics/robolimbs_adv
|
||||
name = "All robolimb blueprints"
|
||||
contains = list(
|
||||
/obj/item/weapon/disk/limb/bishop,
|
||||
@@ -52,7 +52,7 @@
|
||||
access = access_robotics
|
||||
*/
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/morpheus
|
||||
/datum/supply_pack/robotics/robolimbs/morpheus
|
||||
name = "Morpheus robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/morpheus)
|
||||
cost = 20
|
||||
@@ -60,7 +60,7 @@
|
||||
containername = "Robolimb blueprints (Morpheus)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/cybersolutions
|
||||
/datum/supply_pack/robotics/robolimbs/cybersolutions
|
||||
name = "Cyber Solutions robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/cybersolutions)
|
||||
cost = 20
|
||||
@@ -68,7 +68,7 @@
|
||||
containername = "Robolimb blueprints (Cyber Solutions)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/xion
|
||||
/datum/supply_pack/robotics/robolimbs/xion
|
||||
name = "Xion robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/xion)
|
||||
cost = 20
|
||||
@@ -76,7 +76,7 @@
|
||||
containername = "Robolimb blueprints (Xion)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/grayson
|
||||
/datum/supply_pack/robotics/robolimbs/grayson
|
||||
name = "Grayson robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/grayson)
|
||||
cost = 30
|
||||
@@ -84,7 +84,7 @@
|
||||
containername = "Robolimb blueprints (Grayson)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/hephaestus
|
||||
/datum/supply_pack/robotics/robolimbs/hephaestus
|
||||
name = "Hephaestus robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/hephaestus)
|
||||
cost = 35
|
||||
@@ -92,7 +92,7 @@
|
||||
containername = "Robolimb blueprints (Hephaestus)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/wardtakahashi
|
||||
/datum/supply_pack/robotics/robolimbs/wardtakahashi
|
||||
name = "Ward-Takahashi robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/wardtakahashi)
|
||||
cost = 35
|
||||
@@ -100,7 +100,7 @@
|
||||
containername = "Robolimb blueprints (Ward-Takahashi)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/zenghu
|
||||
/datum/supply_pack/robotics/robolimbs/zenghu
|
||||
name = "Zeng Hu robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/zenghu)
|
||||
cost = 35
|
||||
@@ -108,7 +108,7 @@
|
||||
containername = "Robolimb blueprints (Zeng Hu)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/robolimbs/bishop
|
||||
/datum/supply_pack/robotics/robolimbs/bishop
|
||||
name = "Bishop robolimb blueprints"
|
||||
contains = list(/obj/item/weapon/disk/limb/bishop)
|
||||
cost = 70
|
||||
@@ -116,7 +116,7 @@
|
||||
containername = "Robolimb blueprints (Bishop)"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/mecha_ripley
|
||||
/datum/supply_pack/robotics/mecha_ripley
|
||||
name = "Circuit Crate (\"Ripley\" APLU)"
|
||||
contains = list(
|
||||
/obj/item/weapon/book/manual/ripley_build_and_repair,
|
||||
@@ -128,7 +128,7 @@
|
||||
containername = "APLU \"Ripley\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/mecha_odysseus
|
||||
/datum/supply_pack/robotics/mecha_odysseus
|
||||
name = "Circuit Crate (\"Odysseus\")"
|
||||
contains = list(
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus/peripherals,
|
||||
@@ -139,7 +139,7 @@
|
||||
containername = "\"Odysseus\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/randomised/robotics/exosuit_mod
|
||||
/datum/supply_pack/randomised/robotics/exosuit_mod
|
||||
num_contained = 1
|
||||
contains = list(
|
||||
/obj/item/device/kit/paint/ripley,
|
||||
@@ -152,7 +152,7 @@
|
||||
containertype = /obj/structure/closet/crate/science
|
||||
containername = "heavy crate"
|
||||
|
||||
/datum/supply_packs/randomised/robotics/exosuit_mod/durand
|
||||
/datum/supply_pack/randomised/robotics/exosuit_mod/durand
|
||||
contains = list(
|
||||
/obj/item/device/kit/paint/durand,
|
||||
/obj/item/device/kit/paint/durand/seraph,
|
||||
@@ -160,7 +160,7 @@
|
||||
)
|
||||
name = "Random Durand exosuit modkit"
|
||||
|
||||
/datum/supply_packs/randomised/robotics/exosuit_mod/gygax
|
||||
/datum/supply_pack/randomised/robotics/exosuit_mod/gygax
|
||||
contains = list(
|
||||
/obj/item/device/kit/paint/gygax,
|
||||
/obj/item/device/kit/paint/gygax/darkgygax,
|
||||
@@ -168,7 +168,7 @@
|
||||
)
|
||||
name = "Random Gygax exosuit modkit"
|
||||
|
||||
/datum/supply_packs/robotics/jumper_cables
|
||||
/datum/supply_pack/robotics/jumper_cables
|
||||
name = "Jumper kit crate"
|
||||
contains = list(
|
||||
/obj/item/device/defib_kit/jumper_kit = 2
|
||||
@@ -177,3 +177,24 @@
|
||||
containertype = /obj/structure/closet/crate/secure/science
|
||||
containername = "Jumper kit crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_pack/robotics/bike
|
||||
name = "Spacebike Crate"
|
||||
contains = list()
|
||||
cost = 350
|
||||
containertype = /obj/structure/largecrate/vehicle/bike
|
||||
containername = "Spacebike Crate"
|
||||
|
||||
/datum/supply_pack/robotics/quadbike
|
||||
name = "ATV Crate"
|
||||
contains = list()
|
||||
cost = 300
|
||||
containertype = /obj/structure/largecrate/vehicle/quadbike
|
||||
containername = "ATV Crate"
|
||||
|
||||
/datum/supply_pack/robotics/quadtrailer
|
||||
name = "ATV Trailer Crate"
|
||||
contains = list()
|
||||
cost = 250
|
||||
containertype = /obj/structure/largecrate/vehicle/quadtrailer
|
||||
containername = "ATV Trailer Crate"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/robotics/mecha_gopher
|
||||
/datum/supply_pack/robotics/mecha_gopher
|
||||
name = "Circuit Crate (\"Gopher\" APLU)"
|
||||
contains = list(
|
||||
/obj/item/weapon/circuitboard/mecha/gopher/main,
|
||||
@@ -9,7 +9,7 @@
|
||||
containername = "APLU \"Gopher\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/mecha_polecat
|
||||
/datum/supply_pack/robotics/mecha_polecat
|
||||
name = "Circuit Crate (\"Polecat\" APLU)"
|
||||
contains = list(
|
||||
/obj/item/weapon/circuitboard/mecha/polecat/main,
|
||||
@@ -21,7 +21,7 @@
|
||||
containername = "APLU \"Polecat\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/mecha_weasel
|
||||
/datum/supply_pack/robotics/mecha_weasel
|
||||
name = "Circuit Crate (\"Weasel\" APLU)"
|
||||
contains = list(
|
||||
/obj/item/weapon/circuitboard/mecha/weasel/main,
|
||||
@@ -33,7 +33,7 @@
|
||||
containername = "APLU \"Weasel\" Circuit Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/some_robolimbs
|
||||
/datum/supply_pack/robotics/some_robolimbs
|
||||
name = "Basic Robolimb Blueprints"
|
||||
contains = list(
|
||||
/obj/item/weapon/disk/limb/morpheus,
|
||||
@@ -45,7 +45,7 @@
|
||||
containername = "Basic Robolimb Blueprint Crate"
|
||||
access = access_robotics
|
||||
|
||||
/datum/supply_packs/robotics/all_robolimbs
|
||||
/datum/supply_pack/robotics/all_robolimbs
|
||||
name = "Advanced Robolimb Blueprints"
|
||||
contains = list(
|
||||
/obj/item/weapon/disk/limb/bishop,
|
||||
|
||||
@@ -2,25 +2,17 @@
|
||||
* Here is where any supply packs
|
||||
* related to security tasks live
|
||||
*/
|
||||
/datum/supply_packs/sci
|
||||
/datum/supply_pack/sci
|
||||
group = "Science"
|
||||
|
||||
/datum/supply_packs/sci/virus
|
||||
name = "Virus sample crate"
|
||||
contains = list(/obj/item/weapon/virusdish/random = 4)
|
||||
cost = 25
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Virus sample crate"
|
||||
access = access_cmo
|
||||
|
||||
/datum/supply_packs/sci/coolanttank
|
||||
/datum/supply_pack/sci/coolanttank
|
||||
name = "Coolant tank crate"
|
||||
contains = list(/obj/structure/reagent_dispensers/coolanttank)
|
||||
cost = 15
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "coolant tank crate"
|
||||
|
||||
/datum/supply_packs/sci/phoron
|
||||
/datum/supply_pack/sci/phoron
|
||||
name = "Phoron research crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/tank/phoron = 3,
|
||||
@@ -36,7 +28,7 @@
|
||||
containername = "Phoron assembly crate"
|
||||
access = access_tox_storage
|
||||
|
||||
/datum/supply_packs/sci/exoticseeds
|
||||
/datum/supply_pack/sci/exoticseeds
|
||||
name = "Exotic seeds crate"
|
||||
contains = list(
|
||||
/obj/item/seeds/replicapod = 2,
|
||||
@@ -51,14 +43,14 @@
|
||||
containername = "Exotic Seeds crate"
|
||||
access = access_hydroponics
|
||||
|
||||
/datum/supply_packs/sci/integrated_circuit_printer
|
||||
/datum/supply_pack/sci/integrated_circuit_printer
|
||||
name = "Integrated circuit printer"
|
||||
contains = list(/obj/item/device/integrated_circuit_printer = 2)
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Integrated circuit crate"
|
||||
|
||||
/datum/supply_packs/sci/integrated_circuit_printer_upgrade
|
||||
/datum/supply_pack/sci/integrated_circuit_printer_upgrade
|
||||
name = "Integrated circuit printer upgrade - advanced designs"
|
||||
contains = list(/obj/item/weapon/disk/integrated_circuit/upgrade/advanced)
|
||||
cost = 30
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
/datum/supply_packs/sci/dune_buggy
|
||||
/datum/supply_pack/sci/dune_buggy
|
||||
name = "Exploration Dune Buggy"
|
||||
contains = list(
|
||||
/obj/vehicle/train/rover/engine/dunebuggy
|
||||
@@ -8,14 +8,14 @@
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "Exploration Dune Buggy Crate"
|
||||
*/
|
||||
/datum/supply_packs/sci/pred
|
||||
/datum/supply_pack/sci/pred
|
||||
name = "Dangerous Predator crate"
|
||||
cost = 40
|
||||
containertype = /obj/structure/largecrate/animal/pred
|
||||
containername = "Dangerous Predator crate"
|
||||
access = access_xenobiology
|
||||
|
||||
/datum/supply_packs/sci/pred_doom
|
||||
/datum/supply_pack/sci/pred_doom
|
||||
name = "EXTREMELY Dangerous Predator crate"
|
||||
cost = 200
|
||||
containertype = /obj/structure/largecrate/animal/dangerous
|
||||
@@ -23,14 +23,14 @@
|
||||
access = access_xenobiology
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/sci/otie
|
||||
/datum/supply_pack/sci/otie
|
||||
name = "VARMAcorp adoptable reject (Dangerous!)"
|
||||
cost = 100
|
||||
containertype = /obj/structure/largecrate/animal/otie
|
||||
containername = "VARMAcorp adoptable reject (Dangerous!)"
|
||||
access = access_xenobiology
|
||||
|
||||
/datum/supply_packs/sci/phoronotie
|
||||
/datum/supply_pack/sci/phoronotie
|
||||
name = "VARMAcorp adaptive beta subject (Experimental)"
|
||||
cost = 200
|
||||
containertype = /obj/structure/largecrate/animal/otie/phoron
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/security
|
||||
/datum/supply_pack/security
|
||||
group = "Security"
|
||||
access = access_security
|
||||
|
||||
/datum/supply_packs/randomised/security
|
||||
/datum/supply_pack/randomised/security
|
||||
group = "Security"
|
||||
access = access_security
|
||||
|
||||
/datum/supply_packs/randomised/security/armor
|
||||
/datum/supply_pack/randomised/security/armor
|
||||
name = "Armor - Security armor"
|
||||
num_contained = 5
|
||||
contains = list(
|
||||
@@ -33,7 +33,7 @@
|
||||
containername = "Armor crate"
|
||||
access_armory //VOREStation Add - Armor is for the armory.
|
||||
|
||||
/datum/supply_packs/security/riot_gear
|
||||
/datum/supply_pack/security/riot_gear
|
||||
name = "Gear - Riot"
|
||||
contains = list(
|
||||
/obj/item/weapon/melee/baton = 3,
|
||||
@@ -48,7 +48,7 @@
|
||||
containername = "Riot gear crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/security/riot_armor
|
||||
/datum/supply_pack/security/riot_armor
|
||||
name = "Armor - Riot"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
@@ -61,7 +61,7 @@
|
||||
containername = "Riot armor crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/security/ablative_armor
|
||||
/datum/supply_pack/security/ablative_armor
|
||||
name = "Armor - Ablative"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/helmet/laserproof,
|
||||
@@ -74,7 +74,7 @@
|
||||
containername = "Ablative armor crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/security/bullet_resistant_armor
|
||||
/datum/supply_pack/security/bullet_resistant_armor
|
||||
name = "Armor - Ballistic"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/helmet/bulletproof,
|
||||
@@ -87,7 +87,7 @@
|
||||
containername = "Ballistic armor crate"
|
||||
access = access_armory
|
||||
/* VOREStation Removal - Howabout no ERT armor being orderable?
|
||||
/datum/supply_packs/security/combat_armor
|
||||
/datum/supply_pack/security/combat_armor
|
||||
name = "Armor - Combat"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/helmet/combat,
|
||||
@@ -100,7 +100,7 @@
|
||||
containername = "Combat armor crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/security/tactical
|
||||
/datum/supply_pack/security/tactical
|
||||
name = "Armor - Tactical"
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
containername = "Tactical armor crate"
|
||||
@@ -125,7 +125,7 @@
|
||||
/obj/item/clothing/gloves/black
|
||||
)
|
||||
*/
|
||||
/datum/supply_packs/security/securitybarriers
|
||||
/datum/supply_pack/security/securitybarriers
|
||||
name = "Misc - Security Barriers"
|
||||
contains = list(/obj/machinery/deployable/barrier = 4)
|
||||
cost = 20
|
||||
@@ -133,7 +133,7 @@
|
||||
containername = "Security barrier crate"
|
||||
access = null
|
||||
|
||||
/datum/supply_packs/security/securityshieldgen
|
||||
/datum/supply_pack/security/securityshieldgen
|
||||
name = "Misc - Wall shield generators"
|
||||
contains = list(/obj/machinery/shieldwallgen = 4)
|
||||
cost = 20
|
||||
@@ -141,7 +141,7 @@
|
||||
containername = "Wall shield generators crate"
|
||||
access = access_teleporter
|
||||
|
||||
/datum/supply_packs/randomised/security/holster
|
||||
/datum/supply_pack/randomised/security/holster
|
||||
name = "Gear - Holsters"
|
||||
num_contained = 4
|
||||
contains = list(
|
||||
@@ -154,7 +154,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Holster crate"
|
||||
|
||||
/datum/supply_packs/security/extragear
|
||||
/datum/supply_pack/security/extragear
|
||||
name = "Gear - Security surplus equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/belt/security = 3,
|
||||
@@ -166,7 +166,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Security surplus equipment"
|
||||
|
||||
/datum/supply_packs/security/detectivegear
|
||||
/datum/supply_pack/security/detectivegear
|
||||
name = "Forensic - Investigation equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/evidence = 2,
|
||||
@@ -193,7 +193,7 @@
|
||||
containername = "Forensic equipment"
|
||||
access = access_forensics_lockers
|
||||
|
||||
/datum/supply_packs/security/detectiveclothes
|
||||
/datum/supply_pack/security/detectiveclothes
|
||||
name = "Forensic - Investigation apparel"
|
||||
contains = list(
|
||||
/obj/item/clothing/under/det/black = 2,
|
||||
@@ -215,7 +215,7 @@
|
||||
containername = "Investigation clothing"
|
||||
access = access_forensics_lockers
|
||||
|
||||
/datum/supply_packs/security/officergear
|
||||
/datum/supply_pack/security/officergear
|
||||
name = "Gear - Officer equipment"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/storage/vest/officer,
|
||||
@@ -245,7 +245,7 @@
|
||||
containername = "Officer equipment"
|
||||
access = access_brig
|
||||
|
||||
/datum/supply_packs/security/wardengear
|
||||
/datum/supply_pack/security/wardengear
|
||||
name = "Gear - Warden equipment"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/storage/vest/warden,
|
||||
@@ -273,7 +273,7 @@
|
||||
containername = "Warden equipment"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/security/headofsecgear
|
||||
/datum/supply_pack/security/headofsecgear
|
||||
name = "Gear - Head of security equipment"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/helmet/HoS,
|
||||
@@ -299,7 +299,7 @@
|
||||
containername = "Head of security equipment"
|
||||
access = access_hos
|
||||
|
||||
/datum/supply_packs/security/securityclothing
|
||||
/datum/supply_pack/security/securityclothing
|
||||
name = "Misc - Security uniform red"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||
@@ -317,7 +317,7 @@
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Security uniform crate"
|
||||
|
||||
/datum/supply_packs/security/navybluesecurityclothing
|
||||
/datum/supply_pack/security/navybluesecurityclothing
|
||||
name = "Misc - Security uniform navy blue"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||
@@ -338,7 +338,7 @@
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Navy blue security uniform crate"
|
||||
|
||||
/datum/supply_packs/security/corporatesecurityclothing
|
||||
/datum/supply_pack/security/corporatesecurityclothing
|
||||
name = "Misc - Security uniform corporate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/backpack/satchel/sec = 2,
|
||||
@@ -358,7 +358,7 @@
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Corporate security uniform crate"
|
||||
|
||||
/datum/supply_packs/security/biosuit
|
||||
/datum/supply_pack/security/biosuit
|
||||
name = "Gear - Security biohazard gear"
|
||||
contains = list(
|
||||
/obj/item/clothing/head/bio_hood/security = 3,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/supply_packs/security/guardbeast
|
||||
/datum/supply_pack/security/guardbeast
|
||||
name = "VARMAcorp autoNOMous security solution"
|
||||
cost = 150
|
||||
containertype = /obj/structure/largecrate/animal/guardbeast
|
||||
@@ -7,7 +7,7 @@
|
||||
access_security,
|
||||
access_xenobiology)
|
||||
|
||||
/datum/supply_packs/security/guardmutant
|
||||
/datum/supply_pack/security/guardmutant
|
||||
name = "VARMAcorp autoNOMous security solution for hostile environments"
|
||||
cost = 250
|
||||
containertype = /obj/structure/largecrate/animal/guardmutant
|
||||
@@ -16,7 +16,7 @@
|
||||
access_security,
|
||||
access_xenobiology)
|
||||
|
||||
/datum/supply_packs/security/biosuit
|
||||
/datum/supply_pack/security/biosuit
|
||||
contains = list(
|
||||
/obj/item/clothing/head/bio_hood/security = 3,
|
||||
/obj/item/clothing/under/rank/security = 3,
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
* related to civilian tasks live
|
||||
*/
|
||||
|
||||
/datum/supply_packs/supply
|
||||
/datum/supply_pack/supply
|
||||
group = "Supplies"
|
||||
|
||||
/datum/supply_packs/supply/food
|
||||
/datum/supply_pack/supply/food
|
||||
name = "Kitchen supply crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour = 6,
|
||||
@@ -20,14 +20,14 @@
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Food crate"
|
||||
|
||||
/datum/supply_packs/supply/toner
|
||||
/datum/supply_pack/supply/toner
|
||||
name = "Toner cartridges"
|
||||
contains = list(/obj/item/device/toner = 6)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Toner cartridges"
|
||||
|
||||
/datum/supply_packs/supply/janitor
|
||||
/datum/supply_pack/supply/janitor
|
||||
name = "Janitorial supplies"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
@@ -50,7 +50,7 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Janitorial supplies"
|
||||
|
||||
/datum/supply_packs/supply/shipping
|
||||
/datum/supply_pack/supply/shipping
|
||||
name = "Shipping supplies"
|
||||
contains = list(
|
||||
/obj/fiftyspawner/cardboard,
|
||||
@@ -58,13 +58,13 @@
|
||||
/obj/item/weapon/wrapping_paper = 2,
|
||||
/obj/item/device/destTagger,
|
||||
/obj/item/weapon/hand_labeler,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/tool/wirecutters,
|
||||
/obj/item/weapon/tape_roll = 2)
|
||||
cost = 10
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Shipping supplies crate"
|
||||
|
||||
/datum/supply_packs/supply/bureaucracy
|
||||
/datum/supply_pack/supply/bureaucracy
|
||||
contains = list(
|
||||
/obj/item/weapon/clipboard = 2,
|
||||
/obj/item/weapon/pen/red,
|
||||
@@ -84,14 +84,14 @@
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Office supplies crate"
|
||||
|
||||
/datum/supply_packs/supply/spare_pda
|
||||
/datum/supply_pack/supply/spare_pda
|
||||
name = "Spare PDAs"
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Spare PDA crate"
|
||||
contains = list(/obj/item/device/pda = 3)
|
||||
|
||||
/datum/supply_packs/supply/minergear
|
||||
/datum/supply_pack/supply/minergear
|
||||
name = "Shaft miner equipment"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/backpack/industrial,
|
||||
@@ -114,24 +114,24 @@
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Shaft miner equipment"
|
||||
access = access_mining
|
||||
/* //VOREStation Edit
|
||||
/datum/supply_packs/supply/mule
|
||||
/* //VOREStation Edit - Pointless on Tether.
|
||||
/datum/supply_pack/supply/mule
|
||||
name = "Mulebot Crate"
|
||||
contains = list()
|
||||
cost = 20
|
||||
containertype = /obj/structure/largecrate/animal/mulebot
|
||||
containername = "Mulebot Crate"
|
||||
*/ //VOREStation Edit
|
||||
/datum/supply_packs/supply/cargotrain
|
||||
/datum/supply_pack/supply/cargotrain
|
||||
name = "Cargo Train Tug"
|
||||
contains = list(/obj/vehicle/train/cargo/engine)
|
||||
contains = list(/obj/vehicle/train/engine)
|
||||
cost = 35
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "Cargo Train Tug Crate"
|
||||
|
||||
/datum/supply_packs/supply/cargotrailer
|
||||
/datum/supply_pack/supply/cargotrailer
|
||||
name = "Cargo Train Trolley"
|
||||
contains = list(/obj/vehicle/train/cargo/trolley)
|
||||
contains = list(/obj/vehicle/train/trolley)
|
||||
cost = 15
|
||||
containertype = /obj/structure/largecrate
|
||||
containername = "Cargo Train Trolley Crate"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//ANOTER NOTE: Contraband is obtainable through modified supplycomp circuitboards.
|
||||
//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle.
|
||||
//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points.
|
||||
//NOTE NOTE: Hidden var is now deprecated, whoever removed support for it should've removed the var altogether
|
||||
|
||||
//var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Atmospherics","Medical","Reagents","Reagent Cartridges","Science","Hydroponics", "Supply", "Miscellaneous")
|
||||
var/list/all_supply_groups = list("Atmospherics",
|
||||
@@ -24,30 +25,35 @@ var/list/all_supply_groups = list("Atmospherics",
|
||||
"Supplies",
|
||||
"Voidsuits")
|
||||
|
||||
/datum/supply_packs
|
||||
/datum/supply_pack
|
||||
var/name = null
|
||||
var/list/contains = list()
|
||||
var/manifest = ""
|
||||
var/list/contains = list() // Typepaths, used to actually spawn the contents
|
||||
var/list/manifest = list() // Object names, used to compile manifests
|
||||
var/cost = null
|
||||
var/containertype = null
|
||||
var/containername = null
|
||||
var/access = null
|
||||
var/hidden = 0
|
||||
var/contraband = 0
|
||||
var/num_contained = 0 //number of items picked to be contained in a /randomised crate
|
||||
var/group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/New()
|
||||
manifest += "<ul>"
|
||||
/datum/supply_pack/New()
|
||||
for(var/path in contains)
|
||||
if(!path || !ispath(path, /atom))
|
||||
continue
|
||||
var/atom/O = path
|
||||
manifest += "<li>[initial(O.name)]</li>"
|
||||
manifest += "</ul>"
|
||||
manifest += "\proper[initial(O.name)]"
|
||||
|
||||
/datum/supply_packs/randomised
|
||||
var/num_contained //number of items picked to be contained in a randomised crate
|
||||
/datum/supply_pack/proc/get_html_manifest()
|
||||
var/dat = ""
|
||||
if(num_contained)
|
||||
dat +="Contains any [num_contained] of:"
|
||||
dat += "<ul>"
|
||||
for(var/O in manifest)
|
||||
dat += "<li>[O]</li>"
|
||||
dat += "</ul>"
|
||||
return dat
|
||||
|
||||
/datum/supply_packs/randomised/New()
|
||||
manifest += "Contains any [num_contained] of:"
|
||||
..()
|
||||
// Keeping this subtype here for posterity, so it's more apparent that this is the subtype to use if making new randomised packs
|
||||
/datum/supply_pack/randomised
|
||||
num_contained = 1
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_packs/voidsuits
|
||||
/datum/supply_pack/voidsuits
|
||||
group = "Voidsuits"
|
||||
|
||||
/datum/supply_packs/voidsuits/atmos
|
||||
/datum/supply_pack/voidsuits/atmos
|
||||
name = "Atmospheric voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/atmos = 2,
|
||||
@@ -21,7 +21,7 @@
|
||||
containername = "Atmospheric voidsuit crate"
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/voidsuits/atmos/alt
|
||||
/datum/supply_pack/voidsuits/atmos/alt
|
||||
name = "Heavy Duty Atmospheric voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/atmos/alt = 2,
|
||||
@@ -35,7 +35,7 @@
|
||||
containername = "Heavy Duty Atmospheric voidsuit crate"
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/voidsuits/engineering
|
||||
/datum/supply_pack/voidsuits/engineering
|
||||
name = "Engineering voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/engineering = 2,
|
||||
@@ -49,7 +49,7 @@
|
||||
containername = "Engineering voidsuit crate"
|
||||
access = access_engine_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/engineering/construction
|
||||
/datum/supply_pack/voidsuits/engineering/construction
|
||||
name = "Engineering Construction voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/engineering/construction = 2,
|
||||
@@ -63,7 +63,7 @@
|
||||
containername = "Engineering Construction voidsuit crate"
|
||||
access = access_engine_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/engineering/hazmat
|
||||
/datum/supply_pack/voidsuits/engineering/hazmat
|
||||
name = "Engineering Hazmat voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/engineering/hazmat = 2,
|
||||
@@ -77,7 +77,7 @@
|
||||
containername = "Engineering Hazmat voidsuit crate"
|
||||
access = access_engine_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/engineering/alt
|
||||
/datum/supply_pack/voidsuits/engineering/alt
|
||||
name = "Reinforced Engineering voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/engineering/alt = 2,
|
||||
@@ -91,7 +91,7 @@
|
||||
containername = "Reinforced Engineering voidsuit crate"
|
||||
access = access_engine_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/medical
|
||||
/datum/supply_pack/voidsuits/medical
|
||||
name = "Medical voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/medical = 2,
|
||||
@@ -105,7 +105,7 @@
|
||||
containername = "Medical voidsuit crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/medical/emt
|
||||
/datum/supply_pack/voidsuits/medical/emt
|
||||
name = "Medical EMT voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/medical/emt = 2,
|
||||
@@ -119,7 +119,7 @@
|
||||
containername = "Medical EMT voidsuit crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/medical/bio
|
||||
/datum/supply_pack/voidsuits/medical/bio
|
||||
name = "Medical Biohazard voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/medical/bio = 2,
|
||||
@@ -133,7 +133,7 @@
|
||||
containername = "Medical Biohazard voidsuit crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/medical/alt
|
||||
/datum/supply_pack/voidsuits/medical/alt
|
||||
name = "Vey-Med Medical voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/medical/alt = 2,
|
||||
@@ -147,7 +147,7 @@
|
||||
containername = "Vey-Med Medical voidsuit crate"
|
||||
access = access_medical_equip
|
||||
|
||||
/datum/supply_packs/voidsuits/security
|
||||
/datum/supply_pack/voidsuits/security
|
||||
name = "Security voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/security = 2,
|
||||
@@ -160,7 +160,7 @@
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Security voidsuit crate"
|
||||
|
||||
/datum/supply_packs/voidsuits/security/crowd
|
||||
/datum/supply_pack/voidsuits/security/crowd
|
||||
name = "Security Crowd Control voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/security/riot = 2,
|
||||
@@ -174,7 +174,7 @@
|
||||
containername = "Security Crowd Control voidsuit crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/voidsuits/security/alt
|
||||
/datum/supply_pack/voidsuits/security/alt
|
||||
name = "Security EVA Riot voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/security/alt = 2,
|
||||
@@ -188,7 +188,7 @@
|
||||
containername = "Security EVA Riot voidsuit crate"
|
||||
access = access_armory
|
||||
|
||||
/datum/supply_packs/voidsuits/supply
|
||||
/datum/supply_pack/voidsuits/supply
|
||||
name = "Mining voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/mining = 2,
|
||||
@@ -201,7 +201,7 @@
|
||||
containername = "Mining voidsuit crate"
|
||||
access = access_mining
|
||||
|
||||
/datum/supply_packs/voidsuits/supply/alt
|
||||
/datum/supply_pack/voidsuits/supply/alt
|
||||
name = "Frontier Mining voidsuits"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/mining/alt = 2,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user