New Malf Module

High res cameras, inspired by scene in 2001 where HAL reads the lips of the crew.

Costs 10 datapoints, allow the AI eye object to hear the words of crewmembers in vision, also allows the AI to read from any paper regardless of its distance from the camera by clicking on it as usual (allowing an AI to get the monitor code by himself). AI cannot read mobs who have covered their mouth with a mask.
This commit is contained in:
clusterfack
2015-07-31 20:06:44 -05:00
committed by d3athrow
parent 7b0456e441
commit fbe4bd7e4d
7 changed files with 45 additions and 7 deletions

View File

@@ -47,8 +47,7 @@ rcd light flash thingy on matter drain
set name = "Fireproof Core"
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/mob/living/silicon/ai/proc/fireproof_core() called tick#: [world.time]")
for(var/mob/living/silicon/ai/ai in player_list)
ai.fire_res_on_core = 1
ai_flags |= COREFIRERESIST
src.verbs -= /mob/living/silicon/ai/proc/fireproof_core
src << "<span class='warning'>Core fireproofed.</span>"
@@ -183,6 +182,23 @@ rcd light flash thingy on matter drain
PCT.uses -= 1
src << "You cannot shunt anymore."
/datum/AI_Module/large/highrescams
module_name = "High Resolution Cameras"
mod_pick_name = "High Res Cameras"
description = "Allows the AI to read papers and the lips of crewmembers from his cameras!"
cost = 10
power_type = /mob/living/silicon/ai/proc/highrescameras
/mob/living/silicon/ai/proc/highrescameras()
set category = "Malfunction"
set name = "High Res Cams"
ai_flags |= HIGHRESCAMS
eyeobj.addHear()
src.verbs -= /mob/living/silicon/ai/proc/highrescameras
/datum/AI_Module/small/blackout
module_name = "Blackout"
@@ -309,11 +325,11 @@ rcd light flash thingy on matter drain
/datum/module_picker/proc/remove_verbs(var/mob/living/silicon/ai/A)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/module_picker/proc/remove_verbs() called tick#: [world.time]")
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/module_picker/proc/remove_verbs() called tick#: [world.time]")
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/module_picker/proc/remove_verbs() called tick#: [world.time]")
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\\\/datum/module_picker/proc/remove_verbs() called tick#: [world.time]")
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\\\/datum/module_picker/proc/remove_verbs() called tick#: [world.time]")
for(var/datum/AI_Module/AM in possible_modules)
A.verbs.Remove(AM.power_type)

View File

@@ -41,7 +41,7 @@ var/list/ai_list = list()
var/datum/module_picker/malf_picker
var/processing_time = 100
var/list/datum/AI_Module/current_modules = list()
var/fire_res_on_core = 0
var/ai_flags = 0
var/control_disabled = 0 // Set to 1 to stop AI from interacting via Click() -- TLE
var/malfhacking = 0 // More or less a copy of the above var, so that malf AIs can hack and still get new cyborgs -- NeoFite

View File

@@ -33,6 +33,19 @@
/mob/camera/aiEye/Move()
return 0
//An AI eyeobj mob cant have a virtualhearer to hear with unless it gets one from a malf module
/mob/camera/aiEye/Hear(message, atom/movable/speaker, var/datum/language/speaking, raw_message, radio_freq)
if(radio_freq) //HOW CAN IT POSSIBLY READ LIPS THROUGH RADIOS
return
var/mob/M = speaker
if(istype(M))
if(ishuman(M))
var/mob/living/carbon/human/H = speaker
if(H.check_body_part_coverage(MOUTH)) //OR MASKS
return
ai.Hear(args) //He can only read the lips of mobs, I cant think of objects using lips
// AI MOVEMENT

View File

@@ -164,7 +164,7 @@
health = maxHealth
stat = CONSCIOUS
else
if(fire_res_on_core)
if(ai_flags & COREFIRERESIST)
health = maxHealth - getOxyLoss() - getToxLoss() - getBruteLoss()
else
health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()

View File

@@ -92,7 +92,7 @@
dist = get_dist(src, user.current)
else //cyborg or AI not seeing through a camera
dist = get_dist(src, user)
if(dist < 2)
if(dist < 2 || (user.ai_flags & HIGHRESCAMS))
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY[color ? " bgcolor=[src.color]":""]>[info][stamps]</BODY></HTML>", "window=[name]")
onclose(usr, "[name]")
else

View File

@@ -1207,3 +1207,8 @@ var/proccalls = 1
#define ORE_PROCESSING_ALLOY 2
#define SOUND_AMBIANCE 485 //Literally arbitrary.
//MALFUNCTION FLAGS
#define COREFIRERESIST 1
#define HIGHRESCAMS 2

View File

@@ -0,0 +1,4 @@
author: Clusterfack
delete-after: true
changes:
- rscadd: Adds a new malf module High Res Cams - for 10 points it lets you stealthily read the lips of people with your vision and also read paper from long range