Merge remote-tracking branch 'upstream/master'

This commit is contained in:
DZD
2014-11-16 18:03:55 -05:00
25 changed files with 3058 additions and 2507 deletions
+96 -30
View File
@@ -543,39 +543,39 @@ var/list/ghostteleportlocs = list()
icon_state = "yellow"
/area/syndicate_station/southwest
name = "\improper south-west of SS13"
name = "\improper South-West of SS13"
icon_state = "southwest"
/area/syndicate_station/northwest
name = "\improper north-west of SS13"
name = "\improper North-West of SS13"
icon_state = "northwest"
/area/syndicate_station/northeast
name = "\improper north-east of SS13"
name = "\improper North-East of SS13"
icon_state = "northeast"
/area/syndicate_station/southeast
name = "\improper south-east of SS13"
name = "\improper South-East of SS13"
icon_state = "southeast"
/area/syndicate_station/north
name = "\improper north of SS13"
name = "\improper North of SS13"
icon_state = "north"
/area/syndicate_station/south
name = "\improper south of SS13"
name = "\improper South of SS13"
icon_state = "south"
/area/syndicate_station/commssat
name = "\improper south of the communication satellite"
name = "\improper South of the Communication Satellite"
icon_state = "south"
/area/syndicate_station/mining
name = "\improper north east of the mining asteroid"
name = "\improper North-East of the Mining Asteroid"
icon_state = "north"
/area/syndicate_station/transit
name = "\improper hyperspace"
name = "\improper Hyperspace"
icon_state = "shuttle"
/area/wizard_station
@@ -596,66 +596,66 @@ var/list/ghostteleportlocs = list()
/area/vox_station/transit
name = "\improper hyperspace"
name = "\improper Hyperspace"
icon_state = "shuttle"
requires_power = 0
/area/vox_station/southwest_solars
name = "\improper aft port solars"
name = "\improper Aft Port Solars"
icon_state = "southwest"
requires_power = 0
/area/vox_station/northwest_solars
name = "\improper fore port solars"
name = "\improper Fore Port Solars"
icon_state = "northwest"
requires_power = 0
/area/vox_station/northeast_solars
name = "\improper fore starboard solars"
name = "\improper Fore Starboard Solars"
icon_state = "northeast"
requires_power = 0
/area/vox_station/southeast_solars
name = "\improper aft starboard solars"
name = "\improper Aft Starboard Solars"
icon_state = "southeast"
requires_power = 0
/area/vox_station/mining
name = "\improper nearby mining asteroid"
name = "\improper Nearby Mining Asteroid"
icon_state = "north"
requires_power = 0
/area/xenos_station/start
name = "\improper start area"
name = "\improper Start Area"
icon_state = "north"
/area/xenos_station/transit
name = "\improper hyperspace"
name = "\improper Hyperspace"
icon_state = "shuttle"
/area/xenos_station/southwest
name = "\improper aft port solars"
name = "\improper Aft Port Solars"
icon_state = "southwest"
/area/xenos_station/northwest
name = "\improper fore port solars"
name = "\improper Fore Port Solars"
icon_state = "northwest"
/area/xenos_station/northeast
name = "\improper fore starboard solars"
name = "\improper Fore Starboard Solars"
icon_state = "northeast"
requires_power = 0
/area/xenos_station/southeast
name = "\improper aft starboard solars"
name = "\improper Aft Starboard Solars"
icon_state = "southeast"
/area/xenos_station/north
name = "\improper west landing area"
name = "\improper West Landing Area"
icon_state = "north"
/area/xenos_station/south
name = "\improper east landing area"
name = "\improper East Landing Area"
icon_state = "south"
//PRISON
@@ -1023,11 +1023,27 @@ var/list/ghostteleportlocs = list()
/area/chapel/office
name = "\improper Chapel Office"
icon_state = "chapeloffice"
/area/escapepodbay
name = "Escape Shuttle Hallway Podbay"
icon_state = "escape"
/area/lawoffice
name = "\improper Law Office"
icon_state = "law"
/area/magistrateoffice
name = "\improper Magistrate's Office"
icon_state = "law"
area/clownoffice
name = "\improper Clown's Office"
icon_state = "dk_yellow"
area/mimeoffice
name = "\improper Mime's Office"
icon_state = "dk_yellow"
/area/civilian/barber
name = "\improper Barber Shop"
icon_state = "barber"
@@ -1188,19 +1204,19 @@ var/list/ghostteleportlocs = list()
icon_state = "panelsP"
/area/maintenance/auxsolarport
name = "Fore Port Solar Maintenance"
name = "\improper Fore Port Solar Maintenance"
icon_state = "SolarcontrolA"
/area/maintenance/starboardsolar
name = "Aft Starboard Solar Maintenance"
name = "\improper Aft Starboard Solar Maintenance"
icon_state = "SolarcontrolS"
/area/maintenance/portsolar
name = "Aft Port Solar Maintenance"
name = "\improper Aft Port Solar Maintenance"
icon_state = "SolarcontrolP"
/area/maintenance/auxsolarstarboard
name = "Fore Starboard Solar Maintenance"
name = "\improper Fore Starboard Solar Maintenance"
icon_state = "SolarcontrolA"
@@ -1334,6 +1350,10 @@ var/list/ghostteleportlocs = list()
/area/medical/virology
name = "\improper Virology"
icon_state = "virology"
/area/medical/virology/lab
name = "\improper Virology Laboratory"
icon_state = "virology"
/area/medical/morgue
name = "\improper Morgue"
@@ -1370,6 +1390,10 @@ var/list/ghostteleportlocs = list()
/area/medical/sleeper
name = "\improper Medical Treatment Center"
icon_state = "exam_room"
/area/medical/paramedic
name = "\improper Paramedic"
icon_state = "medbay"
//Security
@@ -1378,7 +1402,7 @@ var/list/ghostteleportlocs = list()
icon_state = "security"
/area/security/lobby
name = "\improper Security lobby"
name = "\improper Security Lobby"
icon_state = "security"
/area/security/brig
@@ -1388,11 +1412,31 @@ var/list/ghostteleportlocs = list()
/area/security/prison
name = "\improper Prison Wing"
icon_state = "sec_prison"
/area/security/prison/cell_block/A
name = "Prison Cell Block A"
icon_state = "brig"
/area/security/prison/cell_block/B
name = "Prison Cell Block B"
icon_state = "brig"
/area/security/prison/cell_block/C
name = "Prison Cell Block C"
icon_state = "brig"
/area/security/medbay
name = "\improper Security Medbay"
icon_state = "brig"
/area/security/processing
name = "\improper Prisoner Processing"
icon_state = "sec_prison"
/area/security/warden
name = "\improper Security Medbay"
icon_state = "Warden"
/area/security/warden
name = "\improper Warden"
icon_state = "Warden"
@@ -1400,13 +1444,27 @@ var/list/ghostteleportlocs = list()
/area/security/armoury
name = "\improper Armory"
icon_state = "Warden"
/area/security/securearmoury
name = "\improper Secure Armory"
icon_state = "Warden"
/area/security/armoury/gamma
name = "\improper Gamma Armory"
icon_state = "Warden"
requires_power = 0
/area/security/securehallway
name = "\improper Security Secure Hallway"
icon_state = "security"
/area/security/hos
name = "\improper Head of Security's Office"
icon_state = "sec_hos"
area/security/podbay
name = "\improper Security Podbay"
icon_state = "security"
/area/security/detectives_office
name = "\improper Detective's Office"
@@ -1510,7 +1568,7 @@ var/list/ghostteleportlocs = list()
icon_state = "janitor"
/area/hydroponics
name = "Hydroponics"
name = "\improper Hydroponics"
icon_state = "hydro"
//Toxins
@@ -1534,6 +1592,10 @@ var/list/ghostteleportlocs = list()
/area/toxins/xenobiology
name = "\improper Xenobiology Lab"
icon_state = "toxlab"
/area/toxins/xenobiology/flora
name = "\improper Xenobiology Flora Lab"
icon_state = "toxlab"
/area/toxins/storage
name = "\improper Toxins Storage"
@@ -2183,7 +2245,11 @@ var/list/the_station_areas = list (
/area/holodeck,
/area/library,
/area/chapel,
/area/escapepodbay,
/area/lawoffice,
/area/magistrateoffice,
/area/clownoffice,
/area/mimeoffice,
/area/engine,
/area/solar,
/area/assembly,
+2 -2
View File
@@ -91,7 +91,7 @@ var/bomb_set
O.loc = src
src.auth = O
src.add_fingerprint(user)
nanomanager.update_uis(src)
ui_interact(user)
return
if (src.anchored)
@@ -323,7 +323,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
if (text2num(lastentered) == null)
var/turf/LOC = get_turf(usr)
message_admins("[key_name_admin(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: <a href='?_src_=vars;Vars=\ref[src]'>[lastentered]</a>! ([LOC ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[LOC.x];Y=[LOC.y];Z=[LOC.z]'>JMP</a>" : "null"])", 0)
log_admin("EXPLOIT : [key_name(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: [lastentered]!")
log_admin("EXPLOIT: [key_name(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: [lastentered]!")
else
src.code += lastentered
if (length(src.code) > 5)
+1 -1
View File
@@ -84,7 +84,7 @@
supervisors = "the chief engineer"
selection_color = "#fff5cc"
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
minimal_access = list(access_eva, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction)
minimal_access = list(access_eva, access_atmospherics, access_maint_tunnels, access_external_airlocks, access_emergency_storage, access_construction)
alt_titles = list("Atmospheric Technician")
minimal_player_age = 7
+2 -1
View File
@@ -58,7 +58,8 @@
/obj/item/weapon/gun/energy/laser/bluetag,\
/obj/item/weapon/gun/energy/laser/redtag,\
/obj/item/weapon/gun/energy/laser/practice,\
/obj/item/weapon/melee/telebaton)
/obj/item/weapon/melee/telebaton,\
/obj/item/weapon/melee/baton/loaded/ntcane)
/obj/machinery/bot/secbot/beepsky
+1 -4
View File
@@ -1,5 +1,4 @@
/mob/living/silicon/ai/proc/get_camera_list()
if(src.stat == 2)
return
@@ -15,13 +14,11 @@
var/list/tempnetwork = C.network&src.network
if (tempnetwork.len)
T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C
else return
track = new()
track.cameras = T
return T
/mob/living/silicon/ai/proc/ai_camera_list(var/camera in get_camera_list())
if(src.stat == 2)
src << "You can't list the cameras because you are dead!"
@@ -29,7 +26,7 @@
if (!camera || camera == "Cancel")
return 0
var/obj/machinery/camera/C = track.cameras[camera]
track = null
src.eyeobj.setLoc(C)
+13 -6
View File
@@ -18,20 +18,27 @@
networks["SS13"] = list(access_hos,access_captain)
networks["Telecomms"] = list(access_hos,access_captain)
networks["Research Outpost"] = list(access_rd,access_hos,access_captain)
networks["Mining Outpost"] = list(access_qm,access_hop,access_hos,access_captain)
networks["Mining Outpost"] = list(access_qm,access_hop,access_hos,access_captain)
networks["Research"] = list(access_rd,access_hos,access_captain)
networks["Prison"] = list(access_hos,access_captain)
networks["Interrogation"] = list(access_hos,access_captain)
networks["Interrogation"] = list(access_hos,access_captain)
networks["Atmosphere Alarms"] = list(access_ce,access_hos,access_captain)
networks["Fire Alarms"] = list(access_ce,access_hos,access_captain)
networks["Power Alarms"] = list(access_ce,access_hos,access_captain)
networks["Supermatter"] = list(access_ce,access_hos,access_captain)
networks["Singularity"] = list(access_ce,access_hos,access_captain)
networks["Singularity"] = list(access_ce,access_hos,access_captain)
networks["Anomaly Isolation"] = list(access_rd,access_hos,access_captain)
networks["Toxins"] = list(access_rd,access_hos,access_captain)
networks["Telepad"] = list(access_rd,access_hos,access_captain)
networks["ERT"] = list(access_cent_teleporter,access_cent_captain)
networks["CentCom"] = list(access_cent_captain)
networks["Thunderdome"] = list(access_cent_captain)
networks["Thunderdome"] = list(access_cent_captain)
attack_ai(var/mob/user as mob)
return ui_interact(user)
if(isAI(user))
return ui_interact(user)
else
return attack_hand(user)
attack_paw(var/mob/user as mob)
return attack_hand(user)
@@ -261,4 +268,4 @@
name = "Engineering Camera Monitor"
desc = "Used to monitor fires and breaches."
icon_state = "engineeringcameras"
network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms")
network = list("Power Alarms","Atmosphere Alarms","Fire Alarms")
+41 -4
View File
@@ -25,7 +25,10 @@
if(T && istype(T) && T.zone)
var/datum/gas_mixture/environment = T.return_air()
for(var/i=1;i<=stats.len;i++)
rstats[i] = environment.vars[stats[i]]
if(stats[i] == "pressure")
rstats[i] = environment.return_pressure()
else
rstats[i] = environment.vars[stats[i]]
else if(istype(T, /turf/simulated))
rstats = null // Exclude zone (wall, door, etc).
else if(istype(T, /turf))
@@ -37,7 +40,7 @@
return temps
#define FIREDOOR_MAX_PRESSURE_DIFF 25 // kPa
#define FIREDOOR_MAX_TEMP 50 // °C
#define FIREDOOR_MAX_TEMP 50 // Celsius
#define FIREDOOR_MIN_TEMP 0
// Bitflags
@@ -100,6 +103,7 @@
/obj/machinery/door/firedoor/examine()
set src in view()
. = ..()
if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF)
usr << "<span class='warning'>WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!</span>"
@@ -125,7 +129,7 @@
o += "<span class='warning'>"
else
o += "<span style='color:blue'>"
o += "[celsius]?C</span> "
o += "[celsius]Celsius</span> "
o += "<span style='color:blue'>"
o += "[pressure]kPa</span></li>"
usr << o
@@ -159,7 +163,6 @@
stat |= NOPOWER
return
/obj/machinery/door/firedoor/attack_hand(mob/user as mob)
return attackby(null, user)
@@ -279,8 +282,42 @@
if(alarmed)
nextstate = CLOSED
/obj/machinery/door/firedoor/attack_ai(mob/user as mob)
if(operating)
return //Already doing something.
if(blocked)
user << "\red \The [src] is welded solid!"
return
var/area/A = get_area_master(src)
ASSERT(istype(A)) // This worries me.
var/alarmed = A.air_doors_activated || A.fire
var/access_granted = 0
if(isAI(user) || isrobot(user))
access_granted = 1
if(access_granted == 1)
user.visible_message("\blue \The [src] [density ? "open" : "close"]s for \the [user].",\
"\The [src] [density ? "open" : "close"]s.",\
"You hear a beep, and a door opening.")
var/needs_to_close = 0
if(density)
if(alarmed)
needs_to_close = 1
spawn()
open()
else
spawn()
close()
if(needs_to_close)
spawn(50)
if(alarmed)
nextstate = CLOSED
// CHECK PRESSURE
/obj/machinery/door/firedoor/process()
..()
+43 -15
View File
@@ -219,7 +219,50 @@ var/global/list/obj/item/device/pda/PDAs = list()
return
var/selected = plist[c]
aiPDA.create_message(user, selected)
/mob/living/silicon/ai/proc/cmd_show_message_log(mob/user as mob)
if(user.stat == 2)
user << "You can't do that because you are dead!"
return
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>"
for(var/index in aiPDA.tnote)
if(index["sent"])
HTML += addtext("<i><b>&rarr; To <a href='byond://?src=\ref[src];choice=Message;target=",index["src"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
else
HTML += addtext("<i><b>&larr; From <a href='byond://?src=\ref[src];choice=Message;target=",index["target"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
HTML +="</body></html>"
user << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
/obj/item/device/pda/ai/verb/cmd_send_pdamesg()
set category = "AI IM"
set name = "Send PDA Message"
set src in usr
if(usr.stat == 2)
usr << "You can't send PDA messages because you are dead!"
return
var/list/plist = available_pdas()
if (plist)
var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist)
if (!c) // if the user hasn't selected a PDA file we can't send a message
return
var/selected = plist[c]
create_message(usr, selected)
/obj/item/device/pda/ai/verb/cmd_show_message_log()
set category = "AI IM"
set name = "Show Message Log"
set src in usr
if(usr.stat == 2)
usr << "You can't do that because you are dead!"
return
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>"
for(var/index in tnote)
if(index["sent"])
HTML += addtext("<i><b>&rarr; To <a href='byond://?src=\ref[src];choice=Message;target=",index["src"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
else
HTML += addtext("<i><b>&larr; From <a href='byond://?src=\ref[src];choice=Message;target=",index["target"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
HTML +="</body></html>"
usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
/obj/item/device/pda/ai/verb/cmd_toggle_pda_receiver()
set category = "AI IM"
@@ -242,21 +285,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
silent=!silent
usr << "<span class='notice'>PDA ringer toggled [(silent ? "Off" : "On")]!</span>"
/mob/living/silicon/ai/proc/cmd_show_message_log(mob/user as mob)
if(user.stat == 2)
user << "You can't do that because you are dead!"
return
var/HTML = "<html><head><title>AI PDA Message Log</title></head><body>"
for(var/index in aiPDA.tnote)
if(index["sent"])
HTML += addtext("<i><b>&rarr; To <a href='byond://?src=\ref[src];choice=Message;target=",index["src"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
else
HTML += addtext("<i><b>&larr; From <a href='byond://?src=\ref[src];choice=Message;target=",index["target"],"'>", index["owner"],"</a>:</b></i><br>", index["message"], "<br>")
HTML +="</body></html>"
user << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0")
/obj/item/device/pda/ai/can_use()
return 1
+5 -5
View File
@@ -71,9 +71,9 @@
dat += "<br>"
dat += {"<a href='byond://?src=\ref[src];choice=Wireless'>[A.control_disabled ? "Enable" : "Disable"] Wireless Activity</a>"}
dat += "<br>"
dat += "Subspace Transceiver is: [A.radio.disabledAi ? "Disabled" : "Enabled"]"
dat += "Subspace Transceiver is: [A.aiRadio.disabledAi ? "Disabled" : "Enabled"]"
dat += "<br>"
dat += {"<a href='byond://?src=\ref[src];choice=Radio'>[A.radio.disabledAi ? "Enable" : "Disable"] Subspace Transceiver</a>"}
dat += {"<a href='byond://?src=\ref[src];choice=Radio'>[A.aiRadio.disabledAi ? "Enable" : "Disable"] Subspace Transceiver</a>"}
dat += "<br>"
dat += {"<a href='byond://?src=\ref[src];choice=Close'> Close</a>"}
user << browse(dat, "window=aicard")
@@ -116,9 +116,9 @@
if ("Radio")
for(var/mob/living/silicon/ai/A in src)
A.radio.disabledAi = !A.radio.disabledAi
A << "Your Subspace Transceiver has been: [A.radio.disabledAi ? "disabled" : "enabled"]"
U << "You [A.radio.disabledAi ? "Disable" : "Enable"] the AI's Subspace Transceiver"
A.aiRadio.disabledAi = !A.aiRadio.disabledAi
A << "Your Subspace Transceiver has been: [A.aiRadio.disabledAi ? "disabled" : "enabled"]"
U << "You [A.aiRadio.disabledAi ? "Disable" : "Enable"] the AI's Subspace Transceiver"
if ("Wireless")
for(var/mob/living/silicon/ai/A in src)
@@ -171,7 +171,8 @@
/obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
name = "AI Subspace Transceiver"
desc = "Integrated AI radio transceiver."
icon_state = "ai_radio"
icon = 'icons/obj/robot_component.dmi'
icon_state = "radio"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/ai_integrated
var/myAi = null // Atlantis: Reference back to the AI which has this radio.
@@ -150,6 +150,7 @@
new /obj/item/device/radio/headset/headset_eng(src)
new /obj/item/clothing/suit/storage/hazardvest(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/weapon/cartridge/atmos(src)
new /obj/item/taperoll/engineering(src)
return