From 98175214d6d9f42fca0874dea294095e01a88d5e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 13 Sep 2015 14:32:49 +0200 Subject: [PATCH] Attempts to improve mob in view acquirement. Creates a central proc that can (and will be) re-used. This proc is hopefully more expandable by utilizing proc overrides. It is now 1 instead of 3 loops (made even worse by the fact that each individual loop would re-acquire targets in view). --- code/_helpers/mobs.dm | 25 +++++++++++++++++++++++++ code/game/machinery/portable_turret.dm | 12 +++--------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index 8b112a07b39..cb6cd511a59 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -1,3 +1,28 @@ +/atom/movable/proc/get_mob() + return + +/obj/machinery/bot/mulebot/get_mob() + if(load && istype(load,/mob/living)) + return load + +/obj/mecha/get_mob() + return occupant + +/obj/vehicle/train/get_mob() + return buckled_mob + +/mob/get_mob() + return src + +/proc/mobs_in_view(var/range, var/source) + var/list/mobs = list() + for(var/atom/movable/AM in view(range, source)) + var/M = AM.get_mob() + if(M) + mobs += M + + return mobs + proc/random_hair_style(gender, species = "Human") var/h_style = "Bald" diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 7d2a1bbe0f2..c587046cf72 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -376,7 +376,7 @@ var/list/turret_icons /obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj) var/damage = Proj.get_structure_damage() - + if(!damage) return @@ -444,14 +444,8 @@ var/list/turret_icons var/list/targets = list() //list of primary targets var/list/secondarytargets = list() //targets that are least important - for(var/obj/mecha/ME in view(7,src)) - assess_and_assign(ME.occupant, targets, secondarytargets) - - for(var/obj/vehicle/train/T in view(7,src)) - assess_and_assign(T.load, targets, secondarytargets) - - for(var/mob/living/C in view(7,src)) //loops through all living lifeforms in view - assess_and_assign(C, targets, secondarytargets) + for(var/mob/M in mobs_in_view(world.view, src)) + assess_and_assign(M, targets, secondarytargets) if(!tryToShootAt(targets)) if(!tryToShootAt(secondarytargets)) // if no valid targets, go for secondary targets