April sync (#360)

* Maps and things no code/icons

* helpers defines globalvars

* Onclick world.dm orphaned_procs

* subsystems

Round vote and shuttle autocall done here too

* datums

* Game folder

* Admin - chatter modules

* clothing - mining

* modular computers - zambies

* client

* mob level 1

* mob stage 2 + simple_animal

* silicons n brains

* mob stage 3 + Alien/Monkey

* human mobs

* icons updated

* some sounds

* emitter y u no commit

* update tgstation.dme

* compile fixes

* travis fixes

Also removes Fast digest mode, because reasons.

* tweaks for travis Mentors are broke again

Also fixes Sizeray guns

* oxygen loss fix for vore code.

* removes unused code

* some code updates

* bulk fixes

* further fixes

* outside things

* whoops.

* Maint bar ported

* GLOBs.
This commit is contained in:
Poojawa
2017-04-13 23:37:00 -05:00
committed by GitHub
parent cdc32c98fa
commit 7e9b96a00f
1322 changed files with 174827 additions and 23888 deletions
+4 -4
View File
@@ -107,10 +107,10 @@
return ..()
/obj/machinery/sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
if(controls_inside && state == notcontained_state)
state = default_state // If it has a set of controls on the inside, make it actually controllable by the mob in it.
if(controls_inside && state == GLOB.notcontained_state)
state = GLOB.default_state // If it has a set of controls on the inside, make it actually controllable by the mob in it.
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
@@ -124,7 +124,7 @@
data["chems"] = list()
for(var/chem in available_chems)
var/datum/reagent/R = chemical_reagents_list[chem]
var/datum/reagent/R = GLOB.chemical_reagents_list[chem]
data["chems"] += list(list("name" = R.name, "id" = R.id, "allowed" = chem_allowed(chem)))
data["occupant"] = list()
+1 -1
View File
@@ -15,7 +15,7 @@
var/cooldown_time = 0
var/cooldown_timeleft = 0
var/cooldown_on = 0
req_access = list(access_ai_upload)
req_access = list(GLOB.access_ai_upload)
/obj/machinery/ai_slipper/power_change()
if(stat & BROKEN)
+5 -5
View File
@@ -58,7 +58,7 @@
signal.data["door_status"] = density?("closed"):("open")
signal.data["lock_status"] = locked?("locked"):("unlocked")
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
/obj/machinery/door/airlock/open(surpress_send)
@@ -75,7 +75,7 @@
SSradio.remove_object(src, frequency)
if(new_frequency)
frequency = new_frequency
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK)
/obj/machinery/door/airlock/Destroy()
if(frequency && SSradio)
@@ -116,7 +116,7 @@
signal.data["tag"] = master_tag
signal.data["command"] = "cycle"
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
flick("airlock_sensor_cycle", src)
/obj/machinery/airlock_sensor/process()
@@ -133,14 +133,14 @@
signal.data["pressure"] = num2text(pressure)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
update_icon()
/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
SSradio.remove_object(src, frequency)
frequency = new_frequency
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK)
/obj/machinery/airlock_sensor/Initialize()
..()
+9 -9
View File
@@ -1,4 +1,4 @@
var/list/announcement_systems = list()
GLOBAL_LIST_EMPTY(announcement_systems)
/obj/machinery/announcement_system
density = 1
@@ -27,7 +27,7 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/New()
..()
announcement_systems += src
GLOB.announcement_systems += src
radio = new /obj/item/device/radio/headset/ai(src)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/announcement_system(null)
@@ -62,7 +62,7 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/Destroy()
QDEL_NULL(radio)
announcement_systems -= src //"OH GOD WHY ARE THERE 100,000 LISTED ANNOUNCEMENT SYSTEMS?!!"
GLOB.announcement_systems -= src //"OH GOD WHY ARE THERE 100,000 LISTED ANNOUNCEMENT SYSTEMS?!!"
return ..()
/obj/machinery/announcement_system/power_change()
@@ -103,10 +103,10 @@ var/list/announcement_systems = list()
message = "The arrivals shuttle has been damaged. Docking for repairs..."
if(channels.len == 0)
radio.talk_into(src, message, null, list(SPAN_ROBOT))
radio.talk_into(src, message, null, list(SPAN_ROBOT), get_default_language())
else
for(var/channel in channels)
radio.talk_into(src, message, channel, list(SPAN_ROBOT))
radio.talk_into(src, message, channel, list(SPAN_ROBOT), get_default_language())
//config stuff
@@ -132,13 +132,13 @@ var/list/announcement_systems = list()
if(href_list["ArrivalTopic"])
var/NewMessage = stripped_input(usr, "Enter in the arrivals announcement configuration.", "Arrivals Announcement Config", arrival)
if(!in_range(src, usr) && src.loc != usr && !isAI(usr))
if(!in_range(src, usr) && src.loc != usr && (!isAI(usr) && !IsAdminGhost(usr)))
return
if(NewMessage)
arrival = NewMessage
else if(href_list["NewheadTopic"])
var/NewMessage = stripped_input(usr, "Enter in the departmental head announcement configuration.", "Head Departmental Announcement Config", newhead)
if(!in_range(src, usr) && src.loc != usr && !isAI(usr))
if(!in_range(src, usr) && src.loc != usr && (!isAI(usr) && !IsAdminGhost(usr)))
return
if(NewMessage)
newhead = NewMessage
@@ -156,8 +156,8 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/attack_robot(mob/living/silicon/user)
. = attack_ai(user)
/obj/machinery/announcement_system/attack_ai(mob/living/silicon/user)
if(!issilicon(user))
/obj/machinery/announcement_system/attack_ai(mob/user)
if(!issilicon(user) && !IsAdminGhost(user))
return
if(stat & BROKEN)
to_chat(user, "<span class='warning'>[src]'s firmware appears to be malfunctioning!</span>")
+19 -19
View File
@@ -44,8 +44,8 @@
..()
assembly = new(src)
assembly.state = 4
cameranet.cameras += src
cameranet.addCamera(src)
GLOB.cameranet.cameras += src
GLOB.cameranet.addCamera(src)
add_to_proximity_list(src, 1) //1 was default of everything
/* // Use this to look for cameras that have the same c_tag.
for(var/obj/machinery/camera/C in cameranet.cameras)
@@ -74,9 +74,9 @@
if(bug.current == src)
bug.current = null
bug = null
cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
cameranet.cameras -= src
cameranet.removeCamera(src)
GLOB.cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
GLOB.cameranet.cameras -= src
GLOB.cameranet.removeCamera(src)
return ..()
/obj/machinery/camera/emp_act(severity)
@@ -87,7 +87,7 @@
update_icon()
var/list/previous_network = network
network = list()
cameranet.removeCamera(src)
GLOB.cameranet.removeCamera(src)
stat |= EMPED
set_light(0)
emped = emped+1 //Increase the number of consecutive EMP's
@@ -101,10 +101,10 @@
stat &= ~EMPED
update_icon()
if(can_use())
cameranet.addCamera(src)
GLOB.cameranet.addCamera(src)
emped = 0 //Resets the consecutive EMP count
addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
for(var/mob/O in mob_list)
for(var/mob/O in GLOB.mob_list)
if (O.client && O.client.eye == src)
O.unset_machine()
O.reset_perspective(null)
@@ -124,7 +124,7 @@
/obj/machinery/camera/proc/setViewRange(num = 7)
src.view_range = num
cameranet.updateVisibility(src, 0)
GLOB.cameranet.updateVisibility(src, 0)
/obj/machinery/camera/proc/shock(mob/living/user)
if(!istype(user))
@@ -206,7 +206,7 @@
info = P.notehtml
to_chat(U, "<span class='notice'>You hold \the [itemname] up to the camera...</span>")
U.changeNext_move(CLICK_CD_MELEE)
for(var/mob/O in player_list)
for(var/mob/O in GLOB.player_list)
if(isAI(O))
var/mob/living/silicon/ai/AI = O
if(AI.control_disabled || (AI.stat == DEAD))
@@ -278,11 +278,11 @@
/obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1)
status = !status
if(can_use())
cameranet.addCamera(src)
GLOB.cameranet.addCamera(src)
else
set_light(0)
cameranet.removeCamera(src)
cameranet.updateChunk(x, y, z)
GLOB.cameranet.removeCamera(src)
GLOB.cameranet.updateChunk(x, y, z)
var/change_msg = "deactivates"
if(status)
change_msg = "reactivates"
@@ -301,7 +301,7 @@
// now disconnect anyone using the camera
//Apparently, this will disconnect anyone even if the camera was re-activated.
//I guess that doesn't matter since they can't use it anyway?
for(var/mob/O in player_list)
for(var/mob/O in GLOB.player_list)
if (O.client && O.client.eye == src)
O.unset_machine()
O.reset_perspective(null)
@@ -309,12 +309,12 @@
/obj/machinery/camera/proc/triggerCameraAlarm()
alarm_on = 1
for(var/mob/living/silicon/S in mob_list)
for(var/mob/living/silicon/S in GLOB.mob_list)
S.triggerAlarm("Camera", get_area(src), list(src), src)
/obj/machinery/camera/proc/cancelCameraAlarm()
alarm_on = 0
for(var/mob/living/silicon/S in mob_list)
for(var/mob/living/silicon/S in GLOB.mob_list)
S.cancelAlarm("Camera", get_area(src), src)
/obj/machinery/camera/proc/can_use()
@@ -386,7 +386,7 @@
return 0
/obj/machinery/camera/proc/Togglelight(on=0)
for(var/mob/living/silicon/ai/A in ai_list)
for(var/mob/living/silicon/ai/A in GLOB.ai_list)
for(var/obj/machinery/camera/cam in A.lit_cameras)
if(cam == src)
return
@@ -405,8 +405,8 @@
assembly.update_icon()
/obj/machinery/camera/portable/process() //Updates whenever the camera is moved.
if(cameranet && get_turf(src) != prev_turf)
cameranet.updatePortableCamera(src)
if(GLOB.cameranet && get_turf(src) != prev_turf)
GLOB.cameranet.updatePortableCamera(src)
prev_turf = get_turf(src)
/obj/machinery/camera/get_remote_view_fullscreens(mob/user)
+2 -2
View File
@@ -50,7 +50,7 @@
/obj/machinery/camera/proc/cancelAlarm()
if (detectTime == -1)
for (var/mob/living/silicon/aiPlayer in player_list)
for (var/mob/living/silicon/aiPlayer in GLOB.player_list)
if (status)
aiPlayer.cancelAlarm("Motion", get_area(src), src)
detectTime = 0
@@ -58,7 +58,7 @@
/obj/machinery/camera/proc/triggerAlarm()
if (!detectTime) return 0
for (var/mob/living/silicon/aiPlayer in player_list)
for (var/mob/living/silicon/aiPlayer in GLOB.player_list)
if (status)
aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src)
detectTime = -1
+13 -10
View File
@@ -4,7 +4,7 @@
/obj/machinery/camera/emp_proof
start_active = 1
/obj/machinery/camera/emp_proof/New()
/obj/machinery/camera/emp_proof/Initialize()
..()
upgradeEmpProof()
@@ -14,7 +14,7 @@
start_active = 1
icon_state = "xraycam" // Thanks to Krutchen for the icons.
/obj/machinery/camera/xray/New()
/obj/machinery/camera/xray/Initialize()
..()
upgradeXRay()
@@ -23,7 +23,7 @@
start_active = 1
name = "motion-sensitive security camera"
/obj/machinery/camera/motion/New()
/obj/machinery/camera/motion/Initialize()
..()
upgradeMotion()
@@ -31,7 +31,7 @@
/obj/machinery/camera/all
start_active = 1
/obj/machinery/camera/all/New()
/obj/machinery/camera/all/Initialize()
..()
upgradeEmpProof()
upgradeXRay()
@@ -43,13 +43,17 @@
var/number = 0 //camera number in area
//This camera type automatically sets it's name to whatever the area that it's in is called.
/obj/machinery/camera/autoname/New()
..()
spawn(10)
/obj/machinery/camera/autoname/Initialize(mapload)
if(mapload)
..()
return TRUE
else
if(!initialized)
..()
number = 1
var/area/A = get_area(src)
if(A)
for(var/obj/machinery/camera/autoname/C in machines)
for(var/obj/machinery/camera/autoname/C in GLOB.machines)
if(C == src) continue
var/area/CA = get_area(C)
if(CA.type == A.type)
@@ -57,7 +61,6 @@
number = max(number, C.number+1)
c_tag = "[A.name] #[number]"
// CHECKS
/obj/machinery/camera/proc/isEmpProof()
@@ -79,7 +82,7 @@
assembly.upgrades.Add(new /obj/item/device/analyzer(assembly))
upgrades |= CAMERA_UPGRADE_XRAY
// If you are upgrading Motion, and it isn't in the camera's New(), add it to the machines list.
// If you are upgrading Motion, and it isn't in the camera's Initialize(), add it to the machines list.
/obj/machinery/camera/proc/upgradeMotion()
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
upgrades |= CAMERA_UPGRADE_MOTION
+4 -4
View File
@@ -6,7 +6,7 @@
return
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
for (var/obj/machinery/camera/C in GLOB.cameranet.cameras)
L.Add(C)
camera_sort(L)
@@ -48,7 +48,7 @@
if(usr.stat == 2)
return list()
for(var/mob/living/M in mob_list)
for(var/mob/living/M in GLOB.mob_list)
if(!M.can_track(usr))
continue
@@ -138,9 +138,9 @@
return 0
if(iscyborg(M))
var/mob/living/silicon/robot/R = M
if(!(R.camera && R.camera.can_use()) && !cameranet.checkCameraVis(M))
if(!(R.camera && R.camera.can_use()) && !GLOB.cameranet.checkCameraVis(M))
return 0
else if(!cameranet.checkCameraVis(M))
else if(!GLOB.cameranet.checkCameraVis(M))
return 0
return 1
+3 -3
View File
@@ -6,7 +6,7 @@
#define CLONE_INITIAL_DAMAGE 190 //Clones in clonepods start with 190 cloneloss damage and 190 brainloss damage, thats just logical
#define MINIMUM_HEAL_LEVEL 40
#define SPEAK(message) radio.talk_into(src, message, radio_channel, get_spans())
#define SPEAK(message) radio.talk_into(src, message, radio_channel, get_spans(), get_default_language())
/obj/machinery/clonepod
anchored = 1
@@ -15,7 +15,7 @@
density = 1
icon = 'icons/obj/cloning.dmi'
icon_state = "pod_0"
req_access = list(access_cloning) //For premature unlocking.
req_access = list(GLOB.access_cloning) //For premature unlocking.
verb_say = "states"
var/heal_level //The clone is released once its health reaches this level.
var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
@@ -166,7 +166,7 @@
H.hardset_dna(ui, se, H.real_name, null, mrace, features)
if(efficiency > 2)
var/list/unclean_mutations = (not_good_mutations|bad_mutations)
var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations)
H.dna.remove_mutation_group(unclean_mutations)
if(efficiency > 5 && prob(20))
H.randmutvg()
+2 -1
View File
@@ -10,10 +10,11 @@
light_color = LIGHT_COLOR_BLUE
/obj/machinery/computer/operating/Initialize()
..()
find_table()
/obj/machinery/computer/operating/proc/find_table()
for(var/dir in cardinal)
for(var/dir in GLOB.cardinal)
table = locate(/obj/structure/table/optable, get_step(src, dir))
if(table)
table.computer = src
+1 -1
View File
@@ -1,7 +1,7 @@
/obj/machinery/computer/aifixer
name = "\improper AI system integrity restorer"
desc = "Used with intelliCards containing nonfunctioning AIs to restore them to working order."
req_access = list(access_captain, access_robotics, access_heads)
req_access = list(GLOB.access_captain, GLOB.access_robotics, GLOB.access_heads)
var/mob/living/silicon/ai/occupier = null
var/active = 0
circuit = /obj/item/weapon/circuitboard/computer/aifixer
+9 -7
View File
@@ -3,7 +3,7 @@
desc = "Used to remotely control the flow of power to different parts of the station."
icon_screen = "solar"
icon_keyboard = "power_key"
req_access = list(access_engine)
req_access = list(GLOB.access_engine)
circuit = /obj/item/weapon/circuitboard/computer/apc_control
light_color = LIGHT_COLOR_YELLOW
var/list/apcs //APCs the computer has access to
@@ -22,7 +22,7 @@
/obj/machinery/computer/apc_control/process()
apcs = list() //Clear the list every tick
for(var/V in apcs_list)
for(var/V in GLOB.apcs_list)
var/obj/machinery/power/apc/APC = V
if(check_apc(APC))
apcs[APC.name] = APC
@@ -37,9 +37,11 @@
active_apc.update_icon()
active_apc = null
/obj/machinery/computer/apc_control/attack_ai(mob/living/AI) //You already have APC access, cheater!
AI << "<span class='warning'>[src] does not support AI control.</span>"
return
/obj/machinery/computer/apc_control/attack_ai(mob/user)
if(!IsAdminGhost(user))
to_chat(user,"<span class='warning'>[src] does not support AI control.</span>") //You already have APC access, cheater!
return
..(user)
/obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC)
return APC.z == z && !APC.malfhack && !APC.aidisabled && !APC.emagged && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors
@@ -120,7 +122,7 @@
LAZYADD(logs, "<b>-=- Logging restored to full functionality at this point -=-</b>")
if(href_list["access_apc"])
playsound(src, "terminal_type", 50, 0)
var/obj/machinery/power/apc/APC = locate(href_list["access_apc"]) in apcs_list
var/obj/machinery/power/apc/APC = locate(href_list["access_apc"]) in GLOB.apcs_list
if(!APC || APC.aidisabled || APC.panel_open || QDELETED(APC))
to_chat(usr, "<span class='robot danger'>\icon[I] APC does not return interface request. Remote access may be disabled.</span>")
return
@@ -134,7 +136,7 @@
active_apc = null
to_chat(usr, "<span class='robot notice'>\icon[I] Connected to APC in [get_area(APC)]. Interface request sent.</span>")
log_activity("remotely accessed APC in [get_area(APC)]")
APC.interact(usr, not_incapacitated_state)
APC.interact(usr, GLOB.not_incapacitated_state)
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
message_admins("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].")
log_game("[key_name_admin(usr)] remotely accessed [APC] from [src] at [get_area(src)].")
+103 -102
View File
@@ -34,7 +34,6 @@
/obj/item/toy/redbutton = 2,
/obj/item/toy/talking/owl = 2,
/obj/item/toy/talking/griffin = 2,
/obj/item/toy/talking/skeleton = 2,
/obj/item/weapon/coin/antagtoken = 2,
/obj/item/stack/tile/fakespace/loaded = 2,
/obj/item/stack/tile/fakepit/loaded = 2,
@@ -48,6 +47,9 @@
light_color = LIGHT_COLOR_GREEN
/obj/machinery/computer/arcade/proc/Reset()
return
/obj/machinery/computer/arcade/New()
..()
// If it's a generic arcade machine, pick a random arcade
@@ -74,8 +76,9 @@
"<span class='notice'>[src] dispenses a [prize]!</span>",
"<span class='notice'>You hear a chime and a clunk.</span>")
prize.loc = src.loc
prize.loc = loc
#undef PULSE_MEDAL
/obj/machinery/computer/arcade/emp_act(severity)
..(severity)
@@ -91,8 +94,8 @@
num_of_prizes = rand(0,2)
for(var/i = num_of_prizes; i > 0; i--)
empprize = pickweight(prizes)
new empprize(src.loc)
explosion(src.loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes)
new empprize(loc)
explosion(loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes)
// ** BATTLE ** //
@@ -109,12 +112,11 @@
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
var/gameover = FALSE
var/blocked = FALSE //Player cannot attack/heal while set
var/turtle = 0
/obj/machinery/computer/arcade/battle/New()
..()
/obj/machinery/computer/arcade/battle/Reset()
var/name_action
var/name_part1
var/name_part2
@@ -124,20 +126,20 @@
name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ")
name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers")
src.enemy_name = replacetext((name_part1 + name_part2), "the ", "")
src.name = (name_action + name_part1 + name_part2)
enemy_name = replacetext((name_part1 + name_part2), "the ", "")
name = (name_action + name_part1 + name_part2)
/obj/machinery/computer/arcade/battle/attack_hand(mob/user)
if(..())
return
user.set_machine(src)
var/dat = "<a href='byond://?src=\ref[src];close=1'>Close</a>"
dat += "<center><h4>[src.enemy_name]</h4></center>"
dat += "<center><h4>[enemy_name]</h4></center>"
dat += "<br><center><h3>[src.temp]</h3></center>"
dat += "<br><center>Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]</center>"
dat += "<br><center><h3>[temp]</h3></center>"
dat += "<br><center>Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]</center>"
if (src.gameover)
if (gameover)
dat += "<center><b><a href='byond://?src=\ref[src];newgame=1'>New Game</a>"
else
dat += "<center><b><a href='byond://?src=\ref[src];attack=1'>Attack</a> | "
@@ -147,7 +149,7 @@
dat += "</b></center>"
var/datum/browser/popup = new(user, "arcade", "Space Villian 2000")
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
return
@@ -155,48 +157,48 @@
if(..())
return
if (!src.blocked && !src.gameover)
if (!blocked && !gameover)
if (href_list["attack"])
src.blocked = 1
blocked = TRUE
var/attackamt = rand(2,6)
src.temp = "You attack for [attackamt] damage!"
playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10)
src.updateUsrDialog()
temp = "You attack for [attackamt] damage!"
playsound(loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10)
updateUsrDialog()
if(turtle > 0)
turtle--
sleep(10)
src.enemy_hp -= attackamt
src.arcade_action()
enemy_hp -= attackamt
arcade_action()
else if (href_list["heal"])
src.blocked = 1
blocked = TRUE
var/pointamt = rand(1,3)
var/healamt = rand(6,8)
src.temp = "You use [pointamt] magic to heal for [healamt] damage!"
playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10)
src.updateUsrDialog()
temp = "You use [pointamt] magic to heal for [healamt] damage!"
playsound(loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10)
updateUsrDialog()
turtle++
sleep(10)
src.player_mp -= pointamt
src.player_hp += healamt
src.blocked = 1
src.updateUsrDialog()
src.arcade_action()
player_mp -= pointamt
player_hp += healamt
blocked = TRUE
updateUsrDialog()
arcade_action()
else if (href_list["charge"])
src.blocked = 1
blocked = 1
var/chargeamt = rand(4,7)
src.temp = "You regain [chargeamt] points"
playsound(src.loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10)
src.player_mp += chargeamt
temp = "You regain [chargeamt] points"
playsound(loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10)
player_mp += chargeamt
if(turtle > 0)
turtle--
src.updateUsrDialog()
updateUsrDialog()
sleep(10)
src.arcade_action()
arcade_action()
if (href_list["close"])
usr.unset_machine()
@@ -208,31 +210,31 @@
player_mp = 10
enemy_hp = 45
enemy_mp = 20
gameover = 0
gameover = FALSE
turtle = 0
if(emagged)
src.New()
Reset()
emagged = 0
src.add_fingerprint(usr)
src.updateUsrDialog()
add_fingerprint(usr)
updateUsrDialog()
return
/obj/machinery/computer/arcade/battle/proc/arcade_action()
if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0))
if ((enemy_mp <= 0) || (enemy_hp <= 0))
if(!gameover)
src.gameover = 1
src.temp = "[src.enemy_name] has fallen! Rejoice!"
playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10)
gameover = TRUE
temp = "[enemy_name] has fallen! Rejoice!"
playsound(loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10)
if(emagged)
feedback_inc("arcade_win_emagged")
new /obj/effect/spawner/newbomb/timer/syndicate(src.loc)
new /obj/item/clothing/head/collectable/petehat(src.loc)
new /obj/effect/spawner/newbomb/timer/syndicate(loc)
new /obj/item/clothing/head/collectable/petehat(loc)
message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.")
src.New()
Reset()
emagged = 0
else
feedback_inc("arcade_win_normal")
@@ -240,51 +242,51 @@
else if (emagged && (turtle >= 4))
var/boomamt = rand(5,10)
src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!"
playsound(src.loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10)
src.player_hp -= boomamt
temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!"
playsound(loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10)
player_hp -= boomamt
else if ((src.enemy_mp <= 5) && (prob(70)))
else if ((enemy_mp <= 5) && (prob(70)))
var/stealamt = rand(2,3)
src.temp = "[src.enemy_name] steals [stealamt] of your power!"
playsound(src.loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10)
src.player_mp -= stealamt
src.updateUsrDialog()
temp = "[enemy_name] steals [stealamt] of your power!"
playsound(loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10)
player_mp -= stealamt
updateUsrDialog()
if (src.player_mp <= 0)
src.gameover = 1
if (player_mp <= 0)
gameover = TRUE
sleep(10)
src.temp = "You have been drained! GAME OVER"
playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10)
temp = "You have been drained! GAME OVER"
playsound(loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10)
if(emagged)
feedback_inc("arcade_loss_mana_emagged")
usr.gib()
else
feedback_inc("arcade_loss_mana_normal")
else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4))
src.temp = "[src.enemy_name] heals for 4 health!"
playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10)
src.enemy_hp += 4
src.enemy_mp -= 4
else if ((enemy_hp <= 10) && (enemy_mp > 4))
temp = "[enemy_name] heals for 4 health!"
playsound(loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10)
enemy_hp += 4
enemy_mp -= 4
else
var/attackamt = rand(3,6)
src.temp = "[src.enemy_name] attacks for [attackamt] damage!"
playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10)
src.player_hp -= attackamt
temp = "[enemy_name] attacks for [attackamt] damage!"
playsound(loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10)
player_hp -= attackamt
if ((src.player_mp <= 0) || (src.player_hp <= 0))
src.gameover = 1
src.temp = "You have been crushed! GAME OVER"
playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10)
if ((player_mp <= 0) || (player_hp <= 0))
gameover = TRUE
temp = "You have been crushed! GAME OVER"
playsound(loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10)
if(emagged)
feedback_inc("arcade_loss_hp_emagged")
usr.gib()
else
feedback_inc("arcade_loss_hp_normal")
src.blocked = 0
blocked = FALSE
return
@@ -295,16 +297,16 @@
player_mp = 10
enemy_hp = 45
enemy_mp = 20
gameover = 0
blocked = 0
gameover = FALSE
blocked = FALSE
emagged = 1
emagged = TRUE
enemy_name = "Cuban Pete"
name = "Outbomb Cuban Pete"
src.updateUsrDialog()
updateUsrDialog()
@@ -363,8 +365,7 @@
var/gameStatus = ORION_STATUS_START
var/canContinueEvent = 0
/obj/machinery/computer/arcade/orion_trail/New()
..()
/obj/machinery/computer/arcade/orion_trail/Reset()
// Sets up the main trail
stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime")
stopblurbs = list(
@@ -462,7 +463,7 @@
dat += "<P ALIGN=Right><a href='byond://?src=\ref[src];close=1'>Close</a></P>"
var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
popup.open()
return
@@ -522,12 +523,12 @@
M.Weaken(3)
say("A sudden gust of powerful wind slams [M] into the floor!")
M.take_bodypart_damage(25)
playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1)
playsound(loc, 'sound/weapons/Genhit.ogg', 100, 1)
else
to_chat(M, "<span class='userdanger'>A violent gale blows past you, and you barely manage to stay standing!</span>")
if(ORION_TRAIL_COLLISION) //by far the most damaging event
if(prob(90))
playsound(src.loc, 'sound/effects/bang.ogg', 100, 1)
playsound(loc, 'sound/effects/bang.ogg', 100, 1)
var/turf/open/floor/F
for(F in orange(1, src))
F.ChangeTurf(F.baseturf)
@@ -535,16 +536,16 @@
if(hull)
sleep(10)
say("A new floor suddenly appears around [src]. What the hell?")
playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1)
playsound(loc, 'sound/weapons/Genhit.ogg', 100, 1)
var/turf/open/space/T
for(T in orange(1, src))
T.ChangeTurf(/turf/open/floor/plating/)
else
say("Something slams into the floor around [src] - luckily, it didn't get through!")
playsound(src.loc, 'sound/effects/bang.ogg', 50, 1)
playsound(loc, 'sound/effects/bang.ogg', 50, 1)
if(ORION_TRAIL_MALFUNCTION)
playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1)
src.visible_message("<span class='danger'>[src] malfunctions, randomizing in-game stats!</span>")
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1)
visible_message("<span class='danger'>[src] malfunctions, randomizing in-game stats!</span>")
var/oldfood = food
var/oldfuel = fuel
food = rand(10,80) / rand(1,2)
@@ -552,12 +553,12 @@
if(electronics)
sleep(10)
if(oldfuel > fuel && oldfood > food)
src.audible_message("<span class='danger'>[src] lets out a somehow reassuring chime.</span>")
audible_message("<span class='danger'>[src] lets out a somehow reassuring chime.</span>")
else if(oldfuel < fuel || oldfood < food)
src.audible_message("<span class='danger'>[src] lets out a somehow ominous chime.</span>")
audible_message("<span class='danger'>[src] lets out a somehow ominous chime.</span>")
food = oldfood
fuel = oldfuel
playsound(src.loc, 'sound/machines/chime.ogg', 50, 1)
playsound(loc, 'sound/machines/chime.ogg', 50, 1)
else if(href_list["newgame"]) //Reset everything
if(gameStatus == ORION_STATUS_START)
@@ -609,7 +610,7 @@
event = ORION_TRAIL_BLACKHOLE
event()
if(emagged) //has to be here because otherwise it doesn't work
playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1)
playsound(loc, 'sound/effects/supermatter.ogg', 100, 1)
say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!")
usr.Stun(10) //you can't run :^)
var/S = new /obj/singularity/academy(usr.loc)
@@ -743,8 +744,8 @@
last_spaceport_action = "Traded Food for Fuel"
event()
src.add_fingerprint(usr)
src.updateUsrDialog()
add_fingerprint(usr)
updateUsrDialog()
busy = 0
return
@@ -990,9 +991,9 @@
newcrew = specific
else
if(prob(50))
newcrew = pick(first_names_male)
newcrew = pick(GLOB.first_names_male)
else
newcrew = pick(first_names_female)
newcrew = pick(GLOB.first_names_female)
if(newcrew)
settlers += newcrew
alive++
@@ -1022,7 +1023,7 @@
gameStatus = ORION_STATUS_START
say("Congratulations, you made it to Orion!")
if(emagged)
new /obj/item/weapon/orion_ship(src.loc)
new /obj/item/weapon/orion_ship(loc)
message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
else
@@ -1059,7 +1060,7 @@
back = /obj/item/weapon/storage/backpack
has_id = 1
id_job = "Officer"
id_access_list = list(access_syndicate)
id_access_list = list(GLOB.access_syndicate)
/obj/item/weapon/orion_ship
name = "model settler ship"
@@ -1087,18 +1088,18 @@
to_chat(user, "<span class='warning'>You flip the switch on the underside of [src].</span>")
active = 1
src.visible_message("<span class='notice'>[src] softly beeps and whirs to life!</span>")
playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1)
visible_message("<span class='notice'>[src] softly beeps and whirs to life!</span>")
playsound(loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1)
say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.")
sleep(20)
src.visible_message("<span class='warning'>[src] begins to vibrate...</span>")
visible_message("<span class='warning'>[src] begins to vibrate...</span>")
say("Uh, Port? Having some issues with our reactor, could you check it out? Over.")
sleep(30)
say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-")
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1)
playsound(loc, 'sound/machines/buzz-sigh.ogg', 25, 1)
sleep(3.6)
src.visible_message("<span class='userdanger'>[src] explodes!</span>")
explosion(src.loc, 2,4,8, flame_range = 16)
visible_message("<span class='userdanger'>[src] explodes!</span>")
explosion(loc, 2,4,8, flame_range = 16)
qdel(src)
+2 -2
View File
@@ -21,7 +21,7 @@
return ..()
/obj/machinery/computer/atmos_alert/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_alert", name, 350, 300, master_ui, state)
@@ -58,7 +58,7 @@
/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency)
SSradio.remove_object(src, receive_frequency)
receive_frequency = new_frequency
radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA)
radio_connection = SSradio.add_object(src, receive_frequency, GLOB.RADIO_ATMOSIA)
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
@@ -37,13 +37,13 @@
var/gas_name = air_sample.gases[gas_id][GAS_META][META_GAS_NAME]
signal.data["gases"][gas_name] = air_sample.gases[gas_id][MOLES] / total_moles * 100
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
/obj/machinery/air_sensor/proc/set_frequency(new_frequency)
SSradio.remove_object(src, frequency)
frequency = new_frequency
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA)
/obj/machinery/air_sensor/Initialize()
..()
@@ -94,7 +94,7 @@
return ..()
/obj/machinery/computer/atmos_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_control", name, 400, 925, master_ui, state)
@@ -131,7 +131,7 @@
/obj/machinery/computer/atmos_control/proc/set_frequency(new_frequency)
SSradio.remove_object(src, frequency)
frequency = new_frequency
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA)
/////////////////////////////////////////////////////////////
// LARGE TANK CONTROL
@@ -177,7 +177,7 @@
U.broadcast_status()
/obj/machinery/computer/atmos_control/tank/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_control", name, 500, 305, master_ui, state)
@@ -211,12 +211,12 @@
signal.data += list("tag" = output_tag, "power_toggle" = TRUE)
. = TRUE
if("pressure")
var/target = input("New target pressure:", name, output_info["internal"]) as num|null
var/target = input("New target pressure:", name, output_info ? output_info["internal"] : 0) as num|null
if(!isnull(target) && !..())
target = Clamp(target, 0, 50 * ONE_ATMOSPHERE)
signal.data += list("tag" = output_tag, "set_internal_pressure" = target)
. = TRUE
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
/obj/machinery/computer/atmos_control/tank/receive_signal(datum/signal/signal)
if(!signal || signal.encryption)
+1 -1
View File
@@ -123,7 +123,7 @@
//returns the list of cameras accessible from this computer
/obj/machinery/computer/security/proc/get_available_cameras()
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
for (var/obj/machinery/camera/C in GLOB.cameranet.cameras)
if((z > ZLEVEL_SPACEMAX || C.z > ZLEVEL_SPACEMAX) && (C.z != z))//if on away mission, can only recieve feed from same z_level cameras
continue
L.Add(C)
+14 -11
View File
@@ -3,6 +3,7 @@
desc = "Used to access the various cameras on the station."
icon_screen = "cameras"
icon_keyboard = "security_key"
var/z_lock = null // Lock use to this zlevel
var/mob/camera/aiEye/remote/eyeobj
var/mob/living/current_user = null
var/list/networks = list("SS13")
@@ -49,14 +50,14 @@
if(!eyeobj.eye_initialized)
var/camera_location
for(var/obj/machinery/camera/C in cameranet.cameras)
if(!C.can_use())
for(var/obj/machinery/camera/C in GLOB.cameranet.cameras)
if(!C.can_use() || z_lock && C.z != z_lock)
continue
if(C.network&networks)
if(C.network & networks)
camera_location = get_turf(C)
break
if(camera_location)
eyeobj.eye_initialized = 1
eyeobj.eye_initialized = TRUE
give_eye_control(L)
eyeobj.setLoc(camera_location)
else
@@ -79,6 +80,7 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
eyeobj.name = "Camera Eye ([user.name])"
user.remote_control = eyeobj
user.reset_perspective(eyeobj)
eyeobj.setLoc(eyeobj.loc)
/mob/camera/aiEye/remote
name = "Inactive Camera Eye"
@@ -107,7 +109,7 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
return
T = get_turf(T)
loc = T
cameranet.visibility(src)
GLOB.cameranet.visibility(src)
if(visible_icon)
if(eye_user.client)
eye_user.client.images -= user_image
@@ -124,7 +126,7 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
for(var/i = 0; i < max(sprint, initial); i += 20)
var/turf/step = get_turf(get_step(src, direct))
if(step)
src.setLoc(step)
setLoc(step)
cooldown = world.timeofday + 5
if(acceleration)
@@ -152,7 +154,7 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
C.client.images -= chunk.obscured
C.remote_control = null
C.unset_machine()
src.Remove(C)
Remove(C)
playsound(remote_eye.origin, 'sound/machines/terminal_off.ogg', 25, 0)
/datum/action/innate/camera_jump
@@ -168,7 +170,9 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
var/list/L = list()
for (var/obj/machinery/camera/cam in cameranet.cameras)
for (var/obj/machinery/camera/cam in GLOB.cameranet.cameras)
if(origin.z_lock && cam.z != origin.z_lock)
continue
L.Add(cam)
camera_sort(L)
@@ -176,10 +180,9 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
var/list/T = list()
for (var/obj/machinery/camera/netcam in L)
var/list/tempnetwork = netcam.network&origin.networks
var/list/tempnetwork = netcam.network & origin.networks
if (tempnetwork.len)
T[text("[][]", netcam.c_tag, (netcam.can_use() ? null : " (Deactivated)"))] = netcam
T["[netcam.c_tag][netcam.can_use() ? null : " (Deactivated)"]"] = netcam
playsound(origin, 'sound/machines/terminal_prompt.ogg', 25, 0)
var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T
+24 -24
View File
@@ -2,14 +2,14 @@
//Keeps track of the time for the ID console. Having it as a global variable prevents people from dismantling/reassembling it to
//increase the slots of many jobs.
var/time_last_changed_position = 0
GLOBAL_VAR_INIT(time_last_changed_position, 0)
/obj/machinery/computer/card
name = "identification console"
desc = "You can use this to manage jobs and ID access."
icon_screen = "id"
icon_keyboard = "id_key"
req_one_access = list(access_heads, access_change_ids)
req_one_access = list(GLOB.access_heads, GLOB.access_change_ids)
circuit = /obj/item/weapon/circuitboard/computer/card
var/obj/item/weapon/card/id/scan = null
var/obj/item/weapon/card/id/modify = null
@@ -107,8 +107,8 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/proc/can_open_job(datum/job/job)
if(job)
if(!job_blacklisted(job.title))
if((job.total_positions <= player_list.len * (max_relative_positions / 100)))
var/delta = (world.time / 10) - time_last_changed_position
if((job.total_positions <= GLOB.player_list.len * (max_relative_positions / 100)))
var/delta = (world.time / 10) - GLOB.time_last_changed_position
if((change_position_cooldown < delta) || (opened_positions[job.title] < 0))
return 1
return -2
@@ -120,7 +120,7 @@ var/time_last_changed_position = 0
if(job)
if(!job_blacklisted(job.title))
if(job.total_positions > job.current_positions)
var/delta = (world.time / 10) - time_last_changed_position
var/delta = (world.time / 10) - GLOB.time_last_changed_position
if((change_position_cooldown < delta) || (opened_positions[job.title] > 0))
return 1
return -2
@@ -133,11 +133,11 @@ var/time_last_changed_position = 0
user.set_machine(src)
var/dat
if(!ticker)
if(!SSticker)
return
if (mode == 1) // accessing crew manifest
var/crew = ""
for(var/datum/data/record/t in sortRecord(data_core.general))
for(var/datum/data/record/t in sortRecord(GLOB.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><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>"
@@ -154,7 +154,7 @@ var/time_last_changed_position = 0
dat += "<table>"
dat += "<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b><td style='width:25%'><b>Prioritize</b></td></td></tr>"
var/ID
if(scan && (access_change_ids in scan.access) && !target_dept)
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
ID = 1
else
ID = 0
@@ -174,7 +174,7 @@ var/time_last_changed_position = 0
if(-1)
dat += "Denied"
if(-2)
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - time_last_changed_position), 1)
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1)
var/mins = round(time_to_wait / 60)
var/seconds = time_to_wait - (60*mins)
dat += "Cooldown ongoing: [mins]:[(seconds < 10) ? "0[seconds]" : "[seconds]"]"
@@ -190,7 +190,7 @@ var/time_last_changed_position = 0
if(-1)
dat += "Denied"
if(-2)
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - time_last_changed_position), 1)
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1)
var/mins = round(time_to_wait / 60)
var/seconds = time_to_wait - (60*mins)
dat += "Cooldown ongoing: [mins]:[(seconds < 10) ? "0[seconds]" : "[seconds]"]"
@@ -350,7 +350,7 @@ var/time_last_changed_position = 0
switch(href_list["choice"])
if ("modify")
if (modify)
data_core.manifest_modify(modify.registered_name, modify.assignment)
GLOB.data_core.manifest_modify(modify.registered_name, modify.assignment)
modify.update_label()
modify.loc = loc
modify.verb_pickup()
@@ -388,7 +388,7 @@ var/time_last_changed_position = 0
if (check_access(scan))
region_access = list()
head_subordinates = list()
if(access_change_ids in scan.access)
if(GLOB.access_change_ids in scan.access)
if(target_dept)
head_subordinates = get_all_jobs()
region_access |= target_dept
@@ -398,20 +398,20 @@ var/time_last_changed_position = 0
playsound(src, 'sound/machines/terminal_on.ogg', 50, 0)
else
if((access_hop in scan.access) && ((target_dept==1) || !target_dept))
if((GLOB.access_hop in scan.access) && ((target_dept==1) || !target_dept))
region_access |= 1
region_access |= 6
get_subordinates("Head of Personnel")
if((access_hos in scan.access) && ((target_dept==2) || !target_dept))
if((GLOB.access_hos in scan.access) && ((target_dept==2) || !target_dept))
region_access |= 2
get_subordinates("Head of Security")
if((access_cmo in scan.access) && ((target_dept==3) || !target_dept))
if((GLOB.access_cmo in scan.access) && ((target_dept==3) || !target_dept))
region_access |= 3
get_subordinates("Chief Medical Officer")
if((access_rd in scan.access) && ((target_dept==4) || !target_dept))
if((GLOB.access_rd in scan.access) && ((target_dept==4) || !target_dept))
region_access |= 4
get_subordinates("Research Director")
if((access_ce in scan.access) && ((target_dept==5) || !target_dept))
if((GLOB.access_ce in scan.access) && ((target_dept==5) || !target_dept))
region_access |= 5
get_subordinates("Chief Engineer")
if(region_access)
@@ -488,7 +488,7 @@ var/time_last_changed_position = 0
if("make_job_available")
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(scan && (access_change_ids in scan.access) && !target_dept)
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -496,14 +496,14 @@ var/time_last_changed_position = 0
if(can_open_job(j) != 1)
return 0
if(opened_positions[edit_job_target] >= 0)
time_last_changed_position = world.time / 10
GLOB.time_last_changed_position = world.time / 10
j.total_positions++
opened_positions[edit_job_target]++
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if("make_job_unavailable")
// MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS
if(scan && (access_change_ids in scan.access) && !target_dept)
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
var/edit_job_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(edit_job_target)
if(!j)
@@ -512,14 +512,14 @@ var/time_last_changed_position = 0
return 0
//Allow instant closing without cooldown if a position has been opened before
if(opened_positions[edit_job_target] <= 0)
time_last_changed_position = world.time / 10
GLOB.time_last_changed_position = world.time / 10
j.total_positions--
opened_positions[edit_job_target]--
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
if ("prioritize_job")
// TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY
if(scan && (access_change_ids in scan.access) && !target_dept)
if(scan && (GLOB.access_change_ids in scan.access) && !target_dept)
var/priority_target = href_list["job"]
var/datum/job/j = SSjob.GetJob(priority_target)
if(!j)
@@ -541,7 +541,7 @@ var/time_last_changed_position = 0
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 sortRecord(data_core.general))
for(var/datum/data/record/t in sortRecord(GLOB.data_core.general))
t1 += t.fields["name"] + " - " + t.fields["rank"] + "<br>"
P.info = t1
P.name = "paper- 'Crew Manifest'"
@@ -560,7 +560,7 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/centcom
name = "\improper Centcom identification console"
circuit = /obj/item/weapon/circuitboard/computer/card/centcom
req_access = list(access_cent_captain)
req_access = list(GLOB.access_cent_captain)
/obj/machinery/computer/card/minor
name = "department management console"
+1 -1
View File
@@ -5,7 +5,7 @@
icon_screen = "dna"
icon_keyboard = "med_key"
circuit = /obj/item/weapon/circuitboard/computer/cloning
req_access = list(access_heads) //Only used for record deletion right now.
req_access = list(GLOB.access_heads) //Only used for record deletion right now.
var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning.
var/list/pods //Linked cloning pods
var/temp = "Inactive"
+15 -17
View File
@@ -1,12 +1,10 @@
var/const/CALL_SHUTTLE_REASON_LENGTH = 12
// The communications computer
/obj/machinery/computer/communications
name = "communications console"
desc = "This can be used for various important functions. Still under developement."
icon_screen = "comm"
icon_keyboard = "tech_key"
req_access = list(access_heads)
req_access = list(GLOB.access_heads)
circuit = /obj/item/weapon/circuitboard/computer/communications
var/authenticated = 0
var/auth_id = "Unknown" //Who is currently logged in?
@@ -44,7 +42,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
return TRUE
/obj/machinery/computer/communications/New()
shuttle_caller_list += src
GLOB.shuttle_caller_list += src
..()
/obj/machinery/computer/communications/process()
@@ -103,19 +101,19 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
var/obj/item/device/pda/pda = I
I = pda.id
if (I && istype(I))
if(access_captain in I.access)
var/old_level = security_level
if(GLOB.access_captain in I.access)
var/old_level = GLOB.security_level
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel > SEC_LEVEL_BLUE) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
set_security_level(tmp_alertlevel)
if(security_level != old_level)
if(GLOB.security_level != old_level)
to_chat(usr, "<span class='notice'>Authorization confirmed. Modifying security level.</span>")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
//Only notify the admins if an actual change happened
log_game("[key_name(usr)] has changed the security level to [get_security_level()].")
message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].")
switch(security_level)
switch(GLOB.security_level)
if(SEC_LEVEL_GREEN)
feedback_inc("alert_comms_green",1)
if(SEC_LEVEL_BLUE)
@@ -168,7 +166,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
to_chat(usr, "You have not met the requirements for purchasing this shuttle.")
else
if(SSshuttle.points >= S.credit_cost)
var/obj/machinery/shuttle_manipulator/M = locate() in machines
var/obj/machinery/shuttle_manipulator/M = locate() in GLOB.machines
if(M)
SSshuttle.shuttle_purchased = TRUE
M.unload_preview()
@@ -359,16 +357,16 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
if("ai-securitylevel")
src.tmp_alertlevel = text2num( href_list["newalertlevel"] )
if(!tmp_alertlevel) tmp_alertlevel = 0
var/old_level = security_level
var/old_level = GLOB.security_level
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel > SEC_LEVEL_BLUE) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
set_security_level(tmp_alertlevel)
if(security_level != old_level)
if(GLOB.security_level != old_level)
//Only notify the admins if an actual change happened
log_game("[key_name(usr)] has changed the security level to [get_security_level()].")
message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].")
switch(security_level)
switch(GLOB.security_level)
if(SEC_LEVEL_GREEN)
feedback_inc("alert_comms_green",1)
if(SEC_LEVEL_BLUE)
@@ -509,7 +507,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
if(STATE_ALERT_LEVEL)
dat += "Current alert level: [get_security_level()]<BR>"
if(security_level == SEC_LEVEL_DELTA)
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
else
dat += "<A HREF='?src=\ref[src];operation=securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
@@ -520,7 +518,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
dat += "<A HREF='?src=\ref[src];operation=swipeidseclevel'>Swipe ID</A> to confirm change.<BR>"
if(STATE_TOGGLE_EMERGENCY)
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
if(emergency_access == 1)
if(GLOB.emergency_access == 1)
dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>"
dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=\ref[src];operation=disableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=viewmessage'>Cancel</A> \]"
else
@@ -640,14 +638,14 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
if(STATE_ALERT_LEVEL)
dat += "Current alert level: [get_security_level()]<BR>"
if(security_level == SEC_LEVEL_DELTA)
if(GLOB.security_level == SEC_LEVEL_DELTA)
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
else
dat += "<A HREF='?src=\ref[src];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
dat += "<A HREF='?src=\ref[src];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>"
if(STATE_TOGGLE_EMERGENCY)
if(emergency_access == 1)
if(GLOB.emergency_access == 1)
dat += "<b>Emergency Maintenance Access is currently <font color='red'>ENABLED</font></b>"
dat += "<BR>Restore maintenance access restrictions? <BR>\[ <A HREF='?src=\ref[src];operation=ai-disableemergency'>OK</A> | <A HREF='?src=\ref[src];operation=ai-viewmessage'>Cancel</A> \]"
else
@@ -688,7 +686,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
/obj/machinery/computer/communications/Destroy()
shuttle_caller_list -= src
GLOB.shuttle_caller_list -= src
SSshuttle.autoEvac()
return ..()
+8 -13
View File
@@ -7,27 +7,22 @@
idle_power_usage = 250
active_power_usage = 500
circuit = /obj/item/weapon/circuitboard/computer/crew
var/monitor = null //For VV debugging purposes
light_color = LIGHT_COLOR_BLUE
/obj/machinery/computer/crew/New()
monitor = crewmonitor
return ..()
/obj/machinery/computer/crew/attack_ai(mob/user)
if(stat & (BROKEN|NOPOWER))
return
crewmonitor.show(user)
GLOB.crewmonitor.show(user)
/obj/machinery/computer/crew/attack_hand(mob/user)
if(..())
return
if(stat & (BROKEN|NOPOWER))
return
crewmonitor.show(user)
GLOB.crewmonitor.show(user)
var/global/datum/crewmonitor/crewmonitor = new
GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new)
/datum/crewmonitor
var/list/jobs
@@ -151,7 +146,7 @@ var/global/datum/crewmonitor/crewmonitor = new
var/pos_y
var/life_status
for(var/mob/living/carbon/human/H in mob_list)
for(var/mob/living/carbon/human/H in GLOB.mob_list)
// Check if their z-level is correct and if they are wearing a uniform.
// Accept H.z==0 as well in case the mob is inside an object.
if ((H.z == 0 || H.z == z) && istype(H.w_uniform, /obj/item/clothing/under))
@@ -256,15 +251,15 @@ var/global/datum/crewmonitor/crewmonitor = new
. = ..()
if (old_z != src.z) crewmonitor.queueUpdate(old_z)
crewmonitor.queueUpdate(src.z)
if (old_z != src.z) GLOB.crewmonitor.queueUpdate(old_z)
GLOB.crewmonitor.queueUpdate(src.z)
else
return ..()
/datum/crewmonitor/proc/queueUpdate(z)
addtimer(CALLBACK(crewmonitor, .proc/update, z), 5, TIMER_UNIQUE)
addtimer(CALLBACK(src, .proc/update, z), 5, TIMER_UNIQUE)
/datum/crewmonitor/proc/sendResources(var/client/client)
send_asset(client, "crewmonitor.js")
send_asset(client, "crewmonitor.css")
SSminimap.send(client)
SSminimap.send(client)
+3 -3
View File
@@ -401,12 +401,12 @@
if(buffer_slot["SE"])
I = new /obj/item/weapon/dnainjector/timed(loc)
var/powers = 0
for(var/datum/mutation/human/HM in good_mutations + bad_mutations + not_good_mutations)
for(var/datum/mutation/human/HM in GLOB.good_mutations + GLOB.bad_mutations + GLOB.not_good_mutations)
if(HM.check_block_string(buffer_slot["SE"]))
I.add_mutations.Add(HM)
if(HM in good_mutations)
if(HM in GLOB.good_mutations)
powers += 1
if(HM in bad_mutations + not_good_mutations)
if(HM in GLOB.bad_mutations + GLOB.not_good_mutations)
powers -= 1 //To prevent just unlocking everything to get all powers to a syringe for max tech
else
I.remove_mutations.Add(HM)
@@ -4,7 +4,7 @@
desc = "Used to send criminals to the Labor Camp"
icon_screen = "explosive"
icon_keyboard = "security_key"
req_access = list(access_armory)
req_access = list(GLOB.access_armory)
circuit = /obj/item/weapon/circuitboard/computer/gulag_teleporter_console
var/default_goal = 200
var/obj/item/weapon/card/id/prisoner/id = null
@@ -38,7 +38,7 @@
return ..()
/obj/machinery/computer/gulag_teleporter_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "gulag_console", name, 455, 440, master_ui, state)
@@ -55,8 +55,8 @@
prisoner_list["name"] = prisoner.real_name
if(id)
can_teleport = TRUE
if(!isnull(data_core.general))
for(var/r in data_core.security)
if(!isnull(GLOB.data_core.general))
for(var/r in GLOB.data_core.security)
var/datum/data/record/R = r
if(R.fields["name"] == prisoner_list["name"])
temporary_record = R
@@ -135,7 +135,7 @@
/obj/machinery/computer/gulag_teleporter_computer/proc/findteleporter()
var/obj/machinery/gulag_teleporter/teleporterf = null
for(dir in cardinal)
for(dir in GLOB.cardinal)
teleporterf = locate(/obj/machinery/gulag_teleporter, get_step(src, dir))
if(teleporterf && teleporterf.is_operational())
return teleporterf
+26 -26
View File
@@ -5,7 +5,7 @@
desc = "This can be used to check medical records."
icon_screen = "medcomp"
icon_keyboard = "med_key"
req_one_access = list(access_medical, access_forensics_lockers)
req_one_access = list(GLOB.access_medical, GLOB.access_forensics_lockers)
circuit = /obj/item/weapon/circuitboard/computer/med_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
@@ -72,11 +72,11 @@
</tr>"}
if(!isnull(data_core.general))
for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order))
if(!isnull(GLOB.data_core.general))
for(var/datum/data/record/R in sortRecord(GLOB.data_core.general, sortBy, order))
var/blood_type = ""
var/b_dna = ""
for(var/datum/data/record/E in data_core.medical)
for(var/datum/data/record/E in GLOB.data_core.medical)
if((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]))
blood_type = E.fields["blood_type"]
b_dna = E.fields["b_dna"]
@@ -98,8 +98,8 @@
dat += text("<td>[]</td>", R.fields["p_stat"])
dat += text("<td>[]</td></tr>", R.fields["m_stat"])
dat += "</table><hr width='75%' />"
// if(data_core.general)
// for(var/datum/data/record/R in sortRecord(data_core.general))
// if(GLOB.data_core.general)
// for(var/datum/data/record/R in sortRecord(GLOB.data_core.general))
// dat += "<A href='?src=\ref[src];d_rec=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<BR>"
// //Foreach goto(132)
dat += text("<HR><A href='?src=\ref[];screen=1'>Back</A>", src)
@@ -108,7 +108,7 @@
if(4)
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
if(active1 in data_core.general)
if(active1 in GLOB.data_core.general)
if(istype(active1.fields["photo_front"], /obj/item/weapon/photo))
var/obj/item/weapon/photo/P1 = active1.fields["photo_front"]
user << browse_rsc(P1.img, "photo_front")
@@ -130,7 +130,7 @@
dat += "<tr><td>General Record Lost!</td></tr>"
dat += "<tr><td><br><b><font size='4'>Medical Data</font></b></td></tr>"
if(active2 in data_core.medical)
if(active2 in GLOB.data_core.medical)
dat += "<tr><td>Blood Type:</td><td><A href='?src=\ref[src];field=blood_type'>&nbsp;[active2.fields["blood_type"]]&nbsp;</A></td></tr>"
dat += "<tr><td>DNA:</td><td><A href='?src=\ref[src];field=b_dna'>&nbsp;[active2.fields["b_dna"]]&nbsp;</A></td></tr>"
dat += "<tr><td><br>Minor Disabilities:</td><td><br><A href='?src=\ref[src];field=mi_dis'>&nbsp;[active2.fields["mi_dis"]]&nbsp;</A></td></tr>"
@@ -172,7 +172,7 @@
dat += "<a href='?src=\ref[src];screen=1'>Back</a>"
dat += "<br><b>Medical Robots:</b>"
var/bdat = null
for(var/mob/living/simple_animal/bot/medbot/M in living_mob_list)
for(var/mob/living/simple_animal/bot/medbot/M in GLOB.living_mob_list)
if(M.z != src.z)
continue //only find medibots on the same z-level as the computer
var/turf/bl = get_turf(M)
@@ -201,9 +201,9 @@
. = ..()
if(.)
return .
if(!(active1 in data_core.general))
if(!(active1 in GLOB.data_core.general))
src.active1 = null
if(!(active2 in data_core.medical))
if(!(active2 in GLOB.data_core.medical))
src.active2 = null
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr) || IsAdminGhost(usr))
@@ -293,7 +293,7 @@
else if(href_list["del_all2"])
investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", "records")
data_core.medical.Cut()
GLOB.data_core.medical.Cut()
src.temp = "All records deleted."
else if(href_list["field"])
@@ -464,9 +464,9 @@
active2 = null
else if(href_list["d_rec"])
active1 = find_record("id", href_list["d_rec"], data_core.general)
active1 = find_record("id", href_list["d_rec"], GLOB.data_core.general)
if(active1)
active2 = find_record("id", href_list["d_rec"], data_core.medical)
active2 = find_record("id", href_list["d_rec"], GLOB.data_core.medical)
if(!active2)
active1 = null
screen = 4
@@ -488,12 +488,12 @@
R.fields["cdi"] = "None"
R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
R.fields["notes"] = "No notes."
data_core.medical += R
GLOB.data_core.medical += R
src.active2 = R
src.screen = 4
else if(href_list["add_c"])
if(!(active2 in data_core.medical))
if(!(active2 in GLOB.data_core.medical))
return
var/a2 = src.active2
var/t1 = stripped_multiline_input("Add Comment:", "Med. records", null, null)
@@ -502,7 +502,7 @@
var/counter = 1
while(src.active2.fields[text("com_[]", counter)])
counter++
src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1)
src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1)
else if(href_list["del_c"])
if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
@@ -515,7 +515,7 @@
src.active1 = null
src.active2 = null
t1 = lowertext(t1)
for(var/datum/data/record/R in data_core.medical)
for(var/datum/data/record/R in GLOB.data_core.medical)
if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"])))
src.active2 = R
else
@@ -523,7 +523,7 @@
if(!( src.active2 ))
src.temp = text("Could not locate record [].", sanitize(t1))
else
for(var/datum/data/record/E in data_core.general)
for(var/datum/data/record/E in GLOB.data_core.general)
if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"]))
src.active1 = E
else
@@ -533,28 +533,28 @@
else if(href_list["print_p"])
if(!( src.printing ))
src.printing = 1
data_core.medicalPrintCount++
GLOB.data_core.medicalPrintCount++
playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1)
sleep(30)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
P.info = "<CENTER><B>Medical Record - (MR-[data_core.medicalPrintCount])</B></CENTER><BR>"
if(active1 in data_core.general)
P.info = "<CENTER><B>Medical Record - (MR-[GLOB.data_core.medicalPrintCount])</B></CENTER><BR>"
if(active1 in GLOB.data_core.general)
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"])
if(config.mutant_races)
P.info += "\nSpecies: [active1.fields["species"]]<BR>"
P.info += text("\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"])
else
P.info += "<B>General Record Lost!</B><BR>"
if(active2 in data_core.medical)
if(active2 in GLOB.data_core.medical)
P.info += text("<BR>\n<CENTER><B>Medical Data</B></CENTER><BR>\nBlood Type: []<BR>\nDNA: []<BR>\n<BR>\nMinor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nMajor Disabilities: []<BR>\nDetails: []<BR>\n<BR>\nAllergies: []<BR>\nDetails: []<BR>\n<BR>\nCurrent Diseases: [] (per disease info placed in log/comment section)<BR>\nDetails: []<BR>\n<BR>\nImportant Notes:<BR>\n\t[]<BR>\n<BR>\n<CENTER><B>Comments/Log</B></CENTER><BR>", src.active2.fields["blood_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"])
var/counter = 1
while(src.active2.fields[text("com_[]", counter)])
P.info += text("[]<BR>", src.active2.fields[text("com_[]", counter)])
counter++
P.name = text("MR-[] '[]'", data_core.medicalPrintCount, src.active1.fields["name"])
P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, src.active1.fields["name"])
else
P.info += "<B>Medical Record Lost!</B><BR>"
P.name = text("MR-[] '[]'", data_core.medicalPrintCount, "Record Lost")
P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, "Record Lost")
P.info += "</TT>"
src.printing = null
@@ -564,7 +564,7 @@
/obj/machinery/computer/med_data/emp_act(severity)
if(!(stat & (BROKEN|NOPOWER)))
for(var/datum/data/record/R in data_core.medical)
for(var/datum/data/record/R in GLOB.data_core.medical)
if(prob(10/severity))
switch(rand(1,6))
if(1)
+9 -9
View File
@@ -60,8 +60,8 @@
..()
//Is the server isn't linked to a server, and there's a server available, default it to the first one in the list.
if(!linkedServer)
if(message_servers && message_servers.len > 0)
linkedServer = message_servers[1]
if(GLOB.message_servers && GLOB.message_servers.len > 0)
linkedServer = GLOB.message_servers[1]
/obj/machinery/computer/message_monitor/attack_hand(mob/living/user)
if(..())
@@ -269,11 +269,11 @@
if(auth) linkedServer.active = !linkedServer.active
//Find a server
if (href_list["find"])
if(message_servers && message_servers.len > 1)
src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in message_servers
if(GLOB.message_servers && GLOB.message_servers.len > 1)
src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in GLOB.message_servers
message = "<span class='alert'>NOTICE: Server selected.</span>"
else if(message_servers && message_servers.len > 0)
linkedServer = message_servers[1]
else if(GLOB.message_servers && GLOB.message_servers.len > 0)
linkedServer = GLOB.message_servers[1]
message = "<span class='notice'>NOTICE: Only Single Server Detected - Server selected.</span>"
else
message = noserver
@@ -376,7 +376,7 @@
if("Recepient")
//Get out list of viable PDAs
var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas()
if(PDAs && PDAs.len > 0)
if(GLOB.PDAs && GLOB.PDAs.len > 0)
customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs)
else
customrecepient = null
@@ -458,8 +458,8 @@
/obj/item/weapon/paper/monitorkey/New()
..()
spawn(10)
if(message_servers)
for(var/obj/machinery/message_server/server in message_servers)
if(GLOB.message_servers)
for(var/obj/machinery/message_server/server in GLOB.message_servers)
if(!isnull(server))
if(!isnull(server.decryptkey))
info = "<center><h2>Daily Key Reset</h2></center><br>The new message monitor key is '[server.decryptkey]'.<br>Please keep this a secret and away from the clown.<br>If necessary, change the password to a more secure one."
+1 -1
View File
@@ -130,7 +130,7 @@
name = "\improper ProComp Executive IIc"
desc = "The Syndicate operate on a tight budget. Operates external airlocks."
title = "External Airlock Controls"
req_access = list(access_syndicate)
req_access = list(GLOB.access_syndicate)
/obj/machinery/computer/pod/old/syndicate/attack_hand(mob/user)
if(!allowed(user))
+9 -8
View File
@@ -3,7 +3,7 @@
desc = "Used to manage tracking implants placed inside criminals."
icon_screen = "explosive"
icon_keyboard = "security_key"
req_access = list(access_brig)
req_access = list(GLOB.access_brig)
var/id = 0
var/temp = null
var/status = 0
@@ -34,7 +34,7 @@
dat += "<H3>Prisoner Implant Management</H3>"
dat += "<HR>Chemical Implants<BR>"
var/turf/Tr = null
for(var/obj/item/weapon/implant/chem/C in tracked_chem_implants)
for(var/obj/item/weapon/implant/chem/C in GLOB.tracked_chem_implants)
Tr = get_turf(C)
if((Tr) && (Tr.z != src.z))
continue//Out of range
@@ -47,7 +47,7 @@
dat += "<A href='?src=\ref[src];inject10=\ref[C]'>(<font class='bad'>(10)</font>)</A><BR>"
dat += "********************************<BR>"
dat += "<HR>Tracking Implants<BR>"
for(var/obj/item/weapon/implant/tracking/T in tracked_implants)
for(var/obj/item/weapon/implant/tracking/T in GLOB.tracked_implants)
if(!isliving(T.imp_in))
continue
Tr = get_turf(T)
@@ -111,16 +111,16 @@
num = min(num,1000) //Cap the quota to the equivilent of 10 minutes.
inserted_id.goal = num
else if(href_list["inject1"])
var/obj/item/weapon/implant/I = locate(href_list["inject1"]) in tracked_chem_implants
var/obj/item/weapon/implant/I = locate(href_list["inject1"]) in GLOB.tracked_chem_implants
if(I && istype(I))
I.activate(1)
else if(href_list["inject5"])
var/obj/item/weapon/implant/I = locate(href_list["inject5"]) in tracked_chem_implants
var/obj/item/weapon/implant/I = locate(href_list["inject5"]) in GLOB.tracked_chem_implants
if(I && istype(I))
I.activate(5)
else if(href_list["inject10"])
var/obj/item/weapon/implant/I = locate(href_list["inject10"]) in tracked_chem_implants
var/obj/item/weapon/implant/I = locate(href_list["inject10"]) in GLOB.tracked_chem_implants
if(I && istype(I))
I.activate(10)
@@ -132,8 +132,9 @@
else if(href_list["warn"])
var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN)
if(!warning) return
var/obj/item/weapon/implant/I = locate(href_list["warn"]) in tracked_chem_implants
if(!warning)
return
var/obj/item/weapon/implant/I = locate(href_list["warn"]) in GLOB.tracked_implants
if(I && istype(I) && I.imp_in)
var/mob/living/R = I.imp_in
to_chat(R, "<span class='italics'>You hear a voice in your head saying: '[warning]'</span>")
+7 -7
View File
@@ -6,7 +6,7 @@
desc = "Used to remotely lockdown or detonate linked Cyborgs."
icon_screen = "robot"
icon_keyboard = "rd_key"
req_access = list(access_robotics)
req_access = list(GLOB.access_robotics)
circuit = /obj/item/weapon/circuitboard/computer/robotics
var/temp = null
@@ -37,7 +37,7 @@
user.set_machine(src)
var/dat
var/robots = 0
for(var/mob/living/silicon/robot/R in mob_list)
for(var/mob/living/silicon/robot/R in GLOB.mob_list)
if(!can_control(user, R))
continue
robots++
@@ -75,7 +75,7 @@
dat += "<BR>"
var/drones = 0
for(var/mob/living/simple_animal/drone/D in mob_list)
for(var/mob/living/simple_animal/drone/D in GLOB.mob_list)
if(D.hacked)
continue
drones++
@@ -103,7 +103,7 @@
else if (href_list["killbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in silicon_mobs
var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in GLOB.silicon_mobs
if(can_control(usr, R))
var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm" && can_control(usr, R) && !..())
@@ -123,7 +123,7 @@
else if (href_list["stopbot"])
if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in silicon_mobs
var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs
if(can_control(usr, R))
var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm" && can_control(usr, R) && !..())
@@ -139,7 +139,7 @@
else if (href_list["magbot"])
if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr))
var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in silicon_mobs
var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in GLOB.silicon_mobs
if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R))
log_game("[key_name(usr)] emagged [R.name] using robotic console!")
message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!")
@@ -149,7 +149,7 @@
else if(href_list["convert"])
if(issilicon(usr) && is_special_character(usr))
var/mob/living/silicon/robot/R = locate(href_list["convert"]) in silicon_mobs
var/mob/living/silicon/robot/R = locate(href_list["convert"]) in GLOB.silicon_mobs
if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr)
log_game("[key_name(usr)] converted [R.name] using robotic console!")
message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!")
+38 -38
View File
@@ -1,9 +1,9 @@
/obj/machinery/computer/secure_data//TODO:SANITY
name = "security records console"
desc = "Used to view and edit personnel's security records"
desc = "Used to view and edit personnel's security records."
icon_screen = "security"
icon_keyboard = "security_key"
req_one_access = list(access_security, access_forensics_lockers)
req_one_access = list(GLOB.access_security, GLOB.access_forensics_lockers)
circuit = /obj/item/weapon/circuitboard/computer/secure_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
@@ -122,10 +122,10 @@
<th><A href='?src=\ref[src];choice=Sorting;sort=fingerprint'>Fingerprints</A></th>
<th>Criminal Status</th>
</tr>"}
if(!isnull(data_core.general))
for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order))
if(!isnull(GLOB.data_core.general))
for(var/datum/data/record/R in sortRecord(GLOB.data_core.general, sortBy, order))
var/crimstat = ""
for(var/datum/data/record/E in data_core.security)
for(var/datum/data/record/E in GLOB.data_core.security)
if((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"]))
crimstat = E.fields["criminal"]
var/background
@@ -163,7 +163,7 @@
dat += "<BR><A href='?src=\ref[src];choice=Delete All Records'>Delete All Records</A><BR><BR><A href='?src=\ref[src];choice=Return'>Back</A>"
if(3)
dat += "<font size='4'><b>Security Record</b></font><br>"
if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
if(istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))
if(istype(active1.fields["photo_front"], /obj/item/weapon/photo))
var/obj/item/weapon/photo/P1 = active1.fields["photo_front"]
user << browse_rsc(P1.img, "photo_front")
@@ -189,7 +189,7 @@
</td></tr></table></td></tr></table>"}
else
dat += "<br>General Record Lost!<br>"
if((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2)))
dat += "<font size='4'><b>Security Data</b></font>"
dat += "<br>Criminal Status: <A href='?src=\ref[src];choice=Edit Field;field=criminal'>[active2.fields["criminal"]]</A>"
dat += "<br><br>Minor Crimes: <A href='?src=\ref[src];choice=Edit Field;field=mi_crim_add'>Add New</A>"
@@ -262,9 +262,9 @@ What a mess.*/
. = ..()
if(.)
return .
if(!( data_core.general.Find(active1) ))
if(!( GLOB.data_core.general.Find(active1) ))
active1 = null
if(!( data_core.security.Find(active2) ))
if(!( GLOB.data_core.security.Find(active2) ))
active2 = null
if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr) || IsAdminGhost(usr))
usr.set_machine(src)
@@ -341,10 +341,10 @@ What a mess.*/
if("Browse Record")
var/datum/data/record/R = locate(href_list["d_rec"])
var/S = locate(href_list["d_rec"])
if(!( data_core.general.Find(R) ))
if(!( GLOB.data_core.general.Find(R) ))
temp = "Record Not Found!"
else
for(var/datum/data/record/E in data_core.security)
for(var/datum/data/record/E in GLOB.data_core.security)
if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
S = E
active1 = R
@@ -355,19 +355,19 @@ What a mess.*/
if("Print Record")
if(!( printing ))
printing = 1
data_core.securityPrintCount++
GLOB.data_core.securityPrintCount++
playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1)
sleep(30)
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
P.info = "<CENTER><B>Security Record - (SR-[data_core.securityPrintCount])</B></CENTER><BR>"
if((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
P.info = "<CENTER><B>Security Record - (SR-[GLOB.data_core.securityPrintCount])</B></CENTER><BR>"
if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)))
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"])
if(config.mutant_races)
P.info += "\nSpecies: [active1.fields["species"]]<BR>"
P.info += text("\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"])
else
P.info += "<B>General Record Lost!</B><BR>"
if((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
if((istype(active2, /datum/data/record) && GLOB.data_core.security.Find(active2)))
P.info += text("<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: []", active2.fields["criminal"])
P.info += "<BR>\n<BR>\nMinor Crimes:<BR>\n"
@@ -408,10 +408,10 @@ What a mess.*/
while(active2.fields[text("com_[]", counter)])
P.info += text("[]<BR>", active2.fields[text("com_[]", counter)])
counter++
P.name = text("SR-[] '[]'", data_core.securityPrintCount, active1.fields["name"])
P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, active1.fields["name"])
else
P.info += "<B>Security Record Lost!</B><BR>"
P.name = text("SR-[] '[]'", data_core.securityPrintCount, "Record Lost")
P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, "Record Lost")
P.info += "</TT>"
printing = null
if("Print Poster")
@@ -439,7 +439,7 @@ What a mess.*/
playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1)
printing = 1
sleep(30)
if((istype(active1, /datum/data/record) && data_core.general.Find(active1)))//make sure the record still exists.
if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1)))//make sure the record still exists.
var/obj/item/weapon/photo/photo = active1.fields["photo_front"]
new /obj/item/weapon/poster/wanted(src.loc, photo.img, wanted_name, info)
printing = 0
@@ -453,9 +453,9 @@ What a mess.*/
if("Purge All Records")
investigate_log("[usr.name] ([usr.key]) has purged all the security records.", "records")
for(var/datum/data/record/R in data_core.security)
for(var/datum/data/record/R in GLOB.data_core.security)
qdel(R)
data_core.security.Cut()
GLOB.data_core.security.Cut()
temp = "All Security records deleted."
if("Add Entry")
@@ -468,7 +468,7 @@ What a mess.*/
var/counter = 1
while(active2.fields[text("com_[]", counter)])
counter++
active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1)
active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1)
if("Delete Record (ALL)")
if(active1)
@@ -496,7 +496,7 @@ What a mess.*/
R.fields["mi_crim"] = list()
R.fields["ma_crim"] = list()
R.fields["notes"] = "No notes."
data_core.security += R
GLOB.data_core.security += R
active2 = R
screen = 3
@@ -515,7 +515,7 @@ What a mess.*/
G.fields["fingerprint"] = "?????"
G.fields["p_stat"] = "Active"
G.fields["m_stat"] = "Stable"
data_core.general += G
GLOB.data_core.general += G
active1 = G
//Security Record
@@ -527,7 +527,7 @@ What a mess.*/
R.fields["mi_crim"] = list()
R.fields["ma_crim"] = list()
R.fields["notes"] = "No notes."
data_core.security += R
GLOB.data_core.security += R
active2 = R
//Medical Record
@@ -545,7 +545,7 @@ What a mess.*/
M.fields["cdi"] = "None"
M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
M.fields["notes"] = "No notes."
data_core.medical += M
GLOB.data_core.medical += M
@@ -593,7 +593,7 @@ What a mess.*/
active1.fields["age"] = t1
if("species")
if(istype(active1, /datum/data/record))
var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species
var/t1 = input("Select a species", "Species Selection") as null|anything in GLOB.roundstart_species
if(!canUseSecurityRecordsConsole(usr, t1, a1))
return
active1.fields["species"] = t1
@@ -623,28 +623,28 @@ What a mess.*/
var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null)
if(!canUseSecurityRecordsConsole(usr, t1, null, a2))
return
var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
data_core.addMinorCrime(active1.fields["id"], crime)
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
GLOB.data_core.addMinorCrime(active1.fields["id"], crime)
if("mi_crim_delete")
if(istype(active1, /datum/data/record))
if(href_list["cdataid"])
if(!canUseSecurityRecordsConsole(usr, "delete", null, a2))
return
data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"])
GLOB.data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"])
if("ma_crim_add")
if(istype(active1, /datum/data/record))
var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null)
var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null)
if(!canUseSecurityRecordsConsole(usr, t1, null, a2))
return
var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
data_core.addMajorCrime(active1.fields["id"], crime)
var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text())
GLOB.data_core.addMajorCrime(active1.fields["id"], crime)
if("ma_crim_delete")
if(istype(active1, /datum/data/record))
if(href_list["cdataid"])
if(!canUseSecurityRecordsConsole(usr, "delete", null, a2))
return
data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"])
GLOB.data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"])
if("notes")
if(istype(active2, /datum/data/record))
var/t1 = stripped_input(usr, "Please summarize notes:", "Secure. records", active2.fields["notes"], null)
@@ -697,7 +697,7 @@ What a mess.*/
if("released")
active2.fields["criminal"] = "Discharged"
investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", "records")
for(var/mob/living/carbon/human/H in mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system
for(var/mob/living/carbon/human/H in GLOB.mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system
H.sec_hud_set_security_status()
if("Delete Record (Security) Execute")
investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records")
@@ -708,7 +708,7 @@ What a mess.*/
if("Delete Record (ALL) Execute")
if(active1)
investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records")
for(var/datum/data/record/R in data_core.medical)
for(var/datum/data/record/R in GLOB.data_core.medical)
if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"]))
qdel(R)
break
@@ -742,14 +742,14 @@ What a mess.*/
..(severity)
return
for(var/datum/data/record/R in data_core.security)
for(var/datum/data/record/R in GLOB.data_core.security)
if(prob(10/severity))
switch(rand(1,8))
if(1)
if(prob(10))
R.fields["name"] = "[pick(lizard_name(MALE),lizard_name(FEMALE))]"
else
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]"
if(2)
R.fields["sex"] = pick("Male", "Female")
if(3)
@@ -761,9 +761,9 @@ What a mess.*/
if(6)
R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable")
if(7)
R.fields["species"] = pick(roundstart_species)
R.fields["species"] = pick(GLOB.roundstart_species)
if(8)
var/datum/data/record/G = pick(data_core.general)
var/datum/data/record/G = pick(GLOB.data_core.general)
R.fields["photo_front"] = G.fields["photo_front"]
R.fields["photo_side"] = G.fields["photo_side"]
continue
@@ -9,7 +9,7 @@
light_color = LIGHT_COLOR_CYAN
/obj/machinery/computer/station_alert/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "station_alert", name, 300, 500, master_ui, state)
@@ -1,6 +1,6 @@
#define NUKESCALINGMODIFIER 1
var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","Foxtrot","Zero", "Niner")
GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","Echo","Foxtrot","Zero", "Niner"))
/obj/machinery/computer/telecrystals
name = "\improper Telecrystal assignment station"
@@ -21,16 +21,13 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
var/obj/item/uplinkholder = null
var/obj/machinery/computer/telecrystals/boss/linkedboss = null
/obj/machinery/computer/telecrystals/uplinker/New()
/obj/machinery/computer/telecrystals/uplinker/Initialize()
..()
var/ID
if(possible_uplinker_IDs.len)
ID = pick(possible_uplinker_IDs)
possible_uplinker_IDs -= ID
name = "[name] [ID]"
else
name = "[name] [rand(1,999)]"
var/ID = pick_n_take(GLOB.possible_uplinker_IDs)
if(!ID)
ID = rand(1,999)
name = "[name] [ID]"
/obj/machinery/computer/telecrystals/uplinker/attackby(obj/item/O, mob/user, params)
if(uplinkholder)
@@ -147,8 +144,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
/obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population.
..()
var/danger
danger = joined_player_list.len - ticker.mode.syndicates.len
var/danger = GLOB.joined_player_list.len - SSticker.mode.syndicates.len
danger = Ceiling(danger, 10)
scaleTC(danger)
+58 -26
View File
@@ -37,8 +37,10 @@
#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection
#define AIRLOCK_DAMAGE_DEFLECTION_R 30 // Reinforced airlock damage deflection
#define NOT_ELECTRIFIED 0
#define ELECTRIFIED_PERMANENT -1
var/list/airlock_overlays = list()
/obj/machinery/door/airlock
name = "airlock"
@@ -90,13 +92,16 @@ var/list/airlock_overlays = list()
hud_possible = list(DIAG_AIRLOCK_HUD)
var/air_tight = FALSE //TRUE means density will be set as soon as the door begins to close
var/prying_so_hard = FALSE
var/static/list/airlock_overlays = list()
/obj/machinery/door/airlock/Initialize()
..()
wires = new /datum/wires/airlock(src)
if(src.closeOtherId != null)
spawn (5)
for (var/obj/machinery/door/airlock/A in airlocks)
for (var/obj/machinery/door/airlock/A in GLOB.airlocks)
if(A.closeOtherId == src.closeOtherId && A != src)
src.closeOther = A
break
@@ -111,7 +116,7 @@ var/list/airlock_overlays = list()
if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_METAL)
damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R
prepare_huds()
var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC]
var/datum/atom_hud/data/diagnostic/diag_hud = GLOB.huds[DATA_HUD_DIAGNOSTIC]
diag_hud.add_to_hud(src)
diag_hud_set_electrified()
@@ -208,7 +213,7 @@ var/list/airlock_overlays = list()
cyclelinkedairlock.cyclelinkedairlock = null
cyclelinkedairlock = null
if(id_tag)
for(var/obj/machinery/doorButtons/D in machines)
for(var/obj/machinery/doorButtons/D in GLOB.machines)
D.removeMe(src)
return ..()
@@ -264,7 +269,7 @@ var/list/airlock_overlays = list()
user.Weaken(3)
/obj/machinery/door/airlock/proc/isElectrified()
if(src.secondsElectrified != 0)
if(src.secondsElectrified != NOT_ELECTRIFIED)
return 1
return 0
@@ -487,6 +492,9 @@ var/list/airlock_overlays = list()
add_overlay(damag_overlay)
/proc/get_airlock_overlay(icon_state, icon_file)
var/obj/machinery/door/airlock/A
pass(A) //suppress unused warning
var/list/airlock_overlays = A.airlock_overlays
var/iconkey = "[icon_state][icon_file]"
if(airlock_overlays[iconkey])
return airlock_overlays[iconkey]
@@ -617,10 +625,10 @@ var/list/airlock_overlays = list()
if(wires.is_cut(WIRE_SHOCK))
t1 += text("Electrification wire is cut.<br>\n")
if(src.secondsElectrified==-1)
if(secondsElectrified==ELECTRIFIED_PERMANENT)
t1 += text("Door is electrified indefinitely. <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", src)
else if(src.secondsElectrified>0)
t1 += text("Door is electrified temporarily ([] seconds). <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", src.secondsElectrified, src)
else if(secondsElectrified>NOT_ELECTRIFIED)
t1 += text("Door is electrified temporarily ([] seconds). <A href='?src=\ref[];aiDisable=5'>Un-electrify it?</a><br>\n", secondsElectrified, src)
else
t1 += text("Door is not electrified. <A href='?src=\ref[];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=\ref[];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n", src, src)
@@ -792,9 +800,7 @@ var/list/airlock_overlays = list()
//un-electrify door
if(wires.is_cut(WIRE_SHOCK))
to_chat(usr, text("Can't un-electrify the airlock - The electrification wire is cut."))
else if(secondsElectrified==-1)
set_electrified(0)
else if(secondsElectrified>0)
else if(isElectrified())
set_electrified(0)
if(8)
@@ -871,33 +877,33 @@ var/list/airlock_overlays = list()
//electrify door for 30 seconds
if(wires.is_cut(WIRE_SHOCK))
to_chat(usr, text("The electrification wire has been cut.<br>\n"))
else if(src.secondsElectrified==-1)
else if(secondsElectrified==ELECTRIFIED_PERMANENT)
to_chat(usr, text("The door is already indefinitely electrified. You'd have to un-electrify it before you can re-electrify it with a non-forever duration.<br>\n"))
else if(src.secondsElectrified!=0)
else if(isElectrified())
to_chat(usr, text("The door is already electrified. You can't re-electrify it while it's already electrified.<br>\n"))
else
shockedby += "\[[time_stamp()]\][usr](ckey:[usr.ckey])"
add_logs(usr, src, "electrified")
set_electrified(30)
spawn(10)
while (src.secondsElectrified>0)
src.secondsElectrified-=1
if(src.secondsElectrified<0)
set_electrified(0)
src.updateUsrDialog()
while (secondsElectrified > 0)
secondsElectrified--
if(secondsElectrified <= 0)
set_electrified(NOT_ELECTRIFIED)
updateUsrDialog()
sleep(10)
if(6)
//electrify door indefinitely
if(wires.is_cut(WIRE_SHOCK))
to_chat(usr, text("The electrification wire has been cut.<br>\n"))
else if(src.secondsElectrified==-1)
else if(secondsElectrified==ELECTRIFIED_PERMANENT)
to_chat(usr, text("The door is already indefinitely electrified.<br>\n"))
else if(src.secondsElectrified!=0)
else if(isElectrified())
to_chat(usr, text("The door is already electrified. You can't re-electrify it while it's already electrified.<br>\n"))
else
shockedby += text("\[[time_stamp()]\][usr](ckey:[usr.ckey])")
add_logs(usr, src, "electrified")
set_electrified(-1)
set_electrified(ELECTRIFIED_PERMANENT)
if (8) // Not in order >.>
// Safeties! Maybe we do need some stinking safeties!
@@ -1221,10 +1227,13 @@ var/list/airlock_overlays = list()
return
var/time_to_open = 5
if(hasPower())
if(hasPower() && !prying_so_hard)
time_to_open = 50
playsound(src, 'sound/machines/airlock_alien_prying.ogg',100,1) //is it aliens or just the CE being a dick?
if(do_after(user, time_to_open,target = src))
prying_so_hard = TRUE
var/result = do_after(user, time_to_open,target = src)
prying_so_hard = FALSE
if(result)
open(2)
if(density && !open(2))
to_chat(user, "<span class='warning'>Despite your attempts, the [src] refuses to open.</span>")
@@ -1274,7 +1283,7 @@ var/list/airlock_overlays = list()
if(!density)
return 1
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
return 0
operating = 1
update_icon(AIRLOCK_OPENING, 1)
@@ -1465,7 +1474,7 @@ var/list/airlock_overlays = list()
safe = FALSE //DOOR CRUSH
close()
bolt() //Bolt it!
set_electrified(-1) //Shock it!
set_electrified(ELECTRIFIED_PERMANENT) //Shock it!
if(origin)
shockedby += "\[[time_stamp()]\][origin](ckey:[origin.ckey])"
@@ -1474,7 +1483,7 @@ var/list/airlock_overlays = list()
// Must be powered and have working AI wire.
if(canAIControl(src) && !stat)
unbolt()
set_electrified(0)
set_electrified(NOT_ELECTRIFIED)
open()
safe = TRUE
@@ -1546,3 +1555,26 @@ var/list/airlock_overlays = list()
qdel(src)
return TRUE
return FALSE
#undef AIRLOCK_CLOSED
#undef AIRLOCK_CLOSING
#undef AIRLOCK_OPEN
#undef AIRLOCK_OPENING
#undef AIRLOCK_DENY
#undef AIRLOCK_EMAG
#undef AIRLOCK_SECURITY_NONE
#undef AIRLOCK_SECURITY_METAL
#undef AIRLOCK_SECURITY_PLASTEEL_I_S
#undef AIRLOCK_SECURITY_PLASTEEL_I
#undef AIRLOCK_SECURITY_PLASTEEL_O_S
#undef AIRLOCK_SECURITY_PLASTEEL_O
#undef AIRLOCK_SECURITY_PLASTEEL
#undef AIRLOCK_INTEGRITY_N
#undef AIRLOCK_INTEGRITY_MULTIPLIER
#undef AIRLOCK_DAMAGE_DEFLECTION_N
#undef AIRLOCK_DAMAGE_DEFLECTION_R
#undef NOT_ELECTRIFIED
#undef ELECTRIFIED_PERMANENT
@@ -1,12 +1,12 @@
/obj/item/weapon/electronics/airlock
name = "airlock electronics"
req_access = list(access_maint_tunnels)
req_access = list(GLOB.access_maint_tunnels)
var/list/accesses = list()
var/one_access = 0
/obj/item/weapon/electronics/airlock/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = hands_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "airlock_electronics", name, 975, 420, master_ui, state)
+1 -1
View File
@@ -24,7 +24,7 @@
/obj/machinery/door/airlock/alarmlock/Initialize()
..()
SSradio.remove_object(src, air_frequency)
air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM)
air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM)
open()
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
+4 -4
View File
@@ -23,7 +23,7 @@
icon = 'icons/obj/status_display.dmi'
icon_state = "frame"
desc = "A remote control for a door."
req_access = list(access_security)
req_access = list(GLOB.access_security)
anchored = 1
density = 0
var/id = null // id of linked machinery/lockers
@@ -112,8 +112,8 @@
return 0
if(!forced)
Radio.set_frequency(SEC_FREQ)
Radio.talk_into(src, "Timer has expired. Releasing prisoner.", SEC_FREQ)
Radio.set_frequency(GLOB.SEC_FREQ)
Radio.talk_into(src, "Timer has expired. Releasing prisoner.", GLOB.SEC_FREQ, get_default_language())
timing = FALSE
activation_time = null
@@ -147,7 +147,7 @@
timer_duration = new_time
/obj/machinery/door_timer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "brig_timer", name, 300, 200, master_ui, state)
+5 -5
View File
@@ -40,7 +40,7 @@
layer = OPEN_DOOR_LAYER //Under all objects if opened. 2.7 due to tables being at 2.6
update_freelook_sight()
air_update_turf(1)
airlocks += src
GLOB.airlocks += src
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(2, 1, src)
@@ -50,7 +50,7 @@
density = 0
air_update_turf(1)
update_freelook_sight()
airlocks -= src
GLOB.airlocks -= src
if(spark_system)
qdel(spark_system)
spark_system = null
@@ -229,7 +229,7 @@
return 1
if(operating)
return
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
return 0
operating = 1
do_animate("opening")
@@ -314,8 +314,8 @@
return !(stat & NOPOWER)
/obj/machinery/door/proc/update_freelook_sight()
if(!glass && cameranet)
cameranet.updateVisibility(src, 0)
if(!glass && GLOB.cameranet)
GLOB.cameranet.updateVisibility(src, 0)
/obj/machinery/door/BlockSuperconductivity() // All non-glass airlocks block heat, this is intended.
if(opacity || heat_proof)
+3 -6
View File
@@ -4,9 +4,6 @@
#define CONSTRUCTION_GUTTED 3 //Wires are removed, circuit ready to remove
#define CONSTRUCTION_NOCIRCUIT 4 //Circuit board removed, can safely weld apart
/var/const/OPEN = 1
/var/const/CLOSED = 2
/obj/machinery/door/firedoor
name = "firelock"
desc = "Apply crowbar."
@@ -183,10 +180,10 @@
if(operating || stat & NOPOWER || !nextstate)
return
switch(nextstate)
if(OPEN)
if(FIREDOOR_OPEN)
nextstate = null
open()
if(CLOSED)
if(FIREDOOR_CLOSED)
nextstate = null
close()
@@ -422,4 +419,4 @@
/obj/structure/firelock_frame/heavy
name = "heavy firelock frame"
reinforced = 1
reinforced = 1
+3 -3
View File
@@ -70,7 +70,7 @@
else
do_animate("deny")
return
if (!( ticker ))
if (!( SSticker ))
return
var/mob/M = AM
if(M.restrained() || ((isdrone(M) || iscyborg(M)) && M.stat))
@@ -129,7 +129,7 @@
/obj/machinery/door/window/open(forced=0)
if (src.operating == 1) //doors can still open when emag-disabled
return 0
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
return 0
if(!forced)
if(!hasPower())
@@ -344,7 +344,7 @@
open()
/obj/machinery/door/window/clockwork/ratvar_act()
if(ratvar_awakens)
if(GLOB.ratvar_awakens)
obj_integrity = max_integrity
/obj/machinery/door/window/clockwork/hasPower()
+3 -3
View File
@@ -1,4 +1,4 @@
var/list/doppler_arrays = list()
GLOBAL_LIST_EMPTY(doppler_arrays)
/obj/machinery/doppler_array
name = "tachyon-doppler array"
@@ -13,10 +13,10 @@ var/list/doppler_arrays = list()
/obj/machinery/doppler_array/New()
..()
doppler_arrays += src
GLOB.doppler_arrays += src
/obj/machinery/doppler_array/Destroy()
doppler_arrays -= src
GLOB.doppler_arrays -= src
return ..()
/obj/machinery/doppler_array/process()
@@ -47,11 +47,11 @@
var/busy
/obj/machinery/doorButtons/access_button/findObjsByTag()
for(var/obj/machinery/doorButtons/airlock_controller/A in machines)
for(var/obj/machinery/doorButtons/airlock_controller/A in GLOB.machines)
if(A.idSelf == idSelf)
controller = A
break
for(var/obj/machinery/door/airlock/I in machines)
for(var/obj/machinery/door/airlock/I in GLOB.machines)
if(I.id_tag == idDoor)
door = I
break
@@ -120,7 +120,7 @@
exteriorAirlock = null
/obj/machinery/doorButtons/airlock_controller/Destroy()
for(var/obj/machinery/doorButtons/access_button/A in machines)
for(var/obj/machinery/doorButtons/access_button/A in GLOB.machines)
if(A.controller == src)
A.controller = null
return ..()
@@ -241,7 +241,7 @@
update_icon()
/obj/machinery/doorButtons/airlock_controller/findObjsByTag()
for(var/obj/machinery/door/airlock/A in machines)
for(var/obj/machinery/door/airlock/A in GLOB.machines)
if(A.id_tag == idInterior)
interiorAirlock = A
else if(A.id_tag == idExterior)
+2 -2
View File
@@ -63,7 +63,7 @@
return
if(src.z == ZLEVEL_STATION)
add_overlay("overlay_[security_level]")
add_overlay("overlay_[GLOB.security_level]")
else
//var/green = SEC_LEVEL_GREEN
add_overlay("overlay_[SEC_LEVEL_GREEN]")
@@ -111,7 +111,7 @@
addtimer(CALLBACK(src, .proc/reset), time)
/obj/machinery/firealarm/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "firealarm", name, 300, 150, master_ui, state)
+2 -2
View File
@@ -3,7 +3,7 @@
desc = "Used to reclaim your items after you finish your sentence at the labor camp"
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_taken"
req_access = list(access_security) //reqaccess to access all stored items
req_access = list(GLOB.access_security) //reqaccess to access all stored items
density = 0
anchored = 1
use_power = 1
@@ -43,7 +43,7 @@
return ..()
/obj/machinery/gulag_item_reclaimer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "gulag_item_reclaimer", name, 455, 440, master_ui, state)
+5 -8
View File
@@ -29,9 +29,7 @@ Possible to do for anyone motivated enough:
#define RANGE_BASED 4
#define AREA_BASED 6
var/const/HOLOPAD_MODE = RANGE_BASED
var/list/holopads = list()
#define HOLOPAD_MODE RANGE_BASED
/obj/machinery/holopad
name = "\improper AI holopad"
@@ -39,8 +37,6 @@ var/list/holopads = list()
icon_state = "holopad0"
layer = LOW_OBJ_LAYER
flags = HEAR
languages_spoken = ROBOT | HUMAN
languages_understood = ROBOT | HUMAN
anchored = 1
use_power = 1
idle_power_usage = 5
@@ -52,6 +48,7 @@ var/list/holopads = list()
var/last_request = 0 //to prevent request spam. ~Carn
var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating.
var/temp = ""
var/static/list/holopads = list()
/obj/machinery/holopad/New()
..()
@@ -123,7 +120,7 @@ var/list/holopads = list()
temp = "You requested an AI's presence.<BR>"
temp += "<A href='?src=\ref[src];mainmenu=1'>Main Menu</A>"
var/area/area = get_area(src)
for(var/mob/living/silicon/ai/AI in living_mob_list)
for(var/mob/living/silicon/ai/AI in GLOB.living_mob_list)
if(!AI.client)
continue
to_chat(AI, "<span class='info'>Your presence is requested at <a href='?src=\ref[AI];jumptoholopad=\ref[src]'>\the [area]</a>.</span>")
@@ -189,11 +186,11 @@ var/list/holopads = list()
/*This is the proc for special two-way communication between AI and holopad/people talking near holopad.
For the other part of the code, check silicon say.dm. Particularly robot talk.*/
/obj/machinery/holopad/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
/obj/machinery/holopad/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
if(speaker && masters.len && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios.
for(var/mob/living/silicon/ai/master in masters)
if(masters[master] && speaker != master)
master.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
master.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mode)
/obj/machinery/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc)
var/obj/effect/overlay/holo_pad_hologram/h = new(T)//Spawn a blank effect at the location.
+7 -4
View File
@@ -7,11 +7,14 @@
var/mob/living/carbon/attached = null
var/mode = 1 // 1 is injecting, 0 is taking blood.
var/obj/item/weapon/reagent_containers/beaker = null
var/list/drip_containers = list(/obj/item/weapon/reagent_containers/blood,
/obj/item/weapon/reagent_containers/food,
/obj/item/weapon/reagent_containers/glass)
/obj/machinery/iv_drip/New()
/obj/machinery/iv_drip/Initialize()
..()
update_icon()
drip_containers = typecacheof(drip_containers)
/obj/machinery/iv_drip/update_icon()
if(attached)
@@ -73,14 +76,14 @@
if(beaker)
usr.visible_message("<span class='warning'>[usr] attaches \the [src] to \the [target].</span>", "<span class='notice'>You attach \the [src] to \the [target].</span>")
attached = target
START_PROCESSING(SSmachine, src)
START_PROCESSING(SSmachines, src)
update_icon()
else
to_chat(usr, "<span class='warning'>There's nothing attached to the IV drip!</span>")
/obj/machinery/iv_drip/attackby(obj/item/weapon/W, mob/user, params)
if (istype(W, /obj/item/weapon/reagent_containers))
if (is_type_in_typecache(W, drip_containers))
if(!isnull(beaker))
to_chat(user, "<span class='warning'>There is already a reagent container loaded!</span>")
return
+4 -4
View File
@@ -128,17 +128,17 @@ Class Procs:
if (!armor)
armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
..()
machines += src
GLOB.machines += src
if(!speed_process)
START_PROCESSING(SSmachine, src)
START_PROCESSING(SSmachines, src)
else
START_PROCESSING(SSfastprocess, src)
power_change()
/obj/machinery/Destroy()
machines.Remove(src)
GLOB.machines.Remove(src)
if(!speed_process)
STOP_PROCESSING(SSmachine, src)
STOP_PROCESSING(SSmachines, src)
else
STOP_PROCESSING(SSfastprocess, src)
dropContents()
+6 -6
View File
@@ -37,7 +37,7 @@
spawn(10) // must wait for map loading to finish
if(SSradio)
SSradio.add_object(src, freq, RADIO_MAGNETS)
SSradio.add_object(src, freq, GLOB.RADIO_MAGNETS)
spawn()
magnetic_process()
@@ -233,14 +233,14 @@
..()
if(autolink)
for(var/obj/machinery/magnetic_module/M in machines)
for(var/obj/machinery/magnetic_module/M in GLOB.machines)
if(M.freq == frequency && M.code == code)
magnets.Add(M)
spawn(45) // must wait for map loading to finish
if(SSradio)
radio_connection = SSradio.add_object(src, frequency, RADIO_MAGNETS)
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_MAGNETS)
if(path) // check for default path
@@ -255,7 +255,7 @@
/obj/machinery/magnetic_controller/process()
if(magnets.len == 0 && autolink)
for(var/obj/machinery/magnetic_module/M in machines)
for(var/obj/machinery/magnetic_module/M in GLOB.machines)
if(M.freq == frequency && M.code == code)
magnets.Add(M)
@@ -323,7 +323,7 @@
// Broadcast the signal
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_MAGNETS)
spawn(1)
updateUsrDialog() // pretty sure this increases responsiveness
@@ -390,7 +390,7 @@
// Broadcast the signal
spawn()
radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS)
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_MAGNETS)
if(speed == 10)
sleep(1)
+8 -8
View File
@@ -21,7 +21,7 @@
var/list/codes // assoc. list of transponder codes
var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
req_access = list(access_engine, access_robotics)
req_access = list(GLOB.access_engine, GLOB.access_robotics)
/obj/machinery/navbeacon/New()
..()
@@ -31,16 +31,16 @@
var/turf/T = loc
hide(T.intact)
if(codes["patrol"])
if(!navbeacons["[z]"])
navbeacons["[z]"] = list()
navbeacons["[z]"] += src //Register with the patrol list!
if(!GLOB.navbeacons["[z]"])
GLOB.navbeacons["[z]"] = list()
GLOB.navbeacons["[z]"] += src //Register with the patrol list!
if(codes["delivery"])
deliverybeacons += src
deliverybeacontags += location
GLOB.deliverybeacons += src
GLOB.deliverybeacontags += location
/obj/machinery/navbeacon/Destroy()
navbeacons["[z]"] -= src //Remove from beacon list, if in one.
deliverybeacons -= src
GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one.
GLOB.deliverybeacons -= src
return ..()
// set the transponder codes assoc list from codes_txt
+67 -67
View File
@@ -1,5 +1,5 @@
var/datum/newscaster/feed_network/news_network = new /datum/newscaster/feed_network
var/list/obj/machinery/newscaster/allCasters = list()
GLOBAL_DATUM_INIT(news_network, /datum/newscaster/feed_network, new)
GLOBAL_LIST_EMPTY(allCasters)
/datum/newscaster
@@ -26,7 +26,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
/datum/newscaster/feed_message/proc/returnAuthor(censor)
if(censor == -1)
censor = authorCensor
var/txt = "[news_network.redactedText]"
var/txt = "[GLOB.news_network.redactedText]"
if(!censor)
txt = author
return txt
@@ -34,26 +34,26 @@ var/list/obj/machinery/newscaster/allCasters = list()
/datum/newscaster/feed_message/proc/returnBody(censor)
if(censor == -1)
censor = bodyCensor
var/txt = "[news_network.redactedText]"
var/txt = "[GLOB.news_network.redactedText]"
if(!censor)
txt = body
return txt
/datum/newscaster/feed_message/proc/toggleCensorAuthor()
if(authorCensor)
authorCensorTime.Add(news_network.lastAction*-1)
authorCensorTime.Add(GLOB.news_network.lastAction*-1)
else
authorCensorTime.Add(news_network.lastAction)
authorCensorTime.Add(GLOB.news_network.lastAction)
authorCensor = !authorCensor
news_network.lastAction ++
GLOB.news_network.lastAction ++
/datum/newscaster/feed_message/proc/toggleCensorBody()
if(bodyCensor)
bodyCensorTime.Add(news_network.lastAction*-1)
bodyCensorTime.Add(GLOB.news_network.lastAction*-1)
else
bodyCensorTime.Add(news_network.lastAction)
bodyCensorTime.Add(GLOB.news_network.lastAction)
bodyCensor = !bodyCensor
news_network.lastAction ++
GLOB.news_network.lastAction ++
/datum/newscaster/feed_channel
var/channel_name = ""
@@ -69,26 +69,26 @@ var/list/obj/machinery/newscaster/allCasters = list()
/datum/newscaster/feed_channel/proc/returnAuthor(censor)
if(censor == -1)
censor = authorCensor
var/txt = "[news_network.redactedText]"
var/txt = "[GLOB.news_network.redactedText]"
if(!censor)
txt = author
return txt
/datum/newscaster/feed_channel/proc/toggleCensorDclass()
if(censored)
DclassCensorTime.Add(news_network.lastAction*-1)
DclassCensorTime.Add(GLOB.news_network.lastAction*-1)
else
DclassCensorTime.Add(news_network.lastAction)
DclassCensorTime.Add(GLOB.news_network.lastAction)
censored = !censored
news_network.lastAction ++
GLOB.news_network.lastAction ++
/datum/newscaster/feed_channel/proc/toggleCensorAuthor()
if(authorCensor)
authorCensorTime.Add(news_network.lastAction*-1)
authorCensorTime.Add(GLOB.news_network.lastAction*-1)
else
authorCensorTime.Add(news_network.lastAction)
authorCensorTime.Add(GLOB.news_network.lastAction)
authorCensor = !authorCensor
news_network.lastAction ++
GLOB.news_network.lastAction ++
/datum/newscaster/wanted_message
var/active
@@ -130,7 +130,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(FC.channel_name == channel_name)
FC.messages += newMsg
break
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
NEWSCASTER.newsAlert(channel_name)
lastAction ++
newMsg.creationTime = lastAction
@@ -144,7 +144,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(photo)
wanted_issue.img = photo.img
if(newMessage)
for(var/obj/machinery/newscaster/N in allCasters)
for(var/obj/machinery/newscaster/N in GLOB.allCasters)
N.newsAlert()
N.update_icon()
@@ -154,7 +154,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
wanted_issue.body = null
wanted_issue.scannedUser = null
wanted_issue.img = null
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
NEWSCASTER.update_icon()
@@ -205,13 +205,13 @@ var/list/obj/machinery/newscaster/allCasters = list()
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
pixel_y = (dir & 3)? (dir ==1 ? -32 : 32) : 0
allCasters += src
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
GLOB.allCasters += src
for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
unit_no++
update_icon()
/obj/machinery/newscaster/Destroy()
allCasters -= src
GLOB.allCasters -= src
viewing_channel = null
photo = null
return ..()
@@ -221,7 +221,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(stat & (NOPOWER|BROKEN))
icon_state = "newscaster_off"
else
if(news_network.wanted_issue.active)
if(GLOB.news_network.wanted_issue.active)
icon_state = "newscaster_wanted"
else
icon_state = "newscaster_normal"
@@ -268,7 +268,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(0)
dat += "Welcome to Newscasting Unit #[unit_no].<BR> Interface & News networks Operational."
dat += "<BR><FONT SIZE=1>Property of Nanotrasen Inc</FONT>"
if(news_network.wanted_issue.active)
if(GLOB.news_network.wanted_issue.active)
dat+= "<HR><A href='?src=\ref[src];view_wanted=1'>Read Wanted Issue</A>"
dat+= "<HR><BR><A href='?src=\ref[src];create_channel=1'>Create Feed Channel</A>"
dat+= "<BR><A href='?src=\ref[src];view=1'>View Feed Channels</A>"
@@ -278,7 +278,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+= "<BR><BR><A href='?src=\ref[human_or_robot_user];mach_close=newscaster_main'>Exit</A>"
if(securityCaster)
var/wanted_already = 0
if(news_network.wanted_issue.active)
if(GLOB.news_network.wanted_issue.active)
wanted_already = 1
dat+="<HR><B>Feed Security functions:</B><BR>"
dat+="<BR><A href='?src=\ref[src];menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>"
@@ -287,10 +287,10 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<BR><HR>The newscaster recognises you as: <FONT COLOR='green'>[scanned_user]</FONT>"
if(1)
dat+= "Station Feed Channels<HR>"
if( isemptylist(news_network.network_channels) )
if( isemptylist(GLOB.news_network.network_channels) )
dat+="<I>No active channels found...</I>"
else
for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
if(CHANNEL.is_admin_channel)
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen '><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A></FONT></B><BR>"
else
@@ -329,9 +329,9 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(7)
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed Channel to Network.</B></FONT><HR><BR>"
var/list/existing_authors = list()
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
if(FC.authorCensor)
existing_authors += news_network.redactedText
existing_authors += GLOB.news_network.redactedText
else
existing_authors += FC.author
if(scanned_user in existing_authors)
@@ -339,7 +339,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(channel_name=="" || channel_name == "\[REDACTED\]")
dat+="<FONT COLOR='maroon'>Invalid channel name.</FONT><BR>"
var/check = 0
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
if(FC.channel_name == channel_name)
check = 1
break
@@ -349,10 +349,10 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<FONT COLOR='maroon'>Channel author unverified.</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[2]'>Return</A><BR>"
if(8)
var/total_num=length(news_network.network_channels)
var/total_num=length(GLOB.news_network.network_channels)
var/active_num=total_num
var/message_num=0
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
if(!FC.censored)
message_num += length(FC.messages)
else
@@ -395,10 +395,10 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>"
dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>"
dat+="<HR>Select Feed channel to get Stories from:<BR>"
if(isemptylist(news_network.network_channels))
if(isemptylist(GLOB.news_network.network_channels))
dat+="<I>No feed channels found active...</I><BR>"
else
for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>"
if(11)
@@ -406,10 +406,10 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>"
if(isemptylist(news_network.network_channels))
if(isemptylist(GLOB.news_network.network_channels))
dat+="<I>No feed channels found active...</I><BR>"
else
for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
dat+="<A href='?src=\ref[src];pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Back</A>"
if(12)
@@ -442,7 +442,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<B>Wanted Issue Handler:</B>"
var/wanted_already = 0
var/end_param = 1
if(news_network.wanted_issue.active)
if(GLOB.news_network.wanted_issue.active)
wanted_already = 1
end_param = 2
if(wanted_already)
@@ -452,7 +452,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<A href='?src=\ref[src];set_wanted_desc=1'>Description</A>: [msg] <BR>"
dat+="<A href='?src=\ref[src];set_attachment=1'>Attach Photo</A>: [(photo ? "Photo Attached" : "No Photo")]</BR>"
if(wanted_already)
dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'>[news_network.wanted_issue.scannedUser]</FONT><BR>"
dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT><BR>"
else
dat+="<B>Wanted Issue will be created under prosecutor:</B><FONT COLOR='green'>[scanned_user]</FONT><BR>"
dat+="<BR><A href='?src=\ref[src];submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>"
@@ -475,13 +475,13 @@ var/list/obj/machinery/newscaster/allCasters = list()
dat+="<B>Wanted Issue successfully deleted from Circulation</B><BR>"
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Return</A><BR>"
if(18)
if(news_network.wanted_issue.active)
dat+="<B><FONT COLOR ='maroon'>-- STATIONWIDE WANTED ISSUE --</B></FONT><BR><FONT SIZE=2>\[Submitted by: <FONT COLOR='green'>[news_network.wanted_issue.scannedUser]</FONT>\]</FONT><HR>"
dat+="<B>Criminal</B>: [news_network.wanted_issue.criminal]<BR>"
dat+="<B>Description</B>: [news_network.wanted_issue.body]<BR>"
if(GLOB.news_network.wanted_issue.active)
dat+="<B><FONT COLOR ='maroon'>-- STATIONWIDE WANTED ISSUE --</B></FONT><BR><FONT SIZE=2>\[Submitted by: <FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT>\]</FONT><HR>"
dat+="<B>Criminal</B>: [GLOB.news_network.wanted_issue.criminal]<BR>"
dat+="<B>Description</B>: [GLOB.news_network.wanted_issue.body]<BR>"
dat+="<B>Photo:</B>: "
if(news_network.wanted_issue.img)
usr << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png")
if(GLOB.news_network.wanted_issue.img)
usr << browse_rsc(GLOB.news_network.wanted_issue.img, "tmp_photow.png")
dat+="<BR><img src='tmp_photow.png' width = '180'>"
else
dat+="None"
@@ -518,13 +518,13 @@ var/list/obj/machinery/newscaster/allCasters = list()
updateUsrDialog()
else if(href_list["submit_new_channel"])
var/list/existing_authors = list()
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
if(FC.authorCensor)
existing_authors += news_network.redactedText
existing_authors += GLOB.news_network.redactedText
else
existing_authors += FC.author
var/check = 0
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
if(FC.channel_name == channel_name)
check = 1
break
@@ -534,13 +534,13 @@ var/list/obj/machinery/newscaster/allCasters = list()
var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel")
if(choice=="Confirm")
scan_user(usr)
news_network.CreateFeedChannel(channel_name, scanned_user, c_locked)
GLOB.news_network.CreateFeedChannel(channel_name, scanned_user, c_locked)
feedback_inc("newscaster_channels",1)
screen=5
updateUsrDialog()
else if(href_list["set_channel_receiving"])
var/list/available_channels = list()
for(var/datum/newscaster/feed_channel/F in news_network.network_channels)
for(var/datum/newscaster/feed_channel/F in GLOB.news_network.network_channels)
if( (!F.locked || F.author == scanned_user) && !F.censored)
available_channels += F.channel_name
channel_name = input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels
@@ -557,7 +557,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(msg =="" || msg=="\[REDACTED\]" || scanned_user == "Unknown" || channel_name == "" )
screen=6
else
news_network.SubmitArticle("<font face=\"[PEN_FONT]\">[parsepencode(msg, usr, SIGNFONT)]</font>", scanned_user, channel_name, photo, 0, allow_comments)
GLOB.news_network.SubmitArticle("<font face=\"[PEN_FONT]\">[parsepencode(msg, usr, SIGNFONT)]</font>", scanned_user, channel_name, photo, 0, allow_comments)
feedback_inc("newscaster_stories",1)
screen=4
msg = ""
@@ -586,11 +586,11 @@ var/list/obj/machinery/newscaster/allCasters = list()
updateUsrDialog()
else if(href_list["menu_wanted"])
var/already_wanted = 0
if(news_network.wanted_issue.active)
if(GLOB.news_network.wanted_issue.active)
already_wanted = 1
if(already_wanted)
channel_name = news_network.wanted_issue.criminal
msg = news_network.wanted_issue.body
channel_name = GLOB.news_network.wanted_issue.criminal
msg = GLOB.news_network.wanted_issue.body
screen = 14
updateUsrDialog()
else if(href_list["set_wanted_name"])
@@ -608,22 +608,22 @@ var/list/obj/machinery/newscaster/allCasters = list()
if(choice=="Confirm")
scan_user(usr)
if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one.
news_network.submitWanted(channel_name, msg, scanned_user, photo, 0 , 1)
GLOB.news_network.submitWanted(channel_name, msg, scanned_user, photo, 0 , 1)
screen = 15
else
if(news_network.wanted_issue.isAdminMsg)
if(GLOB.news_network.wanted_issue.isAdminMsg)
alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok")
return
news_network.submitWanted(channel_name, msg, scanned_user, photo)
GLOB.news_network.submitWanted(channel_name, msg, scanned_user, photo)
screen = 19
updateUsrDialog()
else if(href_list["cancel_wanted"])
if(news_network.wanted_issue.isAdminMsg)
if(GLOB.news_network.wanted_issue.isAdminMsg)
alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok")
return
var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
news_network.deleteWanted()
GLOB.news_network.deleteWanted()
screen=17
updateUsrDialog()
else if(href_list["view_wanted"])
@@ -852,16 +852,16 @@ var/list/obj/machinery/newscaster/allCasters = list()
/obj/machinery/newscaster/proc/print_paper()
feedback_inc("newscaster_newspapers_printed",1)
var/obj/item/weapon/newspaper/NEWSPAPER = new /obj/item/weapon/newspaper
for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
NEWSPAPER.news_content += FC
if(news_network.wanted_issue.active)
NEWSPAPER.wantedAuthor = news_network.wanted_issue.scannedUser
NEWSPAPER.wantedCriminal = news_network.wanted_issue.criminal
NEWSPAPER.wantedBody = news_network.wanted_issue.body
if(news_network.wanted_issue.img)
NEWSPAPER.wantedPhoto = news_network.wanted_issue.img
if(GLOB.news_network.wanted_issue.active)
NEWSPAPER.wantedAuthor = GLOB.news_network.wanted_issue.scannedUser
NEWSPAPER.wantedCriminal = GLOB.news_network.wanted_issue.criminal
NEWSPAPER.wantedBody = GLOB.news_network.wanted_issue.body
if(GLOB.news_network.wanted_issue.img)
NEWSPAPER.wantedPhoto = GLOB.news_network.wanted_issue.img
NEWSPAPER.loc = get_turf(src)
NEWSPAPER.creationTime = news_network.lastAction
NEWSPAPER.creationTime = GLOB.news_network.lastAction
paper_remaining--
/obj/machinery/newscaster/proc/newsAlert(channel)
+6 -6
View File
@@ -22,7 +22,7 @@ Buildable meters
var/flipped = 0
var/is_bent = 0
var/global/list/pipe_types = list(
var/static/list/pipe_types = list(
PIPE_SIMPLE, \
PIPE_MANIFOLD, \
PIPE_4WAYMANIFOLD, \
@@ -73,7 +73,7 @@ Buildable meters
src.pipe_type = pipe_type
src.setDir(dir)
if(src.dir in diagonals)
if(src.dir in GLOB.diagonals)
is_bent = 1
update()
@@ -81,7 +81,7 @@ Buildable meters
src.pixel_y = rand(-5, 5)
//update the name and icon of the pipe item depending on the type
var/global/list/pipeID2State = list(
GLOBAL_LIST_INIT(pipeID2State, list(
"[PIPE_SIMPLE]" = "simple", \
"[PIPE_MANIFOLD]" = "manifold", \
"[PIPE_4WAYMANIFOLD]" = "manifold4w", \
@@ -103,7 +103,7 @@ var/global/list/pipeID2State = list(
\
"[PIPE_GAS_FILTER]" = "filter", \
"[PIPE_GAS_MIXER]" = "mixer", \
)
))
/obj/item/pipe/proc/update()
var/list/nlist = list(\
@@ -133,7 +133,7 @@ var/global/list/pipeID2State = list(
)
//fix_pipe_type()
name = nlist["[pipe_type][is_bent ? "_b" : ""]"] + " fitting"
icon_state = pipeID2State["[pipe_type]"]
icon_state = GLOB.pipeID2State["[pipe_type]"]
// rotate the pipe item clockwise
@@ -186,7 +186,7 @@ var/global/list/pipeID2State = list(
setDir(old_dir )//pipes changing direction when moved is just annoying and buggy
/obj/item/pipe/proc/unflip(direction)
if(direction in diagonals)
if(direction in GLOB.diagonals)
return turn(direction, 45)
return direction
@@ -12,7 +12,7 @@
use_power = 1 //this turret uses and requires power
idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
req_access = list(access_security)
req_access = list(GLOB.access_security)
power_channel = EQUIP //drains power from the EQUIPMENT channel
var/base_icon_state = "standard"
@@ -311,9 +311,11 @@
if(prob(30))
spark_system.start()
if(on && !attacked && !emagged)
attacked = 1
spawn(60)
attacked = 0
attacked = TRUE
addtimer(CALLBACK(src, .proc/reset_attacked), 60)
/obj/machinery/porta_turret/proc/reset_attacked()
attacked = FALSE
/obj/machinery/porta_turret/deconstruct(disassembled = TRUE)
qdel(src)
@@ -465,7 +467,7 @@
if(check_records) //if the turret can check the records, check if they are set to *Arrest* on records
var/perpname = perp.get_face_name(perp.get_id_name())
var/datum/data/record/R = find_record("name", perpname, data_core.security)
var/datum/data/record/R = find_record("name", perpname, GLOB.data_core.security)
if(!R || (R.fields["criminal"] == "*Arrest*"))
threatcount += 4
@@ -632,7 +634,7 @@
var/locked = 1
var/control_area = null //can be area name, path or nothing.
var/ailock = 0 // AI cannot use this
req_access = list(access_ai_upload)
req_access = list(GLOB.access_ai_upload)
var/list/obj/machinery/porta_turret/turrets = list()
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
@@ -654,7 +656,7 @@
if(!mapload)
return
if(control_area && istext(control_area))
for(var/V in sortedAreas)
for(var/V in GLOB.sortedAreas)
var/area/A = V
if(A.name == control_area)
control_area = A
@@ -843,7 +845,7 @@
. = ..()
/obj/machinery/porta_turret/lasertag
req_access = list(access_maint_tunnels, access_theatre)
req_access = list(GLOB.access_maint_tunnels, GLOB.access_theatre)
check_records = 0
criminals = 0
auth_weapons = 1
@@ -911,4 +913,4 @@
if(istype(P, /obj/item/projectile/beam/lasertag/bluetag))
on = 0
spawn(100)
on = 1
on = 1
+1 -1
View File
@@ -7,7 +7,7 @@
use_power = 1
idle_power_usage = 5
active_power_usage = 1000
req_access = list(access_robotics)
req_access = list(GLOB.access_robotics)
var/recharge_speed
var/repairs
state_open = 1
+11 -6
View File
@@ -1,4 +1,4 @@
var/const/SAFETY_COOLDOWN = 100
#define SAFETY_COOLDOWN 100
/obj/machinery/recycler
name = "recycler"
@@ -12,7 +12,7 @@ var/const/SAFETY_COOLDOWN = 100
var/icon_name = "grinder-o"
var/blood = 0
var/eat_dir = WEST
var/amount_produced = 1
var/amount_produced = 50
var/datum/material_container/materials
var/crush_damage = 1000
var/eat_victim_items = TRUE
@@ -40,9 +40,9 @@ var/const/SAFETY_COOLDOWN = 100
mat_mod = 2 * B.rating
mat_mod *= 50000
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
amt_made = 25 * M.rating //% of materials salvaged
amt_made = 12.5 * M.rating //% of materials salvaged
materials.max_amount = mat_mod
amount_produced = min(100, amt_made)
amount_produced = min(50, amt_made) + 50
/obj/machinery/recycler/examine(mob/user)
..()
@@ -109,9 +109,12 @@ var/const/SAFETY_COOLDOWN = 100
eat(AM)
/obj/machinery/recycler/proc/eat(atom/AM0, sound=TRUE)
var/list/to_eat = list(AM0)
var/list/to_eat
if(istype(AM0, /obj/item))
to_eat += AM0.GetAllContents()
to_eat = AM0.GetAllContents()
else
to_eat = list(AM0)
var/items_recycled = 0
for(var/i in to_eat)
@@ -204,3 +207,5 @@ var/const/SAFETY_COOLDOWN = 100
/obj/item/weapon/paper/recycler
name = "paper - 'garbage duty instructions'"
info = "<h2>New Assignment</h2> You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.<br><br>There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!"
#undef SAFETY_COOLDOWN
+55 -53
View File
@@ -1,10 +1,10 @@
/******************** Requests Console ********************/
/** Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes */
var/req_console_assistance = list()
var/req_console_supplies = list()
var/req_console_information = list()
var/list/obj/machinery/requests_console/allConsoles = list()
GLOBAL_LIST_EMPTY(req_console_assistance)
GLOBAL_LIST_EMPTY(req_console_supplies)
GLOBAL_LIST_EMPTY(req_console_information)
GLOBAL_LIST_EMPTY(allConsoles)
/obj/machinery/requests_console
name = "requests console"
@@ -91,46 +91,46 @@ var/list/obj/machinery/requests_console/allConsoles = list()
/obj/machinery/requests_console/Initialize()
..()
name = "\improper [department] requests console"
allConsoles += src
GLOB.allConsoles += src
switch(departmentType)
if(1)
if(!("[department]" in req_console_assistance))
req_console_assistance += department
if(!("[department]" in GLOB.req_console_assistance))
GLOB.req_console_assistance += department
if(2)
if(!("[department]" in req_console_supplies))
req_console_supplies += department
if(!("[department]" in GLOB.req_console_supplies))
GLOB.req_console_supplies += department
if(3)
if(!("[department]" in req_console_information))
req_console_information += department
if(!("[department]" in GLOB.req_console_information))
GLOB.req_console_information += department
if(4)
if(!("[department]" in req_console_assistance))
req_console_assistance += department
if(!("[department]" in req_console_supplies))
req_console_supplies += department
if(!("[department]" in GLOB.req_console_assistance))
GLOB.req_console_assistance += department
if(!("[department]" in GLOB.req_console_supplies))
GLOB.req_console_supplies += department
if(5)
if(!("[department]" in req_console_assistance))
req_console_assistance += department
if(!("[department]" in req_console_information))
req_console_information += department
if(!("[department]" in GLOB.req_console_assistance))
GLOB.req_console_assistance += department
if(!("[department]" in GLOB.req_console_information))
GLOB.req_console_information += department
if(6)
if(!("[department]" in req_console_supplies))
req_console_supplies += department
if(!("[department]" in req_console_information))
req_console_information += department
if(!("[department]" in GLOB.req_console_supplies))
GLOB.req_console_supplies += department
if(!("[department]" in GLOB.req_console_information))
GLOB.req_console_information += department
if(7)
if(!("[department]" in req_console_assistance))
req_console_assistance += department
if(!("[department]" in req_console_supplies))
req_console_supplies += department
if(!("[department]" in req_console_information))
req_console_information += department
if(!("[department]" in GLOB.req_console_assistance))
GLOB.req_console_assistance += department
if(!("[department]" in GLOB.req_console_supplies))
GLOB.req_console_supplies += department
if(!("[department]" in GLOB.req_console_information))
GLOB.req_console_information += department
Radio = new /obj/item/device/radio(src)
Radio.listening = 0
/obj/machinery/requests_console/Destroy()
QDEL_NULL(Radio)
allConsoles -= src
GLOB.allConsoles -= src
return ..()
/obj/machinery/requests_console/attack_hand(mob/user)
@@ -142,7 +142,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(1) //req. assistance
dat += "Which department do you need assistance from?<BR><BR>"
dat += "<table width='100%'>"
for(var/dpt in req_console_assistance)
for(var/dpt in GLOB.req_console_assistance)
if (dpt != department)
dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>"
@@ -157,7 +157,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(2) //req. supplies
dat += "Which department do you need supplies from?<BR><BR>"
dat += "<table width='100%'>"
for(var/dpt in req_console_supplies)
for(var/dpt in GLOB.req_console_supplies)
if (dpt != department)
dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>"
@@ -172,7 +172,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(3) //relay information
dat += "Which department would you like to send information to?<BR><BR>"
dat += "<table width='100%'>"
for(var/dpt in req_console_information)
for(var/dpt in GLOB.req_console_information)
if (dpt != department)
dat += "<tr>"
dat += "<td width='55%'>[dpt]</td>"
@@ -193,7 +193,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
dat += "<A href='?src=\ref[src];setScreen=0'>Continue</A><BR>"
if(8) //view messages
for (var/obj/machinery/requests_console/Console in allConsoles)
for (var/obj/machinery/requests_console/Console in GLOB.allConsoles)
if (Console.department == department)
Console.newmessagepriority = 0
Console.update_icon()
@@ -304,7 +304,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(!announcementConsole)
return
minor_announce(message, "[department] Announcement:")
news_network.SubmitArticle(message, department, "Station Announcements", null)
GLOB.news_network.SubmitArticle(message, department, "Station Announcements", null)
log_say("[key_name(usr)] has made a station announcement: [message]")
message_admins("[key_name_admin(usr)] has made a station announcement.")
announceAuth = 0
@@ -316,21 +316,19 @@ var/list/obj/machinery/requests_console/allConsoles = list()
var/radio_freq
switch(text2num(href_list["emergency"]))
if(1) //Security
radio_freq = SEC_FREQ
radio_freq = GLOB.SEC_FREQ
emergency = "Security"
if(2) //Engineering
radio_freq = ENG_FREQ
radio_freq = GLOB.ENG_FREQ
emergency = "Engineering"
if(3) //Medical
radio_freq = MED_FREQ
radio_freq = GLOB.MED_FREQ
emergency = "Medical"
if(radio_freq)
Radio.set_frequency(radio_freq)
Radio.talk_into(src,"[emergency] emergency in [department]!!",radio_freq)
Radio.talk_into(src,"[emergency] emergency in [department]!!",radio_freq,get_spans(),get_default_language())
update_icon()
spawn(3000)
emergency = null
update_icon()
addtimer(CALLBACK(src, .proc/clear_emergency), 3000)
if( href_list["department"] && message )
var/log_msg = message
@@ -345,7 +343,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
screen = 7 //if it's successful, this will get overrwritten (7 = unsufccessfull, 6 = successfull)
if (sending)
var/pass = 0
for (var/obj/machinery/message_server/MS in machines)
for (var/obj/machinery/message_server/MS in GLOB.machines)
if(!MS.active) continue
MS.send_rc_message(href_list["department"],department,log_msg,msgStamped,msgVerified,priority)
pass = 1
@@ -354,24 +352,24 @@ var/list/obj/machinery/requests_console/allConsoles = list()
var/radio_freq = 0
switch(href_list["department"])
if("bridge")
radio_freq = COMM_FREQ
radio_freq = GLOB.COMM_FREQ
if("medbay")
radio_freq = MED_FREQ
radio_freq = GLOB.MED_FREQ
if("science")
radio_freq = SCI_FREQ
radio_freq = GLOB.SCI_FREQ
if("engineering")
radio_freq = ENG_FREQ
radio_freq = GLOB.ENG_FREQ
if("security")
radio_freq = SEC_FREQ
radio_freq = GLOB.SEC_FREQ
if("cargobay" || "mining")
radio_freq = SUPP_FREQ
radio_freq = GLOB.SUPP_FREQ
Radio.set_frequency(radio_freq)
var/authentic
if(msgVerified || msgStamped)
authentic = " (Authenticated)"
var/alert = ""
for (var/obj/machinery/requests_console/Console in allConsoles)
for (var/obj/machinery/requests_console/Console in GLOB.allConsoles)
if (ckey(Console.department) == ckey(href_list["department"]))
switch(priority)
if(2) //High priority
@@ -386,7 +384,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
screen = 6
if(radio_freq)
Radio.talk_into(src,"[alert]: <i>[message]</i>",radio_freq)
Radio.talk_into(src,"[alert]: <i>[message]</i>",radio_freq,get_spans(),get_default_language())
switch(priority)
if(2)
@@ -441,13 +439,17 @@ var/list/obj/machinery/requests_console/allConsoles = list()
updateUsrDialog()
return
/obj/machinery/say_quote(input, list/spans)
/obj/machinery/requests_console/say_quote(input, list/spans, message_mode)
var/ending = copytext(input, length(input) - 2)
if (ending == "!!!")
return "blares, \"[attach_spans(input, spans)]\""
return ..()
/obj/machinery/requests_console/proc/clear_emergency()
emergency = null
update_icon()
/obj/machinery/requests_console/proc/createmessage(source, title, message, priority)
var/linkedsender
if(istype(source, /obj/machinery/requests_console))
@@ -513,7 +515,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
msgVerified = "<font color='green'><b>Verified by [ID.registered_name] ([ID.assignment])</b></font>"
updateUsrDialog()
if(screen == 10)
if (access_RC_announce in ID.access)
if (GLOB.access_RC_announce in ID.access)
announceAuth = 1
else
announceAuth = 0
+138 -204
View File
@@ -27,8 +27,10 @@
move_update_air(T)
/obj/structure/emergency_shield/CanPass(atom/movable/mover, turf/target, height)
if(!height) return 0
else return ..()
if(!height)
return FALSE
else
return ..()
/obj/structure/emergency_shield/emp_act(severity)
switch(severity)
@@ -81,7 +83,7 @@
opacity = 0
anchored = 0
pressure_resistance = 2*ONE_ATMOSPHERE
req_access = list(access_engine)
req_access = list(GLOB.access_engine)
max_integrity = 100
obj_integrity = 100
var/active = 0
@@ -216,15 +218,8 @@
else
icon_state = (stat & BROKEN) ? "shieldoffbr":"shieldoff"
#define maxstoredpower 500
#define ACTIVE_SETUPFIELDS 1
#define ACTIVE_HASFIELDS 2
/obj/machinery/shieldwallgen
name = "shield wall generator"
desc = "A shield generator."
@@ -232,166 +227,130 @@
icon_state = "Shield_Gen"
anchored = 0
density = 1
req_access = list(access_teleporter)
req_access = list(GLOB.access_teleporter)
flags = CONDUCT
use_power = 0
obj_integrity = 300
max_integrity = 300
var/active = 0
var/active = FALSE
var/power = 0
var/steps = 0
var/last_check = 0
var/check_delay = 10
var/recalc = 0
var/maximum_stored_power = 500
var/locked = 1
var/obj/structure/cable/attached // the attached cable
var/storedpower = 0
var/shield_range = 8
var/obj/structure/cable/attached // the attached cable
/obj/machinery/shieldwallgen/Destroy()
for(var/d in GLOB.cardinal)
cleanup_field(d)
return ..()
/obj/machinery/shieldwallgen/proc/power()
if(!anchored)
power = 0
return 0
var/turf/T = src.loc
return
var/turf/T = get_turf(src)
var/obj/structure/cable/C = T.get_cable_node()
var/datum/powernet/PN
if(C)
PN = C.powernet // find the powernet of the connected cable
PN = C.powernet //find the powernet of the connected cable
if(!PN)
power = 0
return 0
return
var/surplus = max(PN.avail-PN.load, 0)
var/shieldload = min(rand(50,200), surplus)
if(shieldload==0 && !storedpower) // no cable or no power, and no power stored
power = 0
return 0
else
power = 1 // IVE GOT THE POWER!
if(PN) //runtime errors fixer. They were caused by PN.newload trying to access missing network in case of working on stored power.
storedpower += shieldload
PN.load += shieldload //uses powernet power.
/obj/machinery/shieldwallgen/attack_hand(mob/user)
if(!anchored)
to_chat(user, "<span class='warning'>\The [src] needs to be firmly secured to the floor first!</span>")
return 1
if(locked && !issilicon(user))
to_chat(user, "<span class='warning'>The controls are locked!</span>")
return 1
if(power != 1)
to_chat(user, "<span class='warning'>\The [src] needs to be powered by wire underneath!</span>")
return 1
if(active >= 1)
active = 0
icon_state = "Shield_Gen"
user.visible_message("[user] turned \the [src] off.", \
"<span class='notice'>You turn off \the [src].</span>", \
"<span class='italics'>You hear heavy droning fade out.</span>")
cleanup()
else
active = 1
icon_state = "Shield_Gen +a"
user.visible_message("[user] turned \the [src] on.", \
"<span class='notice'>You turn on \the [src].</span>", \
"<span class='italics'>You hear heavy droning.</span>")
add_fingerprint(user)
var/surplus = max(PN.avail - PN.load, 0)
var/avail_power = min(rand(50,200), surplus)
if(avail_power)
power += avail_power
PN.load += avail_power //uses powernet power.
/obj/machinery/shieldwallgen/process()
power()
if(power)
storedpower -= 50 //this way it can survive longer and survive at all
storedpower = Clamp(storedpower, 0, maxstoredpower)
use_stored_power(50)
/obj/machinery/shieldwallgen/proc/use_stored_power(amount)
power = Clamp(power - amount, 0, maximum_stored_power)
update_activity()
if(active == 1)
if(!anchored)
active = 0
return
setup_field(1)
setup_field(2)
setup_field(4)
setup_field(8)
src.active = 2
if(active >= 1)
if(power == 0)
/obj/machinery/shieldwallgen/proc/update_activity()
if(active)
icon_state = "Shield_Gen +a"
if(active == ACTIVE_SETUPFIELDS)
var/fields = 0
for(var/d in GLOB.cardinal)
if(setup_field(d))
fields++
if(fields)
active = ACTIVE_HASFIELDS
if(!power)
visible_message("<span class='danger'>The [src.name] shuts down due to lack of power!</span>", \
"<span class='italics'>You hear heavy droning fade out.</span>")
icon_state = "Shield_Gen"
active = 0
cleanup(1)
cleanup(2)
cleanup(4)
cleanup(8)
active = FALSE
for(var/d in GLOB.cardinal)
cleanup_field(d)
else
icon_state = "Shield_Gen"
for(var/d in GLOB.cardinal)
cleanup_field(d)
/obj/machinery/shieldwallgen/proc/setup_field(NSEW = 0)
var/turf/T = src.loc
var/turf/T2 = src.loc
/obj/machinery/shieldwallgen/proc/setup_field(direction)
if(!direction)
return
var/turf/T = loc
var/obj/machinery/shieldwallgen/G
var/steps = 0
var/oNSEW = 0
var/opposite_direction = turn(direction, 180)
if(!NSEW)//Make sure its ran right
return
if(NSEW == 1)
oNSEW = 2
else if(NSEW == 2)
oNSEW = 1
else if(NSEW == 4)
oNSEW = 8
else if(NSEW == 8)
oNSEW = 4
for(var/dist = 0, dist <= 9, dist += 1) // checks out to 8 tiles away for another generator
T = get_step(T2, NSEW)
T2 = T
steps += 1
if(locate(/obj/machinery/shieldwallgen) in T)
G = (locate(/obj/machinery/shieldwallgen) in T)
steps -= 1
for(var/i in 1 to shield_range) //checks out to 8 tiles away for another generator
T = get_step(T, direction)
G = (locate(/obj/machinery/shieldwallgen) in T)
if(G)
if(!G.active)
return
G.cleanup(oNSEW)
G.cleanup_field(opposite_direction)
break
else
steps++
if(isnull(G))
if(!G || !steps) //no shield gen or no tiles between us and the gen
return
T2 = src.loc
for(var/i in 1 to steps) //creates each field tile
T = get_step(T, opposite_direction)
new/obj/machinery/shieldwall(T, src, G)
return TRUE
for(var/dist = 0, dist < steps, dist += 1) // creates each field tile
var/field_dir = get_dir(T2,get_step(T2, NSEW))
T = get_step(T2, NSEW)
T2 = T
var/obj/machinery/shieldwall/CF = new/obj/machinery/shieldwall/(src, G) //(ref to this gen, ref to connected gen)
CF.loc = T
CF.setDir(field_dir)
/obj/machinery/shieldwallgen/proc/cleanup_field(direction)
var/obj/machinery/shieldwall/F
var/obj/machinery/shieldwallgen/G
var/turf/T = loc
for(var/i in 1 to shield_range)
T = get_step(T, direction)
G = (locate(/obj/machinery/shieldwallgen) in T)
if(G && !G.active)
break
F = (locate(/obj/machinery/shieldwall) in T)
if(F && (F.gen_primary == src || F.gen_secondary == src)) //it's ours, kill it.
qdel(F)
/obj/machinery/shieldwallgen/can_be_unfasten_wrench(mob/user, silent)
if(active)
if(!silent)
to_chat(user, "<span class='warning'>Turn off the shield generator first!</span>")
return FAILED_UNFASTEN
return ..()
/obj/machinery/shieldwallgen/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
if(active)
to_chat(user, "<span class='warning'>Turn off the field generator first!</span>")
return
default_unfasten_wrench(user, W, 0)
else if(!anchored && !isinspace()) //Can't fasten this thing in space
playsound(src.loc, W.usesound, 75, 1)
to_chat(user, "<span class='notice'>You secure the external reinforcing bolts to the floor.</span>")
anchored = 1
return
else //You can unfasten it tough, if you somehow manage to fasten it.
playsound(src.loc, W.usesound, 75, 1)
to_chat(user, "<span class='notice'>You undo the external reinforcing bolts.</span>")
anchored = 0
return
if(W.GetID())
if (allowed(user))
else if(W.GetID())
if(allowed(user))
locked = !locked
to_chat(user, "<span class='notice'>You [src.locked ? "lock" : "unlock"] the controls.</span>")
else
@@ -401,31 +360,30 @@
add_fingerprint(user)
return ..()
/obj/machinery/shieldwallgen/proc/cleanup(NSEW)
var/obj/machinery/shieldwall/F
var/obj/machinery/shieldwallgen/G
var/turf/T = src.loc
var/turf/T2 = src.loc
for(var/dist = 0, dist <= 9, dist += 1) // checks out to 8 tiles away for fields
T = get_step(T2, NSEW)
T2 = T
if(locate(/obj/machinery/shieldwall) in T)
F = (locate(/obj/machinery/shieldwall) in T)
qdel(F)
if(locate(/obj/machinery/shieldwallgen) in T)
G = (locate(/obj/machinery/shieldwallgen) in T)
if(!G.active)
break
/obj/machinery/shieldwallgen/Destroy()
cleanup(1)
cleanup(2)
cleanup(4)
cleanup(8)
return ..()
/obj/machinery/shieldwallgen/attack_hand(mob/user)
if(!anchored)
to_chat(user, "<span class='warning'>\The [src] needs to be firmly secured to the floor first!</span>")
return
if(locked && !issilicon(user))
to_chat(user, "<span class='warning'>The controls are locked!</span>")
return
if(!power)
to_chat(user, "<span class='warning'>\The [src] needs to be powered by a wire!</span>")
return
if(active)
user.visible_message("[user] turned \the [src] off.", \
"<span class='notice'>You turn off \the [src].</span>", \
"<span class='italics'>You hear heavy droning fade out.</span>")
active = FALSE
update_activity()
else
user.visible_message("[user] turned \the [src] on.", \
"<span class='notice'>You turn on \the [src].</span>", \
"<span class='italics'>You hear heavy droning.</span>")
active = ACTIVE_SETUPFIELDS
update_activity()
add_fingerprint(user)
//////////////Containment Field START
@@ -438,42 +396,36 @@
density = 1
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
light_range = 3
var/needs_power = 0
var/active = 1
var/delay = 5
var/last_active
var/mob/U
var/needs_power = FALSE
var/obj/machinery/shieldwallgen/gen_primary
var/obj/machinery/shieldwallgen/gen_secondary
/obj/machinery/shieldwall/New(var/obj/machinery/shieldwallgen/A, var/obj/machinery/shieldwallgen/B)
..()
src.gen_primary = A
src.gen_secondary = B
if(A && B)
needs_power = 1
for(var/mob/living/L in get_turf(src.loc))
visible_message("<span class='danger'>\The [src] is suddenly occupying the same space as \the [L]'s organs!</span>")
/obj/machinery/shieldwall/Initialize(mapload, obj/machinery/shieldwallgen/first_gen, obj/machinery/shieldwallgen/second_gen)
. = ..()
gen_primary = first_gen
gen_secondary = second_gen
if(gen_primary && gen_secondary)
needs_power = TRUE
setDir(get_dir(gen_primary, gen_secondary))
for(var/mob/living/L in get_turf(src))
visible_message("<span class='danger'>\The [src] is suddenly occupying the same space as \the [L]!</span>")
L.gib()
/obj/machinery/shieldwall/Destroy()
gen_primary = null
gen_secondary = null
return ..()
/obj/machinery/shieldwall/attack_hand(mob/user)
return
/obj/machinery/shieldwall/process()
if(needs_power)
if(isnull(gen_primary)||isnull(gen_secondary))
if(!gen_primary || !gen_primary.active || !gen_secondary || !gen_secondary.active)
qdel(src)
return
if(!(gen_primary.active)||!(gen_secondary.active))
qdel(src)
return
if(prob(50))
gen_primary.storedpower -= 10
else
gen_secondary.storedpower -=10
drain_power(10)
/obj/machinery/shieldwall/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
switch(damage_type)
@@ -489,37 +441,19 @@
drain_power(damage_amount)
/obj/machinery/shieldwall/proc/drain_power(drain_amount)
if(needs_power)
var/obj/machinery/shieldwallgen/G
if(prob(50))
G = gen_primary
else
G = gen_secondary
G.storedpower -= drain_amount
/obj/machinery/shieldwall/bullet_act(obj/item/projectile/P)
. = ..()
drain_power(P.damage)
/obj/machinery/shieldwall/ex_act(severity, target)
if(needs_power)
var/drain_amount = 20
switch(severity)
if(1)
drain_amount = 200
if(2)
drain_amount = 50
drain_power(drain_amount)
if(needs_power && gen_primary)
gen_primary.use_stored_power(drain_amount*0.5)
if(gen_secondary) //using power may cause us to be destroyed
gen_secondary.use_stored_power(drain_amount*0.5)
/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target, height=0)
if(height==0) return 1
if(height==0)
return FALSE
if(istype(mover) && mover.checkpass(PASSGLASS))
return prob(20)
else
if (istype(mover, /obj/item/projectile))
if(istype(mover, /obj/item/projectile))
return prob(10)
else
return !src.density
return !density
+3 -4
View File
@@ -33,7 +33,7 @@
light_color = LIGHT_COLOR_BROWN
/obj/machinery/computer/slot_machine/New()
/obj/machinery/computer/slot_machine/Initialize()
..()
jackpots = rand(1, 4) //false hope
plays = rand(75, 200)
@@ -47,9 +47,8 @@
toggle_reel_spin(0)
for(var/cointype in typesof(/obj/item/weapon/coin))
var/obj/item/weapon/coin/C = new cointype(src)
coinvalues["[cointype]"] = C.value
qdel(C)
var/obj/item/weapon/coin/C = cointype
coinvalues["[cointype]"] = initial(C.value)
/obj/machinery/computer/slot_machine/Destroy()
if(balance)
+1 -1
View File
@@ -175,7 +175,7 @@
return ..()
/obj/machinery/space_heater/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = physical_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.physical_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "space_heater", name, 400, 305, master_ui, state)
+9 -14
View File
@@ -322,7 +322,7 @@
return ..()
/obj/machinery/suit_storage_unit/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state)
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "suit_storage_unit", name, 400, 305, master_ui, state)
@@ -375,18 +375,13 @@
if("dispense")
if(!state_open)
return
switch(params["item"])
if("helmet")
helmet.loc = loc
helmet = null
if("suit")
suit.loc = loc
suit = null
if("mask")
mask.loc = loc
mask = null
if("storage")
storage.loc = loc
storage = null
var/static/list/valid_items = list("helmet", "suit", "mask", "storage")
var/item_name = params["item"]
if(item_name in valid_items)
var/obj/item/I = vars[item_name]
vars[item_name] = null
if(I)
I.forceMove(loc)
. = TRUE
update_icon()
+3 -3
View File
@@ -22,7 +22,7 @@
if(surplus() < 1500)
if(user) to_chat(user, "<span class='notice'>The connected wire doesn't have enough current.</span>")
return
for(var/obj/singularity/singulo in singularities)
for(var/obj/singularity/singulo in GLOB.singularities)
if(singulo.z == z)
singulo.target = src
icon_state = "[icontype]1"
@@ -32,7 +32,7 @@
/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null)
for(var/obj/singularity/singulo in singularities)
for(var/obj/singularity/singulo in GLOB.singularities)
if(singulo.target == src)
singulo.target = null
icon_state = "[icontype]0"
@@ -88,7 +88,7 @@
add_load(1500)
if(cooldown <= world.time)
cooldown = world.time + 100
for(var/obj/singularity/singulo in singularities)
for(var/obj/singularity/singulo in GLOB.singularities)
if(singulo.z == z)
say("The [singulo] is now [get_dist(src,singulo)] standard lengths away to the [dir2text(get_dir(src,singulo))]")
else
+2 -2
View File
@@ -533,7 +533,7 @@
/obj/item/device/syndicatedetonator/attack_self(mob/user)
if(timer < world.time)
for(var/obj/machinery/syndicatebomb/B in machines)
for(var/obj/machinery/syndicatebomb/B in GLOB.machines)
if(B.active)
B.detonation_timer = world.time + BUTTON_DELAY
detonated++
@@ -545,7 +545,7 @@
var/area/A = get_area(T)
detonated--
var/log_str = "[ADMIN_LOOKUPFLW(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name] [ADMIN_JMP(T)]</a>."
bombers += log_str
GLOB.bombers += log_str
message_admins(log_str)
log_game("[key_name(user)] has remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a [name] at [A.name][COORD(T)]")
detonated = 0
+24 -258
View File
@@ -58,7 +58,7 @@
var/vmask, var/obj/item/device/radio/radio,
var/message, var/name, var/job, var/realname,
var/data, var/compression, var/list/level, var/freq, var/list/spans,
var/verb_say, var/verb_ask, var/verb_exclaim, var/verb_yell)
var/verb_say, var/verb_ask, var/verb_exclaim, var/verb_yell, var/datum/language/language)
message = copytext(message, 1, MAX_BROADCAST_LEN)
@@ -70,8 +70,6 @@
var/atom/movable/virtualspeaker/virt = new /atom/movable/virtualspeaker(null)
virt.name = name
virt.job = job
virt.languages_spoken = AM.languages_spoken
virt.languages_understood = AM.languages_understood
virt.source = AM
virt.radio = radio
virt.verb_say = verb_say
@@ -85,7 +83,7 @@
// --- Broadcast only to intercom devices ---
if(data == 1)
for(var/obj/item/device/radio/intercom/R in all_radios["[freq]"])
for(var/obj/item/device/radio/intercom/R in GLOB.all_radios["[freq]"])
if(R.receive_range(freq, level) > -1)
radios += R
@@ -93,7 +91,7 @@
else if(data == 2)
for(var/obj/item/device/radio/R in all_radios["[freq]"])
for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"])
if(R.subspace_transmission)
continue
@@ -106,8 +104,8 @@
else if(data == 5)
for(var/obj/item/device/radio/R in all_radios["[freq]"])
if(!R.centcom)
for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"])
if(!R.independent)
continue
if(R.receive_range(freq, level) > -1)
@@ -116,13 +114,13 @@
// --- Broadcast to ALL radio devices ---
else
for(var/obj/item/device/radio/R in all_radios["[freq]"])
for(var/obj/item/device/radio/R in GLOB.all_radios["[freq]"])
if(R.receive_range(freq, level) > -1)
radios += R
var/freqtext = num2text(freq)
for(var/obj/item/device/radio/R in all_radios["[SYND_FREQ]"]) //syndicate radios use magic that allows them to hear everything. this was already the case, now it just doesn't need the allinone anymore. solves annoying bugs that aren't worth solving.
if(R.receive_range(SYND_FREQ, list(R.z)) > -1 && freqtext in radiochannelsreverse)
for(var/obj/item/device/radio/R in GLOB.all_radios["[GLOB.SYND_FREQ]"]) //syndicate radios use magic that allows them to hear everything. this was already the case, now it just doesn't need the allinone anymore. solves annoying bugs that aren't worth solving.
if(R.receive_range(GLOB.SYND_FREQ, list(R.z)) > -1 && freqtext in GLOB.reverseradiochannels)
radios |= R
// Get a list of mobs who can hear from the radios we collected.
@@ -132,278 +130,46 @@
if (R.client && R.client.holder && !(R.client.prefs.chat_toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
receive -= R
for(var/mob/M in player_list)
for(var/mob/M in GLOB.player_list)
if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTRADIO))
receive |= M
var/rendered = virt.compose_message(virt, virt.languages_spoken, message, freq, spans) //Always call this on the virtualspeaker to advoid issues.
var/rendered = virt.compose_message(virt, language, message, freq, spans) //Always call this on the virtualspeaker to advoid issues.
for(var/atom/movable/hearer in receive)
hearer.Hear(rendered, virt, AM.languages_spoken, message, freq, spans)
hearer.Hear(rendered, virt, language, message, freq, spans)
if(length(receive))
// --- This following recording is intended for research and feedback in the use of department radio channels ---
var/blackbox_msg = "[AM] [AM.say_quote(message, spans)]"
if(istype(blackbox))
if(istype(GLOB.blackbox))
switch(freq)
if(1459)
blackbox.msg_common += blackbox_msg
GLOB.blackbox.msg_common += blackbox_msg
if(1351)
blackbox.msg_science += blackbox_msg
GLOB.blackbox.msg_science += blackbox_msg
if(1353)
blackbox.msg_command += blackbox_msg
GLOB.blackbox.msg_command += blackbox_msg
if(1355)
blackbox.msg_medical += blackbox_msg
GLOB.blackbox.msg_medical += blackbox_msg
if(1357)
blackbox.msg_engineering += blackbox_msg
GLOB.blackbox.msg_engineering += blackbox_msg
if(1359)
blackbox.msg_security += blackbox_msg
GLOB.blackbox.msg_security += blackbox_msg
if(1441)
blackbox.msg_deathsquad += blackbox_msg
GLOB.blackbox.msg_deathsquad += blackbox_msg
if(1213)
blackbox.msg_syndicate += blackbox_msg
GLOB.blackbox.msg_syndicate += blackbox_msg
if(1349)
blackbox.msg_service += blackbox_msg
GLOB.blackbox.msg_service += blackbox_msg
if(1347)
blackbox.msg_cargo += blackbox_msg
GLOB.blackbox.msg_cargo += blackbox_msg
else
blackbox.messages += blackbox_msg
GLOB.blackbox.messages += blackbox_msg
spawn(50)
qdel(virt)
/proc/Broadcast_SimpleMessage(source, frequency, text, data, mob/M, compression, level)
/* ###### Prepare the radio connection ###### */
if(!M)
var/mob/living/carbon/human/H = new
M = H
var/datum/radio_frequency/connection = SSradio.return_frequency(frequency)
var/display_freq = connection.frequency
var/list/receive = list()
// --- Broadcast only to intercom devices ---
if(data == 1)
for (var/obj/item/device/radio/intercom/R in connection.devices["[RADIO_CHAT]"])
var/turf/position = get_turf(R)
if(position && position.z == level)
receive |= R.send_hear(display_freq, level)
// --- Broadcast only to intercoms and station-bounced radios ---
else if(data == 2)
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
if(R.subspace_transmission)
continue
var/turf/position = get_turf(R)
if(position && position.z == level)
receive |= R.send_hear(display_freq)
// --- Broadcast to syndicate radio! ---
else if(data == 3)
var/datum/radio_frequency/syndicateconnection = SSradio.return_frequency(SYND_FREQ)
for (var/obj/item/device/radio/R in syndicateconnection.devices["[RADIO_CHAT]"])
var/turf/position = get_turf(R)
if(position && position.z == level)
receive |= R.send_hear(SYND_FREQ)
// --- Centcom radio, yo. ---
else if(data == 5)
for(var/obj/item/device/radio/R in all_radios["[RADIO_CHAT]"])
if(R.centcom)
receive |= R.send_hear(CENTCOM_FREQ)
// --- Broadcast to ALL radio devices ---
else
for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"])
var/turf/position = get_turf(R)
if(position && position.z == level)
receive |= R.send_hear(display_freq)
/* ###### Organize the receivers into categories for displaying the message ###### */
// Understood the message:
var/list/heard_normal = list() // normal message
// Did not understand the message:
var/list/heard_garbled = list() // garbled message (ie "f*c* **u, **i*er!")
var/list/heard_gibberish= list() // completely screwed over message (ie "F%! (O*# *#!<>&**%!")
for (var/mob/R in receive)
/* --- Loop through the receivers and categorize them --- */
if (R.client && !(R.client.prefs.chat_toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue
// --- Check for compression ---
if(compression > 0)
heard_gibberish += R
continue
// --- Can understand the speech ---
if (R.languages_understood & M.languages_spoken)
heard_normal += R
// --- Can't understand the speech ---
else
// - Just display a garbled message -
heard_garbled += R
/* ###### Begin formatting and sending the message ###### */
if (length(heard_normal) || length(heard_garbled) || length(heard_gibberish))
/* --- Some miscellaneous variables to format the string output --- */
var/part_a = "<span class='radio'><span class='name'>" // goes in the actual output
var/freq_text // the name of the channel
// --- Set the name of the channel ---
switch(display_freq)
if(SYND_FREQ)
freq_text = "#unkn"
if(COMM_FREQ)
freq_text = "Command"
if(SCI_FREQ)
freq_text = "Science"
if(MED_FREQ)
freq_text = "Medical"
if(ENG_FREQ)
freq_text = "Engineering"
if(SEC_FREQ)
freq_text = "Security"
if(SERV_FREQ)
freq_text = "Service"
if(SUPP_FREQ)
freq_text = "Supply"
if(AIPRIV_FREQ)
freq_text = "AI Private"
//There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO
// --- If the frequency has not been assigned a name, just use the frequency as the name ---
if(!freq_text)
freq_text = format_frequency(display_freq)
// --- Some more pre-message formatting ---
var/part_b_extra = ""
if(data == 3) // intercepted radio message
part_b_extra = " <i>(Intercepted)</i>"
// Create a radio headset for the sole purpose of using its icon
var/obj/item/device/radio/headset/radio = new
var/part_b = "</span><b> \icon[radio]\[[freq_text]\][part_b_extra]</b> <span class='message'>"
var/part_c = "</span></span>"
if (display_freq==SYND_FREQ)
part_a = "<span class='syndradio'><span class='name'>"
else if (display_freq==COMM_FREQ)
part_a = "<span class='comradio'><span class='name'>"
else if (display_freq==SCI_FREQ)
part_a = "<span class='sciradio'><span class='name'>"
else if (display_freq==MED_FREQ)
part_a = "<span class='medradio'><span class='name'>"
else if (display_freq==ENG_FREQ)
part_a = "<span class='engradio'><span class='name'>"
else if (display_freq==SEC_FREQ)
part_a = "<span class='secradio'><span class='name'>"
else if (display_freq==SERV_FREQ)
part_a = "<span class='servradio'><span class='name'>"
else if (display_freq==SUPP_FREQ)
part_a = "<span class='suppradio'><span class='name'>"
else if (display_freq==CENTCOM_FREQ)
part_a = "<span class='centcomradio'><span class='name'>"
else if (display_freq==AIPRIV_FREQ)
part_a = "<span class='aiprivradio'><span class='name'>"
// --- This following recording is intended for research and feedback in the use of department radio channels ---
var/part_blackbox_b = "</span><b> \[[freq_text]\]</b> <span class='message'>"
var/blackbox_msg = "[part_a][source][part_blackbox_b]\"[text]\"[part_c]"
//var/blackbox_admin_msg = "[part_a][M.name] (Real name: [M.real_name])[part_blackbox_b][quotedmsg][part_c]"
//BR.messages_admin += blackbox_admin_msg
if(istype(blackbox))
switch(display_freq)
if(1459)
blackbox.msg_common += blackbox_msg
if(1351)
blackbox.msg_science += blackbox_msg
if(1353)
blackbox.msg_command += blackbox_msg
if(1355)
blackbox.msg_medical += blackbox_msg
if(1357)
blackbox.msg_engineering += blackbox_msg
if(1359)
blackbox.msg_security += blackbox_msg
if(1441)
blackbox.msg_deathsquad += blackbox_msg
if(1213)
blackbox.msg_syndicate += blackbox_msg
if(1349)
blackbox.msg_service += blackbox_msg
if(1347)
blackbox.msg_cargo += blackbox_msg
else
blackbox.messages += blackbox_msg
//End of research and feedback code.
/* ###### Send the message ###### */
/* --- Process all the mobs that heard the voice normally (understood) --- */
if (length(heard_normal))
var/rendered = "[part_a][source][part_b]\"[text]\"[part_c]"
for (var/mob/R in heard_normal)
R.show_message(rendered, 2)
/* --- Process all the mobs that heard a garbled voice (did not understand) --- */
// Displays garbled message (ie "f*c* **u, **i*er!")
if (length(heard_garbled))
var/quotedmsg = "\"[stars(text)]\""
var/rendered = "[part_a][source][part_b][quotedmsg][part_c]"
for (var/mob/R in heard_garbled)
R.show_message(rendered, 2)
/* --- Complete gibberish. Usually happens when there's a compressed message --- */
if (length(heard_gibberish))
var/quotedmsg = "\"[Gibberish(text, compression + 50)]\""
var/rendered = "[part_a][Gibberish(source, compression + 50)][part_b][quotedmsg][part_c]"
for (var/mob/R in heard_gibberish)
R.show_message(rendered, 2)
//Use this to test if an obj can communicate with a Telecommunications Network
/atom/proc/test_telecomms()
@@ -432,7 +198,7 @@
signal.frequency = 1459// Common channel
//#### Sending the signal to all subspace receivers ####//
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list)
R.receive_signal(signal)
sleep(rand(10,25))
@@ -13,7 +13,7 @@
var/universal_translate = 0 // set to 1 if it can translate nonhuman speech
req_access = list(access_tcomsat)
req_access = list(GLOB.access_tcomsat)
circuit = /obj/item/weapon/circuitboard/computer/comm_server
/obj/machinery/computer/telecomms/server/attack_hand(mob/user)
@@ -256,7 +256,7 @@
if(newfreq && canAccess(usr))
if(findtext(num2text(newfreq), "."))
newfreq *= 10 // shift the decimal one place
if(newfreq == SYND_FREQ)
if(newfreq == GLOB.SYND_FREQ)
temp = "<font color = #FF0000>-% Error: Interference preventing filtering frequency: \"[newfreq] GHz\" %-</font color>"
else
if(!(newfreq in freq_listening) && newfreq < 10000)
@@ -33,13 +33,14 @@
sleep(signal.data["slow"]) // simulate the network lag if necessary
/* ###### Broadcast a message using signal.data ###### */
if(signal.frequency == SYND_FREQ) // if syndicate broadcast, just
if(signal.frequency == GLOB.SYND_FREQ) // if syndicate broadcast, just
Broadcast_Message(signal.data["mob"],
signal.data["vmask"],
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"],, signal.data["compression"], list(0, z), signal.frequency, signal.data["spans"],
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"])
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"],
signal.data["language"])
/obj/machinery/telecomms/allinone/attackby(obj/item/P, mob/user, params)
@@ -5,8 +5,8 @@
They receive their message from a server after the message has been logged.
*/
var/list/recentmessages = list() // global list of recent messages broadcasted : used to circumvent massive radio spam
var/message_delay = 0 // To make sure restarting the recentmessages list is kept in sync
GLOBAL_LIST_EMPTY(recentmessages) // global list of recent messages broadcasted : used to circumvent massive radio spam
GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages list is kept in sync
/obj/machinery/telecomms/broadcaster
name = "subspace broadcaster"
@@ -38,9 +38,9 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
original.data["level"] = signal.data["level"]
var/signal_message = "[signal.frequency]:[signal.data["message"]]:[signal.data["realname"]]"
if(signal_message in recentmessages)
if(signal_message in GLOB.recentmessages)
return
recentmessages.Add(signal_message)
GLOB.recentmessages.Add(signal_message)
if(signal.data["slow"] > 0)
sleep(signal.data["slow"]) // simulate the network lag if necessary
@@ -56,17 +56,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["vmask"], signal.data["radio"],
signal.data["message"], signal.data["name"], signal.data["job"], signal.data["realname"],
0, signal.data["compression"], signal.data["level"], signal.frequency, signal.data["spans"],
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"])
/** #### - Simple Broadcast - #### **/
if(signal.data["type"] == 1)
/* ###### Broadcast a message using signal.data ###### */
Broadcast_SimpleMessage(signal.data["name"], signal.frequency,
signal.data["message"],null, null,
signal.data["compression"], listening_level)
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], signal.data["language"])
/** #### - Artificial Broadcast - #### **/
@@ -81,13 +71,13 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
signal.data["radio"], signal.data["message"],
signal.data["name"], signal.data["job"],
signal.data["realname"], 4, signal.data["compression"], signal.data["level"], signal.frequency, signal.data["spans"],
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"])
signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"], signal.data["language"])
if(!message_delay)
message_delay = 1
if(!GLOB.message_delay)
GLOB.message_delay = 1
spawn(10)
message_delay = 0
recentmessages = list()
GLOB.message_delay = 0
GLOB.recentmessages = list()
/* --- Do a snazzy animation! --- */
flick("broadcaster_send", src)
@@ -110,8 +100,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
/obj/machinery/telecomms/broadcaster/Destroy()
// In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore.
if(message_delay)
message_delay = 0
if(GLOB.message_delay)
GLOB.message_delay = 0
return ..()
@@ -133,4 +123,4 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
autolinkers = list("broadcasterB")
/obj/machinery/telecomms/broadcaster/preset_left/birdstation
name = "Broadcaster"
name = "Broadcaster"
@@ -25,7 +25,7 @@
if(is_freq_listening(signal))
if(change_frequency)
if(signal.frequency != SYND_FREQ)
if(signal.frequency != GLOB.SYND_FREQ)
signal.frequency = change_frequency
if(!istype(machine_from, /obj/machinery/telecomms/processor) && machine_from != src) // Signal must be ready (stupid assuming machine), let's send it
@@ -72,25 +72,25 @@
/obj/machinery/telecomms/bus/preset_one
id = "Bus 1"
network = "tcommsat"
freq_listening = list(SCI_FREQ, MED_FREQ)
freq_listening = list(GLOB.SCI_FREQ, GLOB.MED_FREQ)
autolinkers = list("processor1", "science", "medical")
/obj/machinery/telecomms/bus/preset_two
id = "Bus 2"
network = "tcommsat"
freq_listening = list(SUPP_FREQ,SERV_FREQ)
freq_listening = list(GLOB.SUPP_FREQ,GLOB.SERV_FREQ)
autolinkers = list("processor2", "supply", "service")
/obj/machinery/telecomms/bus/preset_three
id = "Bus 3"
network = "tcommsat"
freq_listening = list(SEC_FREQ, COMM_FREQ)
freq_listening = list(GLOB.SEC_FREQ, GLOB.COMM_FREQ)
autolinkers = list("processor3", "security", "command")
/obj/machinery/telecomms/bus/preset_four
id = "Bus 4"
network = "tcommsat"
freq_listening = list(ENG_FREQ)
freq_listening = list(GLOB.ENG_FREQ)
autolinkers = list("processor4", "engineering", "common")
/obj/machinery/telecomms/bus/preset_four/New()
@@ -77,7 +77,7 @@
id = "Receiver A"
network = "tcommsat"
autolinkers = list("receiverA") // link to relay
freq_listening = list(SCI_FREQ, MED_FREQ, SUPP_FREQ, SERV_FREQ) // science, medical, supply, service
freq_listening = list(GLOB.SCI_FREQ, GLOB.MED_FREQ, GLOB.SUPP_FREQ, GLOB.SERV_FREQ) // science, medical, supply, service
//--PRESET RIGHT--//
@@ -86,7 +86,7 @@
id = "Receiver B"
network = "tcommsat"
autolinkers = list("receiverB") // link to relay
freq_listening = list(COMM_FREQ, ENG_FREQ, SEC_FREQ) //command, engineering, security
freq_listening = list(GLOB.COMM_FREQ, GLOB.ENG_FREQ, GLOB.SEC_FREQ) //command, engineering, security
//Common and other radio frequencies for people to freely use
/obj/machinery/telecomms/receiver/preset_right/New()
@@ -72,7 +72,8 @@
log.parameters["name"] = signal.data["name"]
log.parameters["realname"] = signal.data["realname"]
log.parameters["uspeech"] = signal.data["languages"] & HUMAN //good enough
//log.parameters["uspeech"] = signal.data["languages"] & HUMAN //good enough
// TODO languages: ^ I don't know what this does
// If the signal is still compressed, make the log entry gibberish
if(signal.data["compression"] > 0)
@@ -141,22 +142,22 @@
/obj/machinery/telecomms/server/presets/science
id = "Science Server"
freq_listening = list(SCI_FREQ)
freq_listening = list(GLOB.SCI_FREQ)
autolinkers = list("science")
/obj/machinery/telecomms/server/presets/medical
id = "Medical Server"
freq_listening = list(MED_FREQ)
freq_listening = list(GLOB.MED_FREQ)
autolinkers = list("medical")
/obj/machinery/telecomms/server/presets/supply
id = "Supply Server"
freq_listening = list(SUPP_FREQ)
freq_listening = list(GLOB.SUPP_FREQ)
autolinkers = list("supply")
/obj/machinery/telecomms/server/presets/service
id = "Service Server"
freq_listening = list(SERV_FREQ)
freq_listening = list(GLOB.SERV_FREQ)
autolinkers = list("service")
/obj/machinery/telecomms/server/presets/common
@@ -173,19 +174,19 @@
/obj/machinery/telecomms/server/presets/command
id = "Command Server"
freq_listening = list(COMM_FREQ)
freq_listening = list(GLOB.COMM_FREQ)
autolinkers = list("command")
/obj/machinery/telecomms/server/presets/engineering
id = "Engineering Server"
freq_listening = list(ENG_FREQ)
freq_listening = list(GLOB.ENG_FREQ)
autolinkers = list("engineering")
/obj/machinery/telecomms/server/presets/security
id = "Security Server"
freq_listening = list(SEC_FREQ)
freq_listening = list(GLOB.SEC_FREQ)
autolinkers = list("security")
/obj/machinery/telecomms/server/presets/common/birdstation/New()
..()
freq_listening = list()
freq_listening = list()
@@ -12,7 +12,7 @@
Look at radio.dm for the prequel to this code.
*/
var/global/list/obj/machinery/telecomms/telecomms_list = list()
GLOBAL_LIST_EMPTY(telecomms_list)
/obj/machinery/telecomms
icon = 'icons/obj/machines/telecomms.dmi'
@@ -86,7 +86,8 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
"verb_say" = signal.data["verb_say"],
"verb_ask" = signal.data["verb_ask"],
"verb_exclaim" = signal.data["verb_exclaim"],
"verb_yell" = signal.data["verb_yell"]
"verb_yell" = signal.data["verb_yell"],
"language" = signal.data["language"]
)
// Keep the "original" signal constant
@@ -133,7 +134,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
/obj/machinery/telecomms/New()
telecomms_list += src
GLOB.telecomms_list += src
..()
//Set the listening_level if there's none.
@@ -155,13 +156,13 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
for(var/obj/machinery/telecomms/T in urange(20, src, 1))
add_link(T)
else
for(var/obj/machinery/telecomms/T in telecomms_list)
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
add_link(T)
/obj/machinery/telecomms/Destroy()
telecomms_list -= src
for(var/obj/machinery/telecomms/comm in telecomms_list)
GLOB.telecomms_list -= src
for(var/obj/machinery/telecomms/comm in GLOB.telecomms_list)
comm.links -= src
links = list()
return ..()
+2 -2
View File
@@ -165,7 +165,7 @@
var/list/L = list()
var/list/areaindex = list()
if(regime_set == "Teleporter")
for(var/obj/item/device/radio/beacon/R in teleportbeacons)
for(var/obj/item/device/radio/beacon/R in GLOB.teleportbeacons)
var/turf/T = get_turf(R)
if(!T)
continue
@@ -173,7 +173,7 @@
continue
L[avoid_assoc_duplicate_keys(T.loc.name, areaindex)] = R
for(var/obj/item/weapon/implant/tracking/I in tracked_implants)
for(var/obj/item/weapon/implant/tracking/I in GLOB.tracked_implants)
if(!I.imp_in || !ismob(I.loc))
continue
else
+7 -2
View File
@@ -15,7 +15,8 @@
var/cooldown_timer
var/robot_cell_charge = 5000
var/obj/effect/countdown/transformer/countdown
var/mob/living/silicon/ai/masterAI
/obj/machinery/transformer/New()
// On us
..()
@@ -103,6 +104,10 @@
// So he can't jump out the gate right away.
R.SetLockdown()
if(masterAI)
R.connected_ai = masterAI
R.lawsync()
R.lawupdate = 1
addtimer(CALLBACK(src, .proc/unlock_new_robot, R), 50)
/obj/machinery/transformer/proc/unlock_new_robot(mob/living/silicon/robot/R)
@@ -110,7 +115,7 @@
sleep(30)
if(R)
R.SetLockdown(0)
R.notify_ai(1)
R.notify_ai(NEW_BORG)
/obj/machinery/transformer/conveyor/New()
..()
+10 -25
View File
@@ -57,7 +57,7 @@
var/obj/item/weapon/vending_refill/refill_canister = null //The type of refill canisters used by this machine.
/obj/machinery/vending/New()
/obj/machinery/vending/Initialize()
..()
wires = new /datum/wires/vending(src)
if(refill_canister) //constructable vending machine
@@ -162,7 +162,7 @@
while(R.amount>0)
var/obj/O = new dump_path(loc)
step(O, pick(alldirs)) //we only drop 20% of the total of each products and spread it
step(O, pick(GLOB.alldirs)) //we only drop 20% of the total of each products and spread it
R.amount -= 5 //around to not fill the turf with too many objects.
dump_amount++
if(dump_amount > 15) //so we don't drop too many items (e.g. ClothesMate)
@@ -528,6 +528,7 @@
if(icon_vend) //Show the vending animation if needed
flick(icon_vend,src)
new R.product_path(get_turf(src))
feedback_add_details("vending_machine_usage","[R.product_path]|[src.type]")
vend_ready = 1
return
@@ -690,7 +691,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/snack
name = "\improper Getmore Chocolate Corp"
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars"
desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars."
product_slogans = "Try our new nougat bar!;Twice the calories for half the price!"
product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!"
icon_state = "snack"
@@ -705,7 +706,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
name = "\improper Random Snackies"
desc = "Uh oh!"
/obj/machinery/vending/snack/random/New()
/obj/machinery/vending/snack/random/Initialize()
..()
var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random)
new T(get_turf(src))
@@ -757,7 +758,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
name = "\improper Random Drinkies"
desc = "Uh oh!"
/obj/machinery/vending/cola/random/New()
/obj/machinery/vending/cola/random/Initialize()
..()
var/T = pick(subtypesof(/obj/machinery/vending/cola) - /obj/machinery/vending/cola/random)
new T(get_turf(src))
@@ -911,7 +912,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/machinery/vending/hydronutrients
name = "\improper NutriMax"
desc = "A plant nutrients vendor"
desc = "A plant nutrients vendor."
product_slogans = "Aren't you glad you don't have to fertilize the natural way?;Now with 50% less stink!;Plants are people too!"
product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..."
icon_state = "nutri"
@@ -994,8 +995,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/mask/joy = 1,
/obj/item/clothing/head/cueball = 1,
/obj/item/clothing/under/scratch = 1,
/obj/item/clothing/under/sailor = 1,
/obj/item/clothing/head/clownpiece = 1,/obj/item/clothing/under/clownpiece = 1, /obj/item/clothing/suit/clownpiece = 1)
/obj/item/clothing/under/sailor = 1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 2,/obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1, /obj/item/weapon/skub = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
@@ -1119,23 +1119,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/head/beanie=1, /obj/item/clothing/head/beanie/black=1, /obj/item/clothing/head/beanie/red=1, /obj/item/clothing/head/beanie/green=1, /obj/item/clothing/head/beanie/darkblue=1,
/obj/item/clothing/head/beanie/purple=1, /obj/item/clothing/head/beanie/yellow=1, /obj/item/clothing/head/beanie/orange=1, /obj/item/clothing/head/beanie/cyan=1, /obj/item/clothing/head/beanie/christmas=1,
/obj/item/clothing/head/beanie/striped=1, /obj/item/clothing/head/beanie/stripedred=1, /obj/item/clothing/head/beanie/stripedblue=1, /obj/item/clothing/head/beanie/stripedgreen=1,
/obj/item/clothing/suit/jacket/letterman_red=1,
/obj/item/clothing/under/wintercasualwear=1,
/obj/item/clothing/under/casualwear=1,
/obj/item/clothing/under/casualhoodie=1,
/obj/item/clothing/under/casualhoodie/skirt=1,
/obj/item/clothing/under/bb_sweater=2,
/obj/item/clothing/under/bb_sweater/blue=2,
/obj/item/clothing/under/bb_sweater/green=2,
/obj/item/clothing/under/bb_sweater/purple =2,
/obj/item/clothing/under/bb_sweater/red=2)
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=2,/obj/item/clothing/suit/jacket/letterman_syndie=1,/obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1,
/obj/item/clothing/under/wedding/bride_orange=1,
/obj/item/clothing/under/wedding/bride_purple=1,
/obj/item/clothing/under/wedding/bride_blue=1,
/obj/item/clothing/under/wedding/bride_red=1,
/obj/item/clothing/under/wedding/bride_white=1,
/obj/item/clothing/under/keyholesweater=1)
/obj/item/clothing/suit/jacket/letterman_red=1)
contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=2,/obj/item/clothing/suit/jacket/letterman_syndie=1,/obj/item/clothing/under/jabroni=1, /obj/item/clothing/suit/vapeshirt=1, /obj/item/clothing/under/geisha=1)
premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/suit/jacket/leather/overcoat=1,/obj/item/clothing/under/pants/mustangjeans=1,/obj/item/clothing/neck/necklace/dope=3,/obj/item/clothing/suit/jacket/letterman_nanotrasen=1)
refill_canister = /obj/item/weapon/vending_refill/clothing
+1 -1
View File
@@ -39,7 +39,7 @@
user.dna.add_mutation(COLDRES)
user.dna.add_mutation(TK)
ticker.mode.traitors += user.mind
SSticker.mode.traitors += user.mind
user.mind.special_role = "Avatar of the Wish Granter"
var/datum/objective/hijack/hijack = new