diff --git a/code/WorkInProgress/AI_Visibility.dm b/code/WorkInProgress/AI_Visibility.dm index 59c23695132..6400c479ca8 100644 --- a/code/WorkInProgress/AI_Visibility.dm +++ b/code/WorkInProgress/AI_Visibility.dm @@ -312,7 +312,7 @@ var/datum/cameranet/cameranet = new() /proc/checkcameravis(atom/A) for(var/obj/machinery/camera/C in view(A,7)) - if(!C.status) + if(!C.status || C.stat == 2) continue return 1 return 0 \ No newline at end of file diff --git a/code/defines/mob/simple_animal/corgi.dm b/code/defines/mob/simple_animal/corgi.dm index ed5cf705a4e..855b71a8554 100644 --- a/code/defines/mob/simple_animal/corgi.dm +++ b/code/defines/mob/simple_animal/corgi.dm @@ -146,9 +146,6 @@ src.inventory_head = item_to_add update_clothing() - if(inventory_head && inventory_head.type == /obj/item/clothing/head/caphat) - name = "Captain "+real_name - if("back") if(inventory_back) usr << "\red The [inventory_back] is already in this slot." diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm index 313eb9275f0..1905f673c2d 100644 --- a/code/game/machinery/camera.dm +++ b/code/game/machinery/camera.dm @@ -6,6 +6,8 @@ return ..() if (world.time <= usr:lastDblClick+2) return ..() + if(istype(usr, /mob/living/silicon/ai) && usr.client.eye == usr:eyeobj) + return ..() //try to find the closest working camera in the same area, switch to it var/area/A = get_area(src) @@ -93,6 +95,12 @@ usr.machine = usr spawn (0) + if(client.eye == eyeobj) + if(checkcameravis(target)) + eyeobj.loc = target.loc + else + usr << "Target is not on or near any active cameras on the station." + return while (usr:cameraFollow == target) if (usr:cameraFollow == null) return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d89e68f49ce..1247c8e74b4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -80,10 +80,10 @@ //if(icon_state == initial(icon_state)) var/icontype = "" + var/list/icons = list("Blue", "HAL9000", "Monochrome", "Rainbow", "HAL9000 Mark2", "Inverted", "Firewall", "Green", "Text", "Smiley", "Angry", "Dorf", "Matrix") if (src.name == "B.A.N.N.E.D." && src.ckey == "Spaceman96") - icontype = input("Please, select a display!", "AI", null/*, null*/) in list("B.A.N.N.E.D.", "Blue", "HAL9000", "Monochrome", "Rainbow", "HAL9000 Mark2", "Inverted", "Firewall", "Green", "Text", "Smiley", "Angry", "Dorf", "Matrix") - else - icontype = input("Please, select a display!", "AI", null/*, null*/) in list("Blue", "HAL9000", "Monochrome", "Rainbow", "HAL9000 Mark2", "Inverted", "Firewall", "Green", "Text", "Smiley", "Angry", "Dorf", "Matrix") + icons += "B.A.N.N.E.D." + icontype = input("Please, select a display!", "AI", null/*, null*/) in icons if(icontype == "Blue") icon_state = "ai" else if(icontype == "HAL9000") @@ -346,9 +346,12 @@ // ok, we're alive, camera is good and in our network... - machine = src - src:current = C - reset_view(C) + if(client.eye == eyeobj) + eyeobj.loc = C.loc + else + machine = src + src:current = C + reset_view(C) return 1 /mob/living/silicon/ai/triggerAlarm(var/class, area/A, var/O, var/alarmsource) diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 4d4c7a12b27..b0ff1cb9df9 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -114,7 +114,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates M << browse(dat, "window=paiRecruit") proc/findPAI(var/obj/item/device/paicard/p, var/mob/user) - requestRecruits() + requestRecruits(user) var/list/available = list() for(var/datum/paiCandidate/c in paiController.pai_candidates) if(c.ready) @@ -159,7 +159,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates user << browse(dat, "window=findPai") - proc/requestRecruits() + proc/requestRecruits(var/mob/origin) for(var/mob/dead/observer/O in world) if(jobban_isbanned(O, "pAI")) continue @@ -176,10 +176,10 @@ var/datum/paiController/paiController // Global handler for pAI candidates if(!hasSubmitted && O.client.be_pai) spawn question(O.client) - proc/question(var/client/C) + proc/question(var/client/C, var/mob/origin) asked.Add(C.key) asked[C.key] = world.time - var/response = alert(C, "Someone is requesting a pAI personality. Would you like to play as a personal AI?", "pAI Request", "Yes", "No", "Never for this round") + var/response = alert(C, "[origin] is requesting a pAI personality. Would you like to play as a personal AI?", "pAI Request", "Yes", "No", "Never for this round") if(response == "Yes") recruitWindow(C.mob) else if (response == "Never for this round") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c95aaf65bc5..f1988a6cad5 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -988,16 +988,16 @@ lighting = autoset(lighting, 0) environ = autoset(environ, 0) area.poweralert(0, src) - else if(cell.percent() < 15) // <15%, turn off lighting & equipment - equipment = autoset(equipment, 2) - lighting = autoset(lighting, 2) - environ = autoset(environ, 1) - area.poweralert(0, src) - else if(cell.percent() < 30) // <30%, turn off equipment + else if(cell.percent() < 15) // <15%, turn off equipment equipment = autoset(equipment, 2) lighting = autoset(lighting, 1) environ = autoset(environ, 1) area.poweralert(0, src) + else if(cell.percent() < 30) // <30%, turn off lighting & equipment + equipment = autoset(equipment, 2) + lighting = autoset(lighting, 2) + environ = autoset(environ, 1) + area.poweralert(0, src) else // otherwise all can be on equipment = autoset(equipment, 1) lighting = autoset(lighting, 1)