up ports bluespace disruptor (#9128)

This commit is contained in:
Kashargul
2024-10-04 19:00:23 +02:00
committed by GitHub
parent 9f3f16ae8d
commit 6b63352129
11 changed files with 113 additions and 8 deletions

View File

@@ -61,7 +61,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
// Motion cameras outside of an "ai monitored" area will use this to detect stuff.

View File

@@ -105,7 +105,7 @@
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
if(disable || !anchored || (last_flash && world.time < last_flash + 150))

View File

@@ -62,7 +62,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
attached_device?.HasProximity(T, WEAKREF(AM), old_loc)
// CHOMPEdit End

View File

@@ -668,7 +668,7 @@ var/list/global/tank_gauge_cache = list()
return
var/atom/movable/AM = WF
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
assembly?.HasProximity(T, WEAKREF(AM), old_loc)
// CHOMPEdit End

View File

@@ -77,7 +77,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
if(a_left)

View File

@@ -39,7 +39,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
if (istype(AM, /obj/effect/beam))

View File

@@ -5,7 +5,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
if(!is_mature() || seed.get_trait(TRAIT_SPREAD) != 2)

View File

@@ -59,7 +59,7 @@
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called with [AM] on [src] ([usr]).")
log_debug("DEBUG: HasProximity called without reference on [src].")
return
// CHOMPEdit End
if(!istype(AM, /mob/living) || AM:incorporeal_move)

View File

@@ -0,0 +1,104 @@
/obj/machinery/bluespace_denier
name = "bluespace desyncronizer"
desc = "A portable device that causes small disruptions to bluespace when its sensors detect activity within it nearby. Wrench to activate and deactivate."
icon = 'modular_chomp/icons/obj/machines/bs_disruptor.dmi'
icon_state = "pflash1"
layer = ABOVE_WINDOW_LAYER
var/range = 4
var/last_pulse = 0 //Don't want it getting spammed like regular flashes
var/base_state = "mflash"
anchored = FALSE
base_state = "pflash"
density = TRUE
use_power = USE_POWER_IDLE
idle_power_usage = 2
var/timerid
/obj/machinery/bluespace_denier/Initialize()
. = ..()
// if already anchored, setup the proxity check
timerid = addtimer(CALLBACK(src, PROC_REF(start_up)), 10 SECONDS, TIMER_STOPPABLE)
/obj/machinery/bluespace_denier/proc/start_up()
if(anchored)
add_overlay("[base_state]-s")
sense_proximity(callback = TYPE_PROC_REF(/atom,HasProximity))
/obj/machinery/bluespace_denier/Destroy()
if(timerid)
deltimer(timerid)
. = ..()
/obj/machinery/bluespace_denier/power_change()
..()
if(!(stat & NOPOWER))
icon_state = "[base_state]1"
// sd_SetLuminosity(2)
else
icon_state = "[base_state]1-p"
// sd_SetLuminosity(0)
//Let the AI trigger them directly.
/obj/machinery/bluespace_denier/attack_ai()
if(anchored)
return pulse()
else
return
/obj/machinery/bluespace_denier/proc/pulse()
if(!(powered()))
return
if((last_pulse && world.time < last_pulse + 150))
return
playsound(src, 'sound/weapons/flash.ogg', 100, 1)
flick("[base_state]_flash", src)
last_pulse = world.time
use_power(1500)
for (var/mob/O in viewers(src, null))
if(get_dist(src, O) > range)
continue
if(ishuman(O))
var/mob/living/carbon/human/H = O
if(H.get_species() == SPECIES_SHADEKIN && (H.ability_flags & AB_PHASE_SHIFTED))
H.attack_dephase(null, src)
/obj/machinery/bluespace_denier/emp_act(severity)
if(stat & (BROKEN|NOPOWER))
..(severity)
return
if(prob(75/severity))
pulse()
..(severity)
/obj/machinery/bluespace_denier/HasProximity(turf/T, datum/weakref/WF, oldloc)
SIGNAL_HANDLER
if(isnull(WF))
return
var/atom/movable/AM = WF.resolve()
if(isnull(AM))
log_debug("DEBUG: HasProximity called without reference on [src].")
return
if(!anchored || (last_pulse && world.time < last_pulse + 150))
return
if(ishuman(AM))
pulse()
/obj/machinery/bluespace_denier/attackby(obj/item/W as obj, mob/user as mob)
if(W.has_tool_quality(TOOL_WRENCH))
add_fingerprint(user)
anchored = !anchored
if(!anchored)
user.show_message(span_warning("[src] can now be moved."))
cut_overlays()
unsense_proximity(callback = TYPE_PROC_REF(/atom,HasProximity))
else
user.show_message(span_warning("[src] is now secured."))
add_overlay("[base_state]-s")
sense_proximity(callback = TYPE_PROC_REF(/atom,HasProximity))

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -5098,6 +5098,7 @@
#include "modular_chomp\code\modules\xenobio\machinery\monkey_processor.dm"
#include "modular_chomp\datums\tgs_event_handler.dm"
#include "modular_chomp\game\effects\spawner.dm"
#include "modular_chomp\game\machinery\bluespace_denier.dm"
#include "modular_chomp\game\machinery\buttons.dm"
#include "modular_chomp\game\machinery\traptiles.dm"
#include "modular_chomp\game\machinery\turrets.dm"