diff --git a/baystation12.dme b/baystation12.dme index 35c47edeb6..df7506065b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -324,6 +324,7 @@ #include "code\game\machinery\Sleeper.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" +#include "code\game\machinery\status_display_ai.dm" #include "code\game\machinery\suit_storage_unit.dm" #include "code\game\machinery\supply_display.dm" #include "code\game\machinery\syndicatebeacon.dm" diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 451cb24030..a652cd50f0 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -204,86 +204,6 @@ if("time") mode = STATUS_DISPLAY_TIME -/obj/machinery/ai_status_display - icon = 'icons/obj/status_display.dmi' - icon_state = "frame" - name = "AI display" - anchored = 1 - density = 0 - - var/mode = 0 // 0 = Blank - // 1 = AI emoticon - // 2 = Blue screen of death - - var/picture_state // icon_state of ai picture - - var/emotion = "Neutral" - -/obj/machinery/ai_status_display/process() - if(stat & NOPOWER) - overlays.Cut() - return - - update() - -/obj/machinery/ai_status_display/emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - ..(severity) - return - set_picture("ai_bsod") - ..(severity) - -/obj/machinery/ai_status_display/proc/update() - if(mode==0) //Blank - overlays.Cut() - return - - if(mode==1) // AI emoticon - switch(emotion) - if("Very Happy") - set_picture("ai_veryhappy") - if("Happy") - set_picture("ai_happy") - if("Neutral") - set_picture("ai_neutral") - if("Unsure") - set_picture("ai_unsure") - if("Confused") - set_picture("ai_confused") - if("Sad") - set_picture("ai_sad") - if("Surprised") - set_picture("ai_surprised") - if("Upset") - set_picture("ai_upset") - if("Angry") - set_picture("ai_angry") - if("BSOD") - set_picture("ai_bsod") - if("Blank") - set_picture("ai_off") - if("Problems?") - set_picture("ai_trollface") - if("Awesome") - set_picture("ai_awesome") - if("Dorfy") - set_picture("ai_urist") - if("Facepalm") - set_picture("ai_facepalm") - if("Friend Computer") - set_picture("ai_friend") - return - - if(mode==2) // BSOD - set_picture("ai_bsod") - return - - -/obj/machinery/ai_status_display/proc/set_picture(var/state) - picture_state = state - if(overlays.len) - overlays.Cut() - overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) #undef CHARS_PER_LINE #undef FOND_SIZE diff --git a/code/game/machinery/status_display_ai.dm b/code/game/machinery/status_display_ai.dm new file mode 100644 index 0000000000..4077c6d56d --- /dev/null +++ b/code/game/machinery/status_display_ai.dm @@ -0,0 +1,93 @@ +/datum/ai_emotion + var/overlay + var/ckey + +/datum/ai_emotion/New(var/over, var/key) + overlay = over + ckey = key + +var/list/ai_status_emotions = list( + "Very Happy" = new /datum/ai_emotion("ai_veryhappy"), + "Happy" = new /datum/ai_emotion("ai_happy"), + "Neutral" = new /datum/ai_emotion("ai_neutral"), + "Unsure" = new /datum/ai_emotion("ai_unsure"), + "Confused" = new /datum/ai_emotion("ai_confused"), + "Sad" = new /datum/ai_emotion("ai_sad"), + "Surprised" = new /datum/ai_emotion("ai_surprised"), + "Upset" = new /datum/ai_emotion("ai_upset"), + "Angry" = new /datum/ai_emotion("ai_angry"), + "BSOD" = new /datum/ai_emotion("ai_bsod"), + "Blank" = new /datum/ai_emotion("ai_off"), + "Problems?" = new /datum/ai_emotion("ai_trollface"), + "Awesome" = new /datum/ai_emotion("ai_awesome"), + "Dorfy" = new /datum/ai_emotion("ai_urist"), + "Facepalm" = new /datum/ai_emotion("ai_facepalm"), + "Friend Computer" = new /datum/ai_emotion("ai_friend"), + "Tribunal" = new /datum/ai_emotion("ai_tribunal", "serithi"), + "Tribunal Malfunctioning" = new /datum/ai_emotion("ai_tribunal_malf", "serithi") + ) + +/proc/get_ai_emotions(var/ckey) + var/list/emotions = new + for(var/emotion_name in ai_status_emotions) + var/datum/ai_emotion/emotion = ai_status_emotions[emotion_name] + if(!emotion.ckey || emotion.ckey == ckey) + emotions += emotion_name + + return emotions + +/proc/set_ai_status_displays(mob/user as mob) + var/list/ai_emotions = get_ai_emotions(user.ckey) + var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions + for (var/obj/machinery/M in machines) //change status + if(istype(M, /obj/machinery/ai_status_display)) + var/obj/machinery/ai_status_display/AISD = M + AISD.emotion = emote + //if Friend Computer, change ALL displays + else if(istype(M, /obj/machinery/status_display)) + + var/obj/machinery/status_display/SD = M + if(emote=="Friend Computer") + SD.friendc = 1 + else + SD.friendc = 0 + +/obj/machinery/ai_status_display + icon = 'icons/obj/status_display.dmi' + icon_state = "frame" + name = "AI display" + anchored = 1 + density = 0 + + var/mode = 0 // 0 = Blank + // 1 = AI emoticon + // 2 = Blue screen of death + + var/picture_state // icon_state of ai picture + + var/emotion = "Neutral" + +/obj/machinery/ai_status_display/attack_ai/(mob/user as mob) + var/list/ai_emotions = get_ai_emotions(user.ckey) + var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions + src.emotion = emote + +/obj/machinery/ai_status_display/proc/update() + if(mode==0) //Blank + overlays.Cut() + return + + if(mode==1) // AI emoticon + var/datum/ai_emotion/ai_emotion = ai_status_emotions[emotion] + set_picture(ai_emotion.overlay) + return + + if(mode==2) // BSOD + set_picture("ai_bsod") + return + +/obj/machinery/ai_status_display/proc/set_picture(var/state) + picture_state = state + if(overlays.len) + overlays.Cut() + overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) diff --git a/code/game/verbs/AI_status.dm b/code/game/verbs/AI_status.dm deleted file mode 100644 index 39cbc65483..0000000000 --- a/code/game/verbs/AI_status.dm +++ /dev/null @@ -1,22 +0,0 @@ -/mob/living/silicon/ai/proc/ai_statuschange() - set category = "AI Commands" - set name = "AI status" - - if(usr.stat == 2) - usr <<"You cannot change your emotional status because you are dead!" - return - var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Awesome", "Facepalm", "Friend Computer", "Beer mug", "Dwarf", "Fishtank", "Plump Helmet") - if(src.ckey == "serithi") - ai_emotions.Add("Tribunal","Tribunal Malfunctioning") - var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions - for (var/obj/machinery/ai_status_display/AISD in world) //change status - spawn( 0 ) - AISD.emotion = emote - for (var/obj/machinery/status_display/SD in world) //if Friend Computer, change ALL displays - if(emote=="Friend Computer") - spawn(0) - SD.friendc = 1 - else - spawn(0) - SD.friendc = 0 - return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index b24e995aec..91a7c92f6e 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -641,20 +641,7 @@ var/list/ai_verbs_default = list( if(check_unable(AI_CHECK_WIRELESS)) return - var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Surprised", "Sad", "Upset", "Angry", "Awesome", "BSOD", "Blank", "Problems?", "Facepalm", "Friend Computer") - var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions - for (var/obj/machinery/M in machines) //change status - if(istype(M, /obj/machinery/ai_status_display)) - var/obj/machinery/ai_status_display/AISD = M - AISD.emotion = emote - //if Friend Computer, change ALL displays - else if(istype(M, /obj/machinery/status_display)) - - var/obj/machinery/status_display/SD = M - if(emote=="Friend Computer") - SD.friendc = 1 - else - SD.friendc = 0 + set_ai_status_displays(src) return //I am the icon meister. Bow fefore me. //>fefore