mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
[MIRROR] Completely removes proc_holders from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code. [MDB IGNORE] (#14666)
* Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code. * our changes * yes * 0 * Update blackmesa.dmm Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
This commit is contained in:
co-authored by
MrMelbert
Gandalf
parent
f507824ee7
commit
c68fea7cba
@@ -1,35 +1,60 @@
|
||||
/obj/effect/forcefield
|
||||
desc = "A space wizard's magic wall."
|
||||
name = "FORCEWALL"
|
||||
desc = "A space wizard's magic wall."
|
||||
icon_state = "m_shield"
|
||||
anchored = TRUE
|
||||
opacity = FALSE
|
||||
density = TRUE
|
||||
can_atmos_pass = ATMOS_PASS_DENSITY
|
||||
var/timeleft = 300 //Set to 0 for permanent forcefields (ugh)
|
||||
/// If set, how long the force field lasts after it's created. Set to 0 to have infinite duration forcefields.
|
||||
var/initial_duration = 30 SECONDS
|
||||
|
||||
/obj/effect/forcefield/Initialize(mapload)
|
||||
. = ..()
|
||||
if(timeleft)
|
||||
QDEL_IN(src, timeleft)
|
||||
if(initial_duration > 0 SECONDS)
|
||||
QDEL_IN(src, initial_duration)
|
||||
|
||||
/obj/effect/forcefield/singularity_pull()
|
||||
return
|
||||
|
||||
/// The wizard's forcefield, summoned by forcewall
|
||||
/obj/effect/forcefield/wizard
|
||||
/// Flags for what antimagic can just ignore our forcefields
|
||||
var/antimagic_flags = MAGIC_RESISTANCE
|
||||
/// A weakref to whoever casted our forcefield.
|
||||
var/datum/weakref/caster_weakref
|
||||
|
||||
/obj/effect/forcefield/wizard/Initialize(mapload, mob/caster, flags = MAGIC_RESISTANCE)
|
||||
. = ..()
|
||||
if(caster)
|
||||
caster_weakref = WEAKREF(caster)
|
||||
antimagic_flags = flags
|
||||
|
||||
/obj/effect/forcefield/wizard/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
if(IS_WEAKREF_OF(mover, caster_weakref))
|
||||
return TRUE
|
||||
if(isliving(mover))
|
||||
var/mob/living/living_mover = mover
|
||||
if(living_mover.can_block_magic(antimagic_flags, charge_cost = 0))
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/// Cult forcefields
|
||||
/obj/effect/forcefield/cult
|
||||
desc = "An unholy shield that blocks all attacks."
|
||||
name = "glowing wall"
|
||||
desc = "An unholy shield that blocks all attacks."
|
||||
icon = 'icons/effects/cult/effects.dmi'
|
||||
icon_state = "cultshield"
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
timeleft = 200
|
||||
initial_duration = 20 SECONDS
|
||||
|
||||
/// A form of the cult forcefield that lasts permanently.
|
||||
/// Used on the Shuttle 667.
|
||||
/obj/effect/forcefield/cult/permanent
|
||||
timeleft = 0
|
||||
initial_duration = 0
|
||||
|
||||
///////////Mimewalls///////////
|
||||
/// Mime forcefields (invisible walls)
|
||||
|
||||
/obj/effect/forcefield/mime
|
||||
icon_state = "nothing"
|
||||
@@ -40,4 +65,4 @@
|
||||
/obj/effect/forcefield/mime/advanced
|
||||
name = "invisible blockade"
|
||||
desc = "You're gonna be here awhile."
|
||||
timeleft = 600
|
||||
initial_duration = 1 MINUTES
|
||||
|
||||
Reference in New Issue
Block a user