mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +01:00
Merge branch 'master' into adminin
This commit is contained in:
@@ -88,20 +88,6 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
add_fingerprint(user)
|
||||
|
||||
var/dat = {"<b>Power: </b><a href='?src=[UID()];power=1'>[on?"On":"Off"]</a><br>
|
||||
<b>Desirable output pressure: </b>
|
||||
[round(target_pressure,0.1)]kPa | <a href='?src=[UID()];set_press=1'>Change</a>
|
||||
"}
|
||||
|
||||
var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "atmo_pump")
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/receive_signal(datum/signal/signal)
|
||||
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
|
||||
return 0
|
||||
@@ -142,27 +128,54 @@
|
||||
to_chat(user, "<span class='alert'>Access denied.</span>")
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 385, 115, state = state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["on"] = on
|
||||
data["pressure"] = round(target_pressure)
|
||||
data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/Topic(href,href_list)
|
||||
if(..())
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(href_list["power"])
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
if(href_list["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
|
||||
target_pressure = max(0, min(4500, new_pressure))
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
usr.set_machine(src)
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
return
|
||||
. = TRUE
|
||||
if(href_list["pressure"])
|
||||
var/pressure = href_list["pressure"]
|
||||
if(pressure == "max")
|
||||
pressure = MAX_OUTPUT_PRESSURE
|
||||
. = TRUE
|
||||
else if(pressure == "input")
|
||||
pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
|
||||
if(!isnull(pressure))
|
||||
. = TRUE
|
||||
else if(text2num(pressure) != null)
|
||||
pressure = text2num(pressure)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W, var/mob/user, params)
|
||||
update_icon()
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/atmospherics/binary/passive_gate/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(on)
|
||||
|
||||
@@ -103,20 +103,6 @@ Thus, the two variables affect pump operation are set in New():
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
add_fingerprint(user)
|
||||
|
||||
var/dat = {"<b>Power: </b><a href='?src=[UID()];power=1'>[on?"On":"Off"]</a><br>
|
||||
<b>Desirable output pressure: </b>
|
||||
[round(target_pressure,0.1)]kPa | <a href='?src=[UID()];set_press=1'>Change</a>
|
||||
"}
|
||||
|
||||
var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "atmo_pump")
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/initialize()
|
||||
..()
|
||||
if(frequency)
|
||||
@@ -162,24 +148,52 @@ Thus, the two variables affect pump operation are set in New():
|
||||
to_chat(user, "<span class='alert'>Access denied.</span>")
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 385, 115, state = state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["on"] = on
|
||||
data["pressure"] = round(target_pressure)
|
||||
data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/Topic(href,href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(href_list["power"])
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
if(href_list["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
|
||||
target_pressure = max(0, min(4500, new_pressure))
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
usr.set_machine(src)
|
||||
. = TRUE
|
||||
if(href_list["pressure"])
|
||||
var/pressure = href_list["pressure"]
|
||||
if(pressure == "max")
|
||||
pressure = MAX_OUTPUT_PRESSURE
|
||||
. = TRUE
|
||||
else if(pressure == "input")
|
||||
pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
|
||||
if(!isnull(pressure))
|
||||
. = TRUE
|
||||
else if(text2num(pressure) != null)
|
||||
pressure = text2num(pressure)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -187,7 +201,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
|
||||
/obj/machinery/atmospherics/binary/pump/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!(stat & NOPOWER) && on)
|
||||
|
||||
@@ -99,21 +99,6 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
add_fingerprint(user)
|
||||
|
||||
var/dat = {"<b>Power: </b><a href='?src=[UID()];power=1'>[on?"On":"Off"]</a><br>
|
||||
<b>Desirable output flow: </b>
|
||||
[round(transfer_rate,1)]l/s | <a href='?src=[UID()];set_transfer_rate=1'>Change</a>
|
||||
"}
|
||||
|
||||
var/datum/browser/popup = new(user, "atmo_pump", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "atmo_pump")
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/receive_signal(datum/signal/signal)
|
||||
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
|
||||
return 0
|
||||
@@ -153,24 +138,52 @@ Thus, the two variables affect pump operation are set in New():
|
||||
to_chat(user, "<span class='alert'>Access denied.</span>")
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "atmos_pump.tmpl", name, 310, 115, state = state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["on"] = on
|
||||
data["rate"] = round(transfer_rate)
|
||||
data["max_rate"] = round(MAX_TRANSFER_RATE)
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/Topic(href,href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(href_list["power"])
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
if(href_list["set_transfer_rate"])
|
||||
var/new_transfer_rate = input(usr,"Enter new output volume (0-200l/s)","Flow control",transfer_rate) as num
|
||||
transfer_rate = max(0, min(200, new_transfer_rate))
|
||||
investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
|
||||
usr.set_machine(src)
|
||||
. = TRUE
|
||||
if(href_list["rate"])
|
||||
var/rate = href_list["rate"]
|
||||
if(rate == "max")
|
||||
rate = MAX_TRANSFER_RATE
|
||||
. = TRUE
|
||||
else if(rate == "input")
|
||||
rate = input("New transfer rate (0-[MAX_TRANSFER_RATE] L/s):", name, transfer_rate) as num|null
|
||||
if(!isnull(rate))
|
||||
. = TRUE
|
||||
else if(text2num(rate) != null)
|
||||
rate = text2num(rate)
|
||||
. = TRUE
|
||||
if(.)
|
||||
transfer_rate = Clamp(rate, 0, MAX_TRANSFER_RATE)
|
||||
investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
|
||||
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
nanomanager.update_uis(src)
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/power_change()
|
||||
var/old_stat = stat
|
||||
@@ -178,7 +191,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
if(old_stat != stat)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
|
||||
/obj/machinery/atmospherics/binary/volume_pump/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if(!(stat & NOPOWER) && on)
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
|
||||
name = "gas filter"
|
||||
|
||||
var/temp = null // -- TLE
|
||||
|
||||
var/target_pressure = ONE_ATMOSPHERE
|
||||
|
||||
var/filter_type = 0
|
||||
@@ -146,9 +144,9 @@ Filter types:
|
||||
/obj/machinery/atmospherics/trinary/filter/initialize()
|
||||
set_frequency(frequency)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attack_ghost(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/attack_hand(mob/user)
|
||||
if(..())
|
||||
@@ -157,63 +155,52 @@ Filter types:
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='alert'>Access denied.</span>")
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
var/dat
|
||||
var/current_filter_type
|
||||
switch(filter_type)
|
||||
if(0)
|
||||
current_filter_type = "Toxins"
|
||||
if(1)
|
||||
current_filter_type = "Oxygen"
|
||||
if(2)
|
||||
current_filter_type = "Nitrogen"
|
||||
if(3)
|
||||
current_filter_type = "Carbon Dioxide"
|
||||
if(4)
|
||||
current_filter_type = "Nitrous Oxide"
|
||||
if(-1)
|
||||
current_filter_type = "Nothing"
|
||||
else
|
||||
current_filter_type = "ERROR - Report this bug to the admin, please!"
|
||||
ui_interact(user)
|
||||
|
||||
dat += {"
|
||||
<b>Power: </b><a href='?src=[UID()];power=1'>[on?"On":"Off"]</a><br>
|
||||
<b>Filtering: </b>[current_filter_type]<br><HR>
|
||||
<h4>Set Filter Type:</h4>
|
||||
<A href='?src=[UID()];filterset=0'>Toxins</A><BR>
|
||||
<A href='?src=[UID()];filterset=1'>Oxygen</A><BR>
|
||||
<A href='?src=[UID()];filterset=2'>Nitrogen</A><BR>
|
||||
<A href='?src=[UID()];filterset=3'>Carbon Dioxide</A><BR>
|
||||
<A href='?src=[UID()];filterset=4'>Nitrous Oxide</A><BR>
|
||||
<A href='?src=[UID()];filterset=-1'>Nothing</A><BR>
|
||||
<HR><B>Desirable output pressure:</B>
|
||||
[target_pressure]kPa | <a href='?src=[UID()];set_press=1'>Change</a>
|
||||
"}
|
||||
/obj/machinery/atmospherics/trinary/filter/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "atmos_filter.tmpl", name, 475, 155, state = state)
|
||||
ui.open()
|
||||
|
||||
var/datum/browser/popup = new(user, "atmo_filter", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "atmo_filter")
|
||||
/obj/machinery/atmospherics/trinary/filter/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["on"] = on
|
||||
data["pressure"] = round(target_pressure)
|
||||
data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
|
||||
data["filter_type"] = filter_type
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
|
||||
if(..())
|
||||
return 1
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
if(href_list["filterset"])
|
||||
filter_type = text2num(href_list["filterset"])
|
||||
if(href_list["temp"])
|
||||
temp = null
|
||||
if(href_list["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
|
||||
target_pressure = max(0, min(4500, new_pressure))
|
||||
|
||||
if(href_list["power"])
|
||||
on=!on
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
. = TRUE
|
||||
if(href_list["pressure"])
|
||||
var/pressure = href_list["pressure"]
|
||||
if(pressure == "max")
|
||||
pressure = MAX_OUTPUT_PRESSURE
|
||||
. = TRUE
|
||||
else if(pressure == "input")
|
||||
pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
|
||||
if(!isnull(pressure) && !..())
|
||||
. = TRUE
|
||||
else if(text2num(pressure) != null)
|
||||
pressure = text2num(pressure)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
if(href_list["filter"])
|
||||
filter_type = text2num(href_list["filter"])
|
||||
investigate_log("was set to filter [filter_type] by [key_name(usr)]", "atmos")
|
||||
. = TRUE
|
||||
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
nanomanager.update_uis(src)
|
||||
@@ -16,7 +16,7 @@
|
||||
icon_state = "mmap"
|
||||
flipped = 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/update_icon(var/safety = 0)
|
||||
/obj/machinery/atmospherics/trinary/mixer/update_icon(safety = 0)
|
||||
if(flipped)
|
||||
icon_state = "m"
|
||||
else
|
||||
@@ -107,9 +107,9 @@
|
||||
parent3.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attack_ghost(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/attack_hand(mob/user)
|
||||
if(..())
|
||||
@@ -118,52 +118,61 @@
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='alert'>Access denied.</span>")
|
||||
return
|
||||
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
add_fingerprint(user)
|
||||
var/dat = {"<b>Power: </b><a href='?src=[UID()];power=1'>[on?"On":"Off"]</a><br>
|
||||
<b>Desirable output pressure: </b>
|
||||
[target_pressure]kPa | <a href='?src=[UID()];set_press=1'>Change</a>
|
||||
<br>
|
||||
<b>Node 1 Concentration:</b>
|
||||
<a href='?src=[UID()];node1_c=-0.1'><b>-</b></a>
|
||||
<a href='?src=[UID()];node1_c=-0.01'>-</a>
|
||||
[node1_concentration]([node1_concentration*100]%)
|
||||
<a href='?src=[UID()];node1_c=0.01'><b>+</b></a>
|
||||
<a href='?src=[UID()];node1_c=0.1'>+</a>
|
||||
<br>
|
||||
<b>Node 2 Concentration:</b>
|
||||
<a href='?src=[UID()];node2_c=-0.1'><b>-</b></a>
|
||||
<a href='?src=[UID()];node2_c=-0.01'>-</a>
|
||||
[node2_concentration]([node2_concentration*100]%)
|
||||
<a href='?src=[UID()];node2_c=0.01'><b>+</b></a>
|
||||
<a href='?src=[UID()];node2_c=0.1'>+</a>
|
||||
"}
|
||||
|
||||
var/datum/browser/popup = new(user, "atmo_mixer", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "atmo_mixer")
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "atmos_mixer.tmpl", name, 370, 165, state = state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["on"] = on
|
||||
data["pressure"] = round(target_pressure)
|
||||
data["max_pressure"] = round(MAX_OUTPUT_PRESSURE)
|
||||
data["node1_concentration"] = round(node1_concentration*100)
|
||||
data["node2_concentration"] = round(node2_concentration*100)
|
||||
return data
|
||||
|
||||
/obj/machinery/atmospherics/trinary/mixer/Topic(href,href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(href_list["power"])
|
||||
on = !on
|
||||
if(href_list["set_press"])
|
||||
var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
|
||||
target_pressure = max(0, min(4500, new_pressure))
|
||||
if(href_list["node1_c"])
|
||||
var/value = text2num(href_list["node1_c"])
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
. = TRUE
|
||||
if(href_list["pressure"])
|
||||
var/pressure = href_list["pressure"]
|
||||
if(pressure == "max")
|
||||
pressure = MAX_OUTPUT_PRESSURE
|
||||
. = TRUE
|
||||
else if(pressure == "input")
|
||||
pressure = input("New output pressure (0-[MAX_OUTPUT_PRESSURE] kPa):", name, target_pressure) as num|null
|
||||
if(!isnull(pressure) && !..())
|
||||
. = TRUE
|
||||
else if(text2num(pressure) != null)
|
||||
pressure = text2num(pressure)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
if(href_list["node1"])
|
||||
var/value = text2num(href_list["node1"])
|
||||
node1_concentration = max(0, min(1, node1_concentration + value))
|
||||
node2_concentration = max(0, min(1, node2_concentration - value))
|
||||
if(href_list["node2_c"])
|
||||
var/value = text2num(href_list["node2_c"])
|
||||
investigate_log("was set to [node1_concentration] % on node 1 by [key_name(usr)]", "atmos")
|
||||
. = TRUE
|
||||
if(href_list["node2"])
|
||||
var/value = text2num(href_list["node2"])
|
||||
node2_concentration = max(0, min(1, node2_concentration + value))
|
||||
node1_concentration = max(0, min(1, node1_concentration - value))
|
||||
investigate_log("was set to [node2_concentration] % on node 2 by [key_name(usr)]", "atmos")
|
||||
. = TRUE
|
||||
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
return
|
||||
nanomanager.update_uis(src)
|
||||
@@ -114,4 +114,9 @@
|
||||
|
||||
// Atmos pipe limits
|
||||
#define MAX_OUTPUT_PRESSURE 4500 // (kPa) What pressure pumps and powered equipment max out at.
|
||||
#define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at.
|
||||
#define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at.
|
||||
|
||||
// Atmos alarm defines
|
||||
#define ATMOS_ALARM_NONE 0
|
||||
#define ATMOS_ALARM_WARNING 1
|
||||
#define ATMOS_ALARM_DANGER 2
|
||||
@@ -54,6 +54,8 @@
|
||||
#define DEFAULT_MARKING_STYLES list("head" = "None", "body" = "None", "tail" = "None") //Marking styles. Use instead of initial() for m_styles.
|
||||
#define DEFAULT_MARKING_COLOURS list("head" = "#000000", "body" = "#000000", "tail" = "#000000") //Marking colours. Use instead of initial() for m_colours.
|
||||
|
||||
#define OXYCONCEN_PLASMEN_IGNITION 0.5 //Moles of oxygen in the air needed to light up a poorly clothed Plasmaman. Same as LINDA requirements for plasma burning.
|
||||
|
||||
////////REAGENT STUFF////////
|
||||
// How many units of reagent are consumed per tick, by default.
|
||||
#define REAGENTS_METABOLISM 0.4
|
||||
@@ -129,11 +131,21 @@
|
||||
#define isswarmer(A) (istype((A), /mob/living/simple_animal/hostile/swarmer))
|
||||
#define isguardian(A) (istype((A), /mob/living/simple_animal/hostile/guardian))
|
||||
|
||||
|
||||
|
||||
#define issilicon(A) (istype((A), /mob/living/silicon))
|
||||
#define isAI(A) (istype((A), /mob/living/silicon/ai))
|
||||
#define isrobot(A) (istype((A), /mob/living/silicon/robot))
|
||||
#define ispAI(A) (istype((A), /mob/living/silicon/pai))
|
||||
|
||||
// For the tcomms monitor
|
||||
#define ispathhuman(A) (ispath(A, /mob/living/carbon/human))
|
||||
#define ispathbrain(A) (ispath(A, /mob/living/carbon/brain))
|
||||
#define ispathslime(A) (ispath(A, /mob/living/carbon/slime))
|
||||
#define ispathbot(A) (ispath(A, /mob/living/simple_animal/bot))
|
||||
#define ispathsilicon(A) (ispath(A, /mob/living/silicon))
|
||||
#define ispathanimal(A) (ispath(A, /mob/living/simple_animal))
|
||||
|
||||
#define isAutoAnnouncer(A) (istype((A), /mob/living/automatedannouncer))
|
||||
|
||||
#define isAIEye(A) (istype((A), /mob/camera/aiEye))
|
||||
|
||||
@@ -463,7 +463,7 @@ proc/pollCandidates(Question, be_special_type, antag_age_check = 0, poll_time =
|
||||
G << 'sound/misc/notice2.ogg'//Alerting them to their consideration
|
||||
if(flashwindow)
|
||||
window_flash(G.client)
|
||||
switch(alert(G,Question,"Please answer in [poll_time/10] seconds!","Yes","No","Not This Round"))
|
||||
switch(alert(G,Question,"Please answer in [poll_time/10] seconds!","No","Yes","Not This Round"))
|
||||
if("Yes")
|
||||
to_chat(G, "<span class='notice'>Choice registered: Yes.</span>")
|
||||
if((world.time-time_passed)>poll_time)//If more than 30 game seconds passed.
|
||||
|
||||
@@ -110,3 +110,9 @@ var/gaussian_next
|
||||
if(new_val < bound_lower)
|
||||
new_val = min(orig_val, bound_lower)
|
||||
return new_val
|
||||
|
||||
// sqrt, but if you give it a negative number, you get 0 instead of a runtime
|
||||
/proc/sqrtor0(num)
|
||||
if(num < 0)
|
||||
return 0
|
||||
return sqrt(num)
|
||||
|
||||
@@ -433,3 +433,27 @@ proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=nul
|
||||
break
|
||||
if(!.)
|
||||
to_chat(user, "<span class='warning'>No mob located in [A].</span>")
|
||||
|
||||
// Suppress the mouse macros
|
||||
/client/var/next_mouse_macro_warning
|
||||
/mob/proc/LogMouseMacro(verbused, params)
|
||||
if(!client)
|
||||
return
|
||||
if(!client.next_mouse_macro_warning) // Log once
|
||||
log_admin("[key_name(usr)] attempted to use a mouse macro: [verbused] [params]")
|
||||
message_admins("[key_name_admin(usr)] attempted to use a mouse macro: [verbused] [html_encode(params)]")
|
||||
if(client.next_mouse_macro_warning < world.time) // Warn occasionally
|
||||
usr << 'sound/misc/sadtrombone.ogg'
|
||||
client.next_mouse_macro_warning = world.time + 600
|
||||
/mob/verb/ClickSubstitute(params as command_text)
|
||||
set hidden = 1
|
||||
set name = ".click"
|
||||
LogMouseMacro(".click", params)
|
||||
/mob/verb/DblClickSubstitute(params as command_text)
|
||||
set hidden = 1
|
||||
set name = ".dblclick"
|
||||
LogMouseMacro(".dblclick", params)
|
||||
/mob/verb/MouseSubstitute(params as command_text)
|
||||
set hidden = 1
|
||||
set name = ".mouse"
|
||||
LogMouseMacro(".mouse", params)
|
||||
|
||||
@@ -550,17 +550,17 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
|
||||
var/turf/current = get_turf(source)
|
||||
var/turf/target_turf = get_turf(target)
|
||||
var/steps = 1
|
||||
|
||||
|
||||
if(current != target_turf)
|
||||
current = get_step_towards(current, target_turf)
|
||||
current = get_step_towards(current, target_turf)
|
||||
while(current != target_turf)
|
||||
if(steps > length)
|
||||
if(steps > length)
|
||||
return 0
|
||||
if(current.opacity)
|
||||
if(current.opacity)
|
||||
return 0
|
||||
for(var/thing in current)
|
||||
var/atom/A = thing
|
||||
if(A.opacity)
|
||||
if(A.opacity)
|
||||
return 0
|
||||
current = get_step_towards(current, target_turf)
|
||||
steps++
|
||||
@@ -1863,7 +1863,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
pois[name] = A
|
||||
|
||||
return pois
|
||||
|
||||
|
||||
/proc/flash_color(mob_or_client, flash_color="#960000", flash_time=20)
|
||||
var/client/C
|
||||
if(istype(mob_or_client, /mob))
|
||||
@@ -1881,7 +1881,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
C.color = flash_color
|
||||
spawn(0)
|
||||
animate(C, color = initial(C.color), time = flash_time)
|
||||
|
||||
|
||||
#define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255)))
|
||||
|
||||
/proc/make_bit_triplet()
|
||||
|
||||
@@ -25,8 +25,6 @@ var/global/list/socks_m = list() //stores only socks name
|
||||
var/global/list/socks_f = list() //stores only socks name
|
||||
//Alt Heads
|
||||
var/global/list/alt_heads_list = list() //stores /datum/sprite_accessory/alt_heads indexed by name
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
|
||||
|
||||
var/static/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons/Taser.ogg','sound/weapons/armbomb.ogg','sound/voice/hiss1.ogg','sound/voice/hiss2.ogg', \
|
||||
'sound/voice/hiss3.ogg','sound/voice/hiss4.ogg','sound/voice/hiss5.ogg','sound/voice/hiss6.ogg','sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg', \
|
||||
@@ -62,4 +60,14 @@ var/global/list/phonetic_alphabet = list("Alpha", "Bravo", "Charlie",
|
||||
var/global/list/numbers_as_words = list("One", "Two", "Three", "Four",
|
||||
"Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
|
||||
"Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen",
|
||||
"Eighteen", "Nineteen")
|
||||
"Eighteen", "Nineteen")
|
||||
|
||||
//Backpacks
|
||||
#define GBACKPACK "Grey Backpack"
|
||||
#define GSATCHEL "Grey Satchel"
|
||||
#define GDUFFLEBAG "Grey Dufflebag"
|
||||
#define LSATCHEL "Leather Satchel"
|
||||
#define DBACKPACK "Department Backpack"
|
||||
#define DSATCHEL "Department Satchel"
|
||||
#define DDUFFLEBAG "Department Dufflebag"
|
||||
var/global/list/backbaglist = list(DBACKPACK, DSATCHEL, DDUFFLEBAG, GBACKPACK, GSATCHEL, GDUFFLEBAG, LSATCHEL)
|
||||
@@ -14,6 +14,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse
|
||||
"Thunderdome",
|
||||
"UO45",
|
||||
"UO45R",
|
||||
"UO71",
|
||||
"Xeno",
|
||||
"Hotel"
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/global/obj/effect/datacore/data_core = null
|
||||
var/global/datum/datacore/data_core = null
|
||||
|
||||
var/CELLRATE = 0.002 // multiplier for watts per tick <> cell storage (eg: .002 means if there is a load of 1000 watts, 20 units will be taken from a cell per second)
|
||||
var/CHARGELEVEL = 0.0005 // Cap for how fast cells charge, as a percentage-per-tick (.001 means cellcharge is capped to 1% per second)
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
// Solves problems with lighting updates lagging shit
|
||||
// Max constraints on number of updates per doWork():
|
||||
#define MAX_LIGHT_UPDATES_PER_WORK 100
|
||||
#define MAX_CORNER_UPDATES_PER_WORK 1000
|
||||
#define MAX_OVERLAY_UPDATES_PER_WORK 2000
|
||||
|
||||
/var/lighting_overlays_initialised = FALSE
|
||||
|
||||
/var/list/lighting_update_lights = list() // List of lighting sources queued for update.
|
||||
@@ -16,10 +10,22 @@
|
||||
|
||||
|
||||
/datum/controller/process/lighting
|
||||
// Queues of update counts, waiting to be rolled into stats lists
|
||||
var/list/stats_queues = list(
|
||||
"Source" = list(), "Corner" = list(), "Overlay" = list())
|
||||
// Stats lists
|
||||
var/list/stats_lists = list(
|
||||
"Source" = list(), "Corner" = list(), "Overlay" = list())
|
||||
var/update_stats_every = (1 SECONDS)
|
||||
var/next_stats_update = 0
|
||||
var/stat_updates_to_keep = 5
|
||||
|
||||
/datum/controller/process/lighting/setup()
|
||||
name = "lighting"
|
||||
|
||||
schedule_interval = world.tick_lag // run as fast as you possibly can
|
||||
schedule_interval = 0 // run as fast as you possibly can
|
||||
sleep_interval = 10 // Yield every 10% of a tick
|
||||
defer_usage = 80 // Defer at 80% of a tick
|
||||
create_all_lighting_overlays()
|
||||
lighting_overlays_initialised = TRUE
|
||||
|
||||
@@ -28,17 +34,10 @@
|
||||
doWork(1)
|
||||
|
||||
/datum/controller/process/lighting/doWork(roundstart)
|
||||
// Counters
|
||||
var/light_updates = 0
|
||||
var/corner_updates = 0
|
||||
var/overlay_updates = 0
|
||||
|
||||
lighting_update_lights_old = lighting_update_lights //We use a different list so any additions to the update lists during a delay from scheck() don't cause things to be cut from the list without being updated.
|
||||
lighting_update_lights = list()
|
||||
for(var/datum/light_source/L in lighting_update_lights_old)
|
||||
if(light_updates >= MAX_LIGHT_UPDATES_PER_WORK && !roundstart)
|
||||
lighting_update_lights += L
|
||||
continue // DON'T break, we're adding stuff back into the update queue.
|
||||
|
||||
if(L.check() || L.destroyed || L.force_update)
|
||||
L.remove_lum()
|
||||
@@ -52,52 +51,48 @@
|
||||
L.force_update = FALSE
|
||||
L.needs_update = FALSE
|
||||
|
||||
light_updates++
|
||||
|
||||
SCHECK
|
||||
|
||||
lighting_update_corners_old = lighting_update_corners //Same as above.
|
||||
lighting_update_corners = list()
|
||||
for(var/A in lighting_update_corners_old)
|
||||
if(corner_updates >= MAX_CORNER_UPDATES_PER_WORK && !roundstart)
|
||||
lighting_update_corners += A
|
||||
continue // DON'T break, we're adding stuff back into the update queue.
|
||||
|
||||
var/datum/lighting_corner/C = A
|
||||
|
||||
C.update_overlays()
|
||||
|
||||
C.needs_update = FALSE
|
||||
|
||||
corner_updates++
|
||||
|
||||
SCHECK
|
||||
|
||||
lighting_update_overlays_old = lighting_update_overlays //Same as above.
|
||||
lighting_update_overlays = list()
|
||||
|
||||
for(var/atom/movable/lighting_overlay/O in lighting_update_overlays_old)
|
||||
if(overlay_updates >= MAX_OVERLAY_UPDATES_PER_WORK && !roundstart)
|
||||
lighting_update_overlays += O
|
||||
continue // DON'T break, we're adding stuff back into the update queue.
|
||||
|
||||
for(var/A in lighting_update_overlays_old)
|
||||
var/atom/movable/lighting_overlay/O = A
|
||||
O.update_overlay()
|
||||
O.needs_update = 0
|
||||
overlay_updates++
|
||||
SCHECK
|
||||
|
||||
stats_queues["Source"] += lighting_update_lights_old.len
|
||||
stats_queues["Corner"] += lighting_update_corners_old.len
|
||||
stats_queues["Overlay"] += lighting_update_overlays_old.len
|
||||
|
||||
if(next_stats_update <= world.time)
|
||||
next_stats_update = world.time + update_stats_every
|
||||
for(var/stat_name in stats_queues)
|
||||
var/stat_sum = 0
|
||||
var/list/stats_queue = stats_queues[stat_name]
|
||||
for(var/count in stats_queue)
|
||||
stat_sum += count
|
||||
stats_queue.Cut()
|
||||
|
||||
var/list/stats_list = stats_lists[stat_name]
|
||||
stats_list.Insert(1, stat_sum)
|
||||
if(stats_list.len > stat_updates_to_keep)
|
||||
stats_list.Cut(stats_list.len)
|
||||
|
||||
/datum/controller/process/lighting/statProcess()
|
||||
..()
|
||||
stat(null, "[all_lighting_sources.len] light sources exist")
|
||||
stat(null, "[all_lighting_corners.len] light corners exist")
|
||||
stat(null, "[global.all_lighting_overlays.len] light overlays exist")
|
||||
stat(null, "[lighting_update_lights.len] lighting sources queued")
|
||||
stat(null, "[lighting_update_corners.len] lighting corners queued")
|
||||
stat(null, "[lighting_update_overlays.len] lighting overlays queued")
|
||||
|
||||
#undef MAX_LIGHT_UPDATES_PER_WORK
|
||||
#undef MAX_CORNER_UPDATES_PER_WORK
|
||||
#undef MAX_OVERLAY_UPDATES_PER_WORK
|
||||
stat(null, "[total_lighting_sources] sources, [total_lighting_corners] corners, [total_lighting_overlays] overlays")
|
||||
for(var/stat_type in stats_lists)
|
||||
stat(null, "[stat_type] updates: [jointext(stats_lists[stat_type], " | ")]")
|
||||
|
||||
@@ -347,3 +347,21 @@ var/global/datum/controller/radio/radio_controller
|
||||
var/list/L = data[i]
|
||||
for(var/t in L)
|
||||
. += "data\[\"[i]\"\] list has: [t]"
|
||||
|
||||
/datum/signal/proc/get_race(mob/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
. = H.species.name
|
||||
else if(isbrain(M))
|
||||
var/mob/living/carbon/brain/B = M
|
||||
. = B.get_race()
|
||||
else if(issilicon(M))
|
||||
. = "Artificial Life"
|
||||
else if(isslime(M))
|
||||
. = "Slime"
|
||||
else if(isbot(M))
|
||||
. = "Bot"
|
||||
else if(isanimal(M))
|
||||
. = "Domestic Animal"
|
||||
else
|
||||
. = "Unidentifiable"
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
/datum/action/item_action/toggle_hardsuit_mode
|
||||
name = "Toggle Hardsuit Mode"
|
||||
|
||||
|
||||
/datum/action/item_action/toggle_unfriendly_fire
|
||||
name = "Toggle Friendly Fire \[ON\]"
|
||||
desc = "Toggles if the staff causes friendly fire."
|
||||
@@ -357,7 +357,7 @@
|
||||
..()
|
||||
name = "Toggle [target.name]"
|
||||
button.name = name
|
||||
|
||||
|
||||
/datum/action/item_action/organ_action/use/New(Target)
|
||||
..()
|
||||
name = "Use [target.name]"
|
||||
|
||||
+228
-13
@@ -1,16 +1,231 @@
|
||||
/hook/startup/proc/createDatacore()
|
||||
data_core = new /obj/effect/datacore()
|
||||
data_core = new /datum/datacore()
|
||||
return 1
|
||||
|
||||
/obj/effect/datacore/proc/manifest(var/nosleep = 0)
|
||||
spawn()
|
||||
if(!nosleep)
|
||||
sleep(40)
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
manifest_inject(H)
|
||||
return
|
||||
/datum/datacore
|
||||
var/list/medical = list()
|
||||
var/list/general = list()
|
||||
var/list/security = list()
|
||||
//This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
|
||||
var/list/locked = list()
|
||||
|
||||
/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment)
|
||||
/datum/datacore/proc/get_manifest(monochrome, OOC)
|
||||
var/list/heads = new()
|
||||
var/list/sec = new()
|
||||
var/list/eng = new()
|
||||
var/list/med = new()
|
||||
var/list/sci = new()
|
||||
var/list/ser = new()
|
||||
var/list/sup = new()
|
||||
var/list/bot = new()
|
||||
var/list/misc = new()
|
||||
var/list/isactive = new()
|
||||
var/dat = {"
|
||||
<head><style>
|
||||
.manifest {border-collapse:collapse;}
|
||||
.manifest td, th {border:1px solid [monochrome?"black":"#DEF; background-color:white; color:black"]; padding:.25em}
|
||||
.manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: #48C; color:white"]}
|
||||
.manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: #488;"] }
|
||||
.manifest td:first-child {text-align:right}
|
||||
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
|
||||
</style></head>
|
||||
<table class="manifest" width='350px'>
|
||||
<tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
|
||||
"}
|
||||
var/even = 0
|
||||
// sort mobs
|
||||
for(var/datum/data/record/t in data_core.general)
|
||||
var/name = t.fields["name"]
|
||||
var/rank = t.fields["rank"]
|
||||
var/real_rank = t.fields["real_rank"]
|
||||
if(OOC)
|
||||
var/active = 0
|
||||
for(var/mob/M in player_list)
|
||||
if(M.real_name == name && M.client && M.client.inactivity <= 10 * 60 * 10)
|
||||
active = 1
|
||||
break
|
||||
isactive[name] = active ? "Active" : "Inactive"
|
||||
else
|
||||
isactive[name] = t.fields["p_stat"]
|
||||
var/department = 0
|
||||
if(real_rank in command_positions)
|
||||
heads[name] = rank
|
||||
department = 1
|
||||
if(real_rank in security_positions)
|
||||
sec[name] = rank
|
||||
department = 1
|
||||
if(real_rank in engineering_positions)
|
||||
eng[name] = rank
|
||||
department = 1
|
||||
if(real_rank in medical_positions)
|
||||
med[name] = rank
|
||||
department = 1
|
||||
if(real_rank in science_positions)
|
||||
sci[name] = rank
|
||||
department = 1
|
||||
if(real_rank in service_positions)
|
||||
ser[name] = rank
|
||||
department = 1
|
||||
if(real_rank in supply_positions)
|
||||
sup[name] = rank
|
||||
department = 1
|
||||
if(real_rank in nonhuman_positions)
|
||||
bot[name] = rank
|
||||
department = 1
|
||||
if(!department && !(name in heads))
|
||||
misc[name] = rank
|
||||
if(heads.len > 0)
|
||||
dat += "<tr><th colspan=3>Heads</th></tr>"
|
||||
for(var/name in heads)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sec.len > 0)
|
||||
dat += "<tr><th colspan=3>Security</th></tr>"
|
||||
for(var/name in sec)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(eng.len > 0)
|
||||
dat += "<tr><th colspan=3>Engineering</th></tr>"
|
||||
for(var/name in eng)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(med.len > 0)
|
||||
dat += "<tr><th colspan=3>Medical</th></tr>"
|
||||
for(var/name in med)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sci.len > 0)
|
||||
dat += "<tr><th colspan=3>Science</th></tr>"
|
||||
for(var/name in sci)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(ser.len > 0)
|
||||
dat += "<tr><th colspan=3>Service</th></tr>"
|
||||
for(var/name in ser)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[ser[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sup.len > 0)
|
||||
dat += "<tr><th colspan=3>Supply</th></tr>"
|
||||
for(var/name in sup)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sup[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(bot.len > 0)
|
||||
dat += "<tr><th colspan=3>Silicon</th></tr>"
|
||||
for(var/name in bot)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(misc.len > 0)
|
||||
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
|
||||
for(var/name in misc)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
|
||||
dat += "</table>"
|
||||
dat = replacetext(dat, "\n", "") // so it can be placed on paper correctly
|
||||
dat = replacetext(dat, "\t", "")
|
||||
return dat
|
||||
|
||||
|
||||
/*
|
||||
We can't just insert in HTML into the nanoUI so we need the raw data to play with.
|
||||
Instead of creating this list over and over when someone leaves their PDA open to the page
|
||||
we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change
|
||||
using /datum/datacore/proc/manifest_inject(), or manifest_insert()
|
||||
*/
|
||||
|
||||
var/global/list/PDA_Manifest = list()
|
||||
|
||||
/datum/datacore/proc/get_manifest_json()
|
||||
if(PDA_Manifest.len)
|
||||
return
|
||||
var/heads[0]
|
||||
var/sec[0]
|
||||
var/eng[0]
|
||||
var/med[0]
|
||||
var/sci[0]
|
||||
var/ser[0]
|
||||
var/sup[0]
|
||||
var/bot[0]
|
||||
var/misc[0]
|
||||
for(var/datum/data/record/t in data_core.general)
|
||||
var/name = sanitize(t.fields["name"])
|
||||
var/rank = sanitize(t.fields["rank"])
|
||||
var/real_rank = t.fields["real_rank"]
|
||||
|
||||
var/isactive = t.fields["p_stat"]
|
||||
var/department = 0
|
||||
var/depthead = 0 // Department Heads will be placed at the top of their lists.
|
||||
if(real_rank in command_positions)
|
||||
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
depthead = 1
|
||||
if(rank == "Captain" && heads.len != 1)
|
||||
heads.Swap(1, heads.len)
|
||||
|
||||
if(real_rank in security_positions)
|
||||
sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sec.len != 1)
|
||||
sec.Swap(1, sec.len)
|
||||
|
||||
if(real_rank in engineering_positions)
|
||||
eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && eng.len != 1)
|
||||
eng.Swap(1, eng.len)
|
||||
|
||||
if(real_rank in medical_positions)
|
||||
med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && med.len != 1)
|
||||
med.Swap(1, med.len)
|
||||
|
||||
if(real_rank in science_positions)
|
||||
sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sci.len != 1)
|
||||
sci.Swap(1, sci.len)
|
||||
|
||||
if(real_rank in service_positions)
|
||||
ser[++ser.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && ser.len != 1)
|
||||
ser.Swap(1, ser.len)
|
||||
|
||||
if(real_rank in supply_positions)
|
||||
sup[++sup.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sup.len != 1)
|
||||
sup.Swap(1, sup.len)
|
||||
|
||||
if(real_rank in nonhuman_positions)
|
||||
bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
|
||||
if(!department && !(name in heads))
|
||||
misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
|
||||
|
||||
PDA_Manifest = list(\
|
||||
"heads" = heads,\
|
||||
"sec" = sec,\
|
||||
"eng" = eng,\
|
||||
"med" = med,\
|
||||
"sci" = sci,\
|
||||
"ser" = ser,\
|
||||
"sup" = sup,\
|
||||
"bot" = bot,\
|
||||
"misc" = misc\
|
||||
)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/datum/datacore/proc/manifest()
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
manifest_inject(H)
|
||||
|
||||
/datum/datacore/proc/manifest_modify(name, assignment)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
var/datum/data/record/foundrecord
|
||||
@@ -35,7 +250,8 @@
|
||||
foundrecord.fields["rank"] = assignment
|
||||
foundrecord.fields["real_rank"] = real_title
|
||||
|
||||
/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
||||
var/record_id_num = 1001
|
||||
/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
|
||||
@@ -50,7 +266,7 @@
|
||||
else
|
||||
assignment = "Unassigned"
|
||||
|
||||
var/id = add_zero(num2hex(rand(1, 1.6777215E7)), 6) //this was the best they could come up with? A large random number? *sigh*
|
||||
var/id = num2hex(record_id_num++, 6)
|
||||
|
||||
|
||||
//General Record
|
||||
@@ -125,8 +341,7 @@
|
||||
locked += L
|
||||
return
|
||||
|
||||
|
||||
proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
/proc/get_id_photo(mob/living/carbon/human/H)
|
||||
var/icon/preview_icon = null
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
var/obj/item/organ/internal/eyes/eyes_organ = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
|
||||
@@ -43,11 +43,11 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/choking/proc/Choke_stage_3_4(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(16+A.totalStealth())
|
||||
var/get_damage = sqrtor0(21+A.totalStageSpeed()*0.5)+sqrtor0(16+A.totalStealth())
|
||||
M.adjustOxyLoss(get_damage)
|
||||
return 1
|
||||
|
||||
/datum/symptom/choking/proc/Choke(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = sqrt(21+A.totalStageSpeed()*0.5)+sqrt(16+A.totalStealth()*5)
|
||||
var/get_damage = sqrtor0(21+A.totalStageSpeed()*0.5)+sqrtor0(16+A.totalStealth()*5)
|
||||
M.adjustOxyLoss(get_damage)
|
||||
return 1
|
||||
@@ -36,6 +36,6 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/fever/proc/Heat(mob/living/M, datum/disease/advance/A)
|
||||
var/get_heat = (sqrt(21+A.totalTransmittable()*2))+(sqrt(20+A.totalStageSpeed()*3))
|
||||
var/get_heat = (sqrtor0(21+A.totalTransmittable()*2))+(sqrtor0(20+A.totalStageSpeed()*3))
|
||||
M.bodytemperature = min(M.bodytemperature + (get_heat * A.stage), BODYTEMP_HEAT_DAMAGE_LIMIT - 1)
|
||||
return 1
|
||||
@@ -45,13 +45,13 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A)
|
||||
var/get_stacks = (sqrt(20+A.totalStageSpeed()*2))-(sqrt(16+A.totalStealth()))
|
||||
var/get_stacks = (sqrtor0(20+A.totalStageSpeed()*2))-(sqrtor0(16+A.totalStealth()))
|
||||
M.adjust_fire_stacks(get_stacks)
|
||||
M.adjustFireLoss(get_stacks/2)
|
||||
return 1
|
||||
|
||||
/datum/symptom/fire/proc/Firestacks_stage_5(mob/living/M, datum/disease/advance/A)
|
||||
var/get_stacks = (sqrt(20+A.totalStageSpeed()*3))-(sqrt(16+A.totalStealth()))
|
||||
var/get_stacks = (sqrtor0(20+A.totalStageSpeed()*3))-(sqrtor0(16+A.totalStealth()))
|
||||
M.adjust_fire_stacks(get_stacks)
|
||||
M.adjustFireLoss(get_stacks)
|
||||
return 1
|
||||
@@ -38,6 +38,6 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = ((sqrt(16-A.totalStealth()))*5)
|
||||
var/get_damage = ((sqrtor0(16-A.totalStealth()))*5)
|
||||
M.adjustBruteLoss(get_damage)
|
||||
return 1
|
||||
@@ -34,7 +34,7 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/heal/proc/Heal(mob/living/M, datum/disease/advance/A)
|
||||
var/get_damage = (sqrt(20+A.totalStageSpeed())*(1+rand()))
|
||||
var/get_damage = (sqrtor0(20+A.totalStageSpeed())*(1+rand()))
|
||||
M.adjustToxLoss(-get_damage)
|
||||
return 1
|
||||
|
||||
@@ -148,7 +148,7 @@ Bonus
|
||||
level = 5
|
||||
|
||||
/datum/symptom/heal/dna/Heal(mob/living/carbon/M, datum/disease/advance/A)
|
||||
var/amt_healed = (sqrt(20+A.totalStageSpeed()*(3+rand())))-(sqrt(16+A.totalStealth()*rand()))
|
||||
var/amt_healed = (sqrtor0(20+A.totalStageSpeed()*(3+rand())))-(sqrtor0(16+A.totalStealth()*rand()))
|
||||
M.adjustBrainLoss(-amt_healed)
|
||||
//Non-power mutations, excluding race, so the virus does not force monkey -> human transformations.
|
||||
var/list/unclean_mutations = (not_good_mutations|bad_mutations) - mutations_list[RACEMUT]
|
||||
|
||||
@@ -35,6 +35,6 @@ Bonus
|
||||
return
|
||||
|
||||
/datum/symptom/shivering/proc/Chill(mob/living/M, datum/disease/advance/A)
|
||||
var/get_cold = (sqrt(16+A.totalStealth()*2))+(sqrt(21+A.totalResistance()*2))
|
||||
var/get_cold = (sqrtor0(16+A.totalStealth()*2))+(sqrtor0(21+A.totalResistance()*2))
|
||||
M.bodytemperature = min(M.bodytemperature - (get_cold * A.stage), BODYTEMP_COLD_DAMAGE_LIMIT + 1)
|
||||
return 1
|
||||
@@ -0,0 +1,143 @@
|
||||
/datum/outfit
|
||||
var/name = "Naked"
|
||||
var/collect_not_del = FALSE
|
||||
|
||||
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/l_hand = null
|
||||
var/r_hand = null
|
||||
var/pda = null
|
||||
var/internals_slot = null //ID of slot containing a gas tank
|
||||
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
|
||||
|
||||
|
||||
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
//to be overriden for customization depending on client prefs,species etc
|
||||
return
|
||||
|
||||
// Used to equip an item to the mob. Mainly to prevent copypasta for collect_not_del.
|
||||
/datum/outfit/proc/equip_item(mob/living/carbon/human/H, path, slot)
|
||||
var/obj/item/I = new path(H)
|
||||
if(collect_not_del)
|
||||
H.equip_or_collect(I, slot)
|
||||
else
|
||||
H.equip_to_slot_or_del(I, slot)
|
||||
|
||||
/datum/outfit/proc/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
//to be overriden for toggling internals, id binding, access etc
|
||||
return
|
||||
|
||||
/datum/outfit/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
pre_equip(H, visualsOnly)
|
||||
|
||||
//Start with uniform,suit,backpack for additional slots
|
||||
if(uniform)
|
||||
equip_item(H, uniform, slot_w_uniform)
|
||||
if(suit)
|
||||
equip_item(H, suit, slot_wear_suit)
|
||||
if(back)
|
||||
equip_item(H, back, slot_back)
|
||||
if(belt)
|
||||
equip_item(H, belt, slot_belt)
|
||||
if(gloves)
|
||||
equip_item(H, gloves, slot_gloves)
|
||||
if(shoes)
|
||||
equip_item(H, shoes, slot_shoes)
|
||||
if(head)
|
||||
equip_item(H, head, slot_head)
|
||||
if(mask)
|
||||
equip_item(H, mask, slot_wear_mask)
|
||||
if(l_ear)
|
||||
equip_item(H, l_ear, slot_l_ear)
|
||||
if(r_ear)
|
||||
equip_item(H, r_ear, slot_r_ear)
|
||||
if(glasses)
|
||||
equip_item(H, glasses, slot_glasses)
|
||||
if(id)
|
||||
equip_item(H, id, slot_wear_id)
|
||||
if(suit_store)
|
||||
equip_item(H, suit_store, 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(pda)
|
||||
equip_item(H, pda, slot_wear_pda)
|
||||
|
||||
if(!visualsOnly) // Items in pockets or backpack don't show up on mob's icon.
|
||||
if(l_pocket)
|
||||
equip_item(H, l_pocket, slot_l_store)
|
||||
if(r_pocket)
|
||||
equip_item(H, r_pocket, slot_r_store)
|
||||
|
||||
for(var/path in backpack_contents)
|
||||
var/number = backpack_contents[path]
|
||||
for(var/i = 0, i < number, i++)
|
||||
equip_item(H, path, slot_in_backpack)
|
||||
|
||||
post_equip(H, visualsOnly)
|
||||
|
||||
if(!visualsOnly)
|
||||
apply_fingerprints(H)
|
||||
if(internals_slot)
|
||||
H.internal = H.get_item_by_slot(internals_slot)
|
||||
H.update_action_buttons_icon()
|
||||
|
||||
H.update_body()
|
||||
return 1
|
||||
|
||||
/datum/outfit/proc/apply_fingerprints(mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
if(H.back)
|
||||
H.back.add_fingerprint(H, 1) //The 1 sets a flag to ignore gloves
|
||||
for(var/obj/item/I in H.back.contents)
|
||||
I.add_fingerprint(H, 1)
|
||||
if(H.wear_id)
|
||||
H.wear_id.add_fingerprint(H, 1)
|
||||
if(H.w_uniform)
|
||||
H.w_uniform.add_fingerprint(H, 1)
|
||||
if(H.wear_suit)
|
||||
H.wear_suit.add_fingerprint(H, 1)
|
||||
if(H.wear_mask)
|
||||
H.wear_mask.add_fingerprint(H, 1)
|
||||
if(H.head)
|
||||
H.head.add_fingerprint(H, 1)
|
||||
if(H.shoes)
|
||||
H.shoes.add_fingerprint(H, 1)
|
||||
if(H.gloves)
|
||||
H.gloves.add_fingerprint(H, 1)
|
||||
if(H.l_ear)
|
||||
H.l_ear.add_fingerprint(H, 1)
|
||||
if(H.r_ear)
|
||||
H.r_ear.add_fingerprint(H, 1)
|
||||
if(H.glasses)
|
||||
H.glasses.add_fingerprint(H, 1)
|
||||
if(H.belt)
|
||||
H.belt.add_fingerprint(H, 1)
|
||||
for(var/obj/item/I in H.belt.contents)
|
||||
I.add_fingerprint(H, 1)
|
||||
if(H.s_store)
|
||||
H.s_store.add_fingerprint(H, 1)
|
||||
if(H.l_store)
|
||||
H.l_store.add_fingerprint(H, 1)
|
||||
if(H.r_store)
|
||||
H.r_store.add_fingerprint(H, 1)
|
||||
if(H.wear_pda)
|
||||
H.wear_pda.add_fingerprint(H, 1)
|
||||
return 1
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1149,6 +1149,13 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
cost = 10
|
||||
containername = "glass sheets crate"
|
||||
|
||||
/datum/supply_packs/materials/wood30
|
||||
name = "30 Wood Planks Crate"
|
||||
contains = list(/obj/item/stack/sheet/wood)
|
||||
amount = 30
|
||||
cost = 15
|
||||
containername = "wood planks crate"
|
||||
|
||||
/datum/supply_packs/materials/cardboard50
|
||||
name = "50 Cardboard Sheets Crate"
|
||||
contains = list(/obj/item/stack/sheet/cardboard)
|
||||
@@ -1408,6 +1415,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/clothing/head/collectable/flatcap,
|
||||
/obj/item/clothing/head/collectable/pirate,
|
||||
/obj/item/clothing/head/collectable/kitty,
|
||||
/obj/item/clothing/head/crown/fancy,
|
||||
/obj/item/clothing/head/collectable/rabbitears,
|
||||
/obj/item/clothing/head/collectable/wizard,
|
||||
/obj/item/clothing/head/collectable/hardhat,
|
||||
@@ -1527,9 +1535,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/obj/item/weapon/beach_ball)
|
||||
cost = 20
|
||||
containername = "polo supply crate"
|
||||
|
||||
///////////// Station Goals
|
||||
|
||||
|
||||
///////////// Station Goals
|
||||
|
||||
/datum/supply_packs/misc/bsa
|
||||
name = "Bluespace Artillery Parts"
|
||||
cost = 150
|
||||
|
||||
@@ -18,11 +18,6 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/wires/autolathe/Interact(var/mob/living/user)
|
||||
if(CanUse(user))
|
||||
var/obj/machinery/autolathe/V = holder
|
||||
V.attack_hand(user)
|
||||
|
||||
/datum/wires/autolathe/UpdateCut(index, mended)
|
||||
var/obj/machinery/autolathe/A = holder
|
||||
switch(index)
|
||||
@@ -55,4 +50,4 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
|
||||
spawn(50)
|
||||
if(A && !IsIndexCut(index))
|
||||
A.disabled = 0
|
||||
Interact(usr)
|
||||
Interact(usr)
|
||||
|
||||
@@ -17,7 +17,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
|
||||
/area
|
||||
var/fire = null
|
||||
var/atmosalm = 0
|
||||
var/atmosalm = ATMOS_ALARM_NONE
|
||||
var/poweralm = 1
|
||||
var/party = null
|
||||
var/radalert = 0
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
|
||||
/area/proc/atmosalert(danger_level, var/alarm_source)
|
||||
if(danger_level == 0)
|
||||
if(danger_level == ATMOS_ALARM_NONE)
|
||||
atmosphere_alarm.clearAlarm(src, alarm_source)
|
||||
else
|
||||
atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level)
|
||||
@@ -64,10 +64,10 @@
|
||||
danger_level = max(danger_level, AA.danger_level)
|
||||
|
||||
if(danger_level != atmosalm)
|
||||
if(danger_level < 1 && atmosalm >= 1)
|
||||
if(danger_level < ATMOS_ALARM_WARNING && atmosalm >= ATMOS_ALARM_WARNING)
|
||||
//closing the doors on red and opening on green provides a bit of hysteresis that will hopefully prevent fire doors from opening and closing repeatedly due to noise
|
||||
air_doors_open()
|
||||
else if(danger_level >= 2 && atmosalm < 2)
|
||||
else if(danger_level >= ATMOS_ALARM_DANGER && atmosalm < ATMOS_ALARM_DANGER)
|
||||
air_doors_close()
|
||||
|
||||
atmosalm = danger_level
|
||||
@@ -81,9 +81,10 @@
|
||||
|
||||
/area/proc/air_doors_close()
|
||||
if(!air_doors_activated)
|
||||
air_doors_activated = 1
|
||||
air_doors_activated = TRUE
|
||||
for(var/obj/machinery/door/firedoor/D in src)
|
||||
if(!D.welded)
|
||||
D.activate_alarm()
|
||||
if(D.operating)
|
||||
D.nextstate = CLOSED
|
||||
else if(!D.density)
|
||||
@@ -92,9 +93,10 @@
|
||||
|
||||
/area/proc/air_doors_open()
|
||||
if(air_doors_activated)
|
||||
air_doors_activated = 0
|
||||
air_doors_activated = FALSE
|
||||
for(var/obj/machinery/door/firedoor/D in src)
|
||||
if(!D.welded)
|
||||
D.deactivate_alarm()
|
||||
if(D.operating)
|
||||
D.nextstate = OPEN
|
||||
else if(D.density)
|
||||
|
||||
@@ -426,3 +426,7 @@ var/global/list/bad_blocks[0]
|
||||
species = data["species"]
|
||||
b_type = data["b_type"]
|
||||
real_name = data["real_name"]
|
||||
|
||||
// a nice hook for if/when we refactor species on dna
|
||||
/datum/dna/proc/get_species_name()
|
||||
return species
|
||||
|
||||
@@ -22,27 +22,27 @@
|
||||
|
||||
// Give Random Bad Mutation to M
|
||||
/proc/randmutb(var/mob/living/M)
|
||||
if(!M) return
|
||||
if(!M || !M.dna) return
|
||||
M.dna.check_integrity()
|
||||
var/block = pick(bad_blocks)
|
||||
M.dna.SetSEState(block, 1)
|
||||
|
||||
// Give Random Good Mutation to M
|
||||
/proc/randmutg(var/mob/living/M)
|
||||
if(!M) return
|
||||
if(!M || !M.dna) return
|
||||
M.dna.check_integrity()
|
||||
var/block = pick(good_blocks)
|
||||
M.dna.SetSEState(block, 1)
|
||||
|
||||
// Random Appearance Mutation
|
||||
/proc/randmuti(var/mob/living/M)
|
||||
if(!M) return
|
||||
if(!M || !M.dna) return
|
||||
M.dna.check_integrity()
|
||||
M.dna.SetUIValue(rand(1,DNA_UI_LENGTH),rand(1,4095))
|
||||
|
||||
// Scramble UI or SE.
|
||||
/proc/scramble(var/UI, var/mob/M, var/prob)
|
||||
if(!M) return
|
||||
if(!M || !M.dna) return
|
||||
M.dna.check_integrity()
|
||||
if(UI)
|
||||
for(var/i = 1, i <= DNA_UI_LENGTH-1, i++)
|
||||
|
||||
@@ -965,7 +965,7 @@ var/list/teleport_runes = list()
|
||||
if(O.client && !jobban_isbanned(O, ROLE_CULTIST))
|
||||
ghosts_on_rune |= O
|
||||
var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune)
|
||||
var/mob/living/carbon/human/new_human = new(get_turf(src))
|
||||
var/mob/living/carbon/human/dummy/new_human = new(get_turf(src))
|
||||
new_human.real_name = ghost_to_spawn.real_name
|
||||
new_human.alpha = 150 //Makes them translucent
|
||||
new_human.color = "grey" //heh..cult greytide...litterly...
|
||||
|
||||
@@ -496,7 +496,7 @@
|
||||
melee_damage_upper = 10
|
||||
damage_transfer = 0.9
|
||||
projectiletype = /obj/item/projectile/guardian
|
||||
ranged_cooldown_time = 1
|
||||
ranged_cooldown_time = 10
|
||||
projectilesound = 'sound/effects/hit_on_shattered_glass.ogg'
|
||||
ranged = 1
|
||||
rapid = 1
|
||||
|
||||
@@ -246,9 +246,7 @@ proc/issyndicate(mob/living/M as mob)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(synd_mob), slot_shoes)
|
||||
synd_mob.equip_or_collect(new /obj/item/clothing/gloves/combat(synd_mob), slot_gloves)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/card/id/syndicate(synd_mob), slot_wear_id)
|
||||
if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back)
|
||||
if(synd_mob.backbag == 3) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back)
|
||||
if(synd_mob.backbag == 4) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(synd_mob), slot_back)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(synd_mob), slot_back)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/pill/initropidril(synd_mob), slot_in_backpack)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt)
|
||||
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack)
|
||||
|
||||
@@ -399,6 +399,7 @@ var/bomb_set
|
||||
/obj/item/weapon/disk/nuclear/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
poi_list |= src
|
||||
|
||||
/obj/item/weapon/disk/nuclear/process()
|
||||
var/turf/disk_loc = get_turf(src)
|
||||
@@ -414,10 +415,12 @@ var/bomb_set
|
||||
if(force)
|
||||
message_admins("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>":"nonexistent location"]).")
|
||||
log_game("[src] has been !!force deleted!! in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]).")
|
||||
poi_list.Remove(src)
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
if(blobstart.len > 0)
|
||||
poi_list.Remove(src)
|
||||
var/obj/item/weapon/disk/nuclear/NEWDISK = new(pick(blobstart))
|
||||
transfer_fingerprints_to(NEWDISK)
|
||||
message_admins("[src] has been destroyed at ([diskturf.x], [diskturf.y], [diskturf.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[diskturf.x];Y=[diskturf.y];Z=[diskturf.z]'>JMP</a>). Moving it to ([NEWDISK.x], [NEWDISK.y], [NEWDISK.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[NEWDISK.x];Y=[NEWDISK.y];Z=[NEWDISK.z]'>JMP</a>).")
|
||||
|
||||
@@ -586,6 +586,11 @@ var/global/list/multiverse = list()
|
||||
W.SetOwnerInfo(M)
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
if(M.get_species() == "Vox")
|
||||
M.species.after_equip_job(null, M) //Voxygen(tm)
|
||||
if(M.get_species() == "Plasmaman")
|
||||
M.species.after_equip_job(null, M) //No fireballs from other dimensions.
|
||||
|
||||
M.update_icons()
|
||||
|
||||
/obj/item/weapon/multisword/pure_evil
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
wizard_mob.faction = list("wizard")
|
||||
|
||||
wizard_mob.species.equip(wizard_mob)
|
||||
wizard_mob.species.after_equip_job(null, wizard_mob)
|
||||
|
||||
to_chat(wizard_mob, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.")
|
||||
to_chat(wizard_mob, "The spellbook is bound to you, and others cannot use it.")
|
||||
|
||||
@@ -93,18 +93,21 @@
|
||||
/var/const/access_cent_bridge = 113//Bridge.
|
||||
/var/const/access_cent_commander = 114//Commander's Office/ID computer.
|
||||
|
||||
//The Syndicate
|
||||
//The Syndicate
|
||||
/var/const/access_syndicate = 150//General Syndicate Access
|
||||
/var/const/access_syndicate_leader = 151//Nuke Op Leader Access
|
||||
/var/const/access_vox = 152//Vox Access
|
||||
|
||||
//Trade Stations
|
||||
|
||||
var/const/access_trade_sol = 160
|
||||
|
||||
//MONEY
|
||||
//MONEY
|
||||
/var/const/access_crate_cash = 200
|
||||
|
||||
//Awaymissions
|
||||
/var/const/access_away01 = 271
|
||||
|
||||
|
||||
/obj/var/list/req_access = null
|
||||
/obj/var/req_access_txt = "0"
|
||||
/obj/var/list/req_one_access = null
|
||||
|
||||
@@ -8,36 +8,37 @@
|
||||
spawn_positions = 5
|
||||
supervisors = "the admins"
|
||||
selection_color = "#ffdddd"
|
||||
idtype = /obj/item/weapon/card/id/centcom
|
||||
access = list()
|
||||
minimal_access = list()
|
||||
admin_only = 1
|
||||
|
||||
/datum/job/ntnavyofficer/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/centcom/officer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/white(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/centcom(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(H), slot_in_backpack)
|
||||
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/dust(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(H), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/ntnavyofficer
|
||||
|
||||
/datum/job/ntnavyofficer/get_access()
|
||||
return get_centcom_access(title)
|
||||
|
||||
/datum/outfit/job/ntnavyofficer
|
||||
name = "Nanotrasen Navy Officer"
|
||||
jobtype = /datum/job/ntnavyofficer
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/centcom/officer
|
||||
gloves = /obj/item/clothing/gloves/color/white
|
||||
shoes = /obj/item/clothing/shoes/centcom
|
||||
head = /obj/item/clothing/head/beret/centcom/officer
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/gun/energy/pulse/pistol = 1,
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/satchel
|
||||
|
||||
|
||||
|
||||
// CC Officials who lead ERTs, Death Squads, etc.
|
||||
/datum/job/ntspecops
|
||||
@@ -48,33 +49,34 @@
|
||||
spawn_positions = 5
|
||||
supervisors = "the admins"
|
||||
selection_color = "#ffdddd"
|
||||
idtype = /obj/item/weapon/card/id/centcom
|
||||
access = list()
|
||||
minimal_access = list()
|
||||
admin_only = 1
|
||||
spawn_ert = 1
|
||||
|
||||
/datum/job/ntspecops/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/clothing/under/syndicate/combat(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/combat(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/combat(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/centcom(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer/navy(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/centcom(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/space/deathsquad/officer(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/dust(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(H), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/ntspecops
|
||||
|
||||
/datum/job/ntspecops/get_access()
|
||||
return get_centcom_access(title)
|
||||
|
||||
/datum/outfit/job/ntspecops
|
||||
name = "Special Operations Officer"
|
||||
jobtype = /datum/job/ntspecops
|
||||
|
||||
uniform = /obj/item/clothing/under/syndicate/combat
|
||||
suit = /obj/item/clothing/suit/space/deathsquad/officer
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
head = /obj/item/clothing/head/beret/centcom/officer/navy
|
||||
l_ear = /obj/item/device/radio/headset/centcom
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/centcom
|
||||
pda = /obj/item/device/pda/centcom
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/implanter/dust = 1,
|
||||
/obj/item/weapon/gun/energy/pulse/pistol/m1911 = 1,
|
||||
/obj/item/weapon/implanter/death_alarm = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/satchel
|
||||
@@ -9,20 +9,19 @@
|
||||
access = list() //See /datum/job/assistant/get_access()
|
||||
minimal_access = list() //See /datum/job/assistant/get_access()
|
||||
alt_titles = list("Tourist","Businessman","Trader","Assistant")
|
||||
|
||||
/datum/job/civilian/equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/color/random(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
outfit = /datum/outfit/job/assistant
|
||||
|
||||
/datum/job/civilian/get_access()
|
||||
if(config.assistant_maint)
|
||||
return list(access_maint_tunnels)
|
||||
else
|
||||
return list()
|
||||
|
||||
/datum/outfit/job/assistant
|
||||
name = "Civilian"
|
||||
jobtype = /datum/job/civilian
|
||||
|
||||
uniform = /obj/item/clothing/under/color/random
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
is_engineering = 1
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ffeeaa"
|
||||
idtype = /obj/item/weapon/card/id/ce
|
||||
req_admin_notify = 1
|
||||
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels,
|
||||
access_teleporter, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
|
||||
@@ -20,24 +19,28 @@
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
outfit = /datum/outfit/job/chief_engineer
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ce(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat/white(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black/ce(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/chief_engineer
|
||||
name = "Chief Engineer"
|
||||
jobtype = /datum/job/chief_engineer
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/chief_engineer
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
gloves = /obj/item/clothing/gloves/color/black/ce
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/hardhat/white
|
||||
l_ear = /obj/item/device/radio/headset/heads/ce
|
||||
id = /obj/item/weapon/card/id/ce
|
||||
pda = /obj/item/device/pda/heads/ce
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_eng
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/engineering
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
|
||||
|
||||
/datum/job/engineer
|
||||
@@ -49,26 +52,29 @@
|
||||
is_engineering = 1
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
idtype = /obj/item/weapon/card/id/engineering
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_mineral_storeroom)
|
||||
minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_mineral_storeroom)
|
||||
alt_titles = list("Maintenance Technician","Engine Technician","Electrician")
|
||||
minimal_player_age = 7
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/t_scanner(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
return 1
|
||||
outfit = /datum/outfit/job/engineer
|
||||
|
||||
/datum/outfit/job/engineer
|
||||
name = "Station Engineer"
|
||||
jobtype = /datum/job/engineer
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/engineer
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
head = /obj/item/clothing/head/hardhat
|
||||
l_ear = /obj/item/device/radio/headset/headset_eng
|
||||
id = /obj/item/weapon/card/id/engineering
|
||||
l_pocket = /obj/item/device/t_scanner
|
||||
pda = /obj/item/device/pda/engineering
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_eng
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/engineering
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
|
||||
|
||||
|
||||
@@ -81,24 +87,24 @@
|
||||
is_engineering = 1
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
idtype = /obj/item/weapon/card/id/engineering
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_mineral_storeroom)
|
||||
minimal_access = list(access_eva, access_atmospherics, access_maint_tunnels, access_external_airlocks, access_emergency_storage, access_construction, access_mineral_storeroom)
|
||||
alt_titles = list("Atmospheric Technician")
|
||||
minimal_player_age = 7
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/device/pda/atmos(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
return 1
|
||||
outfit = /datum/outfit/job/atmos
|
||||
|
||||
/datum/outfit/job/atmos
|
||||
name = "Life Support Specialist"
|
||||
jobtype = /datum/job/atmos
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/atmospheric_technician
|
||||
belt = /obj/item/weapon/storage/belt/utility/atmostech
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
l_ear = /obj/item/device/radio/headset/headset_eng
|
||||
id = /obj/item/weapon/card/id/engineering
|
||||
pda = /obj/item/device/pda/atmos
|
||||
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
|
||||
/datum/job/mechanic
|
||||
title = "Mechanic"
|
||||
@@ -109,24 +115,27 @@
|
||||
is_engineering = 1
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
idtype = /obj/item/weapon/card/id/engineering
|
||||
access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_mechanic, access_external_airlocks, access_mineral_storeroom)
|
||||
minimal_access = list(access_maint_tunnels, access_emergency_storage, access_mechanic, access_external_airlocks, access_mineral_storeroom)
|
||||
outfit = /datum/outfit/job/mechanic
|
||||
|
||||
/datum/outfit/job/mechanic
|
||||
name = "Mechanic"
|
||||
jobtype = /datum/job/mechanic
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/mechanic(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hardhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/t_scanner(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/engineering(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/pod_paint_bucket(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/mechanic
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
head = /obj/item/clothing/head/hardhat
|
||||
l_ear = /obj/item/device/radio/headset/headset_eng
|
||||
id = /obj/item/weapon/card/id/engineering
|
||||
r_pocket = /obj/item/device/t_scanner
|
||||
pda = /obj/item/device/pda/engineering
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/pod_paint_bucket = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_eng
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/engineering
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
|
||||
+154
-44
@@ -29,9 +29,6 @@
|
||||
//Sellection screen color
|
||||
var/selection_color = "#ffffff"
|
||||
|
||||
//the type of the ID the player will have
|
||||
var/idtype = /obj/item/weapon/card/id
|
||||
|
||||
//List of alternate titles, if any
|
||||
var/list/alt_titles
|
||||
|
||||
@@ -57,14 +54,32 @@
|
||||
var/admin_only = 0
|
||||
var/spawn_ert = 0
|
||||
|
||||
var/outfit = null
|
||||
|
||||
/////////////////////////////////
|
||||
// /vg/ feature: Job Objectives!
|
||||
/////////////////////////////////
|
||||
var/required_objectives=list() // Objectives that are ALWAYS added.
|
||||
var/optional_objectives=list() // Objectives that are SOMETIMES added.
|
||||
|
||||
/datum/job/proc/equip(var/mob/living/carbon/human/H)
|
||||
return 1
|
||||
//Only override this proc
|
||||
/datum/job/proc/after_spawn(mob/living/carbon/human/H)
|
||||
|
||||
/datum/job/proc/announce(mob/living/carbon/human/H)
|
||||
|
||||
/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE)
|
||||
if(!H)
|
||||
return 0
|
||||
|
||||
H.species.before_equip_job(src, H, visualsOnly)
|
||||
|
||||
if(outfit)
|
||||
H.equipOutfit(outfit, visualsOnly)
|
||||
|
||||
H.species.after_equip_job(src, H, visualsOnly)
|
||||
|
||||
if(!visualsOnly && announce)
|
||||
announce(H)
|
||||
|
||||
/datum/job/proc/get_access()
|
||||
if(!config) //Needed for robots.
|
||||
@@ -94,44 +109,139 @@
|
||||
|
||||
return max(0, minimal_player_age - C.player_age)
|
||||
|
||||
/datum/job/proc/apply_fingerprints(var/mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
if(H.back)
|
||||
H.back.add_fingerprint(H,1) //The 1 sets a flag to ignore gloves
|
||||
for(var/obj/item/I in H.back.contents)
|
||||
I.add_fingerprint(H,1)
|
||||
if(H.wear_id)
|
||||
H.wear_id.add_fingerprint(H,1)
|
||||
if(H.w_uniform)
|
||||
H.w_uniform.add_fingerprint(H,1)
|
||||
if(H.wear_suit)
|
||||
H.wear_suit.add_fingerprint(H,1)
|
||||
if(H.wear_mask)
|
||||
H.wear_mask.add_fingerprint(H,1)
|
||||
if(H.head)
|
||||
H.head.add_fingerprint(H,1)
|
||||
if(H.shoes)
|
||||
H.shoes.add_fingerprint(H,1)
|
||||
if(H.gloves)
|
||||
H.gloves.add_fingerprint(H,1)
|
||||
if(H.l_ear)
|
||||
H.l_ear.add_fingerprint(H,1)
|
||||
if(H.r_ear)
|
||||
H.r_ear.add_fingerprint(H,1)
|
||||
if(H.glasses)
|
||||
H.glasses.add_fingerprint(H,1)
|
||||
if(H.belt)
|
||||
H.belt.add_fingerprint(H,1)
|
||||
for(var/obj/item/I in H.belt.contents)
|
||||
I.add_fingerprint(H,1)
|
||||
if(H.s_store)
|
||||
H.s_store.add_fingerprint(H,1)
|
||||
if(H.l_store)
|
||||
H.l_store.add_fingerprint(H,1)
|
||||
if(H.r_store)
|
||||
H.r_store.add_fingerprint(H,1)
|
||||
return 1
|
||||
|
||||
/datum/job/proc/is_position_available()
|
||||
return (current_positions < total_positions) || (total_positions == -1)
|
||||
|
||||
/datum/outfit/job
|
||||
name = "Standard Gear"
|
||||
collect_not_del = TRUE // we don't want anyone to lose their job shit
|
||||
|
||||
var/jobtype = null
|
||||
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
id = /obj/item/weapon/card/id
|
||||
l_ear = /obj/item/device/radio/headset
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
pda = /obj/item/device/pda
|
||||
|
||||
var/list/implants = null
|
||||
|
||||
var/backpack = /obj/item/weapon/storage/backpack
|
||||
var/satchel = /obj/item/weapon/storage/backpack/satchel_norm
|
||||
var/dufflebag = /obj/item/weapon/storage/backpack/duffel
|
||||
var/box = /obj/item/weapon/storage/box/survival
|
||||
|
||||
var/tmp/list/gear_leftovers = list()
|
||||
|
||||
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
switch(H.backbag)
|
||||
if(GBACKPACK)
|
||||
back = /obj/item/weapon/storage/backpack //Grey backpack
|
||||
if(GSATCHEL)
|
||||
back = /obj/item/weapon/storage/backpack/satchel_norm //Grey satchel
|
||||
if(GDUFFLEBAG)
|
||||
back = /obj/item/weapon/storage/backpack/duffel //Grey Dufflebag
|
||||
if(LSATCHEL)
|
||||
back = /obj/item/weapon/storage/backpack/satchel //Leather Satchel
|
||||
if(DSATCHEL)
|
||||
back = satchel //Department satchel
|
||||
if(DDUFFLEBAG)
|
||||
back = dufflebag //Department dufflebag
|
||||
else
|
||||
back = backpack //Department backpack
|
||||
|
||||
var/datum/job/J = job_master.GetJobType(jobtype)
|
||||
if(!J)
|
||||
J = job_master.GetJob(H.job)
|
||||
|
||||
if(box)
|
||||
backpack_contents.Insert(1, box) // Box always takes a first slot in backpack
|
||||
backpack_contents[box] = 1
|
||||
|
||||
if(H.client && (H.client.prefs.gear && H.client.prefs.gear.len))
|
||||
for(var/gear in H.client.prefs.gear)
|
||||
var/datum/gear/G = gear_datums[gear]
|
||||
if(G)
|
||||
var/permitted = FALSE
|
||||
|
||||
if(G.allowed_roles)
|
||||
if(name in G.allowed_roles)
|
||||
permitted = TRUE
|
||||
else
|
||||
permitted = TRUE
|
||||
|
||||
if(G.whitelisted && (G.whitelisted != H.species.name || !is_alien_whitelisted(H, G.whitelisted)))
|
||||
permitted = FALSE
|
||||
|
||||
if(!permitted)
|
||||
to_chat(H, "<span class='warning'>Your current job or whitelist status does not permit you to spawn with [gear]!</span>")
|
||||
continue
|
||||
|
||||
if(G.slot)
|
||||
if(H.equip_to_slot_or_del(G.spawn_item(H), G.slot))
|
||||
to_chat(H, "<span class='notice'>Equipping you with [gear]!</span>")
|
||||
else
|
||||
gear_leftovers += G
|
||||
else
|
||||
gear_leftovers += G
|
||||
|
||||
/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/datum/job/J = job_master.GetJobType(jobtype)
|
||||
if(!J)
|
||||
J = job_master.GetJob(H.job)
|
||||
|
||||
var/obj/item/weapon/card/id/C = H.wear_id
|
||||
if(istype(C))
|
||||
C.access = J.get_access()
|
||||
C.registered_name = H.real_name
|
||||
C.rank = J.title
|
||||
C.assignment = J.title
|
||||
C.sex = capitalize(H.gender)
|
||||
C.age = H.age
|
||||
C.name = "[C.registered_name]'s ID Card ([C.assignment])"
|
||||
C.photo = get_id_photo(H)
|
||||
|
||||
if(H.mind && H.mind.initial_account)
|
||||
C.associated_account_number = H.mind.initial_account.account_number
|
||||
|
||||
H.sec_hud_set_ID()
|
||||
|
||||
var/obj/item/device/pda/PDA = H.wear_pda
|
||||
if(istype(PDA))
|
||||
PDA.owner = H.real_name
|
||||
PDA.ownjob = C.assignment
|
||||
PDA.ownrank = C.rank
|
||||
PDA.name = "PDA-[H.real_name] ([PDA.ownjob])"
|
||||
|
||||
if(implants)
|
||||
for(var/implant_type in implants)
|
||||
var/obj/item/weapon/implant/I = new implant_type(H)
|
||||
I.imp_in = H
|
||||
I.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
|
||||
if(gear_leftovers.len)
|
||||
for(var/datum/gear/G in gear_leftovers)
|
||||
var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.gear[G.display_name]))
|
||||
if(istype(placed_in))
|
||||
if(isturf(placed_in))
|
||||
to_chat(H, "<span class='notice'>Placing \the [G] on [placed_in]!</span>")
|
||||
else
|
||||
to_chat(H, "<span class='noticed'>Placing \the [G] in [placed_in.name]]")
|
||||
continue
|
||||
if(H.equip_to_appropriate_slot(G))
|
||||
to_chat(H, "<span class='notice'>Placing \the [G] in your inventory!</span>")
|
||||
continue
|
||||
if(H.put_in_hands(G))
|
||||
to_chat(H, "<span class='notice'>Placing \the [G] in your hands!</span>")
|
||||
continue
|
||||
to_chat(H, "<span class='danger'>Failed to locate a storage object on your mob, either you spawned with no hands free and no backpack or this is a bug.</span>")
|
||||
qdel(G)
|
||||
|
||||
qdel(gear_leftovers)
|
||||
|
||||
return 1
|
||||
|
||||
+154
-144
@@ -7,7 +7,6 @@
|
||||
is_medical = 1
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ffddf0"
|
||||
idtype = /obj/item/weapon/card/id/cmo
|
||||
req_admin_notify = 1
|
||||
access = list(access_medical, access_morgue, access_genetics, access_heads,
|
||||
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
|
||||
@@ -18,25 +17,27 @@
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
outfit = /datum/outfit/job/cmo
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/cmo(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/cmo(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/cmo
|
||||
name = "Chief Medical Officer"
|
||||
jobtype = /datum/job/cmo
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/chief_medical_officer
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/cmo
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_ear = /obj/item/device/radio/headset/heads/cmo
|
||||
id = /obj/item/weapon/card/id/cmo
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
pda = /obj/item/device/pda/heads/cmo
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/medic
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_med
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/medical
|
||||
|
||||
/datum/job/doctor
|
||||
title = "Medical Doctor"
|
||||
@@ -47,54 +48,56 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
|
||||
minimal_access = list(access_medical, access_morgue, access_surgery, access_maint_tunnels)
|
||||
alt_titles = list("Surgeon","Nurse","Coroner")
|
||||
minimal_player_age = 3
|
||||
outfit = /datum/outfit/job/doctor
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
if(H.mind.role_alt_title)
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Coroner")
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical/mortician(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/mortician(H), slot_wear_suit)
|
||||
if(H.backbag != 1)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/surgery/black(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/autopsy_scanner(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/mass_spectrometer(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/bodybags(H), slot_in_backpack)
|
||||
if("Surgeon")
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical/blue(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/surgery/blue(H), slot_head)
|
||||
if("Medical Doctor")
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
if("Nurse")
|
||||
if(H.gender == FEMALE)
|
||||
if(prob(50))
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/nursesuit(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/nurse(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/nursehat(H), slot_head)
|
||||
/datum/outfit/job/doctor
|
||||
name = "Medical Doctor"
|
||||
jobtype = /datum/job/doctor
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
suit = /obj/item/clothing/suit/storage/labcoat
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
pda = /obj/item/device/pda/medical
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/medic
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_med
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/medical
|
||||
|
||||
/datum/outfit/job/doctor/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H.mind.role_alt_title)
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Coroner")
|
||||
uniform = /obj/item/clothing/under/rank/medical/mortician
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/mortician
|
||||
backpack_contents = list(
|
||||
/obj/item/clothing/head/surgery/black = 1,
|
||||
/obj/item/weapon/autopsy_scanner = 1,
|
||||
/obj/item/device/mass_spectrometer = 1,
|
||||
/obj/item/weapon/storage/box/bodybags = 1
|
||||
)
|
||||
if("Surgeon")
|
||||
uniform = /obj/item/clothing/under/rank/medical/blue
|
||||
head = /obj/item/clothing/head/surgery/blue
|
||||
if("Medical Doctor")
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
if("Nurse")
|
||||
if(H.gender == FEMALE)
|
||||
if(prob(50))
|
||||
uniform = /obj/item/clothing/under/rank/nursesuit
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical/purple(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/nurse
|
||||
head = /obj/item/clothing/head/nursehat
|
||||
else
|
||||
uniform = /obj/item/clothing/under/rank/medical/purple
|
||||
|
||||
|
||||
|
||||
@@ -108,28 +111,27 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
|
||||
minimal_access = list(access_medical, access_chemistry, access_maint_tunnels, access_mineral_storeroom)
|
||||
alt_titles = list("Pharmacist","Pharmacologist")
|
||||
minimal_player_age = 7
|
||||
outfit = /datum/outfit/job/chemist
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
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)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/science(H), slot_glasses)
|
||||
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_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/chemist(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/chemist
|
||||
name = "Chemist"
|
||||
jobtype = /datum/job/chemist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/chemist
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/chemist
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
glasses = /obj/item/clothing/glasses/science
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
pda = /obj/item/device/pda/chemist
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/chemistry
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_chem
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/chemistry
|
||||
|
||||
/datum/job/geneticist
|
||||
title = "Geneticist"
|
||||
@@ -140,25 +142,27 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer and the research director"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research, access_mineral_storeroom)
|
||||
minimal_access = list(access_medical, access_morgue, access_genetics, access_research, access_maint_tunnels)
|
||||
minimal_player_age = 3
|
||||
outfit = /datum/outfit/job/geneticist
|
||||
|
||||
/datum/outfit/job/geneticist
|
||||
name = "Geneticist"
|
||||
jobtype = /datum/job/geneticist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/geneticist
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/genetics
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
l_ear = /obj/item/device/radio/headset/headset_medsci
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
pda = /obj/item/device/pda/geneticist
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/genetics
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_gen
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/genetics
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
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/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_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/genetics(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
/datum/job/virologist
|
||||
title = "Virologist"
|
||||
@@ -169,27 +173,28 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||
minimal_access = list(access_medical, access_virology, access_maint_tunnels, access_mineral_storeroom)
|
||||
alt_titles = list("Pathologist","Microbiologist")
|
||||
minimal_player_age = 7
|
||||
outfit = /datum/outfit/job/virologist
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/virology(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_vir(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/viro(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/surgical(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/virologist(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/virologist
|
||||
name = "Virologist"
|
||||
jobtype = /datum/job/virologist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/virologist
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/virologist
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
pda = /obj/item/device/pda/viro
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/virology
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_vir
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/virology
|
||||
|
||||
/datum/job/psychiatrist
|
||||
title = "Psychiatrist"
|
||||
@@ -200,34 +205,33 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_psychiatrist)
|
||||
minimal_access = list(access_medical, access_psychiatrist, access_maint_tunnels)
|
||||
alt_titles = list("Psychologist","Therapist")
|
||||
outfit = /datum/outfit/job/psychiatrist
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(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(H.mind.role_alt_title)
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Psychiatrist")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform)
|
||||
if("Psychologist")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform)
|
||||
if("Therapist")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(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/labcoat(H), slot_wear_suit)
|
||||
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_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/psychiatrist
|
||||
name = "Psychiatrist"
|
||||
jobtype = /datum/job/psychiatrist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
suit = /obj/item/clothing/suit/storage/labcoat
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
pda = /obj/item/device/pda/medical
|
||||
|
||||
/datum/outfit/job/psychiatrist/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H.mind.role_alt_title)
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Psychiatrist")
|
||||
uniform = /obj/item/clothing/under/rank/psych
|
||||
if("Psychologist")
|
||||
uniform = /obj/item/clothing/under/rank/psych/turtleneck
|
||||
if("Therapist")
|
||||
uniform = /obj/item/clothing/under/rank/medical
|
||||
|
||||
/datum/job/paramedic
|
||||
title = "Paramedic"
|
||||
@@ -238,23 +242,29 @@
|
||||
is_medical = 1
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
idtype = /obj/item/weapon/card/id/medical
|
||||
access = list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks, access_morgue)
|
||||
minimal_access=list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks, access_morgue)
|
||||
minimal_player_age = 3
|
||||
outfit = /datum/outfit/job/paramedic
|
||||
|
||||
/datum/outfit/job/paramedic
|
||||
name = "Paramedic"
|
||||
jobtype = /datum/job/paramedic
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/medical/paramedic
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
head = /obj/item/clothing/head/soft/blue
|
||||
mask = /obj/item/clothing/mask/cigarette
|
||||
l_ear = /obj/item/device/radio/headset/headset_med
|
||||
id = /obj/item/weapon/card/id/medical
|
||||
l_pocket = /obj/item/device/flashlight/pen
|
||||
pda = /obj/item/device/pda/medical
|
||||
backpack_contents = list(
|
||||
/obj/item/device/healthanalyzer = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/medic
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_med
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/medical
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
if(H.backbag == 2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic (H), slot_back)
|
||||
if(H.backbag == 3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/cigarette(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/soft/blue(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/healthanalyzer(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/job/rd
|
||||
/datum/job/rd
|
||||
title = "Research Director"
|
||||
flag = RD
|
||||
department_flag = MEDSCI
|
||||
@@ -7,42 +7,45 @@
|
||||
is_science = 1
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ffddff"
|
||||
req_admin_notify = 1
|
||||
idtype = /obj/item/weapon/card/id/rd
|
||||
req_admin_notify = 1
|
||||
access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_mineral_storeroom)
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_mineral_storeroom)
|
||||
minimal_access = list(access_eva, access_rd, access_heads, access_tox, access_genetics, access_morgue,
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_maint_tunnels, access_mineral_storeroom)
|
||||
access_tox_storage, access_tech_storage, access_teleporter, access_sec_doors,
|
||||
access_research, access_robotics, access_xenobiology, access_ai_upload,
|
||||
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_maint_tunnels, access_mineral_storeroom)
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
// All science-y guys get bonuses for maxing out their tech.
|
||||
required_objectives=list(
|
||||
required_objectives = list(
|
||||
/datum/job_objective/further_research
|
||||
)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/science(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)
|
||||
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_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
)
|
||||
|
||||
outfit = /datum/outfit/job/rd
|
||||
|
||||
/datum/outfit/job/rd
|
||||
name = "Research Director"
|
||||
jobtype = /datum/job/rd
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/research_director
|
||||
suit = /obj/item/clothing/suit/storage/labcoat
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_ear = /obj/item/device/radio/headset/heads/rd
|
||||
id = /obj/item/weapon/card/id/rd
|
||||
l_hand = /obj/item/weapon/clipboard
|
||||
pda = /obj/item/device/pda/heads/rd
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/science
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_tox
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/science
|
||||
|
||||
|
||||
/datum/job/scientist
|
||||
title = "Scientist"
|
||||
@@ -53,33 +56,34 @@
|
||||
is_science = 1
|
||||
supervisors = "the research director"
|
||||
selection_color = "#ffeeff"
|
||||
idtype = /obj/item/weapon/card/id/research
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_mineral_storeroom)
|
||||
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_maint_tunnels, access_mineral_storeroom)
|
||||
alt_titles = list("Xenoarcheologist", "Anomalist", "Plasma Researcher", "Xenobiologist", "Chemical Researcher")
|
||||
minimal_player_age = 3
|
||||
|
||||
// All science-y guys get bonuses for maxing out their tech.
|
||||
required_objectives=list(
|
||||
required_objectives = list(
|
||||
/datum/job_objective/further_research
|
||||
)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/science(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)
|
||||
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/toxins(H), slot_wear_pda)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
)
|
||||
|
||||
outfit = /datum/outfit/job/scientist
|
||||
|
||||
/datum/outfit/job/scientist
|
||||
name = "Scientist"
|
||||
jobtype = /datum/job/scientist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/scientist
|
||||
suit = /obj/item/clothing/suit/storage/labcoat/science
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
l_ear = /obj/item/device/radio/headset/headset_sci
|
||||
id = /obj/item/weapon/card/id/research
|
||||
pda = /obj/item/device/pda/toxins
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/science
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_tox
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/science
|
||||
|
||||
|
||||
/datum/job/roboticist
|
||||
title = "Roboticist"
|
||||
flag = ROBOTICIST
|
||||
@@ -89,28 +93,26 @@
|
||||
is_science = 1
|
||||
supervisors = "the research director"
|
||||
selection_color = "#ffeeff"
|
||||
idtype = /obj/item/weapon/card/id/research
|
||||
access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research, access_mineral_storeroom) //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, access_maint_tunnels, access_mineral_storeroom) //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 = 3
|
||||
|
||||
required_objectives=list(
|
||||
required_objectives = list(
|
||||
/datum/job_objective/make_cyborg,
|
||||
/datum/job_objective/make_ripley
|
||||
)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
)
|
||||
|
||||
outfit = /datum/outfit/job/roboticist
|
||||
|
||||
/datum/outfit/job/roboticist
|
||||
name = "Roboticist"
|
||||
jobtype = /datum/job/roboticist
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/roboticist
|
||||
suit = /obj/item/clothing/suit/storage/labcoat
|
||||
belt = /obj/item/weapon/storage/belt/utility/full
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_sci
|
||||
id = /obj/item/weapon/card/id/research
|
||||
pda = /obj/item/device/pda/roboticist
|
||||
|
||||
+162
-150
@@ -7,7 +7,6 @@
|
||||
is_security = 1
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ffdddd"
|
||||
idtype = /obj/item/weapon/card/id/hos
|
||||
req_admin_notify = 1
|
||||
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court,
|
||||
access_forensics_lockers, access_pilot, access_morgue, access_maint_tunnels, access_all_personal_lockers,
|
||||
@@ -20,30 +19,32 @@
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
outfit = /datum/outfit/job/hos
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/hos/alt(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/hos(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hos(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black/hos(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/HoS(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
/datum/outfit/job/hos
|
||||
name = "Head of Security"
|
||||
jobtype = /datum/job/hos
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/head_of_security
|
||||
suit = /obj/item/clothing/suit/armor/hos
|
||||
gloves = /obj/item/clothing/gloves/color/black/hos
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
head = /obj/item/clothing/head/HoS
|
||||
l_ear = /obj/item/device/radio/headset/heads/hos/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/hos
|
||||
suit_store = /obj/item/weapon/gun/energy/gun
|
||||
pda = /obj/item/device/pda/heads/hos
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/restraints/handcuffs = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/security
|
||||
|
||||
|
||||
|
||||
@@ -56,37 +57,37 @@
|
||||
is_security = 1
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#ffeeee"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_weapons)
|
||||
minimal_player_age = 21
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
outfit = /datum/outfit/job/warden
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/warden(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/warden(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
// H.equip_or_collect(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
/datum/outfit/job/warden
|
||||
name = "Warden"
|
||||
jobtype = /datum/job/warden
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/warden
|
||||
suit = /obj/item/clothing/suit/armor/vest/warden
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
head = /obj/item/clothing/head/warden
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/security
|
||||
l_pocket = /obj/item/device/flash
|
||||
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
|
||||
pda = /obj/item/device/pda/warden
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/restraints/handcuffs = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/security
|
||||
|
||||
|
||||
|
||||
@@ -100,50 +101,53 @@
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#ffeeee"
|
||||
alt_titles = list("Forensic Technician")
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_weapons)
|
||||
minimal_access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_weapons)
|
||||
alt_titles = list("Forensic Technician")
|
||||
minimal_player_age = 14
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/det(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/detective(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/toy/crayon/white(H), slot_l_store)
|
||||
/* var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H)
|
||||
CIG.light("")
|
||||
H.equip_or_collect(CIG, slot_wear_mask) */
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/noir(H),slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
if(H.mind.role_alt_title && H.mind.role_alt_title == "Forensic Technician")
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/det_suit/forensics/blue(H), slot_wear_suit)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/det_suit(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/det_hat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/weapon/lighter/zippo(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/detective_scanner(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
outfit = /datum/outfit/job/detective
|
||||
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
H.mutations += SOBER
|
||||
H.check_mutations = 1
|
||||
return 1
|
||||
/datum/outfit/job/detective
|
||||
name = "Detective"
|
||||
jobtype = /datum/job/detective
|
||||
|
||||
uniform = /obj/item/clothing/under/det
|
||||
suit = /obj/item/clothing/suit/storage/det_suit
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/det_hat
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/noir
|
||||
id = /obj/item/weapon/card/id/security
|
||||
l_pocket = /obj/item/toy/crayon/white
|
||||
r_pocket = /obj/item/weapon/lighter/zippo
|
||||
pda = /obj/item/device/pda/detective
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/evidence = 1,
|
||||
/obj/item/device/detective_scanner = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
/datum/outfit/job/detective/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H.mind.role_alt_title)
|
||||
switch(H.mind.role_alt_title)
|
||||
if("Forensic Technician")
|
||||
suit = /obj/item/clothing/suit/storage/det_suit/forensics/blue
|
||||
head = null
|
||||
|
||||
/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
H.mutations += SOBER
|
||||
H.check_mutations = 1
|
||||
|
||||
/datum/job/officer
|
||||
title = "Security Officer"
|
||||
@@ -154,34 +158,38 @@
|
||||
is_security = 1
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#ffeeee"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons)
|
||||
minimal_player_age = 14
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/security(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/security(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/officer
|
||||
|
||||
/datum/outfit/job/officer
|
||||
name = "Security Officer"
|
||||
jobtype = /datum/job/officer
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/security
|
||||
suit = /obj/item/clothing/suit/armor/vest/security
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
head = /obj/item/clothing/head/helmet
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
id = /obj/item/weapon/card/id/security
|
||||
l_pocket = /obj/item/device/flash
|
||||
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
|
||||
pda = /obj/item/device/pda/security
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/restraints/handcuffs = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/security
|
||||
|
||||
|
||||
|
||||
/datum/job/brigdoc
|
||||
title = "Brig Physician"
|
||||
@@ -192,30 +200,31 @@
|
||||
is_security = 1
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#ffeeee"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||
minimal_access = list(access_medical, access_morgue, access_surgery, access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels)
|
||||
outfit = /datum/outfit/job/brigdoc
|
||||
|
||||
/datum/outfit/job/brigdoc
|
||||
name = "Brig Physician"
|
||||
jobtype = /datum/job/brigdoc
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/security/brigphys
|
||||
suit = /obj/item/clothing/suit/storage/fr_jacket
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/health/health_advanced
|
||||
id = /obj/item/weapon/card/id/security
|
||||
suit_store = /obj/item/device/flashlight/pen
|
||||
l_hand = /obj/item/weapon/storage/firstaid/adv
|
||||
pda = /obj/item/device/pda/medical
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/medic
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_med
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/medical
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/security/brigphys(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/fr_jacket(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/health/health_advanced, slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
|
||||
/datum/job/pilot
|
||||
title = "Security Pod Pilot"
|
||||
@@ -226,28 +235,31 @@
|
||||
is_security = 1
|
||||
supervisors = "the head of security"
|
||||
selection_color = "#ffeeee"
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_pilot, access_external_airlocks)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons, access_pilot, access_external_airlocks)
|
||||
minimal_player_age = 7
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/security/pod_pilot(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/jacket/pilot(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/pilot
|
||||
|
||||
/datum/outfit/job/pilot
|
||||
name = "Security Pod Pilot"
|
||||
jobtype = /datum/job/pilot
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/security/pod_pilot
|
||||
suit = /obj/item/clothing/suit/jacket/pilot
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
id = /obj/item/weapon/card/id/security
|
||||
l_pocket = /obj/item/device/flash
|
||||
suit_store = /obj/item/weapon/gun/energy/gun/advtaser
|
||||
pda = /obj/item/device/pda/security
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/restraints/handcuffs = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_sec
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/security
|
||||
box = /obj/item/weapon/storage/box/engineer
|
||||
@@ -11,9 +11,9 @@
|
||||
exp_requirements = 1200
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
/datum/job/ai/equip(mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return 0
|
||||
|
||||
/datum/job/ai/is_position_available()
|
||||
return (empty_playable_ai_cores.len != 0)
|
||||
@@ -32,6 +32,7 @@
|
||||
exp_type = EXP_TYPE_CREW
|
||||
alt_titles = list("Android", "Robot")
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
return 1
|
||||
/datum/job/cyborg/equip(mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return 0
|
||||
return H.Robotize()
|
||||
+137
-130
@@ -7,7 +7,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
spawn_positions = 1
|
||||
supervisors = "Nanotrasen officials"
|
||||
selection_color = "#ccccff"
|
||||
idtype = /obj/item/weapon/card/id/gold
|
||||
req_admin_notify = 1
|
||||
is_command = 1
|
||||
access = list() //See get_access()
|
||||
@@ -15,36 +14,46 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
minimal_player_age = 30
|
||||
exp_requirements = 1200
|
||||
exp_type = EXP_TYPE_CREW
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/captain/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/captain(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H)
|
||||
outfit = /datum/outfit/job/captain
|
||||
|
||||
/datum/job/captain/get_access()
|
||||
return get_all_accesses()
|
||||
|
||||
/datum/job/captain/announce(mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
captain_announcement.Announce("All hands, Captain [H.real_name] on deck!")
|
||||
callHook("captain_spawned", list("captain" = H))
|
||||
|
||||
/datum/outfit/job/captain
|
||||
name = "Captain"
|
||||
jobtype = /datum/job/captain
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/captain
|
||||
suit = /obj/item/clothing/suit/armor/vest/capcarapace
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/caphat
|
||||
l_ear = /obj/item/device/radio/headset/heads/captain/alt
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
id = /obj/item/weapon/card/id/gold
|
||||
pda = /obj/item/device/pda/captain
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/ids = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/captain
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_cap
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/captain
|
||||
|
||||
/datum/outfit/job/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H && H.w_uniform)
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
var/obj/item/clothing/accessory/medal/gold/captain/M = new /obj/item/clothing/accessory/medal/gold/captain(U)
|
||||
U.accessories += M
|
||||
M.on_attached(U)
|
||||
H.equip_or_collect(U, slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/captain(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/caphat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/ids(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
captain_announcement.Announce("All hands, Captain [H.real_name] on deck!")
|
||||
callHook("captain_spawned", list("captain" = H))
|
||||
return 1
|
||||
|
||||
get_access()
|
||||
return get_all_accesses()
|
||||
|
||||
|
||||
|
||||
@@ -56,7 +65,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
spawn_positions = 1
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ddddff"
|
||||
idtype = /obj/item/weapon/card/id/silver
|
||||
req_admin_notify = 1
|
||||
is_command = 1
|
||||
minimal_player_age = 21
|
||||
@@ -75,22 +83,25 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
|
||||
access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_mineral_storeroom)
|
||||
|
||||
outfit = /datum/outfit/job/hop
|
||||
|
||||
/datum/outfit/job/hop
|
||||
name = "Head of Personnel"
|
||||
jobtype = /datum/job/hop
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/head_of_personnel
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/hopcap
|
||||
l_ear = /obj/item/device/radio/headset/heads/hop
|
||||
id = /obj/item/weapon/card/id/silver
|
||||
pda = /obj/item/device/pda/heads/hop
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/ids = 1,
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
implants = list()
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/hopcap(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/hop(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/ids(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
|
||||
/datum/job/nanotrasenrep
|
||||
@@ -101,7 +112,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
spawn_positions = 1
|
||||
supervisors = "the command staff"
|
||||
selection_color = "#ddddff"
|
||||
idtype = /obj/item/weapon/card/id/nanotrasen
|
||||
req_admin_notify = 1
|
||||
is_command = 1
|
||||
minimal_player_age = 21
|
||||
@@ -118,25 +128,26 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
|
||||
access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_ntrep)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/ntrep(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/ntcane(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/lighter/zippo/nt_rep(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/ntrep(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/ntrep(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/ntrep(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/nanotrasenrep
|
||||
|
||||
/datum/outfit/job/nanotrasenrep
|
||||
name = "Nanotrasen Representative"
|
||||
jobtype = /datum/job/nanotrasenrep
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/ntrep
|
||||
suit = /obj/item/clothing/suit/storage/ntrep
|
||||
shoes = /obj/item/clothing/shoes/centcom
|
||||
l_ear = /obj/item/device/radio/headset/heads/ntrep
|
||||
id = /obj/item/weapon/card/id/nanotrasen
|
||||
l_pocket = /obj/item/weapon/lighter/zippo/nt_rep
|
||||
pda = /obj/item/device/pda/heads/ntrep
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/melee/classic_baton/ntcane = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
|
||||
|
||||
/datum/job/blueshield
|
||||
title = "Blueshield"
|
||||
@@ -146,7 +157,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
spawn_positions = 1
|
||||
supervisors = "the Nanotrasen representative"
|
||||
selection_color = "#ddddff"
|
||||
idtype = /obj/item/weapon/card/id/nanotrasen
|
||||
req_admin_notify = 1
|
||||
is_command = 1
|
||||
minimal_player_age = 21
|
||||
@@ -159,27 +169,29 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
minimal_access = list(access_forensics_lockers, access_sec_doors, access_medical, access_construction, access_engine, access_maint_tunnels, access_research,
|
||||
access_RC_announce, access_keycard_auth, access_heads, access_blueshield, access_weapons)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/blueshield/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/security(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/combat(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/health/health_advanced, slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/blueshield(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/blueshield(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/blueshield(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/deathimp(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/gun/blueshield(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/blueshield
|
||||
|
||||
/datum/outfit/job/blueshield
|
||||
name = "Blueshield"
|
||||
jobtype = /datum/job/blueshield
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/blueshield
|
||||
suit = /obj/item/clothing/suit/armor/vest/blueshield
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
l_ear = /obj/item/device/radio/headset/heads/blueshield/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/health/health_advanced
|
||||
id = /obj/item/weapon/card/id/nanotrasen
|
||||
pda = /obj/item/device/pda/heads/blueshield
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/deathimp = 1,
|
||||
/obj/item/weapon/gun/energy/gun/blueshield = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/security
|
||||
|
||||
|
||||
/datum/job/judge
|
||||
title = "Magistrate"
|
||||
@@ -189,7 +201,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
spawn_positions = 1
|
||||
supervisors = "the Nanotrasen Supreme Court"
|
||||
selection_color = "#ddddff"
|
||||
idtype = /obj/item/weapon/card/id/nanotrasen
|
||||
req_admin_notify = 1
|
||||
is_legal = 1
|
||||
minimal_player_age = 30
|
||||
@@ -201,27 +212,28 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_magistrate)
|
||||
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_lawyer, access_magistrate)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/heads/magistrate/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/suit_jacket/really_black(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/judgerobe(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/powdered_wig(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/device/pda/heads/magistrate(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
outfit = /datum/outfit/job/judge
|
||||
|
||||
/datum/outfit/job/judge
|
||||
name = "Magistrate"
|
||||
jobtype = /datum/job/judge
|
||||
|
||||
uniform = /obj/item/clothing/under/suit_jacket/really_black
|
||||
suit = /obj/item/clothing/suit/judgerobe
|
||||
shoes = /obj/item/clothing/shoes/centcom
|
||||
head = /obj/item/clothing/head/powdered_wig
|
||||
l_ear = /obj/item/device/radio/headset/heads/magistrate/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/nanotrasen
|
||||
l_pocket = /obj/item/device/flash
|
||||
pda = /obj/item/device/pda/heads/magistrate
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/melee/classic_baton/telescopic = 1
|
||||
)
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
|
||||
|
||||
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
|
||||
/datum/job/lawyer
|
||||
@@ -239,26 +251,21 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
minimal_player_age = 30
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
idtype = /obj/item/weapon/card/id/security
|
||||
outfit = /datum/outfit/job/lawyer
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec/alt(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/device/pda/lawyer(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/device/flash(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
return 1
|
||||
/datum/outfit/job/lawyer
|
||||
name = "Internal Affairs Agent"
|
||||
jobtype = /datum/job/lawyer
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/internalaffairs
|
||||
suit = /obj/item/clothing/suit/storage/internalaffairs
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_ear = /obj/item/device/radio/headset/headset_sec/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
id = /obj/item/weapon/card/id/security
|
||||
l_pocket = /obj/item/device/laser_pointer
|
||||
r_pocket = /obj/item/device/flash
|
||||
l_hand = /obj/item/weapon/storage/briefcase
|
||||
pda = /obj/item/device/pda/lawyer
|
||||
|
||||
implants = list(/obj/item/weapon/implant/loyalty)
|
||||
|
||||
+192
-194
@@ -10,29 +10,31 @@
|
||||
selection_color = "#dddddd"
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons, access_mineral_storeroom)
|
||||
minimal_access = list(access_bar, access_maint_tunnels, access_weapons, access_mineral_storeroom)
|
||||
outfit = /datum/outfit/job/bartender
|
||||
|
||||
/datum/outfit/job/bartender
|
||||
name = "Bartender"
|
||||
jobtype = /datum/job/bartender
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/reagent(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/bar(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/belt/bandolier/full(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/toy/russian_revolver(H), slot_in_backpack)
|
||||
uniform = /obj/item/clothing/under/rank/bartender
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
belt = /obj/item/weapon/storage/belt/bandolier/full
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
pda = /obj/item/device/pda/bar
|
||||
backpack_contents = list(
|
||||
/obj/item/toy/russian_revolver = 1
|
||||
)
|
||||
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
H.mutations += SOBER
|
||||
H.check_mutations = 1
|
||||
/datum/outfit/job/bartender/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
return 1
|
||||
H.dna.SetSEState(SOBERBLOCK,1)
|
||||
H.mutations += SOBER
|
||||
H.check_mutations = 1
|
||||
|
||||
|
||||
|
||||
@@ -48,22 +50,18 @@
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue)
|
||||
minimal_access = list(access_kitchen, access_maint_tunnels)
|
||||
alt_titles = list("Cook","Culinary Artist","Butcher")
|
||||
outfit = /datum/outfit/job/chef
|
||||
|
||||
/datum/outfit/job/chef
|
||||
name = "Chef"
|
||||
jobtype = /datum/job/chef
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/chef(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/chefhat(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chef(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/chef
|
||||
suit = /obj/item/clothing/suit/chef
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
head = /obj/item/clothing/head/chefhat
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
pda = /obj/item/device/pda/chef
|
||||
|
||||
|
||||
|
||||
@@ -79,23 +77,23 @@
|
||||
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue)
|
||||
minimal_access = list(access_hydroponics, access_morgue, access_maint_tunnels)
|
||||
alt_titles = list("Hydroponicist", "Botanical Researcher")
|
||||
outfit = /datum/outfit/job/hydro
|
||||
|
||||
/datum/outfit/job/hydro
|
||||
name = "Botanist"
|
||||
jobtype = /datum/job/hydro
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/botany(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_hyd(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/apron(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/device/plant_analyzer(H), slot_s_store)
|
||||
H.equip_or_collect(new /obj/item/device/pda/botanist(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/hydroponics
|
||||
suit = /obj/item/clothing/suit/apron
|
||||
gloves = /obj/item/clothing/gloves/botanic_leather
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
suit_store = /obj/item/device/plant_analyzer
|
||||
pda = /obj/item/device/pda/botanist
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/botany
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_hyd
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/hydro
|
||||
|
||||
|
||||
|
||||
@@ -109,25 +107,21 @@
|
||||
is_supply = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
idtype = /obj/item/weapon/card/id/supply
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
outfit = /datum/outfit/job/qm
|
||||
|
||||
/datum/outfit/job/qm
|
||||
name = "Quartermaster"
|
||||
jobtype = /datum/job/qm
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/quartermaster(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
H.equip_or_collect(new /obj/item/weapon/clipboard(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/cargo
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_ear = /obj/item/device/radio/headset/headset_cargo
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
id = /obj/item/weapon/card/id/supply
|
||||
l_hand = /obj/item/weapon/clipboard
|
||||
pda = /obj/item/device/pda/quartermaster
|
||||
|
||||
|
||||
|
||||
@@ -140,23 +134,19 @@
|
||||
is_supply = 1
|
||||
supervisors = "the quartermaster"
|
||||
selection_color = "#dddddd"
|
||||
idtype = /obj/item/weapon/card/id/supply
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting, access_mineral_storeroom)
|
||||
outfit = /datum/outfit/job/cargo_tech
|
||||
|
||||
/datum/outfit/job/cargo_tech
|
||||
name = "Cargo Technician"
|
||||
jobtype = /datum/job/cargo_tech
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/cargo(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/cargotech
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_cargo
|
||||
id = /obj/item/weapon/card/id/supply
|
||||
pda = /obj/item/device/pda/cargo
|
||||
|
||||
|
||||
|
||||
@@ -169,32 +159,30 @@
|
||||
is_supply = 1
|
||||
supervisors = "the quartermaster"
|
||||
selection_color = "#dddddd"
|
||||
idtype = /obj/item/weapon/card/id/supply
|
||||
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
|
||||
minimal_access = list(access_mining, access_mint, access_mining_station, access_mailsorting, access_maint_tunnels, access_mineral_storeroom)
|
||||
alt_titles = list("Spelunker")
|
||||
outfit = /datum/outfit/job/mining
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return 0
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_cargo/mining(H), slot_l_ear)
|
||||
switch(H.backbag)
|
||||
if(2)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
|
||||
if(3)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
|
||||
if(4)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/fingerless(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/device/pda/shaftminer(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/workboots(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/patch/styptic(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/device/flashlight/seclite(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/mining_voucher(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
/datum/outfit/job/mining
|
||||
name = "Shaft Miner"
|
||||
jobtype = /datum/job/mining
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/miner
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
l_ear = /obj/item/device/radio/headset/headset_cargo/mining
|
||||
id = /obj/item/weapon/card/id/supply
|
||||
l_pocket = /obj/item/weapon/reagent_containers/food/pill/patch/styptic
|
||||
r_pocket = /obj/item/device/flashlight/seclite
|
||||
pda = /obj/item/device/pda/shaftminer
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/mining_voucher = 1,
|
||||
/obj/item/weapon/storage/bag/ore = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/industrial
|
||||
satchel = /obj/item/weapon/storage/backpack/satchel_eng
|
||||
|
||||
|
||||
|
||||
@@ -209,40 +197,51 @@
|
||||
is_service = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
idtype = /obj/item/weapon/card/id/clown
|
||||
access = list(access_clown, access_theatre, access_maint_tunnels)
|
||||
minimal_access = list(access_clown, access_theatre, access_maint_tunnels)
|
||||
outfit = /datum/outfit/job/clown
|
||||
|
||||
/datum/outfit/job/clown
|
||||
name = "Clown"
|
||||
jobtype = /datum/job/clown
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/clown(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
if(H.gender == FEMALE)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/sexyclown(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/sexyclown(H), slot_w_uniform)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/clown(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/clown_shoes(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/clown(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/bikehorn(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/stamp/clown(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/toy/crayon/rainbow(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/fancy/crayons(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack)
|
||||
if(H.get_species() == "Machine")
|
||||
var/obj/item/organ/internal/cyberimp/brain/clown_voice/implant
|
||||
implant = new
|
||||
implant.insert(H)
|
||||
H.mutations.Add(CLUMSY)
|
||||
H.dna.SetSEState(COMICBLOCK,1,1)
|
||||
genemutcheck(H,COMICBLOCK,null,MUTCHK_FORCED)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/rank/clown
|
||||
shoes = /obj/item/clothing/shoes/clown_shoes
|
||||
mask = /obj/item/clothing/mask/gas/clown_hat
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
id = /obj/item/weapon/card/id/clown
|
||||
pda = /obj/item/device/pda/clown
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1,
|
||||
/obj/item/weapon/bikehorn = 1,
|
||||
/obj/item/weapon/stamp/clown = 1,
|
||||
/obj/item/toy/crayon/rainbow = 1,
|
||||
/obj/item/weapon/storage/fancy/crayons = 1,
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower = 1
|
||||
)
|
||||
|
||||
backpack = /obj/item/weapon/storage/backpack/clown
|
||||
satchel = /obj/item/weapon/storage/backpack/clown
|
||||
dufflebag = /obj/item/weapon/storage/backpack/duffel/clown
|
||||
|
||||
/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H.gender == FEMALE)
|
||||
mask = /obj/item/clothing/mask/gas/sexyclown
|
||||
uniform = /obj/item/clothing/under/sexyclown
|
||||
|
||||
/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
if(H.get_species() == "Machine")
|
||||
var/obj/item/organ/internal/cyberimp/brain/clown_voice/implant = new
|
||||
implant.insert(H)
|
||||
|
||||
H.mutations.Add(CLUMSY)
|
||||
H.dna.SetSEState(COMICBLOCK, 1, 1)
|
||||
genemutcheck(H, COMICBLOCK, null, MUTCHK_FORCED)
|
||||
|
||||
|
||||
/datum/job/mime
|
||||
@@ -254,35 +253,45 @@
|
||||
is_service = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
idtype = /obj/item/weapon/card/id/mime
|
||||
access = list(access_mime, access_theatre, access_maint_tunnels)
|
||||
minimal_access = list(access_mime, access_theatre, access_maint_tunnels)
|
||||
outfit = /datum/outfit/job/mime
|
||||
|
||||
/datum/outfit/job/mime
|
||||
name = "Mime"
|
||||
jobtype = /datum/job/mime
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/backpack/mime(H), slot_back)
|
||||
if(H.gender == FEMALE)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/sexymime(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/sexymime(H), slot_wear_mask)
|
||||
else
|
||||
H.equip_or_collect(new /obj/item/clothing/under/mime(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/mime(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/gloves/color/white(H), slot_gloves)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/beret(H), slot_head)
|
||||
H.equip_or_collect(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit)
|
||||
H.equip_or_collect(new /obj/item/toy/crayon/mime(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/cane(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
if(H.mind)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
|
||||
H.mind.miming = 1
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/mime
|
||||
suit = /obj/item/clothing/suit/suspenders
|
||||
back = /obj/item/weapon/storage/backpack/mime
|
||||
gloves = /obj/item/clothing/gloves/color/white
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
head = /obj/item/clothing/head/beret
|
||||
mask = /obj/item/clothing/mask/gas/mime
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
id = /obj/item/weapon/card/id/mime
|
||||
pda = /obj/item/device/pda/mime
|
||||
backpack_contents = list(
|
||||
/obj/item/toy/crayon/mime = 1,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing = 1,
|
||||
/obj/item/weapon/cane = 1
|
||||
)
|
||||
|
||||
/datum/outfit/job/mime/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(H.gender == FEMALE)
|
||||
uniform = /obj/item/clothing/under/sexymime
|
||||
suit = /obj/item/clothing/mask/gas/sexymime
|
||||
|
||||
/datum/outfit/job/mime/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
if(H.mind)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
|
||||
H.mind.miming = 1
|
||||
|
||||
|
||||
|
||||
@@ -298,21 +307,16 @@
|
||||
access = list(access_janitor, access_maint_tunnels)
|
||||
minimal_access = list(access_janitor, access_maint_tunnels)
|
||||
alt_titles = list("Custodial Technician")
|
||||
outfit = /datum/outfit/job/janitor
|
||||
|
||||
/datum/outfit/job/janitor
|
||||
name = "Janitor"
|
||||
jobtype = /datum/job/janitor
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/device/pda/janitor(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
uniform = /obj/item/clothing/under/rank/janitor
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
pda = /obj/item/device/pda/janitor
|
||||
|
||||
|
||||
//More or less assistants
|
||||
@@ -328,24 +332,19 @@
|
||||
access = list(access_library, access_maint_tunnels)
|
||||
minimal_access = list(access_library, access_maint_tunnels)
|
||||
alt_titles = list("Journalist")
|
||||
outfit = /datum/outfit/job/librarian
|
||||
|
||||
/datum/outfit/job/librarian
|
||||
name = "Librarian"
|
||||
jobtype = /datum/job/librarian
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/librarian(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/bag/books(H), slot_l_hand)
|
||||
H.equip_or_collect(new /obj/item/weapon/barcodescanner(H), slot_r_store)
|
||||
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/suit_jacket/red
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
l_pocket = /obj/item/device/laser_pointer
|
||||
r_pocket = /obj/item/weapon/barcodescanner
|
||||
l_hand = /obj/item/weapon/storage/bag/books
|
||||
pda = /obj/item/device/pda/librarian
|
||||
|
||||
/datum/job/barber
|
||||
title = "Barber"
|
||||
@@ -359,18 +358,17 @@
|
||||
alt_titles = list("Hair Stylist","Beautician")
|
||||
access = list(access_maint_tunnels)
|
||||
minimal_access = list(access_maint_tunnels)
|
||||
outfit = /datum/outfit/job/barber
|
||||
|
||||
/datum/outfit/job/barber
|
||||
name = "Barber"
|
||||
jobtype = /datum/job/barber
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/barber(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/barber(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/lip_stick(H), slot_in_backpack)
|
||||
return 1
|
||||
uniform = /obj/item/clothing/under/barber
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
backpack_contents = list(
|
||||
/obj/item/clothing/shoes/black = 1,
|
||||
/obj/item/weapon/storage/box/lip_stick = 1,
|
||||
/obj/item/weapon/storage/box/barber = 1
|
||||
)
|
||||
|
||||
@@ -11,149 +11,154 @@
|
||||
access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels)
|
||||
minimal_access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels)
|
||||
|
||||
outfit = /datum/outfit/job/chaplain
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT
|
||||
H.equip_or_collect(B, slot_l_hand)
|
||||
switch(H.backbag)
|
||||
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
|
||||
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
|
||||
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
|
||||
H.equip_or_collect(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
|
||||
H.equip_or_collect(new /obj/item/device/pda/chaplain(H), slot_wear_pda)
|
||||
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_in_backpack)
|
||||
H.equip_or_collect(new /obj/item/device/camera/spooky(H), slot_in_backpack)
|
||||
spawn(0)
|
||||
var/religion_name = "Christianity"
|
||||
var/new_religion = sanitize(copytext(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name),1,MAX_NAME_LEN))
|
||||
/datum/outfit/job/chaplain
|
||||
name = "Chaplain"
|
||||
jobtype = /datum/job/chaplain
|
||||
|
||||
if(!new_religion)
|
||||
new_religion = religion_name
|
||||
uniform = /obj/item/clothing/under/rank/chaplain
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/headset_service
|
||||
pda = /obj/item/device/pda/chaplain
|
||||
backpack_contents = list(
|
||||
/obj/item/device/camera/spooky = 1
|
||||
)
|
||||
|
||||
switch(lowertext(new_religion))
|
||||
if("christianity")
|
||||
B.name = pick("The Holy Bible")
|
||||
if("satanism")
|
||||
B.name = "The Unholy Bible"
|
||||
if("cthulu")
|
||||
B.name = "The Necronomicon"
|
||||
if("islam")
|
||||
B.name = "Quran"
|
||||
if("scientology")
|
||||
B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
|
||||
if("chaos")
|
||||
B.name = "The Book of Lorgar"
|
||||
if("imperium")
|
||||
B.name = "Uplifting Primer"
|
||||
if("toolboxia")
|
||||
B.name = "Toolbox Manifesto Robusto"
|
||||
if("homosexuality")
|
||||
B.name = "Guys Gone Wild"
|
||||
if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
|
||||
B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
|
||||
H.setBrainLoss(99) // starts off retarded as fuck
|
||||
if("science")
|
||||
B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
|
||||
/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H)
|
||||
|
||||
spawn()
|
||||
var/religion_name = "Christianity"
|
||||
var/new_religion = sanitize(copytext(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name),1,MAX_NAME_LEN))
|
||||
|
||||
if(!new_religion)
|
||||
new_religion = religion_name
|
||||
|
||||
switch(lowertext(new_religion))
|
||||
if("christianity")
|
||||
B.name = pick("The Holy Bible")
|
||||
if("satanism")
|
||||
B.name = "The Unholy Bible"
|
||||
if("cthulu")
|
||||
B.name = "The Necronomicon"
|
||||
if("islam")
|
||||
B.name = "Quran"
|
||||
if("scientology")
|
||||
B.name = pick("The Biography of L. Ron Hubbard","Dianetics")
|
||||
if("chaos")
|
||||
B.name = "The Book of Lorgar"
|
||||
if("imperium")
|
||||
B.name = "Uplifting Primer"
|
||||
if("toolboxia")
|
||||
B.name = "Toolbox Manifesto Robusto"
|
||||
if("homosexuality")
|
||||
B.name = "Guys Gone Wild"
|
||||
if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks")
|
||||
B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition")
|
||||
H.setBrainLoss(99) // starts off retarded as fuck
|
||||
if("science")
|
||||
B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition")
|
||||
else
|
||||
B.name = "The Holy Book of [new_religion]"
|
||||
feedback_set_details("religion_name","[new_religion]")
|
||||
|
||||
var/deity_name = "Space Jesus"
|
||||
var/new_deity = sanitize(copytext(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name),1,MAX_NAME_LEN))
|
||||
|
||||
if((length(new_deity) == 0) || (new_deity == "Space Jesus") )
|
||||
new_deity = deity_name
|
||||
B.deity_name = new_deity
|
||||
|
||||
var/accepted = 0
|
||||
var/outoftime = 0
|
||||
spawn(200) // 20 seconds to choose
|
||||
outoftime = 1
|
||||
var/new_book_style = "Bible"
|
||||
|
||||
while(!accepted)
|
||||
if(!B) break // prevents possible runtime errors
|
||||
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon", "Greentext")
|
||||
switch(new_book_style)
|
||||
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.dir = 4
|
||||
if("Scrapbook")
|
||||
B.icon_state = "scrapbook"
|
||||
B.item_state = "scrapbook"
|
||||
if("Creeper")
|
||||
B.icon_state = "creeper"
|
||||
B.item_state = "syringe_kit"
|
||||
if("White Bible")
|
||||
B.icon_state = "white"
|
||||
B.item_state = "syringe_kit"
|
||||
if("Holy Light")
|
||||
B.icon_state = "holylight"
|
||||
B.item_state = "syringe_kit"
|
||||
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.dir = 10
|
||||
if("Tome")
|
||||
B.icon_state = "tome"
|
||||
B.item_state = "syringe_kit"
|
||||
if("The King in Yellow")
|
||||
B.icon_state = "kingyellow"
|
||||
B.item_state = "kingyellow"
|
||||
if("Ithaqua")
|
||||
B.icon_state = "ithaqua"
|
||||
B.item_state = "ithaqua"
|
||||
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.dir = 8
|
||||
if("the bible melts")
|
||||
B.icon_state = "melted"
|
||||
B.item_state = "melted"
|
||||
if("Necronomicon")
|
||||
B.icon_state = "necronomicon"
|
||||
B.item_state = "necronomicon"
|
||||
if("Greentext")
|
||||
B.icon_state = "greentext"
|
||||
B.item_state = "greentext"
|
||||
else
|
||||
B.name = "The Holy Book of [new_religion]"
|
||||
feedback_set_details("religion_name","[new_religion]")
|
||||
// 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.dir = 2
|
||||
|
||||
spawn(1)
|
||||
var/deity_name = "Space Jesus"
|
||||
var/new_deity = sanitize(copytext(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name),1,MAX_NAME_LEN))
|
||||
H.update_inv_l_hand() // so that it updates the bible's item_state in his hand
|
||||
|
||||
if((length(new_deity) == 0) || (new_deity == "Space Jesus") )
|
||||
new_deity = deity_name
|
||||
B.deity_name = new_deity
|
||||
|
||||
var/accepted = 0
|
||||
var/outoftime = 0
|
||||
spawn(200) // 20 seconds to choose
|
||||
outoftime = 1
|
||||
var/new_book_style = "Bible"
|
||||
|
||||
while(!accepted)
|
||||
if(!B) break // prevents possible runtime errors
|
||||
new_book_style = input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon", "Greentext")
|
||||
switch(new_book_style)
|
||||
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.dir = 4
|
||||
if("Scrapbook")
|
||||
B.icon_state = "scrapbook"
|
||||
B.item_state = "scrapbook"
|
||||
if("Creeper")
|
||||
B.icon_state = "creeper"
|
||||
B.item_state = "syringe_kit"
|
||||
if("White Bible")
|
||||
B.icon_state = "white"
|
||||
B.item_state = "syringe_kit"
|
||||
if("Holy Light")
|
||||
B.icon_state = "holylight"
|
||||
B.item_state = "syringe_kit"
|
||||
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.dir = 10
|
||||
if("Tome")
|
||||
B.icon_state = "tome"
|
||||
B.item_state = "syringe_kit"
|
||||
if("The King in Yellow")
|
||||
B.icon_state = "kingyellow"
|
||||
B.item_state = "kingyellow"
|
||||
if("Ithaqua")
|
||||
B.icon_state = "ithaqua"
|
||||
B.item_state = "ithaqua"
|
||||
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.dir = 8
|
||||
if("the bible melts")
|
||||
B.icon_state = "melted"
|
||||
B.item_state = "melted"
|
||||
if("Necronomicon")
|
||||
B.icon_state = "necronomicon"
|
||||
B.item_state = "necronomicon"
|
||||
if("Greentext")
|
||||
B.icon_state = "greentext"
|
||||
B.item_state = "greentext"
|
||||
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.dir = 2
|
||||
|
||||
H.update_inv_l_hand() // so that it updates the bible's item_state in his hand
|
||||
|
||||
switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No"))
|
||||
if("Yes")
|
||||
switch(input(H,"Look at your bible - is this what you want?") in list("Yes","No"))
|
||||
if("Yes")
|
||||
accepted = 1
|
||||
if("No")
|
||||
if(outoftime)
|
||||
to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.")
|
||||
accepted = 1
|
||||
if("No")
|
||||
if(outoftime)
|
||||
to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.")
|
||||
accepted = 1
|
||||
|
||||
if(ticker)
|
||||
ticker.Bible_icon_state = B.icon_state
|
||||
ticker.Bible_item_state = B.item_state
|
||||
ticker.Bible_name = B.name
|
||||
ticker.Bible_deity_name = B.deity_name
|
||||
feedback_set_details("religion_deity","[new_deity]")
|
||||
feedback_set_details("religion_book","[new_book_style]")
|
||||
return 1
|
||||
if(ticker)
|
||||
ticker.Bible_icon_state = B.icon_state
|
||||
ticker.Bible_item_state = B.item_state
|
||||
ticker.Bible_name = B.name
|
||||
ticker.Bible_deity_name = B.deity_name
|
||||
feedback_set_details("religion_deity","[new_deity]")
|
||||
feedback_set_details("religion_book","[new_book_style]")
|
||||
|
||||
+505
-606
File diff suppressed because it is too large
Load Diff
@@ -13,13 +13,13 @@
|
||||
var/jtext
|
||||
for(var/client/C in clients)
|
||||
jtext = "No Job"
|
||||
if(C.mob.mind.assigned_role)
|
||||
if(C.mob.mind && C.mob.mind.assigned_role)
|
||||
theirjob = job_master.GetJob(C.mob.mind.assigned_role)
|
||||
if(theirjob)
|
||||
jtext = theirjob.title
|
||||
if(config.use_exp_restrictions && theirjob.exp_requirements && theirjob.exp_type)
|
||||
jtext += "<span class='warning'>*</span>"
|
||||
if(check_rights(R_ADMIN))
|
||||
if(check_rights(R_ADMIN, 0))
|
||||
pline = "<LI> [key_name_admin(C.mob)]: [jtext]: <A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_living() + "</a></LI>"
|
||||
else
|
||||
pline = "<LI> [key_name_mentor(C.mob)]: [jtext]: <A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_living() + "</a></LI>"
|
||||
|
||||
@@ -27,7 +27,7 @@ var/list/whitelist = list()
|
||||
to_chat(usr, "\red Unable to connect to whitelist database. Please try again later.<br>")
|
||||
return 0
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT job FROM [format_table_name("whitelist")] WHERE ckey='[M.key]'")
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT job FROM [format_table_name("whitelist")] WHERE ckey='[M.ckey]'")
|
||||
query.Execute()
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ var/list/whitelist = list()
|
||||
to_chat(usr, "\red Unable to connect to whitelist database. Please try again later.<br>")
|
||||
return 0
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT species FROM [format_table_name("whitelist")] WHERE ckey='[M.key]'")
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT species FROM [format_table_name("whitelist")] WHERE ckey='[M.ckey]'")
|
||||
query.Execute()
|
||||
|
||||
while(query.NextRow())
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
/datum/tlv/proc/get_danger_level(curval as num)
|
||||
if(max2 >=0 && curval>max2)
|
||||
return 2
|
||||
return ATMOS_ALARM_DANGER
|
||||
if(min2 >=0 && curval<min2)
|
||||
return 2
|
||||
return ATMOS_ALARM_DANGER
|
||||
if(max1 >=0 && curval>max1)
|
||||
return 1
|
||||
return ATMOS_ALARM_WARNING
|
||||
if(min1 >=0 && curval<min1)
|
||||
return 1
|
||||
return 0
|
||||
return ATMOS_ALARM_WARNING
|
||||
return ATMOS_ALARM_NONE
|
||||
|
||||
/datum/tlv/proc/CopyFrom(datum/tlv/other)
|
||||
min2 = other.min2
|
||||
@@ -103,7 +103,7 @@
|
||||
var/screen = AALARM_SCREEN_MAIN
|
||||
var/area_uid
|
||||
var/area/alarm_area
|
||||
var/danger_level = 0
|
||||
var/danger_level = ATMOS_ALARM_NONE
|
||||
var/alarmActivated = 0 // Manually activated (independent from danger level)
|
||||
|
||||
var/buildstage = 2 //2 is built, 1 is building, 0 is frame.
|
||||
@@ -349,11 +349,11 @@
|
||||
return
|
||||
|
||||
switch(max(danger_level, alarm_area.atmosalm-1))
|
||||
if(0)
|
||||
if(ATMOS_ALARM_NONE)
|
||||
icon_state = "alarm0"
|
||||
if(1)
|
||||
if(ATMOS_ALARM_WARNING)
|
||||
icon_state = "alarm2" //yes, alarm2 is yellow alarm
|
||||
if(2)
|
||||
if(ATMOS_ALARM_DANGER)
|
||||
icon_state = "alarm1"
|
||||
|
||||
/obj/machinery/alarm/receive_signal(datum/signal/signal)
|
||||
@@ -670,21 +670,21 @@
|
||||
|
||||
/obj/machinery/alarm/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
var/data[0]
|
||||
var/list/href_list = state.href_list()
|
||||
|
||||
var/list/href_list = state.href_list(user)
|
||||
if(href_list)
|
||||
data["remote_connection"] = href_list["remote_connection"]
|
||||
data["remote_access"] = href_list["remote_access"]
|
||||
|
||||
data["name"] = sanitize(name)
|
||||
data["air"] = ui_air_status()
|
||||
data["alarmActivated"] = alarmActivated || danger_level == 2
|
||||
data["alarmActivated"] = alarmActivated || danger_level == ATMOS_ALARM_DANGER
|
||||
data["thresholds"] = generate_thresholds_menu()
|
||||
|
||||
// Locked when:
|
||||
// Not sent from atmos console AND
|
||||
// Not silicon AND locked.
|
||||
data["locked"] = is_locked(user,href_list)
|
||||
data["locked"] = !is_authenticated(user, href_list)
|
||||
data["rcon"] = rcon_setting
|
||||
data["target_temp"] = target_temperature - T0C
|
||||
data["atmos_alarm"] = alarm_area.atmosalm
|
||||
@@ -799,16 +799,6 @@
|
||||
else
|
||||
return !locked
|
||||
|
||||
/obj/machinery/alarm/proc/is_locked(mob/user as mob, href_list)
|
||||
if(user.can_admin_interact())
|
||||
return 0
|
||||
else if(is_auth_rcon(href_list))
|
||||
return 0
|
||||
else if(isAI(user) || isrobot(user))
|
||||
return 0
|
||||
else
|
||||
return locked
|
||||
|
||||
/obj/machinery/alarm/proc/is_auth_rcon(href_list)
|
||||
if(href_list && href_list["remote_connection"] && href_list["remote_access"])
|
||||
return 1
|
||||
@@ -914,15 +904,15 @@
|
||||
return 1
|
||||
|
||||
if(href_list["atmos_alarm"])
|
||||
if(alarm_area.atmosalert(2, src))
|
||||
apply_danger_level(2)
|
||||
if(alarm_area.atmosalert(ATMOS_ALARM_DANGER, src))
|
||||
apply_danger_level(ATMOS_ALARM_DANGER)
|
||||
alarmActivated = 1
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
if(href_list["atmos_reset"])
|
||||
if(alarm_area.atmosalert(0, src))
|
||||
apply_danger_level(0)
|
||||
if(alarm_area.atmosalert(ATMOS_ALARM_NONE, src))
|
||||
apply_danger_level(ATMOS_ALARM_NONE)
|
||||
alarmActivated = 0
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
@@ -75,11 +75,11 @@
|
||||
|
||||
/obj/machinery/autolathe/interact(mob/user)
|
||||
if(shocked && !(stat & NOPOWER))
|
||||
shock(user, 50)
|
||||
return
|
||||
if(shock(user, 50))
|
||||
return
|
||||
|
||||
if(panel_open)
|
||||
wires.Interact()
|
||||
wires.Interact(user)
|
||||
else
|
||||
ui_interact(user)
|
||||
|
||||
@@ -451,4 +451,4 @@
|
||||
else
|
||||
for(var/datum/design/D in files.known_designs)
|
||||
if("hacked" in D.category)
|
||||
files.known_designs -= D.id
|
||||
files.known_designs -= D.id
|
||||
|
||||
@@ -100,23 +100,23 @@ var/time_last_changed_position = 0
|
||||
set name = "Eject ID Card"
|
||||
set src in oview(1)
|
||||
|
||||
if(!usr || usr.stat || usr.lying) return
|
||||
if(usr.restrained())
|
||||
return
|
||||
|
||||
if(scan)
|
||||
to_chat(usr, "You remove \the [scan] from \the [src].")
|
||||
scan.loc = get_turf(src)
|
||||
if(!usr.get_active_hand())
|
||||
scan.forceMove(get_turf(src))
|
||||
if(!usr.get_active_hand() && Adjacent(usr))
|
||||
usr.put_in_hands(scan)
|
||||
scan = null
|
||||
else if(modify)
|
||||
to_chat(usr, "You remove \the [modify] from \the [src].")
|
||||
modify.loc = get_turf(src)
|
||||
if(!usr.get_active_hand())
|
||||
modify.forceMove(get_turf(src))
|
||||
if(!usr.get_active_hand() && Adjacent(usr))
|
||||
usr.put_in_hands(modify)
|
||||
modify = null
|
||||
else
|
||||
to_chat(usr, "There is nothing to remove from the console.")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/card/attackby(obj/item/weapon/card/id/id_card, mob/user, params)
|
||||
if(!istype(id_card))
|
||||
@@ -260,35 +260,35 @@ var/time_last_changed_position = 0
|
||||
data_core.manifest_modify(modify.registered_name, modify.assignment)
|
||||
modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")
|
||||
if(ishuman(usr))
|
||||
modify.loc = usr.loc
|
||||
if(!usr.get_active_hand())
|
||||
modify.forceMove(get_turf(src))
|
||||
if(!usr.get_active_hand() && Adjacent(usr))
|
||||
usr.put_in_hands(modify)
|
||||
modify = null
|
||||
else
|
||||
modify.loc = loc
|
||||
modify.forceMove(get_turf(src))
|
||||
modify = null
|
||||
else
|
||||
else if(Adjacent(usr))
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
modify = I
|
||||
|
||||
if("scan")
|
||||
if(scan)
|
||||
if(ishuman(usr))
|
||||
scan.loc = usr.loc
|
||||
if(!usr.get_active_hand())
|
||||
scan.forceMove(get_turf(src))
|
||||
if(!usr.get_active_hand() && Adjacent(usr))
|
||||
usr.put_in_hands(scan)
|
||||
scan = null
|
||||
else
|
||||
scan.loc = src.loc
|
||||
scan.forceMove(get_turf(src))
|
||||
scan = null
|
||||
else
|
||||
else if(Adjacent(usr))
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
scan = I
|
||||
|
||||
if("access")
|
||||
|
||||
@@ -29,10 +29,11 @@
|
||||
|
||||
|
||||
attackby(obj/item/weapon/O as obj, mob/user as mob, params)
|
||||
if(is_away_level(user.z))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the station!")
|
||||
return
|
||||
if(istype(O, /obj/item/weapon/aiModule))
|
||||
var/turf/T = get_turf(current)
|
||||
if(!atoms_share_level(T, src))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
|
||||
return
|
||||
var/datum/game_mode/nations/mode = get_nations_mode()
|
||||
if(!mode)
|
||||
var/obj/item/weapon/aiModule/M = O
|
||||
@@ -74,6 +75,10 @@
|
||||
|
||||
attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob, params)
|
||||
if(istype(module, /obj/item/weapon/aiModule))
|
||||
var/turf/T = get_turf(current)
|
||||
if(!atoms_share_level(T, src))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the target silicon!")
|
||||
return
|
||||
var/datum/game_mode/nations/mode = get_nations_mode()
|
||||
if(!mode)
|
||||
module.install(src)
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
#define MED_DATA_MAIN 1 // Main menu
|
||||
#define MED_DATA_R_LIST 2 // Record list
|
||||
#define MED_DATA_MAINT 3 // Records maintenance
|
||||
#define MED_DATA_RECORD 4 // Record
|
||||
#define MED_DATA_V_DATA 5 // Virus database
|
||||
#define MED_DATA_MEDBOT 6 // Medbot monitor
|
||||
|
||||
/obj/machinery/computer/med_data//TODO:SANITY
|
||||
name = "medical records console"
|
||||
@@ -13,486 +18,516 @@
|
||||
var/screen = null
|
||||
var/datum/data/record/active1 = null
|
||||
var/datum/data/record/active2 = null
|
||||
var/a_id = null
|
||||
var/temp = null
|
||||
var/printing = null
|
||||
|
||||
light_color = LIGHT_COLOR_DARKBLUE
|
||||
|
||||
/obj/machinery/computer/med_data/attack_ai(user as mob)
|
||||
return src.attack_hand(user)
|
||||
/obj/machinery/computer/med_data/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/card/id) && !scan)
|
||||
usr.drop_item()
|
||||
O.forceMove(src)
|
||||
scan = O
|
||||
ui_interact(user)
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/computer/med_data/attack_hand(mob/user as mob)
|
||||
/obj/machinery/computer/med_data/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
var/dat
|
||||
if(src.temp)
|
||||
dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=[UID()];temp=1'>Clear Screen</A>")
|
||||
else
|
||||
dat = text("Confirm Identity: <A href='?src=[UID()];scan=1'>[]</A><HR>", (src.scan ? text("[]", src.scan.name) : "----------"))
|
||||
if(src.authenticated)
|
||||
switch(src.screen)
|
||||
if(1.0)
|
||||
dat += {"
|
||||
<A href='?src=[UID()];search=1'>Search Records</A>
|
||||
<BR><A href='?src=[UID()];screen=2'>List Records</A>
|
||||
<BR>
|
||||
<BR><A href='?src=[UID()];screen=5'>Virus Database</A>
|
||||
<BR><A href='?src=[UID()];screen=6'>Medbot Tracking</A>
|
||||
<BR>
|
||||
<BR><A href='?src=[UID()];screen=3'>Record Maintenance</A>
|
||||
<BR><A href='?src=[UID()];logout=1'>{Log Out}</A><BR>
|
||||
"}
|
||||
if(2.0)
|
||||
dat += "<B>Record List</B>:<HR>"
|
||||
if(!isnull(data_core.general))
|
||||
for(var/datum/data/record/R in sortRecord(data_core.general))
|
||||
dat += text("<A href='?src=[UID()];d_rec=\ref[]'>[]: []</A><BR>", R, R.fields["id"], R.fields["name"])
|
||||
//Foreach goto(132)
|
||||
dat += "<HR><A href='?src=[UID()];screen=1'>Back</A>"
|
||||
if(3.0)
|
||||
dat += "<B>Records Maintenance</B><HR>\n<A href='?src=[UID()];back=1'>Backup To Disk</A><BR>\n<A href='?src=[UID()];u_load=1'>Upload From disk</A><BR>\n<A href='?src=[UID()];del_all=1'>Delete All Records</A><BR>\n<BR>\n<A href='?src=[UID()];screen=1'>Back</A>"
|
||||
if(4.0)
|
||||
dat += "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
if((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
|
||||
dat += "<table><tr><td>Name: [active1.fields["name"]] \
|
||||
ID: [active1.fields["id"]]<BR>\n \
|
||||
Sex: <A href='?src=[UID()];field=sex'>[active1.fields["sex"]]</A><BR>\n \
|
||||
Age: <A href='?src=[UID()];field=age'>[active1.fields["age"]]</A><BR>\n \
|
||||
Fingerprint: <A href='?src=[UID()];field=fingerprint'>[active1.fields["fingerprint"]]</A><BR>\n \
|
||||
Physical Status: <A href='?src=[UID()];field=p_stat'>[active1.fields["p_stat"]]</A><BR>\n \
|
||||
Mental Status: <A href='?src=[UID()];field=m_stat'>[active1.fields["m_stat"]]</A><BR></td><td align = center valign = top> \
|
||||
Photo:<br><img src=[active1.fields["photo-south"]] height=64 width=64 border=5> \
|
||||
<img src=[active1.fields["photo-west"]] height=64 width=64 border=5></td></tr></table>"
|
||||
else
|
||||
dat += "<B>General Record Lost!</B><BR>"
|
||||
if((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
|
||||
dat += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: <A href='?src=[UID()];field=b_type'>[]</A><BR>\nDNA: <A href='?src=[UID()];field=b_dna'>[]</A><BR>\n<BR>\nMinor Disabilities: <A href='?src=[UID()];field=mi_dis'>[]</A><BR>\nDetails: <A href='?src=[UID()];field=mi_dis_d'>[]</A><BR>\n<BR>\nMajor Disabilities: <A href='?src=[UID()];field=ma_dis'>[]</A><BR>\nDetails: <A href='?src=[UID()];field=ma_dis_d'>[]</A><BR>\n<BR>\nAllergies: <A href='?src=[UID()];field=alg'>[]</A><BR>\nDetails: <A href='?src=[UID()];field=alg_d'>[]</A><BR>\n<BR>\nCurrent Diseases: <A href='?src=[UID()];field=cdi'>[]</A> (per disease info placed in log/comment section)<BR>\nDetails: <A href='?src=[UID()];field=cdi_d'>[]</A><BR>\n<BR>\nImportant Notes:<BR>\n\t<A href='?src=[UID()];field=notes'>[]</A><BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"])
|
||||
var/counter = 1
|
||||
while(src.active2.fields[text("com_[]", counter)])
|
||||
dat += text("[]<BR><A href='?src=[UID()];del_c=[]'>Delete Entry</A><BR><BR>", src.active2.fields[text("com_[]", counter)], counter)
|
||||
counter++
|
||||
dat += "<A href='?src=[UID()];add_c=1'>Add Entry</A><BR><BR>"
|
||||
dat += "<A href='?src=[UID()];del_r=1'>Delete Record (Medical Only)</A><BR><BR>"
|
||||
else
|
||||
dat += "<B>Medical Record Lost!</B><BR>"
|
||||
dat += text("<A href='?src=[UID()];new=1'>New Record</A><BR><BR>")
|
||||
dat += "\n<A href='?src=[UID()];print_p=1'>Print Record</A><BR>\n<A href='?src=[UID()];screen=2'>Back</A><BR>"
|
||||
if(5.0)
|
||||
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
||||
for(var/Dt in typesof(/datum/disease/))
|
||||
var/datum/disease/Dis = new Dt(0)
|
||||
if(istype(Dis, /datum/disease/advance))
|
||||
continue // TODO (tm): Add advance diseases to the virus database which no one uses.
|
||||
if(!Dis.desc)
|
||||
continue
|
||||
dat += "<br><a href='?src=[UID()];vir=[Dt]'>[Dis.name]</a>"
|
||||
dat += "<br><a href='?src=[UID()];screen=1'>Back</a>"
|
||||
if(6.0)
|
||||
dat += "<center><b>Medical Robot Monitor</b></center>"
|
||||
dat += "<a href='?src=[UID()];screen=1'>Back</a>"
|
||||
dat += "<br><b>Medical Robots:</b>"
|
||||
var/bdat = null
|
||||
for(var/mob/living/simple_animal/bot/medbot/M in world)
|
||||
if(is_away_level(z))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the station!")
|
||||
return
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
if(M.z != src.z) continue //only find medibots on the same z-level as the computer
|
||||
var/turf/bl = get_turf(M)
|
||||
if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up
|
||||
bdat += "[M.name] - <b>\[[bl.x],[bl.y]\]</b> - [M.on ? "Online" : "Offline"]<br>"
|
||||
if((!isnull(M.reagent_glass)) && M.use_beaker)
|
||||
bdat += "Reservoir: \[[M.reagent_glass.reagents.total_volume]/[M.reagent_glass.reagents.maximum_volume]\]<br>"
|
||||
else
|
||||
bdat += "Using Internal Synthesizer.<br>"
|
||||
if(!bdat)
|
||||
dat += "<br><center>None detected</center>"
|
||||
else
|
||||
dat += "<br>[bdat]"
|
||||
/obj/machinery/computer/med_data/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "med_data.tmpl", name, 800, 380)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/med_data/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
var/data[0]
|
||||
data["temp"] = temp
|
||||
data["scan"] = scan ? scan.name : null
|
||||
data["authenticated"] = authenticated
|
||||
data["screen"] = screen
|
||||
if(authenticated)
|
||||
switch(screen)
|
||||
if(MED_DATA_R_LIST)
|
||||
if(!isnull(data_core.general))
|
||||
var/list/records = list()
|
||||
data["records"] = records
|
||||
for(var/datum/data/record/R in sortRecord(data_core.general))
|
||||
records[++records.len] = list("ref" = "\ref[R]", "id" = R.fields["id"], "name" = R.fields["name"])
|
||||
if(MED_DATA_RECORD)
|
||||
var/list/general = list()
|
||||
data["general"] = general
|
||||
if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
|
||||
var/list/fields = list()
|
||||
general["fields"] = fields
|
||||
fields[++fields.len] = list("field" = "Name:", "value" = active1.fields["name"], "edit" = null)
|
||||
fields[++fields.len] = list("field" = "ID:", "value" = active1.fields["id"], "edit" = null)
|
||||
fields[++fields.len] = list("field" = "Sex:", "value" = active1.fields["sex"], "edit" = "sex")
|
||||
fields[++fields.len] = list("field" = "Age:", "value" = active1.fields["age"], "edit" = "age")
|
||||
fields[++fields.len] = list("field" = "Fingerprint:", "value" = active1.fields["fingerprint"], "edit" = "fingerprint")
|
||||
fields[++fields.len] = list("field" = "Physical Status:", "value" = active1.fields["p_stat"], "edit" = "p_stat")
|
||||
fields[++fields.len] = list("field" = "Mental Status:", "value" = active1.fields["m_stat"], "edit" = "m_stat")
|
||||
var/list/photos = list()
|
||||
general["photos"] = photos
|
||||
photos[++photos.len] = list("photo" = active1.fields["photo-south"])
|
||||
photos[++photos.len] = list("photo" = active1.fields["photo-west"])
|
||||
general["has_photos"] = (active1.fields["photo-south"] || active1.fields["photo-west"] ? 1 : 0)
|
||||
general["empty"] = 0
|
||||
else
|
||||
else
|
||||
dat += "<A href='?src=[UID()];login=1'>{Log In}</A>"
|
||||
var/datum/browser/popup = new(user, "med_rec", name, 400, 400)
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
onclose(user, "med_rec")
|
||||
return
|
||||
general["empty"] = 1
|
||||
|
||||
var/list/medical = list()
|
||||
data["medical"] = medical
|
||||
if(istype(active2, /datum/data/record) && data_core.medical.Find(active2))
|
||||
var/list/fields = list()
|
||||
medical["fields"] = fields
|
||||
fields[++fields.len] = list("field" = "Blood Type:", "value" = active2.fields["b_type"], "edit" = "b_type", "line_break" = 0)
|
||||
fields[++fields.len] = list("field" = "DNA:", "value" = active2.fields["b_dna"], "edit" = "b_dna", "line_break" = 1)
|
||||
fields[++fields.len] = list("field" = "Minor Disabilities:", "value" = active2.fields["mi_dis"], "edit" = "mi_dis", "line_break" = 0)
|
||||
fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["mi_dis_d"], "edit" = "mi_dis_d", "line_break" = 1)
|
||||
fields[++fields.len] = list("field" = "Major Disabilities:", "value" = active2.fields["ma_dis"], "edit" = "ma_dis", "line_break" = 0)
|
||||
fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["ma_dis_d"], "edit" = "ma_dis_d", "line_break" = 1)
|
||||
fields[++fields.len] = list("field" = "Allergies:", "value" = active2.fields["alg"], "edit" = "alg", "line_break" = 0)
|
||||
fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["alg_d"], "edit" = "alg_d", "line_break" = 1)
|
||||
fields[++fields.len] = list("field" = "Current Diseases:", "value" = active2.fields["cdi"], "edit" = "cdi", "line_break" = 0)
|
||||
fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["cdi_d"], "edit" = "cdi_d", "line_break" = 1)
|
||||
fields[++fields.len] = list("field" = "Important Notes:", "value" = active2.fields["notes"], "edit" = "notes", "line_break" = 0)
|
||||
if(!active2.fields["comments"] || !islist(active2.fields["comments"]))
|
||||
active2.fields["comments"] = list()
|
||||
medical["comments"] = active2.fields["comments"]
|
||||
medical["empty"] = 0
|
||||
else
|
||||
medical["empty"] = 1
|
||||
if(MED_DATA_V_DATA)
|
||||
data["virus"] = list()
|
||||
for(var/D in typesof(/datum/disease))
|
||||
var/datum/disease/DS = new D(0)
|
||||
if(istype(DS, /datum/disease/advance))
|
||||
continue
|
||||
if(!DS.desc)
|
||||
continue
|
||||
data["virus"] += list(list("name" = DS.name, "D" = D))
|
||||
if(MED_DATA_MEDBOT)
|
||||
data["medbots"] = list()
|
||||
for(var/mob/living/simple_animal/bot/medbot/M in world)
|
||||
if(M.z != z)
|
||||
continue
|
||||
var/turf/T = get_turf(M)
|
||||
if(T)
|
||||
var/medbot = list()
|
||||
medbot["name"] = M.name
|
||||
medbot["x"] = T.x
|
||||
medbot["y"] = T.y
|
||||
medbot["on"] = M.on
|
||||
if(!isnull(M.reagent_glass) && M.use_beaker)
|
||||
medbot["use_beaker"] = 1
|
||||
medbot["total_volume"] = M.reagent_glass.reagents.total_volume
|
||||
medbot["maximum_volume"] = M.reagent_glass.reagents.maximum_volume
|
||||
else
|
||||
medbot["use_beaker"] = 0
|
||||
data["medbots"] += list(medbot)
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/med_data/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(!( data_core.general.Find(src.active1) ))
|
||||
src.active1 = null
|
||||
if(!data_core.general.Find(active1))
|
||||
active1 = null
|
||||
if(!data_core.medical.Find(active2))
|
||||
active2 = null
|
||||
|
||||
if(!( data_core.medical.Find(src.active2) ))
|
||||
src.active2 = null
|
||||
if(href_list["temp"])
|
||||
temp = null
|
||||
|
||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
if(href_list["temp_action"])
|
||||
if(href_list["temp_action"])
|
||||
var/temp_href = splittext(href_list["temp_action"], "=")
|
||||
switch(temp_href[1])
|
||||
if("del_all2")
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
qdel(R)
|
||||
setTemp("<h3>All records deleted.</h3>")
|
||||
if("p_stat")
|
||||
if(active1)
|
||||
switch(temp_href[2])
|
||||
if("deceased")
|
||||
active1.fields["p_stat"] = "*Deceased*"
|
||||
if("ssd")
|
||||
active1.fields["p_stat"] = "*SSD*"
|
||||
if("active")
|
||||
active1.fields["p_stat"] = "Active"
|
||||
if("unfit")
|
||||
active1.fields["p_stat"] = "Physically Unfit"
|
||||
if("disabled")
|
||||
active1.fields["p_stat"] = "Disabled"
|
||||
if("m_stat")
|
||||
if(active1)
|
||||
switch(temp_href[2])
|
||||
if("insane")
|
||||
active1.fields["m_stat"] = "*Insane*"
|
||||
if("unstable")
|
||||
active1.fields["m_stat"] = "*Unstable*"
|
||||
if("watch")
|
||||
active1.fields["m_stat"] = "*Watch*"
|
||||
if("stable")
|
||||
active1.fields["m_stat"] = "Stable"
|
||||
if("b_type")
|
||||
if(active2)
|
||||
switch(temp_href[2])
|
||||
if("an")
|
||||
active2.fields["b_type"] = "A-"
|
||||
if("bn")
|
||||
active2.fields["b_type"] = "B-"
|
||||
if("abn")
|
||||
active2.fields["b_type"] = "AB-"
|
||||
if("on")
|
||||
active2.fields["b_type"] = "O-"
|
||||
if("ap")
|
||||
active2.fields["b_type"] = "A+"
|
||||
if("bp")
|
||||
active2.fields["b_type"] = "B+"
|
||||
if("abp")
|
||||
active2.fields["b_type"] = "AB+"
|
||||
if("op")
|
||||
active2.fields["b_type"] = "O+"
|
||||
if("del_r2")
|
||||
if(active2)
|
||||
qdel(active2)
|
||||
active2 = null
|
||||
|
||||
if(href_list["temp"])
|
||||
src.temp = null
|
||||
if(href_list["scan"])
|
||||
if(scan)
|
||||
scan.forceMove(loc)
|
||||
if(ishuman(usr) && !usr.get_active_hand())
|
||||
usr.put_in_hands(scan)
|
||||
scan = null
|
||||
else
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.forceMove(src)
|
||||
scan = I
|
||||
|
||||
if(href_list["scan"])
|
||||
if(src.scan)
|
||||
if(href_list["login"])
|
||||
if(isAI(usr))
|
||||
authenticated = usr.name
|
||||
rank = "AI"
|
||||
else if(isrobot(usr))
|
||||
authenticated = usr.name
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
rank = "[R.modtype] [R.braintype]"
|
||||
else if(istype(scan, /obj/item/weapon/card/id))
|
||||
if(check_access(scan))
|
||||
authenticated = scan.registered_name
|
||||
rank = scan.assignment
|
||||
|
||||
if(ishuman(usr))
|
||||
scan.loc = usr.loc
|
||||
if(authenticated)
|
||||
active1 = null
|
||||
active2 = null
|
||||
screen = MED_DATA_MAIN
|
||||
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hands(scan)
|
||||
if(authenticated)
|
||||
var/incapable = (usr.stat || usr.restrained() || (!in_range(src, usr) && !issilicon(usr)))
|
||||
if(href_list["logout"])
|
||||
authenticated = null
|
||||
screen = null
|
||||
active1 = null
|
||||
active2 = null
|
||||
|
||||
scan = null
|
||||
if(href_list["screen"])
|
||||
screen = text2num(href_list["screen"])
|
||||
if(screen < 1)
|
||||
screen = MED_DATA_MAIN
|
||||
|
||||
else
|
||||
src.scan.loc = src.loc
|
||||
src.scan = null
|
||||
active1 = null
|
||||
active2 = null
|
||||
|
||||
else
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.loc = src
|
||||
src.scan = I
|
||||
if(href_list["vir"])
|
||||
var/type = href_list["vir"]
|
||||
var/datum/disease/D = new type(0)
|
||||
var/afs = ""
|
||||
for(var/mob/M in D.viable_mobtypes)
|
||||
afs += "[initial(M.name)];"
|
||||
var/severity = D.severity
|
||||
switch(severity)
|
||||
if("Harmful", "Minor")
|
||||
severity = "<span class='good'>[severity]</span>"
|
||||
if("Medium")
|
||||
severity = "<span class='average'>[severity]</span>"
|
||||
if("Dangerous!")
|
||||
severity = "<span class='bad'>[severity]</span>"
|
||||
if("BIOHAZARD THREAT!")
|
||||
severity = "<h4><span class='bad'>[severity]</span></h4>"
|
||||
setTemp({"<b>Name:</b> [D.name]
|
||||
<BR><b>Number of stages:</b> [D.max_stages]
|
||||
<BR><b>Spread:</b> [D.spread_text] Transmission
|
||||
<BR><b>Possible Cure:</b> [(D.cure_text||"none")]
|
||||
<BR><b>Affected Lifeforms:</b>[afs]<BR>
|
||||
<BR><b>Notes:</b> [D.desc]<BR>
|
||||
<BR><b>Severity:</b> [severity]"})
|
||||
qdel(D)
|
||||
|
||||
else if(href_list["logout"])
|
||||
src.authenticated = null
|
||||
src.screen = null
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
if(href_list["del_all"])
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "href" = "del_all2=1")
|
||||
buttons[++buttons.len] = list("name" = "No", "icon" = "times", "href" = null)
|
||||
setTemp("<h3>Are you sure you wish to delete all records?</h3>", buttons)
|
||||
|
||||
else if(href_list["login"])
|
||||
|
||||
if(istype(usr, /mob/living/silicon/ai))
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
src.authenticated = usr.name
|
||||
src.rank = "AI"
|
||||
src.screen = 1
|
||||
|
||||
else if(istype(usr, /mob/living/silicon/robot))
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
src.authenticated = usr.name
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
src.rank = "[R.modtype] [R.braintype]"
|
||||
src.screen = 1
|
||||
|
||||
else if(istype(src.scan, /obj/item/weapon/card/id))
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
|
||||
if(src.check_access(src.scan))
|
||||
src.authenticated = src.scan.registered_name
|
||||
src.rank = src.scan.assignment
|
||||
src.screen = 1
|
||||
|
||||
if(src.authenticated)
|
||||
|
||||
if(href_list["screen"])
|
||||
src.screen = text2num(href_list["screen"])
|
||||
if(src.screen < 1)
|
||||
src.screen = 1
|
||||
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
|
||||
if(href_list["vir"])
|
||||
var/type = href_list["vir"]
|
||||
var/datum/disease/Dis = new type(0)
|
||||
var/AfS = ""
|
||||
for(var/mob/M in Dis.viable_mobtypes)
|
||||
AfS += " [initial(M.name)];"
|
||||
src.temp = {"<b>Name:</b> [Dis.name]
|
||||
<BR><b>Number of stages:</b> [Dis.max_stages]
|
||||
<BR><b>Spread:</b> [Dis.spread_text] Transmission
|
||||
<BR><b>Possible Cure:</b> [(Dis.cure_text||"none")]
|
||||
<BR><b>Affected Lifeforms:</b>[AfS]
|
||||
<BR>
|
||||
<BR><b>Notes:</b> [Dis.desc]
|
||||
<BR>
|
||||
<BR><b>Severity:</b> [Dis.severity]"}
|
||||
|
||||
if(href_list["del_all"])
|
||||
src.temp = "Are you sure you wish to delete all records?<br>\n\t<A href='?src=[UID()];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=[UID()];temp=1'>No</A><br>"
|
||||
|
||||
if(href_list["del_all2"])
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
//R = null
|
||||
qdel(R)
|
||||
//Foreach goto(494)
|
||||
src.temp = "All records deleted."
|
||||
|
||||
if(href_list["field"])
|
||||
var/a1 = src.active1
|
||||
var/a2 = src.active2
|
||||
switch(href_list["field"])
|
||||
if("fingerprint")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||
return
|
||||
src.active1.fields["fingerprint"] = t1
|
||||
if("sex")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
if(src.active1.fields["sex"] == "Male")
|
||||
src.active1.fields["sex"] = "Female"
|
||||
else
|
||||
src.active1.fields["sex"] = "Male"
|
||||
if("age")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||
return
|
||||
src.active1.fields["age"] = t1
|
||||
if("mi_dis")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["mi_dis"] = t1
|
||||
if("mi_dis_d")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["mi_dis_d"] = t1
|
||||
if("ma_dis")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["ma_dis"] = t1
|
||||
if("ma_dis_d")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["ma_dis_d"] = t1
|
||||
if("alg")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["alg"] = t1
|
||||
if("alg_d")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["alg_d"] = t1
|
||||
if("cdi")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["cdi"] = t1
|
||||
if("cdi_d")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["cdi_d"] = t1
|
||||
if("notes")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
src.active2.fields["notes"] = t1
|
||||
if("p_stat")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
src.temp = "<B>Physical Condition:</B><BR>\n\t<A href='?src=[UID()];temp=1;p_stat=deceased'>*Deceased*</A><BR>\n\t<A href='?src=[UID()];temp=1;p_stat=ssd'>*SSD*</A><BR>\n\t<A href='?src=[UID()];temp=1;p_stat=active'>Active</A><BR>\n\t<A href='?src=[UID()];temp=1;p_stat=unfit'>Physically Unfit</A><BR>\n\t<A href='?src=[UID()];temp=1;p_stat=disabled'>Disabled</A><BR>"
|
||||
if("m_stat")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
src.temp = "<B>Mental Condition:</B><BR>\n\t<A href='?src=[UID()];temp=1;m_stat=insane'>*Insane*</A><BR>\n\t<A href='?src=[UID()];temp=1;m_stat=unstable'>*Unstable*</A><BR>\n\t<A href='?src=[UID()];temp=1;m_stat=watch'>*Watch*</A><BR>\n\t<A href='?src=[UID()];temp=1;m_stat=stable'>Stable</A><BR>"
|
||||
if("b_type")
|
||||
if(istype(src.active2, /datum/data/record))
|
||||
src.temp = "<B>Blood Type:</B><BR>\n\t<A href='?src=[UID()];temp=1;b_type=an'>A-</A> <A href='?src=[UID()];temp=1;b_type=ap'>A+</A><BR>\n\t<A href='?src=[UID()];temp=1;b_type=bn'>B-</A> <A href='?src=[UID()];temp=1;b_type=bp'>B+</A><BR>\n\t<A href='?src=[UID()];temp=1;b_type=abn'>AB-</A> <A href='?src=[UID()];temp=1;b_type=abp'>AB+</A><BR>\n\t<A href='?src=[UID()];temp=1;b_type=on'>O-</A> <A href='?src=[UID()];temp=1;b_type=op'>O+</A><BR>"
|
||||
if("b_dna")
|
||||
if(istype(src.active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||
return
|
||||
src.active1.fields["dna"] = t1
|
||||
if("vir_name")
|
||||
var/datum/data/record/v = locate(href_list["edit_vir"])
|
||||
if(v)
|
||||
var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||
return
|
||||
v.fields["name"] = t1
|
||||
if("vir_desc")
|
||||
var/datum/data/record/v = locate(href_list["edit_vir"])
|
||||
if(v)
|
||||
var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||
return
|
||||
v.fields["description"] = t1
|
||||
else
|
||||
|
||||
if(href_list["p_stat"])
|
||||
if(src.active1)
|
||||
switch(href_list["p_stat"])
|
||||
if("deceased")
|
||||
src.active1.fields["p_stat"] = "*Deceased*"
|
||||
if("ssd")
|
||||
src.active1.fields["p_stat"] = "*SSD*"
|
||||
if("active")
|
||||
src.active1.fields["p_stat"] = "Active"
|
||||
if("unfit")
|
||||
src.active1.fields["p_stat"] = "Physically Unfit"
|
||||
if("disabled")
|
||||
src.active1.fields["p_stat"] = "Disabled"
|
||||
|
||||
if(href_list["m_stat"])
|
||||
if(src.active1)
|
||||
switch(href_list["m_stat"])
|
||||
if("insane")
|
||||
src.active1.fields["m_stat"] = "*Insane*"
|
||||
if("unstable")
|
||||
src.active1.fields["m_stat"] = "*Unstable*"
|
||||
if("watch")
|
||||
src.active1.fields["m_stat"] = "*Watch*"
|
||||
if("stable")
|
||||
src.active1.fields["m_stat"] = "Stable"
|
||||
|
||||
|
||||
if(href_list["b_type"])
|
||||
if(src.active2)
|
||||
switch(href_list["b_type"])
|
||||
if("an")
|
||||
src.active2.fields["b_type"] = "A-"
|
||||
if("bn")
|
||||
src.active2.fields["b_type"] = "B-"
|
||||
if("abn")
|
||||
src.active2.fields["b_type"] = "AB-"
|
||||
if("on")
|
||||
src.active2.fields["b_type"] = "O-"
|
||||
if("ap")
|
||||
src.active2.fields["b_type"] = "A+"
|
||||
if("bp")
|
||||
src.active2.fields["b_type"] = "B+"
|
||||
if("abp")
|
||||
src.active2.fields["b_type"] = "AB+"
|
||||
if("op")
|
||||
src.active2.fields["b_type"] = "O+"
|
||||
|
||||
|
||||
if(href_list["del_r"])
|
||||
if(src.active2)
|
||||
src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?<br>\n\t<A href='?src=[UID()];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=[UID()];temp=1'>No</A><br>"
|
||||
|
||||
if(href_list["del_r2"])
|
||||
if(src.active2)
|
||||
//src.active2 = null
|
||||
qdel(src.active2)
|
||||
|
||||
if(href_list["d_rec"])
|
||||
var/datum/data/record/R = locate(href_list["d_rec"])
|
||||
var/datum/data/record/M = locate(href_list["d_rec"])
|
||||
if(!( data_core.general.Find(R) ))
|
||||
src.temp = "Record Not Found!"
|
||||
return
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
M = E
|
||||
else
|
||||
//Foreach continue //goto(2540)
|
||||
src.active1 = R
|
||||
src.active2 = M
|
||||
src.screen = 4
|
||||
|
||||
if(href_list["new"])
|
||||
if((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) )))
|
||||
var/datum/data/record/R = new /datum/data/record( )
|
||||
R.fields["name"] = src.active1.fields["name"]
|
||||
R.fields["id"] = src.active1.fields["id"]
|
||||
R.name = text("Medical Record #[]", R.fields["id"])
|
||||
R.fields["b_type"] = "Unknown"
|
||||
R.fields["b_dna"] = "Unknown"
|
||||
R.fields["mi_dis"] = "None"
|
||||
R.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
||||
R.fields["ma_dis"] = "None"
|
||||
R.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
||||
R.fields["alg"] = "None"
|
||||
R.fields["alg_d"] = "No allergies have been detected in this patient."
|
||||
R.fields["cdi"] = "None"
|
||||
R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
||||
R.fields["notes"] = "No notes."
|
||||
data_core.medical += R
|
||||
src.active2 = R
|
||||
src.screen = 4
|
||||
|
||||
if(href_list["add_c"])
|
||||
if(!( istype(src.active2, /datum/data/record) ))
|
||||
return
|
||||
var/a2 = src.active2
|
||||
var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
|
||||
return
|
||||
var/counter = 1
|
||||
while(src.active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")]<BR>[t1]")
|
||||
|
||||
if(href_list["del_c"])
|
||||
if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
|
||||
src.active2.fields[text("com_[]", href_list["del_c"])] = "<B>Deleted</B>"
|
||||
|
||||
if(href_list["search"])
|
||||
var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
|
||||
if((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))))
|
||||
return
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
t1 = lowertext(t1)
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"])))
|
||||
src.active2 = R
|
||||
else
|
||||
//Foreach continue //goto(3229)
|
||||
if(!( src.active2 ))
|
||||
src.temp = text("Could not locate record [].", t1)
|
||||
else
|
||||
for(var/datum/data/record/E in data_core.general)
|
||||
if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"]))
|
||||
src.active1 = E
|
||||
if(href_list["field"])
|
||||
if(incapable)
|
||||
return 1
|
||||
var/a1 = active1
|
||||
var/a2 = active2
|
||||
switch(href_list["field"])
|
||||
if("fingerprint")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", active1.fields["fingerprint"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["fingerprint"] = t1
|
||||
if("sex")
|
||||
if(istype(active1, /datum/data/record))
|
||||
if(active1.fields["sex"] == "Male")
|
||||
active1.fields["sex"] = "Female"
|
||||
else
|
||||
//Foreach continue //goto(3334)
|
||||
src.screen = 4
|
||||
active1.fields["sex"] = "Male"
|
||||
if("age")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = input("Please input age:", "Med. records", active1.fields["age"], null) as num
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["age"] = t1
|
||||
if("mi_dis")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", active2.fields["mi_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["mi_dis"] = t1
|
||||
if("mi_dis_d")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", active2.fields["mi_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["mi_dis_d"] = t1
|
||||
if("ma_dis")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", active2.fields["ma_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["ma_dis"] = t1
|
||||
if("ma_dis_d")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", active2.fields["ma_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["ma_dis_d"] = t1
|
||||
if("alg")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", active2.fields["alg"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["alg"] = t1
|
||||
if("alg_d")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", active2.fields["alg_d"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["alg_d"] = t1
|
||||
if("cdi")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", active2.fields["cdi"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["cdi"] = t1
|
||||
if("cdi_d")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", active2.fields["cdi_d"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["cdi_d"] = t1
|
||||
if("notes")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(active2.fields["notes"]), null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["notes"] = t1
|
||||
if("p_stat")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "*Deceased*", "icon" = "stethoscope", "href" = "p_stat=deceased", "status" = (active1.fields["p_stat"] == "*Deceased*" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "*SSD*", "icon" = "stethoscope", "href" = "p_stat=ssd", "status" = (active1.fields["p_stat"] == "*SSD*" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "Active", "icon" = "stethoscope", "href" = "p_stat=active", "status" = (active1.fields["p_stat"] == "Active" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "Physically Unfit", "icon" = "stethoscope", "href" = "p_stat=unfit", "status" = (active1.fields["p_stat"] == "Physically Unfit" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "Disabled", "icon" = "stethoscope", "href" = "p_stat=disabled", "status" = (active1.fields["p_stat"] == "Disabled" ? "selected" : null))
|
||||
setTemp("<h3>Physical Condition</h3>", buttons)
|
||||
if("m_stat")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "*Insane*", "icon" = "stethoscope", "href" = "m_stat=insane", "status" = (active1.fields["m_stat"] == "*Insane*" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "*Unstable*", "icon" = "stethoscope", "href" = "m_stat=unstable", "status" = (active1.fields["m_stat"] == "*Unstable*" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "*Watch*", "icon" = "stethoscope", "href" = "m_stat=watch", "status" = (active1.fields["m_stat"] == "*Watch*" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "Stable", "icon" = "stethoscope", "href" = "m_stat=stable", "status" = (active1.fields["m_stat"] == "Stable" ? "selected" : null))
|
||||
setTemp("<h3>Mental Condition</h3>", buttons)
|
||||
if("b_type")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "A-", "icon" = "tint", "href" = "b_type=an", "status" = (active2.fields["b_type"] == "A-" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "A+", "icon" = "tint", "href" = "b_type=ap", "status" = (active2.fields["b_type"] == "A+" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "B-", "icon" = "tint", "href" = "b_type=bn", "status" = (active2.fields["b_type"] == "B-" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "B+", "icon" = "tint", "href" = "b_type=bp", "status" = (active2.fields["b_type"] == "B+" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "AB-", "icon" = "tint", "href" = "b_type=abn", "status" = (active2.fields["b_type"] == "AB-" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "AB+", "icon" = "tint", "href" = "b_type=abp", "status" = (active2.fields["b_type"] == "AB+" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "O-", "icon" = "tint", "href" = "b_type=on", "status" = (active2.fields["b_type"] == "O-" ? "selected" : null))
|
||||
buttons[++buttons.len] = list("name" = "O+", "icon" = "tint", "href" = "b_type=op", "status" = (active2.fields["b_type"] == "O+" ? "selected" : null))
|
||||
setTemp("<h3>Blood Type</h3>", buttons)
|
||||
if("b_dna")
|
||||
if(istype(active2, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", active2.fields["b_dna"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["b_dna"] = t1
|
||||
if("vir_name")
|
||||
var/datum/data/record/v = locate(href_list["edit_vir"])
|
||||
if(v)
|
||||
var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
v.fields["name"] = t1
|
||||
if("vir_desc")
|
||||
var/datum/data/record/v = locate(href_list["edit_vir"])
|
||||
if(v)
|
||||
var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
v.fields["description"] = t1
|
||||
|
||||
if(href_list["print_p"])
|
||||
if(!( src.printing ))
|
||||
src.printing = 1
|
||||
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
sleep(50)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
|
||||
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
if((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
|
||||
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"])
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
if((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
|
||||
P.info += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: []<BR>\nDNA: []<BR>\n<BR>\nMinor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nMajor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nAllergies: []<BR>\nDetails: []<BR>\n<BR>\nCurrent Diseases: [] (per disease info placed in log/comment section)<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"])
|
||||
var/counter = 1
|
||||
while(src.active2.fields[text("com_[]", counter)])
|
||||
P.info += text("[]<BR>", src.active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
else
|
||||
P.info += "<B>Medical Record Lost!</B><BR>"
|
||||
P.info += "</TT>"
|
||||
P.name = "paper- 'Medical Record'"
|
||||
src.printing = null
|
||||
if(href_list["del_r"])
|
||||
if(active2)
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "href" = "del_r2=1", "status" = null)
|
||||
buttons[++buttons.len] = list("name" = "No", "icon" = "times", "href" = null, "status" = null)
|
||||
setTemp("<h3>Are you sure you wish to delete the record (Medical Portion Only)?</h3>", buttons)
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
if(href_list["d_rec"])
|
||||
var/datum/data/record/R = locate(href_list["d_rec"])
|
||||
var/datum/data/record/M = locate(href_list["d_rec"])
|
||||
if(!data_core.general.Find(R))
|
||||
setTemp("<h3 class='bad'>Record not found!</h3>")
|
||||
return 1
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
if(E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])
|
||||
M = E
|
||||
active1 = R
|
||||
active2 = M
|
||||
screen = MED_DATA_RECORD
|
||||
|
||||
if(href_list["new"])
|
||||
if(istype(active1, /datum/data/record) && !istype(active2, /datum/data/record))
|
||||
var/datum/data/record/R = new /datum/data/record()
|
||||
R.fields["name"] = active1.fields["name"]
|
||||
R.fields["id"] = active1.fields["id"]
|
||||
R.name = "Medical Record #[R.fields["id"]]"
|
||||
R.fields["b_type"] = "Unknown"
|
||||
R.fields["b_dna"] = "Unknown"
|
||||
R.fields["mi_dis"] = "None"
|
||||
R.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
||||
R.fields["ma_dis"] = "None"
|
||||
R.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
||||
R.fields["alg"] = "None"
|
||||
R.fields["alg_d"] = "No allergies have been detected in this patient."
|
||||
R.fields["cdi"] = "None"
|
||||
R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
||||
R.fields["notes"] = "No notes."
|
||||
data_core.medical += R
|
||||
active2 = R
|
||||
screen = MED_DATA_RECORD
|
||||
|
||||
if(href_list["add_c"])
|
||||
if(!istype(active2, /datum/data/record))
|
||||
return 1
|
||||
var/a2 = active2
|
||||
var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active2 != a2)
|
||||
return 1
|
||||
active2.fields["comments"] += "Made by [authenticated] ([rank]) on [current_date_string] [worldtime2text()]<BR>[t1]"
|
||||
|
||||
if(href_list["del_c"])
|
||||
var/index = min(max(text2num(href_list["del_c"]) + 1, 1), length(active2.fields["comments"]))
|
||||
if(istype(active2, /datum/data/record) && active2.fields["comments"][index])
|
||||
active2.fields["comments"] -= active2.fields["comments"][index]
|
||||
|
||||
if(href_list["search"])
|
||||
var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
|
||||
if(!t1 || incapable)
|
||||
return 1
|
||||
active1 = null
|
||||
active2 = null
|
||||
t1 = lowertext(t1)
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if(t1 == lowertext(R.fields["name"]) || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))
|
||||
active2 = R
|
||||
if(!active2)
|
||||
setTemp("<h3 class='bad'>Could not locate record [t1].</h3>")
|
||||
else
|
||||
for(var/datum/data/record/E in data_core.general)
|
||||
if(E.fields["name"] == active2.fields["name"] && E.fields["id"] == active2.fields["id"])
|
||||
active1 = E
|
||||
screen = MED_DATA_RECORD
|
||||
|
||||
if(href_list["print_p"])
|
||||
if(!printing)
|
||||
printing = 1
|
||||
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
sleep(50)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc)
|
||||
P.info = "<CENTER><B>Medical Record</B></CENTER><BR>"
|
||||
if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
|
||||
P.info += {"Name: [active1.fields["name"]] ID: [active1.fields["id"]]
|
||||
<BR>\nSex: [active1.fields["sex"]]
|
||||
<BR>\nAge: [active1.fields["age"]]
|
||||
<BR>\nFingerprint: [active1.fields["fingerprint"]]
|
||||
<BR>\nPhysical Status: [active1.fields["p_stat"]]
|
||||
<BR>\nMental Status: [active1.fields["m_stat"]]<BR>"}
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
if(istype(active2, /datum/data/record) && data_core.medical.Find(active2))
|
||||
P.info += {"<BR>\n<CENTER><B>Medical Data</B></CENTER>
|
||||
<BR>\nBlood Type: [active2.fields["b_type"]]
|
||||
<BR>\nDNA: [active2.fields["b_dna"]]<BR>\n
|
||||
<BR>\nMinor Disabilities: [active2.fields["mi_dis"]]
|
||||
<BR>\nDetails: [active2.fields["mi_dis_d"]]<BR>\n
|
||||
<BR>\nMajor Disabilities: [active2.fields["ma_dis"]]
|
||||
<BR>\nDetails: [active2.fields["ma_dis_d"]]<BR>\n
|
||||
<BR>\nAllergies: [active2.fields["alg"]]
|
||||
<BR>\nDetails: [active2.fields["alg_d"]]<BR>\n
|
||||
<BR>\nCurrent Diseases: [active2.fields["cdi"]] (per disease info placed in log/comment section)
|
||||
<BR>\nDetails: [active2.fields["cdi_d"]]<BR>\n
|
||||
<BR>\nImportant Notes:
|
||||
<BR>\n\t[active2.fields["notes"]]<BR>\n
|
||||
<BR>\n
|
||||
<CENTER><B>Comments/Log</B></CENTER><BR>"}
|
||||
for(var/c in active2.fields["comments"])
|
||||
P.info += "[c]<BR>"
|
||||
else
|
||||
P.info += "<B>Medical Record Lost!</B><BR>"
|
||||
P.info += "</TT>"
|
||||
P.name = "paper- 'Medical Record'"
|
||||
printing = 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/med_data/proc/setTemp(text, list/buttons = list())
|
||||
temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0)
|
||||
|
||||
/obj/machinery/computer/med_data/emp_act(severity)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
..(severity)
|
||||
return
|
||||
return ..(severity)
|
||||
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if(prob(10/severity))
|
||||
@@ -500,7 +535,7 @@
|
||||
if(1)
|
||||
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
|
||||
if(2)
|
||||
R.fields["sex"] = pick("Male", "Female")
|
||||
R.fields["sex"] = pick("Male", "Female")
|
||||
if(3)
|
||||
R.fields["age"] = rand(5, 85)
|
||||
if(4)
|
||||
@@ -525,3 +560,10 @@
|
||||
icon_keyboard = "laptop_key"
|
||||
icon_screen = "medlaptop"
|
||||
density = 0
|
||||
|
||||
#undef MED_DATA_MAIN
|
||||
#undef MED_DATA_R_LIST
|
||||
#undef MED_DATA_MAINT
|
||||
#undef MED_DATA_RECORD
|
||||
#undef MED_DATA_V_DATA
|
||||
#undef MED_DATA_MEDBOT
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
#define SKILL_DATA_R_LIST 1 // Record list
|
||||
#define SKILL_DATA_MAINT 2 // Records maintenance
|
||||
#define SKILL_DATA_RECORD 3 // Record
|
||||
|
||||
/obj/machinery/computer/skills//TODO:SANITY
|
||||
name = "employment records console"
|
||||
@@ -15,372 +17,280 @@
|
||||
var/rank = null
|
||||
var/screen = null
|
||||
var/datum/data/record/active1 = null
|
||||
var/a_id = null
|
||||
var/temp = null
|
||||
var/printing = null
|
||||
var/can_change_id = 0
|
||||
var/list/Perp
|
||||
var/tempname = null
|
||||
//Sorting Variables
|
||||
var/sortBy = "name"
|
||||
var/order = 1 // -1 = Descending - 1 = Ascending
|
||||
|
||||
|
||||
/obj/machinery/computer/skills/attackby(obj/item/O as obj, user as mob, params)
|
||||
/obj/machinery/computer/skills/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/card/id) && !scan)
|
||||
usr.drop_item()
|
||||
O.loc = src
|
||||
user.drop_item()
|
||||
O.forceMove(src)
|
||||
scan = O
|
||||
to_chat(user, "You insert [O].")
|
||||
ui_interact(user)
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/skills/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||
/obj/machinery/computer/skills/attack_hand(mob/user as mob)
|
||||
/obj/machinery/computer/skills/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(is_away_level(src.z))
|
||||
if(is_away_level(z))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the station!")
|
||||
return
|
||||
var/dat
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
if(temp)
|
||||
dat = "<TT>[temp]</TT><BR><BR><A href='?src=[UID()];choice=Clear Screen'>Clear Screen</A>"
|
||||
else
|
||||
dat = text("Confirm Identity: <A href='?src=[UID()];choice=Confirm Identity'>[]</A><HR>", (scan ? text("[]", scan.name) : "----------"))
|
||||
if(authenticated)
|
||||
switch(screen)
|
||||
if(1.0)
|
||||
dat += {"
|
||||
<p style='text-align:center;'>"}
|
||||
dat += "<A href='?src=[UID()];choice=Search Records'>Search Records</A><BR>"
|
||||
dat += "<A href='?src=[UID()];choice=New Record (General)'>New Record</A><BR>"
|
||||
dat += {"
|
||||
</p>
|
||||
<table style="text-align:center;" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th>Records:</th>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="text-align:center;" border="1" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th><A href='?src=[UID()];choice=Sorting;sort=name'>Name</A></th>
|
||||
<th><A href='?src=[UID()];choice=Sorting;sort=id'>ID</A></th>
|
||||
<th><A href='?src=[UID()];choice=Sorting;sort=rank'>Rank</A></th>
|
||||
<th><A href='?src=[UID()];choice=Sorting;sort=fingerprint'>Fingerprints</A></th>
|
||||
</tr>"}
|
||||
if(!isnull(data_core.general))
|
||||
for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order))
|
||||
for(var/datum/data/record/E in data_core.security)
|
||||
var/background
|
||||
dat += text("<tr style=[]><td><A href='?src=[UID()];choice=Browse Record;d_rec=\ref[]'>[]</a></td>", background, R, R.fields["name"])
|
||||
dat += text("<td>[]</td>", R.fields["id"])
|
||||
dat += text("<td>[]</td>", R.fields["rank"])
|
||||
dat += text("<td>[]</td>", R.fields["fingerprint"])
|
||||
dat += "</table><hr width='75%' />"
|
||||
dat += "<A href='?src=[UID()];choice=Record Maintenance'>Record Maintenance</A><br><br>"
|
||||
dat += "<A href='?src=[UID()];choice=Log Out'>{Log Out}</A>"
|
||||
if(2.0)
|
||||
dat += "<B>Records Maintenance</B><HR>"
|
||||
dat += "<BR><A href='?src=[UID()];choice=Delete All Records'>Delete All Records</A><BR><BR><A href='?src=[UID()];choice=Return'>Back</A>"
|
||||
if(3.0)
|
||||
dat += "<CENTER><B>Employment Record</B></CENTER><BR>"
|
||||
if((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
||||
dat += text("<table><tr><td> \
|
||||
Name: <A href='?src=[UID()];choice=Edit Field;field=name'>[active1.fields["name"]]</A><BR> \
|
||||
ID: <A href='?src=[UID()];choice=Edit Field;field=id'>[active1.fields["id"]]</A><BR>\n \
|
||||
Sex: <A href='?src=[UID()];choice=Edit Field;field=sex'>[active1.fields["sex"]]</A><BR>\n \
|
||||
Age: <A href='?src=[UID()];choice=Edit Field;field=age'>[active1.fields["age"]]</A><BR>\n \
|
||||
Rank: <A href='?src=[UID()];choice=Edit Field;field=rank'>[active1.fields["rank"]]</A><BR>\n \
|
||||
Fingerprint: <A href='?src=[UID()];choice=Edit Field;field=fingerprint'>[active1.fields["fingerprint"]]</A><BR>\n \
|
||||
Physical Status: [active1.fields["p_stat"]]<BR>\n \
|
||||
Mental Status: [active1.fields["m_stat"]]<BR><BR>\n \
|
||||
Employment/skills summary:<BR> [active1.fields["notes"]]<BR></td> \
|
||||
<td align = center valign = top>Photo:<br><img src=[active1.fields["photo-south"]] height=80 width=80 border=4> \
|
||||
<img src=[active1.fields["photo-west"]] height=80 width=80 border=4></td></tr></table>")
|
||||
else
|
||||
dat += "<B>General Record Lost!</B><BR>"
|
||||
dat += "\n<A href='?src=[UID()];choice=Delete Record (ALL)'>Delete Record (ALL)</A><BR><BR>\n<A href='?src=[UID()];choice=Print Record'>Print Record</A><BR>\n<A href='?src=[UID()];choice=Return'>Back</A><BR>"
|
||||
if(4.0)
|
||||
if(!Perp.len)
|
||||
dat += "ERROR. String could not be located.<br><br><A href='?src=[UID()];choice=Return'>Back</A>"
|
||||
else
|
||||
dat += {"
|
||||
<table style="text-align:center;" cellspacing="0" width="100%">
|
||||
<tr> "}
|
||||
dat += text("<th>Search Results for '[]':</th>", tempname)
|
||||
dat += {"
|
||||
</tr>
|
||||
</table>
|
||||
<table style="text-align:center;" border="1" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>ID</th>
|
||||
<th>Rank</th>
|
||||
<th>Fingerprints</th>
|
||||
</tr> "}
|
||||
for(var/i=1, i<=Perp.len, i += 2)
|
||||
var/crimstat = ""
|
||||
var/datum/data/record/R = Perp[i]
|
||||
if(istype(Perp[i+1],/datum/data/record/))
|
||||
var/datum/data/record/E = Perp[i+1]
|
||||
crimstat = E.fields["criminal"]
|
||||
var/background
|
||||
background = "'background-color:#00FF7F;'"
|
||||
dat += text("<tr style=[]><td><A href='?src=[UID()];choice=Browse Record;d_rec=\ref[]'>[]</a></td>", background, R, R.fields["name"])
|
||||
dat += text("<td>[]</td>", R.fields["id"])
|
||||
dat += text("<td>[]</td>", R.fields["rank"])
|
||||
dat += text("<td>[]</td>", R.fields["fingerprint"])
|
||||
dat += text("<td>[]</td></tr>", crimstat)
|
||||
dat += "</table><hr width='75%' />"
|
||||
dat += "<br><A href='?src=[UID()];choice=Return'>Return to index.</A>"
|
||||
/obj/machinery/computer/skills/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "skills_data.tmpl", name, 800, 380)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/skills/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
var/data[0]
|
||||
data["temp"] = temp
|
||||
data["scan"] = scan ? scan.name : null
|
||||
data["authenticated"] = authenticated
|
||||
data["screen"] = screen
|
||||
if(authenticated)
|
||||
switch(screen)
|
||||
if(SKILL_DATA_R_LIST)
|
||||
if(!isnull(data_core.general))
|
||||
for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order))
|
||||
data["records"] += list(list("ref" = "\ref[R]", "id" = R.fields["id"], "name" = R.fields["name"], "rank" = R.fields["rank"], "fingerprint" = R.fields["fingerprint"]))
|
||||
if(SKILL_DATA_RECORD)
|
||||
var/list/general = list()
|
||||
data["general"] = general
|
||||
if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
|
||||
var/list/fields = list()
|
||||
general["fields"] = fields
|
||||
fields[++fields.len] = list("field" = "Name:", "value" = active1.fields["name"], "name" = "name")
|
||||
fields[++fields.len] = list("field" = "ID:", "value" = active1.fields["id"], "name" = "id")
|
||||
fields[++fields.len] = list("field" = "Sex:", "value" = active1.fields["sex"], "name" = "sex")
|
||||
fields[++fields.len] = list("field" = "Age:", "value" = active1.fields["age"], "name" = "age")
|
||||
fields[++fields.len] = list("field" = "Rank:", "value" = active1.fields["rank"], "name" = "rank")
|
||||
fields[++fields.len] = list("field" = "Fingerprint:", "value" = active1.fields["fingerprint"], "name" = "fingerprint")
|
||||
fields[++fields.len] = list("field" = "Physical Status:", "value" = active1.fields["p_stat"])
|
||||
fields[++fields.len] = list("field" = "Mental Status:", "value" = active1.fields["m_stat"])
|
||||
general["notes"] = active1.fields["notes"]
|
||||
var/list/photos = list()
|
||||
general["photos"] = photos
|
||||
photos[++photos.len] = list("photo" = active1.fields["photo-south"])
|
||||
photos[++photos.len] = list("photo" = active1.fields["photo-west"])
|
||||
general["has_photos"] += (active1.fields["photo-south"] || active1.fields["photo-west"] ? 1 : 0)
|
||||
general["empty"] = 0
|
||||
else
|
||||
else
|
||||
dat += "<A href='?src=[UID()];choice=Log In'>{Log In}</A>"
|
||||
user << browse(text("<HEAD><TITLE>Employment Records</TITLE></HEAD><TT>[]</TT>", dat), "window=secure_rec;size=600x400")
|
||||
onclose(user, "secure_rec")
|
||||
return
|
||||
general["empty"] = 1
|
||||
return data
|
||||
|
||||
/*Revised /N
|
||||
I can't be bothered to look more of the actual code outside of switch but that probably needs revising too.
|
||||
What a mess.*/
|
||||
/obj/machinery/computer/skills/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
if(!( data_core.general.Find(active1) ))
|
||||
|
||||
if(!data_core.general.Find(active1))
|
||||
active1 = null
|
||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
switch(href_list["choice"])
|
||||
// SORTING!
|
||||
if("Sorting")
|
||||
// Reverse the order if clicked twice
|
||||
if(sortBy == href_list["sort"])
|
||||
if(order == 1)
|
||||
order = -1
|
||||
else
|
||||
order = 1
|
||||
else
|
||||
// New sorting order!
|
||||
sortBy = href_list["sort"]
|
||||
order = initial(order)
|
||||
//BASIC FUNCTIONS
|
||||
if("Clear Screen")
|
||||
temp = null
|
||||
|
||||
if("Return")
|
||||
screen = 1
|
||||
active1 = null
|
||||
if(href_list["temp"])
|
||||
temp = null
|
||||
|
||||
if("Confirm Identity")
|
||||
if(scan)
|
||||
if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand())
|
||||
usr.put_in_hands(scan)
|
||||
else
|
||||
scan.loc = get_turf(src)
|
||||
scan = null
|
||||
else
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.loc = src
|
||||
scan = I
|
||||
|
||||
if("Log Out")
|
||||
authenticated = null
|
||||
screen = null
|
||||
active1 = null
|
||||
|
||||
if("Log In")
|
||||
if(istype(usr, /mob/living/silicon/ai))
|
||||
src.active1 = null
|
||||
src.authenticated = usr.name
|
||||
src.rank = "AI"
|
||||
src.screen = 1
|
||||
else if(istype(usr, /mob/living/silicon/robot))
|
||||
src.active1 = null
|
||||
src.authenticated = usr.name
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
src.rank = R.braintype
|
||||
src.screen = 1
|
||||
else if(istype(scan, /obj/item/weapon/card/id))
|
||||
active1 = null
|
||||
if(check_access(scan))
|
||||
authenticated = scan.registered_name
|
||||
rank = scan.assignment
|
||||
screen = 1
|
||||
//RECORD FUNCTIONS
|
||||
if("Search Records")
|
||||
var/t1 = input("Search String: (Partial Name or ID or Fingerprints or Rank)", "Secure. records", null, null) as text
|
||||
if((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || !in_range(src, usr)))
|
||||
return
|
||||
Perp = new/list()
|
||||
t1 = lowertext(t1)
|
||||
var/list/components = splittext(t1, " ")
|
||||
if(components.len > 5)
|
||||
return //Lets not let them search too greedily.
|
||||
for(var/datum/data/record/R in data_core.general)
|
||||
var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"]
|
||||
for(var/i = 1, i<=components.len, i++)
|
||||
if(findtext(temptext,components[i]))
|
||||
var/prelist = new/list(2)
|
||||
prelist[1] = R
|
||||
Perp += prelist
|
||||
for(var/i = 1, i<=Perp.len, i+=2)
|
||||
for(var/datum/data/record/E in data_core.security)
|
||||
var/datum/data/record/R = Perp[i]
|
||||
if((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]))
|
||||
Perp[i+1] = E
|
||||
tempname = t1
|
||||
screen = 4
|
||||
|
||||
if("Record Maintenance")
|
||||
screen = 2
|
||||
active1 = null
|
||||
|
||||
if("Browse Record")
|
||||
var/datum/data/record/R = locate(href_list["d_rec"])
|
||||
if(!( data_core.general.Find(R) ))
|
||||
temp = "Record Not Found!"
|
||||
else
|
||||
for(var/datum/data/record/E in data_core.security)
|
||||
active1 = R
|
||||
screen = 3
|
||||
|
||||
if("Print Record")
|
||||
if(!( printing ))
|
||||
printing = 1
|
||||
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
sleep(50)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
|
||||
P.info = "<CENTER><B>Employment Record</B></CENTER><BR>"
|
||||
if((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
||||
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>\nEmployment/Skills Summary:[]<BR>", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"], active1.fields["notes"])
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
P.info += "</TT>"
|
||||
P.name = "paper - 'Employment Record'"
|
||||
printing = null
|
||||
//RECORD DELETE
|
||||
if("Delete All Records")
|
||||
temp = ""
|
||||
temp += "Are you sure you wish to delete all Employment records?<br>"
|
||||
temp += "<a href='?src=[UID()];choice=Purge All Records'>Yes</a><br>"
|
||||
temp += "<a href='?src=[UID()];choice=Clear Screen'>No</a>"
|
||||
|
||||
if("Purge All Records")
|
||||
if(PDA_Manifest.len)
|
||||
if(href_list["temp_action"])
|
||||
var/temp_list = splittext(href_list["temp_action"], "=")
|
||||
switch(temp_list[1])
|
||||
if("del_all2")
|
||||
if(PDA_Manifest && PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
for(var/datum/data/record/R in data_core.security)
|
||||
qdel(R)
|
||||
temp = "All Employment records deleted."
|
||||
|
||||
if("Delete Record (ALL)")
|
||||
setTemp("<h3>All employment records deleted.</h3>")
|
||||
if("del_rg2")
|
||||
if(active1)
|
||||
temp = "<h5>Are you sure you wish to delete the record (ALL)?</h5>"
|
||||
temp += "<a href='?src=[UID()];choice=Delete Record (ALL) Execute'>Yes</a><br>"
|
||||
temp += "<a href='?src=[UID()];choice=Clear Screen'>No</a>"
|
||||
//RECORD CREATE
|
||||
if("New Record (General)")
|
||||
if(PDA_Manifest && PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if(R.fields["name"] == active1.fields["name"] && R.fields["id"] == active1.fields["id"])
|
||||
qdel(R)
|
||||
qdel(active1)
|
||||
active1 = null
|
||||
screen = SKILL_DATA_R_LIST
|
||||
if("rank")
|
||||
if(active1)
|
||||
if(PDA_Manifest && PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
active1.fields["rank"] = temp_list[2]
|
||||
if(temp_list[2] in joblist)
|
||||
active1.fields["real_rank"] = temp_list[2]
|
||||
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
var/datum/data/record/G = new /datum/data/record()
|
||||
G.fields["name"] = "New Record"
|
||||
G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
|
||||
G.fields["rank"] = "Unassigned"
|
||||
G.fields["real_rank"] = "Unassigned"
|
||||
G.fields["sex"] = "Male"
|
||||
G.fields["age"] = "Unknown"
|
||||
G.fields["fingerprint"] = "Unknown"
|
||||
G.fields["p_stat"] = "Active"
|
||||
G.fields["m_stat"] = "Stable"
|
||||
G.fields["species"] = "Human"
|
||||
data_core.general += G
|
||||
active1 = G
|
||||
if(href_list["scan"])
|
||||
if(scan)
|
||||
scan.forceMove(loc)
|
||||
if(ishuman(usr) && !usr.get_active_hand())
|
||||
usr.put_in_hands(scan)
|
||||
scan = null
|
||||
else
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
usr.drop_item()
|
||||
I.forceMove(src)
|
||||
scan = I
|
||||
|
||||
//FIELD FUNCTIONS
|
||||
if("Edit Field")
|
||||
var/a1 = active1
|
||||
switch(href_list["field"])
|
||||
if("name")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
|
||||
if((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1)
|
||||
return
|
||||
active1.fields["name"] = t1
|
||||
if("id")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1))
|
||||
return
|
||||
active1.fields["id"] = t1
|
||||
if("fingerprint")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1))
|
||||
return
|
||||
active1.fields["fingerprint"] = t1
|
||||
if("sex")
|
||||
if(istype(active1, /datum/data/record))
|
||||
if(active1.fields["sex"] == "Male")
|
||||
active1.fields["sex"] = "Female"
|
||||
else
|
||||
active1.fields["sex"] = "Male"
|
||||
if("age")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num
|
||||
if((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1))
|
||||
return
|
||||
active1.fields["age"] = t1
|
||||
if("rank")
|
||||
var/list/L = list( "Head of Personnel", "Captain", "AI" )
|
||||
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
|
||||
if((istype(active1, /datum/data/record) && L.Find(rank)))
|
||||
temp = "<h5>Rank:</h5>"
|
||||
temp += "<ul>"
|
||||
for(var/rank in joblist)
|
||||
temp += "<li><a href='?src=[UID()];choice=Change Rank;rank=[rank]'>[rank]</a></li>"
|
||||
temp += "</ul>"
|
||||
if(href_list["login"])
|
||||
if(isAI(usr))
|
||||
authenticated = usr.name
|
||||
rank = "AI"
|
||||
else if(isrobot(usr))
|
||||
authenticated = usr.name
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
rank = "[R.modtype] [R.braintype]"
|
||||
else if(istype(scan, /obj/item/weapon/card/id))
|
||||
if(check_access(scan))
|
||||
authenticated = scan.registered_name
|
||||
rank = scan.assignment
|
||||
|
||||
if(authenticated)
|
||||
active1 = null
|
||||
screen = SKILL_DATA_R_LIST
|
||||
|
||||
if(authenticated)
|
||||
var/incapable = (usr.stat || usr.restrained() || (!in_range(src, usr) && !issilicon(usr)))
|
||||
if(href_list["logout"])
|
||||
authenticated = null
|
||||
screen = null
|
||||
active1 = null
|
||||
|
||||
else if(href_list["sort"])
|
||||
// Reverse the order if clicked twice
|
||||
if(sortBy == href_list["sort"])
|
||||
if(order == 1)
|
||||
order = -1
|
||||
else
|
||||
order = 1
|
||||
else
|
||||
sortBy = href_list["sort"]
|
||||
order = initial(order)
|
||||
|
||||
else if(href_list["screen"])
|
||||
screen = text2num(href_list["screen"])
|
||||
if(screen < 1)
|
||||
screen = SKILL_DATA_R_LIST
|
||||
|
||||
active1 = null
|
||||
|
||||
else if(href_list["d_rec"])
|
||||
var/datum/data/record/R = locate(href_list["d_rec"])
|
||||
if(!data_core.general.Find(R))
|
||||
setTemp("<h3><span class='bad'>Record not found!</span></h3>")
|
||||
return 1
|
||||
active1 = R
|
||||
screen = SKILL_DATA_RECORD
|
||||
|
||||
else if(href_list["del_all"])
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "val" = "del_all2=1", "status" = null)
|
||||
buttons[++buttons.len] = list("name" = "No", "icon" = "times", "val" = null, "status" = null)
|
||||
setTemp("<h3>Are you sure you wish to delete all employment records?</h3>", buttons)
|
||||
|
||||
else if(href_list["del_rg"])
|
||||
if(active1)
|
||||
var/list/buttons = list()
|
||||
buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "val" = "del_rg2=1", "status" = null)
|
||||
buttons[++buttons.len] = list("name" = "No", "icon" = "times", "val" = null, "status" = null)
|
||||
setTemp("<h3>Are you sure you wish to delete the record (ALL)?</h3>", buttons)
|
||||
|
||||
else if(href_list["new_g"])
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
var/datum/data/record/G = new /datum/data/record()
|
||||
G.fields["name"] = "New Record"
|
||||
G.fields["id"] = "[add_zero(num2hex(rand(1, 1.6777215E7)), 6)]"
|
||||
G.fields["rank"] = "Unassigned"
|
||||
G.fields["real_rank"] = "Unassigned"
|
||||
G.fields["sex"] = "Male"
|
||||
G.fields["age"] = "Unknown"
|
||||
G.fields["fingerprint"] = "Unknown"
|
||||
G.fields["p_stat"] = "Active"
|
||||
G.fields["m_stat"] = "Stable"
|
||||
G.fields["species"] = "Human"
|
||||
data_core.general += G
|
||||
active1 = G
|
||||
|
||||
else if(href_list["print_r"])
|
||||
if(!printing)
|
||||
printing = 1
|
||||
playsound(loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1)
|
||||
sleep(50)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc)
|
||||
P.info = "<CENTER><B>Employment Record</B></CENTER><BR>"
|
||||
if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
|
||||
P.info += {"Name: [active1.fields["name"]] ID: [active1.fields["id"]]
|
||||
<BR>\nSex: [active1.fields["sex"]]
|
||||
<BR>\nAge: [active1.fields["age"]]
|
||||
<BR>\nFingerprint: [active1.fields["fingerprint"]]
|
||||
<BR>\nPhysical Status: [active1.fields["p_stat"]]
|
||||
<BR>\nMental Status: [active1.fields["m_stat"]]
|
||||
<BR>\nEmployment/Skills Summary:[active1.fields["notes"]]<BR>"}
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
P.info += "</TT>"
|
||||
P.name = "paper - 'Employment Record'"
|
||||
printing = 0
|
||||
|
||||
if(href_list["field"])
|
||||
if(incapable)
|
||||
return 1
|
||||
var/a1 = active1
|
||||
switch(href_list["field"])
|
||||
if("name")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = reject_bad_name(input("Please input name:", "Secure. records", active1.fields["name"], null) as text)
|
||||
if(!t1 || !length(trim(t1)) || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["name"] = t1
|
||||
if("id")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["id"] = t1
|
||||
if("fingerprint")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["fingerprint"] = t1
|
||||
if("sex")
|
||||
if(istype(active1, /datum/data/record))
|
||||
if(active1.fields["sex"] == "Male")
|
||||
active1.fields["sex"] = "Female"
|
||||
else
|
||||
alert(usr, "You do not have the required rank to do this!")
|
||||
if("species")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)),1,MAX_MESSAGE_LEN)
|
||||
if((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1))
|
||||
return
|
||||
active1.fields["species"] = t1
|
||||
|
||||
//TEMPORARY MENU FUNCTIONS
|
||||
else//To properly clear as per clear screen.
|
||||
temp=null
|
||||
switch(href_list["choice"])
|
||||
if("Change Rank")
|
||||
if(active1)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
active1.fields["rank"] = href_list["rank"]
|
||||
if(href_list["rank"] in joblist)
|
||||
active1.fields["real_rank"] = href_list["real_rank"]
|
||||
|
||||
if("Delete Record (ALL) Execute")
|
||||
if(active1)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"]))
|
||||
qdel(R)
|
||||
else
|
||||
qdel(active1)
|
||||
active1.fields["sex"] = "Male"
|
||||
if("age")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["age"] = t1
|
||||
if("rank")
|
||||
var/list/L = list("Head of Personnel", "Captain", "AI")
|
||||
//This was so silly before the change. Now it actually works without beating your head against the keyboard. /N
|
||||
if(istype(active1, /datum/data/record) && L.Find(rank))
|
||||
var/list/buttons = list()
|
||||
for(var/rank in joblist)
|
||||
buttons[++buttons.len] = list("name" = rank, "icon" = null, "val" = "rank=[rank]", "status" = (active1.fields["rank"] == rank ? "selected" : null))
|
||||
setTemp("<h3>Rank</h3>", buttons)
|
||||
else
|
||||
temp = "This function does not appear to be working at the moment. Our apologies."
|
||||
setTemp("<span class='bad'>You do not have the required rank to do this!</span>")
|
||||
if("species")
|
||||
if(istype(active1, /datum/data/record))
|
||||
var/t1 = copytext(trim(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message)), 1, MAX_MESSAGE_LEN)
|
||||
if(!t1 || incapable || active1 != a1)
|
||||
return 1
|
||||
active1.fields["species"] = t1
|
||||
return 1
|
||||
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
return
|
||||
/obj/machinery/computer/skills/proc/setTemp(text, list/buttons = list())
|
||||
temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0)
|
||||
|
||||
/obj/machinery/computer/skills/emp_act(severity)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
@@ -393,7 +303,7 @@ What a mess.*/
|
||||
if(1)
|
||||
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
|
||||
if(2)
|
||||
R.fields["sex"] = pick("Male", "Female")
|
||||
R.fields["sex"] = pick("Male", "Female")
|
||||
if(3)
|
||||
R.fields["age"] = rand(5, 85)
|
||||
if(4)
|
||||
@@ -409,3 +319,7 @@ What a mess.*/
|
||||
continue
|
||||
|
||||
..(severity)
|
||||
|
||||
#undef SKILL_DATA_R_LIST
|
||||
#undef SKILL_DATA_MAINT
|
||||
#undef SKILL_DATA_RECORD
|
||||
@@ -34,7 +34,7 @@
|
||||
var/main_power_timer = null
|
||||
var/backup_power_timer = null
|
||||
var/spawnPowerRestoreRunning = 0
|
||||
var/welded = null
|
||||
var/welded = FALSE
|
||||
var/locked = 0
|
||||
var/lights = 1 // bolt lights show by default
|
||||
var/datum/wires/airlock/wires = null
|
||||
@@ -90,6 +90,9 @@
|
||||
icon = 'icons/obj/doors/Doorext.dmi'
|
||||
assembly_type = /obj/structure/door_assembly/door_assembly_ext
|
||||
|
||||
/obj/machinery/door/airlock/welded
|
||||
welded = 1
|
||||
|
||||
/obj/machinery/door/airlock/glass
|
||||
name = "Glass Airlock"
|
||||
icon = 'icons/obj/doors/Doorglass.dmi'
|
||||
@@ -557,8 +560,8 @@ About the new airlock wires panel:
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/attack_ghost(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/door/airlock/attack_ai(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
@@ -990,14 +993,17 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/New()
|
||||
..()
|
||||
wires = new(src)
|
||||
|
||||
/obj/machinery/door/airlock/initialize()
|
||||
. = ..()
|
||||
if(closeOtherId != null)
|
||||
spawn (5)
|
||||
for(var/obj/machinery/door/airlock/A in airlocks)
|
||||
if(A.closeOtherId == closeOtherId && A != src)
|
||||
closeOther = A
|
||||
break
|
||||
for(var/obj/machinery/door/airlock/A in airlocks)
|
||||
if(A.closeOtherId == closeOtherId && A != src)
|
||||
closeOther = A
|
||||
break
|
||||
if(frozen)
|
||||
welded = 1
|
||||
welded = TRUE
|
||||
if(welded)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob, params)
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
var/autoclose_timer
|
||||
var/glass = 0
|
||||
var/normalspeed = 1
|
||||
var/auto_close_time = 150
|
||||
var/auto_close_time_dangerous = 5
|
||||
var/heat_proof = 0 // For glass airlocks/opacity firedoors
|
||||
var/emergency = 0
|
||||
var/air_properties_vary_with_direction = 0
|
||||
@@ -116,8 +118,8 @@
|
||||
|
||||
/obj/machinery/door/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/door/attack_hand(mob/user)
|
||||
return attackby(user, user)
|
||||
|
||||
@@ -130,7 +132,7 @@
|
||||
if(istype(I, /obj/item/device/detective_scanner))
|
||||
return
|
||||
|
||||
if(operating || isrobot(user))
|
||||
if(operating || isrobot(user))
|
||||
return //borgs can't attack doors open because it conflicts with their AI-like interaction with them.
|
||||
|
||||
add_fingerprint(user)
|
||||
@@ -231,7 +233,7 @@
|
||||
|
||||
// The `addtimer` system has the advantage of being cancelable
|
||||
if(autoclose)
|
||||
autoclose_timer = addtimer(src, "autoclose", normalspeed ? 150 : 5, unique = 1)
|
||||
autoclose_timer = addtimer(src, "autoclose", normalspeed ? auto_close_time : auto_close_time_dangerous, unique = 1)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -13,22 +13,27 @@
|
||||
icon = 'icons/obj/doors/Doorfireglass.dmi'
|
||||
icon_state = "door_open"
|
||||
opacity = 0
|
||||
density = 0
|
||||
heat_proof = 1
|
||||
glass = 1
|
||||
density = FALSE
|
||||
heat_proof = TRUE
|
||||
glass = TRUE
|
||||
power_channel = ENVIRON
|
||||
closed_layer = 3.11
|
||||
auto_close_time = 50
|
||||
|
||||
var/assembly_type = /obj/structure/firelock_frame
|
||||
var/can_force = TRUE
|
||||
var/force_open_time = 300
|
||||
var/can_crush = TRUE
|
||||
var/assembly_type = /obj/structure/firelock_frame
|
||||
var/nextstate = null
|
||||
var/welded = 0
|
||||
var/boltslocked = 1
|
||||
var/can_deconstruct = 1
|
||||
var/welded = FALSE
|
||||
var/boltslocked = TRUE
|
||||
var/can_deconstruct = TRUE
|
||||
var/active_alarm = FALSE
|
||||
|
||||
/obj/machinery/door/firedoor/Bumped(atom/AM)
|
||||
if(p_open || operating)
|
||||
if(p_open || operating)
|
||||
return
|
||||
if(!density)
|
||||
if(!density)
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
@@ -38,7 +43,7 @@
|
||||
latetoggle()
|
||||
else
|
||||
stat |= NOPOWER
|
||||
return
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params)
|
||||
add_fingerprint(user)
|
||||
@@ -81,30 +86,44 @@
|
||||
|
||||
if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe))
|
||||
if(istype(C, /obj/item/weapon/twohanded/fireaxe))
|
||||
var/obj/item/weapon/twohanded/fireaxe/F = C
|
||||
var/obj/item/weapon/twohanded/fireaxe/F = C
|
||||
if(!F.wielded)
|
||||
return
|
||||
|
||||
user.visible_message("[user] forces \the [src] with [C].",
|
||||
"You force \the [src] with [C].")
|
||||
if(density)
|
||||
autoclose = TRUE
|
||||
open()
|
||||
else
|
||||
close()
|
||||
|
||||
/obj/machinery/door/firedoor/attack_hand(mob/user)
|
||||
add_fingerprint(user)
|
||||
if(welded || operating || stat & NOPOWER)
|
||||
/obj/machinery/door/firedoor/attack_hand(mob/user)
|
||||
if(operating || !density)
|
||||
return
|
||||
if(density)
|
||||
open()
|
||||
else
|
||||
close()
|
||||
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(can_force && (!glass || user.a_intent != I_HELP))
|
||||
user.visible_message("<span class='notice'>[user] begins forcing \the [src].</span>", \
|
||||
"<span class='notice'>You begin forcing \the [src].</span>")
|
||||
if(do_after(user, force_open_time, target = src))
|
||||
user.visible_message("<span class='notice'>[user] forces \the [src].</span>", \
|
||||
"<span class='notice'>You force \the [src].</span>")
|
||||
autoclose = TRUE
|
||||
open()
|
||||
else if(glass)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.visible_message("<span class='warning'>[user] bangs on \the [src].</span>",
|
||||
"<span class='warning'>You bang on \the [src].</span>")
|
||||
playsound(get_turf(src), 'sound/effects/Glassknock.ogg', 10, 1)
|
||||
|
||||
/obj/machinery/door/firedoor/attack_ai(mob/user)
|
||||
attack_hand(user)
|
||||
|
||||
forcetoggle()
|
||||
|
||||
/obj/machinery/door/firedoor/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
attack_hand(user)
|
||||
forcetoggle(TRUE)
|
||||
|
||||
/obj/machinery/door/firedoor/attack_alien(mob/user)
|
||||
add_fingerprint(user)
|
||||
@@ -122,6 +141,8 @@
|
||||
|
||||
/obj/machinery/door/firedoor/update_icon()
|
||||
overlays.Cut()
|
||||
if(active_alarm && !(stat & NOPOWER))
|
||||
overlays += image('icons/obj/doors/Doorfire.dmi', "alarmlights")
|
||||
if(density)
|
||||
icon_state = "door_closed"
|
||||
if(welded)
|
||||
@@ -131,14 +152,28 @@
|
||||
if(welded)
|
||||
overlays += "welded_open"
|
||||
|
||||
/obj/machinery/door/firedoor/proc/activate_alarm()
|
||||
active_alarm = TRUE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/firedoor/proc/deactivate_alarm()
|
||||
active_alarm = FALSE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/firedoor/open()
|
||||
. = ..()
|
||||
latetoggle()
|
||||
|
||||
/obj/machinery/door/firedoor/close()
|
||||
. = ..()
|
||||
if(can_crush)
|
||||
crush()
|
||||
latetoggle()
|
||||
|
||||
/obj/machinery/door/firedoor/autoclose()
|
||||
if(active_alarm)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/door/firedoor/proc/latetoggle()
|
||||
if(operating || stat & NOPOWER || !nextstate)
|
||||
return
|
||||
@@ -149,7 +184,15 @@
|
||||
if(CLOSED)
|
||||
nextstate = null
|
||||
close()
|
||||
|
||||
|
||||
/obj/machinery/door/firedoor/proc/forcetoggle(magic = FALSE)
|
||||
if(!magic && (operating || stat & NOPOWER))
|
||||
return
|
||||
if(density)
|
||||
open()
|
||||
else
|
||||
close()
|
||||
|
||||
/obj/machinery/door/firedoor/proc/deconstruct(disassembled = TRUE)
|
||||
if(can_deconstruct)
|
||||
var/obj/structure/firelock_frame/F = new assembly_type(get_turf(src))
|
||||
@@ -159,10 +202,11 @@
|
||||
F.constructionStep = CONSTRUCTION_WIRES_EXPOSED
|
||||
F.update_icon()
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/firedoor/border_only
|
||||
|
||||
/obj/machinery/door/firedoor/border_only
|
||||
icon = 'icons/obj/doors/edge_Doorfire.dmi'
|
||||
flags = ON_BORDER
|
||||
can_crush = FALSE
|
||||
|
||||
/obj/machinery/door/firedoor/border_only/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
@@ -189,10 +233,11 @@
|
||||
/obj/machinery/door/firedoor/heavy
|
||||
name = "heavy firelock"
|
||||
icon = 'icons/obj/doors/Doorfire.dmi'
|
||||
glass = 0
|
||||
glass = FALSE
|
||||
opacity = 1
|
||||
assembly_type = /obj/structure/firelock_frame/heavy
|
||||
|
||||
can_force = FALSE
|
||||
|
||||
/obj/machinery/door/firedoor/heavy/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -215,7 +260,7 @@
|
||||
density = 1
|
||||
var/constructionStep = CONSTRUCTION_NOCIRCUIT
|
||||
var/reinforced = 0
|
||||
|
||||
|
||||
/obj/structure/firelock_frame/heavy
|
||||
name = "heavy firelock frame"
|
||||
reinforced = 1
|
||||
@@ -398,4 +443,4 @@
|
||||
constructionStep = CONSTRUCTION_GUTTED
|
||||
update_icon()
|
||||
return
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
+320
-508
File diff suppressed because it is too large
Load Diff
@@ -192,8 +192,8 @@
|
||||
// Engineering
|
||||
if(istype(O,/obj/item/stack/sheet))
|
||||
var/obj/item/stack/sheet/S = O
|
||||
if(S.amount < 50)
|
||||
S.amount += 1 * coeff
|
||||
if(S.amount < S.max_amount)
|
||||
S.amount += round(min(1 * coeff, S.max_amount - S.amount))
|
||||
// Security
|
||||
if(istype(O,/obj/item/device/flash))
|
||||
var/obj/item/device/flash/F = O
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = "<TITLE>Telecommunication Server Monitor</TITLE><center><b>Telecommunications Server Monitor</b></center>"
|
||||
var/list/dat = list()
|
||||
dat += "<TITLE>Telecommunication Server Monitor</TITLE><center><b>Telecommunications Server Monitor</b></center>"
|
||||
|
||||
switch(screen)
|
||||
|
||||
@@ -63,55 +64,16 @@
|
||||
var/i = 0
|
||||
for(var/datum/comm_log_entry/C in SelectedServer.log_entries)
|
||||
i++
|
||||
|
||||
|
||||
// If the log is a speech file
|
||||
if(C.input_type == "Speech File")
|
||||
|
||||
dat += "<li><font color = #008F00>[C.name]</font color> <font color = #FF0000><a href='?src=[UID()];delete=[i]'>\[X\]</a></font color><br>"
|
||||
|
||||
// -- Determine race of orator --
|
||||
|
||||
var/race // The actual race of the mob
|
||||
var/language = "Human" // MMIs, pAIs, Cyborgs and humans all speak Human
|
||||
var/mobtype = C.parameters["mobtype"]
|
||||
var/mob/M = new mobtype
|
||||
|
||||
if(ishuman(M) || isbrain(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
race = "[H.species.name]"
|
||||
|
||||
|
||||
else if(issmall(M))
|
||||
race = "Monkey"
|
||||
language = race
|
||||
|
||||
else if(issilicon(M) || C.parameters["job"] == "AI") // sometimes M gets deleted prematurely for AIs... just check the job
|
||||
race = "Artificial Life"
|
||||
|
||||
else if(isslime(M)) // NT knows a lot about slimes, but not aliens. Can identify slimes
|
||||
race = "Slime"
|
||||
language = race
|
||||
|
||||
else if(isbot(M))
|
||||
race = "Bot"
|
||||
|
||||
else if(isanimal(M))
|
||||
race = "Domestic Animal"
|
||||
language = race
|
||||
|
||||
else
|
||||
race = "<i>Unidentifiable</i>"
|
||||
language = race
|
||||
|
||||
qdel(M)
|
||||
|
||||
// -- If the orator is a human, or universal translate is active, OR mob has universal speech on --
|
||||
|
||||
if(language == "Human" || universal_translate || C.parameters["uspeech"])
|
||||
if(user.say_understands(null, C.parameters["language"]) || universal_translate || C.parameters["uspeech"])
|
||||
dat += "<u><font color = #18743E>Data type</font color></u>: [C.input_type]<br>"
|
||||
dat += "<u><font color = #18743E>Source</font color></u>: [C.parameters["name"]] (Job: [C.parameters["job"]])<br>"
|
||||
dat += "<u><font color = #18743E>Class</font color></u>: [race]<br>"
|
||||
dat += "<u><font color = #18743E>Class</font color></u>: [C.parameters["race"]]<br>"
|
||||
dat += "<u><font color = #18743E>Contents</font color></u>: \"[C.parameters["message"]]\"<br>"
|
||||
|
||||
|
||||
@@ -120,7 +82,7 @@
|
||||
else
|
||||
dat += "<u><font color = #18743E>Data type</font color></u>: Audio File<br>"
|
||||
dat += "<u><font color = #18743E>Source</font color></u>: <i>Unidentifiable</i><br>"
|
||||
dat += "<u><font color = #18743E>Class</font color></u>: [race]<br>"
|
||||
dat += "<u><font color = #18743E>Class</font color></u>: [C.parameters["race"]]<br>"
|
||||
dat += "<u><font color = #18743E>Contents</font color></u>: <i>Unintelligble</i><br>"
|
||||
|
||||
dat += "</li><br>"
|
||||
@@ -136,7 +98,7 @@
|
||||
|
||||
|
||||
|
||||
user << browse(dat, "window=comm_monitor;size=575x400")
|
||||
user << browse(dat.Join(""), "window=comm_monitor;size=575x400")
|
||||
onclose(user, "server_control")
|
||||
|
||||
temp = ""
|
||||
|
||||
@@ -475,7 +475,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
|
||||
|
||||
// Copy the signal.data entries we want
|
||||
log.parameters["mobtype"] = signal.data["mobtype"]
|
||||
log.parameters["race"] = signal.data["race"]
|
||||
log.parameters["job"] = signal.data["job"]
|
||||
log.parameters["language"] = signal.data["language"]
|
||||
log.parameters["key"] = signal.data["key"]
|
||||
log.parameters["vmessage"] = signal.data["message"]
|
||||
log.parameters["vname"] = signal.data["vname"]
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
//This item is not completely unused- the central datacore datum uses it.
|
||||
/*
|
||||
* This item is completely unused, but removing it will break something in R&D and Radio code causing PDA and Ninja code to fail on compile
|
||||
*/
|
||||
|
||||
/obj/effect/datacore
|
||||
name = "datacore"
|
||||
var/medical[] = list()
|
||||
var/general[] = list()
|
||||
var/security[] = list()
|
||||
//This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character().
|
||||
var/locked[] = list()
|
||||
|
||||
|
||||
/obj/effect/datacore/proc/get_manifest(monochrome, OOC)
|
||||
var/list/heads = new()
|
||||
var/list/sec = new()
|
||||
var/list/eng = new()
|
||||
var/list/med = new()
|
||||
var/list/sci = new()
|
||||
var/list/ser = new()
|
||||
var/list/sup = new()
|
||||
var/list/bot = new()
|
||||
var/list/misc = new()
|
||||
var/list/isactive = new()
|
||||
var/dat = {"
|
||||
<head><style>
|
||||
.manifest {border-collapse:collapse;}
|
||||
.manifest td, th {border:1px solid [monochrome?"black":"#DEF; background-color:white; color:black"]; padding:.25em}
|
||||
.manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: #48C; color:white"]}
|
||||
.manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: #488;"] }
|
||||
.manifest td:first-child {text-align:right}
|
||||
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
|
||||
</style></head>
|
||||
<table class="manifest" width='350px'>
|
||||
<tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
|
||||
"}
|
||||
var/even = 0
|
||||
// sort mobs
|
||||
for(var/datum/data/record/t in data_core.general)
|
||||
var/name = t.fields["name"]
|
||||
var/rank = t.fields["rank"]
|
||||
var/real_rank = t.fields["real_rank"]
|
||||
if(OOC)
|
||||
var/active = 0
|
||||
for(var/mob/M in player_list)
|
||||
if(M.real_name == name && M.client && M.client.inactivity <= 10 * 60 * 10)
|
||||
active = 1
|
||||
break
|
||||
isactive[name] = active ? "Active" : "Inactive"
|
||||
else
|
||||
isactive[name] = t.fields["p_stat"]
|
||||
// to_chat(world, "[name]: [rank]")
|
||||
//cael - to prevent multiple appearances of a player/job combination, add a continue after each line
|
||||
var/department = 0
|
||||
if(real_rank in command_positions)
|
||||
heads[name] = rank
|
||||
department = 1
|
||||
if(real_rank in security_positions)
|
||||
sec[name] = rank
|
||||
department = 1
|
||||
if(real_rank in engineering_positions)
|
||||
eng[name] = rank
|
||||
department = 1
|
||||
if(real_rank in medical_positions)
|
||||
med[name] = rank
|
||||
department = 1
|
||||
if(real_rank in science_positions)
|
||||
sci[name] = rank
|
||||
department = 1
|
||||
if(real_rank in service_positions)
|
||||
ser[name] = rank
|
||||
department = 1
|
||||
if(real_rank in supply_positions)
|
||||
sup[name] = rank
|
||||
department = 1
|
||||
if(real_rank in nonhuman_positions)
|
||||
bot[name] = rank
|
||||
department = 1
|
||||
if(!department && !(name in heads))
|
||||
misc[name] = rank
|
||||
if(heads.len > 0)
|
||||
dat += "<tr><th colspan=3>Heads</th></tr>"
|
||||
for(name in heads)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sec.len > 0)
|
||||
dat += "<tr><th colspan=3>Security</th></tr>"
|
||||
for(name in sec)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(eng.len > 0)
|
||||
dat += "<tr><th colspan=3>Engineering</th></tr>"
|
||||
for(name in eng)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(med.len > 0)
|
||||
dat += "<tr><th colspan=3>Medical</th></tr>"
|
||||
for(name in med)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sci.len > 0)
|
||||
dat += "<tr><th colspan=3>Science</th></tr>"
|
||||
for(name in sci)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(ser.len > 0)
|
||||
dat += "<tr><th colspan=3>Service</th></tr>"
|
||||
for(name in ser)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[ser[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sup.len > 0)
|
||||
dat += "<tr><th colspan=3>Supply</th></tr>"
|
||||
for(name in sup)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sup[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
// in case somebody is insane and added them to the manifest, why not
|
||||
if(bot.len > 0)
|
||||
dat += "<tr><th colspan=3>Silicon</th></tr>"
|
||||
for(name in bot)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
// misc guys
|
||||
if(misc.len > 0)
|
||||
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
|
||||
for(name in misc)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
|
||||
dat += "</table>"
|
||||
dat = replacetext(dat, "\n", "") // so it can be placed on paper correctly
|
||||
dat = replacetext(dat, "\t", "")
|
||||
return dat
|
||||
|
||||
|
||||
/*
|
||||
We can't just insert in HTML into the nanoUI so we need the raw data to play with.
|
||||
Instead of creating this list over and over when someone leaves their PDA open to the page
|
||||
we'll only update it when it changes. The PDA_Manifest global list is zeroed out upon any change
|
||||
using /obj/effect/datacore/proc/manifest_inject( ), or manifest_insert( )
|
||||
*/
|
||||
|
||||
var/global/list/PDA_Manifest = list()
|
||||
|
||||
/obj/effect/datacore/proc/get_manifest_json()
|
||||
if(PDA_Manifest.len)
|
||||
return
|
||||
var/heads[0]
|
||||
var/sec[0]
|
||||
var/eng[0]
|
||||
var/med[0]
|
||||
var/sci[0]
|
||||
var/ser[0]
|
||||
var/sup[0]
|
||||
var/bot[0]
|
||||
var/misc[0]
|
||||
for(var/datum/data/record/t in data_core.general)
|
||||
var/name = sanitize(t.fields["name"])
|
||||
var/rank = sanitize(t.fields["rank"])
|
||||
var/real_rank = t.fields["real_rank"]
|
||||
|
||||
var/isactive = t.fields["p_stat"]
|
||||
var/department = 0
|
||||
var/depthead = 0 // Department Heads will be placed at the top of their lists.
|
||||
if(real_rank in command_positions)
|
||||
heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
depthead = 1
|
||||
if(rank == "Captain" && heads.len != 1)
|
||||
heads.Swap(1, heads.len)
|
||||
|
||||
if(real_rank in security_positions)
|
||||
sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sec.len != 1)
|
||||
sec.Swap(1, sec.len)
|
||||
|
||||
if(real_rank in engineering_positions)
|
||||
eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && eng.len != 1)
|
||||
eng.Swap(1, eng.len)
|
||||
|
||||
if(real_rank in medical_positions)
|
||||
med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && med.len != 1)
|
||||
med.Swap(1, med.len)
|
||||
|
||||
if(real_rank in science_positions)
|
||||
sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sci.len != 1)
|
||||
sci.Swap(1, sci.len)
|
||||
|
||||
if(real_rank in service_positions)
|
||||
ser[++ser.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && ser.len != 1)
|
||||
ser.Swap(1, ser.len)
|
||||
|
||||
if(real_rank in supply_positions)
|
||||
sup[++sup.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
if(depthead && sup.len != 1)
|
||||
sup.Swap(1, sup.len)
|
||||
|
||||
if(real_rank in nonhuman_positions)
|
||||
bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
department = 1
|
||||
|
||||
if(!department && !(name in heads))
|
||||
misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive)
|
||||
|
||||
|
||||
PDA_Manifest = list(\
|
||||
"heads" = heads,\
|
||||
"sec" = sec,\
|
||||
"eng" = eng,\
|
||||
"med" = med,\
|
||||
"sci" = sci,\
|
||||
"ser" = ser,\
|
||||
"sup" = sup,\
|
||||
"bot" = bot,\
|
||||
"misc" = misc\
|
||||
)
|
||||
return
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/obj/effect/spawner/random_barrier
|
||||
name = "random tile"
|
||||
var/list/result = list(
|
||||
/turf/simulated/floor/plasteel = 1,
|
||||
/turf/simulated/wall = 1,
|
||||
/obj/structure/falsewall = 1,
|
||||
/obj/effect/spawner/window/reinforced = 1,
|
||||
/obj/machinery/door/airlock = 1,
|
||||
/obj/machinery/door/airlock/welded = 1,
|
||||
/obj/structure/barricade/wooden = 1)
|
||||
|
||||
// This needs to come before the initialization wave because
|
||||
// the thing it creates might need to be initialized too
|
||||
/obj/effect/spawner/random_barrier/New()
|
||||
. = ..()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
log_runtime(EXCEPTION("Barrier spawner placed in nullspace!"), src)
|
||||
return
|
||||
var/thing_to_place = pickweight(result)
|
||||
if(ispath(thing_to_place, /turf))
|
||||
T.ChangeTurf(thing_to_place)
|
||||
else
|
||||
new thing_to_place(T)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/random_barrier/wall_probably
|
||||
name = "probably a wall"
|
||||
result = list(
|
||||
/turf/simulated/wall = 9,
|
||||
/obj/structure/falsewall = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random_barrier/floor_probably
|
||||
name = "probably a floor"
|
||||
result = list(
|
||||
/turf/simulated/floor/plasteel = 3,
|
||||
/turf/simulated/wall = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random_barrier/obstruction
|
||||
name = "obstruction"
|
||||
result = list(
|
||||
/turf/simulated/wall = 1,
|
||||
/obj/structure/falsewall = 1,
|
||||
/obj/structure/barricade/wooden = 1,
|
||||
/obj/machinery/door/airlock/welded = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/random_barrier/possibly_welded_airlock
|
||||
name = "possibly welded airlock"
|
||||
result = list(
|
||||
/obj/machinery/door/airlock = 3,
|
||||
/obj/machinery/door/airlock/welded = 1
|
||||
)
|
||||
@@ -12,24 +12,22 @@
|
||||
var/list/insultmsg = list("FUCK EVERYONE!", "I'M A TATER!", "ALL SECURITY TO SHOOT ME ON SIGHT!", "I HAVE A BOMB!", "CAPTAIN IS A COMDOM!", "FOR THE SYNDICATE!")
|
||||
|
||||
/obj/item/device/megaphone/attack_self(mob/living/user as mob)
|
||||
if(user.client)
|
||||
if(user.client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "\red You cannot speak in IC (muted).")
|
||||
return
|
||||
if(!ishuman(user))
|
||||
to_chat(user, "\red You don't know how to use this!")
|
||||
if(user.client && (user.client.prefs.muted & MUTE_IC))
|
||||
to_chat(src, "<span class='warning'>You cannot speak in IC (muted).</span>")
|
||||
return
|
||||
if(user.silent)
|
||||
if(!ishuman(user))
|
||||
to_chat(user, "<span class='warning'>You don't know how to use this!</span>")
|
||||
return
|
||||
if(!user.can_speak())
|
||||
to_chat(user, "<span class='warning'>You find yourself unable to speak at all.</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H && H.mind)
|
||||
if(H.mind.miming)
|
||||
to_chat(user, "<span class='warning'>Your vow of silence prevents you from speaking.</span>")
|
||||
return
|
||||
if(H && H.mind && H.mind.miming)
|
||||
to_chat(user, "<span class='warning'>Your vow of silence prevents you from speaking.</span>")
|
||||
return
|
||||
if(spamcheck)
|
||||
to_chat(user, "\red \The [src] needs to recharge!")
|
||||
to_chat(user, "<span class='warning'>\The [src] needs to recharge!</span>")
|
||||
return
|
||||
|
||||
var/message = input(user, "Shout a message:", "Megaphone") as text|null
|
||||
@@ -39,28 +37,27 @@
|
||||
if(!message)
|
||||
return
|
||||
message = capitalize(message)
|
||||
if((src.loc == user && usr.stat == 0))
|
||||
if((loc == user && !user.incapacitated()))
|
||||
if(emagged)
|
||||
if(insults)
|
||||
saymsg(user, pick(insultmsg))
|
||||
insults--
|
||||
else
|
||||
to_chat(user, "\red *BZZZZzzzzzt*")
|
||||
to_chat(user, "<span class='warning'>*BZZZZzzzzzt*</span>")
|
||||
else
|
||||
saymsg(user, message)
|
||||
|
||||
spamcheck = 1
|
||||
spawn(20)
|
||||
spamcheck = 0
|
||||
return
|
||||
|
||||
/obj/item/device/megaphone/proc/saymsg(mob/living/user as mob, message)
|
||||
audible_message("<span class='game say'><span class='name'>[user]</span> broadcasts, <FONT size=3>\"[message]\"</FONT></span>", hearing_distance = 14)
|
||||
audible_message("<span class='game say'><span class='name'>[user]</span> broadcasts, <span class='reallybig'>\"[message]\"</span></span>", hearing_distance = 14)
|
||||
for(var/obj/O in oview(14, get_turf(src)))
|
||||
O.hear_talk(user, "<FONT size=3>[message]</FONT>")
|
||||
O.hear_talk(user, "<span class='reallybig'>[message]</span>")
|
||||
|
||||
/obj/item/device/megaphone/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
to_chat(user, "\red You overload \the [src]'s voice synthesizer.")
|
||||
to_chat(user, "<span class='warning'>You overload \the [src]'s voice synthesizer.</span>")
|
||||
emagged = 1
|
||||
insults = rand(1, 3)//to prevent dickflooding
|
||||
|
||||
@@ -242,7 +242,6 @@ var/global/list/default_medbay_channels = list(
|
||||
var/datum/radio_frequency/connection = null
|
||||
if(channel && channels && channels.len > 0)
|
||||
if(channel == "department")
|
||||
// to_chat(world, "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"")
|
||||
channel = channels[1]
|
||||
connection = secure_radio_connections[channel]
|
||||
else
|
||||
@@ -259,9 +258,8 @@ var/global/list/default_medbay_channels = list(
|
||||
Broadcast_Message(connection, A,
|
||||
0, "*garbled automated announcement*", src,
|
||||
message, from, "Automated Announcement", from, "synthesized voice",
|
||||
4, 0, zlevel, connection.frequency, follow_target=follow_target)
|
||||
4, 0, zlevel, connection.frequency, follow_target = follow_target)
|
||||
qdel(A)
|
||||
return
|
||||
|
||||
// Just a dummy mob used for making announcements, so we don't create AIs to do this
|
||||
// I'm not sure who thought that was a good idea. -- Crazylemon
|
||||
@@ -403,6 +401,7 @@ var/global/list/default_medbay_channels = list(
|
||||
// Identity-associated tags:
|
||||
"mob" = M, // store a reference to the mob
|
||||
"mobtype" = M.type, // the mob's type
|
||||
"race" = signal.get_race(M),
|
||||
"realname" = real_name, // the mob's real name
|
||||
"name" = displayname, // the mob's display name
|
||||
"job" = jobname, // the mob's job
|
||||
@@ -464,6 +463,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
"mob" = M, // store a reference to the mob
|
||||
"mobtype" = M.type, // the mob's type
|
||||
"race" = signal.get_race(M), // text to show next to mob in comms log console
|
||||
"realname" = real_name, // the mob's real name
|
||||
"name" = displayname, // the mob's display name
|
||||
"job" = jobname, // the mob's job
|
||||
@@ -562,7 +562,7 @@ var/global/list/default_medbay_channels = list(
|
||||
var/range = receive_range(freq, level)
|
||||
if(range > -1)
|
||||
return get_mobs_in_view(canhear_range, src)
|
||||
|
||||
|
||||
/obj/item/device/radio/proc/is_listening()
|
||||
var/is_listening = TRUE
|
||||
if(!on)
|
||||
@@ -573,11 +573,11 @@ var/global/list/default_medbay_channels = list(
|
||||
is_listening = FALSE
|
||||
|
||||
return is_listening
|
||||
|
||||
|
||||
/obj/item/device/radio/proc/send_announcement()
|
||||
if(is_listening())
|
||||
return get_mobs_in_view(canhear_range, src)
|
||||
|
||||
|
||||
return null
|
||||
|
||||
/obj/item/device/radio/examine(mob/user, var/distance = -1)
|
||||
|
||||
@@ -17,24 +17,41 @@ Mineral Sheets
|
||||
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/weapon/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Janitor Statue", /obj/structure/statue/silver/janitor, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Sec Officer Statue", /obj/structure/statue/silver/sec, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Sec Borg Statue", /obj/structure/statue/silver/secborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Med Doctor Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Captain Statue", /obj/structure/statue/diamond/captain, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Hologram Statue", /obj/structure/statue/diamond/ai1, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Nuke Statue", /obj/structure/statue/uranium/nuke, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
@@ -42,6 +59,12 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
null, \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("HoP Statue", /obj/structure/statue/gold/hop, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("CE Statue", /obj/structure/statue/gold/ce, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("RD Statue", /obj/structure/statue/gold/rd, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \
|
||||
)
|
||||
|
||||
@@ -49,6 +72,9 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Xenomorph Statue", /obj/structure/statue/plasma/xeno, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/plastic_recipes = list ( \
|
||||
@@ -71,6 +97,8 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \
|
||||
var/global/list/datum/stack_recipe/bananium_recipes = list ( \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("bananium grenade casing", /obj/item/weapon/grenade/bananade/casing, 4, on_floor = 1), \
|
||||
)
|
||||
@@ -79,6 +107,8 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
new/datum/stack_recipe("invisible wall", /obj/structure/barricade/mime, 5, one_per_turf = 1, on_floor = 1, time = 50), \
|
||||
null, \
|
||||
new/datum/stack_recipe("silent tile", /obj/item/stack/tile/mineral/tranquillite, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Mime Statue", /obj/structure/statue/tranquillite/mime, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
|
||||
@@ -80,8 +80,7 @@
|
||||
//TODO; Add support for reagents in water.
|
||||
if(target.loc == user)//No more spraying yourself when putting your extinguisher away
|
||||
return
|
||||
var/Refill = AttemptRefill(target, user)
|
||||
if(Refill)
|
||||
if(AttemptRefill(target, user))
|
||||
return
|
||||
if(!safety)
|
||||
if(src.reagents.total_volume < 1)
|
||||
@@ -164,4 +163,4 @@
|
||||
if(W.loc == my_target) break
|
||||
sleep(2)
|
||||
else
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
|
||||
var/mobname = "Will Robinson"
|
||||
activated = 0
|
||||
var/static/list/stealth_areas = typecacheof(list(/area/syndicate_station, /area/syndicate_mothership, /area/shuttle/syndicate_elite))
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
@@ -33,26 +34,26 @@
|
||||
/obj/item/weapon/implant/death_alarm/activate(var/cause)
|
||||
var/mob/M = imp_in
|
||||
var/area/t = get_area(M)
|
||||
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
a.follow_target = M
|
||||
|
||||
switch(cause)
|
||||
if("death")
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
|
||||
if(is_type_in_typecache(t, stealth_areas))
|
||||
//give the syndies a bit of stealth
|
||||
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
|
||||
else
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
|
||||
qdel(a)
|
||||
qdel(src)
|
||||
if("emp")
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
var/name = prob(50) ? t.name : pick(teleportlocs)
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
|
||||
qdel(a)
|
||||
else
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null)
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
|
||||
qdel(a)
|
||||
qdel(src)
|
||||
|
||||
qdel(a)
|
||||
|
||||
/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
|
||||
activate("emp") //let's shout that this dude is dead
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
/obj/item/weapon/tank/ui_action_click(mob/user)
|
||||
toggle_internals(user)
|
||||
|
||||
/obj/item/weapon/tank/proc/toggle_internals(mob/user)
|
||||
/obj/item/weapon/tank/proc/toggle_internals(mob/user, silent = FALSE)
|
||||
var/mob/living/carbon/C = user
|
||||
if(!istype(C))
|
||||
return 0
|
||||
@@ -65,13 +65,16 @@
|
||||
|
||||
if(can_open_valve)
|
||||
if(C.internal)
|
||||
to_chat(C, "<span class='notice'>You switch your internals to [src].</span>")
|
||||
if(!silent)
|
||||
to_chat(C, "<span class='notice'>You switch your internals to [src].</span>")
|
||||
else
|
||||
to_chat(C, "<span class='notice'>You open \the [src] valve.</span>")
|
||||
if(!silent)
|
||||
to_chat(C, "<span class='notice'>You open \the [src] valve.</span>")
|
||||
C.internal = src
|
||||
C.update_internals_hud_icon(1)
|
||||
else
|
||||
to_chat(C, "<span class='notice'>You are not wearing a suitable mask or helmet.</span>")
|
||||
if(!silent)
|
||||
to_chat(C, "<span class='notice'>You are not wearing a suitable mask or helmet.</span>")
|
||||
return 0
|
||||
|
||||
C.update_action_buttons_icon()
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
else
|
||||
new /obj/item/weapon/storage/backpack/satchel_cap(src)
|
||||
new /obj/item/weapon/book/manual/faxes(src)
|
||||
new /obj/item/clothing/head/crown/fancy(src)
|
||||
new /obj/item/weapon/storage/backpack/duffel/captain(src)
|
||||
new /obj/item/clothing/suit/captunic(src)
|
||||
new /obj/item/clothing/suit/captunic/capjacket(src)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
M.forceMove(loc)
|
||||
M.disabilities -= MUTE
|
||||
M.take_overall_damage((M.health - health - 100),0) //any new damage the statue incurred is transfered to the mob
|
||||
|
||||
|
||||
..()
|
||||
|
||||
/obj/structure/closet/statue/open()
|
||||
@@ -138,18 +138,3 @@
|
||||
dump_contents()
|
||||
visible_message("\red [src] shatters!. ")
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/structure/statue
|
||||
name = "statue"
|
||||
desc = "An incredibly lifelike marble carving"
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
icon_state = "human_male"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
obj/structure/statue/angel
|
||||
icon_state = "angelseen"
|
||||
|
||||
obj/structure/statue/corgi
|
||||
icon_state = "corgi"
|
||||
@@ -1,32 +0,0 @@
|
||||
/obj/structure/snowman
|
||||
name = "snowman"
|
||||
desc = "Seems someone made a snowman here."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "snowman"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
/obj/structure/kidanstatue
|
||||
name = "Obsidian Kidan warrior statue"
|
||||
desc = "A beautifully carved and menacing statue of a Kidan warrior made out of obsidian. It looks very heavy."
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "kidanstatue"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
/obj/structure/chickenstatue
|
||||
name = "Bronze Chickenman Statue"
|
||||
desc = "An antique and oriental-looking statue of a Chickenman made of bronze."
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "chickenstatue"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
|
||||
/obj/structure/clownstatue
|
||||
name = "Bananium Clown Statue"
|
||||
desc = "A golden statue made of bananium, commemorating the coronation of King Squiggles the Eighth."
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "clownstatue"
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -0,0 +1,370 @@
|
||||
/obj/structure/statue
|
||||
name = "statue"
|
||||
desc = "Placeholder. Yell at Firecage if you SOMEHOW see this."
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
icon_state = ""
|
||||
density = 1
|
||||
anchored = 0
|
||||
var/hardness = 1
|
||||
var/oreAmount = 5
|
||||
var/material_drop_type = /obj/item/stack/sheet/metal
|
||||
|
||||
/obj/structure/statue/attackby(obj/item/weapon/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(iswrench(W))
|
||||
if(anchored)
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 100, 1)
|
||||
user.visible_message("[user] is loosening the [name]'s bolts.", \
|
||||
"<span class='notice'>You are loosening the [name]'s bolts...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
if(!loc || !anchored)
|
||||
return
|
||||
user.visible_message("[user] loosened the [name]'s bolts!", \
|
||||
"<span class='notice'>You loosen the [name]'s bolts!</span>")
|
||||
anchored = 0
|
||||
else
|
||||
if(!isfloorturf(loc))
|
||||
user.visible_message("<span class='warning'>A floor must be present to secure the [name]!</span>")
|
||||
return
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 100, 1)
|
||||
user.visible_message("[user] is securing the [name]'s bolts...", \
|
||||
"<span class='notice'>You are securing the [name]'s bolts...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
if(!loc || anchored)
|
||||
return
|
||||
user.visible_message("[user] has secured the [name]'s bolts.", \
|
||||
"<span class='notice'>You have secured the [name]'s bolts.</span>")
|
||||
anchored = 1
|
||||
|
||||
else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
user.visible_message("[user] is slicing apart the [name]...", \
|
||||
"<span class='notice'>You are slicing apart the [name]...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
if(!loc)
|
||||
return
|
||||
user.visible_message("[user] slices apart the [name].", \
|
||||
"<span class='notice'>You slice apart the [name].</span>")
|
||||
Dismantle(TRUE)
|
||||
|
||||
else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
|
||||
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
|
||||
if(!loc)
|
||||
return
|
||||
user.visible_message("[user] destroys the [name]!", \
|
||||
"<span class='notice'>You destroy the [name].</span>")
|
||||
D.playDigSound()
|
||||
qdel(src)
|
||||
|
||||
else if(iswelder(W) && !anchored)
|
||||
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
|
||||
user.visible_message("[user] is slicing apart the [name].", \
|
||||
"<span class='notice'>You are slicing apart the [name]...</span>")
|
||||
if(do_after(user, 40, target = src))
|
||||
if(!loc)
|
||||
return
|
||||
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user] slices apart the [name].", \
|
||||
"<span class='notice'>You slice apart the [name]!</span>")
|
||||
Dismantle(TRUE)
|
||||
else
|
||||
hardness -= W.force/100
|
||||
..()
|
||||
CheckHardness()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/attack_hand(mob/living/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
add_fingerprint(user)
|
||||
user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
|
||||
"<span class='notice'>You rub some dust off from the [name]'s surface.</span>")
|
||||
|
||||
/obj/structure/statue/CanAtmosPass()
|
||||
return !density
|
||||
|
||||
/obj/structure/statue/bullet_act(obj/item/projectile/Proj)
|
||||
hardness -= Proj.damage
|
||||
..()
|
||||
CheckHardness()
|
||||
|
||||
/obj/structure/statue/proc/CheckHardness()
|
||||
if(hardness <= 0)
|
||||
Dismantle(TRUE)
|
||||
|
||||
/obj/structure/statue/proc/Dismantle(disassembled = TRUE)
|
||||
if(material_drop_type)
|
||||
var/drop_amt = oreAmount
|
||||
if(!disassembled)
|
||||
drop_amt -= 2
|
||||
if(drop_amt > 0)
|
||||
new material_drop_type(get_turf(src), drop_amt)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/statue/ex_act(severity = 1)
|
||||
switch(severity)
|
||||
if(1)
|
||||
Dismantle(TRUE)
|
||||
if(2)
|
||||
if(prob(20))
|
||||
Dismantle(TRUE)
|
||||
else
|
||||
hardness--
|
||||
CheckHardness()
|
||||
if(3)
|
||||
hardness -= 0.1
|
||||
CheckHardness()
|
||||
|
||||
/obj/structure/statue/uranium
|
||||
hardness = 3
|
||||
light_range = 2
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/uranium
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
|
||||
/obj/structure/statue/uranium/nuke
|
||||
name = "statue of a nuclear fission explosive"
|
||||
desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour."
|
||||
icon_state = "nuke"
|
||||
|
||||
/obj/structure/statue/uranium/eng
|
||||
name = "statue of an engineer"
|
||||
desc = "This statue has a sickening green colour."
|
||||
icon_state = "eng"
|
||||
|
||||
/obj/structure/statue/uranium/attackby(obj/item/weapon/W, mob/user, params)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/Bumped(atom/user)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/attack_hand(mob/user)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
for(var/mob/living/L in range(3,src))
|
||||
L.apply_effect(12,IRRADIATE,0)
|
||||
last_event = world.time
|
||||
active = null
|
||||
|
||||
/obj/structure/statue/plasma
|
||||
hardness = 2
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/plasma
|
||||
desc = "This statue is suitably made from plasma."
|
||||
|
||||
/obj/structure/statue/plasma/scientist
|
||||
name = "statue of a scientist"
|
||||
icon_state = "sci"
|
||||
|
||||
/obj/structure/statue/plasma/xeno
|
||||
name = "statue of a xenomorph"
|
||||
icon_state = "xeno"
|
||||
|
||||
/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj)
|
||||
var/burn = FALSE
|
||||
if(istype(Proj,/obj/item/projectile/beam))
|
||||
PlasmaBurn(2500)
|
||||
burn = TRUE
|
||||
else if(istype(Proj,/obj/item/projectile/ion))
|
||||
PlasmaBurn(500)
|
||||
burn = TRUE
|
||||
if(burn)
|
||||
if(Proj.firer)
|
||||
message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)](<A HREF='?_src_=holder;adminmoreinfo=\ref[Proj.firer]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[Proj.firer]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])")
|
||||
else
|
||||
message_admins("Plasma statue ignited by [Proj]. No known firer.(<A HREF='?_src_=holder;adminmoreinfo=\ref[Proj.firer]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[Proj.firer]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.")
|
||||
..()
|
||||
|
||||
/obj/structure/statue/plasma/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
|
||||
message_admins("Plasma statue ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])")
|
||||
ignite(is_hot(W))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/statue/plasma/proc/PlasmaBurn()
|
||||
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 160)
|
||||
Dismantle(FALSE)
|
||||
|
||||
/obj/structure/statue/plasma/proc/ignite(exposed_temperature)
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn()
|
||||
|
||||
/obj/structure/statue/gold
|
||||
hardness = 3
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/gold
|
||||
desc = "This is a highly valuable statue made from gold."
|
||||
|
||||
/obj/structure/statue/gold/hos
|
||||
name = "statue of the head of security"
|
||||
icon_state = "hos"
|
||||
|
||||
/obj/structure/statue/gold/hop
|
||||
name = "statue of the head of personnel"
|
||||
icon_state = "hop"
|
||||
|
||||
/obj/structure/statue/gold/cmo
|
||||
name = "statue of the chief medical officer"
|
||||
icon_state = "cmo"
|
||||
|
||||
/obj/structure/statue/gold/ce
|
||||
name = "statue of the chief engineer"
|
||||
icon_state = "ce"
|
||||
|
||||
/obj/structure/statue/gold/rd
|
||||
name = "statue of the research director"
|
||||
icon_state = "rd"
|
||||
|
||||
/obj/structure/statue/silver
|
||||
hardness = 3
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/silver
|
||||
desc = "This is a valuable statue made from silver."
|
||||
|
||||
/obj/structure/statue/silver/md
|
||||
name = "statue of a medical doctor"
|
||||
icon_state = "md"
|
||||
|
||||
/obj/structure/statue/silver/janitor
|
||||
name = "statue of a janitor"
|
||||
icon_state = "jani"
|
||||
|
||||
/obj/structure/statue/silver/sec
|
||||
name = "statue of a security officer"
|
||||
icon_state = "sec"
|
||||
|
||||
/obj/structure/statue/silver/secborg
|
||||
name = "statue of a security cyborg"
|
||||
icon_state = "secborg"
|
||||
|
||||
/obj/structure/statue/silver/medborg
|
||||
name = "statue of a medical cyborg"
|
||||
icon_state = "medborg"
|
||||
|
||||
/obj/structure/statue/diamond
|
||||
hardness = 10
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/diamond
|
||||
desc = "This is a very expensive diamond statue"
|
||||
|
||||
/obj/structure/statue/diamond/captain
|
||||
name = "statue of THE captain."
|
||||
icon_state = "cap"
|
||||
|
||||
/obj/structure/statue/diamond/ai1
|
||||
name = "statue of the AI hologram."
|
||||
icon_state = "ai1"
|
||||
|
||||
/obj/structure/statue/diamond/ai2
|
||||
name = "statue of the AI core."
|
||||
icon_state = "ai2"
|
||||
|
||||
/obj/structure/statue/bananium
|
||||
hardness = 3
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/bananium
|
||||
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
||||
var/spam_flag = 0
|
||||
|
||||
/obj/structure/statue/bananium/clown
|
||||
name = "statue of a clown"
|
||||
icon_state = "clown"
|
||||
|
||||
/obj/structure/statue/bananium/Bumped(atom/user)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/attackby(obj/item/weapon/W, mob/user, params)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/attack_hand(mob/user)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/proc/honk()
|
||||
if(!spam_flag)
|
||||
spam_flag = 1
|
||||
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
spawn(20)
|
||||
spam_flag = 0
|
||||
|
||||
/obj/structure/statue/sandstone
|
||||
hardness = 0.5
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
|
||||
/obj/structure/statue/sandstone/assistant
|
||||
name = "statue of an assistant"
|
||||
desc = "A cheap statue of sandstone for a greyshirt."
|
||||
icon_state = "assist"
|
||||
|
||||
/obj/structure/statue/sandstone/venus //call me when we add marble i guess
|
||||
name = "statue of a pure maiden"
|
||||
desc = "An ancient marble statue. The subject is depicted with a floor-length braid and is wielding a toolbox. By Jove, it's easily the most gorgeous depiction of a woman you've ever seen. The artist must truly be a master of his craft. Shame about the broken arm, though."
|
||||
icon = 'icons/obj/statuelarge.dmi'
|
||||
icon_state = "venus"
|
||||
|
||||
/*
|
||||
/obj/structure/statue/snow
|
||||
hardness = 0.5
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/snow
|
||||
|
||||
/obj/structure/statue/snow/snowman
|
||||
name = "snowman"
|
||||
desc = "Several lumps of snow put together to form a snowman."
|
||||
icon_state = "snowman"
|
||||
*/
|
||||
|
||||
/obj/structure/statue/tranquillite
|
||||
hardness = 0.5
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/tranquillite
|
||||
desc = "..."
|
||||
|
||||
/obj/structure/statue/tranquillite/mime
|
||||
name = "statue of a mime"
|
||||
icon_state = "mime"
|
||||
|
||||
/obj/structure/statue/tranquillite/mime/AltClick(mob/user)//has 4 dirs
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(anchored)
|
||||
to_chat(user, "It is fastened to the floor!")
|
||||
return
|
||||
setDir(turn(dir, 90))
|
||||
////////////////////////////////
|
||||
/obj/structure/snowman
|
||||
name = "snowman"
|
||||
desc = "Seems someone made a snowman here."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "snowman"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
/obj/structure/kidanstatue
|
||||
name = "Obsidian Kidan warrior statue"
|
||||
desc = "A beautifully carved and menacing statue of a Kidan warrior made out of obsidian. It looks very heavy."
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "kidanstatue"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
/obj/structure/chickenstatue
|
||||
name = "Bronze Chickenman Statue"
|
||||
desc = "An antique and oriental-looking statue of a Chickenman made of bronze."
|
||||
icon = 'icons/obj/decorations.dmi'
|
||||
icon_state = "chickenstatue"
|
||||
anchored = 1
|
||||
density = 1
|
||||
@@ -60,19 +60,16 @@
|
||||
set src in oview(1)
|
||||
|
||||
if(config.ghost_interaction)
|
||||
src.dir = turn(src.dir, 90)
|
||||
setDir(turn(dir, 90))
|
||||
handle_rotation()
|
||||
return
|
||||
else
|
||||
if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
src.dir = turn(src.dir, 90)
|
||||
handle_rotation()
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
setDir(turn(dir, 90))
|
||||
handle_rotation()
|
||||
|
||||
/obj/structure/stool/bed/chair/AltClick(mob/user)
|
||||
if(user.incapacitated())
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
var/list/oxytanks = list() //sorry for the similar var names
|
||||
var/list/platanks = list()
|
||||
|
||||
|
||||
/obj/structure/dispenser/oxygen
|
||||
plasmatanks = 0
|
||||
|
||||
@@ -18,6 +17,7 @@
|
||||
oxygentanks = 0
|
||||
|
||||
/obj/structure/dispenser/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/structure/dispenser/update_icon()
|
||||
@@ -31,43 +31,49 @@
|
||||
|
||||
/obj/structure/dispenser/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
/obj/structure/dispenser/attack_ghost(mob/user)
|
||||
interact(user)
|
||||
|
||||
/obj/structure/dispenser/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = "[src]<br><br>"
|
||||
dat += "Oxygen tanks: [oxygentanks] - [oxygentanks ? "<A href='?src=[UID()];oxygen=1'>Dispense</A>" : "empty"]<br>"
|
||||
dat += "Plasma tanks: [plasmatanks] - [plasmatanks ? "<A href='?src=[UID()];plasma=1'>Dispense</A>" : "empty"]"
|
||||
user << browse(dat, "window=dispenser")
|
||||
onclose(user, "dispenser")
|
||||
return 1
|
||||
add_fingerprint(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user, params)
|
||||
/obj/structure/dispenser/attack_ghost(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/structure/dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state)
|
||||
user.set_machine(src)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "tank_dispenser.tmpl", name, 275, 100, state = state)
|
||||
ui.open()
|
||||
|
||||
/obj/structure/dispenser/ui_data(user)
|
||||
var/list/data = list()
|
||||
data["o_tanks"] = oxygentanks
|
||||
data["p_tanks"] = plasmatanks
|
||||
return data
|
||||
|
||||
/obj/structure/dispenser/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/tank/oxygen) || istype(I, /obj/item/weapon/tank/air) || istype(I, /obj/item/weapon/tank/anesthetic))
|
||||
if(oxygentanks < 10)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
oxytanks.Add(I)
|
||||
oxygentanks++
|
||||
update_icon()
|
||||
to_chat(user, "<span class='notice'>You put [I] in [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
updateUsrDialog()
|
||||
return
|
||||
nanomanager.update_uis(src)
|
||||
if(istype(I, /obj/item/weapon/tank/plasma))
|
||||
if(plasmatanks < 10)
|
||||
user.drop_item()
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
platanks.Add(I)
|
||||
plasmatanks++
|
||||
update_icon()
|
||||
to_chat(user, "<span class='notice'>You put [I] in [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
updateUsrDialog()
|
||||
return
|
||||
nanomanager.update_uis(src)
|
||||
if(istype(I, /obj/item/weapon/wrench))
|
||||
if(anchored)
|
||||
to_chat(user, "<span class='notice'>You lean down and unwrench [src].</span>")
|
||||
@@ -75,7 +81,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You wrench [src] into place.</span>")
|
||||
anchored = 1
|
||||
return
|
||||
|
||||
/obj/structure/dispenser/Topic(href, href_list)
|
||||
if(..())
|
||||
@@ -109,6 +114,7 @@
|
||||
update_icon()
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
nanomanager.update_uis(src)
|
||||
else
|
||||
usr << browse(null, "window=dispenser")
|
||||
return
|
||||
nanomanager.close_user_uis(usr,src)
|
||||
return 1
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
..()
|
||||
var/datum/space_level/S = space_manager.get_zlev(z)
|
||||
S.remove_from_transit(src)
|
||||
if(light_sources) // Turn off starlight, if present
|
||||
set_light(0)
|
||||
|
||||
/turf/space/AfterChange(ignore_air, keep_cabling = FALSE)
|
||||
..()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text|null)
|
||||
if(!new_ckey)
|
||||
return
|
||||
new_ckey = sanitizeSQL(new_ckey)
|
||||
new_ckey = ckey(new_ckey)
|
||||
var/DBQuery/query_find_ckey = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'")
|
||||
if(!query_find_ckey.Execute())
|
||||
var/err = query_find_ckey.ErrorMsg()
|
||||
@@ -19,7 +19,7 @@
|
||||
return
|
||||
else
|
||||
target_ckey = new_ckey
|
||||
var/target_sql_ckey = sanitizeSQL(target_ckey)
|
||||
var/target_sql_ckey = ckey(target_ckey)
|
||||
if(!notetext)
|
||||
notetext = input(usr,"Write your note","Add Note") as message|null
|
||||
if(!notetext)
|
||||
@@ -31,6 +31,8 @@
|
||||
adminckey = usr.ckey
|
||||
if(!adminckey)
|
||||
return
|
||||
else if(usr && (usr.ckey == ckey(adminckey))) // Don't ckeyize special note sources
|
||||
adminckey = ckey(adminckey)
|
||||
var/admin_sql_ckey = sanitizeSQL(adminckey)
|
||||
if(!server)
|
||||
if(config && config.server_name)
|
||||
@@ -86,7 +88,7 @@
|
||||
return
|
||||
note_id = text2num(note_id)
|
||||
var/target_ckey
|
||||
var/sql_ckey = sanitizeSQL(usr.ckey)
|
||||
var/sql_ckey = usr.ckey
|
||||
var/DBQuery/query_find_note_edit = dbcon.NewQuery("SELECT ckey, notetext, adminckey FROM [format_table_name("notes")] WHERE id = [note_id]")
|
||||
if(!query_find_note_edit.Execute())
|
||||
var/err = query_find_note_edit.ErrorMsg()
|
||||
@@ -128,7 +130,7 @@
|
||||
if(!linkless)
|
||||
output = navbar
|
||||
if(target_ckey)
|
||||
var/target_sql_ckey = sanitizeSQL(target_ckey)
|
||||
var/target_sql_ckey = ckey(target_ckey)
|
||||
var/DBQuery/query_get_notes = dbcon.NewQuery("SELECT id, timestamp, notetext, adminckey, last_editor, server FROM [format_table_name("notes")] WHERE ckey = '[target_sql_ckey]' ORDER BY timestamp")
|
||||
if(!query_get_notes.Execute())
|
||||
var/err = query_get_notes.ErrorMsg()
|
||||
@@ -179,7 +181,7 @@
|
||||
usr << browse(output, "window=show_notes;size=900x500")
|
||||
|
||||
/proc/show_player_info_irc(var/key as text)
|
||||
var/target_sql_ckey = sanitizeSQL(key)
|
||||
var/target_sql_ckey = ckey(key)
|
||||
var/DBQuery/query_get_notes = dbcon.NewQuery("SELECT timestamp, notetext, adminckey, server FROM [format_table_name("notes")] WHERE ckey = '[target_sql_ckey]' ORDER BY timestamp")
|
||||
if(!query_get_notes.Execute())
|
||||
var/err = query_get_notes.ErrorMsg()
|
||||
|
||||
@@ -1741,33 +1741,42 @@
|
||||
btypes += "Heal Over Time"
|
||||
btypes += "Permanent Regeneration"
|
||||
btypes += "Super Powers"
|
||||
var/blessing = input(src.owner, "How would you like to bless [M]?", "Its good to be good...", "") as null|anything in btypes
|
||||
var/blessing = input(owner, "How would you like to bless [M]?", "Its good to be good...", "") as null|anything in btypes
|
||||
if(!(blessing in btypes))
|
||||
return
|
||||
var/logmsg = null
|
||||
switch(blessing)
|
||||
if("To Arrivals")
|
||||
M.forceMove(pick(latejoin))
|
||||
to_chat(M, "<span class='userdanger'>You are abruptly pulled through space!</span>")
|
||||
logmsg = "a teleport to arrivals."
|
||||
if("Moderate Heal")
|
||||
M.adjustBruteLoss(-25)
|
||||
M.adjustFireLoss(-25)
|
||||
M.adjustToxLoss(-25)
|
||||
M.adjustOxyLoss(-25)
|
||||
to_chat(M,"<span class='userdanger'>You feel invigorated!</span>")
|
||||
logmsg = "a moderate heal."
|
||||
if("Heal Over Time")
|
||||
H.reagents.add_reagent("salglu_solution", 30)
|
||||
H.reagents.add_reagent("salbutamol", 20)
|
||||
H.reagents.add_reagent("spaceacillin", 20)
|
||||
logmsg = "a heal over time."
|
||||
if("Permanent Regeneration")
|
||||
H.dna.SetSEState(REGENERATEBLOCK, 1)
|
||||
genemutcheck(H, REGENERATEBLOCK, null, MUTCHK_FORCED)
|
||||
H.update_mutations()
|
||||
logmsg = "permanent regeneration."
|
||||
if("Super Powers")
|
||||
var/list/default_genes = list(REGENERATEBLOCK, NOBREATHBLOCK, COLDBLOCK)
|
||||
for(var/gene in default_genes)
|
||||
H.dna.SetSEState(gene, 1)
|
||||
genemutcheck(H, gene, null, MUTCHK_FORCED)
|
||||
H.update_mutations()
|
||||
logmsg = "superpowers."
|
||||
if(logmsg)
|
||||
log_admin("[key_name(owner)] answered [key_name(M)]'s prayer with a blessing: [logmsg]")
|
||||
message_admins("[key_name_admin(owner)] answered [key_name_admin(M)]'s prayer with a blessing: [logmsg]")
|
||||
else if(href_list["Smite"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -1784,9 +1793,10 @@
|
||||
ptypes += "Cluwne"
|
||||
ptypes += "Mutagen Cookie"
|
||||
ptypes += "Hellwater Cookie"
|
||||
var/punishment = input(src.owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes
|
||||
var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes
|
||||
if(!(punishment in ptypes))
|
||||
return
|
||||
var/logmsg = null
|
||||
switch(punishment)
|
||||
if("Lightning bolt")
|
||||
M.electrocute_act(5, "Lightning Bolt", safety=1)
|
||||
@@ -1794,20 +1804,25 @@
|
||||
M.adjustFireLoss(75)
|
||||
M.Weaken(5)
|
||||
to_chat(M, "<span class='userdanger'>The gods have punished you for your sins!</span>")
|
||||
logmsg = "a lightning bolt."
|
||||
if("Brain Damage")
|
||||
H.adjustBrainLoss(75)
|
||||
logmsg = "75 brain damage."
|
||||
if("Fire Death")
|
||||
to_chat(M,"<span class='userdanger'>You feel hotter than usual. Maybe you should lowe-wait, is that your hand melting?</span>")
|
||||
var/turf/simulated/T = get_turf(M)
|
||||
new /obj/effect/hotspot(T)
|
||||
M.adjustFireLoss(150)
|
||||
logmsg = "a firey death."
|
||||
if("Honk Tumor")
|
||||
if(!H.get_int_organ(/obj/item/organ/internal/honktumor))
|
||||
var/obj/item/organ/internal/organ = new /obj/item/organ/internal/honktumor
|
||||
to_chat(H, "<span class='userdanger'>Life seems funnier, somehow.</span>")
|
||||
organ.insert(H)
|
||||
logmsg = "a honk tumor."
|
||||
if("Cluwne")
|
||||
H.makeCluwne()
|
||||
logmsg = "cluwned."
|
||||
if("Mutagen Cookie")
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/cookie/evilcookie = new /obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
evilcookie.reagents.add_reagent("mutagen", 10)
|
||||
@@ -1815,6 +1830,7 @@
|
||||
evilcookie.bitesize = 100
|
||||
H.drop_l_hand()
|
||||
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
|
||||
logmsg = "a mutagen cookie."
|
||||
if("Hellwater Cookie")
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/cookie/evilcookie = new /obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
evilcookie.reagents.add_reagent("hell_water", 25)
|
||||
@@ -1822,8 +1838,13 @@
|
||||
evilcookie.bitesize = 100
|
||||
H.drop_l_hand()
|
||||
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
|
||||
logmsg = "a hellwater cookie."
|
||||
if("Gib")
|
||||
logmsg = "gibbed."
|
||||
M.gib(FALSE)
|
||||
if(logmsg)
|
||||
log_admin("[key_name(owner)] answered [key_name(M)]'s prayer with a smiting: [logmsg]")
|
||||
message_admins("[key_name_admin(owner)] answered [key_name_admin(M)]'s prayer with a smiting: [logmsg]")
|
||||
else if(href_list["FaxReplyTemplate"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -3132,7 +3153,7 @@
|
||||
error_viewer.showTo(usr, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"])
|
||||
else
|
||||
error_viewer.showTo(usr, null, href_list["viewruntime_linear"])
|
||||
|
||||
|
||||
else if(href_list["add_station_goal"])
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
@@ -574,67 +574,35 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
alert("Invalid mob")
|
||||
return
|
||||
|
||||
//log_admin("[key_name(src)] has alienized [M.key].")
|
||||
var/list/dresspacks = list(
|
||||
var/list/choices = list(
|
||||
"strip",
|
||||
"as job...",
|
||||
"Engineer RIG",
|
||||
"CE RIG",
|
||||
"Mining RIG",
|
||||
"Syndi RIG",
|
||||
"Wizard RIG",
|
||||
"Medical RIG",
|
||||
"Atmos RIG",
|
||||
"standard space gear",
|
||||
"tournament standard red",
|
||||
"tournament standard green",
|
||||
"tournament gangster",
|
||||
"tournament chef",
|
||||
"tournament janitor",
|
||||
"pirate",
|
||||
"space pirate",
|
||||
"soviet tourist",
|
||||
"soviet soldier",
|
||||
"soviet admiral",
|
||||
"tunnel clown",
|
||||
"mime assassin",
|
||||
"survivor",
|
||||
"greytide",
|
||||
"greytide leader",
|
||||
"greytide xeno",
|
||||
"masked killer",
|
||||
"singuloth knight",
|
||||
"dark lord",
|
||||
"assassin",
|
||||
"spy",
|
||||
"vox",
|
||||
"death commando",
|
||||
"syndicate agent",
|
||||
"syndicate operative",
|
||||
"syndicate bomber",
|
||||
"syndicate strike team",
|
||||
"syndicate officer",
|
||||
"chrono legionnaire",
|
||||
"blue wizard",
|
||||
"red wizard",
|
||||
"marisa wizard",
|
||||
"emergency response team member",
|
||||
"emergency response team leader",
|
||||
"nt vip guest",
|
||||
"nt navy officer", // now in jobs list
|
||||
"nt navy captain",
|
||||
"nt special ops officer", // now in jobs list
|
||||
"nt special ops formal",
|
||||
)
|
||||
"emergency response team member",
|
||||
"emergency response team leader"
|
||||
)
|
||||
|
||||
var/admin_outfits = subtypesof(/datum/outfit/admin)
|
||||
for(var/type in admin_outfits)
|
||||
var/datum/outfit/O = type
|
||||
var/name = initial(O.name)
|
||||
if(name != "Naked")
|
||||
choices[initial(O.name)] = type
|
||||
|
||||
var/dostrip = 0
|
||||
switch(alert("Strip [M] before dressing?", "Strip?", "Yes", "No", "Cancel"))
|
||||
if("Yes")
|
||||
dostrip = 1
|
||||
if("Cancel")
|
||||
return
|
||||
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks
|
||||
|
||||
var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in choices
|
||||
if(isnull(dresscode))
|
||||
return
|
||||
|
||||
var/datum/outfit/O
|
||||
if(!(dresscode in list("strip", "as job...", "emergency response team member", "emergency response team leader")))
|
||||
O = choices[dresscode]
|
||||
|
||||
var/datum/job/jobdatum
|
||||
if(dresscode == "as job...")
|
||||
var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs()
|
||||
@@ -648,6 +616,8 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(istype(I, /obj/item/organ))
|
||||
continue
|
||||
qdel(I)
|
||||
|
||||
|
||||
switch(dresscode)
|
||||
if("strip")
|
||||
//do nothing
|
||||
@@ -657,495 +627,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(jobdatum)
|
||||
dresscode = "[jobdatum.title]"
|
||||
jobdatum.equip(M)
|
||||
equip_special_id(M,jobdatum.get_access(),jobdatum.title, jobdatum.idtype)
|
||||
|
||||
if("standard space gear")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
|
||||
M.equip_to_slot_or_del(J, slot_back)
|
||||
J.turn_on()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
|
||||
J.Topic(null, list("stat" = 1))
|
||||
equip_special_id(M,get_all_accesses(), "Space Explorer", /obj/item/weapon/card/id)
|
||||
|
||||
if("Engineer RIG", "CE RIG", "Mining RIG", "Syndi RIG", "Wizard RIG", "Medical RIG", "Atmos RIG")
|
||||
if(dresscode=="Engineer RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig(M), slot_head)
|
||||
else if(dresscode=="CE RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/elite(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/elite(M), slot_head)
|
||||
else if(dresscode=="Mining RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/mining(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/mining(M), slot_head)
|
||||
else if(dresscode=="Syndi RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi(M), slot_head)
|
||||
else if(dresscode=="Wizard RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/wizard(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/wizard(M), slot_head)
|
||||
else if(dresscode=="Medical RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/medical(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/medical(M), slot_head)
|
||||
else if(dresscode=="Atmos RIG")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/atmos(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/atmos(M), slot_head)
|
||||
var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M)
|
||||
M.equip_to_slot_or_del(J, slot_back)
|
||||
J.turn_on()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
|
||||
equip_special_id(M,get_all_accesses(), "RIG Tester", /obj/item/weapon/card/id)
|
||||
J.Topic(null, list("stat" = 1))
|
||||
|
||||
if("tournament standard red", "tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0
|
||||
if(dresscode=="tournament standard red")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform)
|
||||
else
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/destroyer(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store)
|
||||
|
||||
if("tournament gangster") //gangster are supposed to fight each other. --rastaf0
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/proto(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
|
||||
|
||||
if("tournament chef") //Steven Seagal FTW
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/rollingpin(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_s_store)
|
||||
|
||||
if("tournament janitor")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
var/obj/item/weapon/storage/backpack/backpack = new(M)
|
||||
for(var/obj/item/I in backpack)
|
||||
qdel(I)
|
||||
M.equip_to_slot_or_del(backpack, slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand)
|
||||
var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M)
|
||||
bucket.reagents.add_reagent("water", 70)
|
||||
M.equip_to_slot_or_del(bucket, slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack)
|
||||
|
||||
if("pirate")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Pirate", /obj/item/weapon/card/id)
|
||||
|
||||
if("space pirate") // not spaceworthy, just has fancier coat.
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Space Pirate", /obj/item/weapon/card/id)
|
||||
|
||||
if("tunnel clown")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store)
|
||||
equip_special_id(M,list(access_clown, access_theatre, access_maint_tunnels), "Tunnel Clown", /obj/item/weapon/card/id)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
|
||||
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
|
||||
|
||||
|
||||
if("mime assassin")
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/mime(M), slot_back)
|
||||
if(M.gender == FEMALE)
|
||||
M.equip_or_collect(new /obj/item/clothing/under/sexymime(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/mask/gas/sexymime(M), slot_wear_mask)
|
||||
else
|
||||
M.equip_or_collect(new /obj/item/clothing/under/mime(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/mask/gas/mime(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/beret(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/suspenders(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/syndie_kit/caneshotgun, slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/toy/crayon/mime, slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/suppressor(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pen/sleepy(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
|
||||
var/obj/item/device/pda/mime/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Mime"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
equip_special_id(M,list(access_mime, access_theatre, access_maint_tunnels), "Mime", /obj/item/weapon/card/id/syndicate)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
|
||||
if("survivor")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Survivor", /obj/item/weapon/card/id)
|
||||
for(var/obj/item/carried_item in M.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))
|
||||
carried_item.add_blood(M)
|
||||
|
||||
if("greytide")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/flag/grey(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Greytide", /obj/item/weapon/card/id)
|
||||
|
||||
if("greytide leader")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/flag/grey(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Greytide Leader", /obj/item/weapon/card/id)
|
||||
|
||||
if("greytide xeno")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/xenos(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/xenos(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/toy/toy_xeno(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Legit Xenomorph", /obj/item/weapon/card/id)
|
||||
|
||||
if("masked killer")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Masked Killer", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
var/obj/item/weapon/twohanded/fireaxe/fire_axe = new(M)
|
||||
M.equip_to_slot_or_del(fire_axe, slot_r_hand)
|
||||
for(var/obj/item/carried_item in M.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))
|
||||
carried_item.add_blood(M)//Oh yes, there will be blood...
|
||||
|
||||
if("dark lord")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_hand)
|
||||
var/obj/item/clothing/suit/hooded/chaplain_hoodie/robe = new /obj/item/clothing/suit/hooded/chaplain_hoodie(M)
|
||||
robe.name = "dark lord robes"
|
||||
robe.hood.name = "dark lord hood"
|
||||
M.equip_to_slot_or_del(robe, slot_wear_suit)
|
||||
equip_special_id(M,get_all_accesses(), "Dark Lord", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
|
||||
if("assassin")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M)
|
||||
for(var/obj/item/briefcase_item in sec_briefcase)
|
||||
qdel(briefcase_item)
|
||||
for(var/i=3, i>0, i--)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357, 1)
|
||||
sec_briefcase.handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1)
|
||||
// briefcase must be unlocked by setting the code.
|
||||
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
|
||||
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
|
||||
DUST.implant(M)
|
||||
var/obj/item/device/pda/heads/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Reaper"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_wear_pda)
|
||||
equip_special_id(M,get_all_accesses(), "Reaper", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
|
||||
if("spy")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/suppressor(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/chameleon(M), slot_glasses)
|
||||
var/obj/item/clothing/gloves/combat/G = new /obj/item/clothing/gloves/combat(src)
|
||||
G.name = "black gloves"
|
||||
M.equip_to_slot_or_del(G, slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pen/sleepy(M), slot_r_store)
|
||||
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
|
||||
DUST.implant(M)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/storage(M), slot_in_backpack)
|
||||
var/obj/item/device/pda/heads/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Spy"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
M.equip_to_slot_or_del(pda, slot_belt)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Spy", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
|
||||
|
||||
if("vox")
|
||||
if(istype(M, /mob/living/carbon/human/voxarmalis)) // have to do this, they cannot wear normal vox gear!
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/vox_grey(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes (M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/card/id/syndicate/vox(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate, slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/yellow/vox, slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic, slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/vox, slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle, slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight, slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs/cable/zipties, slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flash, slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/noisecannon, slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses(), "Vox Armalis", /obj/item/weapon/card/id/syndicate/vox, "syndie")
|
||||
else
|
||||
M.equip_vox_raider()
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_l_hand)
|
||||
M.regenerate_icons()
|
||||
|
||||
if("death commando")
|
||||
M.equip_death_commando()
|
||||
|
||||
if("syndicate agent")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Agent", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
|
||||
U.hidden_uplink.uplink_owner="[M.key]"
|
||||
U.hidden_uplink.uses = 20
|
||||
M.equip_to_slot_or_del(U, slot_r_store)
|
||||
|
||||
if("syndicate bomber")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/beacon/syndicate/bomb(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/beacon/syndicate/bomb(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/syndicatedetonator(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Bomber", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
|
||||
if("syndicate operative")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/initropidril(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/projectile/automatic/pistol(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/ammo_box/magazine/m10mm(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/crowbar/red(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/night(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/belt/military(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/syndi(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/syndi(M), slot_head)
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt(M)
|
||||
R.set_frequency(SYND_FREQ)
|
||||
M.equip_to_slot_or_del(R, slot_l_ear)
|
||||
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
|
||||
U.hidden_uplink.uplink_owner="[M.key]"
|
||||
U.hidden_uplink.uses = 20
|
||||
M.equip_to_slot_or_del(U, slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/tank/jetpack/oxygen/harness(M), slot_in_backpack)
|
||||
equip_special_id(M,get_syndicate_access("Syndicate Operative"), "Syndicate Operative", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(M)
|
||||
E.implant(M)
|
||||
|
||||
if("syndicate strike team")
|
||||
M.equip_syndicate_commando()
|
||||
|
||||
if("syndicate officer")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/pill/initropidril(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/thermal(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/belt/military(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_l_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/clothing/mask/gas/syndicate(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/red/strike(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/red/strike(M), slot_head)
|
||||
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate/alt(M)
|
||||
R.set_frequency(SYND_FREQ)
|
||||
M.equip_to_slot_or_del(R, slot_l_ear)
|
||||
var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(M)
|
||||
U.hidden_uplink.uplink_owner="[M.key]"
|
||||
U.hidden_uplink.uses = 50
|
||||
M.equip_to_slot_or_del(U, slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/tank/jetpack/oxygen/harness(M), slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses() + get_syndicate_access("Syndicate Commando"), "Syndicate Officer", /obj/item/weapon/card/id/syndicate, "commander")
|
||||
var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M)
|
||||
DUST.implant(M)
|
||||
|
||||
if("nt vip guest")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/that(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/device/pda/(M), slot_wear_pda)
|
||||
equip_special_id(M,get_centcom_access("VIP Guest"), "VIP Guest", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
if("nt navy officer")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
|
||||
L.imp_in = M
|
||||
L.implanted = 1
|
||||
M.sec_hud_set_implants()
|
||||
equip_special_id(M,get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
if("nt navy captain")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_or_collect(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
|
||||
M.equip_or_collect(new /obj/item/clothing/gloves/color/white(M), slot_gloves)
|
||||
M.equip_or_collect(new /obj/item/device/radio/headset/centcom(M), slot_l_ear)
|
||||
M.equip_or_collect(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
|
||||
M.equip_or_collect(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses)
|
||||
M.equip_or_collect(new /obj/item/weapon/gun/energy/pulse/pistol(M), slot_belt)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)
|
||||
L.imp_in = M
|
||||
L.implanted = 1
|
||||
M.sec_hud_set_implants()
|
||||
equip_special_id(M,get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
if("emergency response team member", "emergency response team leader")
|
||||
var/datum/response_team/equip_team = null
|
||||
@@ -1173,170 +654,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
else
|
||||
to_chat(src, "Invalid ERT Loadout selected")
|
||||
|
||||
if("nt special ops officer")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) // job has /obj/item/clothing/head/beret/centcom/officer/navy
|
||||
M.equip_to_slot_or_del(new /obj/item/device/pda/centcom(M), slot_wear_pda)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // job has /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad/officer(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
|
||||
// The following items are unique to this outfit - the special ops officer job does not spawn with them.
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/zipties(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/implanter/loyalty(M), slot_in_backpack)
|
||||
|
||||
if("nt special ops formal")
|
||||
M.equip_or_collect(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/centcom(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/cyber(M), slot_glasses) // special
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_or_collect(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/matches(M), slot_r_store)
|
||||
M.equip_or_collect(new /obj/item/weapon/melee/classic_baton/telescopic(M), slot_in_backpack)
|
||||
|
||||
var/obj/item/device/pda/centcom/pda = new(M)
|
||||
pda.owner = M.real_name
|
||||
pda.ownjob = "Special Operations Officer"
|
||||
pda.icon_state = "pda-syndi"
|
||||
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
|
||||
pda.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work."
|
||||
|
||||
M.equip_or_collect(pda, slot_wear_pda)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/dust(M), slot_in_backpack)
|
||||
M.equip_or_collect(new /obj/item/weapon/implanter/death_alarm(M), slot_in_backpack)
|
||||
equip_special_id(M,get_centcom_access("Special Operations Officer"), "Special Operations Officer", /obj/item/weapon/card/id/centcom)
|
||||
|
||||
if("singuloth knight")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/singuloth(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/cyber(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/rig/singuloth(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/claymore/ceremonial(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(M), slot_s_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/knighthammer(M), slot_back)
|
||||
equip_special_id(M,get_all_accesses(), "Singuloth Knight", /obj/item/weapon/card/id)
|
||||
|
||||
if("blue wizard")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
|
||||
|
||||
if("red wizard")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
|
||||
|
||||
if("marisa wizard")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/staff(M), slot_l_hand)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses(), "Wizard", /obj/item/weapon/card/id)
|
||||
|
||||
if("soviet tourist")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Soviet Tourist", /obj/item/weapon/card/id)
|
||||
|
||||
if("soviet soldier")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/card/emag(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/c4(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
equip_special_id(M,list(access_maint_tunnels), "Soviet Soldier", /obj/item/weapon/card/id)
|
||||
|
||||
if("soviet admiral")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/syndicate(M), slot_l_ear)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack)
|
||||
equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Soviet Admiral", /obj/item/weapon/card/id, "commander")
|
||||
//W.icon_state = "commander"
|
||||
|
||||
if("chrono legionnaire")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/chronos(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(src), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(M), slot_glasses)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/chronos(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/chrono_eraser(M), slot_back)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(src), slot_s_store)
|
||||
equip_special_id(M,get_all_accesses() + get_all_centcom_access(), "Chrono Legionnaire", /obj/item/weapon/card/id/syndicate, "syndie")
|
||||
else // outfit datum
|
||||
if(O)
|
||||
M.equipOutfit(O, FALSE)
|
||||
|
||||
M.regenerate_icons()
|
||||
|
||||
@@ -1344,18 +665,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
message_admins("\blue [key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode].", 1)
|
||||
return
|
||||
|
||||
/client/proc/equip_special_id(var/mob/living/carbon/human/H, var/list/theaccess = null, var/jobtext, var/obj/item/weapon/card/id/id_type = /obj/item/weapon/card/id, var/special_icon = null)
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
var/obj/item/weapon/card/id/W = new id_type(H)
|
||||
if(special_icon)
|
||||
W.icon_state = special_icon
|
||||
W.name = "[H.real_name]'s ID Card ([jobtext])"
|
||||
W.access = theaccess
|
||||
W.assignment = "[jobtext]"
|
||||
W.registered_name = H.real_name
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
/client/proc/startSinglo()
|
||||
set category = "Debug"
|
||||
@@ -1474,15 +783,15 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
error_cache.showTo(usr)
|
||||
|
||||
|
||||
/client/proc/jump_to_ruin()
|
||||
set category = "Debug"
|
||||
set name = "Jump to Ruin"
|
||||
set desc = "Displays a list of all placed ruins to teleport to."
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
|
||||
var/list/names = list()
|
||||
for(var/i in ruin_landmarks)
|
||||
var/obj/effect/landmark/ruin/ruin_landmark = i
|
||||
@@ -1505,21 +814,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(istype(landmark))
|
||||
var/datum/map_template/ruin/template = landmark.ruin_template
|
||||
admin_forcemove(usr, get_turf(landmark))
|
||||
|
||||
|
||||
to_chat(usr, "<span class='name'>[template.name]</span>")
|
||||
to_chat(usr, "<span class='italics'>[template.description]</span>")
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] jumped to ruin [ruinname]")
|
||||
if(!isobserver(usr))
|
||||
message_admins("[key_name_admin(usr)] jumped to ruin [ruinname]", 1)
|
||||
|
||||
|
||||
feedback_add_details("admin_verb","JT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
/client/proc/toggle_medal_disable()
|
||||
set category = "Debug"
|
||||
set name = "Toggle Medal Disable"
|
||||
set desc = "Toggles the safety lock on trying to contact the medal hub."
|
||||
|
||||
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
W.assignment = "Highlander"
|
||||
W.registered_name = H.real_name
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
H.species.equip(H)
|
||||
H.species.after_equip_job(null, H)
|
||||
H.regenerate_icons()
|
||||
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
team_toggle = !team_toggle
|
||||
H.species.equip(H)
|
||||
H.species.after_equip_job(null, H)
|
||||
H.regenerate_icons()
|
||||
|
||||
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
missing_ages = 1
|
||||
continue
|
||||
if(C.player_age < age)
|
||||
if(check_rights(R_ADMIN))
|
||||
if(check_rights(R_ADMIN, 0))
|
||||
msg += "[key_name_admin(C.mob)]: [C.player_age] days old<br>"
|
||||
else
|
||||
msg += "[key_name_mentor(C.mob)]: [C.player_age] days old<br>"
|
||||
@@ -899,7 +899,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
to_chat(usr, "\red ERT has been <b>Disabled</b>.")
|
||||
log_admin("Admin [key_name(src)] has disabled ERT calling.")
|
||||
message_admins("Admin [key_name_admin(usr)] has disabled ERT calling.", 1)
|
||||
|
||||
|
||||
/client/proc/modify_goals()
|
||||
set category = "Event"
|
||||
set name = "Modify Station Goals"
|
||||
@@ -910,6 +910,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
holder.modify_goals()
|
||||
|
||||
/datum/admins/proc/modify_goals()
|
||||
if(!ticker || !ticker.mode)
|
||||
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
|
||||
return
|
||||
|
||||
var/dat = ""
|
||||
for(var/datum/station_goal/S in ticker.mode.station_goals)
|
||||
dat += "[S.name] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a><br>"
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
/area/awaymission/UO71
|
||||
name = "UO71"
|
||||
icon_state = "away"
|
||||
report_alerts = 0
|
||||
tele_proof = 1
|
||||
|
||||
|
||||
/area/awaymission/UO71/plaza
|
||||
name = "UO71 Plaza"
|
||||
icon_state = "awaycontent1"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/centralhall
|
||||
name = "UO71 Central"
|
||||
icon_state = "awaycontent2"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/eng
|
||||
name = "UO71 Engineering"
|
||||
icon_state = "awaycontent3"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/mining
|
||||
name = "UO71 Mining"
|
||||
icon_state = "awaycontent4"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/science
|
||||
name = "UO71 Science"
|
||||
icon_state = "awaycontent5"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/medical
|
||||
name = "UO71 Medical"
|
||||
icon_state = "awaycontent6"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/gateway
|
||||
name = "UO71 Gateway"
|
||||
icon_state = "awaycontent7"
|
||||
fire = 1
|
||||
|
||||
/area/awaymission/UO71/outside
|
||||
name = "UO71 Outside"
|
||||
icon_state = "awaycontent8"
|
||||
|
||||
/area/awaymission/UO71/bridge
|
||||
name = "UO71 Bridge"
|
||||
icon_state = "awaycontent21"
|
||||
fire = 1
|
||||
requires_power = 0
|
||||
tele_proof = 1
|
||||
|
||||
/area/awaymission/UO71/queen
|
||||
name = "UO71 Queen Lair"
|
||||
icon_state = "awaycontent9"
|
||||
fire = 1
|
||||
requires_power = 0
|
||||
tele_proof = 1
|
||||
|
||||
/area/awaymission/UO71/prince
|
||||
name = "UO71 Prince Containment"
|
||||
icon_state = "awaycontent10"
|
||||
fire = 1
|
||||
requires_power = 0
|
||||
tele_proof = 1
|
||||
|
||||
/area/awaymission/UO71/mother
|
||||
name = "UO71 Mother Containment"
|
||||
icon_state = "awaycontent10"
|
||||
fire = 1
|
||||
requires_power = 0
|
||||
tele_proof = 1
|
||||
|
||||
/area/awaymission/UO71/loot
|
||||
name = "UO71 Loot Vault"
|
||||
icon_state = "awaycontent11"
|
||||
requires_power = 0
|
||||
tele_proof = 1
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders1
|
||||
name = "paper - 'Sealed Facility'"
|
||||
info = {"<b>SEALED FACILITY</b><br>
|
||||
<br>
|
||||
This facility is sealed shut by order of Commander Marquez. Do not enter.<br>
|
||||
Terror spiders live here. We believe they are a weapon developed by the syndicate.<br>
|
||||
Any surviving personnel are to evacuate immediately via the gateway.<br>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders2
|
||||
name = "paper - 'The Trio of Terror'"
|
||||
info = {"<b>Status Report on the 'Terrors'</b><br>
|
||||
<br>
|
||||
All the spiders are deadly. We know this much already. Within an hour of their appearance, they have killed several staff.<br>
|
||||
Three, however, bear particular mention, as they appear to be leading the spider hivemind.<br>
|
||||
<br>
|
||||
The Mother is held in containment 1. Advise leaving her alone.<br>
|
||||
It is likely that the hundreds of tiny spiders swarming over her back would come to her defense if she was threatened.<br>
|
||||
<br>
|
||||
The Prince is held in containment 2. He appears very aggressive, incredibly fast, strong, and durable. Extreme force and agility would be required to neutralize him.<br>
|
||||
It is likely the appearance of the prince was related to our initial aggression against the Queen. These things can THINK.<br>
|
||||
<br>
|
||||
The Queen cannot be contained. She lives in the old bar, south of mining. She continues to breed dangerous spiders at an alarming rate.<br>
|
||||
Many of her offspring are already roaming the compound, traveling through the vents. Contact with the team sent to subdue her has been lost.<br>
|
||||
<br>
|
||||
<br>
|
||||
Based on the situation, Commander, I advise immediate evacuation through the gateway.<br>
|
||||
-Research Director Simons<br>
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders3
|
||||
name = "paper - 'Final Report'"
|
||||
info = {"FROM: Field Agent 0738<br>
|
||||
TO: Syndicate #873589<br>
|
||||
SUBJECT: Mission Success<br>
|
||||
<br>
|
||||
I have seeded the Terror Queen egg in a dingy looking bar that bored engineers constructed near the mining tunnels.<br>
|
||||
No doubt she will grow soon.<br>
|
||||
<br>
|
||||
I have also placed the Mother and Prince eggs nearby, injected with sedative. Hopefully the dimwitted NT scientists bring them back for study.<br>
|
||||
With any luck, the Queen will sense them telepathically, think NT is holding her children hostage, and attack.<br>
|
||||
<br>
|
||||
I am going to extract out of the gateway before this all goes down.<br>
|
||||
I don't imagine the staff have very long to live once the Queen declares war on this place.<br>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders4
|
||||
name = "paper - 'Prescription for Jones, David'"
|
||||
info = {"PRESCRIPTION FOR: David Jones<br>
|
||||
RANK: Miner<br>
|
||||
FOR: Haloperidol<br>
|
||||
REASON FOR TREATMENT: Hallucinations, Paranoia<br>
|
||||
CAUSE: Hallucinations caused by encounter with toxic spit of spider in the caves. Paranoia caused by disappearing staff and suspicions of syndicate infiltration.<br>
|
||||
TREATMENT PLAN: Take as needed. See Dr. Phloxi in one week if symptoms persist. <br>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders5
|
||||
name = "paper - 'A Study in Terror'"
|
||||
info = {"<b>Findings Overview</b><br>
|
||||
<br>
|
||||
<p>Gray Spiders<br>Stealthy predators that ambush prey from vents. Otherwise weak.</p>
|
||||
<p>Red Spiders<br>Can kill anyone in melee, but slow.</p>
|
||||
<p>Green<br>Will lay eggs on dead bodies, breeding more spiders.</p>
|
||||
<p>Black<br>Even a single bite is enough to kill a humanoid, given time.</p>
|
||||
<p>White<br>Injects a parasitic agent. Deemed to pose too great an infection risk to study.</p>
|
||||
<p>Purple<br>Only seen guarding the nest of the Queen to the south. Appear to be territorial, and very dangerous.</p>
|
||||
<p>Prince<br>Held in containment 2. Appears to be a sort of super-warrior. Fast, strong, and thickly armored.</p>
|
||||
<p>Mother<br>Carries hordes of spiderlings on its back. Held in containment 1. </p>
|
||||
<p>Queen<br>Unable to contain. Present south of Cargo before contact was lost. Presumed ruler of the local hive.</p>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders6
|
||||
name = "paper - 'A Study in Venom'"
|
||||
info = {"<b>Initial Report - Black Widow Venom</b><br>
|
||||
<br>
|
||||
Even a single bite kills within a few minutes. Immediate charcoal is necessary for the victim to survive.<br>
|
||||
The fascinating thing is that multiple bites actually cause rapid symptom onset. The victim quickly loses the ability to walk.<br>
|
||||
One test monkey went from perfect health to death in under 60 seconds - from 3 bites.<br>
|
||||
I am so very glad I'm not responsible for keeping these things contained."}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders7
|
||||
name = "paper - 'Security Orders'"
|
||||
info = {"<b>Directives for Officer James</b><br>
|
||||
<br>
|
||||
1. Find a way to lift the bridge lockdown.<br>
|
||||
2. Kill any spiders you encounter.<br>
|
||||
3. Once on the bridge, open a path to the Queen in the south, and find a way to kill her, ending the infestation. <br>
|
||||
Good luck, Officer.<br>
|
||||
"}
|
||||
|
||||
/obj/item/weapon/paper/terrorspiders8
|
||||
name = "paper - 'Last Words'"
|
||||
info = {"<b>The Last Words of Nurse Barnes</b><br>
|
||||
<br>
|
||||
It is too much. First Phil, then those damn spiders bite Mary too. Heaven help us. <br>
|
||||
I'll be evacuating as soon as I've grabbed my supplies. I had to pay for those myself. Stupid budget cuts. <br>
|
||||
The new world they've found for us isn't that hospitable, but at least there are no deadly spid---<br>
|
||||
(the writing trails off, as if the writer was interrupted)<br>
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/awaymission_aeg
|
||||
name = "Wireless Energy Gun"
|
||||
desc = "An energy gun that recharges wirelessly during away missions. Does not work on the main station."
|
||||
force = 10
|
||||
origin_tech = null
|
||||
selfcharge = 1
|
||||
can_charge = 0
|
||||
var/inawaymission = 1
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/awaymission_aeg/process()
|
||||
var/turf/my_loc = get_turf(src)
|
||||
if(is_away_level(my_loc.z))
|
||||
if(inawaymission)
|
||||
return ..()
|
||||
if(ismob(loc))
|
||||
to_chat(loc, "<span class='notice'>Your [src] activates, starting to draw power from a nearby wireless power source.</span>")
|
||||
inawaymission = 1
|
||||
else
|
||||
if(inawaymission)
|
||||
if(ismob(loc))
|
||||
to_chat(loc, "<span class='danger'>Your [src] deactivates, as it is out of range from its power source.</span>")
|
||||
power_supply.charge = 0
|
||||
inawaymission = 0
|
||||
update_icon()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/terror_black_toxin
|
||||
name = "beaker 'Black Terror Venom'"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/terror_black_toxin/New()
|
||||
..()
|
||||
reagents.add_reagent("terror_black_toxin", 50)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/machinery/computer/id_upgrader
|
||||
name = "ID Upgrade Machine"
|
||||
icon_state = "guest"
|
||||
icon_screen = "pass"
|
||||
var/list/access_to_give = list(access_away01)
|
||||
var/beenused = 0
|
||||
var/door_to_open = "UO71_Start"
|
||||
|
||||
/obj/machinery/computer/id_upgrader/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/card/id))
|
||||
var/obj/item/weapon/card/id/D = I
|
||||
if(!access_to_give.len)
|
||||
to_chat(user, "<span class='notice'>This machine appears to be configured incorrectly.</span>")
|
||||
return
|
||||
var/did_upgrade = 0
|
||||
var/list/id_access = D.GetAccess()
|
||||
for(var/this_access in access_to_give)
|
||||
if(!(this_access in id_access))
|
||||
// don't have it - add it
|
||||
D.access |= this_access
|
||||
did_upgrade = 1
|
||||
if(did_upgrade)
|
||||
to_chat(user, "<span class='notice'>An access type was added to your ID card.</span>")
|
||||
if(beenused)
|
||||
return
|
||||
spawn(1)
|
||||
beenused = 1
|
||||
var/unlocked_something = 0
|
||||
for(var/obj/machinery/door/poddoor/P in airlocks)
|
||||
if(P.density && P.id_tag == door_to_open && P.z == z)
|
||||
P.open()
|
||||
unlocked_something = 1
|
||||
if(unlocked_something)
|
||||
to_chat(user, "<span class='danger'>Activating the machine has unlocked a way forward!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Your ID card already has all the access this machine can give.</span>")
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -111,6 +111,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Barber?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Barber",5)
|
||||
return
|
||||
if("2")
|
||||
@@ -118,6 +120,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Brig Physician?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Brig Physician",5)
|
||||
return
|
||||
if("3")
|
||||
@@ -125,6 +129,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Nanotrasen Representative?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Nanotrasen Representative",30)
|
||||
return
|
||||
if("5")
|
||||
@@ -132,6 +138,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Blueshield?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Blueshield",30)
|
||||
return
|
||||
if("6")
|
||||
@@ -139,6 +147,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Mechanic?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Mechanic",30)
|
||||
return
|
||||
if("7")
|
||||
@@ -146,6 +156,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Magistrate?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Magistrate",45)
|
||||
return
|
||||
if("9")
|
||||
@@ -153,6 +165,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Security Pod Pilot?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_job_unlock("Security Pod Pilot",30)
|
||||
return
|
||||
if(href_list["KarmaBuy2"])
|
||||
@@ -163,6 +177,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Machine People?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Machine",15)
|
||||
return
|
||||
if("2")
|
||||
@@ -170,6 +186,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Kidan?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Kidan",30)
|
||||
return
|
||||
if("3")
|
||||
@@ -177,6 +195,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Grey?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Grey",30)
|
||||
return
|
||||
if("4")
|
||||
@@ -184,6 +204,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Vox?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Vox",45)
|
||||
return
|
||||
if("5")
|
||||
@@ -191,6 +213,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Slime People?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Slime People",45)
|
||||
return
|
||||
if("6")
|
||||
@@ -198,6 +222,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Plasmaman?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Plasmaman",100)
|
||||
return
|
||||
if("7")
|
||||
@@ -205,6 +231,8 @@
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
if(alert("Are you sure you want to unlock Drask?", "Confirmation", "No", "Yes") != "Yes")
|
||||
return
|
||||
DB_species_unlock("Drask",30)
|
||||
return
|
||||
if(href_list["KarmaRefund"])
|
||||
|
||||
@@ -108,7 +108,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
var/underwear = "Nude" //underwear type
|
||||
var/undershirt = "Nude" //undershirt type
|
||||
var/socks = "Nude" //socks type
|
||||
var/backbag = 2 //backpack type
|
||||
var/backbag = GBACKPACK //backpack type
|
||||
var/ha_style = "None" //Head accessory style
|
||||
var/r_headacc = 0 //Head accessory colour
|
||||
var/g_headacc = 0 //Head accessory colour
|
||||
@@ -414,7 +414,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "<b>Underwear:</b> <a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
|
||||
dat += "<b>Undershirt:</b> <a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
|
||||
dat += "<b>Socks:</b> <a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
|
||||
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbaglist[backbag]]</a><br>"
|
||||
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><br>"
|
||||
|
||||
dat += "</td></tr></table>"
|
||||
|
||||
@@ -1240,7 +1240,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
g_skin = rand(0,255)
|
||||
b_skin = rand(0,255)
|
||||
if("bag")
|
||||
backbag = rand(1,4)
|
||||
backbag = pick(backbaglist)
|
||||
/*if("skin_style")
|
||||
h_style = random_skin_style(gender)*/
|
||||
if("all")
|
||||
@@ -1718,9 +1718,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
ooccolor = new_ooccolor
|
||||
|
||||
if("bag")
|
||||
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
|
||||
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
|
||||
if(new_backbag)
|
||||
backbag = backbaglist.Find(new_backbag)
|
||||
backbag = new_backbag
|
||||
|
||||
if("nt_relation")
|
||||
var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed")
|
||||
@@ -2150,8 +2150,6 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if(body_accessory)
|
||||
character.body_accessory = body_accessory_by_name["[body_accessory]"]
|
||||
|
||||
if(backbag > 4 || backbag < 1)
|
||||
backbag = 1 //Same as above
|
||||
character.backbag = backbag
|
||||
|
||||
//Debugging report to track down a bug, which randomly assigned the plural gender to people.
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
b_eyes = text2num(query.item[35])
|
||||
underwear = query.item[36]
|
||||
undershirt = query.item[37]
|
||||
backbag = text2num(query.item[38])
|
||||
backbag = query.item[38]
|
||||
b_type = query.item[39]
|
||||
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
|
||||
underwear = sanitize_text(underwear, initial(underwear))
|
||||
undershirt = sanitize_text(undershirt, initial(undershirt))
|
||||
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
|
||||
backbag = sanitize_text(backbag, initial(backbag))
|
||||
b_type = sanitize_text(b_type, initial(b_type))
|
||||
|
||||
alternate_option = sanitize_integer(alternate_option, 0, 2, initial(alternate_option))
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
var/toggle_message = null
|
||||
var/alt_toggle_message = null
|
||||
var/active_sound = null
|
||||
var/toggle_sound = null
|
||||
var/toggle_cooldown = null
|
||||
var/cooldown = 0
|
||||
var/species_disguise = null
|
||||
@@ -566,7 +567,7 @@ BLIND // can't see anything
|
||||
permeability_coefficient = 0.90
|
||||
slot_flags = SLOT_ICLOTHING
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
species_fit = list("Vox")
|
||||
species_fit = list("Vox", "Drask")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/uniform.dmi'
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
burn_state = FIRE_PROOF
|
||||
species_fit = list("Vox")
|
||||
species_fit = list("Vox", "Drask")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/helmet.dmi'
|
||||
@@ -34,6 +34,8 @@
|
||||
while(up)
|
||||
playsound(src.loc, "[active_sound]", 100, 0, 4)
|
||||
sleep(15)
|
||||
if(toggle_sound)
|
||||
playsound(src.loc, "[toggle_sound]", 100, 0, 4)
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/visor
|
||||
@@ -71,11 +73,6 @@
|
||||
icon_state = "swat"
|
||||
item_state = "swat-alt"
|
||||
armor = list(melee = 15, bullet = 40, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/riot
|
||||
name = "riot helmet"
|
||||
@@ -127,11 +124,6 @@
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
strip_delay = 80
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi',
|
||||
"Drask" = 'icons/mob/species/drask/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/swat/syndicate
|
||||
name = "blood-red helmet"
|
||||
@@ -174,6 +166,12 @@
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "gladiator"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
toggle_message = "You attach the face shield to the"
|
||||
alt_toggle_message = "You remove the face shield from the"
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
|
||||
can_toggle = 1
|
||||
toggle_cooldown = 20
|
||||
toggle_sound = 'sound/items/ZippoClose.ogg'
|
||||
|
||||
obj/item/clothing/head/helmet/redtaghelm
|
||||
name = "red laser tag helmet"
|
||||
@@ -202,6 +200,10 @@ obj/item/clothing/head/blob
|
||||
item_state = "blobhat"
|
||||
flags = HEADCOVERSEYES|HEADCOVERSMOUTH
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/riot/knight/blue
|
||||
icon_state = "knight_blue"
|
||||
|
||||
@@ -31,17 +31,25 @@
|
||||
|
||||
//Unathi space gear. Huge and restrictive.
|
||||
/obj/item/clothing/head/helmet/space/unathi
|
||||
icon = 'icons/obj/clothing/species/unathi/hats.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/unathi/helmet_cheap
|
||||
name = "NT breacher helmet"
|
||||
desc = "Hey! Watch it with that thing! It's a knock-off of a Unathi battle-helm, and that spike could put someone's eye out."
|
||||
desc = "Hey! Watch it with that thing! It's a knock-off of an Unathi battle-helm, and that spike could put someone's eye out."
|
||||
icon_state = "unathi_helm_cheap"
|
||||
item_state = "unathi_helm_cheap"
|
||||
item_color = "unathi_helm_cheap"
|
||||
|
||||
/obj/item/clothing/suit/space/unathi
|
||||
icon = 'icons/obj/clothing/species/unathi/suits.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/space/unathi/rig_cheap
|
||||
name = "NT breacher chassis"
|
||||
@@ -71,6 +79,7 @@
|
||||
armor = list(melee = 40, bullet = 40, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
icon = 'icons/obj/clothing/species/vox/suits.dmi'
|
||||
species_restricted = list("Vox", "Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi',
|
||||
@@ -80,6 +89,7 @@
|
||||
/obj/item/clothing/head/helmet/space/vox
|
||||
armor = list(melee = 40, bullet = 40, laser = 30, energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
flags = HEADCOVERSEYES|STOPSPRESSUREDMAGE
|
||||
icon = 'icons/obj/clothing/species/vox/hats.dmi'
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi',
|
||||
@@ -137,6 +147,7 @@
|
||||
|
||||
/obj/item/clothing/under/vox
|
||||
has_sensor = 0
|
||||
icon = 'icons/obj/clothing/species/vox/uniforms.dmi'
|
||||
species_restricted = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
@@ -150,12 +161,17 @@
|
||||
item_state = "vox-casual-1"
|
||||
body_parts_covered = LEGS
|
||||
|
||||
/obj/item/clothing/under/vox/vox_robes
|
||||
/obj/item/clothing/under/vox/vox_robes //This will be invisible on Armalis for lack of a proper sprite. They wear a carapace suit anyway, and this is more just to let them use IDs and such.
|
||||
name = "alien robes"
|
||||
desc = "Weird and flowing!"
|
||||
icon_state = "vox-casual-2"
|
||||
item_color = "vox-casual-2"
|
||||
item_state = "vox-casual-2"
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi',
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/suit.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/vox
|
||||
desc = "These bizarre gauntlets seem to be fitted for... bird claws?"
|
||||
@@ -165,20 +181,22 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
item_color = "gloves-vox"
|
||||
icon = 'icons/obj/clothing/species/vox/gloves.dmi'
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/gloves.dmi',
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/gloves.dmi',
|
||||
)
|
||||
/obj/item/clothing/shoes/magboots/vox
|
||||
|
||||
/obj/item/clothing/shoes/magboots/vox
|
||||
desc = "A pair of heavy, jagged armoured foot pieces, seemingly suitable for a velociraptor."
|
||||
name = "vox magclaws"
|
||||
item_state = "boots-vox"
|
||||
icon_state = "boots-vox"
|
||||
|
||||
icon = 'icons/obj/clothing/species/vox/shoes.dmi'
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/feet.dmi',
|
||||
"Vox Armalis" = 'icons/mob/species/armalis/feet.dmi'
|
||||
)
|
||||
|
||||
@@ -223,6 +241,7 @@
|
||||
name = "Vox EVA Suit"
|
||||
icon_state = "voxspace"
|
||||
item_state = "voxspace"
|
||||
icon = 'icons/obj/clothing/species/vox/suits.dmi'
|
||||
species_restricted = list("Vox", "Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi',
|
||||
@@ -233,6 +252,7 @@
|
||||
name = "Vox EVA Suit"
|
||||
icon_state = "voxspace"
|
||||
item_state = "voxspace"
|
||||
icon = 'icons/obj/clothing/species/vox/hats.dmi'
|
||||
species_restricted = list("Vox","Vox Armalis")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi',
|
||||
|
||||
@@ -170,14 +170,14 @@
|
||||
/obj/item/clothing/head/helmet/space/eva/mime
|
||||
name = "mime eva helmet"
|
||||
// icon = 'spaceciv.dmi'
|
||||
desc = "An eva helmet specifically designed for the mime."
|
||||
desc = ". . ."
|
||||
icon_state = "spacemimehelmet"
|
||||
item_state = "spacemimehelmet"
|
||||
|
||||
/obj/item/clothing/suit/space/eva/mime
|
||||
name = "mime eva suit"
|
||||
// icon = 'spaceciv.dmi'
|
||||
desc = "An EVA suit specifically designed for the mime."
|
||||
desc = ". . ."
|
||||
icon_state = "spacemime_suit"
|
||||
item_state = "spacemime_items"
|
||||
|
||||
|
||||
@@ -10,19 +10,19 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
|
||||
icon = 'icons/obj/clothing/species/plasmaman/suits.dmi'
|
||||
species_restricted = list("Plasmaman")
|
||||
sprite_sheets = list(
|
||||
"Plasmaman" = 'icons/mob/species/plasmaman/suit.dmi'
|
||||
)
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
|
||||
icon_state = "plasmaman_suit"
|
||||
item_state = "plasmaman_suit"
|
||||
|
||||
var/next_extinguish = 0
|
||||
var/extinguish_cooldown = 10 SECONDS
|
||||
var/extinguishes_left = 10 // Yeah yeah, reagents, blah blah blah. This should be simple.
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>")
|
||||
var/max_extinguishes = 5
|
||||
var/extinguishes_left = 5 // Yeah yeah, reagents, blah blah blah. This should be simple.
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user)
|
||||
var/mob/living/carbon/human/H=user
|
||||
@@ -32,15 +32,49 @@
|
||||
|
||||
next_extinguish = world.time + extinguish_cooldown
|
||||
extinguishes_left--
|
||||
to_chat(H, "<span class='warning'>Your suit automatically extinguishes the fire.</span>")
|
||||
to_chat(user, "<span class='warning'>You hear a soft click and a hiss from your suit as it automatically extinguishes the fire.</span>")
|
||||
if(!extinguishes_left)
|
||||
to_chat(user, "<span class='warning'>Onboard auto-extinguisher depleted, refill with a cartridge.</span>")
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
H.ExtinguishMob()
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/attackby(var/obj/item/A as obj, mob/user as mob, params)
|
||||
..()
|
||||
if(istype(A, /obj/item/weapon/plasmensuit_cartridge)) //This suit can only be reloaded by the appropriate cartridges, and only if it's got no more extinguishes left.
|
||||
if(!extinguishes_left)
|
||||
extinguishes_left = max_extinguishes //Full replenishment from the cartridge.
|
||||
to_chat(user, "<span class='notice'>You replenish \the [src] with the cartridge.</span>")
|
||||
qdel(A)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The suit must be depleted before it can be refilled.</span>")
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>")
|
||||
|
||||
/obj/item/weapon/plasmensuit_cartridge //Can be used to refill Plasmaman suits when they run out of autoextinguishes.
|
||||
name = "auto-extinguisher cartridge"
|
||||
desc = "A tiny and light fibreglass-framed auto-extinguisher cartridge."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "miniFE0"
|
||||
item_state = "miniFE"
|
||||
hitsound = null //Ultralight and
|
||||
flags = null //non-conductive
|
||||
force = 0
|
||||
throwforce = 0
|
||||
w_class = 2 //Fits in boxes.
|
||||
materials = list()
|
||||
attack_verb = list("tapped")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman
|
||||
name = "plasmaman helmet"
|
||||
desc = "A special containment helmet designed to protect a plasmaman's volatile body from outside exposure and quickly extinguish it in emergencies."
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
icon = 'icons/obj/clothing/species/plasmaman/hats.dmi'
|
||||
species_restricted = list("Plasmaman")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Plasmaman" = 'icons/mob/species/plasmaman/helmet.dmi'
|
||||
)
|
||||
icon_state = "plasmaman_helmet0"
|
||||
item_state = "plasmaman_helmet0"
|
||||
var/base_state = "plasmaman_helmet"
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
if(!piece) continue
|
||||
piece.icon_state = "[initial(icon_state)]"
|
||||
if(airtight)
|
||||
piece.flags &= ~(STOPSPRESSUREDMAGE|AIRTIGHT)
|
||||
piece.flags &= ~(STOPSPRESSUREDMAGE | AIRTIGHT)
|
||||
update_icon(1)
|
||||
|
||||
/obj/item/weapon/rig/proc/seal(mob/living/user)
|
||||
@@ -426,11 +426,9 @@
|
||||
helmet.toggle_light(wearer)
|
||||
for(var/obj/item/piece in list(helmet,boots,gloves,chest))
|
||||
if(!(flags & NODROP))
|
||||
piece.flags &= ~STOPSPRESSUREDMAGE
|
||||
piece.flags &= ~AIRTIGHT
|
||||
piece.flags &= ~(STOPSPRESSUREDMAGE | AIRTIGHT)
|
||||
else
|
||||
piece.flags |= STOPSPRESSUREDMAGE
|
||||
piece.flags |= AIRTIGHT
|
||||
piece.flags |= STOPSPRESSUREDMAGE | AIRTIGHT
|
||||
|
||||
/obj/item/weapon/rig/process()
|
||||
// If we've lost any parts, grab them back.
|
||||
@@ -442,7 +440,7 @@
|
||||
M.unEquip(piece)
|
||||
piece.forceMove(src)
|
||||
|
||||
if(!istype(wearer) || loc != wearer || wearer.back != src || (!(flags & NODROP)) || !cell || cell.charge <= 0)
|
||||
if(!istype(wearer) || loc != wearer || wearer.back != src || !(flags & NODROP) || !cell || cell.charge <= 0)
|
||||
if(!cell || cell.charge <= 0)
|
||||
if(electrified > 0)
|
||||
electrified = 0
|
||||
@@ -777,8 +775,9 @@
|
||||
to_chat(wearer, "<span class='notice'>Your [use_obj] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.")
|
||||
|
||||
else if(deploy_mode != ONLY_RETRACT)
|
||||
if(check_slot && check_slot != use_obj)
|
||||
to_chat(wearer, "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>")
|
||||
if(check_slot)
|
||||
if(check_slot != use_obj) //If use_obj is already in check_slot, silently bail. Otherwise, tell the user why the part didn't deploy.
|
||||
to_chat(wearer, "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>")
|
||||
return
|
||||
use_obj.forceMove(wearer)
|
||||
if(!wearer.equip_to_slot_if_possible(use_obj, equip_to, 0, 1))
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
/obj/item/weapon/rig/verb/deploy_suit()
|
||||
set name = "Deploy Hardsuit"
|
||||
set desc = "Deploys helmet, gloves and boots."
|
||||
set desc = "Deploys helmet, gloves and boots all at once."
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
@@ -136,8 +136,8 @@
|
||||
deploy(wearer, usr)
|
||||
|
||||
/obj/item/weapon/rig/verb/toggle_seals_verb()
|
||||
set name = "Toggle Hardsuit"
|
||||
set desc = "Activates or deactivates your rig."
|
||||
set name = "Toggle Hardsuit Seals"
|
||||
set desc = "Seals or unseals your rig."
|
||||
set category = "Hardsuit"
|
||||
set src = usr.contents
|
||||
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
vision_restriction = 1
|
||||
offline_vision_restriction = 2
|
||||
|
||||
chest_type = /obj/item/clothing/suit/space/new_rig
|
||||
chest_type = /obj/item/clothing/suit/space/new_rig/unathi
|
||||
helm_type = /obj/item/clothing/head/helmet/space/new_rig/unathi
|
||||
glove_type = /obj/item/clothing/gloves/rig/unathi
|
||||
boot_type = /obj/item/clothing/shoes/magboots/rig/unathi
|
||||
|
||||
/obj/item/weapon/rig/unathi/fancy
|
||||
@@ -23,10 +24,23 @@
|
||||
vision_restriction = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/space/new_rig/unathi
|
||||
icon = 'icons/obj/clothing/species/unathi/hats.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
|
||||
/obj/item/clothing/suit/space/new_rig/unathi
|
||||
icon = 'icons/obj/clothing/species/unathi/suits.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
|
||||
/obj/item/clothing/gloves/rig/unathi
|
||||
icon = 'icons/obj/clothing/species/unathi/gloves.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/gloves.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/unathi
|
||||
species_restricted = list("Unathi")
|
||||
icon = 'icons/obj/clothing/species/unathi/shoes.dmi'
|
||||
species_restricted = list("Unathi")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/feet.dmi'
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user