diff --git a/baystation12.dme b/baystation12.dme index af6e369282f..1b6d146a185 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -44,6 +44,7 @@ #include "code\_onclick\other_mobs.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\ai.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\hud.dm" #include "code\_onclick\hud\human.dm" @@ -1245,6 +1246,7 @@ #include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\nano.dm" #include "code\modules\mob\living\silicon\decoy\death.dm" #include "code\modules\mob\living\silicon\decoy\decoy.dm" #include "code\modules\mob\living\silicon\decoy\life.dm" diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 900e89e7e75..13c622fb3d9 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -127,3 +127,22 @@ #define ui_spell_master "14:16,14:16" #define ui_genetic_master "14:16,12:16" + +// AI + +#define ui_ai_camera_list "SOUTH:6+1,WEST+1:16" +#define ui_ai_track_with_camera "SOUTH:6+1,WEST+2:16" +#define ui_ai_camera_light "SOUTH:6+1,WEST+3:16" +#define ui_ai_sensor "SOUTH:6+1,WEST+4:16" + +#define ui_ai_core "SOUTH:6,WEST+1:16" +#define ui_ai_crew_monitor "SOUTH:6,WEST+2:16" +#define ui_ai_crew_manifest "SOUTH:6,WEST+3:16" +#define ui_ai_alerts "SOUTH:6,WEST+4:16" +#define ui_ai_announcement "SOUTH:6,WEST+5:16" +#define ui_ai_shuttle "SOUTH:6,WEST+6:16" +#define ui_ai_state_laws "SOUTH:6,WEST+7:16" +#define ui_ai_pda_send "SOUTH:6,WEST+8:16" +#define ui_ai_pda_log "SOUTH:6,WEST+9:16" +#define ui_ai_take_picture "SOUTH:6,WEST+10:16" +#define ui_ai_view_images "SOUTH:6,WEST+11:16" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm new file mode 100644 index 00000000000..499dc7f7150 --- /dev/null +++ b/code/_onclick/hud/ai.dm @@ -0,0 +1,143 @@ +/datum/hud/proc/ai_hud() + adding = list() + other = list() + + var/obj/screen/using + +//AI core + using = new /obj/screen() + using.name = "AI Core" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "ai_core" + using.screen_loc = ui_ai_core + using.layer = 20 + adding += using + +//Camera list + using = new /obj/screen() + using.name = "Show Camera List" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "camera" + using.screen_loc = ui_ai_camera_list + using.layer = 20 + adding += using + +//Track + using = new /obj/screen() + using.name = "Track With Camera" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "track" + using.screen_loc = ui_ai_track_with_camera + using.layer = 20 + adding += using + +//Camera light + using = new /obj/screen() + using.name = "Toggle Camera Light" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "camera_light" + using.screen_loc = ui_ai_camera_light + using.layer = 20 + adding += using + +//Crew Monitorting + using = new /obj/screen() + using.name = "Crew Monitoring" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "crew_monitor" + using.screen_loc = ui_ai_crew_monitor + using.layer = 20 + adding += using + +//Crew Manifest + using = new /obj/screen() + using.name = "Show Crew Manifest" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "manifest" + using.screen_loc = ui_ai_crew_manifest + using.layer = 20 + adding += using + +//Alerts + using = new /obj/screen() + using.name = "Show Alerts" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "alerts" + using.screen_loc = ui_ai_alerts + using.layer = 20 + adding += using + +//Announcement + using = new /obj/screen() + using.name = "Announcement" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "announcement" + using.screen_loc = ui_ai_announcement + using.layer = 20 + adding += using + +//Shuttle + using = new /obj/screen() + using.name = "Call Emergency Shuttle" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "call_shuttle" + using.screen_loc = ui_ai_shuttle + using.layer = 20 + adding += using + +//Laws + using = new /obj/screen() + using.name = "State Laws" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "state_laws" + using.screen_loc = ui_ai_state_laws + using.layer = 20 + adding += using + +//PDA message + using = new /obj/screen() + using.name = "PDA - Send Message" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "pda_send" + using.screen_loc = ui_ai_pda_send + using.layer = 20 + adding += using + +//PDA log + using = new /obj/screen() + using.name = "PDA - Show Message Log" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "pda_receive" + using.screen_loc = ui_ai_pda_log + using.layer = 20 + adding += using + +//Take image + using = new /obj/screen() + using.name = "Take Image" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "take_picture" + using.screen_loc = ui_ai_take_picture + using.layer = 20 + adding += using + +//View images + using = new /obj/screen() + using.name = "View Images" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "view_images" + using.screen_loc = ui_ai_view_images + using.layer = 20 + adding += using + +//Medical/Security sensors + using = new /obj/screen() + using.name = "Set Sensor Augmentation" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "ai_sensor" + using.screen_loc = ui_ai_sensor + using.layer = 20 + adding += using + + mymob.client.screen += adding + other + return diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 5dd1b542cfa..08a050d8c5c 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -13,9 +13,6 @@ mymob.blind.screen_loc = "1,1" mymob.blind.layer = 0 -/datum/hud/proc/ai_hud() - return - /datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') blobpwrdisplay = new /obj/screen() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 7af5cf698d6..5a71ff51d4b 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -478,6 +478,83 @@ usr.client.AllowTargetRadio() gun_click_time = world.time + if("AI Core") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.view_core() + + if("Show Camera List") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/camera = input(AI) in AI.get_camera_list() + AI.ai_camera_list(camera) + + if("Track With Camera") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + var/target_name = input(AI) in AI.trackable_mobs() + AI.ai_camera_track(target_name) + + if("Toggle Camera Light") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.toggle_camera_light() + + if("Crew Monitoring") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.nano_crew_monitor() + + if("Show Crew Manifest") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_roster() + + if("Show Alerts") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.subsystem_alarm_monitor() + + if("Announcement") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_announcement() + + if("Call Emergency Shuttle") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.ai_call_shuttle() + + if("State Laws") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.show_laws_verb() + + if("PDA - Send Message") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiPDA.cmd_send_pdamesg(usr) + + if("PDA - Show Message Log") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiPDA.cmd_show_message_log(usr) + + if("Take Image") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.toggle_camera_mode() + + if("View Images") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.aiCamera.viewpictures() + + if("Set Sensor Augmentation") + if(isAI(usr)) + var/mob/living/silicon/ai/AI = usr + AI.sensor_mode() + else return 0 return 1 diff --git a/code/modules/mob/living/silicon/ai/nano.dm b/code/modules/mob/living/silicon/ai/nano.dm new file mode 100644 index 00000000000..9e10cd3a7c9 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/nano.dm @@ -0,0 +1,8 @@ +var/obj/nano_module/crew_monitor/crew_monitor + +/mob/living/silicon/ai/proc/nano_crew_monitor() + set category = "AI Commands" + set name = "Crew Monitor" + if (!crew_monitor) + init_subsystems() + crew_monitor.ui_interact(usr) diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi new file mode 100644 index 00000000000..ddc08ed4395 Binary files /dev/null and b/icons/mob/screen_ai.dmi differ