Files
CHOMPStation2/code/datums/wires/mines.dm
2024-06-09 18:26:41 +02:00

87 lines
2.4 KiB
Plaintext

/datum/wires/mines
wire_count = 7
randomize = TRUE
holder_type = /obj/effect/mine
proper_name = "Explosive Wires"
/datum/wires/mines/New(atom/_holder)
wires = list(WIRE_EXPLODE, WIRE_EXPLODE_DELAY, WIRE_DISARM, WIRE_BADDISARM)
return ..()
#define WIRE_TRAP 64
/datum/wires/mines/get_status()
. = ..()
. += "\[Warning: detonation may occur even with proper equipment.]"
/datum/wires/mines/proc/explode()
return
/datum/wires/mines/on_cut(wire, mend)
var/obj/effect/mine/C = holder
switch(wire)
if(WIRE_EXPLODE)
C.visible_message("[icon2html(C,viewers(holder))] *BEEE-*", "[icon2html(C,viewers(holder))] *BEEE-*")
C.explode()
if(WIRE_EXPLODE_DELAY)
C.visible_message("[icon2html(C,viewers(holder))] *BEEE-*", "[icon2html(C,viewers(holder))] *BEEE-*")
C.explode()
if(WIRE_DISARM)
C.visible_message("[icon2html(C,viewers(holder))] *click!*", "[icon2html(C,viewers(holder))] *click!*")
var/obj/effect/mine/MI = new C.mineitemtype(get_turf(C))
if(C.trap)
MI.trap = C.trap
C.trap = null
MI.trap.forceMove(MI)
spawn(0)
qdel(C)
if(WIRE_BADDISARM)
C.visible_message("[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*", "[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*")
spawn(20)
C.explode()
if(WIRE_TRAP)
C.visible_message("[icon2html(C,viewers(holder))] *click!*", "[icon2html(C,viewers(holder))] *click!*")
if(mend)
C.visible_message("[icon2html(C,viewers(holder))] - The mine recalibrates[C.camo_net ? ", revealing \the [C.trap] inside." : "."]")
C.alpha = 255
..()
/datum/wires/mines/on_pulse(wire)
var/obj/effect/mine/C = holder
if(is_cut(wire))
return
switch(wire)
if(WIRE_EXPLODE)
C.visible_message("[icon2html(C,viewers(holder))] *beep*", "[icon2html(C,viewers(holder))] *beep*")
if(WIRE_EXPLODE_DELAY)
C.visible_message("[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*", "[icon2html(C,viewers(holder))] *BEEPBEEPBEEP*")
spawn(20)
C.explode()
if(WIRE_DISARM)
C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*")
if(WIRE_BADDISARM)
C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*")
if(WIRE_TRAP)
C.visible_message("[icon2html(C,viewers(holder))] *ping*", "[icon2html(C,viewers(holder))] *ping*")
..()
#undef WIRE_TRAP
/datum/wires/mines/interactable(mob/user)
var/obj/effect/mine/M = holder
return M.panel_open