mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
up ports bluespace disruptor (#9128)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
104
modular_chomp/game/machinery/bluespace_denier.dm
Normal file
104
modular_chomp/game/machinery/bluespace_denier.dm
Normal 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))
|
||||
BIN
modular_chomp/icons/obj/machines/bs_disruptor.dmi
Normal file
BIN
modular_chomp/icons/obj/machines/bs_disruptor.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user