AI fixes, borg fixes, map fixes

This commit is contained in:
Markolie
2014-11-14 14:15:17 +01:00
parent 7a888ebf39
commit 0cd3223536
18 changed files with 1569 additions and 1316 deletions
@@ -29,9 +29,16 @@ var/global/wcCommon
/area/security/range,
/area/prison/cell_block/A,
/area/prison/cell_block/B,
/area/prison/cell_block/C,
/area/security/prison/cell_block/A,
/area/security/prison/cell_block/B,
/area/security/prison/cell_block/C,
/area/security/processing,
/area/security/armoury
/area/security/armoury,
/area/security/securearmoury,
/area/security/podbay,
/area/security/securehallway,
/area/security/medbay
)
for(var/A in wsBrigList)
+7 -2
View File
@@ -31,8 +31,12 @@
if(client.buildmode) // comes after object.Click to allow buildmode gui objects to be clicked
build_click(src, client.buildmode, params, A)
return
if(control_disabled || stat)
return
if(alienAI) return
if(alienAI)
return
var/list/modifiers = params2list(params)
if(modifiers["middle"])
@@ -48,7 +52,8 @@
CtrlClickOn(A)
return
if(control_disabled || stat || world.time <= next_move) return
if(world.time <= next_move)
return
next_move = world.time + 9
if(aiCamera.in_camera_mode)
+1 -1
View File
@@ -42,7 +42,7 @@
//Crew Monitorting
using = new /obj/screen()
using.name = "Crew Monitorting"
using.name = "Crew Monitoring"
using.icon = 'icons/mob/screen_ai.dmi'
using.icon_state = "crew_monitor"
using.screen_loc = ui_ai_crew_monitor
+84 -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,23 @@ 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/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 +1200,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 +1346,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"
@@ -1378,7 +1394,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 +1404,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 +1436,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 +1560,7 @@ var/list/ghostteleportlocs = list()
icon_state = "janitor"
/area/hydroponics
name = "Hydroponics"
name = "\improper Hydroponics"
icon_state = "hydro"
//Toxins
@@ -1534,6 +1584,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"
+1 -1
View File
@@ -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 -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)
+5 -1
View File
@@ -27,11 +27,15 @@
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)
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)
+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.
+1 -1
View File
@@ -196,7 +196,7 @@
desc = "Covers the eyes, preventing sight."
icon_state = "blindfold"
item_state = "blindfold"
vision_flags = BLIND
//vision_flags = BLIND
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/eyes.dmi'
+23 -23
View File
@@ -30,25 +30,25 @@ var/list/department_radio_keys = list(
":A" = "alientalk", "#A" = "alientalk", ".A" = "alientalk",
":T" = "Syndicate", "#T" = "Syndicate", ".T" = "Syndicate",
":U" = "Supply", "#U" = "Supply", ".U" = "Supply",
":G" = "changeling", "#G" = "changeling", ".G" = "changeling",
//kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand",
":ä" = "left hand", "#ä" = "left hand", ".ä" = "left hand",
":ø" = "intercom", "#ø" = "intercom", ".ø" = "intercom",
":ð" = "department", "#ð" = "department", ".ð" = "department",
":ñ" = "Command", "#ñ" = "Command", ".ñ" = "Command",
":ò" = "Science", "#ò" = "Science", ".ò" = "Science",
":ü" = "Medical", "#ü" = "Medical", ".ü" = "Medical",
":ó" = "Engineering", "#ó" = "Engineering", ".ó" = "Engineering",
":û" = "Security", "#û" = "Security", ".û" = "Security",
":ö" = "whisper", "#ö" = "whisper", ".ö" = "whisper",
":è" = "binary", "#è" = "binary", ".è" = "binary",
":ô" = "alientalk", "#ô" = "alientalk", ".ô" = "alientalk",
":å" = "Syndicate", "#å" = "Syndicate", ".å" = "Syndicate",
":é" = "Supply", "#é" = "Supply", ".é" = "Supply",
":ï" = "changeling", "#ï" = "changeling", ".ï" = "changeling"
":G" = "changeling", "#G" = "changeling", ".G" = "changeling"
/* //kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand",
":ä" = "left hand", "#ä" = "left hand", ".ä" = "left hand",
":ø" = "intercom", "#ø" = "intercom", ".ø" = "intercom",
":ð" = "department", "#ð" = "department", ".ð" = "department",
":ñ" = "Command", "#ñ" = "Command", ".ñ" = "Command",
":ò" = "Science", "#ò" = "Science", ".ò" = "Science",
":ü" = "Medical", "#ü" = "Medical", ".ü" = "Medical",
":ó" = "Engineering", "#ó" = "Engineering", ".ó" = "Engineering",
":û" = "Security", "#û" = "Security", ".û" = "Security",
":ö" = "whisper", "#ö" = "whisper", ".ö" = "whisper",
":è" = "binary", "#è" = "binary", ".è" = "binary",
":ô" = "alientalk", "#ô" = "alientalk", ".ô" = "alientalk",
":å" = "Syndicate", "#å" = "Syndicate", ".å" = "Syndicate",
":é" = "Supply", "#é" = "Supply", ".é" = "Supply",
":ï" = "changeling", "#ï" = "changeling", ".ï" = "changeling" */
)
/mob/living/proc/binarycheck()
@@ -178,7 +178,7 @@ var/list/department_radio_keys = list(
message_mode = department_radio_keys[channel_prefix]
if (message_mode || speaking || copytext(message,1,2) == ":")
message = trim(copytext(message, 3))
if (!(istype(src,/mob/living/carbon/human) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || isAI(src) && (message_mode=="department") || (message_mode in radiochannels))))
if (!(istype(src,/mob/living/carbon/human) && !isAI(src) && !isrobot(src) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department") || isAI(src) && (message_mode=="department") || (message_mode in radiochannels)))
message_mode = null //only humans can use headsets
if(src.stunned > 2 || (traumatic_shock > 61 && prob(50)))
@@ -302,9 +302,9 @@ var/list/department_radio_keys = list(
if(issilicon(src))
if(isAI(src))//for the AI's radio. This can't be with the borg thing above due to typecasting.
var/mob/living/silicon/ai/A = src
if(A.radio)
A.radio.talk_into(src, message, message_mode)
used_radios += A.radio
if(A.aiRadio)
A.aiRadio.talk_into(src, message, message_mode)
used_radios += A.aiRadio
else
var/mob/living/silicon/Ro=src
if(!isAI(Ro))
+8 -8
View File
@@ -19,7 +19,7 @@ var/list/ai_list = list()
anchored = 1 // -- TLE
density = 1
status_flags = CANSTUN|CANPARALYSE|CANPUSH
var/list/network = list("SS13")
var/list/network = list("SS13","Telecomms")
var/obj/machinery/camera/current = null
var/list/connected_robots = list()
var/aiRestorePowerRoutine = 0
@@ -34,7 +34,7 @@ var/list/ai_list = list()
var/custom_sprite = 0 //For our custom sprites
var/alienAI = 0
var/obj/item/device/radio/headset/heads/ai_integrated/radio = null
var/obj/item/device/radio/headset/heads/ai_integrated/aiRadio = null
//MALFUNCTION
var/datum/module_picker/malf_picker
@@ -91,15 +91,15 @@ var/list/ai_list = list()
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
aiMulti = new(src)
radio = new(src)
radio.myAi = src
aiRadio = new(src)
aiRadio.myAi = src
aiCamera = new/obj/item/device/camera/siliconcam/ai_camera(src)
if (istype(loc, /turf))
verbs.Add(/mob/living/silicon/ai/proc/ai_network_change, \
/mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/control_integrateed_radio)
/mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/control_integrated_radio)
if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside.
@@ -786,11 +786,11 @@ var/list/ai_list = list()
return ..()
/mob/living/silicon/ai/proc/control_integrateed_radio()
/mob/living/silicon/ai/proc/control_integrated_radio()
set name = "Radio Settings"
set desc = "Allows you to change settings of your radio."
set category = "AI Commands"
src << "Accessing Subspace Transceiver control..."
if (src.radio)
src.radio.interact(src)
if (src.aiRadio)
src.aiRadio.interact(src)
@@ -23,9 +23,4 @@
return tally+config.robot_delay
/mob/living/silicon/robot/Move()
if (!is_component_functioning("actuator") || !is_component_functioning("power cell") || !cell)
return
else
if (src.cell.charge > 0)
..()
..()
+14 -4
View File
@@ -50,18 +50,28 @@
alien_talk(message)
else if (department_radio_keys[prefix] == "department")
if(isAI(src)&&client)//For patching directly into AI holopads.
if(isAI(src)&&client) //For patching directly into AI holopads.
var/mob/living/silicon/ai/U = src
message = copytext(message, 3)
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
U.holopad_talk(message)
else//Will not allow anyone by an active AI to use this function.
else //Will not allow anyone by an active AI to use this function.
src << "This function is not available to you."
return
else
return ..(message)
var/mob/living/silicon/ai/AI = src
if (isAI(src) && AI.aiRadio.disabledAi)
src << "\red System Error - Transceiver Disabled"
return
else
return ..(message)
else
return ..(message)
var/mob/living/silicon/ai/AI = src
if (isAI(src) && AI.aiRadio.disabledAi)
src << "\red System Error - Transceiver Disabled"
return
else
return ..(message)
//For holopads only. Usable by AI.
/mob/living/silicon/ai/proc/holopad_talk(var/message)
+1
View File
@@ -785,6 +785,7 @@ var/list/cheartstopper = list("potassium_chloride") //this stops the heart when
var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them.
"CentCom",
"ERT",
"Thunderdome",
"Xeno"
)