From d13cd00cda97d1b6ac84847c07f6f640dff0a236 Mon Sep 17 00:00:00 2001 From: Nerd-eee Date: Mon, 16 Mar 2026 14:29:40 -0700 Subject: [PATCH 1/2] Fix DamageScales settings not working properly with NSF - Now takes into account NoGridOrArmorScaling - Now takes into account grid size --- .../CoreSystems/Session/SessionDamageMgr.cs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs b/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs index d0fe81fe..82fb9666 100644 --- a/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs +++ b/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs @@ -487,22 +487,26 @@ private void DamageGrid(HitEntity hitEnt, ProInfo t) aoeIsPool = aoeFalloff == Falloff.Pooled; } if (NerdShieldApiLoaded && NerdShieldAPI.IsReady) - if(currentGrid == null || !rootBlock.CubeGrid.IsInSameLogicalGroupAs(currentGrid)) + { + if (currentGrid == null || !rootBlock.CubeGrid.IsInSameLogicalGroupAs(currentGrid)) { currentGrid = rootBlock.CubeGrid; HasNerdShields = NerdShieldAPI.GridHasShields(currentGrid); - switch (t.AmmoDef.DamageScales.Shields.Type) + if (!t.AmmoDef.NoGridOrArmorScaling) { - case ShieldDef.ShieldType.Default: - nerdShieldModifier = t.AmmoDef.DamageScales.Shields.Modifier; - nerdShieldPassthroughModifier = t.AmmoDef.DamageScales.Shields.BypassModifier; - break; - case ShieldDef.ShieldType.Bypass: - nerdShieldPassthroughModifier = t.AmmoDef.DamageScales.Shields.Modifier; - break; + switch (t.AmmoDef.DamageScales.Shields.Type) + { + case ShieldDef.ShieldType.Default: + nerdShieldModifier = t.AmmoDef.DamageScales.Shields.Modifier * gridDamageModifier * gridSizeBuff; + nerdShieldPassthroughModifier = t.AmmoDef.DamageScales.Shields.BypassModifier; + break; + case ShieldDef.ShieldType.Bypass: + nerdShieldPassthroughModifier = t.AmmoDef.DamageScales.Shields.Modifier; + break; + } } - if (t.AmmoDef.DamageScales.Shields.Type == ShieldDef.ShieldType.Heal) + if (!t.AmmoDef.NoGridOrArmorScaling && t.AmmoDef.DamageScales.Shields.Type == ShieldDef.ShieldType.Heal) NerdShieldAPI.ShieldDoDamage(currentGrid, currentGrid.GridIntegerToWorld(rootBlock.Position), t.AmmoDef.DamageScales.DamageType.Shield == DamageTypes.Damage.Kinetic ? KineticHash : EnergyHash, -basePool, nerdShieldModifier, nerdShieldPassthroughModifier); else @@ -515,6 +519,7 @@ private void DamageGrid(HitEntity hitEnt, ProInfo t) { currentGrid = rootBlock.CubeGrid; // duplicated because doing it before would invalidate the nullcheck above } + } if (!detRequested) { From 5f08e8d47089cdfb0c45a4c86a1a2d3710e3153f Mon Sep 17 00:00:00 2001 From: Nerd-eee Date: Mon, 16 Mar 2026 15:09:10 -0700 Subject: [PATCH 2/2] actually have the LG and SG modifiers count, rather than just enforcement stuff --- Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs b/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs index 82fb9666..0a834ef7 100644 --- a/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs +++ b/Data/Scripts/CoreSystems/Session/SessionDamageMgr.cs @@ -498,7 +498,8 @@ private void DamageGrid(HitEntity hitEnt, ProInfo t) switch (t.AmmoDef.DamageScales.Shields.Type) { case ShieldDef.ShieldType.Default: - nerdShieldModifier = t.AmmoDef.DamageScales.Shields.Modifier * gridDamageModifier * gridSizeBuff; + nerdShieldModifier = t.AmmoDef.DamageScales.Shields.Modifier * gridDamageModifier * gridSizeBuff + * (largeGrid ? t.AmmoDef.DamageScales.Grids.Large : t.AmmoDef.DamageScales.Grids.Small); nerdShieldPassthroughModifier = t.AmmoDef.DamageScales.Shields.BypassModifier; break; case ShieldDef.ShieldType.Bypass: