Merge pull request #6614 from PsiOmegaDelta/CancelTracking

Fixes #6180
This commit is contained in:
Snapshot
2014-10-06 08:06:48 -07:00
5 changed files with 30 additions and 31 deletions

View File

@@ -45,7 +45,6 @@
return 0
var/obj/machinery/camera/C = track.cameras[camera]
track = null
src.eyeobj.setLoc(C)
return
@@ -175,6 +174,13 @@
src.track = null
ai_actual_track(target)
/mob/living/silicon/ai/proc/ai_cancel_tracking(var/forced = 0)
if(!cameraFollow)
return
src << "Follow camera mode [forced ? "terminated" : "ended"]."
cameraFollow = null
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target as mob)
if(!istype(target)) return
var/mob/living/silicon/ai/U = usr
@@ -192,21 +198,17 @@
if (istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
if(H.wear_id && istype(H.wear_id.GetID(), /obj/item/weapon/card/id/syndicate))
U << "Follow camera mode terminated."
U.cameraFollow = null
U.ai_cancel_tracking(1)
return
if(istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja))
U << "Follow camera mode terminated."
U.cameraFollow = null
U.ai_cancel_tracking(1)
return
if(H.digitalcamo)
U << "Follow camera mode terminated."
U.cameraFollow = null
U.ai_cancel_tracking(1)
return
if(istype(target.loc,/obj/effect/dummy))
U << "Follow camera mode ended."
U.cameraFollow = null
U.ai_cancel_tracking()
return
if (!near_camera(target))
@@ -215,7 +217,7 @@
continue
if(U.eyeobj)
U.eyeobj.setLoc(get_turf(target))
U.eyeobj.setLoc(get_turf(target), 0)
else
view_core()
return

View File

@@ -540,9 +540,6 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/switchCamera(var/obj/machinery/camera/C)
src.cameraFollow = null
if (!C || stat == DEAD) //C.can_use())
return 0
@@ -593,7 +590,6 @@ var/list/ai_verbs_default = list(
set category = "AI Commands"
set name = "Jump To Network"
unset_machine()
src.cameraFollow = null
var/cameralist[0]
if(check_unable())

View File

@@ -35,12 +35,15 @@
// Use this when setting the aiEye's location.
// It will also stream the chunk that the new loc is in.
/mob/aiEye/proc/setLoc(var/T)
/mob/aiEye/proc/setLoc(var/T, var/cancel_tracking = 1)
if(ai)
if(!isturf(ai.loc))
return
if(cancel_tracking)
ai.ai_cancel_tracking()
T = get_turf(T)
loc = T
cameranet.visibility(src)
@@ -85,7 +88,6 @@
if(istype(usr, /mob/living/silicon/ai))
var/mob/living/silicon/ai/AI = usr
if(AI.eyeobj && AI.client.eye == AI.eyeobj)
AI.cameraFollow = null
AI.eyeobj.setLoc(src)
// This will move the AIEye. It will also cause lights near the eye to light up, if toggled.
@@ -110,8 +112,6 @@
else
user.sprint = initial
user.cameraFollow = null
//user.unset_machine() //Uncomment this if it causes problems.
//user.lightNearbyCamera()
@@ -127,21 +127,19 @@
/mob/living/silicon/ai/proc/view_core()
camera = null
cameraFollow = null
unset_machine()
if(src.eyeobj && src.loc)
src.eyeobj.loc = src.loc
else
if(!src.eyeobj)
src << "ERROR: Eyeobj not found. Creating new eye..."
src.eyeobj = new(src.loc)
src.eyeobj.ai = src
src.eyeobj.name = "[src.name] (AI Eye)" // Give it a name
src.SetName(src.name)
if(client && client.eye)
client.eye = src
for(var/datum/camerachunk/c in eyeobj.visibleCameraChunks)
c.remove(eyeobj)
src.eyeobj.setLoc(src)
/mob/living/silicon/ai/proc/toggle_acceleration()
set category = "AI Commands"

View File

@@ -206,7 +206,9 @@
///mob/living/silicon/pai/attack_hand(mob/living/carbon/M as mob)
/mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C)
usr:cameraFollow = null
if(istype(usr, /mob/living))
var/mob/living/U = usr
U.cameraFollow = null
if (!C)
src.unset_machine()
src.reset_view(null)
@@ -216,7 +218,7 @@
// ok, we're alive, camera is good and in our network...
src.set_machine(src)
src:current = C
src.current = C
src.reset_view(C)
return 1
@@ -225,7 +227,7 @@
set name = "Cancel Camera View"
src.reset_view(null)
src.unset_machine()
src:cameraFollow = null
src.cameraFollow = null
//Addition by Mord_Sith to define AI's network change ability
/*
@@ -234,7 +236,7 @@
set name = "Change Camera Network"
src.reset_view(null)
src.unset_machine()
src:cameraFollow = null
src.cameraFollow = null
var/cameralist[0]
if(usr.stat == 2)
@@ -440,4 +442,4 @@
// No binary for pAIs.
/mob/living/silicon/pai/binarycheck()
return 0
return 0

View File

@@ -493,8 +493,9 @@ var/list/slot_equipment_priority = list( \
reset_view(null)
unset_machine()
if(istype(src, /mob/living))
if(src:cameraFollow)
src:cameraFollow = null
var/mob/living/M = src
if(M.cameraFollow)
M.cameraFollow = null
/mob/Topic(href, href_list)
if(href_list["mach_close"])