[MIRROR] Turret's process() is now 52% more efficient (#6107)
* Turret's process() is now 52% more efficient * Turret's process() is now 52% more efficient (#36662) * 52% more efficient process() * Less unecessary popdown calls * webediting
This commit is contained in:
committed by
kevinz000
parent
54432ac723
commit
3e25c34dbc
@@ -192,7 +192,7 @@
|
||||
dat += "Assume direct control : <a href='?src=[REF(src)];operation=manual'>Manual Control</a><br>"
|
||||
else
|
||||
dat += "Warning! Remote control protocol enabled.<br>"
|
||||
|
||||
|
||||
|
||||
var/datum/browser/popup = new(user, "autosec", "Automatic Portable Turret Installation", 300, 300)
|
||||
popup.set_content(dat)
|
||||
@@ -364,27 +364,12 @@
|
||||
cover = new /obj/machinery/porta_turret_cover(loc) //if the turret has no cover and is anchored, give it a cover
|
||||
cover.parent_turret = src //assign the cover its parent_turret, which would be this (src)
|
||||
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
if(!always_up)
|
||||
//if the turret has no power or is broken, make the turret pop down if it hasn't already
|
||||
popDown()
|
||||
if(!on || (stat & (NOPOWER|BROKEN)) || manual_control)
|
||||
return
|
||||
|
||||
if(!on)
|
||||
if(!always_up)
|
||||
//if the turret is off, make it pop down
|
||||
popDown()
|
||||
return
|
||||
|
||||
if(manual_control)
|
||||
return
|
||||
var/list/targets = list()
|
||||
var/static/things_to_scan = typecacheof(list(/mob/living, /obj/mecha))
|
||||
|
||||
for(var/A in typecache_filter_list(view(scan_range, base), things_to_scan))
|
||||
var/atom/AA = A
|
||||
|
||||
if(AA.invisibility > SEE_INVISIBLE_LIVING)
|
||||
for(var/mob/A in view(scan_range, base))
|
||||
if(A.invisibility > SEE_INVISIBLE_LIVING)
|
||||
continue
|
||||
|
||||
if(check_anomalies)//if it's set to check for simple animals
|
||||
@@ -423,17 +408,17 @@
|
||||
else if(check_anomalies) //non humans who are not simple animals (xenos etc)
|
||||
if(!in_faction(C))
|
||||
targets += C
|
||||
for(var/A in GLOB.mechas_list)
|
||||
if((get_dist(A, base) < scan_range) && can_see(base, A, scan_range))
|
||||
var/obj/mecha/Mech = A
|
||||
if(Mech.occupant && !in_faction(Mech.occupant)) //If there is a user and they're not in our faction
|
||||
if(assess_perp(Mech.occupant) >= 4)
|
||||
targets += Mech
|
||||
|
||||
if(ismecha(A))
|
||||
var/obj/mecha/M = A
|
||||
//If there is a user and they're not in our faction
|
||||
if(M.occupant && !in_faction(M.occupant))
|
||||
if(assess_perp(M.occupant) >= 4)
|
||||
targets += M
|
||||
|
||||
if(!tryToShootAt(targets))
|
||||
if(!always_up)
|
||||
popDown() // no valid targets, close the cover
|
||||
if(targets.len)
|
||||
tryToShootAt(targets)
|
||||
else if(!always_up)
|
||||
popDown() // no valid targets, close the cover
|
||||
|
||||
/obj/machinery/porta_turret/proc/tryToShootAt(list/atom/movable/targets)
|
||||
while(targets.len > 0)
|
||||
@@ -582,6 +567,8 @@
|
||||
if(controllock)
|
||||
return
|
||||
src.on = on
|
||||
if(!on)
|
||||
popDown()
|
||||
src.mode = mode
|
||||
power_change()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user