Merge branch 'master' of https://github.com/tgstation/-tg-station into Cfour

This commit is contained in:
Razharas
2014-11-18 16:23:04 +03:00
151 changed files with 669 additions and 29040 deletions
@@ -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) || istype(mover, /obj/mecha))
bump(mover)
/obj/machinery/field/containment/proc/set_master(var/master1,var/master2)
if(!master1 || !master2)
return 0
@@ -54,26 +58,31 @@
return 0
..()
/obj/machinery/field/containment/Move()
qdel(src)
// Abstract Field Class
// Used for overriding certain procs
/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) || istype(mover, /obj/mecha))
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 +104,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)
@@ -354,4 +354,8 @@ field_generator power level display
/obj/machinery/field/generator/shock(mob/living/user as mob)
if(fields.len)
..()
..()
/obj/machinery/field/generator/bump(atom/movable/AM as mob|obj)
if(fields.len)
..()
@@ -33,7 +33,7 @@
src.energy = starting_energy
..()
for(var/obj/machinery/singularity_beacon/singubeacon in world)
for(var/obj/machinery/power/singularity_beacon/singubeacon in world)
if(singubeacon.active)
target = singubeacon
break