mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Merge pull request #14031 from KorPhaeron/AI
New malf power (lipreading) + points rebalancing
This commit is contained in:
@@ -111,7 +111,7 @@
|
|||||||
module_name = "AI Turret Upgrade"
|
module_name = "AI Turret Upgrade"
|
||||||
mod_pick_name = "turret"
|
mod_pick_name = "turret"
|
||||||
description = "Improves the power and health of all AI turrets. This effect is permanent."
|
description = "Improves the power and health of all AI turrets. This effect is permanent."
|
||||||
cost = 50
|
cost = 30
|
||||||
one_time = 1
|
one_time = 1
|
||||||
|
|
||||||
power_type = /mob/living/silicon/ai/proc/upgrade_turrets
|
power_type = /mob/living/silicon/ai/proc/upgrade_turrets
|
||||||
@@ -298,7 +298,7 @@
|
|||||||
mod_pick_name = "overload"
|
mod_pick_name = "overload"
|
||||||
description = "Overloads an electrical machine, causing a small explosion. 2 uses."
|
description = "Overloads an electrical machine, causing a small explosion. 2 uses."
|
||||||
uses = 2
|
uses = 2
|
||||||
cost = 15
|
cost = 20
|
||||||
|
|
||||||
power_type = /mob/living/silicon/ai/proc/overload_machine
|
power_type = /mob/living/silicon/ai/proc/overload_machine
|
||||||
|
|
||||||
@@ -327,7 +327,7 @@
|
|||||||
mod_pick_name = "override"
|
mod_pick_name = "override"
|
||||||
description = "Overrides a machine's programming, causing it to rise up and attack everyone except other machines. 4 uses."
|
description = "Overrides a machine's programming, causing it to rise up and attack everyone except other machines. 4 uses."
|
||||||
uses = 4
|
uses = 4
|
||||||
cost = 15
|
cost = 30
|
||||||
|
|
||||||
power_type = /mob/living/silicon/ai/proc/override_machine
|
power_type = /mob/living/silicon/ai/proc/override_machine
|
||||||
|
|
||||||
@@ -606,3 +606,22 @@
|
|||||||
temp = AM.description
|
temp = AM.description
|
||||||
src.use(usr)
|
src.use(usr)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/datum/AI_Module/large/eavesdrop
|
||||||
|
module_name = "Enhanced Surveillance"
|
||||||
|
mod_pick_name = "eavesdrop"
|
||||||
|
description = "Via a combination of hidden microphones and lip reading software, you are able to use your cameras to listen in on conversations."
|
||||||
|
cost = 30
|
||||||
|
one_time = 1
|
||||||
|
|
||||||
|
power_type = /mob/living/silicon/ai/proc/surveillance
|
||||||
|
|
||||||
|
/mob/living/silicon/ai/proc/surveillance()
|
||||||
|
set category = "Malfunction"
|
||||||
|
set name = "Enhanced Surveillance"
|
||||||
|
|
||||||
|
if(eyeobj)
|
||||||
|
eyeobj.relay_speech = TRUE
|
||||||
|
src << "<span class='notice'>OTA firmware distribution complete! Cameras upgraded: Enhanced surveillance package online.</span>"
|
||||||
|
verbs -= /mob/living/silicon/ai/proc/surveillance
|
||||||
@@ -146,10 +146,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
|||||||
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.
|
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)
|
for(var/mob/living/silicon/ai/master in masters)
|
||||||
if(masters[master] && speaker != master)
|
if(masters[master] && speaker != master)
|
||||||
raw_message = master.lang_treat(speaker, message_langs, raw_message, spans)
|
master.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
|
||||||
var/name_used = speaker.GetVoice()
|
|
||||||
var/rendered = "<i><span class='game say'>Holopad received, <span class='name'>[name_used]</span> <span class='message'>[raw_message]</span></span></i>"
|
|
||||||
master.show_message(rendered, 2)
|
|
||||||
|
|
||||||
/obj/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc)
|
/obj/machinery/hologram/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.
|
var/obj/effect/overlay/holo_pad_hologram/h = new(T)//Spawn a blank effect at the location.
|
||||||
|
|||||||
@@ -843,3 +843,9 @@ var/list/ai_list = list()
|
|||||||
if(M && cameranet && !cameranet.checkTurfVis(get_turf_pixel(M)) && !apc_override)
|
if(M && cameranet && !cameranet.checkTurfVis(get_turf_pixel(M)) && !apc_override)
|
||||||
return
|
return
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/mob/living/silicon/ai/proc/relay_speech(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||||
|
raw_message = lang_treat(speaker, message_langs, raw_message, spans)
|
||||||
|
var/name_used = speaker.GetVoice()
|
||||||
|
var/rendered = "<i><span class='game say'>Relayed Speech: <span class='name'>[name_used]</span> <span class='message'>[raw_message]</span></span></i>"
|
||||||
|
show_message(rendered, 2)
|
||||||
@@ -6,9 +6,10 @@
|
|||||||
/mob/camera/aiEye
|
/mob/camera/aiEye
|
||||||
name = "Inactive AI Eye"
|
name = "Inactive AI Eye"
|
||||||
|
|
||||||
|
invisibility = 100
|
||||||
var/list/visibleCameraChunks = list()
|
var/list/visibleCameraChunks = list()
|
||||||
var/mob/living/silicon/ai/ai = null
|
var/mob/living/silicon/ai/ai = null
|
||||||
|
var/relay_speech = FALSE
|
||||||
|
|
||||||
// Use this when setting the aiEye's location.
|
// Use this when setting the aiEye's location.
|
||||||
// It will also stream the chunk that the new loc is in.
|
// It will also stream the chunk that the new loc is in.
|
||||||
@@ -78,7 +79,6 @@
|
|||||||
if (user.camera_light_on)
|
if (user.camera_light_on)
|
||||||
user.light_cameras()
|
user.light_cameras()
|
||||||
|
|
||||||
|
|
||||||
// Return to the Core.
|
// Return to the Core.
|
||||||
/mob/living/silicon/ai/proc/view_core()
|
/mob/living/silicon/ai/proc/view_core()
|
||||||
|
|
||||||
@@ -104,3 +104,7 @@
|
|||||||
return //won't work if dead
|
return //won't work if dead
|
||||||
acceleration = !acceleration
|
acceleration = !acceleration
|
||||||
usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]."
|
usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]."
|
||||||
|
|
||||||
|
/mob/camera/aiEye/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||||
|
if(relay_speech && speaker && ai && !radio_freq && speaker != ai && near_camera(speaker))
|
||||||
|
ai.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
|
||||||
Reference in New Issue
Block a user