/obj/item/projectile/energy/net name = "energy netting" icon_state = "e_netting" damage = 10 damage_type = STAMINA hitsound = 'sound/weapons/taserhit.ogg' range = 10 /obj/item/projectile/energy/net/Initialize() . = ..() SpinAnimation() /obj/item/projectile/energy/net/on_hit(atom/target, blocked = FALSE) if(isliving(target)) var/turf/Tloc = get_turf(target) if(!locate(/obj/effect/nettingportal) in Tloc) new /obj/effect/nettingportal(Tloc) ..() /obj/item/projectile/energy/net/on_range() do_sparks(1, TRUE, src) ..() /obj/effect/nettingportal name = "DRAGnet teleportation field" desc = "A field of bluespace energy, locking on to teleport a target." icon = 'icons/effects/effects.dmi' icon_state = "dragnetfield" light_range = 3 anchored = TRUE /obj/effect/nettingportal/Initialize() . = ..() var/obj/item/beacon/teletarget = null for(var/obj/machinery/computer/teleporter/com in GLOB.machines) if(com.target) if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged) teletarget = com.target addtimer(CALLBACK(src, .proc/pop, teletarget), 30) /obj/effect/nettingportal/proc/pop(teletarget) if(teletarget) for(var/mob/living/L in get_turf(src)) do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon else for(var/mob/living/L in get_turf(src)) do_teleport(L, L, 15) //Otherwise it just warps you off somewhere. qdel(src) /obj/effect/nettingportal/singularity_act() return /obj/effect/nettingportal/singularity_pull() return /obj/item/projectile/energy/trap name = "energy snare" icon_state = "e_snare" nodamage = 1 knockdown = 20 hitsound = 'sound/weapons/taserhit.ogg' range = 4 /obj/item/projectile/energy/trap/on_hit(atom/target, blocked = FALSE) if(!ismob(target) || blocked >= 100) //Fully blocked by mob or collided with dense object - drop a trap new/obj/item/restraints/legcuffs/beartrap/energy(get_turf(loc)) else if(iscarbon(target)) var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy(get_turf(target)) B.Crossed(target) ..() /obj/item/projectile/energy/trap/on_range() new /obj/item/restraints/legcuffs/beartrap/energy(loc) ..() /obj/item/projectile/energy/trap/cyborg name = "Energy Bola" icon_state = "e_snare" nodamage = 1 knockdown = 0 hitsound = 'sound/weapons/taserhit.ogg' range = 10 /obj/item/projectile/energy/trap/cyborg/on_hit(atom/target, blocked = FALSE) if(!ismob(target) || blocked >= 100) do_sparks(1, TRUE, src) qdel(src) if(iscarbon(target)) var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(target)) B.Crossed(target) QDEL_IN(src, 10) ..() /obj/item/projectile/energy/trap/cyborg/on_range() do_sparks(1, TRUE, src) qdel(src)