diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index aedbe164b60..caa1af28dcd 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -1,12 +1,12 @@
/obj/effect/mine
- name = "mine"
- desc = "I Better stay away from that thing."
- density = 1
+ name = "proximity mine"
+ desc = "Better stay away from that thing."
+ density = 0
anchored = 1
layer = 3
icon = 'icons/obj/weapons.dmi'
icon_state = "uglymine"
- var/triggerproc = "explode" //name of the proc thats called when the mine is triggered
+ var/minepayload = "explode"
var/triggered = 0
/obj/effect/mine/New()
@@ -15,74 +15,43 @@
/obj/effect/mine/Crossed(AM as mob|obj)
Bumped(AM)
-/obj/effect/mine/Bumped(mob/M as mob|obj)
+/obj/effect/mine/Bumped(AM as mob|obj)
if(triggered) return
+ visible_message("[AM] sets off \icon[src] [src]!")
+ triggermine(AM, minepayload)
- if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))
- for(var/mob/O in viewers(world.view, src.loc))
- O << "[M] triggered the \icon[src] [src]"
- triggered = 1
- call(src,triggerproc)(M)
-
-/obj/effect/mine/proc/triggerrad(obj)
+/obj/effect/mine/proc/triggermine(mob/victim, var/triggertype)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
- obj:radiation += 50
- randmutb(obj)
- domutcheck(obj)
- qdel(src)
-/obj/effect/mine/proc/triggerstun(obj)
- if(ismob(obj))
- var/mob/M = obj
- M.Stun(30)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, src)
- s.start()
- qdel(src)
+ switch(triggertype)
+ if("explode")
+ explosion(loc, 0, 1, 2, 3)
+ if("triggerplasma")
+ atmos_spawn_air(SPAWN_TOXINS, 360)
+ if("triggern2o")
+ atmos_spawn_air(SPAWN_N2O, 360)
+ if("triggerstun")
+ if(isliving(victim))
+ victim.Weaken(8)
-/obj/effect/mine/proc/triggern2o(obj)
- atmos_spawn_air("n2o", 360)
- qdel(src)
-/obj/effect/mine/proc/triggerplasma(obj)
- atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 360)
+ triggered = 1
qdel(src)
-/obj/effect/mine/proc/triggerkick(obj)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(3, 1, src)
- s.start()
- del(obj:client)
- qdel(src)
-
-/obj/effect/mine/proc/explode(obj)
- explosion(loc, 0, 1, 2, 3)
- qdel(src)
-
-/obj/effect/mine/dnascramble
- name = "radiation mine"
- icon_state = "uglymine"
- triggerproc = "triggerrad"
-
/obj/effect/mine/plasma
name = "plasma mine"
icon_state = "uglymine"
- triggerproc = "triggerplasma"
-
-/obj/effect/mine/kick
- name = "kick mine"
- icon_state = "uglymine"
- triggerproc = "triggerkick"
+ minepayload = "triggerplasma"
/obj/effect/mine/n2o
name = "\improper N2O mine"
icon_state = "uglymine"
- triggerproc = "triggern2o"
+ minepayload = "triggern2o"
/obj/effect/mine/stun
name = "stun mine"
icon_state = "uglymine"
- triggerproc = "triggerstun"
\ No newline at end of file
+ minepayload = "triggerstun"
\ No newline at end of file