mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 04:57:57 +01:00
[MIRROR] Makes North Star's regenerating shields work (kinda my bad) [MDB IGNORE] (#20863)
* Makes North Star's regenerating shields work (kinda my bad) (#75048) ## About The Pull Request I helped Chesh with the code behind these, but they kinda don't work, so it's partially my bad. They never started processing, so the code was dead. Changed it to start processing on taking damage and stop processing when it reaches max integrity. Also made some proper use of `/datum/element/empprotection` for the shield and cult shields while I was there. ## Why It's Good For The Game Makes it work ## Changelog 🆑 Melbert fix: North Star's shields now regenerate integrity over time /🆑 * Makes North Star's regenerating shields work (kinda my bad) --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
@@ -47,17 +47,33 @@
|
||||
if(.) //damage was dealt
|
||||
new /obj/effect/temp_visual/impact_effect/ion(loc)
|
||||
|
||||
/// Subtype of shields that repair over time after sustaining integrity damage
|
||||
/obj/structure/emergency_shield/regenerating
|
||||
name = "energy shield"
|
||||
desc = "An energy shield used to let ships through, but keep out the void of space."
|
||||
max_integrity = 400
|
||||
/// How much integrity is healed per second (per process multiplied by seconds per tick)
|
||||
var/heal_rate_per_second = 5
|
||||
|
||||
/obj/structure/emergency_shield/regenerating/emp_act(severity)
|
||||
return
|
||||
/obj/structure/emergency_shield/regenerating/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_SELF)
|
||||
|
||||
/obj/structure/emergency_shield/regenerating/process(delta_time)
|
||||
if(get_integrity() < max_integrity)
|
||||
repair_damage(5 * delta_time)
|
||||
/obj/structure/emergency_shield/regenerating/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/structure/emergency_shield/regenerating/take_damage(damage, damage_type, damage_flag, sound_effect, attack_dir)
|
||||
. = ..()
|
||||
if(.)
|
||||
// We took some damage so we'll start processing to heal said damage.
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/structure/emergency_shield/regenerating/process(seconds_per_tick)
|
||||
var/repaired_amount = repair_damage(heal_rate_per_second * seconds_per_tick)
|
||||
if(repaired_amount <= 0)
|
||||
// 0 damage repaired means we're at the max integrity, so don't need to process anymore
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/structure/emergency_shield/cult
|
||||
name = "cult barrier"
|
||||
@@ -65,8 +81,9 @@
|
||||
max_integrity = 100
|
||||
icon_state = "shield-red"
|
||||
|
||||
/obj/structure/emergency_shield/cult/emp_act(severity)
|
||||
return
|
||||
/obj/structure/emergency_shield/cult/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_SELF)
|
||||
|
||||
/obj/structure/emergency_shield/cult/narsie
|
||||
name = "sanguine barrier"
|
||||
|
||||
Reference in New Issue
Block a user