Customizable shield on any TechnoType

Registered by mevitar

I know shields were already requested here https://blueprints.launchpad.net/ares/+spec/sc-like-plasma-shields-and-ae-bonuses , but i'd like to request a different implementation of them. Hopefully this one will be easier to implement, as it doesn't require AE, and more universal.

[TechnoType]
Shield= (boolean, defaults to "no")
 Whether shields are enabled on this object or not. Perhaps not needed with Shield.Strength defaulting to 0.
Shield.Strength= (integer, defaults to 0)
 How much damage the shield can absorb in total. Once it gets to 0, victim's Shield.DamageAbsorbed= and Shield.DamageIgnored= are ignored, and the damage is dealth normally.
Shield.DepletedAbsorption= (boolean, defaults to "yes")
 Whether the shield will absorb any damage that goes beyond its current Shield.Strength= value. If set to "no", any damage that would lower it below 0 is passed to the object.
 NOTE: This tag and logic behind it don't have to be added, unless their implementation wouldn't be a problem.
Shield.Armor= (valid armor type, defaults to object's armor)
 What armor to use when calculating damage to the shield. This is used for damage purposes ONLY. For targeting the unit, still use object's Armor= value.
 Shields on objects that cannot be affected by a warhead (object's armor has 0%) are not affected by the warhead even if the verses have a non-zero value.
 If a warhead has 0% set on its Verses= against the target's shield armor, then the shield won't be depleted even if the target can be affected (and unless Shield.DamageIgnored= is set to above 0, or the warhead has Shield.Ignore=yes, the target will be invulnerable to this weapon's damage, forcing the player to somehow get rid of the shield first).
Shield.DamageSound= (valid sound, defaults to object's DamageSound=)
 What sound is played when the object is damaged while its shield is still on. Overrides object's DamageSound= while shields are active.
 NOTE: Modders that want to use both DamageSound= and Shield.DamageSound= for objects with active shields could combine both sounds manually and use them as object's Shield.DamageSound=.
Shield.DamageAbsorbed= (float, defaults to 1.0)
 How much damage dealt to the object is dealt to the shield. This is calculated separately from Shield.DamageIgnored=, and they don't have to sum to 1.
Shield.DamageIgnored= (float, defaults to 0.0)
 How much damage dealt to the object passes through the shield. This is calculated separately from Shield.DamageAbsorbed=, and they don't have to sum to 1. Values above 0 mean that the object should still die normally if its Strength= reaches 0, no matter how much Shield.Strength= it has.
Shield.Delay= (float, in minutes, defaults to 0.0)
 How often shield regeneration should be applied to this shield. 0 means no regeneration.
Shield.Step= (integer, defaults to 0)
 How much of this shield's health regenerates after each delay. 0 means no regeneration.
Shield.Pip= (string, defaults to null/none)
 Which file to use for the shield bar of this object. Uses regular health bar pips when none were specified.

Warhead & Shield inderaction
 Warhead's verses use Shield.Armor= to calculate damage done to the shield. If it's negative, then the shield should be restored, up to the maximum value.
 NOTE: Special effects (like Psychedelic=yes, plus all Ares effects) should ignore shields completely, unless the implementation wouldn't be a problem. In that case, they should respect Shield.Ignores= tag. Some people might also want to use shields to block MindControl=yes and Temporal=yes, but not sure if the work there would be worth it.

[WarheadType]
Shield.Ignore= (boolean, defaults to "no")
 Whether the damage done by this warhead passes through any shields as if they were deactivated.
 NOTE: Although i personally would prefer a list of shields that can be ignored, i think a boolean Shield.Ignore= is enough, unless shields would be defined similarly to different TiberiumTypes. In that case, a list of values (numbers or shield names) could be used here.
Shield.Destroy= (boolean, defaults to "no")
 Whether the damage done to the shield should still be calculated, even if the warhead has Shield.Ignore=yes. In case of "no", shield is damaged only when the warhead has Shield.Ignores=no.
Shield.Damage= (integer, defaults to 0)
 Deal this much damage to the shield instead of the value specified by the warhead. 0 means warhead damage should still be used. This damage is still scaled by warhead's Verses=.
 NOTE: This is so for example a pure-EMP weapon (Damage=0) would still be able to deal 300 damage to affected object's shields (and shields only), even if the object itself would be immune to EMP, or have EMP duration reduction. Thus, people would be able to recreate CnC3's shield depletion when hit by EMP, but without tying it to EMP specifically.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
mevitar
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

It's good to see that someone else found the idea quite interesting.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.