mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-21 03:56:47 +01:00
Polaris Sync
This commit is contained in:
@@ -164,7 +164,7 @@
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, filter = RADIO_ATMOSIA)
|
||||
radio_connection = radio_controller.add_object(src, frequency, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/binary/dp_vent_pump/proc/broadcast_status()
|
||||
if(!radio_connection)
|
||||
@@ -185,7 +185,7 @@
|
||||
"external" = external_pressure_bound,
|
||||
"sigtype" = "status"
|
||||
)
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//--------------------------------------------
|
||||
// Gas filter - omni variant
|
||||
//--------------------------------------------
|
||||
/obj/machinery/atmospherics/omni/filter
|
||||
/obj/machinery/atmospherics/omni/atmos_filter
|
||||
name = "omni gas filter"
|
||||
icon_state = "map_filter"
|
||||
|
||||
var/list/filters = new()
|
||||
var/list/atmos_filters = new()
|
||||
var/datum/omni_port/input
|
||||
var/datum/omni_port/output
|
||||
|
||||
@@ -18,27 +18,27 @@
|
||||
|
||||
var/list/filtering_outputs = list() //maps gasids to gas_mixtures
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/New()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/New()
|
||||
..()
|
||||
rebuild_filtering_list()
|
||||
for(var/datum/omni_port/P in ports)
|
||||
P.air.volume = ATMOS_DEFAULT_VOLUME_FILTER
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/Destroy()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/Destroy()
|
||||
input = null
|
||||
output = null
|
||||
filters.Cut()
|
||||
atmos_filters.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/sort_ports()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/sort_ports()
|
||||
for(var/datum/omni_port/P in ports)
|
||||
if(P.update)
|
||||
if(output == P)
|
||||
output = null
|
||||
if(input == P)
|
||||
input = null
|
||||
if(filters.Find(P))
|
||||
filters -= P
|
||||
if(atmos_filters.Find(P))
|
||||
atmos_filters -= P
|
||||
|
||||
P.air.volume = 200
|
||||
switch(P.mode)
|
||||
@@ -47,17 +47,17 @@
|
||||
if(ATM_OUTPUT)
|
||||
output = P
|
||||
if(ATM_O2 to ATM_N2O)
|
||||
filters += P
|
||||
atmos_filters += P
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/error_check()
|
||||
if(!input || !output || !filters)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/error_check()
|
||||
if(!input || !output || !atmos_filters)
|
||||
return 1
|
||||
if(filters.len < 1) //requires at least 1 filter ~otherwise why are you using a filter?
|
||||
if(atmos_filters.len < 1) //requires at least 1 atmos_filter ~otherwise why are you using a filter?
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/process()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/process()
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
@@ -79,13 +79,13 @@
|
||||
input.network.update = 1
|
||||
if(output.network)
|
||||
output.network.update = 1
|
||||
for(var/datum/omni_port/P in filters)
|
||||
for(var/datum/omni_port/P in atmos_filters)
|
||||
if(P.network)
|
||||
P.network.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
usr.set_machine(src)
|
||||
|
||||
var/list/data = new()
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/build_uidata()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/build_uidata()
|
||||
var/list/data = new()
|
||||
|
||||
data["power"] = use_power
|
||||
@@ -113,22 +113,22 @@
|
||||
|
||||
var/input = 0
|
||||
var/output = 0
|
||||
var/filter = 1
|
||||
var/atmo_filter = 1
|
||||
var/f_type = null
|
||||
switch(P.mode)
|
||||
if(ATM_INPUT)
|
||||
input = 1
|
||||
filter = 0
|
||||
atmo_filter = 0
|
||||
if(ATM_OUTPUT)
|
||||
output = 1
|
||||
filter = 0
|
||||
atmo_filter = 0
|
||||
if(ATM_O2 to ATM_N2O)
|
||||
f_type = mode_send_switch(P.mode)
|
||||
|
||||
portData[++portData.len] = list("dir" = dir_name(P.dir, capitalize = 1), \
|
||||
"input" = input, \
|
||||
"output" = output, \
|
||||
"filter" = filter, \
|
||||
"atmo_filter" = atmo_filter, \
|
||||
"f_type" = f_type)
|
||||
|
||||
if(portData.len)
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/mode_send_switch(var/mode = ATM_NONE)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/mode_send_switch(var/mode = ATM_NONE)
|
||||
switch(mode)
|
||||
if(ATM_O2)
|
||||
return "Oxygen"
|
||||
@@ -154,7 +154,7 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/Topic(href, href_list)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
switch(href_list["command"])
|
||||
if("power")
|
||||
@@ -183,7 +183,7 @@
|
||||
nanomanager.update_uis(src)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/mode_return_switch(var/mode)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/mode_return_switch(var/mode)
|
||||
switch(mode)
|
||||
if("Oxygen")
|
||||
return ATM_O2
|
||||
@@ -204,7 +204,7 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/switch_filter(var/dir, var/mode)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/switch_filter(var/dir, var/mode)
|
||||
//check they aren't trying to disable the input or output ~this can only happen if they hack the cached tmpl file
|
||||
for(var/datum/omni_port/P in ports)
|
||||
if(P.dir == dir)
|
||||
@@ -213,7 +213,7 @@
|
||||
|
||||
switch_mode(dir, mode)
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/switch_mode(var/port, var/mode)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/switch_mode(var/port, var/mode)
|
||||
if(mode == null || !port)
|
||||
return
|
||||
var/datum/omni_port/target_port = null
|
||||
@@ -246,14 +246,14 @@
|
||||
|
||||
update_ports()
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/rebuild_filtering_list()
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/rebuild_filtering_list()
|
||||
filtering_outputs.Cut()
|
||||
for(var/datum/omni_port/P in ports)
|
||||
var/gasid = mode_to_gasid(P.mode)
|
||||
if(gasid)
|
||||
filtering_outputs[gasid] = P.air
|
||||
|
||||
/obj/machinery/atmospherics/omni/filter/proc/handle_port_change(var/datum/omni_port/P)
|
||||
/obj/machinery/atmospherics/omni/atmos_filter/proc/handle_port_change(var/datum/omni_port/P)
|
||||
switch(P.mode)
|
||||
if(ATM_NONE)
|
||||
initialize_directions &= ~P.dir
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
var/core_icon = null
|
||||
if(istype(src, /obj/machinery/atmospherics/omni/mixer))
|
||||
core_icon = "mixer"
|
||||
else if(istype(src, /obj/machinery/atmospherics/omni/filter))
|
||||
else if(istype(src, /obj/machinery/atmospherics/omni/atmos_filter))
|
||||
core_icon = "filter"
|
||||
else
|
||||
return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/machinery/atmospherics/trinary/filter
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter
|
||||
icon = 'icons/atmos/filter.dmi'
|
||||
icon_state = "map"
|
||||
density = 0
|
||||
@@ -30,13 +30,13 @@
|
||||
var/frequency = 0
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/proc/set_frequency(new_frequency)
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/proc/set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/New()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/New()
|
||||
..()
|
||||
switch(filter_type)
|
||||
if(0) //removing hydrocarbons
|
||||
@@ -54,8 +54,8 @@
|
||||
air2.volume = ATMOS_DEFAULT_VOLUME_FILTER
|
||||
air3.volume = ATMOS_DEFAULT_VOLUME_FILTER
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/update_icon()
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/filter/m_filter))
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/update_icon()
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
|
||||
icon_state = "m"
|
||||
else
|
||||
icon_state = ""
|
||||
@@ -68,7 +68,7 @@
|
||||
icon_state += "off"
|
||||
use_power = 0
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/update_underlays()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/update_underlays()
|
||||
if(..())
|
||||
underlays.Cut()
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -77,23 +77,23 @@
|
||||
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/filter/m_filter))
|
||||
if(istype(src, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
|
||||
add_underlay(T, node2, turn(dir, 90))
|
||||
else
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/hide(var/i)
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/hide(var/i)
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/power_change()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/power_change()
|
||||
var/old_stat = stat
|
||||
..()
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/process()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/process()
|
||||
..()
|
||||
|
||||
last_power_draw = 0
|
||||
@@ -124,11 +124,11 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/initialize()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/initialize()
|
||||
set_frequency(frequency)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!can_unwrench())
|
||||
@@ -146,7 +146,7 @@
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/attack_hand(user as mob) // -- TLE
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -188,11 +188,11 @@
|
||||
<B>Flow rate: </B>[round(last_flow_rate, 0.1)]L/s
|
||||
"}
|
||||
|
||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmo_filter")
|
||||
onclose(user, "atmo_filter")
|
||||
user << browse("<HEAD><TITLE>[src.name] control</TITLE></HEAD><TT>[dat]</TT>", "window=atmos_filter")
|
||||
onclose(user, "atmos_filter")
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/Topic(href, href_list) // -- TLE
|
||||
if(..())
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
@@ -230,13 +230,13 @@
|
||||
*/
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/m_filter
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter
|
||||
icon_state = "mmap"
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH|EAST
|
||||
|
||||
obj/machinery/atmospherics/trinary/filter/m_filter/init_dir()
|
||||
obj/machinery/atmospherics/trinary/atmos_filter/m_filter/init_dir()
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
initialize_directions = WEST|NORTH|SOUTH
|
||||
@@ -247,7 +247,7 @@ obj/machinery/atmospherics/trinary/filter/m_filter/init_dir()
|
||||
if(WEST)
|
||||
initialize_directions = WEST|SOUTH|EAST
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/m_filter/initialize()
|
||||
/obj/machinery/atmospherics/trinary/atmos_filter/m_filter/initialize()
|
||||
set_frequency(frequency)
|
||||
|
||||
if(node1 && node2 && node3) return
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
#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"
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#define NO_POISON 0x20 // Cannot not suffer toxloss.
|
||||
#define NO_EMBED 0x40 // Can step on broken glass with no ill-effects and cannot have shrapnel embedded in it.
|
||||
#define NO_HALLUCINATION 0x80 // Don't hallucinate, ever
|
||||
#define NO_BLOOD 0x100 // Never bleed, never show blood amount
|
||||
#define UNDEAD 0x200 // Various things that living things don't do, mostly for skeletons
|
||||
// unused: 0x8000 - higher than this will overflow
|
||||
|
||||
// Species spawn flags
|
||||
|
||||
@@ -24,6 +24,15 @@
|
||||
|
||||
return mobs
|
||||
|
||||
/proc/mobs_in_xray_view(var/range, var/source)
|
||||
var/list/mobs = list()
|
||||
for(var/atom/movable/AM in orange(range, source))
|
||||
var/M = AM.get_mob()
|
||||
if(M)
|
||||
mobs += M
|
||||
|
||||
return mobs
|
||||
|
||||
proc/random_hair_style(gender, species = "Human")
|
||||
var/h_style = "Bald"
|
||||
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
Note that walkie-talkie, intercoms and headsets handle transmission using nonstandard way.
|
||||
procs:
|
||||
|
||||
add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null)
|
||||
add_object(obj/device as obj, var/new_frequency as num, var/radio_filter as text|null = null)
|
||||
Adds listening object.
|
||||
parameters:
|
||||
device - device receiving signals, must have proc receive_signal (see description below).
|
||||
one device may listen several frequencies, but not same frequency twice.
|
||||
new_frequency - see possibly frequencies below;
|
||||
filter - thing for optimization. Optional, but recommended.
|
||||
radio_filter - thing for optimization. Optional, but recommended.
|
||||
All filters should be consolidated in this file, see defines later.
|
||||
Device without listening filter will receive all signals (on specified frequency).
|
||||
Device with filter will receive any signals sent without filter.
|
||||
@@ -30,12 +30,12 @@
|
||||
radio_frequency is a global object maintaining list of devices that listening specific frequency.
|
||||
procs:
|
||||
|
||||
post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|null = null, var/range as num|null = null)
|
||||
post_signal(obj/source as obj|null, datum/signal/signal, var/radio_filter as text|null = null, var/range as num|null = null)
|
||||
Sends signal to all devices that wants such signal.
|
||||
parameters:
|
||||
source - object, emitted signal. Usually, devices will not receive their own signals.
|
||||
signal - see description below.
|
||||
filter - described above.
|
||||
radio_filter - described above.
|
||||
range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels.
|
||||
|
||||
obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param)
|
||||
@@ -220,7 +220,7 @@ var/global/datum/controller/radio/radio_controller
|
||||
/datum/controller/radio
|
||||
var/list/datum/radio_frequency/frequencies = list()
|
||||
|
||||
/datum/controller/radio/proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null)
|
||||
/datum/controller/radio/proc/add_object(obj/device as obj, var/new_frequency as num, var/radio_filter = null as text|null)
|
||||
var/f_text = num2text(new_frequency)
|
||||
var/datum/radio_frequency/frequency = frequencies[f_text]
|
||||
|
||||
@@ -229,7 +229,7 @@ var/global/datum/controller/radio/radio_controller
|
||||
frequency.frequency = new_frequency
|
||||
frequencies[f_text] = frequency
|
||||
|
||||
frequency.add_listener(device, filter)
|
||||
frequency.add_listener(device, radio_filter)
|
||||
return frequency
|
||||
|
||||
/datum/controller/radio/proc/remove_object(obj/device, old_frequency)
|
||||
@@ -260,15 +260,15 @@ var/global/datum/controller/radio/radio_controller
|
||||
var/frequency as num
|
||||
var/list/list/obj/devices = list()
|
||||
|
||||
/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null)
|
||||
/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, var/radio_filter = null as text|null, var/range = null as num|null)
|
||||
var/turf/start_point
|
||||
if(range)
|
||||
start_point = get_turf(source)
|
||||
if(!start_point)
|
||||
qdel(signal)
|
||||
return 0
|
||||
if (filter)
|
||||
send_to_filter(source, signal, filter, start_point, range)
|
||||
if (radio_filter)
|
||||
send_to_filter(source, signal, radio_filter, start_point, range)
|
||||
send_to_filter(source, signal, RADIO_DEFAULT, start_point, range)
|
||||
else
|
||||
//Broadcast the signal to everyone!
|
||||
@@ -276,11 +276,11 @@ var/global/datum/controller/radio/radio_controller
|
||||
send_to_filter(source, signal, next_filter, start_point, range)
|
||||
|
||||
//Sends a signal to all machines belonging to a given filter. Should be called by post_signal()
|
||||
/datum/radio_frequency/proc/send_to_filter(obj/source, datum/signal/signal, var/filter, var/turf/start_point = null, var/range = null)
|
||||
/datum/radio_frequency/proc/send_to_filter(obj/source, datum/signal/signal, var/radio_filter, var/turf/start_point = null, var/range = null)
|
||||
if (range && !start_point)
|
||||
return
|
||||
|
||||
for(var/obj/device in devices[filter])
|
||||
for(var/obj/device in devices[radio_filter])
|
||||
if(device == source)
|
||||
continue
|
||||
if(range)
|
||||
@@ -292,14 +292,14 @@ var/global/datum/controller/radio/radio_controller
|
||||
|
||||
device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
|
||||
|
||||
/datum/radio_frequency/proc/add_listener(obj/device as obj, var/filter as text|null)
|
||||
if (!filter)
|
||||
filter = RADIO_DEFAULT
|
||||
//log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]")
|
||||
var/list/obj/devices_line = devices[filter]
|
||||
/datum/radio_frequency/proc/add_listener(obj/device as obj, var/radio_filter as text|null)
|
||||
if (!radio_filter)
|
||||
radio_filter = RADIO_DEFAULT
|
||||
//log_admin("add_listener(device=[device],radio_filter=[radio_filter]) frequency=[frequency]")
|
||||
var/list/obj/devices_line = devices[radio_filter]
|
||||
if (!devices_line)
|
||||
devices_line = new
|
||||
devices[filter] = devices_line
|
||||
devices[radio_filter] = devices_line
|
||||
devices_line+=device
|
||||
// var/list/obj/devices_line___ = devices[filter_str]
|
||||
// var/l = devices_line___.len
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
//used for optional self-objectives that antagonists can give themselves, which are displayed at the end of the round.
|
||||
var/ambitions
|
||||
|
||||
//used to store what traits the player had picked out in their preferences before joining, in text form.
|
||||
var/list/traits = list()
|
||||
|
||||
/datum/mind/New(var/key)
|
||||
src.key = key
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
#define OUTFIT_HAS_JETPACK 1
|
||||
#define OUTFIT_HAS_BACKPACK 2
|
||||
#define OUTFIT_EXTENDED_SURVIVAL 4
|
||||
@@ -0,0 +1,115 @@
|
||||
/decl/hierarchy/outfit/h_masked_killer
|
||||
name = "Costume - Masked Killer"
|
||||
uniform = /obj/item/clothing/under/overalls
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
gloves = /obj/item/clothing/gloves/sterile/latex
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
head = /obj/item/clothing/head/welding
|
||||
suit = /obj/item/clothing/suit/storage/apron
|
||||
r_hand = /obj/item/weapon/material/twohanded/fireaxe/foam
|
||||
|
||||
/decl/hierarchy/outfit/masked_killer/post_equip(var/mob/living/carbon/human/H)
|
||||
var/victim = get_mannequin(H.ckey)
|
||||
for(var/obj/item/carried_item in H.get_equipped_items(TRUE))
|
||||
carried_item.add_blood(victim) //Oh yes, there will be blood.. just not blood from the killer because that's odd. //If I knew how to make fake blood, I would
|
||||
|
||||
/decl/hierarchy/outfit/h_professional
|
||||
name = "Costume - Professional"
|
||||
uniform = /obj/item/clothing/under/suit_jacket{ starting_accessories=list(/obj/item/clothing/accessory/wcoat) }
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
glasses = /obj/item/clothing/glasses/fakesunglasses
|
||||
l_pocket = /obj/item/toy/sword
|
||||
|
||||
/decl/hierarchy/outfit/h_professional/post_equip(var/mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/storage/briefcase/new_briefcase = new(H)
|
||||
for(var/obj/item/briefcase_item in new_briefcase)
|
||||
qdel(briefcase_item)
|
||||
new_briefcase.contents += new /obj/item/toy/crossbow
|
||||
new_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/capgun
|
||||
new_briefcase.contents += new /obj/item/clothing/mask/gas/clown_hat
|
||||
H.equip_to_slot_or_del(new_briefcase, slot_l_hand)
|
||||
|
||||
/decl/hierarchy/outfit/h_horrorcop
|
||||
name = "Costume - Slasher Movie Cop"
|
||||
uniform = /obj/item/clothing/under/pcrc{ starting_accessories=list(/obj/item/clothing/accessory/holster) }
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
glasses = /obj/item/clothing/glasses/fakesunglasses
|
||||
mask = /obj/item/clothing/mask/fakemoustache
|
||||
head = /obj/item/clothing/head/beret
|
||||
r_hand = /obj/item/weapon/gun/projectile/revolver/capgun
|
||||
|
||||
/decl/hierarchy/outfit/h_horrorcop/post_equip(var/mob/living/carbon/human/H)
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
if(U.accessories.len)
|
||||
for(var/obj/item/clothing/accessory/A in U.accessories)
|
||||
if(istype(A, /obj/item/clothing/accessory/holster))
|
||||
var/obj/item/clothing/accessory/holster/O = A
|
||||
O.holster_verb()
|
||||
|
||||
/decl/hierarchy/outfit/h_cowboy
|
||||
name = "Costume - Cowboy"
|
||||
uniform = /obj/item/clothing/under/pants{ starting_accessories=list(/obj/item/clothing/accessory/holster) }
|
||||
shoes = /obj/item/clothing/shoes/boots/cowboy
|
||||
head = /obj/item/clothing/head/cowboy_hat
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
suit = /obj/item/clothing/accessory/poncho
|
||||
r_hand = /obj/item/weapon/gun/projectile/revolver/capgun
|
||||
|
||||
/decl/hierarchy/outfit/h_cowboy/post_equip(var/mob/living/carbon/human/H)
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
if(U.accessories.len)
|
||||
for(var/obj/item/clothing/accessory/A in U.accessories)
|
||||
if(istype(A, /obj/item/clothing/accessory/holster))
|
||||
var/obj/item/clothing/accessory/holster/O = A
|
||||
O.holster_verb()
|
||||
|
||||
/decl/hierarchy/outfit/h_lumberjack
|
||||
name = "Costume - Lumberjack"
|
||||
uniform = /obj/item/clothing/under/pants{ starting_accessories=list(/obj/item/clothing/accessory/sweater/blackneck) }
|
||||
shoes = /obj/item/clothing/shoes/boots/workboots
|
||||
head = /obj/item/clothing/head/beanie
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
suit = /obj/item/clothing/suit/storage/flannel/red
|
||||
r_hand = /obj/item/weapon/material/twohanded/fireaxe/foam
|
||||
|
||||
/decl/hierarchy/outfit/h_firefighter
|
||||
name = "Costume - Firefighter"
|
||||
uniform = /obj/item/clothing/under/pants
|
||||
shoes = /obj/item/clothing/shoes/boots/workboots
|
||||
head = /obj/item/clothing/head/hardhat/red
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
suit = /obj/item/clothing/suit/fire/firefighter
|
||||
mask = /obj/item/clothing/mask/gas
|
||||
|
||||
/decl/hierarchy/outfit/h_highlander
|
||||
name = "Costume - Highlander"
|
||||
uniform = /obj/item/clothing/under/kilt
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
head = /obj/item/clothing/head/beret
|
||||
r_hand = /obj/item/weapon/material/sword/foam
|
||||
|
||||
/decl/hierarchy/outfit/h_vampire
|
||||
name = "Costume - Vampire"
|
||||
uniform = /obj/item/clothing/under/suit_jacket/really_black
|
||||
shoes = /obj/item/clothing/shoes/dress
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
r_hand = /obj/item/weapon/bedsheet/red
|
||||
|
||||
/decl/hierarchy/outfit/h_vampire_hunter
|
||||
name = "Costume - Vampire Hunter"
|
||||
uniform = /obj/item/clothing/under/pants/tan
|
||||
suit = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
l_pocket = /obj/item/toy/crossbow
|
||||
r_pocket = /obj/item/device/flashlight/color/red
|
||||
|
||||
/decl/hierarchy/outfit/h_pirate
|
||||
name = "Costume - Pirate"
|
||||
uniform = /obj/item/clothing/under/pirate
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/helmet/space
|
||||
suit = /obj/item/clothing/suit/pirate
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
@@ -0,0 +1,62 @@
|
||||
/decl/hierarchy/outfit/tunnel_clown
|
||||
name = "Tunnel Clown"
|
||||
uniform = /obj/item/clothing/under/rank/clown
|
||||
shoes = /obj/item/clothing/shoes/clown_shoes
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
mask = /obj/item/clothing/mask/gas/clown_hat
|
||||
head = /obj/item/clothing/head/chaplain_hood
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
glasses = /obj/item/clothing/glasses/thermal/plain/monocle
|
||||
suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie
|
||||
r_pocket = /obj/item/weapon/bikehorn
|
||||
r_hand = /obj/item/weapon/material/twohanded/fireaxe
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/syndicate/station_access
|
||||
id_pda_assignment = "Tunnel Clown!"
|
||||
|
||||
/decl/hierarchy/outfit/masked_killer
|
||||
name = "Masked Killer"
|
||||
uniform = /obj/item/clothing/under/overalls
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
gloves = /obj/item/clothing/gloves/sterile/latex
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
head = /obj/item/clothing/head/welding
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
glasses = /obj/item/clothing/glasses/thermal/plain/monocle
|
||||
suit = /obj/item/clothing/suit/storage/apron
|
||||
l_pocket = /obj/item/weapon/material/hatchet/tacknife
|
||||
r_pocket = /obj/item/weapon/surgical/scalpel
|
||||
r_hand = /obj/item/weapon/material/twohanded/fireaxe
|
||||
|
||||
/decl/hierarchy/outfit/masked_killer/post_equip(var/mob/living/carbon/human/H)
|
||||
var/victim = get_mannequin(H.ckey)
|
||||
for(var/obj/item/carried_item in H.get_equipped_items(TRUE))
|
||||
carried_item.add_blood(victim) //Oh yes, there will be blood.. just not blood from the killer because that's odd
|
||||
|
||||
/decl/hierarchy/outfit/professional
|
||||
name = "Professional"
|
||||
uniform = /obj/item/clothing/under/suit_jacket{ starting_accessories=list(/obj/item/clothing/accessory/wcoat) }
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
l_pocket = /obj/item/weapon/melee/energy/sword
|
||||
mask = /obj/item/clothing/mask/gas/clown_hat
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/syndicate/station_access
|
||||
pda_slot = slot_belt
|
||||
pda_type = /obj/item/device/pda/heads
|
||||
|
||||
/decl/hierarchy/outfit/professional/post_equip(var/mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(H)
|
||||
for(var/obj/item/briefcase_item in sec_briefcase)
|
||||
qdel(briefcase_item)
|
||||
for(var/i=3, i>0, i--)
|
||||
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
|
||||
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
sec_briefcase.contents += new /obj/item/ammo_magazine/s357
|
||||
sec_briefcase.contents += new /obj/item/weapon/plastique
|
||||
H.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
|
||||
@@ -0,0 +1,2 @@
|
||||
#define OUTFIT_JOB_NAME(job_name) ("Job - " + job_name)
|
||||
#define OUTFIT_MILITARY(job_name) ("Military Uniform - " + job_name)
|
||||
@@ -0,0 +1,28 @@
|
||||
/decl/hierarchy/outfit/job/cargo
|
||||
l_ear = /obj/item/device/radio/headset/headset_cargo
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/cargo
|
||||
|
||||
/decl/hierarchy/outfit/job/cargo/qm
|
||||
name = OUTFIT_JOB_NAME("Cargo")
|
||||
uniform = /obj/item/clothing/under/rank/cargo
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
l_hand = /obj/item/weapon/clipboard
|
||||
id_type = /obj/item/weapon/card/id/cargo/head
|
||||
pda_type = /obj/item/device/pda/quartermaster
|
||||
|
||||
/decl/hierarchy/outfit/job/cargo/cargo_tech
|
||||
name = OUTFIT_JOB_NAME("Cargo technician")
|
||||
uniform = /obj/item/clothing/under/rank/cargotech
|
||||
id_type = /obj/item/weapon/card/id/cargo/cargo_tech
|
||||
pda_type = /obj/item/device/pda/cargo
|
||||
|
||||
/decl/hierarchy/outfit/job/cargo/mining
|
||||
name = OUTFIT_JOB_NAME("Shaft miner")
|
||||
uniform = /obj/item/clothing/under/rank/miner
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
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)
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
|
||||
@@ -0,0 +1,89 @@
|
||||
/decl/hierarchy/outfit/job/assistant
|
||||
name = OUTFIT_JOB_NAME("Assistant")
|
||||
id_type = /obj/item/weapon/card/id/assistant
|
||||
|
||||
/decl/hierarchy/outfit/job/assistant/visitor
|
||||
name = OUTFIT_JOB_NAME("Visitor")
|
||||
id_pda_assignment = "Visitor"
|
||||
uniform = /obj/item/clothing/under/assistantformal
|
||||
|
||||
/decl/hierarchy/outfit/job/assistant/resident
|
||||
name = OUTFIT_JOB_NAME("Resident")
|
||||
id_pda_assignment = "Resident"
|
||||
uniform = /obj/item/clothing/under/color/white
|
||||
|
||||
/decl/hierarchy/outfit/job/service
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/service
|
||||
|
||||
/decl/hierarchy/outfit/job/service/bartender
|
||||
name = OUTFIT_JOB_NAME("Bartender")
|
||||
uniform = /obj/item/clothing/under/rank/bartender
|
||||
id_type = /obj/item/weapon/card/id/civilian/bartender
|
||||
pda_type = /obj/item/device/pda/bar
|
||||
backpack_contents = list(/obj/item/clothing/accessory/permit/gun/bar = 1)
|
||||
|
||||
/decl/hierarchy/outfit/job/service/bartender/post_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
for(var/obj/item/clothing/accessory/permit/gun/bar/permit in H.back.contents)
|
||||
permit.set_name(H.real_name)
|
||||
|
||||
/decl/hierarchy/outfit/job/service/bartender/barista
|
||||
name = OUTFIT_JOB_NAME("Barista")
|
||||
id_pda_assignment = "Barista"
|
||||
backpack_contents = null
|
||||
|
||||
/decl/hierarchy/outfit/job/service/chef
|
||||
name = OUTFIT_JOB_NAME("Chef")
|
||||
uniform = /obj/item/clothing/under/rank/chef
|
||||
suit = /obj/item/clothing/suit/chef
|
||||
head = /obj/item/clothing/head/chefhat
|
||||
id_type = /obj/item/weapon/card/id/civilian/chef
|
||||
pda_type = /obj/item/device/pda/chef
|
||||
|
||||
/decl/hierarchy/outfit/job/service/chef/cook
|
||||
name = OUTFIT_JOB_NAME("Cook")
|
||||
id_pda_assignment = "Cook"
|
||||
|
||||
/decl/hierarchy/outfit/job/service/gardener
|
||||
name = OUTFIT_JOB_NAME("Gardener")
|
||||
uniform = /obj/item/clothing/under/rank/hydroponics
|
||||
suit = /obj/item/clothing/suit/storage/apron
|
||||
gloves = /obj/item/clothing/gloves/botanic_leather
|
||||
r_pocket = /obj/item/device/analyzer/plant_analyzer
|
||||
backpack = /obj/item/weapon/storage/backpack/hydroponics
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/hyd
|
||||
id_type = /obj/item/weapon/card/id/civilian/botanist
|
||||
pda_type = /obj/item/device/pda/botanist
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/hyd
|
||||
|
||||
/decl/hierarchy/outfit/job/service/janitor
|
||||
name = OUTFIT_JOB_NAME("Janitor")
|
||||
uniform = /obj/item/clothing/under/rank/janitor
|
||||
id_type = /obj/item/weapon/card/id/civilian/janitor
|
||||
pda_type = /obj/item/device/pda/janitor
|
||||
|
||||
/decl/hierarchy/outfit/job/librarian
|
||||
name = OUTFIT_JOB_NAME("Librarian")
|
||||
uniform = /obj/item/clothing/under/suit_jacket/red
|
||||
l_hand = /obj/item/weapon/barcodescanner
|
||||
id_type = /obj/item/weapon/card/id/civilian/librarian
|
||||
pda_type = /obj/item/device/pda/librarian
|
||||
|
||||
/decl/hierarchy/outfit/job/internal_affairs_agent
|
||||
name = OUTFIT_JOB_NAME("Internal affairs agent")
|
||||
l_ear = /obj/item/device/radio/headset/ia
|
||||
uniform = /obj/item/clothing/under/rank/internalaffairs
|
||||
suit = /obj/item/clothing/suit/storage/toggle/internalaffairs
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/big
|
||||
l_hand = /obj/item/weapon/storage/briefcase
|
||||
id_type = /obj/item/weapon/card/id/civilian/internal_affairs_agent
|
||||
pda_type = /obj/item/device/pda/lawyer
|
||||
|
||||
/decl/hierarchy/outfit/job/chaplain
|
||||
name = OUTFIT_JOB_NAME("Chaplain")
|
||||
uniform = /obj/item/clothing/under/rank/chaplain
|
||||
l_hand = /obj/item/weapon/storage/bible
|
||||
id_type = /obj/item/weapon/card/id/civilian/chaplain
|
||||
pda_type = /obj/item/device/pda/chaplain
|
||||
@@ -0,0 +1,50 @@
|
||||
/decl/hierarchy/outfit/job/captain
|
||||
name = OUTFIT_JOB_NAME("Captain")
|
||||
head = /obj/item/clothing/head/caphat
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
uniform = /obj/item/clothing/under/rank/captain
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
backpack = /obj/item/weapon/storage/backpack/captain
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/cap
|
||||
id_type = /obj/item/weapon/card/id/gold/captain
|
||||
pda_type = /obj/item/device/pda/captain
|
||||
backpack_contents = list(/obj/item/weapon/storage/box/ids = 1)
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/com
|
||||
|
||||
/decl/hierarchy/outfit/job/captain/post_equip(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H.age>49)
|
||||
// Since we can have something other than the default uniform at this
|
||||
// point, check if we can actually attach the medal
|
||||
var/obj/item/clothing/uniform = H.w_uniform
|
||||
if(uniform)
|
||||
var/obj/item/clothing/accessory/medal/gold/captain/medal = new()
|
||||
if(uniform.can_attach_accessory(medal))
|
||||
uniform.attach_accessory(null, medal)
|
||||
else
|
||||
qdel(medal)
|
||||
|
||||
/decl/hierarchy/outfit/job/hop
|
||||
name = OUTFIT_JOB_NAME("Head of Personnel")
|
||||
uniform = /obj/item/clothing/under/rank/head_of_personnel
|
||||
l_ear = /obj/item/device/radio/headset/heads/hop
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
id_type = /obj/item/weapon/card/id/silver/hop
|
||||
pda_type = /obj/item/device/pda/heads/hop
|
||||
backpack_contents = list(/obj/item/weapon/storage/box/ids = 1)
|
||||
|
||||
/decl/hierarchy/outfit/job/secretary
|
||||
name = OUTFIT_JOB_NAME("Command Secretary")
|
||||
l_ear = /obj/item/device/radio/headset/headset_com
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
id_type = /obj/item/weapon/card/id/silver/secretary
|
||||
pda_type = /obj/item/device/pda/heads/hop
|
||||
r_hand = /obj/item/weapon/storage/briefcase
|
||||
|
||||
/decl/hierarchy/outfit/job/secretary/pre_equip(mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H.gender == FEMALE)
|
||||
uniform = /obj/item/clothing/under/suit_jacket/female/skirt
|
||||
else
|
||||
uniform = /obj/item/clothing/under/suit_jacket/charcoal
|
||||
@@ -0,0 +1,34 @@
|
||||
/decl/hierarchy/outfit/job/engineering
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/engineering
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
l_ear = /obj/item/device/radio/headset/headset_eng
|
||||
shoes = /obj/item/clothing/shoes/boots/workboots
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/eng
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/engi
|
||||
pda_slot = slot_l_store
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
|
||||
|
||||
/decl/hierarchy/outfit/job/engineering/chief_engineer
|
||||
name = OUTFIT_JOB_NAME("Chief engineer")
|
||||
head = /obj/item/clothing/head/hardhat/white
|
||||
uniform = /obj/item/clothing/under/rank/chief_engineer
|
||||
l_ear = /obj/item/device/radio/headset/heads/ce
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
id_type = /obj/item/weapon/card/id/engineering/head
|
||||
pda_type = /obj/item/device/pda/heads/ce
|
||||
|
||||
/decl/hierarchy/outfit/job/engineering/engineer
|
||||
name = OUTFIT_JOB_NAME("Engineer")
|
||||
head = /obj/item/clothing/head/hardhat
|
||||
uniform = /obj/item/clothing/under/rank/engineer
|
||||
r_pocket = /obj/item/device/t_scanner
|
||||
id_type = /obj/item/weapon/card/id/engineering/engineer
|
||||
pda_type = /obj/item/device/pda/engineering
|
||||
|
||||
/decl/hierarchy/outfit/job/engineering/atmos
|
||||
name = OUTFIT_JOB_NAME("Atmospheric technician")
|
||||
uniform = /obj/item/clothing/under/rank/atmospheric_technician
|
||||
belt = /obj/item/weapon/storage/belt/utility/atmostech
|
||||
id_type = /obj/item/weapon/card/id/engineering/atmos
|
||||
pda_type = /obj/item/device/pda/atmos
|
||||
@@ -0,0 +1,23 @@
|
||||
/decl/hierarchy/outfit/job
|
||||
name = "Standard Gear"
|
||||
hierarchy_type = /decl/hierarchy/outfit/job
|
||||
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/civilian
|
||||
pda_slot = slot_belt
|
||||
pda_type = /obj/item/device/pda
|
||||
|
||||
flags = OUTFIT_HAS_BACKPACK
|
||||
|
||||
/decl/hierarchy/outfit/job/equip_id(mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/card/id/C = ..()
|
||||
if(H.mind)
|
||||
var/datum/mind/M = H.mind
|
||||
if(M.initial_account)
|
||||
var/datum/money_account/A = M.initial_account
|
||||
C.associated_account_number = A.account_number
|
||||
return C
|
||||
@@ -0,0 +1,105 @@
|
||||
/decl/hierarchy/outfit/job/medical
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/medical
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
pda_type = /obj/item/device/pda/medical
|
||||
pda_slot = slot_l_store
|
||||
backpack = /obj/item/weapon/storage/backpack/medic
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/med
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/med
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/cmo
|
||||
name = OUTFIT_JOB_NAME("Chief Medical Officer")
|
||||
l_ear =/obj/item/device/radio/headset/heads/cmo
|
||||
uniform = /obj/item/clothing/under/rank/chief_medical_officer
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
r_pocket = /obj/item/device/healthanalyzer
|
||||
id_type = /obj/item/weapon/card/id/medical/head
|
||||
pda_type = /obj/item/device/pda/heads/cmo
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor
|
||||
name = OUTFIT_JOB_NAME("Medical Doctor")
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
r_pocket = /obj/item/device/healthanalyzer
|
||||
id_type = /obj/item/weapon/card/id/medical/doctor
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/emergency_physician
|
||||
name = OUTFIT_JOB_NAME("Emergency Physician")
|
||||
suit = /obj/item/clothing/suit/storage/toggle/fr_jacket
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/surgeon
|
||||
name = OUTFIT_JOB_NAME("Surgeon")
|
||||
uniform = /obj/item/clothing/under/rank/medical/scrubs
|
||||
head = /obj/item/clothing/head/surgery/blue
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/virologist
|
||||
name = OUTFIT_JOB_NAME("Virologist")
|
||||
uniform = /obj/item/clothing/under/rank/virologist
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/virologist
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
backpack = /obj/item/weapon/storage/backpack/virology
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/vir
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/nurse
|
||||
name = OUTFIT_JOB_NAME("Nurse")
|
||||
suit = null
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/doctor/nurse/pre_equip(mob/living/carbon/human/H)
|
||||
if(H.gender == FEMALE)
|
||||
if(prob(50))
|
||||
uniform = /obj/item/clothing/under/rank/nursesuit
|
||||
else
|
||||
uniform = /obj/item/clothing/under/rank/nurse
|
||||
head = /obj/item/clothing/head/nursehat
|
||||
else
|
||||
uniform = /obj/item/clothing/under/rank/medical/scrubs/purple
|
||||
..()
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/chemist
|
||||
name = OUTFIT_JOB_NAME("Chemist")
|
||||
uniform = /obj/item/clothing/under/rank/chemist
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/chemist
|
||||
backpack = /obj/item/weapon/storage/backpack/chemistry
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/chem
|
||||
id_type = /obj/item/weapon/card/id/medical/chemist
|
||||
pda_type = /obj/item/device/pda/chemist
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/geneticist
|
||||
name = OUTFIT_JOB_NAME("Geneticist")
|
||||
uniform = /obj/item/clothing/under/rank/geneticist
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/genetics
|
||||
backpack = /obj/item/weapon/storage/backpack/genetics
|
||||
r_pocket = /obj/item/device/flashlight/pen
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/gen
|
||||
id_type = /obj/item/weapon/card/id/medical/geneticist
|
||||
pda_type = /obj/item/device/pda/geneticist
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/psychiatrist
|
||||
name = OUTFIT_JOB_NAME("Psychiatrist")
|
||||
uniform = /obj/item/clothing/under/rank/psych
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
id_type = /obj/item/weapon/card/id/medical/psychiatrist
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/psychiatrist/psychologist
|
||||
name = OUTFIT_JOB_NAME("Psychologist")
|
||||
uniform = /obj/item/clothing/under/rank/psych/turtleneck
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/paramedic
|
||||
name = OUTFIT_JOB_NAME("Paramedic")
|
||||
uniform = /obj/item/clothing/under/rank/medical/scrubs/black
|
||||
suit = /obj/item/clothing/suit/storage/toggle/fr_jacket
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
belt = /obj/item/weapon/storage/belt/medical/emt
|
||||
pda_slot = slot_l_store
|
||||
id_type = /obj/item/weapon/card/id/medical/paramedic
|
||||
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
|
||||
|
||||
/decl/hierarchy/outfit/job/medical/paramedic/emt
|
||||
name = OUTFIT_JOB_NAME("Emergency Medical Technician")
|
||||
uniform = /obj/item/clothing/under/rank/medical/paramedic
|
||||
@@ -0,0 +1,11 @@
|
||||
/decl/hierarchy/outfit/job/silicon
|
||||
head = /obj/item/clothing/head/cardborg
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/silicon
|
||||
|
||||
/decl/hierarchy/outfit/job/silicon/ai
|
||||
name = OUTFIT_JOB_NAME("AI")
|
||||
suit = /obj/item/clothing/suit/straight_jacket
|
||||
|
||||
/decl/hierarchy/outfit/job/silicon/cyborg
|
||||
name = OUTFIT_JOB_NAME("Cyborg")
|
||||
suit = /obj/item/clothing/suit/cardborg
|
||||
@@ -0,0 +1,41 @@
|
||||
/decl/hierarchy/outfit/job/science
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/science
|
||||
l_ear = /obj/item/device/radio/headset/headset_sci
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
pda_type = /obj/item/device/pda/science
|
||||
backpack = /obj/item/weapon/storage/backpack/toxins
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/tox
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/tox
|
||||
|
||||
/decl/hierarchy/outfit/job/science/rd
|
||||
name = OUTFIT_JOB_NAME("Research Director")
|
||||
l_ear = /obj/item/device/radio/headset/heads/rd
|
||||
uniform = /obj/item/clothing/under/rank/research_director
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_hand = /obj/item/weapon/clipboard
|
||||
id_type = /obj/item/weapon/card/id/science/head
|
||||
pda_type = /obj/item/device/pda/heads/rd
|
||||
|
||||
/decl/hierarchy/outfit/job/science/scientist
|
||||
name = OUTFIT_JOB_NAME("Scientist")
|
||||
uniform = /obj/item/clothing/under/rank/scientist
|
||||
id_type = /obj/item/weapon/card/id/science/scientist
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/science
|
||||
|
||||
/decl/hierarchy/outfit/job/science/xenobiologist
|
||||
name = OUTFIT_JOB_NAME("Xenobiologist")
|
||||
uniform = /obj/item/clothing/under/rank/scientist
|
||||
id_type = /obj/item/weapon/card/id/science/xenobiologist
|
||||
suit = /obj/item/clothing/suit/storage/toggle/labcoat/science
|
||||
|
||||
/decl/hierarchy/outfit/job/science/roboticist
|
||||
name = OUTFIT_JOB_NAME("Roboticist")
|
||||
uniform = /obj/item/clothing/under/rank/scientist
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
id_type = /obj/item/weapon/card/id/science/roboticist
|
||||
pda_slot = slot_r_store
|
||||
pda_type = /obj/item/device/pda/roboticist
|
||||
backpack = /obj/item/weapon/storage/backpack
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/norm
|
||||
@@ -0,0 +1,52 @@
|
||||
/decl/hierarchy/outfit/job/security
|
||||
hierarchy_type = /decl/hierarchy/outfit/job/security
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/sechud
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/sec
|
||||
backpack_contents = list(/obj/item/weapon/handcuffs = 1)
|
||||
messenger_bag = /obj/item/weapon/storage/backpack/messenger/sec
|
||||
|
||||
/decl/hierarchy/outfit/job/security/hos
|
||||
name = OUTFIT_JOB_NAME("Head of security")
|
||||
l_ear = /obj/item/device/radio/headset/heads/hos
|
||||
uniform = /obj/item/clothing/under/rank/head_of_security
|
||||
id_type = /obj/item/weapon/card/id/security/head
|
||||
pda_type = /obj/item/device/pda/heads/hos
|
||||
backpack_contents = list(/obj/item/weapon/handcuffs = 1)
|
||||
|
||||
/decl/hierarchy/outfit/job/security/warden
|
||||
name = OUTFIT_JOB_NAME("Warden")
|
||||
uniform = /obj/item/clothing/under/rank/warden
|
||||
l_pocket = /obj/item/device/flash
|
||||
id_type = /obj/item/weapon/card/id/security/warden
|
||||
pda_type = /obj/item/device/pda/warden
|
||||
|
||||
/decl/hierarchy/outfit/job/security/detective
|
||||
name = OUTFIT_JOB_NAME("Detective")
|
||||
head = /obj/item/clothing/head/det
|
||||
uniform = /obj/item/clothing/under/det
|
||||
suit = /obj/item/clothing/suit/storage/det_trench
|
||||
l_pocket = /obj/item/weapon/flame/lighter/zippo
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
r_hand = /obj/item/weapon/storage/briefcase/crimekit
|
||||
id_type = /obj/item/weapon/card/id/security/detective
|
||||
pda_type = /obj/item/device/pda/detective
|
||||
backpack = /obj/item/weapon/storage/backpack
|
||||
satchel_one = /obj/item/weapon/storage/backpack/satchel/norm
|
||||
backpack_contents = list(/obj/item/weapon/storage/box/evidence = 1)
|
||||
|
||||
/decl/hierarchy/outfit/job/security/detective/forensic
|
||||
name = OUTFIT_JOB_NAME("Forensic technician")
|
||||
head = null
|
||||
suit = /obj/item/clothing/suit/storage/forensics/blue
|
||||
|
||||
/decl/hierarchy/outfit/job/security/officer
|
||||
name = OUTFIT_JOB_NAME("Security Officer")
|
||||
uniform = /obj/item/clothing/under/rank/security
|
||||
l_pocket = /obj/item/device/flash
|
||||
r_pocket = /obj/item/weapon/handcuffs
|
||||
id_type = /obj/item/weapon/card/id/security/officer
|
||||
pda_type = /obj/item/device/pda/security
|
||||
@@ -0,0 +1,22 @@
|
||||
/decl/hierarchy/outfit/military/fleet/pt
|
||||
name = OUTFIT_MILITARY("Fleet PT")
|
||||
uniform = /obj/item/clothing/under/pt/fleet
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
/decl/hierarchy/outfit/military/fleet/utility
|
||||
name = OUTFIT_MILITARY("Fleet Utility")
|
||||
uniform = /obj/item/clothing/under/utility/fleet
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
|
||||
/decl/hierarchy/outfit/military/fleet/service
|
||||
name = OUTFIT_MILITARY("Fleet Service")
|
||||
uniform = /obj/item/clothing/under/service/fleet
|
||||
shoes = /obj/item/clothing/shoes/dress/white
|
||||
|
||||
/decl/hierarchy/outfit/military/fleet/dress
|
||||
name = OUTFIT_MILITARY("Fleet Dress")
|
||||
uniform = /obj/item/clothing/under/service/fleet
|
||||
shoes = /obj/item/clothing/shoes/dress/white
|
||||
suit = /obj/item/clothing/suit/storage/toggle/dress/fleet
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
head = /obj/item/clothing/head/dress/fleet
|
||||
@@ -0,0 +1,23 @@
|
||||
/decl/hierarchy/outfit/military/marine/pt
|
||||
name = OUTFIT_MILITARY("Marine PT")
|
||||
uniform = /obj/item/clothing/under/pt/marine
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
/decl/hierarchy/outfit/military/marine/utility
|
||||
name = OUTFIT_MILITARY("Marine Utility")
|
||||
uniform = /obj/item/clothing/under/utility/marine
|
||||
shoes = /obj/item/clothing/shoes/boots/jungle
|
||||
|
||||
/decl/hierarchy/outfit/military/marine/service
|
||||
name = OUTFIT_MILITARY("Marine Service")
|
||||
uniform = /obj/item/clothing/under/service/marine
|
||||
shoes = /obj/item/clothing/shoes/dress
|
||||
suit = /obj/item/clothing/suit/storage/service/marine
|
||||
|
||||
/decl/hierarchy/outfit/military/marine/dress
|
||||
name = OUTFIT_MILITARY("Marine Dress")
|
||||
uniform = /obj/item/clothing/under/mildress/marine
|
||||
shoes = /obj/item/clothing/shoes/dress/white
|
||||
suit = /obj/item/clothing/suit/dress/marine
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
head = /obj/item/clothing/head/dress/marine
|
||||
@@ -0,0 +1,5 @@
|
||||
/decl/hierarchy/outfit/military
|
||||
name = "Military Uniform"
|
||||
hierarchy_type = /decl/hierarchy/outfit/military
|
||||
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
@@ -0,0 +1,23 @@
|
||||
/decl/hierarchy/outfit/military/sifguard/pt
|
||||
name = OUTFIT_MILITARY("SifGuard PT")
|
||||
uniform = /obj/item/clothing/under/pt/expeditionary
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
/decl/hierarchy/outfit/military/sifguard/utility
|
||||
name = OUTFIT_MILITARY("SifGuard Utility")
|
||||
uniform = /obj/item/clothing/under/utility/expeditionary
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
|
||||
/decl/hierarchy/outfit/military/sifguard/service
|
||||
name = OUTFIT_MILITARY("SifGuard Service")
|
||||
uniform = /obj/item/clothing/under/utility/expeditionary
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
suit = /obj/item/clothing/suit/storage/service/expeditionary
|
||||
|
||||
/decl/hierarchy/outfit/military/sifguard/dress
|
||||
name = OUTFIT_MILITARY("SifGuard Dress")
|
||||
uniform = /obj/item/clothing/under/mildress/expeditionary
|
||||
shoes = /obj/item/clothing/shoes/dress
|
||||
suit = /obj/item/clothing/suit/dress/expedition
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
head = /obj/item/clothing/head/dress/expedition
|
||||
@@ -0,0 +1,55 @@
|
||||
/decl/hierarchy/outfit/standard_space_gear
|
||||
name = "Standard space gear"
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
head = /obj/item/clothing/head/helmet/space
|
||||
suit = /obj/item/clothing/suit/space
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
flags = OUTFIT_HAS_JETPACK
|
||||
|
||||
/decl/hierarchy/outfit/emergency_space_gear
|
||||
name = "Emergency space gear"
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
head = /obj/item/clothing/head/helmet/space/emergency
|
||||
suit = /obj/item/clothing/suit/space/emergency
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
back = /obj/item/weapon/tank/oxygen
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
|
||||
/decl/hierarchy/outfit/soviet_soldier
|
||||
name = "Soviet soldier"
|
||||
uniform = /obj/item/clothing/under/soviet
|
||||
shoes = /obj/item/clothing/shoes/boots/combat
|
||||
head = /obj/item/clothing/head/ushanka
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
belt = /obj/item/weapon/gun/projectile/revolver/mateba
|
||||
|
||||
/decl/hierarchy/outfit/soviet_soldier/admiral
|
||||
name = "Soviet admiral"
|
||||
head = /obj/item/clothing/head/hgpiratecap
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain
|
||||
glasses = /obj/item/clothing/glasses/thermal/plain/eyepatch
|
||||
suit = /obj/item/clothing/suit/hgpirate
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/centcom //station
|
||||
id_pda_assignment = "Admiral"
|
||||
|
||||
/decl/hierarchy/outfit/merchant
|
||||
name = "Merchant"
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/civilian //merchant
|
||||
pda_slot = slot_r_store
|
||||
pda_type = /obj/item/device/pda/chef //cause I like the look
|
||||
id_pda_assignment = "Merchant"
|
||||
|
||||
/decl/hierarchy/outfit/merchant/vox
|
||||
name = "Merchant - Vox"
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots/toeless
|
||||
uniform = /obj/item/clothing/under/vox/vox_robes
|
||||
suit = /obj/item/clothing/suit/armor/vox_scrap
|
||||
@@ -0,0 +1,32 @@
|
||||
/decl/hierarchy/outfit/nanotrasen
|
||||
hierarchy_type = /decl/hierarchy/outfit/nanotrasen
|
||||
uniform = /obj/item/clothing/under/rank/centcom
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
l_ear = /obj/item/device/radio/headset/heads/hop
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/centcom //station
|
||||
pda_slot = slot_r_store
|
||||
pda_type = /obj/item/device/pda/heads
|
||||
|
||||
/decl/hierarchy/outfit/nanotrasen/representative
|
||||
name = "Nanotrasen representative"
|
||||
belt = /obj/item/weapon/clipboard
|
||||
id_pda_assignment = "NanoTrasen Navy Representative"
|
||||
|
||||
/decl/hierarchy/outfit/nanotrasen/officer
|
||||
name = "Nanotrasen officer"
|
||||
head = /obj/item/clothing/head/beret/centcom/officer
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain
|
||||
belt = /obj/item/weapon/gun/energy
|
||||
id_pda_assignment = "NanoTrasen Navy Officer"
|
||||
|
||||
/decl/hierarchy/outfit/nanotrasen/captain
|
||||
name = "Nanotrasen captain"
|
||||
uniform = /obj/item/clothing/under/rank/centcom_captain
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain
|
||||
head = /obj/item/clothing/head/beret/centcom/captain
|
||||
belt = /obj/item/weapon/gun/energy
|
||||
id_pda_assignment = "NanoTrasen Navy Captain"
|
||||
@@ -0,0 +1,171 @@
|
||||
var/list/outfits_decls_
|
||||
var/list/outfits_decls_root_
|
||||
var/list/outfits_decls_by_type_
|
||||
|
||||
/proc/outfit_by_type(var/outfit_type)
|
||||
if(!outfits_decls_root_)
|
||||
init_outfit_decls()
|
||||
return outfits_decls_by_type_[outfit_type]
|
||||
|
||||
/proc/outfits()
|
||||
if(!outfits_decls_root_)
|
||||
init_outfit_decls()
|
||||
return outfits_decls_
|
||||
|
||||
/proc/init_outfit_decls()
|
||||
if(outfits_decls_root_)
|
||||
return
|
||||
outfits_decls_ = list()
|
||||
outfits_decls_by_type_ = list()
|
||||
outfits_decls_root_ = new/decl/hierarchy/outfit()
|
||||
|
||||
/decl/hierarchy/outfit
|
||||
name = "Naked"
|
||||
|
||||
var/uniform = null
|
||||
var/suit = null
|
||||
var/back = null
|
||||
var/belt = null
|
||||
var/gloves = null
|
||||
var/shoes = null
|
||||
var/head = null
|
||||
var/mask = null
|
||||
var/l_ear = null
|
||||
var/r_ear = null
|
||||
var/glasses = null
|
||||
var/id = null
|
||||
var/l_pocket = null
|
||||
var/r_pocket = null
|
||||
var/suit_store = null
|
||||
var/r_hand = null
|
||||
var/l_hand = null
|
||||
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
|
||||
|
||||
var/id_type
|
||||
var/id_desc
|
||||
var/id_slot
|
||||
|
||||
var/pda_type
|
||||
var/pda_slot
|
||||
|
||||
var/id_pda_assignment
|
||||
|
||||
var/backpack = /obj/item/weapon/storage/backpack
|
||||
var/satchel_one = /obj/item/weapon/storage/backpack/satchel/norm
|
||||
var/satchel_two = /obj/item/weapon/storage/backpack/satchel
|
||||
var/messenger_bag = /obj/item/weapon/storage/backpack/messenger
|
||||
|
||||
var/flags // Specific flags
|
||||
|
||||
/decl/hierarchy/outfit/New()
|
||||
..()
|
||||
|
||||
if(is_hidden_category())
|
||||
return
|
||||
outfits_decls_by_type_[type] = src
|
||||
dd_insertObjectList(outfits_decls_, src)
|
||||
|
||||
/decl/hierarchy/outfit/proc/pre_equip(mob/living/carbon/human/H)
|
||||
if(flags & OUTFIT_HAS_BACKPACK)
|
||||
switch(H.backbag)
|
||||
if(2) back = backpack
|
||||
if(3) back = satchel_one
|
||||
if(4) back = satchel_two
|
||||
if(5) back = messenger_bag
|
||||
else back = null
|
||||
|
||||
/decl/hierarchy/outfit/proc/post_equip(mob/living/carbon/human/H)
|
||||
if(flags & OUTFIT_HAS_JETPACK)
|
||||
var/obj/item/weapon/tank/jetpack/J = locate(/obj/item/weapon/tank/jetpack) in H
|
||||
if(!J)
|
||||
return
|
||||
J.toggle()
|
||||
J.toggle_valve()
|
||||
|
||||
/decl/hierarchy/outfit/proc/equip(mob/living/carbon/human/H, var/rank, var/assignment)
|
||||
equip_base(H)
|
||||
|
||||
rank = id_pda_assignment || rank
|
||||
assignment = id_pda_assignment || assignment || rank
|
||||
var/obj/item/weapon/card/id/W = equip_id(H, rank, assignment)
|
||||
if(W)
|
||||
rank = W.rank
|
||||
assignment = W.assignment
|
||||
equip_pda(H, rank, assignment)
|
||||
|
||||
for(var/path in backpack_contents)
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i=0,i<number,i++)
|
||||
H.equip_to_slot_or_del(new path(H), slot_in_backpack)
|
||||
|
||||
post_equip(H)
|
||||
H.regenerate_icons()
|
||||
if(W) // We set ID info last to ensure the ID photo is as correct as possible.
|
||||
H.set_id_info(W)
|
||||
return 1
|
||||
|
||||
/decl/hierarchy/outfit/proc/equip_base(mob/living/carbon/human/H)
|
||||
pre_equip(H)
|
||||
|
||||
//Start with uniform,suit,backpack for additional slots
|
||||
if(uniform)
|
||||
H.equip_to_slot_or_del(new uniform(H),slot_w_uniform)
|
||||
if(suit)
|
||||
H.equip_to_slot_or_del(new suit(H),slot_wear_suit)
|
||||
if(back)
|
||||
H.equip_to_slot_or_del(new back(H),slot_back)
|
||||
if(belt)
|
||||
H.equip_to_slot_or_del(new belt(H),slot_belt)
|
||||
if(gloves)
|
||||
H.equip_to_slot_or_del(new gloves(H),slot_gloves)
|
||||
if(shoes)
|
||||
H.equip_to_slot_or_del(new shoes(H),slot_shoes)
|
||||
if(mask)
|
||||
H.equip_to_slot_or_del(new mask(H),slot_wear_mask)
|
||||
if(head)
|
||||
H.equip_to_slot_or_del(new head(H),slot_head)
|
||||
if(l_ear)
|
||||
H.equip_to_slot_or_del(new l_ear(H),slot_l_ear)
|
||||
if(r_ear)
|
||||
H.equip_to_slot_or_del(new r_ear(H),slot_r_ear)
|
||||
if(glasses)
|
||||
H.equip_to_slot_or_del(new glasses(H),slot_glasses)
|
||||
if(id)
|
||||
H.equip_to_slot_or_del(new id(H),slot_wear_id)
|
||||
if(l_pocket)
|
||||
H.equip_to_slot_or_del(new l_pocket(H),slot_l_store)
|
||||
if(r_pocket)
|
||||
H.equip_to_slot_or_del(new r_pocket(H),slot_r_store)
|
||||
if(suit_store)
|
||||
H.equip_to_slot_or_del(new suit_store(H),slot_s_store)
|
||||
|
||||
if(l_hand)
|
||||
H.put_in_l_hand(new l_hand(H))
|
||||
if(r_hand)
|
||||
H.put_in_r_hand(new r_hand(H))
|
||||
if(H.species)
|
||||
H.species.equip_survival_gear(H, flags&OUTFIT_EXTENDED_SURVIVAL)
|
||||
|
||||
/decl/hierarchy/outfit/proc/equip_id(mob/living/carbon/human/H, rank, assignment)
|
||||
if(!id_slot || !id_type)
|
||||
return
|
||||
var/obj/item/weapon/card/id/W = new id_type(H)
|
||||
if(id_desc)
|
||||
W.desc = id_desc
|
||||
if(rank)
|
||||
W.rank = rank
|
||||
if(assignment)
|
||||
W.assignment = assignment
|
||||
H.set_id_info(W)
|
||||
if(H.equip_to_slot_or_del(W, id_slot))
|
||||
return W
|
||||
|
||||
/decl/hierarchy/outfit/proc/equip_pda(mob/living/carbon/human/H, assignment)
|
||||
if(!pda_slot || !pda_type)
|
||||
return
|
||||
var/obj/item/device/pda/pda = new pda_type(H)
|
||||
if(H.equip_to_slot_or_del(pda, pda_slot))
|
||||
return pda
|
||||
|
||||
/decl/hierarchy/outfit/dd_SortValue()
|
||||
return name
|
||||
@@ -0,0 +1,103 @@
|
||||
/decl/hierarchy/outfit/USDF/Marine
|
||||
name = "USDF marine"
|
||||
uniform = /obj/item/clothing/under/utility/marine/green
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
r_pocket = /obj/item/ammo_magazine/m95
|
||||
l_pocket = /obj/item/ammo_magazine/m95
|
||||
l_hand = /obj/item/ammo_magazine/m95
|
||||
r_hand = /obj/item/ammo_magazine/m95
|
||||
back = /obj/item/weapon/gun/projectile/automatic/battlerifle
|
||||
backpack_contents = list(/obj/item/weapon/storage/box = 1)
|
||||
hierarchy_type = /decl/hierarchy/outfit/wizard
|
||||
head = /obj/item/clothing/head/helmet/combat/USDF
|
||||
suit = /obj/item/clothing/suit/armor/combat/USDF
|
||||
belt = /obj/item/weapon/storage/belt/security/tactical
|
||||
|
||||
/decl/hierarchy/outfit/USDF/Marine/equip_id(mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/card/id/C = ..()
|
||||
C.name = "[H.real_name]'s military ID Card"
|
||||
C.icon_state = "lifetime"
|
||||
C.access = get_all_station_access()
|
||||
C.access += get_all_centcom_access()
|
||||
C.assignment = "USDF"
|
||||
C.registered_name = H.real_name
|
||||
return C
|
||||
|
||||
/decl/hierarchy/outfit/USDF/Officer
|
||||
name = "USDF officer"
|
||||
head = /obj/item/clothing/head/dress/marine/command/admiral
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
uniform = /obj/item/clothing/under/mildress/marine/command
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
belt = /obj/item/weapon/gun/projectile/revolver/consul
|
||||
l_pocket = /obj/item/ammo_magazine/s44
|
||||
r_pocket = /obj/item/ammo_magazine/s44
|
||||
r_hand = /obj/item/clothing/accessory/holster/hip
|
||||
l_hand = /obj/item/clothing/accessory/black
|
||||
|
||||
/decl/hierarchy/outfit/USDF/Officer/equip_id(mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/card/id/C = ..()
|
||||
C.name = "[H.real_name]'s military ID Card"
|
||||
C.icon_state = "lifetime"
|
||||
C.access = get_all_station_access()
|
||||
C.access += get_all_centcom_access()
|
||||
C.assignment = "USDF"
|
||||
C.registered_name = H.real_name
|
||||
return C
|
||||
|
||||
/decl/hierarchy/outfit/solgov/representative
|
||||
name = "SolGov Representative"
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
uniform = /obj/item/clothing/under/suit_jacket/navy
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
l_pocket = /obj/item/weapon/pen/blue
|
||||
r_pocket = /obj/item/weapon/pen/red
|
||||
r_hand = /obj/item/device/pda/centcom
|
||||
l_hand = /obj/item/weapon/clipboard
|
||||
|
||||
/decl/hierarchy/outfit/solgov/representative/equip_id(mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/card/id/C = ..()
|
||||
C.name = "[H.real_name]'s SolGov ID Card"
|
||||
C.icon_state = "lifetime"
|
||||
C.access = get_all_station_access()
|
||||
C.access += get_all_centcom_access()
|
||||
C.assignment = "SolGov Representative"
|
||||
C.registered_name = H.real_name
|
||||
return C
|
||||
|
||||
/decl/hierarchy/outfit/imperial/soldier
|
||||
name = "Imperial soldier"
|
||||
head = /obj/item/clothing/head/helmet/combat/imperial
|
||||
shoes =/obj/item/clothing/shoes/leg_guard/combat/imperial
|
||||
gloves = /obj/item/clothing/gloves/arm_guard/combat/imperial
|
||||
l_ear = /obj/item/device/radio/headset/syndicate
|
||||
uniform = /obj/item/clothing/under/imperial
|
||||
mask = /obj/item/clothing/mask/gas/imperial
|
||||
suit = /obj/item/clothing/suit/armor/combat/imperial
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
belt = /obj/item/weapon/storage/belt/security/tactical/bandolier
|
||||
l_pocket = /obj/item/weapon/cell/device/weapon
|
||||
r_pocket = /obj/item/weapon/cell/device/weapon
|
||||
r_hand = /obj/item/weapon/melee/energy/sword/imperial
|
||||
l_hand = /obj/item/weapon/shield/energy/imperial
|
||||
suit_store = /obj/item/weapon/gun/energy/imperial
|
||||
|
||||
/decl/hierarchy/outfit/imperial/officer
|
||||
name = "Imperial officer"
|
||||
head = /obj/item/clothing/head/helmet/combat/imperial/centurion
|
||||
shoes = /obj/item/clothing/shoes/leg_guard/combat/imperial
|
||||
gloves = /obj/item/clothing/gloves/arm_guard/combat/imperial
|
||||
l_ear = /obj/item/device/radio/headset/syndicate
|
||||
uniform = /obj/item/clothing/under/imperial
|
||||
mask = /obj/item/clothing/mask/gas/imperial
|
||||
suit = /obj/item/clothing/suit/armor/combat/imperial/centurion
|
||||
belt = /obj/item/weapon/storage/belt/security/tactical/bandolier
|
||||
l_pocket = /obj/item/weapon/cell/device/weapon
|
||||
r_pocket = /obj/item/weapon/cell/device/weapon
|
||||
r_hand = /obj/item/weapon/melee/energy/sword/imperial
|
||||
l_hand = /obj/item/weapon/shield/energy/imperial
|
||||
suit_store = /obj/item/weapon/gun/energy/imperial
|
||||
@@ -0,0 +1,17 @@
|
||||
/decl/hierarchy/outfit/pirate
|
||||
hierarchy_type = /decl/hierarchy/outfit/pirate
|
||||
name = "Pirate"
|
||||
uniform = /obj/item/clothing/under/pirate
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/bandana
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
l_hand = /obj/item/weapon/melee/energy/sword/pirate
|
||||
|
||||
/decl/hierarchy/outfit/pirate/norm
|
||||
|
||||
/decl/hierarchy/outfit/pirate/space
|
||||
name = "Pirate - Space"
|
||||
head = /obj/item/clothing/head/helmet/space
|
||||
suit = /obj/item/clothing/suit/pirate
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
flags = OUTFIT_HAS_JETPACK
|
||||
@@ -0,0 +1,69 @@
|
||||
/decl/hierarchy/outfit/spec_op_officer
|
||||
name = "Special ops - Officer"
|
||||
uniform = /obj/item/clothing/under/syndicate/combat
|
||||
suit = /obj/item/clothing/suit/armor/swat/officer
|
||||
l_ear = /obj/item/device/radio/headset/ert
|
||||
glasses = /obj/item/clothing/glasses/thermal/plain/eyepatch
|
||||
mask = /obj/item/clothing/mask/smokable/cigarette/cigar/havana
|
||||
head = /obj/item/clothing/head/beret //deathsquad
|
||||
belt = /obj/item/weapon/gun/energy/pulse_rifle/M1911
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
shoes = /obj/item/clothing/shoes/boots/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/centcom/ERT
|
||||
id_desc = "Special operations ID."
|
||||
id_pda_assignment = "Special Operations Officer"
|
||||
|
||||
/decl/hierarchy/outfit/spec_op_officer/space
|
||||
name = "Special ops - Officer in space"
|
||||
suit = /obj/item/clothing/suit/armor/swat //obj/item/clothing/suit/space/void/swat
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
mask = /obj/item/clothing/mask/gas/swat
|
||||
|
||||
flags = OUTFIT_HAS_JETPACK
|
||||
|
||||
/decl/hierarchy/outfit/ert
|
||||
name = "Spec ops - Emergency response team"
|
||||
uniform = /obj/item/clothing/under/ert
|
||||
shoes = /obj/item/clothing/shoes/boots/swat
|
||||
gloves = /obj/item/clothing/gloves/swat
|
||||
l_ear = /obj/item/device/radio/headset/ert
|
||||
belt = /obj/item/weapon/gun/energy/gun
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
back = /obj/item/weapon/storage/backpack/satchel
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/centcom/ERT
|
||||
|
||||
/decl/hierarchy/outfit/death_command
|
||||
name = "Spec ops - Death commando"
|
||||
|
||||
/decl/hierarchy/outfit/death_command/equip(var/mob/living/carbon/human/H)
|
||||
deathsquad.equip(H)
|
||||
return 1
|
||||
|
||||
/decl/hierarchy/outfit/syndicate_command
|
||||
name = "Spec ops - Syndicate commando"
|
||||
|
||||
/decl/hierarchy/outfit/syndicate_command/equip(var/mob/living/carbon/human/H)
|
||||
commandos.equip(H)
|
||||
return 1
|
||||
|
||||
/decl/hierarchy/outfit/mercenary
|
||||
name = "Spec ops - Mercenary"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
shoes = /obj/item/clothing/shoes/boots/combat
|
||||
l_ear = /obj/item/device/radio/headset/syndicate
|
||||
belt = /obj/item/weapon/storage/belt/security
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
gloves = /obj/item/clothing/gloves/swat
|
||||
|
||||
l_pocket = /obj/item/weapon/reagent_containers/pill/cyanide
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/weapon/card/id/syndicate
|
||||
id_pda_assignment = "Mercenary"
|
||||
|
||||
flags = OUTFIT_HAS_BACKPACK
|
||||
@@ -0,0 +1,49 @@
|
||||
/decl/hierarchy/outfit/tournament_gear
|
||||
hierarchy_type = /decl/hierarchy/outfit/tournament_gear
|
||||
head = /obj/item/clothing/head/helmet/thunderdome
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
l_hand = /obj/item/weapon/material/knife
|
||||
r_hand = /obj/item/weapon/gun/energy/pulse_rifle/destroyer
|
||||
r_pocket = /obj/item/weapon/grenade/smokebomb
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/red
|
||||
name = "Tournament - Red"
|
||||
uniform = /obj/item/clothing/under/color/red
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/green
|
||||
name = "Tournament gear - Green"
|
||||
uniform = /obj/item/clothing/under/color/green
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/gangster
|
||||
name = "Tournament gear - Gangster"
|
||||
head = /obj/item/clothing/head/det
|
||||
uniform = /obj/item/clothing/under/det
|
||||
suit_store = /obj/item/clothing/suit/storage/det_trench
|
||||
glasses = /obj/item/clothing/glasses/thermal/plain/monocle
|
||||
r_hand = /obj/item/weapon/gun/projectile/revolver
|
||||
l_pocket = /obj/item/ammo_magazine/s357
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/chef
|
||||
name = "Tournament gear - Chef"
|
||||
head = /obj/item/clothing/head/chefhat
|
||||
uniform = /obj/item/clothing/under/rank/chef
|
||||
suit = /obj/item/clothing/suit/chef
|
||||
r_hand = /obj/item/weapon/material/kitchen/rollingpin
|
||||
l_pocket = /obj/item/weapon/material/hatchet/tacknife
|
||||
r_pocket = /obj/item/weapon/material/hatchet/tacknife
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/janitor
|
||||
name = "Tournament gear - Janitor"
|
||||
uniform = /obj/item/clothing/under/rank/janitor
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
r_hand = /obj/item/weapon/mop
|
||||
l_hand = /obj/item/weapon/reagent_containers/glass/bucket
|
||||
l_pocket = /obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
r_pocket = /obj/item/weapon/grenade/chem_grenade/cleaner
|
||||
backpack_contents = list(/obj/item/stack/tile/floor = 6)
|
||||
|
||||
/decl/hierarchy/outfit/tournament_gear/janitor/post_equip(var/mob/living/carbon/human/H)
|
||||
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = locate(/obj/item/weapon/reagent_containers/glass/bucket) in H
|
||||
if(bucket)
|
||||
bucket.reagents.add_reagent(/datum/reagent/water, 70)
|
||||
@@ -0,0 +1,26 @@
|
||||
/decl/hierarchy/outfit/wizard
|
||||
uniform = /obj/item/clothing/under/color/lightpurple
|
||||
shoes = /obj/item/clothing/shoes/sandal
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
r_pocket = /obj/item/weapon/teleportation_scroll
|
||||
l_hand = /obj/item/weapon/staff
|
||||
r_hand = /obj/item/weapon/spellbook
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
backpack_contents = list(/obj/item/weapon/storage/box = 1)
|
||||
hierarchy_type = /decl/hierarchy/outfit/wizard
|
||||
|
||||
/decl/hierarchy/outfit/wizard/blue
|
||||
name = "Wizard - Blue"
|
||||
head = /obj/item/clothing/head/wizard
|
||||
suit = /obj/item/clothing/suit/wizrobe
|
||||
|
||||
/decl/hierarchy/outfit/wizard/red
|
||||
name = "Wizard - Red"
|
||||
head = /obj/item/clothing/head/wizard/red
|
||||
suit = /obj/item/clothing/suit/wizrobe/red
|
||||
|
||||
/decl/hierarchy/outfit/wizard/marisa
|
||||
name = "Wizard - Marisa"
|
||||
head = /obj/item/clothing/head/wizard/marisa
|
||||
suit = /obj/item/clothing/suit/wizrobe/marisa
|
||||
shoes = /obj/item/clothing/shoes/sandal/marisa
|
||||
@@ -38,6 +38,7 @@
|
||||
/obj/item/clothing/suit/nun,
|
||||
/obj/item/clothing/head/nun_hood,
|
||||
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie,
|
||||
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout,
|
||||
/obj/item/clothing/suit/holidaypriest,
|
||||
/obj/item/clothing/under/wedding/bride_white,
|
||||
/obj/item/weapon/storage/backpack/cultpack,
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "soap"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
slot_flags = SLOT_HOLSTER
|
||||
throwforce = 0
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
@@ -58,6 +59,7 @@
|
||||
item_state = "bike_horn"
|
||||
throwforce = 3
|
||||
w_class = ITEMSIZE_SMALL
|
||||
slot_flags = SLOT_HOLSTER
|
||||
throw_speed = 3
|
||||
throw_range = 15
|
||||
attack_verb = list("HONKED")
|
||||
@@ -425,6 +427,24 @@
|
||||
origin_tech = list(TECH_POWER = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
|
||||
|
||||
var/charge = 0
|
||||
var/max_charge = 1000
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/New()
|
||||
. = ..()
|
||||
max_charge *= rating
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/proc/charge(var/amount)
|
||||
charge += amount
|
||||
if(charge > max_charge)
|
||||
charge = max_charge
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/proc/use(var/amount)
|
||||
if(charge)
|
||||
charge -= amount
|
||||
if(charge < 0)
|
||||
charge = 0
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module
|
||||
name = "scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
@@ -543,7 +563,7 @@
|
||||
origin_tech = list(TECH_DATA = 3, TECH_MAGNET = 5 ,TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/filter
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter
|
||||
name = "hyperwave filter"
|
||||
icon_state = "hyperwave_filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
|
||||
+4
-3
@@ -299,9 +299,10 @@ its easier to just keep the beam vertical.
|
||||
//Deal with gloves the pass finger/palm prints.
|
||||
if(!ignoregloves)
|
||||
if(H.gloves && H.gloves != src)
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
if(!prob(G.fingerprint_chance))
|
||||
return 0
|
||||
if(istype(H.gloves, /obj/item/clothing/gloves))
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
if(!prob(G.fingerprint_chance))
|
||||
return 0
|
||||
|
||||
//More adminstuffz
|
||||
if(fingerprintslast != H.key)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/power/changeling/transform
|
||||
name = "Transform"
|
||||
desc = "We take on the apperance and voice of one we have absorbed."
|
||||
desc = "We take on the appearance and voice of one we have absorbed."
|
||||
ability_icon_state = "ling_transform"
|
||||
genomecost = 0
|
||||
verbpath = /mob/proc/changeling_transform
|
||||
|
||||
@@ -289,6 +289,7 @@ var/global/datum/controller/gameticker/ticker
|
||||
job_master.EquipRank(player, player.mind.assigned_role, 0)
|
||||
UpdateFactionList(player)
|
||||
equip_custom_items(player)
|
||||
//player.apply_traits() //VOREStation Removal
|
||||
if(captainless)
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M,/mob/new_player))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/obj/effect/meteor/flaming=3, /obj/effect/meteor/irradiated=3, /obj/effect/meteor/emp=3) //for threatening meteor event
|
||||
|
||||
/var/list/meteors_catastrophic = list(/obj/effect/meteor/medium=5, /obj/effect/meteor/big=75, \
|
||||
/obj/effect/meteor/flaming=10, /obj/effect/meteor/irradiated=10, /obj/effect/meteor/emp=10, /obj/effect/meteor/tunguska = 1) //for catastrophic meteor event
|
||||
/obj/effect/meteor/flaming=10, /obj/effect/meteor/irradiated=10, /obj/effect/meteor/emp=10) //, /obj/effect/meteor/tunguska = 1) //for catastrophic meteor event
|
||||
|
||||
/var/list/meteors_dust = list(/obj/effect/meteor/dust) //for space dust event
|
||||
|
||||
|
||||
@@ -29,47 +29,133 @@
|
||||
|
||||
melee_damage_lower = 30 // It has a built in esword.
|
||||
melee_damage_upper = 30
|
||||
attack_sound = 'sound/weapons/blade1.ogg'
|
||||
attacktext = "slashed"
|
||||
attack_sound = null
|
||||
friendly = "hugs"
|
||||
resistance = 0
|
||||
melee_miss_chance = 0
|
||||
|
||||
var/obj/item/weapon/technomancer_core/golem/core = null
|
||||
var/obj/item/weapon/spell/active_spell = null // Shield and ranged spells
|
||||
var/mob/living/master = null
|
||||
|
||||
var/list/known_spells = list(
|
||||
"reflect" = /obj/item/weapon/spell/reflect,
|
||||
"shield" = /obj/item/weapon/spell/shield,
|
||||
"dispel" = /obj/item/weapon/spell/dispel,
|
||||
"mend life" = /obj/item/weapon/spell/modifier/mend_life,
|
||||
"mend synthetic" = /obj/item/weapon/spell/modifier/mend_synthetic,
|
||||
"repel missiles" = /obj/item/weapon/spell/modifier/repel_missiles,
|
||||
"corona" = /obj/item/weapon/spell/modifier/corona,
|
||||
"beam" = /obj/item/weapon/spell/projectile/beam,
|
||||
"chain lightning" = /obj/item/weapon/spell/projectile/chain_lightning,
|
||||
"force missile" = /obj/item/weapon/spell/projectile/force_missile,
|
||||
"ionic bolt" = /obj/item/weapon/spell/projectile/ionic_bolt,
|
||||
"lightning" = /obj/item/weapon/spell/projectile/lightning
|
||||
"lightning" = /obj/item/weapon/spell/projectile/lightning,
|
||||
"blink" = /obj/item/weapon/spell/blink,
|
||||
"dispel" = /obj/item/weapon/spell/dispel,
|
||||
"oxygenate" = /obj/item/weapon/spell/oxygenate,
|
||||
"mend life" = /obj/item/weapon/spell/modifier/mend_life,
|
||||
"mend synthetic" = /obj/item/weapon/spell/modifier/mend_synthetic,
|
||||
"mend organs" = /obj/item/weapon/spell/mend_organs,
|
||||
"purify" = /obj/item/weapon/spell/modifier/purify,
|
||||
"resurrect" = /obj/item/weapon/spell/resurrect,
|
||||
"passwall" = /obj/item/weapon/spell/passwall,
|
||||
"repel missiles" = /obj/item/weapon/spell/modifier/repel_missiles,
|
||||
"corona" = /obj/item/weapon/spell/modifier/corona,
|
||||
"haste" = /obj/item/weapon/spell/modifier/haste
|
||||
)
|
||||
|
||||
// Holds the overlays, when idle or attacking.
|
||||
var/image/sword_image = null
|
||||
var/image/spell_image = null
|
||||
// These contain icon_states for each frame of an attack animation, which is swapped in and out manually, because BYOND.
|
||||
// They are assoc lists, to hold the frame duration and the frame icon_state in one list.
|
||||
var/list/spell_pre_attack_states = list(
|
||||
"golem_spell_attack_1" = 1,
|
||||
"golem_spell_attack_2" = 2,
|
||||
"golem_spell_attack_3" = 2
|
||||
)
|
||||
var/list/spell_post_attack_states = list(
|
||||
"golem_spell_attack_4" = 2,
|
||||
"golem_spell_attack_5" = 3,
|
||||
"golem_spell_attack_6" = 3
|
||||
)
|
||||
var/list/sword_pre_attack_states = list(
|
||||
"golem_sword_attack_1" = 1,
|
||||
"golem_sword_attack_2" = 5
|
||||
)
|
||||
var/list/sword_post_attack_states = list(
|
||||
"golem_sword_attack_3" = 1,
|
||||
"golem_sword_attack_4" = 3
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/New()
|
||||
..()
|
||||
core = new(src)
|
||||
sword_image = image(icon, src, "golem_sword")
|
||||
spell_image = image(icon, src, "golem_spell")
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/Destroy()
|
||||
qdel(core)
|
||||
qdel(sword_image)
|
||||
qdel(spell_image)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/unref_spell()
|
||||
active_spell = null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/death()
|
||||
..()
|
||||
visible_message("\The [src] disintegrates!")
|
||||
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/update_icon()
|
||||
overlays.Cut()
|
||||
overlays.Add(image(icon, src, "golem_sword"))
|
||||
overlays.Add(image(icon, src, "golem_spell"))
|
||||
overlays += sword_image
|
||||
overlays += spell_image
|
||||
update_modifier_visuals()
|
||||
|
||||
// Unfortunately, BYOND does not let you flick() images or other overlays, so we need to do this in a terrible way.
|
||||
/atom/proc/manual_flick(var/list/frames, var/image/I, var/reset_to = null)
|
||||
// Swap in and out each frame manually.
|
||||
for(var/frame in frames)
|
||||
overlays -= I
|
||||
I.icon_state = frame
|
||||
overlays += I
|
||||
sleep(frames[frame])
|
||||
if(reset_to)
|
||||
// One more time to reset it to what it was before.
|
||||
overlays -= I
|
||||
I.icon_state = reset_to
|
||||
overlays += I
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/proc/spellcast_pre_animation()
|
||||
setClickCooldown(5)
|
||||
manual_flick(spell_pre_attack_states, spell_image, reset_to = "golem_spell_attack_3")
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/proc/spellcast_post_animation()
|
||||
setClickCooldown(8)
|
||||
manual_flick(spell_post_attack_states, spell_image, reset_to = "golem_spell")
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/proc/sword_pre_animation()
|
||||
setClickCooldown(6)
|
||||
manual_flick(sword_pre_attack_states, sword_image)
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/proc/sword_post_animation()
|
||||
setClickCooldown(3)
|
||||
manual_flick(sword_post_attack_states, sword_image, reset_to = "golem_sword")
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/DoPunch(var/atom/A)
|
||||
sword_pre_animation()
|
||||
. = ..() // This does the actual attack and will check adjacency again.
|
||||
sword_post_animation()
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/isSynthetic()
|
||||
return TRUE // So Mend Synthetic will work on them.
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/speech_bubble_appearance()
|
||||
return "synthetic_evil"
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/place_spell_in_hand(var/path)
|
||||
if(!path || !ispath(path))
|
||||
return 0
|
||||
@@ -84,21 +170,30 @@
|
||||
var/choice = input(usr, "What spell?", "Give spell") as null|anything in known_spells
|
||||
if(choice)
|
||||
place_spell_in_hand(known_spells[choice])
|
||||
else
|
||||
qdel(active_spell)
|
||||
|
||||
// Used to cast spells.
|
||||
/mob/living/simple_animal/technomancer_golem/RangedAttack(var/atom/A, var/params)
|
||||
if(active_spell)
|
||||
spellcast_pre_animation()
|
||||
if(active_spell.cast_methods & CAST_RANGED)
|
||||
active_spell.on_ranged_cast(A, src)
|
||||
spellcast_post_animation()
|
||||
|
||||
/mob/living/simple_animal/technomancer_golem/UnarmedAttack(var/atom/A, var/proximity)
|
||||
if(proximity)
|
||||
if(active_spell)
|
||||
spellcast_pre_animation()
|
||||
if(!Adjacent(A)) // Need to check again since they might've moved while 'warming up'.
|
||||
spellcast_post_animation()
|
||||
return
|
||||
var/effective_cooldown = round(active_spell.cooldown * core.cooldown_modifier, 5)
|
||||
if(active_spell.cast_methods & CAST_MELEE)
|
||||
active_spell.on_melee_cast(A, src)
|
||||
else if(active_spell.cast_methods & CAST_RANGED)
|
||||
active_spell.on_ranged_cast(A, src)
|
||||
var/effective_cooldown = round(active_spell.cooldown * core.cooldown_modifier, 5)
|
||||
spellcast_post_animation()
|
||||
src.setClickCooldown(effective_cooldown)
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
var/mob/living/carbon/human/wearer = null
|
||||
|
||||
/obj/item/clothing/gloves/regen/equipped(var/mob/living/carbon/human/H)
|
||||
if(H && H.gloves == src)
|
||||
|
||||
@@ -149,10 +149,17 @@
|
||||
// Parameters: 0
|
||||
// Description: Nulls object references so it can qdel() cleanly.
|
||||
/obj/item/weapon/spell/Destroy()
|
||||
owner.unref_spell(src)
|
||||
owner = null
|
||||
core = null
|
||||
return ..()
|
||||
|
||||
// Proc: unref_spells()
|
||||
// Parameters: 0
|
||||
// Description: Nulls object references on specific mobs so it can qdel() cleanly.
|
||||
/mob/proc/unref_spell(var/obj/item/weapon/spell/the_spell)
|
||||
return
|
||||
|
||||
// Proc: update_icon()
|
||||
// Parameters: 0
|
||||
// Description: Applys an overlay if it is a passive spell.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/item/weapon/spell/aura/Destroy()
|
||||
processing_objects -= src
|
||||
log_and_message_admins("has stopped maintaining [src].")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/aura/process()
|
||||
return
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
for(var/mob/living/simple_animal/hostile/SM in controlled_mobs)
|
||||
deselect(SM)
|
||||
controlled_mobs = list()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/control/on_use_cast(mob/living/user)
|
||||
if(controlled_mobs.len != 0)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/obj/item/weapon/spell/energy_siphon/Destroy()
|
||||
stop_siphoning()
|
||||
processing_objects -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/energy_siphon/process()
|
||||
if(!siphoning)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/obj/item/weapon/spell/flame_tongue/Destroy()
|
||||
qdel(welder)
|
||||
welder = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/weldingtool/spell
|
||||
name = "flame"
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
/obj/item/weapon/spell/illusion/Destroy()
|
||||
if(illusion)
|
||||
qdel(illusion)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
// Makes a tiny overlay of the thing the player has copied, so they can easily tell what they currently have.
|
||||
/obj/item/weapon/spell/illusion/update_icon()
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
/datum/modifier/technomancer/mend_synthetic/tick()
|
||||
// if(!holder.isSynthetic()) // Don't heal biologicals!
|
||||
// expire()
|
||||
// return
|
||||
if(!holder.getActualBruteLoss() && !holder.getActualFireLoss()) // No point existing if the spell can't heal.
|
||||
expire()
|
||||
return
|
||||
@@ -42,8 +39,9 @@
|
||||
if(O.robotic >= ORGAN_ROBOT)
|
||||
O.heal_damage(4 * spell_power, 4 * spell_power, 0, 1)
|
||||
else
|
||||
holder.adjustBruteLoss(-4 * spell_power) // Should heal roughly 20 burn/brute over 10 seconds, as tick() is run every 2 seconds.
|
||||
holder.adjustFireLoss(-4 * spell_power) // Ditto.
|
||||
if(holder.isSynthetic())
|
||||
holder.adjustBruteLoss(-4 * spell_power) // Should heal roughly 20 burn/brute over 10 seconds, as tick() is run every 2 seconds.
|
||||
holder.adjustFireLoss(-4 * spell_power) // Ditto.
|
||||
|
||||
holder.adjust_instability(1)
|
||||
if(origin)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/obj/item/weapon/spell/reflect/Destroy()
|
||||
spark_system = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/reflect/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(user.incapacitated())
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
/obj/item/weapon/spell/shield/Destroy()
|
||||
spark_system = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/shield/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||
if(user.incapacitated())
|
||||
|
||||
@@ -24,7 +24,7 @@ var/list/technomancer_belongings = list()
|
||||
/obj/item/weapon/spell/track/Destroy()
|
||||
tracked = null
|
||||
tracking = 0
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/spell/track/on_use_cast(mob/user)
|
||||
if(tracking)
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
economic_modifier = 1
|
||||
access = list() //See /datum/job/assistant/get_access()
|
||||
minimal_access = list() //See /datum/job/assistant/get_access()
|
||||
alt_titles = list("Technical Assistant","Test Subject","Medical Intern","Research Assistant","Visitor", "Resident") // Test Subject is a VOREStation edit.
|
||||
|
||||
/datum/job/assistant/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H)
|
||||
@@ -30,6 +29,10 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/assistant
|
||||
alt_titles = list("Technical Assistant","Test Subject","Medical Intern","Research Assistant",
|
||||
"Visitor" = /decl/hierarchy/outfit/job/assistant/visitor,
|
||||
"Resident" = /decl/hierarchy/outfit/job/assistant/resident) //Test Subject is a VOREStation edit on line 36.
|
||||
|
||||
/datum/job/assistant/get_access()
|
||||
if(config.assistant_maint)
|
||||
|
||||
@@ -11,7 +11,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
spawn_positions = 1
|
||||
supervisors = "company officials and Corporate Regulations"
|
||||
selection_color = "#1D1D4F"
|
||||
alt_titles = list("Site Manager", "Overseer")
|
||||
idtype = /obj/item/weapon/card/id/gold
|
||||
req_admin_notify = 1
|
||||
access = list() //See get_access()
|
||||
@@ -22,45 +21,18 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
minimum_character_age = 25
|
||||
ideal_character_age = 70 // Old geezer captains ftw
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/captain
|
||||
alt_titles = list("Site Manager", "Overseer")
|
||||
|
||||
/datum/job/captain/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/cap(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/com(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform)
|
||||
if(H.age>49)
|
||||
// Since we can have something other than the default uniform at this
|
||||
// point, check if we can actually attach the medal
|
||||
var/obj/item/clothing/uniform = H.w_uniform
|
||||
var/obj/item/clothing/accessory/medal/gold/captain/medal = new()
|
||||
|
||||
if(uniform && uniform.can_attach_accessory(medal))
|
||||
uniform.attach_accessory(null, medal)
|
||||
else
|
||||
qdel(medal)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
|
||||
|
||||
|
||||
H.implant_loyalty()
|
||||
|
||||
return 1
|
||||
|
||||
/*
|
||||
/datum/job/captain/equip(var/mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if(.)
|
||||
H.implant_loyalty(src)
|
||||
*/
|
||||
/datum/job/captain/get_access()
|
||||
return get_all_station_access()
|
||||
|
||||
|
||||
|
||||
/datum/job/hop
|
||||
title = "Head of Personnel"
|
||||
flag = HOP
|
||||
@@ -72,8 +44,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
spawn_positions = 1
|
||||
supervisors = "the Colony Director"
|
||||
selection_color = "#2F2F7F"
|
||||
idtype = /obj/item/weapon/card/id/silver
|
||||
alt_titles = list("Crew Resources Officer")
|
||||
idtype = /obj/item/weapon/card/id/silver/hop
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 10
|
||||
economic_modifier = 10
|
||||
@@ -81,6 +52,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
minimum_character_age = 25
|
||||
ideal_character_age = 50
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/hop
|
||||
alt_titles = list("Crew Resources Officer")
|
||||
|
||||
access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers,
|
||||
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
|
||||
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
|
||||
@@ -94,26 +68,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
|
||||
access_hop, access_RC_announce, access_keycard_auth, access_gateway)
|
||||
|
||||
|
||||
/datum/job/hop/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
|
||||
H.implant_loyalty()
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/datum/job/secretary
|
||||
title = "Command Secretary"
|
||||
flag = BRIDGE
|
||||
@@ -125,26 +79,12 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
spawn_positions = 2
|
||||
supervisors = "command staff"
|
||||
selection_color = "#2F2F7F"
|
||||
idtype = /obj/item/weapon/card/id/silver
|
||||
alt_titles = list("Command Liaison", "Bridge Secretary")
|
||||
idtype = /obj/item/weapon/card/id/silver/secretary
|
||||
minimal_player_age = 5
|
||||
economic_modifier = 7
|
||||
|
||||
access = list(access_heads)
|
||||
minimal_access = list(access_heads)
|
||||
|
||||
/datum/job/secretary/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
if(H.gender == FEMALE)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/female/skirt(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/charcoal(H), slot_w_uniform)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/secretary
|
||||
alt_titles = list("Command Liaison", "Bridge Secretary")
|
||||
+32
-153
@@ -9,32 +9,12 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/bartender
|
||||
access = list(access_hydroponics, access_bar, access_kitchen)
|
||||
minimal_access = list(access_bar)
|
||||
alt_titles = list("Barista")
|
||||
|
||||
|
||||
/datum/job/bartender/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/bar(H), slot_belt)
|
||||
if(has_alt_title(H, alt_title,"Bartender"))
|
||||
var/obj/item/clothing/accessory/permit/gun/bar/permit = new(H)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(permit, slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(permit, slot_in_backpack)
|
||||
permit.set_name(H.real_name)
|
||||
return 1
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/service/bartender
|
||||
alt_titles = list("Barista" = /decl/hierarchy/outfit/job/service/bartender/barista)
|
||||
|
||||
|
||||
/datum/job/chef
|
||||
@@ -47,26 +27,15 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/chef
|
||||
access = list(access_hydroponics, access_bar, access_kitchen)
|
||||
minimal_access = list(access_kitchen)
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/service/chef
|
||||
alt_titles = list("Cook")
|
||||
|
||||
|
||||
/datum/job/chef/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/datum/job/hydro
|
||||
title = "Gardener"
|
||||
title = "Botanist"
|
||||
flag = BOTANIST
|
||||
department = "Civilian"
|
||||
department_flag = CIVILIAN
|
||||
@@ -75,29 +44,12 @@
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/botanist
|
||||
access = list(access_hydroponics, access_bar, access_kitchen)
|
||||
minimal_access = list(access_hydroponics)
|
||||
alt_titles = list("Hydroponicist")
|
||||
|
||||
|
||||
/datum/job/hydro/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/apron(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/hydroponics(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/hyd(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/hyd(H), slot_back)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/service/gardener
|
||||
alt_titles = list("Hydroponicist", "Gardener")
|
||||
|
||||
//Cargo
|
||||
/datum/job/qm
|
||||
@@ -114,23 +66,11 @@
|
||||
economic_modifier = 5
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
|
||||
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
|
||||
alt_titles = list("Supply Chief")
|
||||
|
||||
ideal_character_age = 40
|
||||
|
||||
|
||||
/datum/job/qm/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/quartermaster(H), slot_belt)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/cargo/qm
|
||||
alt_titles = list("Supply Chief")
|
||||
|
||||
/datum/job/cargo_tech
|
||||
title = "Cargo Technician"
|
||||
@@ -142,20 +82,11 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the quartermaster and the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/cargo
|
||||
idtype = /obj/item/weapon/card/id/cargo/cargo_tech
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
|
||||
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting)
|
||||
|
||||
/datum/job/cargo_tech/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/cargo/cargo_tech
|
||||
|
||||
/datum/job/mining
|
||||
title = "Shaft Miner"
|
||||
@@ -167,37 +98,15 @@
|
||||
spawn_positions = 3
|
||||
supervisors = "the quartermaster and the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/cargo
|
||||
idtype = /obj/item/weapon/card/id/cargo/mining
|
||||
economic_modifier = 5
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station)
|
||||
minimal_access = list(access_mining, access_mining_station, access_mailsorting)
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/cargo/mining
|
||||
alt_titles = list("Drill Technician","Prospector")
|
||||
|
||||
/datum/job/mining/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
/datum/job/mining/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return 1
|
||||
|
||||
//Service
|
||||
/datum/job/janitor
|
||||
title = "Janitor"
|
||||
flag = JANITOR
|
||||
@@ -208,22 +117,13 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/janitor
|
||||
access = list(access_janitor, access_maint_tunnels)
|
||||
minimal_access = list(access_janitor, access_maint_tunnels)
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/service/janitor
|
||||
alt_titles = list("Custodian", "Sanitation Technician")
|
||||
|
||||
|
||||
/datum/job/janitor/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
//More or less assistants
|
||||
/datum/job/librarian
|
||||
title = "Librarian"
|
||||
@@ -235,22 +135,13 @@
|
||||
spawn_positions = 2 // VOREStation Edit. Original number is 1.
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/librarian
|
||||
access = list(access_library, access_maint_tunnels)
|
||||
minimal_access = list(access_library)
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/librarian
|
||||
alt_titles = list("Journalist", "Professor", "Historian", "Writer")
|
||||
|
||||
|
||||
/datum/job/librarian/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
|
||||
/datum/job/lawyer
|
||||
title = "Internal Affairs Agent"
|
||||
@@ -262,29 +153,17 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "company officials and Corporate Regulations"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/internal_affairs_agent
|
||||
economic_modifier = 7
|
||||
access = list(access_lawyer, access_sec_doors, access_maint_tunnels, access_heads)
|
||||
minimal_access = list(access_lawyer, access_sec_doors, access_heads)
|
||||
minimal_player_age = 7
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/internal_affairs_agent
|
||||
|
||||
/datum/job/lawyer/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/ia(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
|
||||
H.implant_loyalty()
|
||||
|
||||
|
||||
return 1
|
||||
/*
|
||||
/datum/job/lawyer/equip(var/mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
if(.)
|
||||
H.implant_loyalty(H)
|
||||
*/
|
||||
@@ -9,23 +9,23 @@
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/civilian
|
||||
idtype = /obj/item/weapon/card/id/civilian/chaplain
|
||||
access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels)
|
||||
minimal_access = list(access_chapel_office, access_crematorium)
|
||||
alt_titles = list("Counselor")
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/chaplain
|
||||
|
||||
/datum/job/chaplain/equip(var/mob/living/carbon/human/H, var/alt_title, var/ask_questions = TRUE)
|
||||
if(!H) return 0
|
||||
|
||||
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT
|
||||
H.equip_to_slot_or_del(B, slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(!ask_questions)
|
||||
return 1
|
||||
return
|
||||
|
||||
var/obj/item/weapon/storage/bible/B = locate(/obj/item/weapon/storage/bible) in H
|
||||
if(!B)
|
||||
return
|
||||
|
||||
spawn(0)
|
||||
var/religion_name = "Christianity"
|
||||
@@ -33,7 +33,6 @@
|
||||
|
||||
if (!new_religion)
|
||||
new_religion = religion_name
|
||||
|
||||
switch(lowertext(new_religion))
|
||||
if("christianity")
|
||||
B.name = pick("The Holy Bible","The Dead Sea Scrolls")
|
||||
@@ -83,10 +82,6 @@
|
||||
if("Koran")
|
||||
B.icon_state = "koran"
|
||||
B.item_state = "koran"
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.set_dir(4)
|
||||
if("Scrapbook")
|
||||
B.icon_state = "scrapbook"
|
||||
B.item_state = "scrapbook"
|
||||
@@ -102,10 +97,6 @@
|
||||
if("Athiest")
|
||||
B.icon_state = "athiest"
|
||||
B.item_state = "syringe_kit"
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.set_dir(10)
|
||||
if("Tome")
|
||||
B.icon_state = "tome"
|
||||
B.item_state = "syringe_kit"
|
||||
@@ -118,10 +109,6 @@
|
||||
if("Scientology")
|
||||
B.icon_state = "scientology"
|
||||
B.item_state = "scientology"
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.set_dir(8)
|
||||
if("the bible melts")
|
||||
B.icon_state = "melted"
|
||||
B.item_state = "melted"
|
||||
@@ -129,13 +116,8 @@
|
||||
B.icon_state = "necronomicon"
|
||||
B.item_state = "necronomicon"
|
||||
else
|
||||
// if christian bible, revert to default
|
||||
B.icon_state = "bible"
|
||||
B.item_state = "bible"
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.set_dir(2)
|
||||
|
||||
H.update_inv_l_hand() // so that it updates the bible's item_state in his hand
|
||||
|
||||
@@ -144,7 +126,7 @@
|
||||
accepted = 1
|
||||
if("No")
|
||||
if(outoftime)
|
||||
H << "Welp, out of time, buddy. You're stuck. Next time choose faster."
|
||||
to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.")
|
||||
accepted = 1
|
||||
|
||||
if(ticker)
|
||||
|
||||
@@ -27,28 +27,7 @@
|
||||
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload)
|
||||
minimal_player_age = 7
|
||||
|
||||
|
||||
/datum/job/chief_engineer/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
return 1
|
||||
|
||||
/datum/job/chief_engineer/equip_survival(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return 1
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/engineering/chief_engineer
|
||||
|
||||
/datum/job/engineer
|
||||
title = "Station Engineer"
|
||||
@@ -60,7 +39,7 @@
|
||||
spawn_positions = 5
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#5B4D20"
|
||||
idtype = /obj/item/weapon/card/id/engineering
|
||||
idtype = /obj/item/weapon/card/id/engineering/engineer
|
||||
economic_modifier = 5
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
|
||||
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction)
|
||||
@@ -68,27 +47,7 @@
|
||||
|
||||
minimal_player_age = 3
|
||||
|
||||
/datum/job/engineer/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/engineering(H), slot_l_store)
|
||||
return 1
|
||||
|
||||
/datum/job/engineer/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return 1
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/engineering/engineer
|
||||
|
||||
/datum/job/atmos
|
||||
title = "Atmospheric Technician"
|
||||
@@ -100,28 +59,11 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#5B4D20"
|
||||
idtype = /obj/item/weapon/card/id/engineering
|
||||
idtype = /obj/item/weapon/card/id/engineering/atmos
|
||||
economic_modifier = 5
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks)
|
||||
minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks)
|
||||
|
||||
minimal_player_age = 3
|
||||
|
||||
/datum/job/atmos/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/atmos(H), slot_l_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt)
|
||||
return 1
|
||||
|
||||
/datum/job/atmos/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/engineering/atmos
|
||||
@@ -25,9 +25,21 @@
|
||||
var/account_allowed = 1 // Does this job type come with a station account?
|
||||
var/economic_modifier = 2 // With how much does this job modify the initial account amount?
|
||||
|
||||
/datum/job/proc/equip(var/mob/living/carbon/human/H)
|
||||
var/outfit_type
|
||||
|
||||
/datum/job/proc/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title)
|
||||
if(!outfit)
|
||||
return FALSE
|
||||
. = outfit.equip(H, title, alt_title)
|
||||
return 1
|
||||
|
||||
/datum/job/proc/get_outfit(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(alt_title && alt_titles)
|
||||
. = alt_titles[alt_title]
|
||||
. = . || outfit_type
|
||||
. = outfit_by_type(.)
|
||||
|
||||
/datum/job/proc/equip_backpack(var/mob/living/carbon/human/H)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
@@ -35,11 +47,6 @@
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
|
||||
/datum/job/proc/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,0)
|
||||
return 1
|
||||
|
||||
/datum/job/proc/setup_account(var/mob/living/carbon/human/H)
|
||||
if(!account_allowed || (H.mind && H.mind.initial_account))
|
||||
return
|
||||
@@ -71,9 +78,12 @@
|
||||
|
||||
H << "<span class='notice'><b>Your account number is: [M.account_number], your account pin is: [M.remote_access_pin]</b></span>"
|
||||
|
||||
// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/del()
|
||||
// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/qdel()
|
||||
/datum/job/proc/equip_preview(mob/living/carbon/human/H, var/alt_title)
|
||||
. = equip(H, alt_title)
|
||||
var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title)
|
||||
if(!outfit)
|
||||
return FALSE
|
||||
. = outfit.equip_base(H, title, alt_title)
|
||||
|
||||
/datum/job/proc/get_access()
|
||||
if(!config || config.jobs_have_minimal_access)
|
||||
|
||||
+18
-142
@@ -23,21 +23,7 @@
|
||||
minimal_player_age = 10
|
||||
ideal_character_age = 50
|
||||
|
||||
/datum/job/cmo/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H), slot_s_store)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/cmo
|
||||
|
||||
/datum/job/doctor
|
||||
title = "Medical Doctor"
|
||||
@@ -49,58 +35,16 @@
|
||||
spawn_positions = 3
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#013D3B"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
idtype = /obj/item/weapon/card/id/medical/doctor
|
||||
economic_modifier = 7
|
||||
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva)
|
||||
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva)
|
||||
alt_titles = list("Surgeon","Emergency Physician","Nurse","Virologist")
|
||||
|
||||
/datum/job/doctor/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Emergency Physician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
else if(has_alt_title(H, alt_title,"Surgeon"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(H), slot_head)
|
||||
else if(has_alt_title(H, alt_title,"Virologist"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/virology(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/vir(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/viro(H), slot_back)
|
||||
else if(has_alt_title(H, alt_title,"Medical Doctor"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
else if(has_alt_title(H, alt_title,"Nurse"))
|
||||
if(H.gender == FEMALE)
|
||||
if(prob(50))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/nursesuit(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/nurse(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/nursehat(H), slot_head)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs/purple(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H), slot_s_store)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/doctor
|
||||
alt_titles = list(
|
||||
"Surgeon" = /decl/hierarchy/outfit/job/medical/doctor/surgeon,
|
||||
"Emergency Physician" = /decl/hierarchy/outfit/job/medical/doctor/emergency_physician,
|
||||
"Nurse" = /decl/hierarchy/outfit/job/medical/doctor/nurse,
|
||||
"Virologist" = /decl/hierarchy/outfit/job/medical/doctor/virologist)
|
||||
|
||||
//Chemist is a medical job damnit //YEAH FUCK YOU SCIENCE -Pete //Guys, behave -Erro
|
||||
/datum/job/chemist
|
||||
@@ -113,7 +57,7 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#013D3B"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
idtype = /obj/item/weapon/card/id/medical/chemist
|
||||
economic_modifier = 5
|
||||
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||
minimal_access = list(access_medical, access_medical_equip, access_chemistry)
|
||||
@@ -121,20 +65,7 @@
|
||||
|
||||
minimal_player_age = 3
|
||||
|
||||
/datum/job/chemist/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/chem(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/chem(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/chemist
|
||||
|
||||
/* I'm commenting out Geneticist so you can't actually see it in the job menu, given that you can't play as one - Jon.
|
||||
/datum/job/geneticist
|
||||
@@ -147,23 +78,12 @@
|
||||
spawn_positions = 0
|
||||
supervisors = "the chief medical officer and research director"
|
||||
selection_color = "#013D3B"
|
||||
idtype = /obj/item/weapon/card/id/medical/geneticist
|
||||
economic_modifier = 7
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research)
|
||||
minimal_access = list(access_medical, access_morgue, access_genetics, access_research)
|
||||
|
||||
/datum/job/geneticist/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/genetics(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/gen(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/geneticist
|
||||
*/
|
||||
|
||||
/datum/job/psychiatrist
|
||||
@@ -177,29 +97,11 @@
|
||||
economic_modifier = 5
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#013D3B"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
idtype = /obj/item/weapon/card/id/medical/psychiatrist
|
||||
access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist)
|
||||
minimal_access = list(access_medical, access_medical_equip, access_psychiatrist)
|
||||
alt_titles = list("Psychologist")
|
||||
|
||||
/datum/job/psychiatrist/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Psychiatrist"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform)
|
||||
else if(has_alt_title(H, alt_title,"Psychologist"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/psychiatrist
|
||||
alt_titles = list("Psychologist" = /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist)
|
||||
|
||||
/datum/job/Paramedic
|
||||
title = "Paramedic"
|
||||
@@ -211,35 +113,9 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#013D3B"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
idtype = /obj/item/weapon/card/id/medical/paramedic
|
||||
economic_modifier = 4
|
||||
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist)
|
||||
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks)
|
||||
alt_titles = list("Emergency Medical Technician")
|
||||
|
||||
/datum/job/Paramedic/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back)
|
||||
if(has_alt_title(H, alt_title,"Emergency Medical Technician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
else if(has_alt_title(H, alt_title,"Paramedic"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical/emt(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_l_store)
|
||||
return 1
|
||||
|
||||
/datum/job/Paramedic/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.species.equip_survival_gear(H,1)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/medical/paramedic
|
||||
alt_titles = list("Emergency Medical Technician" = /decl/hierarchy/outfit/job/medical/paramedic/emt)
|
||||
@@ -26,22 +26,8 @@
|
||||
minimal_player_age = 14
|
||||
ideal_character_age = 50
|
||||
|
||||
/datum/job/rd/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/science/rd
|
||||
alt_titles = list("Research Supervisor")
|
||||
|
||||
/datum/job/scientist
|
||||
title = "Scientist"
|
||||
@@ -53,27 +39,15 @@
|
||||
spawn_positions = 3
|
||||
supervisors = "the research director"
|
||||
selection_color = "#633D63"
|
||||
idtype = /obj/item/weapon/card/id/science
|
||||
idtype = /obj/item/weapon/card/id/science/scientist
|
||||
economic_modifier = 7
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch)
|
||||
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch)
|
||||
alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher")
|
||||
|
||||
minimal_player_age = 14
|
||||
|
||||
/datum/job/scientist/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/science/scientist
|
||||
alt_titles = list("Xenoarchaeologist", "Anomalist", "Phoron Researcher")
|
||||
|
||||
/datum/job/xenobiologist
|
||||
title = "Xenobiologist"
|
||||
@@ -85,27 +59,15 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the research director"
|
||||
selection_color = "#633D63"
|
||||
idtype = /obj/item/weapon/card/id/science
|
||||
idtype = /obj/item/weapon/card/id/science/xenobiologist
|
||||
economic_modifier = 7
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics)
|
||||
minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage)
|
||||
alt_titles = list("Xenobotanist")
|
||||
|
||||
minimal_player_age = 14
|
||||
|
||||
/datum/job/xenobiologist/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/science/xenobiologist
|
||||
alt_titles = list("Xenobotanist")
|
||||
|
||||
/datum/job/roboticist
|
||||
title = "Roboticist"
|
||||
@@ -117,22 +79,11 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "research director"
|
||||
selection_color = "#633D63"
|
||||
idtype = /obj/item/weapon/card/id/science
|
||||
idtype = /obj/item/weapon/card/id/science/roboticist
|
||||
economic_modifier = 5
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
|
||||
minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access.
|
||||
alt_titles = list("Biomechanical Engineer","Mechatronic Engineer")
|
||||
|
||||
minimal_player_age = 7
|
||||
|
||||
/datum/job/roboticist/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_r_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/science/roboticist
|
||||
alt_titles = list("Biomechanical Engineer","Mechatronic Engineer")
|
||||
|
||||
+11
-100
@@ -18,34 +18,13 @@
|
||||
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)//VOREStation Edit
|
||||
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory,
|
||||
access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers,
|
||||
access_research, access_engine, access_mining, access_construction, access_mailsorting,
|
||||
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
|
||||
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks)//VOREStation Edit
|
||||
alt_titles = list("Commander", "Chief of Security")
|
||||
minimum_character_age = 25
|
||||
minimal_player_age = 14
|
||||
|
||||
/datum/job/hos/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hos(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_store)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
|
||||
H.implant_loyalty()
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/security/hos
|
||||
alt_titles = list("Security Commander", "Chief of Security")
|
||||
|
||||
/datum/job/warden
|
||||
title = "Warden"
|
||||
@@ -57,34 +36,12 @@
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#601C1C"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
idtype = /obj/item/weapon/card/id/security/warden
|
||||
economic_modifier = 5
|
||||
access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks)
|
||||
minimal_player_age = 5
|
||||
|
||||
/datum/job/warden/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/warden(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses)
|
||||
// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/security/warden
|
||||
|
||||
/datum/job/detective
|
||||
title = "Detective"
|
||||
@@ -96,40 +53,13 @@
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#601C1C"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
alt_titles = list("Forensic Technician","Investigator")
|
||||
idtype = /obj/item/weapon/card/id/security/detective
|
||||
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks)
|
||||
economic_modifier = 5
|
||||
minimal_player_age = 3
|
||||
|
||||
/datum/job/detective/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(H), slot_l_store)
|
||||
if(H.backbag == 1)//Why cant some of these things spawn in his office?
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
|
||||
if(has_alt_title(H, alt_title,"Forensic Technician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/forensics/blue(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/crimekit, slot_r_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_trench(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/det(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/crimekit(H), slot_r_hand)
|
||||
return 1
|
||||
|
||||
|
||||
outfit_type = /decl/hierarchy/outfit/job/security/detective
|
||||
alt_titles = list("Forensic Technician" = /decl/hierarchy/outfit/job/security/detective/forensic, "Investigator")
|
||||
|
||||
/datum/job/officer
|
||||
title = "Security Officer"
|
||||
@@ -141,29 +71,10 @@
|
||||
spawn_positions = 4
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#601C1C"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
alt_titles = list("Junior Officer")
|
||||
idtype = /obj/item/weapon/card/id/security/officer
|
||||
economic_modifier = 4
|
||||
access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_external_airlocks)
|
||||
minimal_player_age = 3
|
||||
|
||||
/datum/job/officer/equip(var/mob/living/carbon/human/H, var/alt_title)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back)
|
||||
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
|
||||
return 1
|
||||
outfit_type = /decl/hierarchy/outfit/job/security/officer
|
||||
alt_titles = list("Junior Officer")
|
||||
@@ -11,17 +11,18 @@
|
||||
minimal_player_age = 7
|
||||
account_allowed = 0
|
||||
economic_modifier = 0
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
|
||||
equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
|
||||
equip_backpack(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
/datum/job/ai/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
/*
|
||||
/datum/job/ai/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
*/
|
||||
/datum/job/ai/equip_backpack(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
|
||||
/datum/job/ai/is_position_available()
|
||||
return (empty_playable_ai_cores.len != 0)
|
||||
@@ -45,18 +46,18 @@
|
||||
account_allowed = 0
|
||||
economic_modifier = 0
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
|
||||
equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
|
||||
equip_backpack(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
return 1
|
||||
/datum/job/cyborg/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
/*
|
||||
/datum/job/cyborg/equip_survival(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
*/
|
||||
/datum/job/cyborg/equip_backpack(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
return 1
|
||||
|
||||
/datum/job/cyborg/equip_preview(mob/living/carbon/human/H)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/cardborg(H), slot_wear_suit)
|
||||
|
||||
@@ -365,7 +365,8 @@ var/global/datum/controller/occupations/job_master
|
||||
H << "<span class='warning'>Your current species, job or whitelist status does not permit you to spawn with [thing]!</span>"
|
||||
continue
|
||||
|
||||
H.amend_exploitable(G.path)
|
||||
if(G.exploitable)
|
||||
H.amend_exploitable(G.path)
|
||||
|
||||
if(G.slot == "implant")
|
||||
H.implant_loadout(G)
|
||||
@@ -385,10 +386,10 @@ var/global/datum/controller/occupations/job_master
|
||||
else
|
||||
spawn_in_storage += thing
|
||||
//Equip job items.
|
||||
job.equip(H)
|
||||
job.setup_account(H)
|
||||
job.equip(H, H.mind ? H.mind.role_alt_title : "")
|
||||
job.equip_backpack(H)
|
||||
job.equip_survival(H)
|
||||
// job.equip_survival(H)
|
||||
job.apply_fingerprints(H)
|
||||
H.equip_post_job()
|
||||
|
||||
@@ -543,7 +544,7 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
H.equip_to_slot_or_del(C, slot_wear_id)
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt)
|
||||
// H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt)
|
||||
if(locate(/obj/item/device/pda,H))
|
||||
var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H)
|
||||
pda.owner = H.real_name
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
if(DEAD)
|
||||
data["stat"] = "<font color='red'>Dead</font>"
|
||||
data["health"] = occupant.health
|
||||
data["maxHealth"] = occupant.getMaxHealth()
|
||||
if(iscarbon(occupant))
|
||||
var/mob/living/carbon/C = occupant
|
||||
data["pulse"] = C.get_pulse(GETPULSE_TOOL)
|
||||
@@ -189,8 +190,8 @@
|
||||
go_out()
|
||||
if(href_list["beaker"])
|
||||
remove_beaker()
|
||||
if(href_list["filter"])
|
||||
if(filtering != text2num(href_list["filter"]))
|
||||
if(href_list["sleeper_filter"])
|
||||
if(filtering != text2num(href_list["sleeper_filter"]))
|
||||
toggle_filter()
|
||||
if(href_list["chemical"] && href_list["amount"])
|
||||
if(occupant && occupant.stat != DEAD)
|
||||
|
||||
@@ -270,6 +270,7 @@
|
||||
occupantData["name"] = H.name
|
||||
occupantData["stat"] = H.stat
|
||||
occupantData["health"] = H.health
|
||||
occupantData["maxHealth"] = H.getMaxHealth()
|
||||
|
||||
occupantData["hasVirus"] = H.virus2.len
|
||||
|
||||
@@ -427,7 +428,7 @@
|
||||
t1 = "Unconscious"
|
||||
else
|
||||
t1 = "*dead*"
|
||||
dat += "<font color=[occupant.health > 50 ? "blue" : "red"]>\tHealth %: [occupant.health], ([t1])</font><br>"
|
||||
dat += "<font color=[occupant.health > (occupant.getMaxHealth() / 2) ? "blue" : "red"]>\tHealth %: [(occupant.health / occupant.getMaxHealth())*100], ([t1])</font><br>"
|
||||
|
||||
if(occupant.virus2.len)
|
||||
dat += "<font color='red'>Viral pathogen detected in blood stream.</font><BR>"
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
signal.data["nitrogen"] = 0
|
||||
signal.data["carbon_dioxide"] = 0
|
||||
signal.data["sigtype"]="status"
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/air_sensor/proc/set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
@@ -239,7 +239,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
. = 1
|
||||
|
||||
signal.data["sigtype"]="command"
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/computer/general_air_control/supermatter_core
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
@@ -349,7 +349,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
. = 1
|
||||
|
||||
signal.data["sigtype"]="command"
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/computer/general_air_control/fuel_injection
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
@@ -386,7 +386,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
"sigtype"="command"
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
..()
|
||||
|
||||
@@ -446,7 +446,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
"status" = 1,
|
||||
"sigtype"="command"
|
||||
)
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
if(href_list["toggle_automation"])
|
||||
automation = !automation
|
||||
@@ -465,7 +465,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
"sigtype"="command"
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
|
||||
if(href_list["injection"])
|
||||
if(!radio_connection)
|
||||
@@ -480,4 +480,4 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
"sigtype"="command"
|
||||
)
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, radio_filter = RADIO_ATMOSIA)
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/machinery/biogenerator
|
||||
name = "Biogenerator"
|
||||
name = "biogenerator"
|
||||
desc = ""
|
||||
icon = 'icons/obj/biogenerator.dmi'
|
||||
icon_state = "biogen-stand"
|
||||
@@ -115,6 +115,7 @@
|
||||
dat += "<A href='?src=\ref[src];action=create;item=tbelt;cost=300'>Utility belt</A> <FONT COLOR=blue>([round(300/build_eff)])</FONT><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=create;item=satchel;cost=400'>Leather Satchel</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=create;item=cashbag;cost=400'>Cash Bag</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=create;item=chembag;cost=400'>Chemistry Bag</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=create;item=workboots;cost=400'>Workboots</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
|
||||
dat += "<A href='?src=\ref[src];action=create;item=leathershoes;cost=400'>Leather Shoes</A> <FONT COLOR=blue>([round(400/build_eff)])</FONT><BR>"
|
||||
|
||||
@@ -219,6 +220,8 @@
|
||||
new/obj/item/weapon/storage/backpack/satchel(loc)
|
||||
if("cashbag")
|
||||
new/obj/item/weapon/storage/bag/cash(loc)
|
||||
if("chembag")
|
||||
new/obj/item/weapon/storage/bag/chemistry(loc)
|
||||
if("monkey")
|
||||
new/mob/living/carbon/human/monkey(loc)
|
||||
if("workboots")
|
||||
@@ -271,4 +274,4 @@
|
||||
man_rating += P.rating
|
||||
|
||||
build_eff = man_rating
|
||||
eat_eff = bin_rating
|
||||
eat_eff = bin_rating
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
use_power(7500) //This might need tweaking.
|
||||
return
|
||||
|
||||
else if((occupant.health >= heal_level || occupant.health == occupant.maxHealth) && (!eject_wait))
|
||||
else if((occupant.health >= heal_level || occupant.health == occupant.getMaxHealth()) && (!eject_wait))
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
audible_message("\The [src] signals that the cloning process is complete.")
|
||||
connected_message("Cloning Process Complete.")
|
||||
|
||||
@@ -387,9 +387,9 @@
|
||||
var/dat = ""
|
||||
if(gameStatus == ORION_STATUS_GAMEOVER)
|
||||
dat = "<center><h1>Game Over</h1></center>"
|
||||
dat += "Like many before you, your crew never made it to Orion, lost to space... <br><b>Forever</b>."
|
||||
dat += "Like many before you, your crew never made it to Orion, lost to space... <br><b>forever</b>."
|
||||
if(settlers.len == 0)
|
||||
dat += "<br>Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy."
|
||||
dat += "<br>Your entire crew died, and your ship joins the fleet of ghost-ships littering the galaxy."
|
||||
else
|
||||
if(food <= 0)
|
||||
dat += "<br>You ran out of food and starved."
|
||||
@@ -650,17 +650,17 @@
|
||||
if(prob(success))
|
||||
FU = rand(5,15)
|
||||
FO = rand(5,15)
|
||||
last_spaceport_action = "You successfully raided the spaceport! you gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)"
|
||||
last_spaceport_action = "You successfully raided the spaceport! You gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)"
|
||||
else
|
||||
FU = rand(-5,-15)
|
||||
FO = rand(-5,-15)
|
||||
last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)"
|
||||
last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)"
|
||||
|
||||
//your chance of lose a crewmember is 1/2 your chance of success
|
||||
//this makes higher % failures hurt more, don't get cocky space cowboy!
|
||||
if(prob(success*5))
|
||||
var/lost_crew = remove_crewmember()
|
||||
last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)"
|
||||
last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)"
|
||||
if(emagged)
|
||||
src.visible_message("The machine states, 'YOU ARE UNDER ARREST, RAIDER!' and shoots handcuffs onto [usr]!", "You hear something say 'YOU ARE UNDER ARREST, RAIDER!' and a clinking sound")
|
||||
var/obj/item/weapon/handcuffs/C = new(src.loc)
|
||||
@@ -730,9 +730,9 @@
|
||||
eventdat += "<br>They have stolen [sfood] <b>Food</b> and [sfuel] <b>Fuel</b>."
|
||||
else if(prob(10))
|
||||
var/deadname = remove_crewmember()
|
||||
eventdat += "<br>[deadname] tried to fight back but was killed."
|
||||
eventdat += "<br>[deadname] tried to fight back, but was killed."
|
||||
else
|
||||
eventdat += "<br>Fortunately you fended them off without any trouble."
|
||||
eventdat += "<br>Fortunately, you fended them off without any trouble."
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];eventclose=1'>Continue</a></P>"
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>"
|
||||
canContinueEvent = 1
|
||||
@@ -890,7 +890,7 @@
|
||||
add_crewmember()
|
||||
freecrew++
|
||||
|
||||
eventdat += "<br>The traders of the spaceport take pitty on you, and give you some food and fuel (+[FU]FU,+[FO]FO)"
|
||||
eventdat += "<br>The traders of the spaceport take pity on you, and give you some supplies. (+[FU]FU,+[FO]FO)"
|
||||
if(freecrew)
|
||||
eventdat += "<br>You also gain a new crewmember!"
|
||||
|
||||
@@ -904,13 +904,13 @@
|
||||
if(food >= 10 && fuel >= 10)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buycrew=1'>Hire a new Crewmember (-10FU,-10FO)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford a new Crewmember</P>"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford a new Crewmember</P>"
|
||||
|
||||
//Sell crew
|
||||
if(settlers.len > 1)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];sellcrew=1'>Sell crew for Fuel and Food (+7FU,+7FO)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to sell a Crewmember</P>"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to sell a Crewmember</P>"
|
||||
|
||||
//BUY/SELL STUFF
|
||||
eventdat += "<P ALIGN=Right>Spare Parts:</P>"
|
||||
@@ -919,30 +919,30 @@
|
||||
if(fuel > 5)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=1'>Buy Engine Parts (-5FU)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to buy Engine Parts</a>"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to buy Engine Parts</a>"
|
||||
|
||||
//Hull plates
|
||||
if(fuel > 5)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=2'>Buy Hull Plates (-5FU)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to buy Hull Plates</a>"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to buy Hull Plates</a>"
|
||||
|
||||
//Electronics
|
||||
if(fuel > 5)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];buyparts=3'>Buy Spare Electronics (-5FU)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to buy Spare Electronics</a>"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to buy Spare Electronics</a>"
|
||||
|
||||
//Trade
|
||||
if(fuel > 5)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];trade=1'>Trade Fuel for Food (-5FU,+5FO)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to Trade Fuel for Food</P"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to Trade Fuel for Food</P"
|
||||
|
||||
if(food > 5)
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];trade=2'>Trade Food for Fuel (+5FU,-5FO)</a></P>"
|
||||
else
|
||||
eventdat += "<P ALIGN=Right>Cant afford to Trade Food for Fuel</P"
|
||||
eventdat += "<P ALIGN=Right>You cannot afford to Trade Food for Fuel</P"
|
||||
|
||||
//Raid the spaceport
|
||||
eventdat += "<P ALIGN=Right><a href='byond://?src=\ref[src];raid_spaceport=1'>!! Raid Spaceport !!</a></P>"
|
||||
@@ -1057,4 +1057,4 @@
|
||||
#undef ORION_STATUS_START
|
||||
#undef ORION_STATUS_NORMAL
|
||||
#undef ORION_STATUS_GAMEOVER
|
||||
#undef ORION_STATUS_MARKET
|
||||
#undef ORION_STATUS_MARKET
|
||||
|
||||
@@ -65,20 +65,20 @@
|
||||
|
||||
var/datum/radio_frequency/radio_connection = null
|
||||
var/frequency = PUB_FREQ
|
||||
var/filter = null
|
||||
var/rad_filter = null
|
||||
var/range = null
|
||||
var/subspace = 0
|
||||
|
||||
init()
|
||||
..()
|
||||
spawn(5)
|
||||
radio_connection = radio_controller.add_object(src, src.frequency, src.filter)
|
||||
radio_connection = radio_controller.add_object(src, src.frequency, src.rad_filter)
|
||||
|
||||
proc/set_frequency(new_frequency)
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, filter)
|
||||
radio_connection = radio_controller.add_object(src, frequency, rad_filter)
|
||||
else
|
||||
frequency = new_frequency
|
||||
spawn(rand(5,10))
|
||||
@@ -94,7 +94,7 @@
|
||||
if(!computer || (computer.stat&~MAINT) || !computer.program) return
|
||||
if(!radio_connection) return
|
||||
|
||||
radio_connection.post_signal(src,signal,filter,range)
|
||||
radio_connection.post_signal(src,signal,rad_filter,range)
|
||||
|
||||
get_machines(var/typekey)
|
||||
if(!radio_connection || !radio_connection.frequency)
|
||||
|
||||
@@ -101,7 +101,7 @@ obj/machinery/door/airlock/proc/send_status(var/bumped = 0)
|
||||
if (bumped)
|
||||
signal.data["bumped_with_access"] = 1
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, radio_filter = RADIO_AIRLOCK)
|
||||
|
||||
|
||||
obj/machinery/door/airlock/open(surpress_send)
|
||||
@@ -181,7 +181,7 @@ obj/machinery/airlock_sensor/attack_hand(mob/user)
|
||||
signal.data["tag"] = master_tag
|
||||
signal.data["command"] = command
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, radio_filter = RADIO_AIRLOCK)
|
||||
flick("airlock_sensor_cycle", src)
|
||||
|
||||
obj/machinery/airlock_sensor/process()
|
||||
@@ -196,7 +196,7 @@ obj/machinery/airlock_sensor/process()
|
||||
signal.data["timestamp"] = world.time
|
||||
signal.data["pressure"] = num2text(pressure)
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, radio_filter = RADIO_AIRLOCK)
|
||||
|
||||
previousPressure = pressure
|
||||
|
||||
@@ -269,7 +269,7 @@ obj/machinery/access_button/attack_hand(mob/user)
|
||||
signal.data["tag"] = master_tag
|
||||
signal.data["command"] = command
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, radio_filter = RADIO_AIRLOCK)
|
||||
flick("access_button_cycle", src)
|
||||
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
return
|
||||
|
||||
if(alarmed && density && lockdown && !allowed(user))
|
||||
user << "<span class='warning'>Access denied. Please wait for authorities to arrive, or for the alert to clear.</span>"
|
||||
user << "<span class='warning'>Access denied. Please wait for authorities to arrive, or for the alert to clear.</span>"
|
||||
return
|
||||
else
|
||||
user.visible_message("<span class='notice'>\The [src] [density ? "open" : "close"]s for \the [user].</span>",\
|
||||
|
||||
@@ -69,11 +69,11 @@ obj/machinery/embedded_controller/radio/Destroy()
|
||||
else
|
||||
icon_state = "airlock_control_off"
|
||||
|
||||
/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, var/filter = null)
|
||||
/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, var/radio_filter = null)
|
||||
signal.transmission_method = TRANSMISSION_RADIO
|
||||
if(radio_connection)
|
||||
//use_power(radio_power_use) //neat idea, but causes way too much lag.
|
||||
return radio_connection.post_signal(src, signal, filter)
|
||||
return radio_connection.post_signal(src, signal, radio_filter)
|
||||
else
|
||||
qdel(signal)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/telecomms/exonet_node(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/ansible(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/filter(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/weapon/circuitboard/telecomms/pda_multicaster(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/ansible(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/filter(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/sub_filter(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||
component_parts += new /obj/item/weapon/stock_parts/subspace/treatment(src)
|
||||
component_parts += new /obj/item/stack/cable_coil(src, 2)
|
||||
|
||||
@@ -129,13 +129,13 @@ Buildable meters
|
||||
src.pipe_type = PIPE_VOLUME_PUMP
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/binary/pump))
|
||||
src.pipe_type = PIPE_PUMP
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter/m_filter))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/atmos_filter/m_filter))
|
||||
src.pipe_type = PIPE_GAS_FILTER_M
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer/t_mixer))
|
||||
src.pipe_type = PIPE_GAS_MIXER_T
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer/m_mixer))
|
||||
src.pipe_type = PIPE_GAS_MIXER_M
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/filter))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/atmos_filter))
|
||||
src.pipe_type = PIPE_GAS_FILTER
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/trinary/mixer))
|
||||
src.pipe_type = PIPE_GAS_MIXER
|
||||
@@ -175,7 +175,7 @@ Buildable meters
|
||||
src.pipe_type = PIPE_CAP
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/omni/mixer))
|
||||
src.pipe_type = PIPE_OMNI_MIXER
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/omni/filter))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/omni/atmos_filter))
|
||||
src.pipe_type = PIPE_OMNI_FILTER
|
||||
///// Z-Level stuff
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/up/supply))
|
||||
@@ -809,7 +809,7 @@ Buildable meters
|
||||
P.node2.build_network()
|
||||
|
||||
if(PIPE_GAS_FILTER) //gas filter
|
||||
var/obj/machinery/atmospherics/trinary/filter/P = new(src.loc)
|
||||
var/obj/machinery/atmospherics/trinary/atmos_filter/P = new(src.loc)
|
||||
P.set_dir(dir)
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
@@ -849,7 +849,7 @@ Buildable meters
|
||||
P.node3.build_network()
|
||||
|
||||
if(PIPE_GAS_FILTER_M) //gas filter mirrored
|
||||
var/obj/machinery/atmospherics/trinary/filter/m_filter/P = new(src.loc)
|
||||
var/obj/machinery/atmospherics/trinary/atmos_filter/m_filter/P = new(src.loc)
|
||||
P.set_dir(dir)
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
@@ -1232,7 +1232,7 @@ Buildable meters
|
||||
P.initialize()
|
||||
P.build_network()
|
||||
if(PIPE_OMNI_FILTER)
|
||||
var/obj/machinery/atmospherics/omni/filter/P = new(loc)
|
||||
var/obj/machinery/atmospherics/omni/atmos_filter/P = new(loc)
|
||||
var/turf/T = P.loc
|
||||
P.level = !T.is_plating() ? 2 : 1
|
||||
P.initialize()
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
var/check_access = 1 //if this is active, the turret shoots everything that does not meet the access requirements
|
||||
var/check_anomalies = 1 //checks if it can shoot at unidentified lifeforms (ie xenos)
|
||||
var/check_synth = 0 //if active, will shoot at anything not an AI or cyborg
|
||||
var/check_all = 0 //If active, will fire on anything, including synthetics.
|
||||
var/ailock = 0 // AI cannot use this
|
||||
|
||||
var/attacked = 0 //if set to 1, the turret gets pissed off and shoots at people nearby (unless they have sec access!)
|
||||
@@ -71,6 +72,7 @@
|
||||
check_records = 1
|
||||
check_weapons = 1
|
||||
check_anomalies = 1
|
||||
check_all = 0
|
||||
|
||||
/obj/machinery/porta_turret/stationary
|
||||
ailock = 1
|
||||
@@ -229,6 +231,7 @@ var/list/turret_icons
|
||||
settings[++settings.len] = list("category" = "Check Arrest Status", "setting" = "check_arrest", "value" = check_arrest)
|
||||
settings[++settings.len] = list("category" = "Check Access Authorization", "setting" = "check_access", "value" = check_access)
|
||||
settings[++settings.len] = list("category" = "Check misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies)
|
||||
settings[++settings.len] = list("category" = "Neutralize All Entities", "setting" = "check_all", "value" = check_all)
|
||||
data["settings"] = settings
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
@@ -278,6 +281,8 @@ var/list/turret_icons
|
||||
check_access = value
|
||||
else if(href_list["command"] == "check_anomalies")
|
||||
check_anomalies = value
|
||||
else if(href_list["command"] == "check_all")
|
||||
check_all = value
|
||||
|
||||
return 1
|
||||
|
||||
@@ -465,7 +470,7 @@ var/list/turret_icons
|
||||
var/list/targets = list() //list of primary targets
|
||||
var/list/secondarytargets = list() //targets that are least important
|
||||
|
||||
for(var/mob/M in mobs_in_view(world.view, src))
|
||||
for(var/mob/M in mobs_in_xray_view(world.view, src))
|
||||
assess_and_assign(M, targets, secondarytargets)
|
||||
|
||||
if(!tryToShootAt(targets))
|
||||
@@ -496,7 +501,7 @@ var/list/turret_icons
|
||||
if(!L)
|
||||
return TURRET_NOT_TARGET
|
||||
|
||||
if(!emagged && issilicon(L)) // Don't target silica
|
||||
if(!emagged && issilicon(L) && check_all == 0) // Don't target silica, unless told to neutralize everything.
|
||||
return TURRET_NOT_TARGET
|
||||
|
||||
if(L.stat && !emagged) //if the perp is dead/dying, no need to bother really
|
||||
@@ -514,7 +519,7 @@ var/list/turret_icons
|
||||
if(lethal && locate(/mob/living/silicon/ai) in get_turf(L)) //don't accidentally kill the AI!
|
||||
return TURRET_NOT_TARGET
|
||||
|
||||
if(check_synth) //If it's set to attack all non-silicons, target them!
|
||||
if(check_synth || check_all) //If it's set to attack all non-silicons or everything, target them!
|
||||
if(L.lying)
|
||||
return lethal ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET
|
||||
return TURRET_PRIORITY_TARGET
|
||||
@@ -671,6 +676,7 @@ var/list/turret_icons
|
||||
var/check_arrest
|
||||
var/check_weapons
|
||||
var/check_anomalies
|
||||
var/check_all
|
||||
var/ailock
|
||||
|
||||
/obj/machinery/porta_turret/proc/setState(var/datum/turret_checks/TC)
|
||||
@@ -686,6 +692,7 @@ var/list/turret_icons
|
||||
check_arrest = TC.check_arrest
|
||||
check_weapons = TC.check_weapons
|
||||
check_anomalies = TC.check_anomalies
|
||||
check_all = TC.check_all
|
||||
ailock = TC.ailock
|
||||
|
||||
power_change()
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
var/check_access = 1 //if this is active, the turret shoots everything that does not meet the access requirements
|
||||
var/check_anomalies = 1 //checks if it can shoot at unidentified lifeforms (ie xenos)
|
||||
var/check_synth = 0 //if active, will shoot at anything not an AI or cyborg
|
||||
var/check_all = 0 //If active, will shoot at anything.
|
||||
var/ailock = 0 //Silicons cannot use this
|
||||
|
||||
req_access = list(access_ai_upload)
|
||||
@@ -130,6 +131,8 @@
|
||||
settings[++settings.len] = list("category" = "Check Arrest Status", "setting" = "check_arrest", "value" = check_arrest)
|
||||
settings[++settings.len] = list("category" = "Check Access Authorization", "setting" = "check_access", "value" = check_access)
|
||||
settings[++settings.len] = list("category" = "Check misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies)
|
||||
settings[++settings.len] = list("category" = "Neutralize All Entities", "setting" = "check_all", "value" = check_all)
|
||||
|
||||
data["settings"] = settings
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
@@ -161,6 +164,8 @@
|
||||
check_access = value
|
||||
else if(href_list["command"] == "check_anomalies")
|
||||
check_anomalies = value
|
||||
else if(href_list["command"] == "check_all")
|
||||
check_all = value
|
||||
|
||||
updateTurrets()
|
||||
return 1
|
||||
@@ -175,6 +180,7 @@
|
||||
TC.check_arrest = check_arrest
|
||||
TC.check_weapons = check_weapons
|
||||
TC.check_anomalies = check_anomalies
|
||||
TC.check_all = check_all
|
||||
TC.ailock = ailock
|
||||
|
||||
if(istype(control_area))
|
||||
|
||||
@@ -265,13 +265,13 @@
|
||||
|
||||
/obj/mecha/combat/Topic(href,href_list)
|
||||
..()
|
||||
var/datum/topic_input/filter = new (href,href_list)
|
||||
if(filter.get("close"))
|
||||
var/datum/topic_input/top_filter = new (href,href_list)
|
||||
if(top_filter.get("close"))
|
||||
am = null
|
||||
return
|
||||
/*
|
||||
if(filter.get("saminput"))
|
||||
if(md5(filter.get("saminput")) == am)
|
||||
if(top_filter.get("saminput"))
|
||||
if(md5(top_filter.get("saminput")) == am)
|
||||
occupant_message("From the lies of the Antipath, Circuit preserve us.")
|
||||
am = null
|
||||
return
|
||||
|
||||
@@ -105,15 +105,15 @@
|
||||
|
||||
Topic(href,href_list)
|
||||
..()
|
||||
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
|
||||
if(filter.get("eject"))
|
||||
var/datum/topic_input/top_filter = new /datum/topic_input(href,href_list)
|
||||
if(top_filter.get("eject"))
|
||||
go_out()
|
||||
if(filter.get("view_stats"))
|
||||
if(top_filter.get("view_stats"))
|
||||
chassis.occupant << browse(get_occupant_stats(),"window=msleeper")
|
||||
onclose(chassis.occupant, "msleeper")
|
||||
return
|
||||
if(filter.get("inject"))
|
||||
inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source"))
|
||||
if(top_filter.get("inject"))
|
||||
inject_reagent(top_filter.getType("inject",/datum/reagent),top_filter.getObj("source"))
|
||||
return
|
||||
|
||||
proc/get_occupant_stats()
|
||||
@@ -473,19 +473,19 @@
|
||||
|
||||
Topic(href,href_list)
|
||||
..()
|
||||
var/datum/topic_input/filter = new (href,href_list)
|
||||
if(filter.get("toggle_mode"))
|
||||
var/datum/topic_input/top_filter = new (href,href_list)
|
||||
if(top_filter.get("toggle_mode"))
|
||||
mode = !mode
|
||||
update_equip_info()
|
||||
return
|
||||
if(filter.get("select_reagents"))
|
||||
if(top_filter.get("select_reagents"))
|
||||
processed_reagents.len = 0
|
||||
var/m = 0
|
||||
var/message
|
||||
for(var/i=1 to known_reagents.len)
|
||||
if(m>=synth_speed)
|
||||
break
|
||||
var/reagent = filter.get("reagent_[i]")
|
||||
var/reagent = top_filter.get("reagent_[i]")
|
||||
if(reagent && (reagent in known_reagents))
|
||||
message = "[m ? ", " : null][known_reagents[reagent]]"
|
||||
processed_reagents += reagent
|
||||
@@ -497,14 +497,14 @@
|
||||
occupant_message("Reagent processing started.")
|
||||
log_message("Reagent processing started.")
|
||||
return
|
||||
if(filter.get("show_reagents"))
|
||||
if(top_filter.get("show_reagents"))
|
||||
chassis.occupant << browse(get_reagents_page(),"window=msyringegun")
|
||||
if(filter.get("purge_reagent"))
|
||||
var/reagent = filter.get("purge_reagent")
|
||||
if(top_filter.get("purge_reagent"))
|
||||
var/reagent = top_filter.get("purge_reagent")
|
||||
if(reagent)
|
||||
reagents.del_reagent(reagent)
|
||||
return
|
||||
if(filter.get("purge_all"))
|
||||
if(top_filter.get("purge_all"))
|
||||
reagents.clear_reagents()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -290,4 +290,48 @@
|
||||
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span> [chassis.selected==src?"<b>":"<a href='?src=\ref[chassis];select_equip=\ref[src]'>"][src.name][chassis.selected==src?"</b>":"</a>"]\[[src.projectiles]\]"
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/rearm()
|
||||
return//Extra bit of security
|
||||
return//Extra bit of security
|
||||
|
||||
//////////////
|
||||
//Fire-based//
|
||||
//////////////
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary
|
||||
name = "\improper DR-AC 3"
|
||||
desc = "Dual-barrel rotary machinegun that fires small, incendiary rounds. Ages ten and up."
|
||||
description_fluff = "A weapon designed by Hephaestus Industries, the DR-AC 3's design was plagued by prototype faults including but not limited to: Spontaneous combustion, spontaneous detonation, and excessive collateral conflagration."
|
||||
icon_state = "mecha_drac3"
|
||||
equip_cooldown = 20
|
||||
projectile = /obj/item/projectile/bullet/incendiary
|
||||
fire_sound = 'sound/weapons/machinegun.ogg'
|
||||
projectiles = 30
|
||||
projectiles_per_shot = 2
|
||||
deviation = 0.4
|
||||
projectile_energy_cost = 40
|
||||
fire_cooldown = 3
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 5, TECH_PHORON = 2, TECH_ILLEGAL = 1)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer
|
||||
equip_cooldown = 30
|
||||
name = "\improper CR-3 Mark 8"
|
||||
desc = "An imposing device, this weapon hurls balls of fire."
|
||||
description_fluff = "A weapon designed by Hephaestus for anti-infantry combat, the CR-3 is capable of outputting a large volume of synthesized fuel. Initially designed by a small company, later purchased by Aether, on Earth as a device made for clearing underbrush and co-operating with firefighting operations. Obviously, Hephaestus has found an 'improved' use for the Aether designs."
|
||||
icon_state = "mecha_cremate"
|
||||
|
||||
energy_drain = 30
|
||||
|
||||
projectile = /obj/item/projectile/bullet/incendiary/flamethrower/large
|
||||
fire_sound = 'sound/weapons/towelwipe.ogg'
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_PHORON = 4, TECH_ILLEGAL = 4)
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
|
||||
name = "\improper AA-CR-1 Mark 4"
|
||||
description_fluff = "A firefighting tool maintained by Aether Atmospherics, whose initial design originated from a small Earth company. This one seems to have been jury rigged."
|
||||
|
||||
energy_drain = 50
|
||||
required_type = list(/obj/mecha/combat, /obj/mecha/working)
|
||||
|
||||
projectile = /obj/item/projectile/bullet/incendiary/flamethrower
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_ILLEGAL = 2)
|
||||
|
||||
+17
-17
@@ -1498,10 +1498,10 @@
|
||||
return
|
||||
if(usr.stat > 0)
|
||||
return
|
||||
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
|
||||
var/datum/topic_input/top_filter = new /datum/topic_input(href,href_list)
|
||||
if(href_list["select_equip"])
|
||||
if(usr != src.occupant) return
|
||||
var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip")
|
||||
var/obj/item/mecha_parts/mecha_equipment/equip = top_filter.getObj("select_equip")
|
||||
if(equip)
|
||||
src.selected = equip
|
||||
src.occupant_message("You switch to [equip]")
|
||||
@@ -1532,7 +1532,7 @@
|
||||
return
|
||||
if(href_list["rfreq"])
|
||||
if(usr != src.occupant) return
|
||||
var/new_frequency = (radio.frequency + filter.getNum("rfreq"))
|
||||
var/new_frequency = (radio.frequency + top_filter.getNum("rfreq"))
|
||||
if ((radio.frequency < PUBLIC_LOW_FREQ || radio.frequency > PUBLIC_HIGH_FREQ))
|
||||
new_frequency = sanitize_frequency(new_frequency)
|
||||
radio.set_frequency(new_frequency)
|
||||
@@ -1574,11 +1574,11 @@
|
||||
return
|
||||
if(href_list["req_access"] && add_req_access)
|
||||
if(!in_range(src, usr)) return
|
||||
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
|
||||
output_access_dialog(top_filter.getObj("id_card"),top_filter.getMob("user"))
|
||||
return
|
||||
if(href_list["maint_access"] && maint_access)
|
||||
if(!in_range(src, usr)) return
|
||||
var/mob/user = filter.getMob("user")
|
||||
var/mob/user = top_filter.getMob("user")
|
||||
if(user)
|
||||
if(state==0)
|
||||
state = 1
|
||||
@@ -1586,18 +1586,18 @@
|
||||
else if(state==1)
|
||||
state = 0
|
||||
user << "The securing bolts are now hidden."
|
||||
output_maintenance_dialog(filter.getObj("id_card"),user)
|
||||
output_maintenance_dialog(top_filter.getObj("id_card"),user)
|
||||
return
|
||||
if(href_list["set_internal_tank_valve"] && state >=1)
|
||||
if(!in_range(src, usr)) return
|
||||
var/mob/user = filter.getMob("user")
|
||||
var/mob/user = top_filter.getMob("user")
|
||||
if(user)
|
||||
var/new_pressure = input(user,"Input new output pressure","Pressure setting",internal_tank_valve) as num
|
||||
if(new_pressure)
|
||||
internal_tank_valve = new_pressure
|
||||
user << "The internal pressure valve has been set to [internal_tank_valve]kPa."
|
||||
if(href_list["remove_passenger"] && state >= 1)
|
||||
var/mob/user = filter.getMob("user")
|
||||
var/mob/user = top_filter.getMob("user")
|
||||
var/list/passengers = list()
|
||||
for (var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P in contents)
|
||||
if (P.occupant)
|
||||
@@ -1623,20 +1623,20 @@
|
||||
P.go_out()
|
||||
P.log_message("[occupant] was removed.")
|
||||
return
|
||||
if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card"))
|
||||
if(href_list["add_req_access"] && add_req_access && top_filter.getObj("id_card"))
|
||||
if(!in_range(src, usr)) return
|
||||
operation_req_access += filter.getNum("add_req_access")
|
||||
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
|
||||
operation_req_access += top_filter.getNum("add_req_access")
|
||||
output_access_dialog(top_filter.getObj("id_card"),top_filter.getMob("user"))
|
||||
return
|
||||
if(href_list["del_req_access"] && add_req_access && filter.getObj("id_card"))
|
||||
if(href_list["del_req_access"] && add_req_access && top_filter.getObj("id_card"))
|
||||
if(!in_range(src, usr)) return
|
||||
operation_req_access -= filter.getNum("del_req_access")
|
||||
output_access_dialog(filter.getObj("id_card"),filter.getMob("user"))
|
||||
operation_req_access -= top_filter.getNum("del_req_access")
|
||||
output_access_dialog(top_filter.getObj("id_card"),top_filter.getMob("user"))
|
||||
return
|
||||
if(href_list["finish_req_access"])
|
||||
if(!in_range(src, usr)) return
|
||||
add_req_access = 0
|
||||
var/mob/user = filter.getMob("user")
|
||||
var/mob/user = top_filter.getMob("user")
|
||||
user << browse(null,"window=exosuit_add_access")
|
||||
return
|
||||
if(href_list["dna_lock"])
|
||||
@@ -1669,9 +1669,9 @@
|
||||
/*
|
||||
if(href_list["debug"])
|
||||
if(href_list["set_i_dam"])
|
||||
setInternalDamage(filter.getNum("set_i_dam"))
|
||||
setInternalDamage(top_filter.getNum("set_i_dam"))
|
||||
if(href_list["clear_i_dam"])
|
||||
clearInternalDamage(filter.getNum("clear_i_dam"))
|
||||
clearInternalDamage(top_filter.getNum("clear_i_dam"))
|
||||
return
|
||||
*/
|
||||
|
||||
|
||||
@@ -41,19 +41,19 @@
|
||||
Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
var/datum/topic_input/filter = new /datum/topic_input(href,href_list)
|
||||
var/datum/topic_input/top_filter = new /datum/topic_input(href,href_list)
|
||||
if(href_list["send_message"])
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("send_message")
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = top_filter.getObj("send_message")
|
||||
var/message = sanitize(input(usr,"Input message","Transmit message") as text)
|
||||
var/obj/mecha/M = MT.in_mecha()
|
||||
if(message && M)
|
||||
M.occupant_message(message)
|
||||
return
|
||||
if(href_list["shock"])
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("shock")
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = top_filter.getObj("shock")
|
||||
MT.shock()
|
||||
if(href_list["get_log"])
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = filter.getObj("get_log")
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = top_filter.getObj("get_log")
|
||||
stored_data = MT.get_mecha_log()
|
||||
screen = 1
|
||||
if(href_list["return"])
|
||||
|
||||
@@ -150,8 +150,10 @@
|
||||
/obj/structure/foamedmetal/ex_act(severity)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/foamedmetal/bullet_act()
|
||||
if(metal == 1 || prob(50))
|
||||
/obj/structure/foamedmetal/bullet_act(var/obj/item/projectile/P)
|
||||
if(istype(P, /obj/item/projectile/test))
|
||||
return
|
||||
else if(metal == 1 || prob(50))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/foamedmetal/attack_hand(var/mob/user)
|
||||
|
||||
@@ -6,66 +6,66 @@
|
||||
anchored = 1
|
||||
var/amount = 1
|
||||
|
||||
New(turf/newLoc,amt=1,nologs=0)
|
||||
if(!nologs)
|
||||
message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[newLoc.x];Y=[newLoc.y];Z=[newLoc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])")
|
||||
src.amount = amt
|
||||
/obj/effect/decal/cleanable/liquid_fuel/New(turf/newLoc,amt=1,nologs=0)
|
||||
if(!nologs)
|
||||
message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[newLoc.x];Y=[newLoc.y];Z=[newLoc.z]'>JMP</a>)")
|
||||
log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])")
|
||||
src.amount = amt
|
||||
|
||||
var/has_spread = 0
|
||||
//Be absorbed by any other liquid fuel in the tile.
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc)
|
||||
if(other != src)
|
||||
other.amount += src.amount
|
||||
other.Spread()
|
||||
has_spread = 1
|
||||
break
|
||||
|
||||
. = ..()
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
for(var/d in cardinal)
|
||||
var/turf/simulated/target = get_step(src,d)
|
||||
var/turf/simulated/origin = get_turf(src)
|
||||
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
|
||||
if(other_fuel)
|
||||
other_fuel.amount += amount*0.25
|
||||
if(!(other_fuel in exclude))
|
||||
exclude += src
|
||||
other_fuel.Spread(exclude)
|
||||
else
|
||||
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
|
||||
amount *= 0.75
|
||||
|
||||
|
||||
flamethrower_fuel
|
||||
icon_state = "mustard"
|
||||
anchored = 0
|
||||
New(newLoc, amt = 1, d = 0)
|
||||
set_dir(d) //Setting this direction means you won't get torched by your own flamethrower.
|
||||
. = ..()
|
||||
var/has_spread = 0
|
||||
//Be absorbed by any other liquid fuel in the tile.
|
||||
for(var/obj/effect/decal/cleanable/liquid_fuel/other in newLoc)
|
||||
if(other != src)
|
||||
other.amount += src.amount
|
||||
other.Spread()
|
||||
has_spread = 1
|
||||
break
|
||||
|
||||
. = ..()
|
||||
if(!has_spread)
|
||||
Spread()
|
||||
//The spread for flamethrower fuel is much more precise, to create a wide fire pattern.
|
||||
if(amount < 0.1) return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
for(var/d in list(turn(dir,90),turn(dir,-90), dir))
|
||||
var/turf/simulated/O = get_step(S,d)
|
||||
if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O)
|
||||
continue
|
||||
if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0))
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d)
|
||||
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
|
||||
/obj/effect/decal/cleanable/liquid_fuel/proc/Spread(exclude=list())
|
||||
//Allows liquid fuels to sometimes flow into other tiles.
|
||||
if(amount < 15) return //lets suppose welder fuel is fairly thick and sticky. For something like water, 5 or less would be more appropriate.
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
for(var/d in cardinal)
|
||||
var/turf/simulated/target = get_step(src,d)
|
||||
var/turf/simulated/origin = get_turf(src)
|
||||
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0))
|
||||
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
|
||||
if(other_fuel)
|
||||
other_fuel.amount += amount*0.25
|
||||
if(!(other_fuel in exclude))
|
||||
exclude += src
|
||||
other_fuel.Spread(exclude)
|
||||
else
|
||||
new/obj/effect/decal/cleanable/liquid_fuel(target, amount*0.25,1)
|
||||
amount *= 0.75
|
||||
|
||||
amount *= 0.25
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel
|
||||
icon_state = "mustard"
|
||||
anchored = 0
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0)
|
||||
set_dir(d) //Setting this direction means you won't get torched by your own flamethrower.
|
||||
. = ..()
|
||||
|
||||
/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread()
|
||||
//The spread for flamethrower fuel is much more precise, to create a wide fire pattern.
|
||||
if(amount < 0.1) return
|
||||
var/turf/simulated/S = loc
|
||||
if(!istype(S)) return
|
||||
|
||||
for(var/d in list(turn(dir,90),turn(dir,-90), dir))
|
||||
var/turf/simulated/O = get_step(S,d)
|
||||
if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O)
|
||||
continue
|
||||
if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0))
|
||||
new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d)
|
||||
O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately.
|
||||
|
||||
amount *= 0.25
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
anchored = 1.0
|
||||
unacidable = 1
|
||||
simulated = 0
|
||||
invisibility = 100
|
||||
var/delete_me = 0
|
||||
|
||||
/obj/effect/landmark/New()
|
||||
|
||||
@@ -110,3 +110,77 @@
|
||||
if(teleport_x_offset && teleport_y_offset && teleport_z_offset)
|
||||
var/turf/T = locate(rand(teleport_x, teleport_x_offset), rand(teleport_y, teleport_y_offset), rand(teleport_z, teleport_z_offset))
|
||||
A.forceMove(T)
|
||||
|
||||
/* Teleporter that sends objects stepping on it to a specific landmark. */
|
||||
|
||||
/obj/effect/step_trigger/teleporter/landmark
|
||||
var/obj/effect/landmark/the_landmark = null
|
||||
var/landmark_id = null
|
||||
|
||||
/obj/effect/step_trigger/teleporter/landmark/initialize()
|
||||
for(var/obj/effect/landmark/teleport_mark/mark in tele_landmarks)
|
||||
if(mark.landmark_id == landmark_id)
|
||||
the_landmark = mark
|
||||
return
|
||||
|
||||
/obj/effect/step_trigger/teleporter/landmark/Trigger(var/atom/movable/A)
|
||||
if(the_landmark)
|
||||
A.forceMove(get_turf(the_landmark))
|
||||
|
||||
|
||||
var/global/list/tele_landmarks = list() // Terrible, but the alternative is looping through world.
|
||||
|
||||
/obj/effect/landmark/teleport_mark
|
||||
var/landmark_id = null
|
||||
|
||||
/obj/effect/landmark/teleport_mark/New()
|
||||
..()
|
||||
tele_landmarks += src
|
||||
|
||||
/obj/effect/landmark/teleport_mark/Destroy()
|
||||
tele_landmarks -= src
|
||||
return ..()
|
||||
|
||||
/* Teleporter which simulates falling out of the sky. */
|
||||
|
||||
/obj/effect/step_trigger/teleporter/planetary_fall
|
||||
var/datum/planet/planet = null
|
||||
/* //VOREStation Removal
|
||||
/obj/effect/step_trigger/teleporter/planetary_fall/sif/initialize()
|
||||
planet = planet_sif
|
||||
*/ //VOREStation Removal end
|
||||
/obj/effect/step_trigger/teleporter/planetary_fall/Trigger(var/atom/movable/A)
|
||||
if(planet)
|
||||
if(!planet.planet_floors.len)
|
||||
message_admins("ERROR: planetary_fall step trigger's list of outdoor floors was empty.")
|
||||
return
|
||||
var/turf/simulated/T = null
|
||||
var/safety = 100 // Infinite loop protection.
|
||||
while(!T && safety)
|
||||
var/turf/simulated/candidate = pick(planet.planet_floors)
|
||||
if(!istype(candidate) || istype(candidate, /turf/simulated/sky))
|
||||
safety--
|
||||
continue
|
||||
else
|
||||
T = candidate
|
||||
break
|
||||
|
||||
if(!T)
|
||||
message_admins("ERROR: planetary_fall step trigger could not find a suitable landing turf.")
|
||||
return
|
||||
|
||||
if(isobserver(A))
|
||||
A.forceMove(T) // Harmlessly move ghosts.
|
||||
return
|
||||
|
||||
if(isliving(A)) // Someday, implement parachutes. For now, just turbomurder whoever falls.
|
||||
var/mob/living/L = A
|
||||
for(var/i = 1 to 6)
|
||||
L.adjustBruteLoss(100)
|
||||
message_admins("\The [A] fell out of the sky.")
|
||||
explosion(T, 0, 1, 2)
|
||||
A.forceMove(T)
|
||||
T.visible_message("<span class='danger'><font size='3'>\A [A] falls out of the sky and crashes into \the [T]!</font></span>")
|
||||
else
|
||||
message_admins("ERROR: planetary_fall step trigger lacks a planet to fall onto.")
|
||||
return
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
if(key3)
|
||||
signal.data[key3] = value3
|
||||
|
||||
frequency.post_signal(src, signal, filter = s_filter)
|
||||
frequency.post_signal(src, signal, radio_filter = s_filter)
|
||||
|
||||
return
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
..()
|
||||
spawn(5)
|
||||
if(radio_controller)
|
||||
radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT)
|
||||
radio_controller.add_object(src, control_freq, radio_filter = RADIO_SECBOT)
|
||||
|
||||
// receive radio signals
|
||||
// can detect bot status signals
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
icon_l_hand = 'icons/mob/items/lefthand_guns.dmi',
|
||||
icon_r_hand = 'icons/mob/items/righthand_guns.dmi',
|
||||
)
|
||||
slot_flags = SLOT_HOLSTER
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
var/bullets = 5
|
||||
@@ -343,7 +344,7 @@
|
||||
icon_state = "sunflower"
|
||||
item_state = "sunflower"
|
||||
var/empty = 0
|
||||
flags
|
||||
slot_flags = SLOT_HOLSTER
|
||||
|
||||
/obj/item/toy/waterflower/New()
|
||||
var/datum/reagents/R = new/datum/reagents(10)
|
||||
@@ -412,7 +413,7 @@
|
||||
icon_state = "bosunwhistle"
|
||||
var/cooldown = 0
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
slot_flags = SLOT_EARS | SLOT_HOLSTER
|
||||
|
||||
/obj/item/toy/bosunwhistle/attack_self(mob/user as mob)
|
||||
if(cooldown < world.time - 35)
|
||||
@@ -529,8 +530,8 @@
|
||||
icon_state = "bartender"
|
||||
|
||||
/obj/item/toy/figure/borg
|
||||
name = "Cyborg action figure"
|
||||
desc = "A \"Space Life\" brand Cyborg action figure."
|
||||
name = "Drone action figure"
|
||||
desc = "A \"Space Life\" brand Drone action figure."
|
||||
icon_state = "borg"
|
||||
|
||||
/obj/item/toy/figure/gardener
|
||||
@@ -599,8 +600,8 @@
|
||||
icon_state = "geneticist"
|
||||
|
||||
/obj/item/toy/figure/hop
|
||||
name = "Head of Personel action figure"
|
||||
desc = "A \"Space Life\" brand Head of Personel action figure."
|
||||
name = "Head of Personnel action figure"
|
||||
desc = "A \"Space Life\" brand Head of Personnel action figure."
|
||||
icon_state = "hop"
|
||||
|
||||
/obj/item/toy/figure/hos
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50000)
|
||||
var/datum/effect/effect/system/spark_spread/spark_system
|
||||
var/stored_matter = 0
|
||||
var/max_stored_matter = 30
|
||||
var/working = 0
|
||||
var/mode = 1
|
||||
var/list/modes = list("Floor & Walls","Airlock","Deconstruct")
|
||||
@@ -32,7 +33,7 @@
|
||||
/obj/item/weapon/rcd/examine()
|
||||
..()
|
||||
if(src.type == /obj/item/weapon/rcd && loc == usr)
|
||||
usr << "It currently holds [stored_matter]/30 matter-units."
|
||||
usr << "It currently holds [stored_matter]/[max_stored_matter] matter-units."
|
||||
|
||||
/obj/item/weapon/rcd/New()
|
||||
..()
|
||||
@@ -48,14 +49,15 @@
|
||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user)
|
||||
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if((stored_matter + 10) > 30)
|
||||
user << "<span class='notice'>The RCD can't hold any more matter-units.</span>"
|
||||
var/obj/item/weapon/rcd_ammo/cartridge = W
|
||||
if((stored_matter + cartridge.remaining) > max_stored_matter)
|
||||
to_chat(user, "<span class='notice'>The RCD can't hold that many additional matter-units.</span>")
|
||||
return
|
||||
stored_matter += cartridge.remaining
|
||||
user.drop_from_inventory(W)
|
||||
qdel(W)
|
||||
stored_matter += 10
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user << "<span class='notice'>The RCD now holds [stored_matter]/30 matter-units.</span>"
|
||||
to_chat(user, "<span class='notice'>The RCD now holds [stored_matter]/[max_stored_matter] matter-units.</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -164,6 +166,14 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_MATERIAL = 2)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 30000,"glass" = 15000)
|
||||
var/remaining = 10
|
||||
|
||||
/obj/item/weapon/rcd_ammo/large
|
||||
name = "high-capacity matter cartridge"
|
||||
desc = "Do not ingest."
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 45000,"glass" = 22500)
|
||||
remaining = 30
|
||||
origin_tech = list(TECH_MATERIAL = 4)
|
||||
|
||||
/obj/item/weapon/rcd/borg
|
||||
canRwall = 1
|
||||
|
||||
@@ -1,370 +0,0 @@
|
||||
/* Cards
|
||||
* Contains:
|
||||
* DATA CARD
|
||||
* ID CARD
|
||||
* FINGERPRINT CARD HOLDER
|
||||
* FINGERPRINT CARD
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DATA CARDS - Used for the teleporter
|
||||
*/
|
||||
/obj/item/weapon/card
|
||||
name = "card"
|
||||
desc = "Does card things."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
var/associated_account_number = 0
|
||||
|
||||
var/list/files = list( )
|
||||
|
||||
/obj/item/weapon/card/data
|
||||
name = "data disk"
|
||||
desc = "A disk of data."
|
||||
icon_state = "data"
|
||||
var/function = "storage"
|
||||
var/data = "null"
|
||||
var/special = null
|
||||
item_state = "card-id"
|
||||
|
||||
/obj/item/weapon/card/data/verb/label(t as text)
|
||||
set name = "Label Disk"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if (t)
|
||||
src.name = text("data disk- '[]'", t)
|
||||
else
|
||||
src.name = "data disk"
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/data/clown
|
||||
name = "\proper the coordinates to clown planet"
|
||||
icon_state = "data"
|
||||
item_state = "card-id"
|
||||
layer = 3
|
||||
level = 2
|
||||
desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
|
||||
function = "teleporter"
|
||||
data = "Clown Land"
|
||||
|
||||
/*
|
||||
* ID CARDS
|
||||
*/
|
||||
|
||||
/obj/item/weapon/card/emag_broken
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage."
|
||||
name = "broken cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
|
||||
/obj/item/weapon/card/emag
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry."
|
||||
name = "cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
var/uses = 10
|
||||
|
||||
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user)
|
||||
var/used_uses = A.emag_act(uses, user, src)
|
||||
if(used_uses < 0)
|
||||
return ..(A, user)
|
||||
|
||||
uses -= used_uses
|
||||
A.add_fingerprint(user)
|
||||
//Vorestation Edit: Because some things (read lift doors) don't get emagged
|
||||
if(used_uses)
|
||||
log_and_message_admins("emagged \an [A].")
|
||||
else
|
||||
log_and_message_admins("attempted to emag \an [A].")
|
||||
// Vorestation Edit: End of Edit
|
||||
|
||||
if(uses<1)
|
||||
user.visible_message("<span class='warning'>\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.</span>")
|
||||
user.drop_item()
|
||||
var/obj/item/weapon/card/emag_broken/junk = new(user.loc)
|
||||
junk.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(istype(O, /obj/item/stack/telecrystal))
|
||||
var/obj/item/stack/telecrystal/T = O
|
||||
if(T.amount < 1)
|
||||
usr << "<span class='notice'>You are not adding enough telecrystals to fuel \the [src].</span>"
|
||||
return
|
||||
uses += T.amount/2 //Gives 5 uses per 10 TC
|
||||
uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice
|
||||
usr << "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>"
|
||||
qdel(O)
|
||||
|
||||
|
||||
/obj/item/weapon/card/id
|
||||
name = "identification card"
|
||||
desc = "A card used to provide ID and determine access across the station."
|
||||
icon_state = "id"
|
||||
item_state = "card-id"
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/id.dmi'
|
||||
)
|
||||
|
||||
var/access = list()
|
||||
var/registered_name = "Unknown" // The name registered_name on the card
|
||||
slot_flags = SLOT_ID | SLOT_EARS
|
||||
|
||||
var/age = "\[UNSET\]"
|
||||
var/blood_type = "\[UNSET\]"
|
||||
var/dna_hash = "\[UNSET\]"
|
||||
var/fingerprint_hash = "\[UNSET\]"
|
||||
var/sex = "\[UNSET\]"
|
||||
var/icon/front
|
||||
var/icon/side
|
||||
|
||||
var/primary_color = rgb(0,0,0) // Obtained by eyedroppering the stripe in the middle of the card
|
||||
var/secondary_color = rgb(0,0,0) // Likewise for the oval in the top-left corner
|
||||
|
||||
//alt titles are handled a bit weirdly in order to unobtrusively integrate into existing ID system
|
||||
var/assignment = null //can be alt title or the actual job
|
||||
var/rank = null //actual job
|
||||
var/dorm = 0 // determines if this ID has claimed a dorm already
|
||||
|
||||
/obj/item/weapon/card/id/examine(mob/user)
|
||||
set src in oview(1)
|
||||
if(in_range(usr, src))
|
||||
show(usr)
|
||||
usr << desc
|
||||
else
|
||||
usr << "<span class='warning'>It is too far away.</span>"
|
||||
|
||||
/obj/item/weapon/card/id/proc/prevent_tracking()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/card/id/proc/show(mob/user as mob)
|
||||
if(front && side)
|
||||
user << browse_rsc(front, "front.png")
|
||||
user << browse_rsc(side, "side.png")
|
||||
var/datum/browser/popup = new(user, "idcard", name, 600, 250)
|
||||
popup.set_content(dat())
|
||||
popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.open()
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/proc/update_name()
|
||||
name = "[src.registered_name]'s ID Card ([src.assignment])"
|
||||
|
||||
/obj/item/weapon/card/id/proc/set_id_photo(var/mob/M)
|
||||
front = getFlatIcon(M, SOUTH, always_use_defdir = 1)
|
||||
side = getFlatIcon(M, WEST, always_use_defdir = 1)
|
||||
|
||||
/mob/proc/set_id_info(var/obj/item/weapon/card/id/id_card)
|
||||
id_card.age = 0
|
||||
id_card.registered_name = real_name
|
||||
id_card.sex = capitalize(gender)
|
||||
id_card.set_id_photo(src)
|
||||
|
||||
if(dna)
|
||||
id_card.blood_type = dna.b_type
|
||||
id_card.dna_hash = dna.unique_enzymes
|
||||
id_card.fingerprint_hash= md5(dna.uni_identity)
|
||||
id_card.update_name()
|
||||
|
||||
/mob/living/carbon/human/set_id_info(var/obj/item/weapon/card/id/id_card)
|
||||
..()
|
||||
id_card.age = age
|
||||
|
||||
/obj/item/weapon/card/id/proc/dat()
|
||||
var/dat = ("<table><tr><td>")
|
||||
dat += text("Name: []</A><BR>", registered_name)
|
||||
dat += text("Sex: []</A><BR>\n", sex)
|
||||
dat += text("Age: []</A><BR>\n", age)
|
||||
dat += text("Rank: []</A><BR>\n", assignment)
|
||||
dat += text("Fingerprint: []</A><BR>\n", fingerprint_hash)
|
||||
dat += text("Blood Type: []<BR>\n", blood_type)
|
||||
dat += text("DNA Hash: []<BR><BR>\n", dna_hash)
|
||||
if(front && side)
|
||||
dat +="<td align = center valign = top>Photo:<br><img src=front.png height=80 width=80 border=4><img src=side.png height=80 width=80 border=4></td>"
|
||||
dat += "</tr></table>"
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/card/id/attack_self(mob/user as mob)
|
||||
user.visible_message("\The [user] shows you: \icon[src] [src.name]. The assignment on the card: [src.assignment]",\
|
||||
"You flash your ID card: \icon[src] [src.name]. The assignment on the card: [src.assignment]")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/GetAccess()
|
||||
return access
|
||||
|
||||
/obj/item/weapon/card/id/GetID()
|
||||
return src
|
||||
|
||||
/obj/item/weapon/card/id/verb/read()
|
||||
set name = "Read ID Card"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment)
|
||||
usr << "The blood type on the card is [blood_type]."
|
||||
usr << "The DNA hash on the card is [dna_hash]."
|
||||
usr << "The fingerprint hash on the card is [fingerprint_hash]."
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/id/silver
|
||||
name = "identification card"
|
||||
desc = "A silver card which shows honour and dedication."
|
||||
icon_state = "silver"
|
||||
item_state = "silver_id"
|
||||
|
||||
/obj/item/weapon/card/id/gold
|
||||
name = "identification card"
|
||||
desc = "A golden card which shows power and might."
|
||||
icon_state = "gold"
|
||||
item_state = "gold_id"
|
||||
|
||||
/obj/item/weapon/card/id/syndicate_command
|
||||
name = "syndicate ID card"
|
||||
desc = "An ID straight from the Syndicate."
|
||||
registered_name = "Syndicate"
|
||||
assignment = "Syndicate Overlord"
|
||||
access = list(access_syndicate, access_external_airlocks)
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare
|
||||
name = "colony director's spare ID"
|
||||
desc = "The spare ID of the High Lord himself."
|
||||
icon_state = "gold"
|
||||
item_state = "gold_id"
|
||||
registered_name = "Colony Director"
|
||||
assignment = "Colony Director"
|
||||
/obj/item/weapon/card/id/captains_spare/New()
|
||||
access = get_all_station_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/synthetic
|
||||
name = "\improper Synthetic ID"
|
||||
desc = "Access module for NanoTrasen Synthetics"
|
||||
icon_state = "id-robot"
|
||||
item_state = "tdgreen"
|
||||
assignment = "Synthetic"
|
||||
|
||||
/obj/item/weapon/card/id/synthetic/New()
|
||||
access = get_all_station_access() + access_synth
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/centcom
|
||||
name = "\improper CentCom. ID"
|
||||
desc = "An ID straight from Central Command."
|
||||
icon_state = "centcom"
|
||||
registered_name = "Central Command"
|
||||
assignment = "General"
|
||||
New()
|
||||
access = get_all_accesses()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT
|
||||
name = "\improper Emergency Response Team ID"
|
||||
assignment = "Emergency Response Team"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/ERT/New()
|
||||
..()
|
||||
access |= get_all_station_access()
|
||||
|
||||
// Department-flavor IDs
|
||||
/obj/item/weapon/card/id/medical
|
||||
name = "identification card"
|
||||
desc = "A card issued to station medical staff."
|
||||
icon_state = "med"
|
||||
primary_color = rgb(189,237,237)
|
||||
secondary_color = rgb(223,255,255)
|
||||
|
||||
/obj/item/weapon/card/id/medical/head
|
||||
name = "identification card"
|
||||
desc = "A card which represents care and compassion."
|
||||
icon_state = "medGold"
|
||||
primary_color = rgb(189,237,237)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/security
|
||||
name = "identification card"
|
||||
desc = "A card issued to station security staff."
|
||||
icon_state = "sec"
|
||||
primary_color = rgb(189,47,0)
|
||||
secondary_color = rgb(223,127,95)
|
||||
|
||||
/obj/item/weapon/card/id/security/head
|
||||
name = "identification card"
|
||||
desc = "A card which represents honor and protection."
|
||||
icon_state = "secGold"
|
||||
primary_color = rgb(189,47,0)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/engineering
|
||||
name = "identification card"
|
||||
desc = "A card issued to station engineering staff."
|
||||
icon_state = "eng"
|
||||
primary_color = rgb(189,94,0)
|
||||
secondary_color = rgb(223,159,95)
|
||||
|
||||
/obj/item/weapon/card/id/engineering/head
|
||||
name = "identification card"
|
||||
desc = "A card which represents creativity and ingenuity."
|
||||
icon_state = "engGold"
|
||||
primary_color = rgb(189,94,0)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/science
|
||||
name = "identification card"
|
||||
desc = "A card issued to station science staff."
|
||||
icon_state = "sci"
|
||||
primary_color = rgb(142,47,142)
|
||||
secondary_color = rgb(191,127,191)
|
||||
|
||||
/obj/item/weapon/card/id/science/head
|
||||
name = "identification card"
|
||||
desc = "A card which represents knowledge and reasoning."
|
||||
icon_state = "sciGold"
|
||||
primary_color = rgb(142,47,142)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/cargo
|
||||
name = "identification card"
|
||||
desc = "A card issued to station cargo staff."
|
||||
icon_state = "cargo"
|
||||
primary_color = rgb(142,94,0)
|
||||
secondary_color = rgb(191,159,95)
|
||||
|
||||
/obj/item/weapon/card/id/cargo/head
|
||||
name = "identification card"
|
||||
desc = "A card which represents service and planning."
|
||||
icon_state = "cargoGold"
|
||||
primary_color = rgb(142,94,0)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/civilian
|
||||
name = "identification card"
|
||||
desc = "A card issued to station civilian staff."
|
||||
icon_state = "civ"
|
||||
primary_color = rgb(0,94,142)
|
||||
secondary_color = rgb(95,159,191)
|
||||
|
||||
/obj/item/weapon/card/id/civilian/head //This is not the HoP. There's no position that uses this right now.
|
||||
name = "identification card"
|
||||
desc = "A card which represents common sense and responsibility."
|
||||
icon_state = "civGold"
|
||||
primary_color = rgb(0,94,142)
|
||||
secondary_color = rgb(255,223,127)
|
||||
|
||||
/obj/item/weapon/card/id/external
|
||||
name = "identification card"
|
||||
desc = "An identification card of some sort. It does not look like it is issued by NT."
|
||||
icon_state = "permit"
|
||||
primary_color = rgb(142,94,0)
|
||||
secondary_color = rgb(191,159,95)
|
||||
@@ -35,7 +35,7 @@
|
||||
origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator/pico = 2,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/treatment = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
|
||||
/obj/item/weapon/stock_parts/console_screen = 1,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 1)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 2)
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 2)
|
||||
|
||||
/obj/item/weapon/circuitboard/telecomms/relay
|
||||
name = T_BOARD("relay mainframe")
|
||||
@@ -31,7 +31,7 @@
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 2)
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 2)
|
||||
|
||||
/obj/item/weapon/circuitboard/telecomms/bus
|
||||
name = T_BOARD("bus mainframe")
|
||||
@@ -40,7 +40,7 @@
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1)
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1)
|
||||
|
||||
/obj/item/weapon/circuitboard/telecomms/processor
|
||||
name = T_BOARD("processor unit")
|
||||
@@ -48,7 +48,7 @@
|
||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 3,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/treatment = 2,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 1,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
@@ -61,7 +61,7 @@
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1)
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1)
|
||||
|
||||
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
||||
name = T_BOARD("subspace broadcaster")
|
||||
@@ -70,7 +70,7 @@
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 1,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 2)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
origin_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 1,
|
||||
@@ -94,7 +94,7 @@
|
||||
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/sub_filter = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 1,
|
||||
/obj/item/weapon/stock_parts/subspace/treatment = 1,
|
||||
/obj/item/stack/cable_coil = 2)
|
||||
@@ -0,0 +1,107 @@
|
||||
/* Cards
|
||||
* Contains:
|
||||
* DATA CARD
|
||||
* ID CARD
|
||||
* FINGERPRINT CARD HOLDER
|
||||
* FINGERPRINT CARD
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DATA CARDS - Used for the teleporter
|
||||
*/
|
||||
/obj/item/weapon/card
|
||||
name = "card"
|
||||
desc = "Does card things."
|
||||
icon = 'icons/obj/card.dmi'
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
var/associated_account_number = 0
|
||||
|
||||
var/list/files = list( )
|
||||
|
||||
/obj/item/weapon/card/data
|
||||
name = "data disk"
|
||||
desc = "A disk of data."
|
||||
icon_state = "data"
|
||||
var/function = "storage"
|
||||
var/data = "null"
|
||||
var/special = null
|
||||
item_state = "card-id"
|
||||
|
||||
/obj/item/weapon/card/data/verb/label(t as text)
|
||||
set name = "Label Disk"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if (t)
|
||||
src.name = text("data disk- '[]'", t)
|
||||
else
|
||||
src.name = "data disk"
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
/obj/item/weapon/card/data/clown
|
||||
name = "\proper the coordinates to clown planet"
|
||||
icon_state = "data"
|
||||
item_state = "card-id"
|
||||
layer = 3
|
||||
level = 2
|
||||
desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
|
||||
function = "teleporter"
|
||||
data = "Clown Land"
|
||||
|
||||
/*
|
||||
* ID CARDS
|
||||
*/
|
||||
|
||||
/obj/item/weapon/card/emag_broken
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage."
|
||||
name = "broken cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
|
||||
/obj/item/weapon/card/emag
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry."
|
||||
name = "cryptographic sequencer"
|
||||
icon_state = "emag"
|
||||
item_state = "card-id"
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
|
||||
var/uses = 10
|
||||
|
||||
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user)
|
||||
var/used_uses = A.emag_act(uses, user, src)
|
||||
if(used_uses < 0)
|
||||
return ..(A, user)
|
||||
|
||||
uses -= used_uses
|
||||
A.add_fingerprint(user)
|
||||
//Vorestation Edit: Because some things (read lift doors) don't get emagged
|
||||
if(used_uses)
|
||||
log_and_message_admins("emagged \an [A].")
|
||||
else
|
||||
log_and_message_admins("attempted to emag \an [A].")
|
||||
// Vorestation Edit: End of Edit
|
||||
log_and_message_admins("emagged \an [A].")
|
||||
|
||||
if(uses<1)
|
||||
user.visible_message("<span class='warning'>\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.</span>")
|
||||
user.drop_item()
|
||||
var/obj/item/weapon/card/emag_broken/junk = new(user.loc)
|
||||
junk.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob)
|
||||
if(istype(O, /obj/item/stack/telecrystal))
|
||||
var/obj/item/stack/telecrystal/T = O
|
||||
if(T.amount < 1)
|
||||
usr << "<span class='notice'>You are not adding enough telecrystals to fuel \the [src].</span>"
|
||||
return
|
||||
uses += T.amount/2 //Gives 5 uses per 10 TC
|
||||
uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice
|
||||
usr << "<span class='notice'>You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].</span>"
|
||||
qdel(O)
|
||||
+9
-2
@@ -27,12 +27,12 @@
|
||||
var/obj/item/weapon/card/id/I = O
|
||||
src.access |= I.access
|
||||
if(player_is_antag(user.mind))
|
||||
user << "<span class='notice'>The microscanner activates as you pass it over the ID, copying its access.</span>"
|
||||
to_chat(user, "<span class='notice'>The microscanner activates as you pass it over the ID, copying its access.</span>")
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
|
||||
// We use the fact that registered_name is not unset should the owner be vaporized, to ensure the id doesn't magically become unlocked.
|
||||
if(!registered_user && register_user(user))
|
||||
user << "<span class='notice'>The microscanner marks you as its owner, preventing others from accessing its internals.</span>"
|
||||
to_chat(user, "<span class='notice'>The microscanner marks you as its owner, preventing others from accessing its internals.</span>")
|
||||
if(registered_user == user)
|
||||
switch(alert("Would you like edit the ID, or show it?","Show or Edit?", "Edit","Show"))
|
||||
if("Edit")
|
||||
@@ -209,3 +209,10 @@
|
||||
|
||||
/datum/card_state/dd_SortValue()
|
||||
return name
|
||||
|
||||
/obj/item/weapon/card/id/syndicate_command
|
||||
name = "syndicate ID card"
|
||||
desc = "An ID straight from the Syndicate."
|
||||
registered_name = "Syndicate"
|
||||
assignment = "Syndicate Overlord"
|
||||
access = list(access_syndicate, access_external_airlocks)
|
||||
@@ -44,7 +44,7 @@
|
||||
return
|
||||
if(active)
|
||||
if (imp)
|
||||
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
|
||||
M.visible_message("<span class='warning'>[user] is attempting to implant [M].</span>")
|
||||
|
||||
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
|
||||
user.do_attack_animation(M)
|
||||
|
||||
@@ -78,7 +78,10 @@
|
||||
if( H.shoes || ( H.wear_suit && (H.wear_suit.body_parts_covered & FEET) ) )
|
||||
return
|
||||
|
||||
M << "<span class='danger'>You step on \the [src]!</span>"
|
||||
if(H.species.flags & NO_MINOR_CUT)
|
||||
return
|
||||
|
||||
to_chat(H, "<span class='danger'>You step on \the [src]!</span>")
|
||||
|
||||
var/list/check = list("l_foot", "r_foot")
|
||||
while(check.len)
|
||||
|
||||
@@ -122,6 +122,8 @@
|
||||
sharp = 1
|
||||
edge = 1
|
||||
var/blade_color
|
||||
var/random_color = TRUE
|
||||
var/active_state = "sword"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/dropped(var/mob/user)
|
||||
..()
|
||||
@@ -129,8 +131,9 @@
|
||||
deactivate(user)
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/New()
|
||||
blade_color = pick("red","blue","green","purple")
|
||||
lcolor = blade_color
|
||||
if(random_color)
|
||||
blade_color = pick("red","blue","green","purple")
|
||||
lcolor = blade_color
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/green/New()
|
||||
blade_color = "green"
|
||||
@@ -154,7 +157,7 @@
|
||||
|
||||
..()
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
icon_state = "sword[blade_color]"
|
||||
icon_state = "[active_state][blade_color]"
|
||||
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
|
||||
@@ -184,6 +187,55 @@
|
||||
..()
|
||||
icon_state = "cutlass1"
|
||||
|
||||
/*
|
||||
*Ionic Rapier
|
||||
*/
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/ionic_rapier
|
||||
name = "ionic rapier"
|
||||
desc = "Designed specifically for disrupting electronics at close range, it is extremely deadly against synthetics, but almost harmless to pure organic targets."
|
||||
description_info = "This is a dangerous melee weapon that will deliver a moderately powerful electromagnetic pulse to whatever it strikes. \
|
||||
Striking a lesser robotic entity will compel it to attack you, as well. It also does extra burn damage to robotic entities, but it does \
|
||||
very little damage to purely organic targets."
|
||||
icon_state = "ionic_rapier0"
|
||||
random_color = FALSE
|
||||
active_force = 5
|
||||
active_throwforce = 3
|
||||
active_embed_chance = 0
|
||||
sharp = 1
|
||||
edge = 1
|
||||
armor_penetration = 0
|
||||
flags = NOBLOODY
|
||||
lrange = 2
|
||||
lpower = 2
|
||||
lcolor = "#0000FF"
|
||||
active_state = "ionic_rapier"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/ionic_rapier/afterattack(var/atom/movable/AM, var/mob/living/user, var/proximity)
|
||||
if(istype(AM, /obj) && proximity && active)
|
||||
// EMP stuff.
|
||||
var/obj/O = AM
|
||||
O.emp_act(3) // A weaker severity is used because this has infinite uses.
|
||||
playsound(get_turf(O), 'sound/effects/EMPulse.ogg', 100, 1)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) // A lot of objects don't set click delay.
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/ionic_rapier/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
. = ..()
|
||||
if(target.isSynthetic() && active)
|
||||
// Do some extra damage. Not a whole lot more since emp_act() is pretty nasty on FBPs already.
|
||||
target.emp_act(3) // A weaker severity is used because this has infinite uses.
|
||||
playsound(get_turf(target), 'sound/effects/EMPulse.ogg', 100, 1)
|
||||
target.adjustFireLoss(force * 3) // 15 Burn, for 20 total.
|
||||
playsound(get_turf(target), 'sound/weapons/blade1.ogg', 100, 1)
|
||||
|
||||
// Make lesser robots really mad at us.
|
||||
if(istype(target, /mob/living/simple_animal))
|
||||
var/mob/living/simple_animal/SA = target
|
||||
if(SA.intelligence_level == SA_ROBOTIC)
|
||||
SA.taunt(user)
|
||||
SA.adjustFireLoss(force * 6) // 30 Burn, for 50 total.
|
||||
|
||||
/*
|
||||
*Energy Blade
|
||||
*/
|
||||
|
||||
@@ -248,3 +248,16 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash)
|
||||
|
||||
// -----------------------------
|
||||
// Chemistry Bag
|
||||
// -----------------------------
|
||||
/obj/item/weapon/storage/bag/chemistry
|
||||
name = "chemistry bag"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "chembag"
|
||||
desc = "A bag for storing pills, patches, and bottles."
|
||||
max_storage_space = 200
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slowdown = 1
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/glass/bottle)
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/weapon/storage/belt/utility/chief/full(src)
|
||||
new /obj/item/device/flash(src)
|
||||
new /obj/item/device/t_scanner/upgraded
|
||||
new /obj/item/taperoll/engineering(src)
|
||||
new /obj/item/clothing/suit/storage/hooded/wintercoat/engineering(src)
|
||||
new /obj/item/clothing/shoes/boots/winter/engineering(src)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user