mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Obsolete the PROXMOVE flag and uses
This commit is contained in:
@@ -118,15 +118,33 @@
|
||||
/atom/proc/CheckExit()
|
||||
return 1
|
||||
|
||||
// If you want to use this, the atom must have the PROXMOVE flag, and the moving
|
||||
// atom must also have the PROXMOVE flag currently to help with lag. ~ ComicIronic
|
||||
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
|
||||
// Used to be for the PROXMOVE flag, but that was terrible, so instead it's just here as a stub for
|
||||
// all the atoms that still have the proc, but get events other ways.
|
||||
/atom/proc/HasProximity(turf/T, atom/movable/AM, old_loc)
|
||||
return
|
||||
|
||||
//Register listeners on turfs in a certain range
|
||||
/atom/proc/sense_proximity(var/range = 1, var/callback)
|
||||
ASSERT(callback)
|
||||
ASSERT(isturf(loc))
|
||||
var/list/turfs = trange(range, src)
|
||||
for(var/t in turfs)
|
||||
var/turf/T = t
|
||||
GLOB.turf_entered_event.register(T, src, callback)
|
||||
|
||||
//Unregister from prox listening in a certain range. You should do this BEFORE you move, but if you
|
||||
// really can't, then you can set the center where you moved from.
|
||||
/atom/proc/unsense_proximity(var/range = 1, var/callback, var/center)
|
||||
ASSERT(isturf(center) || isturf(loc))
|
||||
var/list/turfs = trange(range, center ? center : src)
|
||||
for(var/t in turfs)
|
||||
var/turf/T = t
|
||||
GLOB.turf_entered_event.unregister(T, src, callback)
|
||||
|
||||
|
||||
/atom/proc/emp_act(var/severity)
|
||||
return
|
||||
|
||||
|
||||
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
|
||||
P.on_hit(src, 0, def_zone)
|
||||
. = 0
|
||||
|
||||
@@ -87,6 +87,8 @@
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/machinery/camera/Destroy()
|
||||
if(isMotion())
|
||||
unsense_proximity(callback = .HasProximity)
|
||||
deactivate(null, 0) //kick anyone viewing out
|
||||
if(assembly)
|
||||
qdel(assembly)
|
||||
|
||||
@@ -3,15 +3,13 @@
|
||||
var/detectTime = 0
|
||||
var/area/ai_monitored/area_motion = null
|
||||
var/alarm_delay = 100 // Don't forget, there's another 10 seconds in queueAlarm()
|
||||
flags = PROXMOVE
|
||||
|
||||
/obj/machinery/camera/internal_process()
|
||||
// motion camera event loop
|
||||
if (stat & (EMPED|NOPOWER))
|
||||
return
|
||||
if(!isMotion())
|
||||
. = PROCESS_KILL
|
||||
return
|
||||
return PROCESS_KILL
|
||||
if (detectTime > 0)
|
||||
var/elapsed = world.time - detectTime
|
||||
if (elapsed > alarm_delay)
|
||||
@@ -56,7 +54,7 @@
|
||||
detectTime = -1
|
||||
return 1
|
||||
|
||||
/obj/machinery/camera/HasProximity(atom/movable/AM as mob|obj)
|
||||
/obj/machinery/camera/HasProximity(turf/T, atom/movable/AM, old_loc)
|
||||
// Motion cameras outside of an "ai monitored" area will use this to detect stuff.
|
||||
if (!area_motion)
|
||||
if(isliving(AM))
|
||||
|
||||
@@ -212,9 +212,12 @@ var/global/list/engineering_networks = list(
|
||||
update_coverage()
|
||||
|
||||
/obj/machinery/camera/proc/upgradeMotion()
|
||||
if(!isturf(loc))
|
||||
return //nooooo
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
|
||||
setPowerUsage()
|
||||
START_MACHINE_PROCESSING(src)
|
||||
sense_proximity(callback = .HasProximity)
|
||||
update_coverage()
|
||||
|
||||
/obj/machinery/camera/proc/setPowerUsage()
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
anchored = 1
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 2
|
||||
flags = PROXMOVE
|
||||
|
||||
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
|
||||
name = "portable flasher"
|
||||
@@ -92,13 +91,13 @@
|
||||
flash()
|
||||
..(severity)
|
||||
|
||||
/obj/machinery/flasher/portable/HasProximity(atom/movable/AM as mob|obj)
|
||||
if((disable) || (last_flash && world.time < last_flash + 150))
|
||||
/obj/machinery/flasher/portable/HasProximity(turf/T, atom/movable/AM, oldloc)
|
||||
if(disable || !anchored || (last_flash && world.time < last_flash + 150))
|
||||
return
|
||||
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
if(iscarbon(AM))
|
||||
var/mob/living/carbon/M = AM
|
||||
if((M.m_intent != "walk") && (anchored))
|
||||
if(M.m_intent != "walk")
|
||||
flash()
|
||||
|
||||
/obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -108,11 +107,13 @@
|
||||
|
||||
if(!anchored)
|
||||
user.show_message(text("<span class='warning'>[src] can now be moved.</span>"))
|
||||
overlays.Cut()
|
||||
|
||||
cut_overlays()
|
||||
unsense_proximity(callback = .HasProximity)
|
||||
|
||||
else if(anchored)
|
||||
user.show_message(text("<span class='warning'>[src] is now secured.</span>"))
|
||||
overlays += "[base_state]-s"
|
||||
add_overlay("[base_state]-s")
|
||||
sense_proximity(callback = .HasProximity)
|
||||
|
||||
/obj/machinery/button/flasher
|
||||
name = "flasher button"
|
||||
|
||||
@@ -441,7 +441,6 @@
|
||||
|
||||
var/health = 100
|
||||
var/status = BURST //can be GROWING, GROWN or BURST; all mutually exclusive
|
||||
flags = PROXMOVE
|
||||
|
||||
/obj/effect/alien/egg/New()
|
||||
/*
|
||||
@@ -545,16 +544,4 @@
|
||||
/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
if(exposed_temperature > 500 + T0C)
|
||||
health -= 5
|
||||
healthcheck()
|
||||
/*
|
||||
/obj/effect/alien/egg/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(status == GROWN)
|
||||
if(!CanHug(AM))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/C = AM
|
||||
if(C.stat == CONSCIOUS && C.status_flags & XENO_HOST)
|
||||
return
|
||||
|
||||
Burst(0)
|
||||
*/
|
||||
healthcheck()
|
||||
@@ -9,7 +9,6 @@
|
||||
var/mob/attacher = null
|
||||
var/valve_open = 0
|
||||
var/toggle = 1
|
||||
flags = PROXMOVE
|
||||
|
||||
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
|
||||
var/turf/location = get_turf(src) // For admin logs
|
||||
@@ -57,11 +56,15 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/transfer_valve/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(!attached_device) return
|
||||
attached_device.HasProximity(AM)
|
||||
return
|
||||
/obj/item/device/transfer_valve/HasProximity(turf/T, atom/movable/AM, old_loc)
|
||||
attached_device?.HasProximity(T, AM, old_loc)
|
||||
|
||||
/obj/item/device/transfer_valve/Moved(old_loc, direction, forced)
|
||||
. = ..()
|
||||
if(isturf(old_loc))
|
||||
unsense_proximity(callback = .HasProximity, center = old_loc)
|
||||
if(isturf(loc))
|
||||
sense_proximity(callback = .HasProximity)
|
||||
|
||||
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
||||
ui_interact(user)
|
||||
|
||||
@@ -678,6 +678,11 @@ var/list/global/tank_gauge_cache = list()
|
||||
tank.update_icon()
|
||||
tank.overlays -= "bomb_assembly"
|
||||
|
||||
/obj/item/device/tankassemblyproxy/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(src.assembly)
|
||||
src.assembly.HasProximity(AM)
|
||||
/obj/item/device/tankassemblyproxy/HasProximity(turf/T, atom/movable/AM, old_loc)
|
||||
assembly?.HasProximity(T, AM, old_loc)
|
||||
|
||||
/obj/item/device/tankassemblyproxy/Moved(old_loc, direction, forced)
|
||||
if(isturf(old_loc))
|
||||
unsense_proximity(callback = .HasProximity, center = old_loc)
|
||||
if(isturf(loc))
|
||||
sense_proximity(callback = .HasProximity)
|
||||
|
||||
@@ -142,18 +142,8 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
sleep(2)
|
||||
O.update_transform()
|
||||
|
||||
var/const/enterloopsanity = 100
|
||||
/turf/Entered(atom/atom as mob|obj)
|
||||
|
||||
if(movement_disabled)
|
||||
to_chat(usr, "<span class='warning'>Movement is admin-disabled.</span>") //This is to identify lag problems
|
||||
return
|
||||
..()
|
||||
|
||||
if(!istype(atom, /atom/movable))
|
||||
return
|
||||
|
||||
var/atom/movable/A = atom
|
||||
/turf/Entered(var/atom/movable/A, var/old_loc)
|
||||
. = ..()
|
||||
|
||||
if(ismob(A))
|
||||
var/mob/M = A
|
||||
@@ -166,16 +156,6 @@ var/const/enterloopsanity = 100
|
||||
M.inertia_dir = 0
|
||||
M.make_floating(0)
|
||||
|
||||
var/objects = 0
|
||||
if(A && (A.flags & PROXMOVE))
|
||||
for(var/atom/movable/thing in range(1))
|
||||
if(objects++ > enterloopsanity) break
|
||||
spawn(0)
|
||||
if(A) //Runtime prevention
|
||||
A.HasProximity(thing, 1)
|
||||
if ((thing && A) && (thing.flags & PROXMOVE))
|
||||
thing.HasProximity(A, 1)
|
||||
|
||||
/turf/CanPass(atom/movable/mover, turf/target)
|
||||
if(!target)
|
||||
return FALSE
|
||||
|
||||
Reference in New Issue
Block a user