diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 93d94664d08..ff4fce02448 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -197,24 +197,10 @@ var/obj/mecha/working/mecha = loc if(!mecha.occupant) return - var/mob/occupant = mecha.occupant - + var/list/occupant = list() + occupant |= mecha.occupant scanning = 1 - var/turf/t = get_turf(src) - var/list/L = list() - var/turf/simulated/mineral/M - for(M in range(7, t)) - if(M.scan_state) - L += M - if(L.len) - if(occupant.client) - for(M in L) - var/turf/T = get_turf(M) - var/image/I = image('icons/turf/mining.dmi', loc = T, icon_state = M.scan_state, layer = 18) - occupant.client.images += I - spawn(30) - if(occupant.client) - occupant.client.images -= I + mineral_scan_pulse(occupant,get_turf(loc)) spawn(equip_cooldown) scanning = 0 diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 7ae0e59c104..78fcf6d541a 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -120,6 +120,9 @@ for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily qdel(B) + var/obj/item/mecha_parts/mecha_equipment/tool/mining_scanner/scanner = new /obj/item/mecha_parts/mecha_equipment/tool/mining_scanner + scanner.attach(src) + /obj/mecha/working/ripley/Exit(atom/movable/O) if(O in cargo) return 0 diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 843d2178793..841a00a5aa0 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -756,23 +756,10 @@ cooldown = 1 spawn(40) cooldown = 0 - var/client/C = user.client - var/list/L = list() - var/turf/simulated/mineral/M - for(M in range(7, user)) - if(M.scan_state) - L += M - if(!L.len) - user << "[src] reports that nothing was detected nearby." - return - else - for(M in L) - var/turf/T = get_turf(M) - var/image/I = image('icons/turf/mining.dmi', loc = T, icon_state = M.scan_state, layer = 18) - C.images += I - spawn(30) - if(C) - C.images -= I + var/list/mobs = list() + mobs |= user + mineral_scan_pulse(mobs, get_turf(user)) + //Debug item to identify all ore spread quickly /obj/item/device/mining_scanner/admin @@ -802,22 +789,24 @@ var/list/mobs = recursive_mob_check(t, 1,0,0) if(!mobs.len) return - var/list/L = list() - var/turf/simulated/mineral/M - for(M in range(7, t)) - if(M.scan_state) - L += M - if(L.len) - for(var/mob/user in mobs) - if(user.client) - var/client/C = user.client - for(M in L) - var/turf/T = get_turf(M) - var/image/I = image('icons/turf/mining.dmi', loc = T, icon_state = M.scan_state, layer = 18) - C.images += I - spawn(30) - if(C) - C.images -= I + mineral_scan_pulse(mobs, t) + +/proc/mineral_scan_pulse(list/mobs, turf/T, range = world.view) + var/list/minerals = list() + for(var/turf/simulated/mineral/M in range(range, T)) + if(M.scan_state) + minerals += M + if(minerals.len) + for(var/mob/user in mobs) + if(user.client) + var/client/C = user.client + for(var/turf/simulated/mineral/M in minerals) + var/turf/F = get_turf(M) + var/image/I = image('icons/turf/mining.dmi', loc = F, icon_state = M.scan_state, layer = 18) + C.images += I + spawn(30) + if(C) + C.images -= I /**********************Xeno Warning Sign**********************/ /obj/structure/sign/xeno_warning_mining