mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 06:27:26 +01:00
Adds the proximity monitor component. Performance improvement for turf/Entered (#14196)
* proximity monitor * Update code/__HELPERS/unsorted.dm Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> * farie review tweaks * actually I need this Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
This commit is contained in:
co-authored by
AffectedArc07
parent
ead6e898a3
commit
01da8413de
@@ -12,6 +12,10 @@
|
||||
var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
|
||||
/obj/item/onetankbomb/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
|
||||
/obj/item/onetankbomb/examine(mob/user)
|
||||
. = ..()
|
||||
. += bombtank.examine(user)
|
||||
|
||||
@@ -41,19 +41,25 @@
|
||||
if(!A1.remove_item_from_storage(src))
|
||||
if(user)
|
||||
user.remove_from_mob(A1)
|
||||
A1.loc = src
|
||||
A1.forceMove(src)
|
||||
if(!A2.remove_item_from_storage(src))
|
||||
if(user)
|
||||
user.remove_from_mob(A2)
|
||||
A2.loc = src
|
||||
A2.forceMove(src)
|
||||
A1.holder = src
|
||||
A2.holder = src
|
||||
a_left = A1
|
||||
a_right = A2
|
||||
if(has_prox_sensors())
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
name = "[A1.name]-[A2.name] assembly"
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly_holder/proc/has_prox_sensors()
|
||||
if(istype(a_left, /obj/item/assembly/prox_sensor) || istype(a_right, /obj/item/assembly/prox_sensor))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/assembly_holder/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
var/timing = 0
|
||||
var/time = 10
|
||||
|
||||
/obj/item/assembly/prox_sensor/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
|
||||
/obj/item/assembly/prox_sensor/describe()
|
||||
if(timing)
|
||||
return "<span class='notice'>The proximity sensor is arming.</span>"
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
trigger.forceMove(src)
|
||||
trigger.master = src
|
||||
trigger.holder = src
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
to_chat(user, "<span class='notice'>You attach the [W] to [src].</span>")
|
||||
return TRUE
|
||||
else if(istype(W, /obj/item/assembly))
|
||||
@@ -165,6 +166,7 @@
|
||||
trigger.master = null
|
||||
trigger.holder = null
|
||||
trigger = null
|
||||
qdel(GetComponent(/datum/component/proximity_monitor))
|
||||
|
||||
/obj/item/clothing/mask/muzzle/safety/shock/proc/can_shock(obj/item/clothing/C)
|
||||
if(istype(C))
|
||||
@@ -186,7 +188,7 @@
|
||||
M.Jitter(20)
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/muzzle/safety/shock/HasProximity(atom/movable/AM as mob|obj)
|
||||
/obj/item/clothing/mask/muzzle/safety/shock/HasProximity(atom/movable/AM)
|
||||
if(trigger)
|
||||
trigger.HasProximity(AM)
|
||||
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
|
||||
var/attached = 0
|
||||
|
||||
/obj/item/clothing/mask/facehugger/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
|
||||
/obj/item/clothing/mask/facehugger/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
..()
|
||||
if(obj_integrity < 90)
|
||||
@@ -78,7 +82,7 @@
|
||||
return HasProximity(finder)
|
||||
return 0
|
||||
|
||||
/obj/item/clothing/mask/facehugger/HasProximity(atom/movable/AM as mob|obj)
|
||||
/obj/item/clothing/mask/facehugger/HasProximity(atom/movable/AM)
|
||||
if(CanHug(AM) && Adjacent(AM))
|
||||
return Attach(AM)
|
||||
return 0
|
||||
@@ -210,6 +214,7 @@
|
||||
icon_state = "[initial(icon_state)]_dead"
|
||||
item_state = "facehugger_inactive"
|
||||
stat = DEAD
|
||||
qdel(GetComponent(/datum/component/proximity_monitor))
|
||||
|
||||
visible_message("<span class='danger'>[src] curls up into a ball!</span>")
|
||||
|
||||
|
||||
@@ -179,6 +179,7 @@
|
||||
to_chat(usr, "<span class='notice'>You detach [assembly] from [src]</span>")
|
||||
usr.put_in_hands(assembly)
|
||||
assembly = null
|
||||
qdel(GetComponent(/datum/component/proximity_monitor))
|
||||
update_icon()
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>There is no assembly to remove.</span>")
|
||||
@@ -194,7 +195,9 @@
|
||||
return ..()
|
||||
assembly = W
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
if(assembly.has_prox_sensors())
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
overlays += "assembly"
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
usr.visible_message("<span class='notice'>[usr] detaches [rig] from [src].</span>", "<span class='notice'>You detach [rig] from [src].</span>")
|
||||
rig.forceMove(get_turf(usr))
|
||||
rig = null
|
||||
qdel(GetComponent(/datum/component/proximity_monitor))
|
||||
lastrigger = null
|
||||
overlays.Cut()
|
||||
|
||||
@@ -148,7 +149,8 @@
|
||||
rig = H
|
||||
user.drop_item()
|
||||
H.forceMove(src)
|
||||
|
||||
if(rig.has_prox_sensors())
|
||||
AddComponent(/datum/component/proximity_monitor)
|
||||
var/icon/test = getFlatIcon(H)
|
||||
test.Shift(NORTH, 1)
|
||||
test.Shift(EAST, 6)
|
||||
|
||||
Reference in New Issue
Block a user