mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
|
|
//---------- actual energy field
|
|
|
|
/obj/effect/energy_field
|
|
name = "energy field"
|
|
desc = "Impenetrable field of energy, capable of blocking anything as long as it's active."
|
|
icon = 'icons/obj/machines/shielding.dmi'
|
|
icon_state = "shieldsparkles"
|
|
anchored = 1
|
|
layer = 4.1 //just above mobs
|
|
density = 0
|
|
invisibility = 101
|
|
var/strength = 0
|
|
var/ticks_recovering = 10
|
|
|
|
/obj/effect/energy_field/New()
|
|
..()
|
|
update_nearby_tiles()
|
|
|
|
/obj/effect/energy_field/Destroy()
|
|
update_nearby_tiles()
|
|
..()
|
|
|
|
/obj/effect/energy_field/ex_act(var/severity)
|
|
Stress(0.5 + severity)
|
|
|
|
/obj/effect/energy_field/bullet_act(var/obj/item/projectile/Proj)
|
|
Stress(Proj.get_structure_damage() / 10)
|
|
|
|
/obj/effect/energy_field/proc/Stress(var/severity)
|
|
strength -= severity
|
|
|
|
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
|
|
ticks_recovering = min(ticks_recovering + 2, 10)
|
|
if(strength < 1)
|
|
invisibility = 101
|
|
density = 0
|
|
ticks_recovering = 10
|
|
strength = 0
|
|
else if(strength >= 1)
|
|
invisibility = 0
|
|
density = 1
|
|
|
|
/obj/effect/energy_field/proc/Strengthen(var/severity)
|
|
strength += severity
|
|
if (strength < 0)
|
|
strength = 0
|
|
|
|
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
|
|
var/old_density = density
|
|
if(strength >= 1)
|
|
invisibility = 0
|
|
density = 1
|
|
else if(strength < 1)
|
|
invisibility = 101
|
|
density = 0
|
|
|
|
if (density != old_density)
|
|
update_nearby_tiles()
|
|
|
|
/obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
|
|
//Purpose: Determines if the object (or airflow) can pass this atom.
|
|
//Called by: Movement, airflow.
|
|
//Inputs: The moving atom (optional), target turf, "height" and air group
|
|
//Outputs: Boolean if can pass.
|
|
|
|
//return (!density || !height || air_group)
|
|
return !density
|