FAForever / fa

Lua code for FAF
221 stars 228 forks source link

Don't block death nukes with mobile shields. #6296

Closed lL1l1 closed 6 days ago

lL1l1 commented 6 days ago

Issue

Mobile shields blocking ACU explosions gives an obvious snowballing advantage to Aeon and UEF T2, and to an extent Seraphim T3. This advantage should no go into live because it would easily unbalance the game and currently there are no changes made to counteract this newfound advantage. While it creates inconsistency, it's worth it; the original issue was that ACUs in bases would kill all engis, or that teleporting ACUs would kill all engis, and that is still being solved after these changes. Nobody asked for OP mobile shields, it just came as a consequence of an easy, consistent implementation.

Description of the proposed changes

Implements a StaticShield absorption type with automatic mod support based on categories. The default absorption type no longer blocks DeathNuke damage, instead the StaticShield absorption type does. This means modded mobile shields also do not block death nukes. It also opens up a trivial opportunity to add DeathNuke absorption to the UEF ACU shield, UEF SACU shield, and Fatboy shield.

Testing done on the proposed changes

Spawn all static/mobile shields and an engi target underneath them then blow up ACUs to confirm they don't kill the engis.

Spawn units command: ``` CreateUnitAtMouse('url0208', 0, -54.66, 82.50, 0.00000) CreateUnitAtMouse('uab4301', 0, 7.91, -38.79, -0.00110) CreateUnitAtMouse('url0208', 0, 30.34, 7.50, 0.00000) CreateUnitAtMouse('uel0307', 0, 51.34, -31.50, 0.00024) CreateUnitAtMouse('uel0401ef', 0, 50.84, -60.87, -0.00008) CreateUnitAtMouse('uel0401ef', 0, 50.41, -61.29, -0.00008) CreateUnitAtMouse('url0208', 0, 41.34, 20.50, 0.00000) CreateUnitAtMouse('uel0208', 0, 53.34, -48.50, -0.00002) CreateUnitAtMouse('uel0208', 0, -59.66, 13.50, 0.09655) CreateUnitAtMouse('xac2101', 0, -107.09, 7.21, 0.00682) CreateUnitAtMouse('url0208', 0, -2.66, -39.50, -0.00000) CreateUnitAtMouse('ual0307', 0, 67.34, -19.50, 0.00015) CreateUnitAtMouse('xsl0307', 0, 71.34, -39.50, 0.00098) CreateUnitAtMouse('url0208', 0, 65.34, -22.50, 0.00005) CreateUnitAtMouse('uel0401', 0, 50.84, -56.00, -0.00008) CreateUnitAtMouse('url0208', 0, -21.66, -21.50, 0.00000) CreateUnitAtMouse('url0208', 0, 40.34, 20.50, 0.00000) CreateUnitAtMouse('urb4206', 0, -51.09, -39.79, 0.00000) CreateUnitAtMouse('xsb4301', 0, -37.09, 41.21, -0.00030) CreateUnitAtMouse('url0208', 0, -35.66, 75.50, 0.00000) CreateUnitAtMouse('uab4202', 0, -62.09, 65.21, -0.15651) CreateUnitAtMouse('urb4204', 0, 28.91, 1.21, -0.01026) CreateUnitAtMouse('url0208', 0, 67.34, -36.50, 0.00043) CreateUnitAtMouse('xab1401', 0, -106.85, 11.71, -0.00000) CreateUnitAtMouse('ueb4301', 0, -24.09, -5.79, 0.00000) CreateUnitAtMouse('ueb4202', 0, -28.09, 78.21, 0.00000) CreateUnitAtMouse('url0208', 0, -57.66, 66.50, -0.00086) CreateUnitAtMouse('url0208', 0, -41.66, -37.50, 0.00000) CreateUnitAtMouse('url0208', 0, 55.34, -31.50, 0.00017) CreateUnitAtMouse('urb4207', 0, -21.09, -64.79, -0.01029) CreateUnitAtMouse('xsb4202', 0, 49.91, 22.21, 0.00000) CreateUnitAtMouse('urb4205', 0, -56.09, 91.21, 0.00000) CreateUnitAtMouse('url0208', 0, -20.66, -51.50, 0.00021) CreateUnitAtMouse('url0208', 0, 26.34, 21.50, 0.00000) CreateUnitAtMouse('urb4202', 0, 21.91, 22.21, 0.00000) CreateUnitAtMouse('url0208', 0, -42.66, 58.50, -0.00040) ```

Checklist

MrRowey commented 6 days ago

So Static Builings that have shields absorbes the DeathNuke but for the like of the T2 Aeon/Uef & T3 Sera mobile they don't ?

lL1l1 commented 6 days ago

yes