mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-10 23:54:14 +01:00
Fixes #4388
This commit is contained in:
@@ -37,10 +37,14 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/field/containment/Crossed(atom/movable/mover)
|
||||
/obj/machinery/field/containment/Crossed(mob/mover as mob)
|
||||
if(isliving(mover))
|
||||
shock(mover)
|
||||
|
||||
/obj/machinery/field/containment/Crossed(obj/mover as obj)
|
||||
if(istype(mover, /obj/machinery) || istype(mover, /obj/structure))
|
||||
bump(mover)
|
||||
|
||||
/obj/machinery/field/containment/proc/set_master(var/master1,var/master2)
|
||||
if(!master1 || !master2)
|
||||
return 0
|
||||
@@ -60,20 +64,22 @@
|
||||
/obj/machinery/field
|
||||
var/hasShocked = 0 //Used to add a delay between shocks. In some cases this used to crash servers by spawning hundreds of sparks every second.
|
||||
|
||||
/obj/machinery/field/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
/obj/machinery/field/CanPass(mob/mover as mob, turf/target, height=0)
|
||||
if(isliving(mover)) // Don't let mobs through
|
||||
shock(mover)
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/machinery/field/CanPass(obj/mover as obj, turf/target, height=0)
|
||||
if(istype(mover, /obj/machinery) || istype(mover, /obj/structure))
|
||||
bump(mover)
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/machinery/field/proc/shock(mob/living/user as mob)
|
||||
if(hasShocked)
|
||||
return 0
|
||||
if(isliving(user))
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, user.loc)
|
||||
s.start()
|
||||
|
||||
hasShocked = 1
|
||||
var/shock_damage = min(rand(30,40),rand(30,40))
|
||||
|
||||
@@ -95,9 +101,15 @@
|
||||
"<span class='danger'>You hear an electrical crack.</span>")
|
||||
|
||||
user.updatehealth()
|
||||
var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src)))
|
||||
user.throw_at(target, 200, 4)
|
||||
bump(user)
|
||||
|
||||
spawn(5)
|
||||
hasShocked = 0
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/field/proc/bump(atom/movable/AM as mob|obj)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(5, 1, AM.loc)
|
||||
s.start()
|
||||
var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src)))
|
||||
AM.throw_at(target, 200, 4)
|
||||
|
||||
Reference in New Issue
Block a user