mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-08-30 01:16:12 +01:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
/obj/artifact/forcefield_generator
|
||||
name = "artifact forcefield generator"
|
||||
associated_datum = /datum/artifact/forcefield_gen
|
||||
|
||||
/datum/artifact/forcefield_gen
|
||||
associated_object = /obj/artifact/forcefield_generator
|
||||
rarity_class = 1
|
||||
validtypes = list("wizard","eldritch","precursor")
|
||||
validtriggers = list(/datum/artifact_trigger/force,/datum/artifact_trigger/carbon_touch,
|
||||
/datum/artifact_trigger/silicon_touch)
|
||||
activated = 0
|
||||
activ_text = "comes to life, projecting out a wall of force!"
|
||||
deact_text = "shuts down, causing the forcefield to vanish!"
|
||||
react_xray = list(13,60,95,11,"NONE")
|
||||
var/cooldown = 80
|
||||
var/field_radius = 3
|
||||
var/field_time = 80
|
||||
var/icon_state = "shieldsparkles"
|
||||
var/next_activate = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
src.icon_state = pick("shieldsparkles","empdisable","greenglow","enshield","energyorb","forcewall","meteor_shield")
|
||||
src.field_radius = rand(2,6) // forcefield radius
|
||||
src.field_time = rand(15,1500) // forcefield duration
|
||||
src.cooldown = rand(50, 1200)
|
||||
src.activ_sound = pick('sound/effects/mag_forcewall.ogg','sound/effects/mag_warp.ogg','sound/effects/MagShieldUp.ogg')
|
||||
src.deact_sound = pick('sound/effects/MagShieldDown.ogg','sound/effects/shielddown2.ogg','sound/effects/singsuck.ogg')
|
||||
|
||||
may_activate(var/obj/O)
|
||||
if (!..())
|
||||
return 0
|
||||
if (ticker.round_elapsed_ticks < next_activate)
|
||||
O.visible_message("<span style=\"color:red\">[O] emits a loud pop and lights up momentarily but nothing happens!</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
effect_activate(var/obj/O,var/mob/living/user)
|
||||
if (..())
|
||||
return
|
||||
O.anchored = 1
|
||||
var/turf/Aloc = get_turf(O)
|
||||
var/list/forcefields = list()
|
||||
for (var/turf/T in range(field_radius,Aloc))
|
||||
if(get_dist(O,T) == field_radius)
|
||||
var/obj/forcefield/wand/FF = new /obj/forcefield/wand(T,0,src.icon_state)
|
||||
forcefields += FF
|
||||
spawn(field_time)
|
||||
for (var/obj/forcefield/F in forcefields)
|
||||
forcefields -= F
|
||||
qdel(F)
|
||||
next_activate = ticker.round_elapsed_ticks + cooldown
|
||||
if (O)
|
||||
O.ArtifactDeactivated()
|
||||
O.anchored = 0
|
||||
Reference in New Issue
Block a user