Polaris Sync

This commit is contained in:
killer653
2017-10-16 22:16:24 -04:00
249 changed files with 6618 additions and 2568 deletions
@@ -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
+1
View File
@@ -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"
+2
View File
@@ -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
+9
View File
@@ -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"
+17 -17
View File
@@ -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
+3
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
#define OUTFIT_HAS_JETPACK 1
#define OUTFIT_HAS_BACKPACK 2
#define OUTFIT_EXTENDED_SURVIVAL 4
+115
View File
@@ -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
+62
View File
@@ -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)
+2
View File
@@ -0,0 +1,2 @@
#define OUTFIT_JOB_NAME(job_name) ("Job - " + job_name)
#define OUTFIT_MILITARY(job_name) ("Military Uniform - " + job_name)
+28
View File
@@ -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
+89
View File
@@ -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
+50
View File
@@ -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
+34
View File
@@ -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
+23
View File
@@ -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
+105
View File
@@ -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
+11
View File
@@ -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
+41
View File
@@ -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
+52
View File
@@ -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
+22
View File
@@ -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
+23
View File
@@ -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
+5
View File
@@ -0,0 +1,5 @@
/decl/hierarchy/outfit/military
name = "Military Uniform"
hierarchy_type = /decl/hierarchy/outfit/military
l_ear = /obj/item/device/radio/headset
+23
View File
@@ -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
+55
View File
@@ -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
+32
View File
@@ -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"
+171
View File
@@ -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
+103
View File
@@ -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
+17
View File
@@ -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
+69
View File
@@ -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
+49
View File
@@ -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)
+26
View File
@@ -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
+1
View File
@@ -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,
+21 -1
View File
@@ -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
View File
@@ -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
+1
View File
@@ -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))
+1 -1
View File
@@ -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)
+4 -1
View File
@@ -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)
+15 -75
View File
@@ -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
View File
@@ -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)
*/
+10 -28
View File
@@ -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)
+5 -63
View File
@@ -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
+18 -8
View File
@@ -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
View File
@@ -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)
+11 -60
View File
@@ -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
View File
@@ -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")
+23 -22
View File
@@ -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)
+5 -4
View File
@@ -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
+3 -2
View File
@@ -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)
+2 -1
View File
@@ -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>"
+7 -7
View File
@@ -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)
+5 -2
View File
@@ -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
+1 -1
View File
@@ -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.")
+16 -16
View File
@@ -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
+4 -4
View File
@@ -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)
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+6 -6
View File
@@ -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()
+10 -3
View File
@@ -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()
+6
View File
@@ -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))
+4 -4
View File
@@ -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
+45 -1
View File
@@ -290,4 +290,48 @@
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[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
View File
@@ -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
*/
+4 -4
View File
@@ -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"])
+4 -2
View File
@@ -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
+1
View File
@@ -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
+2 -2
View File
@@ -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
+7 -6
View File
@@ -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
+15 -5
View File
@@ -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)
@@ -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