mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
Moved most of the computer defines into the proper code file.
Moved a few of the computers into their own files. Security records now shows rank on the browse screen. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2909 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
145
code/datums/datacore.dm
Normal file
145
code/datums/datacore.dm
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
|
||||||
|
/obj/datacore/proc/manifest(var/nosleep = 0)
|
||||||
|
spawn()
|
||||||
|
if(!nosleep)
|
||||||
|
sleep(40)
|
||||||
|
for(var/mob/living/carbon/human/H in world)
|
||||||
|
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
|
||||||
|
var/datum/data/record/G = new()
|
||||||
|
var/datum/data/record/M = new()
|
||||||
|
var/datum/data/record/S = new()
|
||||||
|
var/datum/data/record/L = new()
|
||||||
|
var/obj/item/weapon/card/id/C = H.wear_id
|
||||||
|
if (C)
|
||||||
|
G.fields["rank"] = C.assignment
|
||||||
|
else
|
||||||
|
if(H.job)
|
||||||
|
G.fields["rank"] = H.job
|
||||||
|
else
|
||||||
|
G.fields["rank"] = "Unassigned"
|
||||||
|
G.fields["name"] = H.real_name
|
||||||
|
G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
|
||||||
|
M.fields["name"] = G.fields["name"]
|
||||||
|
M.fields["id"] = G.fields["id"]
|
||||||
|
S.fields["name"] = G.fields["name"]
|
||||||
|
S.fields["id"] = G.fields["id"]
|
||||||
|
if (H.gender == FEMALE)
|
||||||
|
G.fields["sex"] = "Female"
|
||||||
|
else
|
||||||
|
G.fields["sex"] = "Male"
|
||||||
|
G.fields["age"] = text("[]", H.age)
|
||||||
|
G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity))
|
||||||
|
G.fields["p_stat"] = "Active"
|
||||||
|
G.fields["m_stat"] = "Stable"
|
||||||
|
M.fields["b_type"] = text("[]", H.b_type)
|
||||||
|
M.fields["b_dna"] = H.dna.unique_enzymes
|
||||||
|
M.fields["mi_dis"] = "None"
|
||||||
|
M.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
||||||
|
M.fields["ma_dis"] = "None"
|
||||||
|
M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
||||||
|
M.fields["alg"] = "None"
|
||||||
|
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
||||||
|
M.fields["cdi"] = "None"
|
||||||
|
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
||||||
|
M.fields["notes"] = "No notes."
|
||||||
|
S.fields["criminal"] = "None"
|
||||||
|
S.fields["mi_crim"] = "None"
|
||||||
|
S.fields["mi_crim_d"] = "No minor crime convictions."
|
||||||
|
S.fields["ma_crim"] = "None"
|
||||||
|
S.fields["ma_crim_d"] = "No major crime convictions."
|
||||||
|
S.fields["notes"] = "No notes."
|
||||||
|
|
||||||
|
//Begin locked reporting
|
||||||
|
L.fields["name"] = H.real_name
|
||||||
|
L.fields["sex"] = H.gender
|
||||||
|
L.fields["age"] = H.age
|
||||||
|
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
|
||||||
|
L.fields["rank"] = H.mind.assigned_role
|
||||||
|
L.fields["b_type"] = H.b_type
|
||||||
|
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||||
|
L.fields["enzymes"] = H.dna.struc_enzymes
|
||||||
|
L.fields["identity"] = H.dna.uni_identity
|
||||||
|
L.fields["image"] = getFlatIcon(H,0)
|
||||||
|
//End locked reporting
|
||||||
|
|
||||||
|
general += G
|
||||||
|
medical += M
|
||||||
|
security += S
|
||||||
|
locked += L
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/datacore/proc/manifest_modify(var/name, var/assignment)
|
||||||
|
var/datum/data/record/foundrecord
|
||||||
|
|
||||||
|
for(var/datum/data/record/t in data_core.general)
|
||||||
|
if(t.fields["name"] == name)
|
||||||
|
foundrecord = t
|
||||||
|
break
|
||||||
|
|
||||||
|
if(foundrecord)
|
||||||
|
foundrecord.fields["rank"] = assignment
|
||||||
|
|
||||||
|
|
||||||
|
/obj/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
||||||
|
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
|
||||||
|
var/datum/data/record/G = new()
|
||||||
|
var/datum/data/record/M = new()
|
||||||
|
var/datum/data/record/S = new()
|
||||||
|
var/datum/data/record/L = new()
|
||||||
|
var/obj/item/weapon/card/id/C = H.wear_id
|
||||||
|
if (C)
|
||||||
|
G.fields["rank"] = C.assignment
|
||||||
|
else
|
||||||
|
if(H.job)
|
||||||
|
G.fields["rank"] = H.job
|
||||||
|
else
|
||||||
|
G.fields["rank"] = "Unassigned"
|
||||||
|
G.fields["name"] = H.real_name
|
||||||
|
G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
|
||||||
|
M.fields["name"] = G.fields["name"]
|
||||||
|
M.fields["id"] = G.fields["id"]
|
||||||
|
S.fields["name"] = G.fields["name"]
|
||||||
|
S.fields["id"] = G.fields["id"]
|
||||||
|
if (H.gender == FEMALE)
|
||||||
|
G.fields["sex"] = "Female"
|
||||||
|
else
|
||||||
|
G.fields["sex"] = "Male"
|
||||||
|
G.fields["age"] = text("[]", H.age)
|
||||||
|
G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity))
|
||||||
|
G.fields["p_stat"] = "Active"
|
||||||
|
G.fields["m_stat"] = "Stable"
|
||||||
|
M.fields["b_type"] = text("[]", H.b_type)
|
||||||
|
M.fields["b_dna"] = H.dna.unique_enzymes
|
||||||
|
M.fields["mi_dis"] = "None"
|
||||||
|
M.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
||||||
|
M.fields["ma_dis"] = "None"
|
||||||
|
M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
||||||
|
M.fields["alg"] = "None"
|
||||||
|
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
||||||
|
M.fields["cdi"] = "None"
|
||||||
|
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
||||||
|
M.fields["notes"] = "No notes."
|
||||||
|
S.fields["criminal"] = "None"
|
||||||
|
S.fields["mi_crim"] = "None"
|
||||||
|
S.fields["mi_crim_d"] = "No minor crime convictions."
|
||||||
|
S.fields["ma_crim"] = "None"
|
||||||
|
S.fields["ma_crim_d"] = "No major crime convictions."
|
||||||
|
S.fields["notes"] = "No notes."
|
||||||
|
|
||||||
|
//Begin locked reporting
|
||||||
|
L.fields["name"] = H.real_name
|
||||||
|
L.fields["sex"] = H.gender
|
||||||
|
L.fields["age"] = H.age
|
||||||
|
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
|
||||||
|
L.fields["rank"] = H.mind.assigned_role
|
||||||
|
L.fields["b_type"] = H.b_type
|
||||||
|
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||||
|
L.fields["enzymes"] = H.dna.struc_enzymes
|
||||||
|
L.fields["identity"] = H.dna.uni_identity
|
||||||
|
L.fields["image"] = getFlatIcon(H,0)
|
||||||
|
//End locked reporting
|
||||||
|
|
||||||
|
general += G
|
||||||
|
medical += M
|
||||||
|
security += S
|
||||||
|
locked += L
|
||||||
@@ -1,302 +0,0 @@
|
|||||||
/obj/machinery/computer
|
|
||||||
name = "computer"
|
|
||||||
icon = 'computer.dmi'
|
|
||||||
density = 1
|
|
||||||
anchored = 1.0
|
|
||||||
var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassemble
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating
|
|
||||||
name = "Operating Computer"
|
|
||||||
density = 1
|
|
||||||
anchored = 1.0
|
|
||||||
icon_state = "operating"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/operating"
|
|
||||||
var/mob/living/carbon/human/victim = null
|
|
||||||
var/obj/machinery/optable/table = null
|
|
||||||
var/id = 0.0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/arcade
|
|
||||||
name = "arcade machine"
|
|
||||||
desc = "Does not support Pin ball."
|
|
||||||
icon = 'computer.dmi'
|
|
||||||
icon_state = "arcade"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/arcade"
|
|
||||||
var/enemy_name = "Space Villian"
|
|
||||||
var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc
|
|
||||||
var/player_hp = 30 //Player health/attack points
|
|
||||||
var/player_mp = 10
|
|
||||||
var/enemy_hp = 45 //Enemy health/attack points
|
|
||||||
var/enemy_mp = 20
|
|
||||||
var/gameover = 0
|
|
||||||
var/blocked = 0 //Player cannot attack/heal while set
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/aiupload
|
|
||||||
name = "AI Upload"
|
|
||||||
desc = "Used to upload laws to the AI."
|
|
||||||
icon_state = "command"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/aiupload"
|
|
||||||
var/mob/living/silicon/ai/current = null
|
|
||||||
var/opened = 0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/borgupload
|
|
||||||
name = "Cyborg Upload"
|
|
||||||
desc = "Used to upload laws to Cyborgs."
|
|
||||||
icon_state = "command"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/borgupload"
|
|
||||||
var/mob/living/silicon/robot/current = null
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert
|
|
||||||
name = "Station Alert Computer"
|
|
||||||
desc = "Used to access the station's automated alert system."
|
|
||||||
icon_state = "alert:0"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/stationalert"
|
|
||||||
var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list())
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert
|
|
||||||
name = "Atmospheric Alert Computer"
|
|
||||||
desc = "Used to access the station's atmospheric sensors."
|
|
||||||
icon_state = "alert:0"
|
|
||||||
var/list/priority_alarms = list()
|
|
||||||
var/list/minor_alarms = list()
|
|
||||||
var/receive_frequency = 1437
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere
|
|
||||||
name = "atmos"
|
|
||||||
desc = "A computer for Atmospherics."
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch
|
|
||||||
name = "Area Air Control"
|
|
||||||
desc = "Nanotrasen provided this, barely."
|
|
||||||
icon_state = "atmos"
|
|
||||||
var/otherarea
|
|
||||||
var/area/area
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch
|
|
||||||
name = "Master Air Control"
|
|
||||||
desc = "Emergancy global overrides for the entire atmospherics system."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/card
|
|
||||||
name = "Identification Computer"
|
|
||||||
desc = "You can use this to change ID's."
|
|
||||||
icon_state = "id"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/card"
|
|
||||||
var/obj/item/weapon/card/id/scan = null
|
|
||||||
var/obj/item/weapon/card/id/modify = null
|
|
||||||
var/authenticated = 0.0
|
|
||||||
var/mode = 0.0
|
|
||||||
var/printing = null
|
|
||||||
req_access = list(access_change_ids)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/centcom
|
|
||||||
name = "CentCom Identification Computer"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
|
||||||
req_access = list(access_cent_captain)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/dna
|
|
||||||
name = "DNA operations computer"
|
|
||||||
desc = "A Computer used to advanced DNA stuff."
|
|
||||||
icon_state = "dna"
|
|
||||||
var/obj/item/weapon/card/data/scan = null
|
|
||||||
var/obj/item/weapon/card/data/modify = null
|
|
||||||
var/obj/item/weapon/card/data/modify2 = null
|
|
||||||
var/mode = null
|
|
||||||
var/temp = null
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/hologram_comp
|
|
||||||
name = "Hologram Computer"
|
|
||||||
desc = "Rumoured to control holograms."
|
|
||||||
icon = 'stationobjs.dmi'
|
|
||||||
icon_state = "holo_console0"
|
|
||||||
var/obj/machinery/hologram/projector/projector = null
|
|
||||||
var/temp = null
|
|
||||||
var/lumens = 0.0
|
|
||||||
var/h_r = 245.0
|
|
||||||
var/h_g = 245.0
|
|
||||||
var/h_b = 245.0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/med_data
|
|
||||||
name = "Medical Records"
|
|
||||||
desc = "This can be used to check medical records."
|
|
||||||
icon_state = "medcomp"
|
|
||||||
req_access = list(access_medical)
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/med_data"
|
|
||||||
var/obj/item/weapon/card/id/scan = null
|
|
||||||
var/authenticated = null
|
|
||||||
var/rank = null
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/med_data/laptop
|
|
||||||
name = "Medical Laptop"
|
|
||||||
desc = "Cheap Nanotrasen Laptop."
|
|
||||||
icon_state = "medlaptop"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod
|
|
||||||
name = "Pod Launch Control"
|
|
||||||
desc = "A controll for launching pods. Some people prefer firing Mechas."
|
|
||||||
icon_state = "computer_generic"
|
|
||||||
var/id = 1.0
|
|
||||||
var/obj/machinery/mass_driver/connected = null
|
|
||||||
var/timing = 0.0
|
|
||||||
var/time = 30.0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/old
|
|
||||||
icon_state = "old"
|
|
||||||
name = "DoorMex Control Computer"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/old/syndicate
|
|
||||||
name = "ProComp Executive IIc"
|
|
||||||
desc = "The Syndicate operate on a tight budget. Operates external airlocks."
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/old/swf
|
|
||||||
name = "Magix System IV"
|
|
||||||
desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data
|
|
||||||
name = "Security Records"
|
|
||||||
desc = "Used to view and edit personnel's security records"
|
|
||||||
icon_state = "security"
|
|
||||||
req_access = list(access_security)
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/secure_data"
|
|
||||||
var/obj/item/weapon/card/id/scan = null
|
|
||||||
var/authenticated = null
|
|
||||||
var/rank = null
|
|
||||||
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
|
|
||||||
var/can_change_id = 0
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data/detective_computer
|
|
||||||
icon = 'computer.dmi'
|
|
||||||
icon_state = "messyfiles"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security
|
|
||||||
name = "Security Cameras"
|
|
||||||
desc = "Used to access the various cameras on the station."
|
|
||||||
icon_state = "cameras"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/security"
|
|
||||||
var/obj/machinery/camera/current = null
|
|
||||||
var/last_pic = 1.0
|
|
||||||
var/network = "SS13"
|
|
||||||
var/maplevel = 1
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/telescreen
|
|
||||||
name = "Telescreen"
|
|
||||||
desc = "Used for watching an empty arena."
|
|
||||||
icon = 'stationobjs.dmi'
|
|
||||||
icon_state = "telescreen"
|
|
||||||
network = "thunder"
|
|
||||||
density = 0
|
|
||||||
circuit = null
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/wooden_tv
|
|
||||||
name = "Security Cameras"
|
|
||||||
desc = "An old TV hooked into the stations camera network."
|
|
||||||
icon_state = "security_det"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/mining
|
|
||||||
name = "Outpost Cameras"
|
|
||||||
desc = "Used to access the various cameras on the outpost."
|
|
||||||
icon_state = "miningcameras"
|
|
||||||
network = "MINE"
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/mining"
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/crew
|
|
||||||
name = "Crew monitoring computer"
|
|
||||||
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
|
|
||||||
icon_state = "crew"
|
|
||||||
use_power = 1
|
|
||||||
idle_power_usage = 250
|
|
||||||
active_power_usage = 500
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/crew"
|
|
||||||
var/list/tracked = list( )
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/robotics
|
|
||||||
name = "Robotics Control"
|
|
||||||
desc = "Used to remotely lockdown or detonate linked Cyborgs."
|
|
||||||
icon = 'computer.dmi'
|
|
||||||
icon_state = "robot"
|
|
||||||
req_access = list(access_robotics)
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/robotics"
|
|
||||||
|
|
||||||
var/id = 0.0
|
|
||||||
var/temp = null
|
|
||||||
var/status = 0
|
|
||||||
var/timeleft = 60
|
|
||||||
var/stop = 0.0
|
|
||||||
var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text
|
|
||||||
|
|
||||||
|
|
||||||
/*/obj/machinery/computer/scan_consolenew //Coming Soon, I highly doubt this but Ill leave it here anyways
|
|
||||||
name = "DNA Modifier Access Console"
|
|
||||||
desc = "Scand DNA."
|
|
||||||
icon = 'computer.dmi'
|
|
||||||
icon_state = "scanner"
|
|
||||||
density = 1
|
|
||||||
var/uniblock = 1.0
|
|
||||||
var/strucblock = 1.0
|
|
||||||
var/subblock = 1.0
|
|
||||||
var/status = null
|
|
||||||
var/radduration = 2.0
|
|
||||||
var/radstrength = 1.0
|
|
||||||
var/radacc = 1.0
|
|
||||||
var/buffer1 = null
|
|
||||||
var/buffer2 = null
|
|
||||||
var/buffer3 = null
|
|
||||||
var/buffer1owner = null
|
|
||||||
var/buffer2owner = null
|
|
||||||
var/buffer3owner = null
|
|
||||||
var/buffer1label = null
|
|
||||||
var/buffer2label = null
|
|
||||||
var/buffer3label = null
|
|
||||||
var/buffer1type = null
|
|
||||||
var/buffer2type = null
|
|
||||||
var/buffer3type = null
|
|
||||||
var/buffer1iue = 0
|
|
||||||
var/buffer2iue = 0
|
|
||||||
var/buffer3iue = 0
|
|
||||||
var/delete = 0
|
|
||||||
var/injectorready = 1
|
|
||||||
var/temphtml = null
|
|
||||||
var/obj/machinery/dna_scanner/connected = null
|
|
||||||
var/obj/item/weapon/disk/data/diskette = null
|
|
||||||
anchored = 1.0
|
|
||||||
use_power = 1
|
|
||||||
idle_power_usage = 10
|
|
||||||
active_power_usage = 400 */
|
|
||||||
@@ -155,20 +155,6 @@
|
|||||||
active_power_usage = 4
|
active_power_usage = 4
|
||||||
layer = TURF_LAYER
|
layer = TURF_LAYER
|
||||||
|
|
||||||
/obj/machinery/mass_driver
|
|
||||||
name = "mass driver"
|
|
||||||
desc = "Shoots things into space."
|
|
||||||
icon = 'stationobjs.dmi'
|
|
||||||
icon_state = "mass_driver"
|
|
||||||
var/power = 1.0
|
|
||||||
var/code = 1.0
|
|
||||||
var/id = 1.0
|
|
||||||
anchored = 1.0
|
|
||||||
var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
|
|
||||||
use_power = 1
|
|
||||||
idle_power_usage = 2
|
|
||||||
active_power_usage = 50
|
|
||||||
|
|
||||||
/obj/machinery/meter
|
/obj/machinery/meter
|
||||||
name = "meter"
|
name = "meter"
|
||||||
desc = "It measures something."
|
desc = "It measures something."
|
||||||
|
|||||||
@@ -442,94 +442,6 @@ Rate: [volume_rate] L/sec<BR>"}
|
|||||||
|
|
||||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert
|
|
||||||
var/datum/radio_frequency/radio_connection
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/initialize()
|
|
||||||
set_frequency(receive_frequency)
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
|
|
||||||
if(!signal || signal.encryption) return
|
|
||||||
|
|
||||||
var/zone = signal.data["zone"]
|
|
||||||
var/severity = signal.data["alert"]
|
|
||||||
|
|
||||||
if(!zone || !severity) return
|
|
||||||
|
|
||||||
minor_alarms -= zone
|
|
||||||
priority_alarms -= zone
|
|
||||||
if(severity=="severe")
|
|
||||||
priority_alarms += zone
|
|
||||||
else if (severity=="minor")
|
|
||||||
minor_alarms += zone
|
|
||||||
/*else "clear"*/
|
|
||||||
//do nothing
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency)
|
|
||||||
radio_controller.remove_object(src, receive_frequency)
|
|
||||||
receive_frequency = new_frequency
|
|
||||||
radio_connection = radio_controller.add_object(src, receive_frequency, RADIO_ATMOSIA)
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/attack_hand(mob/user)
|
|
||||||
user << browse(return_text(),"window=computer")
|
|
||||||
user.machine = src
|
|
||||||
onclose(user, "computer")
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/process()
|
|
||||||
..()
|
|
||||||
src.updateDialog()
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/update_icon()
|
|
||||||
if(priority_alarms.len)
|
|
||||||
icon_state = "alert:2"
|
|
||||||
|
|
||||||
else if(minor_alarms.len)
|
|
||||||
icon_state = "alert:1"
|
|
||||||
|
|
||||||
else
|
|
||||||
icon_state = "alert:0"
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/proc/return_text()
|
|
||||||
var/priority_text
|
|
||||||
var/minor_text
|
|
||||||
|
|
||||||
if(priority_alarms.len)
|
|
||||||
for(var/zone in priority_alarms)
|
|
||||||
priority_text += "<FONT color='red'><B>[zone]</B></FONT> <A href='?src=\ref[src];priority_clear=[ckey(zone)]'>X</A><BR>"
|
|
||||||
else
|
|
||||||
priority_text = "No priority alerts detected.<BR>"
|
|
||||||
|
|
||||||
if(minor_alarms.len)
|
|
||||||
for(var/zone in minor_alarms)
|
|
||||||
minor_text += "<B>[zone]</B> <A href='?src=\ref[src];minor_clear=[ckey(zone)]'>X</A><BR>"
|
|
||||||
else
|
|
||||||
minor_text = "No minor alerts detected.<BR>"
|
|
||||||
|
|
||||||
var/output = {"<B>[name]</B><HR>
|
|
||||||
<B>Priority Alerts:</B><BR>
|
|
||||||
[priority_text]
|
|
||||||
<BR>
|
|
||||||
<HR>
|
|
||||||
<B>Minor Alerts:</B><BR>
|
|
||||||
[minor_text]
|
|
||||||
<BR>"}
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmos_alert/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
|
|
||||||
if(href_list["priority_clear"])
|
|
||||||
var/removing_zone = href_list["priority_clear"]
|
|
||||||
for(var/zone in priority_alarms)
|
|
||||||
if(ckey(zone) == removing_zone)
|
|
||||||
priority_alarms -= zone
|
|
||||||
|
|
||||||
if(href_list["minor_clear"])
|
|
||||||
var/removing_zone = href_list["minor_clear"]
|
|
||||||
for(var/zone in minor_alarms)
|
|
||||||
if(ckey(zone) == removing_zone)
|
|
||||||
minor_alarms -= zone
|
|
||||||
update_icon()
|
|
||||||
@@ -166,45 +166,6 @@
|
|||||||
L.Swap(j, j + 1)
|
L.Swap(j, j + 1)
|
||||||
return L
|
return L
|
||||||
|
|
||||||
/obj/machinery/computer/security/attack_hand(var/mob/user as mob)
|
|
||||||
if (stat & (NOPOWER|BROKEN))
|
|
||||||
return
|
|
||||||
|
|
||||||
user.machine = src
|
|
||||||
|
|
||||||
var/list/L = list()
|
|
||||||
for (var/obj/machinery/camera/C in world)
|
|
||||||
L.Add(C)
|
|
||||||
|
|
||||||
camera_sort(L)
|
|
||||||
|
|
||||||
var/list/D = list()
|
|
||||||
D["Cancel"] = "Cancel"
|
|
||||||
for (var/obj/machinery/camera/C in L)
|
|
||||||
if (C.network == network)
|
|
||||||
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
|
|
||||||
|
|
||||||
var/t = input(user, "Which camera should you change to?") as null|anything in D
|
|
||||||
|
|
||||||
if(!t)
|
|
||||||
user.machine = null
|
|
||||||
return 0
|
|
||||||
|
|
||||||
var/obj/machinery/camera/C = D[t]
|
|
||||||
|
|
||||||
if (t == "Cancel")
|
|
||||||
user.machine = null
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if (C)
|
|
||||||
if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) || !( C.status )) && (!istype(user, /mob/living/silicon/ai)))
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
src.current = C
|
|
||||||
use_power(50)
|
|
||||||
|
|
||||||
spawn( 5 )
|
|
||||||
attack_hand(user)
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/attack_ai(var/mob/user as mob)
|
/mob/living/silicon/ai/attack_ai(var/mob/user as mob)
|
||||||
if (user != src)
|
if (user != src)
|
||||||
|
|||||||
@@ -1,21 +1,36 @@
|
|||||||
|
/obj/machinery/computer/operating
|
||||||
|
name = "Operating Computer"
|
||||||
|
density = 1
|
||||||
|
anchored = 1.0
|
||||||
|
icon_state = "operating"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/operating"
|
||||||
|
var
|
||||||
|
mob/living/carbon/human/victim = null
|
||||||
|
obj/machinery/optable/table = null
|
||||||
|
id = 0.0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/New()
|
/obj/machinery/computer/operating/New()
|
||||||
..()
|
..()
|
||||||
for(var/obj/machinery/optable/O in world)
|
for(var/obj/machinery/optable/O in world)
|
||||||
if(src.id == O.id)
|
if(src.id == O.id)
|
||||||
src.table = O
|
src.table = O
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/attack_ai(mob/user)
|
/obj/machinery/computer/operating/attack_ai(mob/user)
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
if(stat & (BROKEN|NOPOWER))
|
if(stat & (BROKEN|NOPOWER))
|
||||||
return
|
return
|
||||||
interact(user)
|
interact(user)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/attack_hand(mob/user)
|
/obj/machinery/computer/operating/attack_hand(mob/user)
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
if(stat & (BROKEN|NOPOWER))
|
if(stat & (BROKEN|NOPOWER))
|
||||||
return
|
return
|
||||||
interact(user)
|
interact(user)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/proc/interact(mob/user)
|
/obj/machinery/computer/operating/proc/interact(mob/user)
|
||||||
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
|
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
|
||||||
if (!istype(user, /mob/living/silicon))
|
if (!istype(user, /mob/living/silicon))
|
||||||
@@ -52,15 +67,15 @@
|
|||||||
user << browse(dat, "window=op")
|
user << browse(dat, "window=op")
|
||||||
onclose(user, "op")
|
onclose(user, "op")
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/Topic(href, href_list)
|
/obj/machinery/computer/operating/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return
|
||||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||||
usr.machine = src
|
usr.machine = src
|
||||||
// if (href_list["update"])
|
|
||||||
// src.interact(usr)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/operating/process()
|
/obj/machinery/computer/operating/process()
|
||||||
if(!(stat & (NOPOWER|BROKEN)) )
|
if(!(stat & (NOPOWER|BROKEN)) )
|
||||||
use_power(500)
|
use_power(500)
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/obj/machinery/computer/arcade
|
||||||
|
name = "arcade machine"
|
||||||
|
desc = "Does not support Pin ball."
|
||||||
|
icon = 'computer.dmi'
|
||||||
|
icon_state = "arcade"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/arcade"
|
||||||
|
var/enemy_name = "Space Villian"
|
||||||
|
var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc
|
||||||
|
var/player_hp = 30 //Player health/attack points
|
||||||
|
var/player_mp = 10
|
||||||
|
var/enemy_hp = 45 //Enemy health/attack points
|
||||||
|
var/enemy_mp = 20
|
||||||
|
var/gameover = 0
|
||||||
|
var/blocked = 0 //Player cannot attack/heal while set
|
||||||
|
|
||||||
/obj/machinery/computer/arcade
|
/obj/machinery/computer/arcade
|
||||||
var/turtle = 0
|
var/turtle = 0
|
||||||
|
|
||||||
|
|||||||
@@ -1,103 +0,0 @@
|
|||||||
/*CONTENTS
|
|
||||||
Gas Sensor
|
|
||||||
Siphon computer
|
|
||||||
Atmos alert computer
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//the station alerts computer
|
|
||||||
/obj/machinery/computer/station_alert/attack_ai(mob/user)
|
|
||||||
add_fingerprint(user)
|
|
||||||
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
return
|
|
||||||
interact(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/attack_hand(mob/user)
|
|
||||||
add_fingerprint(user)
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
return
|
|
||||||
interact(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/proc/interact(mob/user)
|
|
||||||
usr.machine = src
|
|
||||||
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
|
||||||
dat += "<A HREF='?src=\ref[user];mach_close=alerts'>Close</A><br><br>"
|
|
||||||
for (var/cat in src.alarms)
|
|
||||||
dat += text("<B>[]</B><BR>\n", cat)
|
|
||||||
var/list/L = src.alarms[cat]
|
|
||||||
if (L.len)
|
|
||||||
for (var/alarm in L)
|
|
||||||
var/list/alm = L[alarm]
|
|
||||||
var/area/A = alm[1]
|
|
||||||
var/list/sources = alm[3]
|
|
||||||
dat += "<NOBR>"
|
|
||||||
dat += "• "
|
|
||||||
dat += "[A.name]"
|
|
||||||
if (sources.len > 1)
|
|
||||||
dat += text(" - [] sources", sources.len)
|
|
||||||
dat += "</NOBR><BR>\n"
|
|
||||||
else
|
|
||||||
dat += "-- All Systems Nominal<BR>\n"
|
|
||||||
dat += "<BR>\n"
|
|
||||||
user << browse(dat, "window=alerts")
|
|
||||||
onclose(user, "alerts")
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource)
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
return
|
|
||||||
var/list/L = src.alarms[class]
|
|
||||||
for (var/I in L)
|
|
||||||
if (I == A.name)
|
|
||||||
var/list/alarm = L[I]
|
|
||||||
var/list/sources = alarm[3]
|
|
||||||
if (!(alarmsource in sources))
|
|
||||||
sources += alarmsource
|
|
||||||
return 1
|
|
||||||
var/obj/machinery/camera/C = null
|
|
||||||
var/list/CL = null
|
|
||||||
if (O && istype(O, /list))
|
|
||||||
CL = O
|
|
||||||
if (CL.len == 1)
|
|
||||||
C = CL[1]
|
|
||||||
else if (O && istype(O, /obj/machinery/camera))
|
|
||||||
C = O
|
|
||||||
L[A.name] = list(A, (C) ? C : O, list(alarmsource))
|
|
||||||
return 1
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/proc/cancelAlarm(var/class, area/A as area, obj/origin)
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
return
|
|
||||||
var/list/L = src.alarms[class]
|
|
||||||
var/cleared = 0
|
|
||||||
for (var/I in L)
|
|
||||||
if (I == A.name)
|
|
||||||
var/list/alarm = L[I]
|
|
||||||
var/list/srcs = alarm[3]
|
|
||||||
if (origin in srcs)
|
|
||||||
srcs -= origin
|
|
||||||
if (srcs.len == 0)
|
|
||||||
cleared = 1
|
|
||||||
L -= I
|
|
||||||
return !cleared
|
|
||||||
|
|
||||||
/obj/machinery/computer/station_alert/process()
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
icon_state = "atmos0"
|
|
||||||
return
|
|
||||||
var/active_alarms = 0
|
|
||||||
for (var/cat in src.alarms)
|
|
||||||
var/list/L = src.alarms[cat]
|
|
||||||
if(L.len) active_alarms = 1
|
|
||||||
if(active_alarms)
|
|
||||||
icon_state = "alert:2"
|
|
||||||
else
|
|
||||||
icon_state = "alert:0"
|
|
||||||
|
|
||||||
..()
|
|
||||||
105
code/game/machinery/computer/atmos_alert.dm
Normal file
105
code/game/machinery/computer/atmos_alert.dm
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
|
||||||
|
/obj/machinery/computer/atmos_alert
|
||||||
|
name = "Atmospheric Alert Computer"
|
||||||
|
desc = "Used to access the station's atmospheric sensors."
|
||||||
|
icon_state = "alert:0"
|
||||||
|
var
|
||||||
|
list/priority_alarms = list()
|
||||||
|
list/minor_alarms = list()
|
||||||
|
receive_frequency = 1437
|
||||||
|
datum/radio_frequency/radio_connection
|
||||||
|
|
||||||
|
|
||||||
|
initialize()
|
||||||
|
set_frequency(receive_frequency)
|
||||||
|
|
||||||
|
receive_signal(datum/signal/signal)
|
||||||
|
if(!signal || signal.encryption) return
|
||||||
|
|
||||||
|
var/zone = signal.data["zone"]
|
||||||
|
var/severity = signal.data["alert"]
|
||||||
|
|
||||||
|
if(!zone || !severity) return
|
||||||
|
|
||||||
|
minor_alarms -= zone
|
||||||
|
priority_alarms -= zone
|
||||||
|
if(severity=="severe")
|
||||||
|
priority_alarms += zone
|
||||||
|
else if (severity=="minor")
|
||||||
|
minor_alarms += zone
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/set_frequency(new_frequency)
|
||||||
|
radio_controller.remove_object(src, receive_frequency)
|
||||||
|
receive_frequency = new_frequency
|
||||||
|
radio_connection = radio_controller.add_object(src, receive_frequency, RADIO_ATMOSIA)
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(mob/user)
|
||||||
|
user << browse(return_text(),"window=computer")
|
||||||
|
user.machine = src
|
||||||
|
onclose(user, "computer")
|
||||||
|
|
||||||
|
process()
|
||||||
|
..()
|
||||||
|
src.updateDialog()
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
if(priority_alarms.len)
|
||||||
|
icon_state = "alert:2"
|
||||||
|
|
||||||
|
else if(minor_alarms.len)
|
||||||
|
icon_state = "alert:1"
|
||||||
|
|
||||||
|
else
|
||||||
|
icon_state = "alert:0"
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/return_text()
|
||||||
|
var/priority_text
|
||||||
|
var/minor_text
|
||||||
|
|
||||||
|
if(priority_alarms.len)
|
||||||
|
for(var/zone in priority_alarms)
|
||||||
|
priority_text += "<FONT color='red'><B>[zone]</B></FONT> <A href='?src=\ref[src];priority_clear=[ckey(zone)]'>X</A><BR>"
|
||||||
|
else
|
||||||
|
priority_text = "No priority alerts detected.<BR>"
|
||||||
|
|
||||||
|
if(minor_alarms.len)
|
||||||
|
for(var/zone in minor_alarms)
|
||||||
|
minor_text += "<B>[zone]</B> <A href='?src=\ref[src];minor_clear=[ckey(zone)]'>X</A><BR>"
|
||||||
|
else
|
||||||
|
minor_text = "No minor alerts detected.<BR>"
|
||||||
|
|
||||||
|
var/output = {"<B>[name]</B><HR>
|
||||||
|
<B>Priority Alerts:</B><BR>
|
||||||
|
[priority_text]
|
||||||
|
<BR>
|
||||||
|
<HR>
|
||||||
|
<B>Minor Alerts:</B><BR>
|
||||||
|
[minor_text]
|
||||||
|
<BR>"}
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(href_list["priority_clear"])
|
||||||
|
var/removing_zone = href_list["priority_clear"]
|
||||||
|
for(var/zone in priority_alarms)
|
||||||
|
if(ckey(zone) == removing_zone)
|
||||||
|
priority_alarms -= zone
|
||||||
|
|
||||||
|
if(href_list["minor_clear"])
|
||||||
|
var/removing_zone = href_list["minor_clear"]
|
||||||
|
for(var/zone in minor_alarms)
|
||||||
|
if(ckey(zone) == removing_zone)
|
||||||
|
minor_alarms -= zone
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
90
code/game/machinery/computer/camera.dm
Normal file
90
code/game/machinery/computer/camera.dm
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
|
||||||
|
/obj/machinery/computer/security
|
||||||
|
name = "Security Cameras"
|
||||||
|
desc = "Used to access the various cameras on the station."
|
||||||
|
icon_state = "cameras"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/security"
|
||||||
|
var
|
||||||
|
obj/machinery/camera/current = null
|
||||||
|
last_pic = 1.0
|
||||||
|
network = "SS13"
|
||||||
|
mapping = 0//For the overview file, interesting bit of code.
|
||||||
|
|
||||||
|
|
||||||
|
attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
attack_paw(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
check_eye(var/mob/user as mob)
|
||||||
|
if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( current ) || !( current.status )) && (!istype(user, /mob/living/silicon)))
|
||||||
|
return null
|
||||||
|
user.reset_view(current)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(var/mob/user as mob)
|
||||||
|
if(stat & (NOPOWER|BROKEN)) return
|
||||||
|
|
||||||
|
user.machine = src
|
||||||
|
|
||||||
|
var/list/L = list()
|
||||||
|
for (var/obj/machinery/camera/C in world)
|
||||||
|
L.Add(C)
|
||||||
|
|
||||||
|
camera_sort(L)
|
||||||
|
|
||||||
|
var/list/D = list()
|
||||||
|
D["Cancel"] = "Cancel"
|
||||||
|
for(var/obj/machinery/camera/C in L)
|
||||||
|
if(C.network == network)
|
||||||
|
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
|
||||||
|
|
||||||
|
var/t = input(user, "Which camera should you change to?") as null|anything in D
|
||||||
|
if(!t)
|
||||||
|
user.machine = null
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/obj/machinery/camera/C = D[t]
|
||||||
|
|
||||||
|
if(t == "Cancel")
|
||||||
|
user.machine = null
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(C)
|
||||||
|
if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) || !( C.status )) && (!istype(user, /mob/living/silicon/ai)))
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
src.current = C
|
||||||
|
use_power(50)
|
||||||
|
spawn( 5 )
|
||||||
|
attack_hand(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/security/telescreen
|
||||||
|
name = "Telescreen"
|
||||||
|
desc = "Used for watching an empty arena."
|
||||||
|
icon = 'stationobjs.dmi'
|
||||||
|
icon_state = "telescreen"
|
||||||
|
network = "thunder"
|
||||||
|
density = 0
|
||||||
|
circuit = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/security/wooden_tv
|
||||||
|
name = "Security Cameras"
|
||||||
|
desc = "An old TV hooked into the stations camera network."
|
||||||
|
icon_state = "security_det"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/security/mining
|
||||||
|
name = "Outpost Cameras"
|
||||||
|
desc = "Used to access the various cameras on the outpost."
|
||||||
|
icon_state = "miningcameras"
|
||||||
|
network = "MINE"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/mining"
|
||||||
264
code/game/machinery/computer/card.dm
Normal file
264
code/game/machinery/computer/card.dm
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
/obj/machinery/computer/card
|
||||||
|
name = "Identification Computer"
|
||||||
|
desc = "You can use this to change ID's."
|
||||||
|
icon_state = "id"
|
||||||
|
req_access = list(access_change_ids)
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/card"
|
||||||
|
var
|
||||||
|
obj/item/weapon/card/id/scan = null
|
||||||
|
obj/item/weapon/card/id/modify = null
|
||||||
|
authenticated = 0.0
|
||||||
|
mode = 0.0
|
||||||
|
printing = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/attackby(O as obj, user as mob)//TODO:SANITY
|
||||||
|
if(istype(O, /obj/item/weapon/card/id))
|
||||||
|
var/obj/item/weapon/card/id/idcard = O
|
||||||
|
if(access_change_ids in idcard.access)
|
||||||
|
if(!scan)
|
||||||
|
usr.drop_item()
|
||||||
|
idcard.loc = src
|
||||||
|
scan = idcard
|
||||||
|
else if(!modify)
|
||||||
|
usr.drop_item()
|
||||||
|
idcard.loc = src
|
||||||
|
modify = idcard
|
||||||
|
else
|
||||||
|
if(!modify)
|
||||||
|
usr.drop_item()
|
||||||
|
idcard.loc = src
|
||||||
|
modify = idcard
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/attack_paw(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/attack_hand(var/mob/user as mob)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
|
||||||
|
user.machine = src
|
||||||
|
var/dat
|
||||||
|
if (!( ticker ))
|
||||||
|
return
|
||||||
|
if (mode) // accessing crew manifest
|
||||||
|
var/crew = ""
|
||||||
|
for(var/datum/data/record/t in data_core.general)
|
||||||
|
crew += "[t.fields["name"]] - [t.fields["rank"]]<br>"
|
||||||
|
dat = "<tt><b>Crew Manifest:</b><br>Please use security record computer to modify entries.<br>[crew]<a href='?src=\ref[src];choice=print'>Print</a><br><br><a href='?src=\ref[src];choice=mode;mode_target=0'>Access ID modification console.</a><br></tt>"
|
||||||
|
else
|
||||||
|
var/header = "<div align='center'><b>Identification Card Modifier</b></div>"
|
||||||
|
|
||||||
|
var/target_name
|
||||||
|
var/target_owner
|
||||||
|
var/target_rank
|
||||||
|
if(modify)
|
||||||
|
target_name = modify.name
|
||||||
|
else
|
||||||
|
target_name = "--------"
|
||||||
|
if(modify && modify.registered)
|
||||||
|
target_owner = modify.registered
|
||||||
|
else
|
||||||
|
target_owner = "--------"
|
||||||
|
if(modify && modify.assignment)
|
||||||
|
target_rank = modify.assignment
|
||||||
|
else
|
||||||
|
target_rank = "Unassigned"
|
||||||
|
|
||||||
|
var/scan_name
|
||||||
|
if(scan)
|
||||||
|
scan_name = scan.name
|
||||||
|
else
|
||||||
|
scan_name = "--------"
|
||||||
|
|
||||||
|
if(!authenticated)
|
||||||
|
header += "<br><i>Please insert the cards into the slots</i><br>"
|
||||||
|
header += "Target: <a href='?src=\ref[src];choice=modify'>[target_name]</a><br>"
|
||||||
|
header += "Confirm Identity: <a href='?src=\ref[src];choice=scan'>[scan_name]</a><br>"
|
||||||
|
else
|
||||||
|
header += "<div align='center'><br>"
|
||||||
|
header += "<a href='?src=\ref[src];choice=modify'>Remove [target_name]</a> || "
|
||||||
|
header += "<a href='?src=\ref[src];choice=scan'>Remove [scan_name]</a> <br> "
|
||||||
|
header += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a> || "
|
||||||
|
header += "<a href='?src=\ref[src];choice=logout'>Log Out</a></div>"
|
||||||
|
|
||||||
|
header += "<hr>"
|
||||||
|
|
||||||
|
var/jobs_all = ""
|
||||||
|
var/list/alljobs = (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
|
||||||
|
for(var/job in alljobs)
|
||||||
|
jobs_all += "<a href='?src=\ref[src];choice=assign;assign_target=[job]'>[dd_replacetext(job, " ", " ")]</a> " //make sure there isn't a line break in the middle of a job
|
||||||
|
|
||||||
|
|
||||||
|
var/body
|
||||||
|
if (authenticated && modify)
|
||||||
|
var/carddesc = {"<script type="text/javascript">
|
||||||
|
function markRed(){
|
||||||
|
var nameField = document.getElementById('namefield');
|
||||||
|
nameField.style.backgroundColor = "#FFDDDD";
|
||||||
|
}
|
||||||
|
function markGreen(){
|
||||||
|
var nameField = document.getElementById('namefield');
|
||||||
|
nameField.style.backgroundColor = "#DDFFDD";
|
||||||
|
}
|
||||||
|
function showAll(){
|
||||||
|
var allJobsSlot = document.getElementById('alljobsslot');
|
||||||
|
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>hide</a><br>"+ "[jobs_all]";
|
||||||
|
}
|
||||||
|
function hideAll(){
|
||||||
|
var allJobsSlot = document.getElementById('alljobsslot');
|
||||||
|
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>show</a>";
|
||||||
|
}
|
||||||
|
</script>"}
|
||||||
|
carddesc += "<form name='cardcomp' action='?src=\ref[src]' method='get'>"
|
||||||
|
carddesc += "<input type='hidden' name='src' value='\ref[src]'>"
|
||||||
|
carddesc += "<input type='hidden' name='choice' value='reg'>"
|
||||||
|
carddesc += "<b>Registered:</b> <input type='text' id='namefield' name='reg' value='[target_owner]' style='width:250px; background-color:white;' onchange='markRed()'>"
|
||||||
|
carddesc += "<input type='submit' value='Rename' onclick='markGreen()'>"
|
||||||
|
carddesc += "</form>"
|
||||||
|
carddesc += "<b>Assignment:</b> "
|
||||||
|
|
||||||
|
var/jobs = "<span id='alljobsslot'><a href='#' onclick='showAll()'>[target_rank]</a></span>" //CHECK THIS
|
||||||
|
|
||||||
|
var/accesses = ""
|
||||||
|
if(istype(src,/obj/machinery/computer/card/centcom))
|
||||||
|
accesses += "<h5>Central Command:</h5>"
|
||||||
|
for(var/A in get_all_centcom_access())
|
||||||
|
if(A in modify.access)
|
||||||
|
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[dd_replacetext(get_centcom_access_desc(A), " ", " ")]</font></a> "
|
||||||
|
else
|
||||||
|
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[dd_replacetext(get_centcom_access_desc(A), " ", " ")]</a> "
|
||||||
|
else
|
||||||
|
accesses += "<div align='center'><b>Access</b></div>"
|
||||||
|
accesses += "<table style='width:100%'>"
|
||||||
|
accesses += "<tr>"
|
||||||
|
for(var/i = 1; i <= 7; i++)
|
||||||
|
accesses += "<td style='width:14%'><b>[get_region_accesses_name(i)]:</b></td>"
|
||||||
|
accesses += "</tr><tr>"
|
||||||
|
for(var/i = 1; i <= 7; i++)
|
||||||
|
accesses += "<td style='width:14%' valign='top'>"
|
||||||
|
for(var/A in get_region_accesses(i))
|
||||||
|
if(A in modify.access)
|
||||||
|
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[dd_replacetext(get_access_desc(A), " ", " ")]</font></a> "
|
||||||
|
else
|
||||||
|
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[dd_replacetext(get_access_desc(A), " ", " ")]</a> "
|
||||||
|
accesses += "<br>"
|
||||||
|
accesses += "</td>"
|
||||||
|
accesses += "</tr></table>"
|
||||||
|
body = "[carddesc]<br>[jobs]<br><br>[accesses]" //CHECK THIS
|
||||||
|
else
|
||||||
|
body = "<a href='?src=\ref[src];choice=auth'>{Log in}</a> <br><hr>"
|
||||||
|
body += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a>"
|
||||||
|
dat = "<tt>[header][body]<hr><br></tt>"
|
||||||
|
user << browse(dat, "window=id_com;size=900x520")
|
||||||
|
onclose(user, "id_com")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
usr.machine = src
|
||||||
|
switch(href_list["choice"])
|
||||||
|
if ("modify")
|
||||||
|
if (modify)
|
||||||
|
data_core.manifest_modify(modify.registered, modify.assignment)
|
||||||
|
modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
|
||||||
|
if(ishuman(usr))
|
||||||
|
modify.loc = usr.loc
|
||||||
|
if(!usr.get_active_hand())
|
||||||
|
usr.put_in_hand(modify)
|
||||||
|
modify = null
|
||||||
|
else
|
||||||
|
modify.loc = loc
|
||||||
|
modify = null
|
||||||
|
else
|
||||||
|
var/obj/item/I = usr.equipped()
|
||||||
|
if (istype(I, /obj/item/weapon/card/id))
|
||||||
|
usr.drop_item()
|
||||||
|
I.loc = src
|
||||||
|
modify = I
|
||||||
|
authenticated = 0
|
||||||
|
|
||||||
|
if ("scan")
|
||||||
|
if (scan)
|
||||||
|
if(ishuman(usr))
|
||||||
|
scan.loc = usr.loc
|
||||||
|
if(!usr.get_active_hand())
|
||||||
|
usr.put_in_hand(scan)
|
||||||
|
scan = null
|
||||||
|
else
|
||||||
|
scan.loc = src.loc
|
||||||
|
scan = null
|
||||||
|
else
|
||||||
|
var/obj/item/I = usr.equipped()
|
||||||
|
if (istype(I, /obj/item/weapon/card/id))
|
||||||
|
usr.drop_item()
|
||||||
|
I.loc = src
|
||||||
|
scan = I
|
||||||
|
authenticated = 0
|
||||||
|
if ("auth")
|
||||||
|
if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode)))
|
||||||
|
if (check_access(scan))
|
||||||
|
authenticated = 1
|
||||||
|
else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify))
|
||||||
|
usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in."
|
||||||
|
if ("logout")
|
||||||
|
authenticated = 0
|
||||||
|
if("access")
|
||||||
|
if(href_list["allowed"])
|
||||||
|
if(authenticated)
|
||||||
|
var/access_type = text2num(href_list["access_target"])
|
||||||
|
var/access_allowed = text2num(href_list["allowed"])
|
||||||
|
if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
|
||||||
|
modify.access -= access_type
|
||||||
|
if(access_allowed == 1)
|
||||||
|
modify.access += access_type
|
||||||
|
if ("assign")
|
||||||
|
if (authenticated)
|
||||||
|
var/t1 = href_list["assign_target"]
|
||||||
|
if(t1 == "Custom")
|
||||||
|
t1 = input("Enter a custom job assignment.","Assignment")
|
||||||
|
else
|
||||||
|
modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : get_access(t1) )
|
||||||
|
if (modify)
|
||||||
|
modify.assignment = t1
|
||||||
|
if ("reg")
|
||||||
|
if (authenticated)
|
||||||
|
var/t2 = modify
|
||||||
|
//var/t1 = input(usr, "What name?", "ID computer", null) as text
|
||||||
|
if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf)))
|
||||||
|
modify.registered = href_list["reg"]
|
||||||
|
if ("mode")
|
||||||
|
mode = text2num(href_list["mode_target"])
|
||||||
|
if ("print")
|
||||||
|
if (!( printing ))
|
||||||
|
printing = 1
|
||||||
|
sleep(50)
|
||||||
|
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
|
||||||
|
var/t1 = "<B>Crew Manifest:</B><BR>"
|
||||||
|
for(var/datum/data/record/t in data_core.general)
|
||||||
|
t1 += "<B>[t.fields["name"]]</B> - [t.fields["rank"]]<BR>"
|
||||||
|
P.info = t1
|
||||||
|
P.name = "paper- 'Crew Manifest'"
|
||||||
|
printing = null
|
||||||
|
if (modify)
|
||||||
|
modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
|
||||||
|
updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/centcom
|
||||||
|
name = "CentCom Identification Computer"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
||||||
|
req_access = list(access_cent_captain)
|
||||||
|
|
||||||
@@ -1,760 +1,131 @@
|
|||||||
/*CONTENTS
|
/obj/machinery/computer
|
||||||
General Computer
|
name = "computer"
|
||||||
Security Computer
|
icon = 'computer.dmi'
|
||||||
Comm Computer
|
density = 1
|
||||||
ID Computer
|
anchored = 1.0
|
||||||
Pod/Blast Doors computer
|
var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassemble
|
||||||
*/
|
|
||||||
|
|
||||||
/obj/machinery/computer/New()
|
|
||||||
..()
|
|
||||||
spawn(2)
|
|
||||||
power_change()
|
|
||||||
|
|
||||||
/obj/machinery/computer/meteorhit(var/obj/O as obj)
|
New()
|
||||||
for(var/x in verbs)
|
..()
|
||||||
verbs -= x
|
spawn(2)
|
||||||
set_broken()
|
power_change()
|
||||||
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
|
|
||||||
smoke.set_up(5, 0, src)
|
|
||||||
smoke.start()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/emp_act(severity)
|
|
||||||
if(prob(20/severity)) set_broken()
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/ex_act(severity)
|
meteorhit(var/obj/O as obj)
|
||||||
switch(severity)
|
|
||||||
if(1.0)
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
if(2.0)
|
|
||||||
if (prob(25))
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
if (prob(50))
|
|
||||||
for(var/x in verbs)
|
|
||||||
verbs -= x
|
|
||||||
set_broken()
|
|
||||||
if(3.0)
|
|
||||||
if (prob(25))
|
|
||||||
for(var/x in verbs)
|
|
||||||
verbs -= x
|
|
||||||
set_broken()
|
|
||||||
else
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/blob_act()
|
|
||||||
if (prob(75))
|
|
||||||
for(var/x in verbs)
|
for(var/x in verbs)
|
||||||
verbs -= x
|
verbs -= x
|
||||||
set_broken()
|
set_broken()
|
||||||
density = 0
|
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
|
||||||
|
smoke.set_up(5, 0, src)
|
||||||
|
smoke.start()
|
||||||
|
return
|
||||||
|
|
||||||
/obj/machinery/computer/power_change()
|
|
||||||
if(!istype(src,/obj/machinery/computer/security/telescreen))
|
|
||||||
if(stat & BROKEN)
|
|
||||||
icon_state = initial(icon_state)
|
|
||||||
icon_state += "b"
|
|
||||||
if (istype(src,/obj/machinery/computer/aifixer))
|
|
||||||
overlays = null
|
|
||||||
|
|
||||||
else if(powered())
|
emp_act(severity)
|
||||||
icon_state = initial(icon_state)
|
if(prob(20/severity)) set_broken()
|
||||||
stat &= ~NOPOWER
|
..()
|
||||||
if (istype(src,/obj/machinery/computer/aifixer))
|
|
||||||
var/obj/machinery/computer/aifixer/O = src
|
|
||||||
if (O.occupant)
|
ex_act(severity)
|
||||||
switch (O.occupant.stat)
|
switch(severity)
|
||||||
if (0)
|
if(1.0)
|
||||||
overlays += image('computer.dmi', "ai-fixer-full")
|
del(src)
|
||||||
if (2)
|
return
|
||||||
overlays += image('computer.dmi', "ai-fixer-404")
|
if(2.0)
|
||||||
else
|
if (prob(25))
|
||||||
overlays += image('computer.dmi', "ai-fixer-empty")
|
del(src)
|
||||||
else
|
return
|
||||||
spawn(rand(0, 15))
|
if (prob(50))
|
||||||
//icon_state = "c_unpowered"
|
for(var/x in verbs)
|
||||||
|
verbs -= x
|
||||||
|
set_broken()
|
||||||
|
if(3.0)
|
||||||
|
if (prob(25))
|
||||||
|
for(var/x in verbs)
|
||||||
|
verbs -= x
|
||||||
|
set_broken()
|
||||||
|
else
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
blob_act()
|
||||||
|
if (prob(75))
|
||||||
|
for(var/x in verbs)
|
||||||
|
verbs -= x
|
||||||
|
set_broken()
|
||||||
|
density = 0
|
||||||
|
|
||||||
|
|
||||||
|
power_change()
|
||||||
|
if(!istype(src,/obj/machinery/computer/security/telescreen))
|
||||||
|
if(stat & BROKEN)
|
||||||
icon_state = initial(icon_state)
|
icon_state = initial(icon_state)
|
||||||
icon_state += "0"
|
icon_state += "b"
|
||||||
stat |= NOPOWER
|
|
||||||
if (istype(src,/obj/machinery/computer/aifixer))
|
if (istype(src,/obj/machinery/computer/aifixer))
|
||||||
overlays = null
|
overlays = null
|
||||||
|
|
||||||
/obj/machinery/computer/process()
|
else if(powered())
|
||||||
if(stat & (NOPOWER|BROKEN))
|
icon_state = initial(icon_state)
|
||||||
return
|
stat &= ~NOPOWER
|
||||||
use_power(250)
|
if (istype(src,/obj/machinery/computer/aifixer))
|
||||||
|
var/obj/machinery/computer/aifixer/O = src
|
||||||
/obj/machinery/computer/proc/set_broken()
|
if (O.occupant)
|
||||||
icon_state = initial(icon_state)
|
switch (O.occupant.stat)
|
||||||
icon_state += "b"
|
if (0)
|
||||||
stat |= BROKEN
|
overlays += image('computer.dmi', "ai-fixer-full")
|
||||||
|
if (2)
|
||||||
/obj/machinery/computer/attackby(I as obj, user as mob)
|
overlays += image('computer.dmi', "ai-fixer-404")
|
||||||
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
|
|
||||||
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
|
||||||
if(do_after(user, 20))
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
|
||||||
var/obj/item/weapon/circuitboard/M = new circuit( A )
|
|
||||||
A.circuit = M
|
|
||||||
A.anchored = 1
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = src.loc
|
|
||||||
if (src.stat & BROKEN)
|
|
||||||
user << "\blue The broken glass falls out."
|
|
||||||
new /obj/item/weapon/shard( src.loc )
|
|
||||||
A.state = 3
|
|
||||||
A.icon_state = "3"
|
|
||||||
else
|
|
||||||
user << "\blue You disconnect the monitor."
|
|
||||||
A.state = 4
|
|
||||||
A.icon_state = "4"
|
|
||||||
del(src)
|
|
||||||
else
|
|
||||||
src.attack_hand(user)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/New()
|
|
||||||
..()
|
|
||||||
verbs -= /obj/machinery/computer/security/verb/station_map
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/attack_ai(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/attack_paw(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/security/check_eye(var/mob/user as mob)
|
|
||||||
if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( current ) || !( current.status )) && (!istype(user, /mob/living/silicon)))
|
|
||||||
return null
|
|
||||||
user.reset_view(current)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch/attackby(O as obj, user as mob)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch/attack_ai(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch/attack_paw(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch/attack_hand(var/mob/user as mob)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
|
|
||||||
user << "We're sorry, this terminal is currently out of order!"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var/screen = AALARM_SCREEN_MAIN
|
|
||||||
//var/area_uid
|
|
||||||
//var/area/alarm_area
|
|
||||||
//var/danger_level = 0
|
|
||||||
|
|
||||||
|
|
||||||
//var/myproc = /obj/machinery/alarm/proc/return_controls
|
|
||||||
//call(myproc)()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/attackby(O as obj, user as mob)
|
|
||||||
if(istype(O, /obj/item/weapon/card/id))
|
|
||||||
var/obj/item/weapon/card/id/idcard = O
|
|
||||||
if(access_change_ids in idcard.access)
|
|
||||||
if(!scan)
|
|
||||||
usr.drop_item()
|
|
||||||
idcard.loc = src
|
|
||||||
scan = idcard
|
|
||||||
else if(!modify)
|
|
||||||
usr.drop_item()
|
|
||||||
idcard.loc = src
|
|
||||||
modify = idcard
|
|
||||||
else
|
|
||||||
if(!modify)
|
|
||||||
usr.drop_item()
|
|
||||||
idcard.loc = src
|
|
||||||
modify = idcard
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/attack_paw(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/attack_hand(var/mob/user as mob)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
|
|
||||||
user.machine = src
|
|
||||||
var/dat
|
|
||||||
if (!( ticker ))
|
|
||||||
return
|
|
||||||
if (mode) // accessing crew manifest
|
|
||||||
var/crew = ""
|
|
||||||
for(var/datum/data/record/t in data_core.general)
|
|
||||||
crew += "[t.fields["name"]] - [t.fields["rank"]]<br>"
|
|
||||||
dat = "<tt><b>Crew Manifest:</b><br>Please use security record computer to modify entries.<br>[crew]<a href='?src=\ref[src];choice=print'>Print</a><br><br><a href='?src=\ref[src];choice=mode;mode_target=0'>Access ID modification console.</a><br></tt>"
|
|
||||||
else
|
|
||||||
var/header = "<div align='center'><b>Identification Card Modifier</b></div>"
|
|
||||||
|
|
||||||
var/target_name
|
|
||||||
var/target_owner
|
|
||||||
var/target_rank
|
|
||||||
if(modify)
|
|
||||||
target_name = modify.name
|
|
||||||
else
|
|
||||||
target_name = "--------"
|
|
||||||
if(modify && modify.registered)
|
|
||||||
target_owner = modify.registered
|
|
||||||
else
|
|
||||||
target_owner = "--------"
|
|
||||||
if(modify && modify.assignment)
|
|
||||||
target_rank = modify.assignment
|
|
||||||
else
|
|
||||||
target_rank = "Unassigned"
|
|
||||||
|
|
||||||
var/scan_name
|
|
||||||
if(scan)
|
|
||||||
scan_name = scan.name
|
|
||||||
else
|
|
||||||
scan_name = "--------"
|
|
||||||
|
|
||||||
if(!authenticated)
|
|
||||||
header += "<br><i>Please insert the cards into the slots</i><br>"
|
|
||||||
header += "Target: <a href='?src=\ref[src];choice=modify'>[target_name]</a><br>"
|
|
||||||
header += "Confirm Identity: <a href='?src=\ref[src];choice=scan'>[scan_name]</a><br>"
|
|
||||||
else
|
|
||||||
header += "<div align='center'><br>"
|
|
||||||
header += "<a href='?src=\ref[src];choice=modify'>Remove [target_name]</a> || "
|
|
||||||
header += "<a href='?src=\ref[src];choice=scan'>Remove [scan_name]</a> <br> "
|
|
||||||
header += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a> || "
|
|
||||||
header += "<a href='?src=\ref[src];choice=logout'>Log Out</a></div>"
|
|
||||||
|
|
||||||
header += "<hr>"
|
|
||||||
|
|
||||||
var/jobs_all = ""
|
|
||||||
var/list/alljobs = (istype(src,/obj/machinery/computer/card/centcom)? get_all_centcom_jobs() : get_all_jobs()) + "Custom"
|
|
||||||
for(var/job in alljobs)
|
|
||||||
jobs_all += "<a href='?src=\ref[src];choice=assign;assign_target=[job]'>[dd_replacetext(job, " ", " ")]</a> " //make sure there isn't a line break in the middle of a job
|
|
||||||
|
|
||||||
|
|
||||||
var/body
|
|
||||||
if (authenticated && modify)
|
|
||||||
var/carddesc = {"<script type="text/javascript">
|
|
||||||
function markRed(){
|
|
||||||
var nameField = document.getElementById('namefield');
|
|
||||||
nameField.style.backgroundColor = "#FFDDDD";
|
|
||||||
}
|
|
||||||
function markGreen(){
|
|
||||||
var nameField = document.getElementById('namefield');
|
|
||||||
nameField.style.backgroundColor = "#DDFFDD";
|
|
||||||
}
|
|
||||||
function showAll(){
|
|
||||||
var allJobsSlot = document.getElementById('alljobsslot');
|
|
||||||
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>hide</a><br>"+ "[jobs_all]";
|
|
||||||
}
|
|
||||||
function hideAll(){
|
|
||||||
var allJobsSlot = document.getElementById('alljobsslot');
|
|
||||||
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>show</a>";
|
|
||||||
}
|
|
||||||
</script>"}
|
|
||||||
carddesc += "<form name='cardcomp' action='?src=\ref[src]' method='get'>"
|
|
||||||
carddesc += "<input type='hidden' name='src' value='\ref[src]'>"
|
|
||||||
carddesc += "<input type='hidden' name='choice' value='reg'>"
|
|
||||||
carddesc += "<b>Registered:</b> <input type='text' id='namefield' name='reg' value='[target_owner]' style='width:250px; background-color:white;' onchange='markRed()'>"
|
|
||||||
carddesc += "<input type='submit' value='Rename' onclick='markGreen()'>"
|
|
||||||
carddesc += "</form>"
|
|
||||||
carddesc += "<b>Assignment:</b> "
|
|
||||||
|
|
||||||
var/jobs = "<span id='alljobsslot'><a href='#' onclick='showAll()'>[target_rank]</a></span>" //CHECK THIS
|
|
||||||
|
|
||||||
var/accesses = ""
|
|
||||||
if(istype(src,/obj/machinery/computer/card/centcom))
|
|
||||||
accesses += "<h5>Central Command:</h5>"
|
|
||||||
for(var/A in get_all_centcom_access())
|
|
||||||
if(A in modify.access)
|
|
||||||
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[dd_replacetext(get_centcom_access_desc(A), " ", " ")]</font></a> "
|
|
||||||
else
|
else
|
||||||
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[dd_replacetext(get_centcom_access_desc(A), " ", " ")]</a> "
|
overlays += image('computer.dmi', "ai-fixer-empty")
|
||||||
else
|
else
|
||||||
accesses += "<div align='center'><b>Access</b></div>"
|
spawn(rand(0, 15))
|
||||||
accesses += "<table style='width:100%'>"
|
//icon_state = "c_unpowered"
|
||||||
accesses += "<tr>"
|
icon_state = initial(icon_state)
|
||||||
for(var/i = 1; i <= 7; i++)
|
icon_state += "0"
|
||||||
accesses += "<td style='width:14%'><b>[get_region_accesses_name(i)]:</b></td>"
|
stat |= NOPOWER
|
||||||
accesses += "</tr><tr>"
|
if (istype(src,/obj/machinery/computer/aifixer))
|
||||||
for(var/i = 1; i <= 7; i++)
|
overlays = null
|
||||||
accesses += "<td style='width:14%' valign='top'>"
|
|
||||||
for(var/A in get_region_accesses(i))
|
|
||||||
if(A in modify.access)
|
|
||||||
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=0'><font color=\"red\">[dd_replacetext(get_access_desc(A), " ", " ")]</font></a> "
|
|
||||||
else
|
|
||||||
accesses += "<a href='?src=\ref[src];choice=access;access_target=[A];allowed=1'>[dd_replacetext(get_access_desc(A), " ", " ")]</a> "
|
|
||||||
accesses += "<br>"
|
|
||||||
accesses += "</td>"
|
|
||||||
accesses += "</tr></table>"
|
|
||||||
body = "[carddesc]<br>[jobs]<br><br>[accesses]" //CHECK THIS
|
|
||||||
else
|
|
||||||
body = "<a href='?src=\ref[src];choice=auth'>{Log in}</a> <br><hr>"
|
|
||||||
body += "<a href='?src=\ref[src];choice=mode;mode_target=1'>Access Crew Manifest</a>"
|
|
||||||
dat = "<tt>[header][body]<hr><br></tt>"
|
|
||||||
user << browse(dat, "window=id_com;size=900x520")
|
|
||||||
onclose(user, "id_com")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/card/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
usr.machine = src
|
|
||||||
switch(href_list["choice"])
|
|
||||||
if ("modify")
|
|
||||||
if (modify)
|
|
||||||
data_core.manifest_modify(modify.registered, modify.assignment)
|
|
||||||
modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
|
|
||||||
if(ishuman(usr))
|
|
||||||
modify.loc = usr.loc
|
|
||||||
if(!usr.get_active_hand())
|
|
||||||
usr.put_in_hand(modify)
|
|
||||||
modify = null
|
|
||||||
else
|
|
||||||
modify.loc = loc
|
|
||||||
modify = null
|
|
||||||
else
|
|
||||||
var/obj/item/I = usr.equipped()
|
|
||||||
if (istype(I, /obj/item/weapon/card/id))
|
|
||||||
usr.drop_item()
|
|
||||||
I.loc = src
|
|
||||||
modify = I
|
|
||||||
authenticated = 0
|
|
||||||
|
|
||||||
if ("scan")
|
|
||||||
if (scan)
|
|
||||||
if(ishuman(usr))
|
|
||||||
scan.loc = usr.loc
|
|
||||||
if(!usr.get_active_hand())
|
|
||||||
usr.put_in_hand(scan)
|
|
||||||
scan = null
|
|
||||||
else
|
|
||||||
scan.loc = src.loc
|
|
||||||
scan = null
|
|
||||||
else
|
|
||||||
var/obj/item/I = usr.equipped()
|
|
||||||
if (istype(I, /obj/item/weapon/card/id))
|
|
||||||
usr.drop_item()
|
|
||||||
I.loc = src
|
|
||||||
scan = I
|
|
||||||
authenticated = 0
|
|
||||||
if ("auth")
|
|
||||||
if ((!( authenticated ) && (scan || (istype(usr, /mob/living/silicon))) && (modify || mode)))
|
|
||||||
if (check_access(scan))
|
|
||||||
authenticated = 1
|
|
||||||
else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify))
|
|
||||||
usr << "You can't modify an ID without an ID inserted to modify. Once one is in the modify slot on the computer, you can log in."
|
|
||||||
if ("logout")
|
|
||||||
authenticated = 0
|
|
||||||
if("access")
|
|
||||||
if(href_list["allowed"])
|
|
||||||
if(authenticated)
|
|
||||||
var/access_type = text2num(href_list["access_target"])
|
|
||||||
var/access_allowed = text2num(href_list["allowed"])
|
|
||||||
if(access_type in (istype(src,/obj/machinery/computer/card/centcom)?get_all_centcom_access() : get_all_accesses()))
|
|
||||||
modify.access -= access_type
|
|
||||||
if(access_allowed == 1)
|
|
||||||
modify.access += access_type
|
|
||||||
if ("assign")
|
|
||||||
if (authenticated)
|
|
||||||
var/t1 = href_list["assign_target"]
|
|
||||||
if(t1 == "Custom")
|
|
||||||
t1 = input("Enter a custom job assignment.","Assignment")
|
|
||||||
else
|
|
||||||
modify.access = ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) : get_access(t1) )
|
|
||||||
if (modify)
|
|
||||||
modify.assignment = t1
|
|
||||||
if ("reg")
|
|
||||||
if (authenticated)
|
|
||||||
var/t2 = modify
|
|
||||||
//var/t1 = input(usr, "What name?", "ID computer", null) as text
|
|
||||||
if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf)))
|
|
||||||
modify.registered = href_list["reg"]
|
|
||||||
if ("mode")
|
|
||||||
mode = text2num(href_list["mode_target"])
|
|
||||||
if ("print")
|
|
||||||
if (!( printing ))
|
|
||||||
printing = 1
|
|
||||||
sleep(50)
|
|
||||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
|
|
||||||
var/t1 = "<B>Crew Manifest:</B><BR>"
|
|
||||||
for(var/datum/data/record/t in data_core.general)
|
|
||||||
t1 += "<B>[t.fields["name"]]</B> - [t.fields["rank"]]<BR>"
|
|
||||||
P.info = t1
|
|
||||||
P.name = "paper- 'Crew Manifest'"
|
|
||||||
printing = null
|
|
||||||
if (modify)
|
|
||||||
modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
|
|
||||||
updateUsrDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/datacore/proc/manifest(var/nosleep = 0)
|
|
||||||
spawn()
|
|
||||||
if(!nosleep)
|
|
||||||
sleep(40)
|
|
||||||
for(var/mob/living/carbon/human/H in world)
|
|
||||||
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
|
|
||||||
var/datum/data/record/G = new()
|
|
||||||
var/datum/data/record/M = new()
|
|
||||||
var/datum/data/record/S = new()
|
|
||||||
var/datum/data/record/L = new()
|
|
||||||
var/obj/item/weapon/card/id/C = H.wear_id
|
|
||||||
if (C)
|
|
||||||
G.fields["rank"] = C.assignment
|
|
||||||
else
|
|
||||||
if(H.job)
|
|
||||||
G.fields["rank"] = H.job
|
|
||||||
else
|
|
||||||
G.fields["rank"] = "Unassigned"
|
|
||||||
G.fields["name"] = H.real_name
|
|
||||||
G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
|
|
||||||
M.fields["name"] = G.fields["name"]
|
|
||||||
M.fields["id"] = G.fields["id"]
|
|
||||||
S.fields["name"] = G.fields["name"]
|
|
||||||
S.fields["id"] = G.fields["id"]
|
|
||||||
if (H.gender == FEMALE)
|
|
||||||
G.fields["sex"] = "Female"
|
|
||||||
else
|
|
||||||
G.fields["sex"] = "Male"
|
|
||||||
G.fields["age"] = text("[]", H.age)
|
|
||||||
G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity))
|
|
||||||
G.fields["p_stat"] = "Active"
|
|
||||||
G.fields["m_stat"] = "Stable"
|
|
||||||
M.fields["b_type"] = text("[]", H.b_type)
|
|
||||||
M.fields["b_dna"] = H.dna.unique_enzymes
|
|
||||||
M.fields["mi_dis"] = "None"
|
|
||||||
M.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
|
||||||
M.fields["ma_dis"] = "None"
|
|
||||||
M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
|
||||||
M.fields["alg"] = "None"
|
|
||||||
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
|
||||||
M.fields["cdi"] = "None"
|
|
||||||
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
|
||||||
M.fields["notes"] = "No notes."
|
|
||||||
S.fields["criminal"] = "None"
|
|
||||||
S.fields["mi_crim"] = "None"
|
|
||||||
S.fields["mi_crim_d"] = "No minor crime convictions."
|
|
||||||
S.fields["ma_crim"] = "None"
|
|
||||||
S.fields["ma_crim_d"] = "No major crime convictions."
|
|
||||||
S.fields["notes"] = "No notes."
|
|
||||||
|
|
||||||
//Begin locked reporting
|
|
||||||
L.fields["name"] = H.real_name
|
|
||||||
L.fields["sex"] = H.gender
|
|
||||||
L.fields["age"] = H.age
|
|
||||||
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
|
|
||||||
L.fields["rank"] = H.mind.assigned_role
|
|
||||||
L.fields["b_type"] = H.b_type
|
|
||||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
|
||||||
L.fields["enzymes"] = H.dna.struc_enzymes
|
|
||||||
L.fields["identity"] = H.dna.uni_identity
|
|
||||||
L.fields["image"] = getFlatIcon(H,0)
|
|
||||||
//End locked reporting
|
|
||||||
|
|
||||||
general += G
|
|
||||||
medical += M
|
|
||||||
security += S
|
|
||||||
locked += L
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/datacore/proc/manifest_modify(var/name, var/assignment)
|
|
||||||
var/datum/data/record/foundrecord
|
|
||||||
|
|
||||||
for(var/datum/data/record/t in data_core.general)
|
|
||||||
if(t.fields["name"] == name)
|
|
||||||
foundrecord = t
|
|
||||||
break
|
|
||||||
|
|
||||||
if(foundrecord)
|
|
||||||
foundrecord.fields["rank"] = assignment
|
|
||||||
|
|
||||||
|
|
||||||
/obj/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
process()
|
||||||
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
|
if(stat & (NOPOWER|BROKEN))
|
||||||
var/datum/data/record/G = new()
|
return
|
||||||
var/datum/data/record/M = new()
|
use_power(250)
|
||||||
var/datum/data/record/S = new()
|
|
||||||
var/datum/data/record/L = new()
|
|
||||||
var/obj/item/weapon/card/id/C = H.wear_id
|
|
||||||
if (C)
|
|
||||||
G.fields["rank"] = C.assignment
|
|
||||||
else
|
|
||||||
if(H.job)
|
|
||||||
G.fields["rank"] = H.job
|
|
||||||
else
|
|
||||||
G.fields["rank"] = "Unassigned"
|
|
||||||
G.fields["name"] = H.real_name
|
|
||||||
G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
|
|
||||||
M.fields["name"] = G.fields["name"]
|
|
||||||
M.fields["id"] = G.fields["id"]
|
|
||||||
S.fields["name"] = G.fields["name"]
|
|
||||||
S.fields["id"] = G.fields["id"]
|
|
||||||
if (H.gender == FEMALE)
|
|
||||||
G.fields["sex"] = "Female"
|
|
||||||
else
|
|
||||||
G.fields["sex"] = "Male"
|
|
||||||
G.fields["age"] = text("[]", H.age)
|
|
||||||
G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity))
|
|
||||||
G.fields["p_stat"] = "Active"
|
|
||||||
G.fields["m_stat"] = "Stable"
|
|
||||||
M.fields["b_type"] = text("[]", H.b_type)
|
|
||||||
M.fields["b_dna"] = H.dna.unique_enzymes
|
|
||||||
M.fields["mi_dis"] = "None"
|
|
||||||
M.fields["mi_dis_d"] = "No minor disabilities have been declared."
|
|
||||||
M.fields["ma_dis"] = "None"
|
|
||||||
M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
|
|
||||||
M.fields["alg"] = "None"
|
|
||||||
M.fields["alg_d"] = "No allergies have been detected in this patient."
|
|
||||||
M.fields["cdi"] = "None"
|
|
||||||
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
|
|
||||||
M.fields["notes"] = "No notes."
|
|
||||||
S.fields["criminal"] = "None"
|
|
||||||
S.fields["mi_crim"] = "None"
|
|
||||||
S.fields["mi_crim_d"] = "No minor crime convictions."
|
|
||||||
S.fields["ma_crim"] = "None"
|
|
||||||
S.fields["ma_crim_d"] = "No major crime convictions."
|
|
||||||
S.fields["notes"] = "No notes."
|
|
||||||
|
|
||||||
//Begin locked reporting
|
|
||||||
L.fields["name"] = H.real_name
|
|
||||||
L.fields["sex"] = H.gender
|
|
||||||
L.fields["age"] = H.age
|
|
||||||
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
|
|
||||||
L.fields["rank"] = H.mind.assigned_role
|
|
||||||
L.fields["b_type"] = H.b_type
|
|
||||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
|
||||||
L.fields["enzymes"] = H.dna.struc_enzymes
|
|
||||||
L.fields["identity"] = H.dna.uni_identity
|
|
||||||
L.fields["image"] = getFlatIcon(H,0)
|
|
||||||
//End locked reporting
|
|
||||||
|
|
||||||
general += G
|
|
||||||
medical += M
|
|
||||||
security += S
|
|
||||||
locked += L
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/proc/alarm()
|
proc/set_broken()
|
||||||
if(stat & (NOPOWER|BROKEN))
|
icon_state = initial(icon_state)
|
||||||
return
|
icon_state += "b"
|
||||||
|
stat |= BROKEN
|
||||||
|
|
||||||
if (!( connected ))
|
|
||||||
viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!"
|
|
||||||
return
|
|
||||||
|
|
||||||
for(var/obj/machinery/door/poddoor/M in machines)
|
attackby(I as obj, user as mob)
|
||||||
if (M.id == id)
|
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
|
||||||
spawn( 0 )
|
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
|
||||||
M.open()
|
if(do_after(user, 20))
|
||||||
return
|
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||||
sleep(20)
|
var/obj/item/weapon/circuitboard/M = new circuit( A )
|
||||||
|
|
||||||
//connected.drive() *****RM from 40.93.3S
|
|
||||||
for(var/obj/machinery/mass_driver/M in machines)
|
|
||||||
if(M.id == id)
|
|
||||||
M.power = connected.power
|
|
||||||
M.drive()
|
|
||||||
|
|
||||||
sleep(50)
|
|
||||||
for(var/obj/machinery/door/poddoor/M in machines)
|
|
||||||
if (M.id == id)
|
|
||||||
spawn( 0 )
|
|
||||||
M.close()
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/New()
|
|
||||||
..()
|
|
||||||
spawn( 5 )
|
|
||||||
for(var/obj/machinery/mass_driver/M in machines)
|
|
||||||
if (M.id == id)
|
|
||||||
connected = M
|
|
||||||
else
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/attackby(I as obj, user as mob)
|
|
||||||
if(istype(I, /obj/item/weapon/screwdriver))
|
|
||||||
playsound(loc, 'Screwdriver.ogg', 50, 1)
|
|
||||||
if(do_after(user, 20))
|
|
||||||
if (stat & BROKEN)
|
|
||||||
user << "\blue The broken glass falls out."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
|
|
||||||
new /obj/item/weapon/shard( loc )
|
|
||||||
|
|
||||||
//generate appropriate circuitboard. Accounts for /pod/old computer types
|
|
||||||
var/obj/item/weapon/circuitboard/pod/M = null
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old))
|
|
||||||
M = new /obj/item/weapon/circuitboard/olddoor( A )
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old/syndicate))
|
|
||||||
M = new /obj/item/weapon/circuitboard/syndicatedoor( A )
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old/swf))
|
|
||||||
M = new /obj/item/weapon/circuitboard/swfdoor( A )
|
|
||||||
else //it's not an old computer. Generate standard pod circuitboard.
|
|
||||||
M = new /obj/item/weapon/circuitboard/pod( A )
|
|
||||||
|
|
||||||
for (var/obj/C in src)
|
|
||||||
C.loc = loc
|
|
||||||
M.id = id
|
|
||||||
A.circuit = M
|
A.circuit = M
|
||||||
A.state = 3
|
|
||||||
A.icon_state = "3"
|
|
||||||
A.anchored = 1
|
A.anchored = 1
|
||||||
del(src)
|
|
||||||
else
|
|
||||||
user << "\blue You disconnect the monitor."
|
|
||||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
|
|
||||||
|
|
||||||
//generate appropriate circuitboard. Accounts for /pod/old computer types
|
|
||||||
var/obj/item/weapon/circuitboard/pod/M = null
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old))
|
|
||||||
M = new /obj/item/weapon/circuitboard/olddoor( A )
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old/syndicate))
|
|
||||||
M = new /obj/item/weapon/circuitboard/syndicatedoor( A )
|
|
||||||
if(istype(src, /obj/machinery/computer/pod/old/swf))
|
|
||||||
M = new /obj/item/weapon/circuitboard/swfdoor( A )
|
|
||||||
else //it's not an old computer. Generate standard pod circuitboard.
|
|
||||||
M = new /obj/item/weapon/circuitboard/pod( A )
|
|
||||||
|
|
||||||
for (var/obj/C in src)
|
for (var/obj/C in src)
|
||||||
C.loc = loc
|
C.loc = src.loc
|
||||||
M.id = id
|
if (src.stat & BROKEN)
|
||||||
A.circuit = M
|
user << "\blue The broken glass falls out."
|
||||||
A.state = 4
|
new /obj/item/weapon/shard( src.loc )
|
||||||
A.icon_state = "4"
|
A.state = 3
|
||||||
A.anchored = 1
|
A.icon_state = "3"
|
||||||
del(src)
|
|
||||||
else
|
|
||||||
attack_hand(user)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/attack_ai(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/attack_paw(var/mob/user as mob)
|
|
||||||
return attack_hand(user)
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/attack_hand(var/mob/user as mob)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
|
|
||||||
var/dat = "<HTML><BODY><TT><B>Mass Driver Controls</B>"
|
|
||||||
user.machine = src
|
|
||||||
var/d2
|
|
||||||
if (timing)
|
|
||||||
d2 = text("<A href='?src=\ref[];time=0'>Stop Time Launch</A>", src)
|
|
||||||
else
|
|
||||||
d2 = text("<A href='?src=\ref[];time=1'>Initiate Time Launch</A>", src)
|
|
||||||
var/second = time % 60
|
|
||||||
var/minute = (time - second) / 60
|
|
||||||
dat += text("<HR>\nTimer System: []\nTime Left: [][] <A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>", d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
|
|
||||||
if (connected)
|
|
||||||
var/temp = ""
|
|
||||||
var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
|
|
||||||
for(var/t in L)
|
|
||||||
if (t == connected.power)
|
|
||||||
temp += text("[] ", t)
|
|
||||||
else
|
|
||||||
temp += text("<A href = '?src=\ref[];power=[]'>[]</A> ", src, t, t)
|
|
||||||
//Foreach goto(172)
|
|
||||||
dat += text("<HR>\nPower Level: []<BR>\n<A href = '?src=\ref[];alarm=1'>Firing Sequence</A><BR>\n<A href = '?src=\ref[];drive=1'>Test Fire Driver</A><BR>\n<A href = '?src=\ref[];door=1'>Toggle Outer Door</A><BR>", temp, src, src, src)
|
|
||||||
//*****RM from 40.93.3S
|
|
||||||
else
|
|
||||||
dat += text("<BR>\n<A href = '?src=\ref[];door=1'>Toggle Outer Door</A><BR>", src)
|
|
||||||
//*****
|
|
||||||
dat += text("<BR><BR><A href='?src=\ref[];mach_close=computer'>Close</A></TT></BODY></HTML>", user)
|
|
||||||
user << browse(dat, "window=computer;size=400x500")
|
|
||||||
onclose(user, "computer")
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/process()
|
|
||||||
..()
|
|
||||||
if (timing)
|
|
||||||
if (time > 0)
|
|
||||||
time = round(time) - 1
|
|
||||||
else
|
|
||||||
alarm()
|
|
||||||
time = 0
|
|
||||||
timing = 0
|
|
||||||
updateDialog()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/pod/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
|
||||||
usr.machine = src
|
|
||||||
if (href_list["power"])
|
|
||||||
var/t = text2num(href_list["power"])
|
|
||||||
t = min(max(0.25, t), 16)
|
|
||||||
if (connected)
|
|
||||||
connected.power = t
|
|
||||||
else
|
|
||||||
if (href_list["alarm"])
|
|
||||||
alarm()
|
|
||||||
else
|
|
||||||
if (href_list["time"])
|
|
||||||
timing = text2num(href_list["time"])
|
|
||||||
else
|
else
|
||||||
if (href_list["tp"])
|
user << "\blue You disconnect the monitor."
|
||||||
var/tp = text2num(href_list["tp"])
|
A.state = 4
|
||||||
time += tp
|
A.icon_state = "4"
|
||||||
time = min(max(round(time), 0), 120)
|
del(src)
|
||||||
else
|
else
|
||||||
if (href_list["door"])
|
src.attack_hand(user)
|
||||||
if(istype(src, /obj/machinery/computer/pod/old/syndicate))//Added here so Nuke ops don't go running naked into space before moving the shuttle.
|
|
||||||
if(syndicate_station_at_station == 0)
|
|
||||||
usr << "\red You need to launch the Syndicate Shuttle via the computer terminal at the head of the ship before departing."
|
|
||||||
return
|
|
||||||
for(var/obj/machinery/door/poddoor/M in machines)
|
|
||||||
if (M.id == id)
|
|
||||||
if (M.density)
|
|
||||||
spawn( 0 )
|
|
||||||
M.open()
|
|
||||||
return
|
|
||||||
else
|
|
||||||
spawn( 0 )
|
|
||||||
M.close()
|
|
||||||
return
|
|
||||||
//Foreach goto(298)
|
|
||||||
add_fingerprint(usr)
|
|
||||||
updateUsrDialog()
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/mass_driver/proc/drive(amount)
|
|
||||||
if(stat & (BROKEN|NOPOWER))
|
|
||||||
return
|
return
|
||||||
use_power(500)
|
|
||||||
var/O_limit
|
|
||||||
var/atom/target = get_edge_target_turf(src, dir)
|
|
||||||
for(var/atom/movable/O in loc)
|
|
||||||
if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms.
|
|
||||||
O_limit++
|
|
||||||
if(O_limit >= 20)
|
|
||||||
for(var/mob/M in hearers(src, null))
|
|
||||||
M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items."
|
|
||||||
break
|
|
||||||
use_power(500)
|
|
||||||
spawn( 0 )
|
|
||||||
O.throw_at(target, drive_range * power, power)
|
|
||||||
flick("mass_driver1", src)
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
/obj/machinery/computer/crew
|
/obj/machinery/computer/crew
|
||||||
|
name = "Crew monitoring computer"
|
||||||
|
desc = "Used to monitor active health sensors built into most of the crew's uniforms."
|
||||||
|
icon_state = "crew"
|
||||||
|
use_power = 1
|
||||||
|
idle_power_usage = 250
|
||||||
|
active_power_usage = 500
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/crew"
|
||||||
|
var/list/tracked = list( )
|
||||||
|
|
||||||
|
|
||||||
New()
|
New()
|
||||||
tracked = list()
|
tracked = list()
|
||||||
..()
|
..()
|
||||||
@@ -46,8 +56,8 @@
|
|||||||
|
|
||||||
proc
|
proc
|
||||||
interact(mob/user)
|
interact(mob/user)
|
||||||
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
|
if( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
|
||||||
if (!istype(user, /mob/living/silicon))
|
if(!istype(user, /mob/living/silicon))
|
||||||
user.machine = null
|
user.machine = null
|
||||||
user << browse(null, "window=powcomp")
|
user << browse(null, "window=powcomp")
|
||||||
return
|
return
|
||||||
@@ -58,33 +68,31 @@
|
|||||||
t += "<BR><A href='?src=\ref[src];close=1'>Close</A>"
|
t += "<BR><A href='?src=\ref[src];close=1'>Close</A>"
|
||||||
t += "<table><tr><td>Name</td><td>Vitals</td><td>Position</td></tr>"
|
t += "<table><tr><td>Name</td><td>Vitals</td><td>Position</td></tr>"
|
||||||
for(var/obj/item/clothing/under/C in src.tracked)
|
for(var/obj/item/clothing/under/C in src.tracked)
|
||||||
if((C) && (C.has_sensor) && (C.loc) && (C.loc.z == 1))
|
if((C) && (C.has_sensor) && (C.loc) && (C.loc.z == 1) && C.sensor_mode)
|
||||||
if(istype(C.loc, /mob/living/carbon/human))
|
if(istype(C.loc, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = C.loc
|
var/mob/living/carbon/human/H = C.loc
|
||||||
var/dam1 = round(H.getOxyLoss(),1)
|
var/dam1 = round(H.getOxyLoss(),1)
|
||||||
var/dam2 = round(H.getToxLoss(),1)
|
var/dam2 = round(H.getToxLoss(),1)
|
||||||
var/dam3 = round(H.getFireLoss(),1)
|
var/dam3 = round(H.getFireLoss(),1)
|
||||||
var/dam4 = round(H.getBruteLoss(),1)
|
var/dam4 = round(H.getBruteLoss(),1)
|
||||||
|
|
||||||
|
if(H.wear_id)
|
||||||
|
t += "<tr><td>[H.wear_id.name]</td>"
|
||||||
|
else
|
||||||
|
t += "<tr><td>Unknown:</td>"
|
||||||
switch(C.sensor_mode)
|
switch(C.sensor_mode)
|
||||||
if(1)
|
if(1)
|
||||||
if(H.wear_id)
|
t+= "<td>[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"]</td><td>Not Available</td></tr>"
|
||||||
t += "<tr><td>[H.wear_id.name]</td><td>"
|
|
||||||
else
|
|
||||||
t += "<tr><td>Unknown:</td><td>"
|
|
||||||
t+= "[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"]</td><td>Not Available</td></tr>"
|
|
||||||
if(2)
|
if(2)
|
||||||
if(H.wear_id)
|
t += "<td>[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"], [dam1] - [dam2] - [dam3] - [dam4]</td><td>Not Available</td></tr>"
|
||||||
t += "<tr><td>[H.wear_id.name]</td><td>"
|
|
||||||
else
|
|
||||||
t += "<tr><td>Unknown:</td><td>"
|
|
||||||
t += "[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"], [dam1] - [dam2] - [dam3] - [dam4]</td><td>Not Available</td></tr>"
|
|
||||||
if(3)
|
if(3)
|
||||||
t += "<tr><td>[H.name]</td><td>[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"], [dam2] - [dam2] - [dam3] - [dam4]</td><td>[get_area(H)] ([H.x], [H.y])</td></tr>"
|
t += "<td>[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"], [dam2] - [dam2] - [dam3] - [dam4]</td><td>[get_area(H)] ([H.x], [H.y])</td></tr>"
|
||||||
t += "</table>"
|
t += "</table>"
|
||||||
t += "</FONT></PRE></TT>"
|
t += "</FONT></PRE></TT>"
|
||||||
user << browse(t, "window=crewcomp;size=500x800")
|
user << browse(t, "window=crewcomp;size=500x800")
|
||||||
onclose(user, "crewcomp")
|
onclose(user, "crewcomp")
|
||||||
|
|
||||||
|
|
||||||
scan()
|
scan()
|
||||||
for(var/obj/item/clothing/under/C in world)
|
for(var/obj/item/clothing/under/C in world)
|
||||||
if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human)))
|
if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human)))
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
/obj/machinery/computer/hologram_comp
|
||||||
|
name = "Hologram Computer"
|
||||||
|
desc = "Rumoured to control holograms."
|
||||||
|
icon = 'stationobjs.dmi'
|
||||||
|
icon_state = "holo_console0"
|
||||||
|
var
|
||||||
|
obj/machinery/hologram/projector/projector = null
|
||||||
|
temp = null
|
||||||
|
lumens = 0.0
|
||||||
|
h_r = 245.0
|
||||||
|
h_g = 245.0
|
||||||
|
h_b = 245.0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/hologram_comp/New()
|
/obj/machinery/computer/hologram_comp/New()
|
||||||
..()
|
..()
|
||||||
spawn( 10 )
|
spawn( 10 )
|
||||||
|
|||||||
81
code/game/machinery/computer/law.dm
Normal file
81
code/game/machinery/computer/law.dm
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
/obj/machinery/computer/aiupload
|
||||||
|
name = "AI Upload"
|
||||||
|
desc = "Used to upload laws to the AI."
|
||||||
|
icon_state = "command"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/aiupload"
|
||||||
|
var
|
||||||
|
mob/living/silicon/ai/current = null
|
||||||
|
opened = 0
|
||||||
|
|
||||||
|
|
||||||
|
verb/AccessInternals()
|
||||||
|
set category = "Object"
|
||||||
|
set name = "Access Computer's Internals"
|
||||||
|
set src in oview(1)
|
||||||
|
if(get_dist(src, usr) > 1 || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon))
|
||||||
|
return
|
||||||
|
|
||||||
|
opened = !opened
|
||||||
|
if(opened)
|
||||||
|
usr << "\blue The access panel is now open."
|
||||||
|
else
|
||||||
|
usr << "\blue The access panel is now closed."
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
attackby(obj/item/weapon/O as obj, mob/user as mob)
|
||||||
|
if(istype(O, /obj/item/weapon/aiModule))
|
||||||
|
var/obj/item/weapon/aiModule/M = O
|
||||||
|
M.install(src)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(var/mob/user as mob)
|
||||||
|
if(src.stat & NOPOWER)
|
||||||
|
usr << "The upload computer has no power!"
|
||||||
|
return
|
||||||
|
if(src.stat & BROKEN)
|
||||||
|
usr << "The upload computer is broken!"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.current = activeais()
|
||||||
|
|
||||||
|
if (!src.current)
|
||||||
|
usr << "No active AIs detected."
|
||||||
|
else
|
||||||
|
usr << "[src.current.name] selected for law changes."
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/borgupload
|
||||||
|
name = "Cyborg Upload"
|
||||||
|
desc = "Used to upload laws to Cyborgs."
|
||||||
|
icon_state = "command"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/borgupload"
|
||||||
|
var/mob/living/silicon/robot/current = null
|
||||||
|
|
||||||
|
|
||||||
|
attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob)
|
||||||
|
if(istype(module, /obj/item/weapon/aiModule))
|
||||||
|
module.install(src)
|
||||||
|
else
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(var/mob/user as mob)
|
||||||
|
if(src.stat & NOPOWER)
|
||||||
|
usr << "The upload computer has no power!"
|
||||||
|
return
|
||||||
|
if(src.stat & BROKEN)
|
||||||
|
usr << "The upload computer is broken!"
|
||||||
|
return
|
||||||
|
|
||||||
|
src.current = freeborg()
|
||||||
|
|
||||||
|
if (!src.current)
|
||||||
|
usr << "No free cyborgs detected."
|
||||||
|
else
|
||||||
|
usr << "[src.current.name] selected for law changes."
|
||||||
|
return
|
||||||
@@ -1,3 +1,20 @@
|
|||||||
|
/obj/machinery/computer/med_data//TODO:SANITY
|
||||||
|
name = "Medical Records"
|
||||||
|
desc = "This can be used to check medical records."
|
||||||
|
icon_state = "medcomp"
|
||||||
|
req_access = list(access_medical)
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/med_data"
|
||||||
|
var
|
||||||
|
obj/item/weapon/card/id/scan = null
|
||||||
|
authenticated = null
|
||||||
|
rank = null
|
||||||
|
screen = null
|
||||||
|
datum/data/record/active1 = null
|
||||||
|
datum/data/record/active2 = null
|
||||||
|
a_id = null
|
||||||
|
temp = null
|
||||||
|
printing = null
|
||||||
|
|
||||||
/obj/machinery/computer/med_data/attack_ai(user as mob)
|
/obj/machinery/computer/med_data/attack_ai(user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
@@ -408,3 +425,8 @@
|
|||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/med_data/laptop
|
||||||
|
name = "Medical Laptop"
|
||||||
|
desc = "Cheap Nanotrasen Laptop."
|
||||||
|
icon_state = "medlaptop"
|
||||||
|
|||||||
222
code/game/machinery/computer/pod.dm
Normal file
222
code/game/machinery/computer/pod.dm
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
/obj/machinery/computer/pod
|
||||||
|
name = "Pod Launch Control"
|
||||||
|
desc = "A controll for launching pods. Some people prefer firing Mechas."
|
||||||
|
icon_state = "computer_generic"
|
||||||
|
var
|
||||||
|
id = 1.0
|
||||||
|
obj/machinery/mass_driver/connected = null
|
||||||
|
timing = 0.0
|
||||||
|
time = 30.0
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/New()
|
||||||
|
..()
|
||||||
|
spawn( 5 )
|
||||||
|
for(var/obj/machinery/mass_driver/M in machines)
|
||||||
|
if (M.id == id)
|
||||||
|
connected = M
|
||||||
|
else
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/proc/alarm()
|
||||||
|
if(stat & (NOPOWER|BROKEN))
|
||||||
|
return
|
||||||
|
|
||||||
|
if (!( connected ))
|
||||||
|
viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!"
|
||||||
|
return
|
||||||
|
|
||||||
|
for(var/obj/machinery/door/poddoor/M in machines)
|
||||||
|
if (M.id == id)
|
||||||
|
spawn( 0 )
|
||||||
|
M.open()
|
||||||
|
return
|
||||||
|
sleep(20)
|
||||||
|
|
||||||
|
//connected.drive() *****RM from 40.93.3S
|
||||||
|
for(var/obj/machinery/mass_driver/M in machines)
|
||||||
|
if(M.id == id)
|
||||||
|
M.power = connected.power
|
||||||
|
M.drive()
|
||||||
|
|
||||||
|
sleep(50)
|
||||||
|
for(var/obj/machinery/door/poddoor/M in machines)
|
||||||
|
if (M.id == id)
|
||||||
|
spawn( 0 )
|
||||||
|
M.close()
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/attackby(I as obj, user as mob)
|
||||||
|
if(istype(I, /obj/item/weapon/screwdriver))
|
||||||
|
playsound(loc, 'Screwdriver.ogg', 50, 1)
|
||||||
|
if(do_after(user, 20))
|
||||||
|
if (stat & BROKEN)
|
||||||
|
user << "\blue The broken glass falls out."
|
||||||
|
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
|
||||||
|
new /obj/item/weapon/shard( loc )
|
||||||
|
|
||||||
|
//generate appropriate circuitboard. Accounts for /pod/old computer types
|
||||||
|
var/obj/item/weapon/circuitboard/pod/M = null
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old))
|
||||||
|
M = new /obj/item/weapon/circuitboard/olddoor( A )
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old/syndicate))
|
||||||
|
M = new /obj/item/weapon/circuitboard/syndicatedoor( A )
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old/swf))
|
||||||
|
M = new /obj/item/weapon/circuitboard/swfdoor( A )
|
||||||
|
else //it's not an old computer. Generate standard pod circuitboard.
|
||||||
|
M = new /obj/item/weapon/circuitboard/pod( A )
|
||||||
|
|
||||||
|
for (var/obj/C in src)
|
||||||
|
C.loc = loc
|
||||||
|
M.id = id
|
||||||
|
A.circuit = M
|
||||||
|
A.state = 3
|
||||||
|
A.icon_state = "3"
|
||||||
|
A.anchored = 1
|
||||||
|
del(src)
|
||||||
|
else
|
||||||
|
user << "\blue You disconnect the monitor."
|
||||||
|
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
|
||||||
|
|
||||||
|
//generate appropriate circuitboard. Accounts for /pod/old computer types
|
||||||
|
var/obj/item/weapon/circuitboard/pod/M = null
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old))
|
||||||
|
M = new /obj/item/weapon/circuitboard/olddoor( A )
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old/syndicate))
|
||||||
|
M = new /obj/item/weapon/circuitboard/syndicatedoor( A )
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old/swf))
|
||||||
|
M = new /obj/item/weapon/circuitboard/swfdoor( A )
|
||||||
|
else //it's not an old computer. Generate standard pod circuitboard.
|
||||||
|
M = new /obj/item/weapon/circuitboard/pod( A )
|
||||||
|
|
||||||
|
for (var/obj/C in src)
|
||||||
|
C.loc = loc
|
||||||
|
M.id = id
|
||||||
|
A.circuit = M
|
||||||
|
A.state = 4
|
||||||
|
A.icon_state = "4"
|
||||||
|
A.anchored = 1
|
||||||
|
del(src)
|
||||||
|
else
|
||||||
|
attack_hand(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/attack_ai(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/attack_paw(var/mob/user as mob)
|
||||||
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/attack_hand(var/mob/user as mob)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
|
||||||
|
var/dat = "<HTML><BODY><TT><B>Mass Driver Controls</B>"
|
||||||
|
user.machine = src
|
||||||
|
var/d2
|
||||||
|
if (timing)
|
||||||
|
d2 = text("<A href='?src=\ref[];time=0'>Stop Time Launch</A>", src)
|
||||||
|
else
|
||||||
|
d2 = text("<A href='?src=\ref[];time=1'>Initiate Time Launch</A>", src)
|
||||||
|
var/second = time % 60
|
||||||
|
var/minute = (time - second) / 60
|
||||||
|
dat += text("<HR>\nTimer System: []\nTime Left: [][] <A href='?src=\ref[];tp=-30'>-</A> <A href='?src=\ref[];tp=-1'>-</A> <A href='?src=\ref[];tp=1'>+</A> <A href='?src=\ref[];tp=30'>+</A>", d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
|
||||||
|
if (connected)
|
||||||
|
var/temp = ""
|
||||||
|
var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
|
||||||
|
for(var/t in L)
|
||||||
|
if (t == connected.power)
|
||||||
|
temp += text("[] ", t)
|
||||||
|
else
|
||||||
|
temp += text("<A href = '?src=\ref[];power=[]'>[]</A> ", src, t, t)
|
||||||
|
//Foreach goto(172)
|
||||||
|
dat += text("<HR>\nPower Level: []<BR>\n<A href = '?src=\ref[];alarm=1'>Firing Sequence</A><BR>\n<A href = '?src=\ref[];drive=1'>Test Fire Driver</A><BR>\n<A href = '?src=\ref[];door=1'>Toggle Outer Door</A><BR>", temp, src, src, src)
|
||||||
|
//*****RM from 40.93.3S
|
||||||
|
else
|
||||||
|
dat += text("<BR>\n<A href = '?src=\ref[];door=1'>Toggle Outer Door</A><BR>", src)
|
||||||
|
//*****
|
||||||
|
dat += text("<BR><BR><A href='?src=\ref[];mach_close=computer'>Close</A></TT></BODY></HTML>", user)
|
||||||
|
user << browse(dat, "window=computer;size=400x500")
|
||||||
|
onclose(user, "computer")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/process()
|
||||||
|
..()
|
||||||
|
if (timing)
|
||||||
|
if (time > 0)
|
||||||
|
time = round(time) - 1
|
||||||
|
else
|
||||||
|
alarm()
|
||||||
|
time = 0
|
||||||
|
timing = 0
|
||||||
|
updateDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||||
|
usr.machine = src
|
||||||
|
if (href_list["power"])
|
||||||
|
var/t = text2num(href_list["power"])
|
||||||
|
t = min(max(0.25, t), 16)
|
||||||
|
if (connected)
|
||||||
|
connected.power = t
|
||||||
|
else
|
||||||
|
if (href_list["alarm"])
|
||||||
|
alarm()
|
||||||
|
else
|
||||||
|
if (href_list["time"])
|
||||||
|
timing = text2num(href_list["time"])
|
||||||
|
else
|
||||||
|
if (href_list["tp"])
|
||||||
|
var/tp = text2num(href_list["tp"])
|
||||||
|
time += tp
|
||||||
|
time = min(max(round(time), 0), 120)
|
||||||
|
else
|
||||||
|
if (href_list["door"])
|
||||||
|
if(istype(src, /obj/machinery/computer/pod/old/syndicate))//Added here so Nuke ops don't go running naked into space before moving the shuttle.
|
||||||
|
if(syndicate_station_at_station == 0)
|
||||||
|
usr << "\red You need to launch the Syndicate Shuttle via the computer terminal at the head of the ship before departing."
|
||||||
|
return
|
||||||
|
for(var/obj/machinery/door/poddoor/M in machines)
|
||||||
|
if (M.id == id)
|
||||||
|
if (M.density)
|
||||||
|
spawn( 0 )
|
||||||
|
M.open()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
spawn( 0 )
|
||||||
|
M.close()
|
||||||
|
return
|
||||||
|
//Foreach goto(298)
|
||||||
|
add_fingerprint(usr)
|
||||||
|
updateUsrDialog()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/old
|
||||||
|
icon_state = "old"
|
||||||
|
name = "DoorMex Control Computer"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/old/syndicate
|
||||||
|
name = "ProComp Executive IIc"
|
||||||
|
desc = "The Syndicate operate on a tight budget. Operates external airlocks."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/pod/old/swf
|
||||||
|
name = "Magix System IV"
|
||||||
|
desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition"
|
||||||
@@ -1,3 +1,21 @@
|
|||||||
|
|
||||||
|
/obj/machinery/computer/robotics
|
||||||
|
name = "Robotics Control"
|
||||||
|
desc = "Used to remotely lockdown or detonate linked Cyborgs."
|
||||||
|
icon = 'computer.dmi'
|
||||||
|
icon_state = "robot"
|
||||||
|
req_access = list(access_robotics)
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/robotics"
|
||||||
|
|
||||||
|
var
|
||||||
|
id = 0.0
|
||||||
|
temp = null
|
||||||
|
status = 0
|
||||||
|
timeleft = 60
|
||||||
|
stop = 0.0
|
||||||
|
screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
|
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,29 @@
|
|||||||
|
/obj/machinery/computer/secure_data//TODO:SANITY
|
||||||
|
name = "Security Records"
|
||||||
|
desc = "Used to view and edit personnel's security records"
|
||||||
|
icon_state = "security"
|
||||||
|
req_access = list(access_security)
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/secure_data"
|
||||||
|
var
|
||||||
|
obj/item/weapon/card/id/scan = null
|
||||||
|
authenticated = null
|
||||||
|
rank = null
|
||||||
|
screen = null
|
||||||
|
datum/data/record/active1 = null
|
||||||
|
datum/data/record/active2 = null
|
||||||
|
a_id = null
|
||||||
|
temp = null
|
||||||
|
printing = null
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
|
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
|
||||||
return attack_hand(user)
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data/attack_paw(mob/user as mob)
|
/obj/machinery/computer/secure_data/attack_paw(mob/user as mob)
|
||||||
return attack_hand(user)
|
return attack_hand(user)
|
||||||
|
|
||||||
|
|
||||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||||
/obj/machinery/computer/secure_data/attack_hand(mob/user as mob)
|
/obj/machinery/computer/secure_data/attack_hand(mob/user as mob)
|
||||||
if(..())
|
if(..())
|
||||||
@@ -20,7 +40,7 @@
|
|||||||
if(2.0)
|
if(2.0)
|
||||||
dat += "<B>Record List</B>:<HR>"
|
dat += "<B>Record List</B>:<HR>"
|
||||||
for(var/datum/data/record/R in data_core.general)
|
for(var/datum/data/record/R in data_core.general)
|
||||||
dat += text("<A href='?src=\ref[];choice=Browse Record;d_rec=\ref[]'>[]: []<BR>", src, R, R.fields["id"], R.fields["name"])
|
dat += text("<A href='?src=\ref[src];choice=Browse Record;d_rec=\ref[R]'>[R.fields["id"]]: [R.fields["name"]] - [R.fields["rank"]]<BR>")
|
||||||
dat += text("<HR><A href='?src=\ref[];choice=Return'>Back</A>", src)
|
dat += text("<HR><A href='?src=\ref[];choice=Return'>Back</A>", src)
|
||||||
if(3.0)
|
if(3.0)
|
||||||
dat += text("<B>Records Maintenance</B><HR>\n<A href='?src=\ref[];choice=Delete All Records'>Delete All Records</A><BR>\n<BR>\n<A href='?src=\ref[];choice=Return'>Back</A>", src, src)
|
dat += text("<B>Records Maintenance</B><HR>\n<A href='?src=\ref[];choice=Delete All Records'>Delete All Records</A><BR>\n<BR>\n<A href='?src=\ref[];choice=Return'>Back</A>", src, src)
|
||||||
@@ -49,6 +69,7 @@
|
|||||||
onclose(user, "secure_rec")
|
onclose(user, "secure_rec")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/*Revised /N
|
/*Revised /N
|
||||||
I can't be bothered to look more of the actual code outside of switch but that probably needs revising too.
|
I can't be bothered to look more of the actual code outside of switch but that probably needs revising too.
|
||||||
What a mess.*/
|
What a mess.*/
|
||||||
@@ -379,3 +400,8 @@ What a mess.*/
|
|||||||
updateUsrDialog()
|
updateUsrDialog()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/secure_data/detective_computer
|
||||||
|
icon = 'computer.dmi'
|
||||||
|
icon_state = "messyfiles"
|
||||||
|
|||||||
110
code/game/machinery/computer/station_alert.dm
Normal file
110
code/game/machinery/computer/station_alert.dm
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
|
||||||
|
/obj/machinery/computer/station_alert
|
||||||
|
name = "Station Alert Computer"
|
||||||
|
desc = "Used to access the station's automated alert system."
|
||||||
|
icon_state = "alert:0"
|
||||||
|
circuit = "/obj/item/weapon/circuitboard/stationalert"
|
||||||
|
var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list())
|
||||||
|
|
||||||
|
|
||||||
|
attack_ai(mob/user)
|
||||||
|
add_fingerprint(user)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
interact(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(mob/user)
|
||||||
|
add_fingerprint(user)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
interact(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/interact(mob/user)
|
||||||
|
usr.machine = src
|
||||||
|
var/dat = "<HEAD><TITLE>Current Station Alerts</TITLE><META HTTP-EQUIV='Refresh' CONTENT='10'></HEAD><BODY>\n"
|
||||||
|
dat += "<A HREF='?src=\ref[user];mach_close=alerts'>Close</A><br><br>"
|
||||||
|
for (var/cat in src.alarms)
|
||||||
|
dat += text("<B>[]</B><BR>\n", cat)
|
||||||
|
var/list/L = src.alarms[cat]
|
||||||
|
if (L.len)
|
||||||
|
for (var/alarm in L)
|
||||||
|
var/list/alm = L[alarm]
|
||||||
|
var/area/A = alm[1]
|
||||||
|
var/list/sources = alm[3]
|
||||||
|
dat += "<NOBR>"
|
||||||
|
dat += "• "
|
||||||
|
dat += "[A.name]"
|
||||||
|
if (sources.len > 1)
|
||||||
|
dat += text(" - [] sources", sources.len)
|
||||||
|
dat += "</NOBR><BR>\n"
|
||||||
|
else
|
||||||
|
dat += "-- All Systems Nominal<BR>\n"
|
||||||
|
dat += "<BR>\n"
|
||||||
|
user << browse(dat, "window=alerts")
|
||||||
|
onclose(user, "alerts")
|
||||||
|
|
||||||
|
|
||||||
|
Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
var/list/L = src.alarms[class]
|
||||||
|
for (var/I in L)
|
||||||
|
if (I == A.name)
|
||||||
|
var/list/alarm = L[I]
|
||||||
|
var/list/sources = alarm[3]
|
||||||
|
if (!(alarmsource in sources))
|
||||||
|
sources += alarmsource
|
||||||
|
return 1
|
||||||
|
var/obj/machinery/camera/C = null
|
||||||
|
var/list/CL = null
|
||||||
|
if (O && istype(O, /list))
|
||||||
|
CL = O
|
||||||
|
if (CL.len == 1)
|
||||||
|
C = CL[1]
|
||||||
|
else if (O && istype(O, /obj/machinery/camera))
|
||||||
|
C = O
|
||||||
|
L[A.name] = list(A, (C) ? C : O, list(alarmsource))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
proc/cancelAlarm(var/class, area/A as area, obj/origin)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
var/list/L = src.alarms[class]
|
||||||
|
var/cleared = 0
|
||||||
|
for (var/I in L)
|
||||||
|
if (I == A.name)
|
||||||
|
var/list/alarm = L[I]
|
||||||
|
var/list/srcs = alarm[3]
|
||||||
|
if (origin in srcs)
|
||||||
|
srcs -= origin
|
||||||
|
if (srcs.len == 0)
|
||||||
|
cleared = 1
|
||||||
|
L -= I
|
||||||
|
return !cleared
|
||||||
|
|
||||||
|
|
||||||
|
process()
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
icon_state = "atmos0"
|
||||||
|
return
|
||||||
|
var/active_alarms = 0
|
||||||
|
for (var/cat in src.alarms)
|
||||||
|
var/list/L = src.alarms[cat]
|
||||||
|
if(L.len) active_alarms = 1
|
||||||
|
if(active_alarms)
|
||||||
|
icon_state = "alert:2"
|
||||||
|
else
|
||||||
|
icon_state = "alert:0"
|
||||||
|
..()
|
||||||
|
return
|
||||||
35
code/game/machinery/mass_driver.dm
Normal file
35
code/game/machinery/mass_driver.dm
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/obj/machinery/mass_driver
|
||||||
|
name = "mass driver"
|
||||||
|
desc = "Shoots things into space."
|
||||||
|
icon = 'stationobjs.dmi'
|
||||||
|
icon_state = "mass_driver"
|
||||||
|
anchored = 1.0
|
||||||
|
use_power = 1
|
||||||
|
idle_power_usage = 2
|
||||||
|
active_power_usage = 50
|
||||||
|
|
||||||
|
var
|
||||||
|
power = 1.0
|
||||||
|
code = 1.0
|
||||||
|
id = 1.0
|
||||||
|
drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess.
|
||||||
|
|
||||||
|
|
||||||
|
proc/drive(amount)
|
||||||
|
if(stat & (BROKEN|NOPOWER))
|
||||||
|
return
|
||||||
|
use_power(500)
|
||||||
|
var/O_limit
|
||||||
|
var/atom/target = get_edge_target_turf(src, dir)
|
||||||
|
for(var/atom/movable/O in loc)
|
||||||
|
if(!O.anchored||istype(O, /obj/mecha))//Mechs need their launch platforms.
|
||||||
|
O_limit++
|
||||||
|
if(O_limit >= 20)
|
||||||
|
for(var/mob/M in hearers(src, null))
|
||||||
|
M << "\blue The mass driver lets out a screech, it mustn't be able to handle any more items."
|
||||||
|
break
|
||||||
|
use_power(500)
|
||||||
|
spawn( 0 )
|
||||||
|
O.throw_at(target, drive_range * power, power)
|
||||||
|
flick("mass_driver1", src)
|
||||||
|
return
|
||||||
@@ -5,8 +5,9 @@
|
|||||||
set category = "Object"
|
set category = "Object"
|
||||||
set src in view(1)
|
set src in view(1)
|
||||||
usr.machine = src
|
usr.machine = src
|
||||||
|
if(!mapping) return
|
||||||
|
|
||||||
log_game("[usr]([usr.key]) used station map L[maplevel] in [src.loc.loc]")
|
log_game("[usr]([usr.key]) used station map L[z] in [src.loc.loc]")
|
||||||
|
|
||||||
src.drawmap(usr)
|
src.drawmap(usr)
|
||||||
|
|
||||||
@@ -36,7 +37,7 @@
|
|||||||
|
|
||||||
for(var/wy = 1; wy <= world.maxy; wy++)
|
for(var/wy = 1; wy <= world.maxy; wy++)
|
||||||
|
|
||||||
var/turf/T = locate(wx, wy, maplevel)
|
var/turf/T = locate(wx, wy, z)
|
||||||
|
|
||||||
var/colour
|
var/colour
|
||||||
var/colour2
|
var/colour2
|
||||||
@@ -122,8 +123,9 @@
|
|||||||
colour = rgb(red, green, blue)
|
colour = rgb(red, green, blue)
|
||||||
|
|
||||||
if(!colour2 && !T.density)
|
if(!colour2 && !T.density)
|
||||||
|
var/datum/gas_mixture/environment = T.return_air()
|
||||||
var/turf_total = T.co2 + T.oxygen + T.poison + T.sl_gas + T.n2
|
var/turf_total = environment.total_moles()
|
||||||
|
//var/turf_total = T.co2 + T.oxygen + T.poison + T.sl_gas + T.n2
|
||||||
|
|
||||||
|
|
||||||
var/t1 = turf_total / MOLES_CELLSTANDARD * 150
|
var/t1 = turf_total / MOLES_CELLSTANDARD * 150
|
||||||
@@ -192,7 +194,7 @@
|
|||||||
|
|
||||||
for(var/wy = 1; wy <= world.maxy; wy++)
|
for(var/wy = 1; wy <= world.maxy; wy++)
|
||||||
|
|
||||||
var/turf/T = locate(wx, wy, maplevel)
|
var/turf/T = locate(wx, wy, z)
|
||||||
|
|
||||||
var/colour
|
var/colour
|
||||||
|
|
||||||
@@ -284,7 +286,7 @@
|
|||||||
|
|
||||||
//world << "icon: \icon[I]"
|
//world << "icon: \icon[I]"
|
||||||
|
|
||||||
I.DrawBox(colour, rx, ry, rx+1, ry+1)
|
I.DrawBox(colour, rx, ry, rx, ry)
|
||||||
|
|
||||||
|
|
||||||
user.clearmap()
|
user.clearmap()
|
||||||
|
|||||||
@@ -20,43 +20,6 @@ AI MODULES
|
|||||||
throw_range = 15
|
throw_range = 15
|
||||||
origin_tech = "programming=3"
|
origin_tech = "programming=3"
|
||||||
|
|
||||||
/obj/machinery/computer/aiupload/verb/AccessInternals()
|
|
||||||
set category = "Object"
|
|
||||||
set name = "Access Computer's Internals"
|
|
||||||
set src in oview(1)
|
|
||||||
if(get_dist(src, usr) > 1 || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon))
|
|
||||||
return
|
|
||||||
|
|
||||||
opened = !opened
|
|
||||||
if(opened)
|
|
||||||
usr << "\blue The access panel is now open."
|
|
||||||
else
|
|
||||||
usr << "\blue The access panel is now closed."
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/aiupload/attackby(obj/item/weapon/O as obj, mob/user as mob)
|
|
||||||
if(istype(O, /obj/item/weapon/aiModule))
|
|
||||||
var/obj/item/weapon/aiModule/M = O
|
|
||||||
M.install(src)
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/aiupload/attack_hand(var/mob/user as mob)
|
|
||||||
if(src.stat & NOPOWER)
|
|
||||||
usr << "The upload computer has no power!"
|
|
||||||
return
|
|
||||||
if(src.stat & BROKEN)
|
|
||||||
usr << "The upload computer is broken!"
|
|
||||||
return
|
|
||||||
|
|
||||||
src.current = activeais()
|
|
||||||
|
|
||||||
if (!src.current)
|
|
||||||
usr << "No active AIs detected."
|
|
||||||
else
|
|
||||||
usr << "[src.current.name] selected for law changes."
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C)
|
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C)
|
||||||
if (istype(C, /obj/machinery/computer/aiupload))
|
if (istype(C, /obj/machinery/computer/aiupload))
|
||||||
@@ -108,30 +71,6 @@ AI MODULES
|
|||||||
usr << "Upload complete. The cyborg's laws have been modified."
|
usr << "Upload complete. The cyborg's laws have been modified."
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/borgupload/attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob)
|
|
||||||
if(istype(module, /obj/item/weapon/aiModule))
|
|
||||||
module.install(src)
|
|
||||||
else
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/borgupload/attack_hand(var/mob/user as mob)
|
|
||||||
if(src.stat & NOPOWER)
|
|
||||||
usr << "The upload computer has no power!"
|
|
||||||
return
|
|
||||||
if(src.stat & BROKEN)
|
|
||||||
usr << "The upload computer is broken!"
|
|
||||||
return
|
|
||||||
|
|
||||||
src.current = freeborg()
|
|
||||||
|
|
||||||
if (!src.current)
|
|
||||||
usr << "No free cyborgs detected."
|
|
||||||
else
|
|
||||||
usr << "[src.current.name] selected for law changes."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
|
||||||
target << "[sender] has uploaded a change to the laws you must follow, using a [name]. From now on: "
|
target << "[sender] has uploaded a change to the laws you must follow, using a [name]. From now on: "
|
||||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||||
|
|||||||
@@ -7,6 +7,16 @@
|
|||||||
p++
|
p++
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
/obj/machinery/computer/dna
|
||||||
|
name = "DNA operations computer"
|
||||||
|
desc = "A Computer used to advanced DNA stuff."
|
||||||
|
icon_state = "dna"
|
||||||
|
var/obj/item/weapon/card/data/scan = null
|
||||||
|
var/obj/item/weapon/card/data/modify = null
|
||||||
|
var/obj/item/weapon/card/data/modify2 = null
|
||||||
|
var/mode = null
|
||||||
|
var/temp = null
|
||||||
|
|
||||||
/obj/machinery/computer/dna/attack_ai(mob/user as mob)
|
/obj/machinery/computer/dna/attack_ai(mob/user as mob)
|
||||||
return src.attack_hand(user)
|
return src.attack_hand(user)
|
||||||
|
|
||||||
|
|||||||
@@ -210,6 +210,7 @@
|
|||||||
#include "code\datums\ai_laws.dm"
|
#include "code\datums\ai_laws.dm"
|
||||||
#include "code\datums\computerfiles.dm"
|
#include "code\datums\computerfiles.dm"
|
||||||
#include "code\datums\configuration.dm"
|
#include "code\datums\configuration.dm"
|
||||||
|
#include "code\datums\datacore.dm"
|
||||||
#include "code\datums\datumvars.dm"
|
#include "code\datums\datumvars.dm"
|
||||||
#include "code\datums\disease.dm"
|
#include "code\datums\disease.dm"
|
||||||
#include "code\datums\mind.dm"
|
#include "code\datums\mind.dm"
|
||||||
@@ -284,7 +285,6 @@
|
|||||||
#include "code\defines\mob\living\silicon\silicon.dm"
|
#include "code\defines\mob\living\silicon\silicon.dm"
|
||||||
#include "code\defines\obj\closet.dm"
|
#include "code\defines\obj\closet.dm"
|
||||||
#include "code\defines\obj\clothing.dm"
|
#include "code\defines\obj\clothing.dm"
|
||||||
#include "code\defines\obj\computer.dm"
|
|
||||||
#include "code\defines\obj\decal.dm"
|
#include "code\defines\obj\decal.dm"
|
||||||
#include "code\defines\obj\hydro.dm"
|
#include "code\defines\obj\hydro.dm"
|
||||||
#include "code\defines\obj\machinery.dm"
|
#include "code\defines\obj\machinery.dm"
|
||||||
@@ -433,6 +433,7 @@
|
|||||||
#include "code\game\machinery\lightswitch.dm"
|
#include "code\game\machinery\lightswitch.dm"
|
||||||
#include "code\game\machinery\machinery.dm"
|
#include "code\game\machinery\machinery.dm"
|
||||||
#include "code\game\machinery\magnet.dm"
|
#include "code\game\machinery\magnet.dm"
|
||||||
|
#include "code\game\machinery\mass_driver.dm"
|
||||||
#include "code\game\machinery\morgue.dm"
|
#include "code\game\machinery\morgue.dm"
|
||||||
#include "code\game\machinery\navbeacon.dm"
|
#include "code\game\machinery\navbeacon.dm"
|
||||||
#include "code\game\machinery\OpTable.dm"
|
#include "code\game\machinery\OpTable.dm"
|
||||||
@@ -466,23 +467,28 @@
|
|||||||
#include "code\game\machinery\bots\medbot.dm"
|
#include "code\game\machinery\bots\medbot.dm"
|
||||||
#include "code\game\machinery\bots\mulebot.dm"
|
#include "code\game\machinery\bots\mulebot.dm"
|
||||||
#include "code\game\machinery\bots\secbot.dm"
|
#include "code\game\machinery\bots\secbot.dm"
|
||||||
#include "code\game\machinery\computer\AIcore.dm"
|
#include "code\game\machinery\computer\ai_core.dm"
|
||||||
#include "code\game\machinery\computer\aifixer.dm"
|
#include "code\game\machinery\computer\aifixer.dm"
|
||||||
#include "code\game\machinery\computer\arcade.dm"
|
#include "code\game\machinery\computer\arcade.dm"
|
||||||
#include "code\game\machinery\computer\atmos.dm"
|
#include "code\game\machinery\computer\atmos_alert.dm"
|
||||||
#include "code\game\machinery\computer\buildandrepair.dm"
|
#include "code\game\machinery\computer\buildandrepair.dm"
|
||||||
|
#include "code\game\machinery\computer\camera.dm"
|
||||||
|
#include "code\game\machinery\computer\card.dm"
|
||||||
#include "code\game\machinery\computer\cloning.dm"
|
#include "code\game\machinery\computer\cloning.dm"
|
||||||
#include "code\game\machinery\computer\communications.dm"
|
#include "code\game\machinery\computer\communications.dm"
|
||||||
#include "code\game\machinery\computer\computer.dm"
|
#include "code\game\machinery\computer\computer.dm"
|
||||||
#include "code\game\machinery\computer\crew.dm"
|
#include "code\game\machinery\computer\crew.dm"
|
||||||
#include "code\game\machinery\computer\explosive.dm"
|
#include "code\game\machinery\computer\explosive.dm"
|
||||||
#include "code\game\machinery\computer\hologram.dm"
|
#include "code\game\machinery\computer\hologram.dm"
|
||||||
|
#include "code\game\machinery\computer\law.dm"
|
||||||
#include "code\game\machinery\computer\medical.dm"
|
#include "code\game\machinery\computer\medical.dm"
|
||||||
#include "code\game\machinery\computer\Operating.dm"
|
#include "code\game\machinery\computer\operating.dm"
|
||||||
|
#include "code\game\machinery\computer\pod.dm"
|
||||||
#include "code\game\machinery\computer\power.dm"
|
#include "code\game\machinery\computer\power.dm"
|
||||||
#include "code\game\machinery\computer\robot.dm"
|
#include "code\game\machinery\computer\robot.dm"
|
||||||
#include "code\game\machinery\computer\security.dm"
|
#include "code\game\machinery\computer\security.dm"
|
||||||
#include "code\game\machinery\computer\shuttle.dm"
|
#include "code\game\machinery\computer\shuttle.dm"
|
||||||
|
#include "code\game\machinery\computer\station_alert.dm"
|
||||||
#include "code\game\machinery\doors\airlock.dm"
|
#include "code\game\machinery\doors\airlock.dm"
|
||||||
#include "code\game\machinery\doors\airlock_electronics.dm"
|
#include "code\game\machinery\doors\airlock_electronics.dm"
|
||||||
#include "code\game\machinery\doors\brigdoors.dm"
|
#include "code\game\machinery\doors\brigdoors.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user