From 64be3939290f32381fc7af18c7b195bbe744a649 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Wed, 5 Mar 2025 21:20:31 -0600 Subject: [PATCH 01/36] Stable Merge Pre-5.2 (#1908) Co-authored-by: CommodoreChet <50426713+CommodoreChet@users.noreply.github.com> Co-authored-by: Darth411 <128270123+Darth411@users.noreply.github.com> --- .../Elimination/EliminationGamemode.cs | 2 +- .../GameModes/Elimination/EliminationHud.cs | 8 +- .../GameModes/KingOfTheHill/KOTHGamemode.cs | 107 +++++++ .../SUGMA/GameModes/KingOfTheHill/KOTHHud.cs | 154 +++++++++++ .../Scripts/SUGMA/GameState/KOTHSphereZone.cs | 112 ++++++++ .../Scripts/SUGMA/SUGMA_SessionComponent.cs | 2 + .../Data/Scripts/SUGMA/Utilities/SUtils.cs | 31 ++- .../Data/Scripts/Additions/PointAdditions.cs | 3 + .../ShipPoints/ShipTracking/GridStats.cs | 13 +- .../Data/ActiveRadiatorParticle.sbc | 2 +- .../Data/BlockCategories.sbc | 2 +- .../Data/CubeBlocks/ActiveRadiator.sbc | 1 + ...f_score_background.sbc => HudTextures.sbc} | 12 + .../HudHelpers/FusionWindow.cs | 260 ++++++++++++++++++ .../HudHelpers/HudConstants.cs | 20 ++ .../ModularAssemblies/S_FusionPlayerHud.cs | 12 +- .../Data/Scripts/ModularAssemblies/Utils.cs | 5 +- .../Textures/HudBackground.dds | Bin 0 -> 54548 bytes .../Textures/HudBackground.pdn | Bin 0 -> 5317 bytes .../FieldGenerator/FieldGenerator_Config.cs | 2 + .../FieldGenerator/FieldGenerator_Core.cs | 2 +- .../Data/AiRange_EntityComponents.sbc | 111 ++++++++ ...stal.bsl => NEC_Whip_Crystal.bsl.disabled} | 2 +- .../40k-Weapons-Mod/Data/Animation/main.info | 1 - .../Data/Animation/main.info.disabled | 1 + .../Data/Scripts/CoreParts/Charon.cs | 4 +- 26 files changed, 838 insertions(+), 31 deletions(-) create mode 100644 Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs create mode 100644 Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs create mode 100644 Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameState/KOTHSphereZone.cs rename Utility Mods/MoA Fusion Systems/Data/{ctf_score_background.sbc => HudTextures.sbc} (71%) create mode 100644 Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/FusionWindow.cs create mode 100644 Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/HudConstants.cs create mode 100644 Utility Mods/MoA Fusion Systems/Textures/HudBackground.dds create mode 100644 Utility Mods/MoA Fusion Systems/Textures/HudBackground.pdn create mode 100644 Utility Mods/SC_Season_4_Adjustments/Data/AiRange_EntityComponents.sbc rename Weapon Mods/40k-Weapons-Mod/Data/Animation/{NEC_Whip_Crystal.bsl => NEC_Whip_Crystal.bsl.disabled} (99%) delete mode 100644 Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info create mode 100644 Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info.disabled diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index ad0a0a902..c7034ba57 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -189,12 +189,12 @@ public override void StopRound() { if (arg.StartsWith("win")) { - Log.Info("Winner in arguments found: " + arg); long factionId; long.TryParse(arg.Remove(0, 3), out factionId); _winningFaction = MyAPIGateway.Session.Factions.TryGetFactionById(factionId); setWinnerFromArgs = true; + Log.Info($"Winner in arguments found: {factionId} ({_winningFaction?.Name})"); break; } } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs index 91f3fcbe0..ecbbeccfa 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs @@ -59,7 +59,8 @@ internal class elmHud_Window : HudElementBase private bool _matchEnded; private readonly MatchTimer _timer; - private readonly LabelBox _timerLabel; + internal readonly LabelBox _timerLabel; + internal LabelBox _winnerLabel; public EliminationHud_TeamBanner[] Banners; public elmHud_Window(HudParentBase parent, EliminationGamemode gamemode) : base(parent) @@ -121,6 +122,7 @@ public void Update() public void MatchEnded(IMyFaction winner) { + Log.Info("EliminationHud.cs:125 MatchEnded (" + winner?.Name + ")"); _matchEnded = true; var winnerPoints = 0; foreach (var banner in Banners) @@ -136,7 +138,7 @@ public void MatchEnded(IMyFaction winner) if (_timerLabel == null) return; - var winnerLabel = new LabelBox(_timerLabel) + _winnerLabel = new LabelBox(_timerLabel) { Text = winner != null ? $"A WINNER IS {winner.Name}. {winnerPoints} tickets remaining." @@ -147,7 +149,7 @@ public void MatchEnded(IMyFaction winner) Color = HudConstants.HudBackgroundColor }; - winnerLabel.TextBoard.SetFormatting(GlyphFormat.White.WithColor(Color.Red).WithSize(3) + _winnerLabel.TextBoard.SetFormatting(GlyphFormat.White.WithColor(Color.Red).WithSize(3) .WithAlignment(TextAlignment.Center)); } } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs new file mode 100644 index 000000000..151ea2ae9 --- /dev/null +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using Sandbox.ModAPI; +using SC.SUGMA.GameModes.Elimination; +using SC.SUGMA.GameState; +using SC.SUGMA.Utilities; +using VRage.Game.ModAPI; +using VRageMath; + +namespace SC.SUGMA.GameModes.KOTH +{ + internal partial class KOTHGamemode : EliminationGamemode + { + public KOTHSphereZone ControlPoint; + + private Vector3D _controlPointPosition = new Vector3D(0, 0, 0); + private float _controlPointRadius = 2500f; + + private int ActivationTime = 300; + public int ActivationTimeCounter = 0; + + private int WinTime = 120; + + public override string ReadableName { get; internal set; } = "King Of The Hill"; + + public override string Description { get; internal set; } = + "Fight to Control the Capture Point. Either hold it uncontested, or eliminate the enemy team to win."; + + public KOTHGamemode() + { + ArgumentParser += new ArgumentParser( + new ArgumentParser.ArgumentDefinition( + text => ActivationTime = int.Parse(text), + "at", "activation-time", + $"Delay before Center Zone is Capturable, in Seconds" + ), + new ArgumentParser.ArgumentDefinition( + text => WinTime = int.Parse(text), + "wt", "win-time", + "How long a team has to hold the zone uncontested to win, in Seconds" + ) + ); + } + + public override void StartRound(string[] arguments = null) + { + base.StartRound(arguments); + + if (TrackedFactions.Count <= 1) + return; + + ActivationTimeCounter = ActivationTime; + ControlPoint = null; + + if (!MyAPIGateway.Utilities.IsDedicated) + SUGMA_SessionComponent.I.RegisterComponent("KOTHHud", new KOTHHud(this)); + } + + public override void StopRound() + { + _winningFaction = ControlPoint?._zoneOwner; + base.StopRound(); + + SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(_winningFaction); + SUGMA_SessionComponent.I.UnregisterComponent("KOTHHud"); + + ControlPoint = null; + SUGMA_SessionComponent.I.UnregisterComponent("KOTHZone"); + } + + internal override void DisplayWinMessage() + { + if (_winningFaction == null) + { + MyAPIGateway.Utilities.ShowNotification("YOU ARE ALL LOSERS.", 10000, "Red"); + return; + } + + MyAPIGateway.Utilities.ShowNotification($"A WINNER IS [{_winningFaction?.Name}]!", 10000); + } + + public override void UpdateActive() + { + if (ActivationTimeCounter > 0) + { + if (_matchTimer.Ticks % 60 == 0) + { + ActivationTimeCounter--; + + if (ActivationTimeCounter <= 0) + { + ControlPoint = new KOTHSphereZone(_controlPointPosition, _controlPointRadius, WinTime); + SUGMA_SessionComponent.I.RegisterComponent("KOTHZone", ControlPoint); + } + } + } + + if (ControlPoint == null) + return; + + if (ControlPoint.IsCaptured) + { + StopRound(); + } + } + } +} \ No newline at end of file diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs new file mode 100644 index 000000000..2a899b44c --- /dev/null +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using RichHudFramework; +using RichHudFramework.Client; +using RichHudFramework.UI; +using RichHudFramework.UI.Client; +using RichHudFramework.UI.Rendering; +using SC.SUGMA.GameModes.Elimination; +using SC.SUGMA.GameState; +using SC.SUGMA.Utilities; +using VRage.Game.ModAPI; +using VRage.Utils; +using VRageMath; + +namespace SC.SUGMA.GameModes.KOTH +{ + internal class KOTHHud : ComponentBase + { + private readonly KOTHGamemode _gamemode; + private KOTHHud_Window _window; + + public KOTHHud(KOTHGamemode gamemode) + { + _gamemode = gamemode; + } + + public override void Init(string id) + { + base.Init(id); + + if (!RichHudClient.Registered) + throw new Exception("RichHudAPI was not initialized in time!"); + + _window = new KOTHHud_Window(HudMain.HighDpiRoot, _gamemode); + } + + public override void Close() + { + HudMain.HighDpiRoot.RemoveChild(_window); + } + + public override void UpdateTick() + { + if (SUGMA_SessionComponent.I.CurrentGamemode != null) + _window.Update(); + } + + public void MatchEnded(IMyFaction winner) + { + _window.MatchEnded(winner); + } + } + + internal class KOTHHud_Window : WindowBase + { + private static readonly Material _circleMaterial = + new Material(MyStringId.GetOrCompute("SugmaCircle"), new Vector2(32, 32)); + + private readonly KOTHGamemode _gamemode; + private readonly elmHud_Window _windowBase; + + private TexturedBox _captureIndicator; + + private Label _captureLabel; + + public KOTHHud_Window(HudParentBase parent, KOTHGamemode gamemode) : base(parent) + { + _gamemode = gamemode; + _windowBase = SUGMA_SessionComponent.I.GetComponent("elmHud").Window; + + _captureIndicator = new TexturedBox(_windowBase) + { + Material = _circleMaterial, + ParentAlignment = ParentAlignments.Bottom | ParentAlignments.Center, + Size = Vector2.One * 32, + Offset = new Vector2(0, -10), + ZOffset = sbyte.MaxValue + }; + + _captureLabel = new Label(_captureIndicator) + { + ParentAlignment = ParentAlignments.Center, + Offset = new Vector2(0, -35), + Text = "Initializing KOTH..." + }; + + foreach (var banner in _windowBase.Banners) + { + banner.Visible = false; + } + } + + public void Update() + { + if (_gamemode.ControlPoint == null) + { + int timeLeft = Math.Max(0, _gamemode.ActivationTimeCounter); + if (timeLeft > 0) + { + _captureIndicator.Color = Color.White; + _captureLabel.Text = $"Zone Locked: {timeLeft}s"; + } + else + { + _captureIndicator.Color = Color.White; + _captureLabel.Text = "Waiting for zone creation..."; + } + return; + } + + var zone = _gamemode.ControlPoint; + + bool isActivelyCapturing = zone.ActiveCapturingFaction != null && zone.CaptureTimeCurrent > 0f; + Color capturingColor = isActivelyCapturing + ? zone.ActiveCapturingFaction.CustomColor.ColorMaskToRgb() + : Color.White; + + _captureIndicator.Color = capturingColor.SetAlphaPct(0.5f); + + float current = zone.CaptureTimeCurrent; + float total = zone.CaptureTime; + + if (!isActivelyCapturing && current > 0f) + { + _captureIndicator.Color = Color.White.SetAlphaPct(0.5f); + } + + _captureLabel.Text = $"Capturing: {current:0.0}s / {total:0.0}s"; + } + + public void MatchEnded(IMyFaction winner) + { + Log.Info("KOTHHud.cs:133 MatchEnded (" + winner?.Name + ")"); + _captureIndicator.Visible = false; + _captureLabel.Visible = false; + + _windowBase._winnerLabel.Visible = false; + _windowBase._winnerLabel = new LabelBox(_windowBase._timerLabel) + { + Text = winner != null + ? $"A WINNER IS {winner.Name}" + : "YOU ARE ALL LOSERS", + ParentAlignment = ParentAlignments.Bottom, + Height = EliminationHud_TeamBanner.BaseHeight, + TextPadding = new Vector2(2.5f, 0), + Color = HudConstants.HudBackgroundColor + }; + _windowBase._winnerLabel.Visible = true; + + _windowBase._winnerLabel.TextBoard.SetFormatting(GlyphFormat.White.WithColor(Color.Red).WithSize(3) + .WithAlignment(TextAlignment.Center)); + } + } +} \ No newline at end of file diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameState/KOTHSphereZone.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameState/KOTHSphereZone.cs new file mode 100644 index 000000000..fe7e3fb0b --- /dev/null +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameState/KOTHSphereZone.cs @@ -0,0 +1,112 @@ +using RichHudFramework; +using Sandbox.Game; +using Sandbox.Game.Entities; +using SC.SUGMA.Utilities; +using VRage.Game.ModAPI; +using VRageMath; +using System; +using System.Linq; +using System.Collections.Generic; + +namespace SC.SUGMA.GameState +{ + public class KOTHSphereZone : SphereZone + { + public IMyFaction _zoneOwner; + private Color _baseColor = Color.White.SetAlphaPct(0.25f); + + public bool IsCaptured = false; + public float CaptureTime; + public float CaptureTimeCurrent; + public MySoundPair CaptureSound = new MySoundPair("SUGMA_CaptureSound_TF2"); + + public IMyFaction ActiveCapturingFaction; + + public KOTHSphereZone(Vector3D center, double radius, float captureTime, IMyFaction initialOwner = null) + : base(center, radius) + { + _zoneOwner = initialOwner; + CaptureTime = captureTime; + + SphereDrawColor = (_zoneOwner?.CustomColor.ColorMaskToRgb() ?? Color.White).SetAlphaPct(0.25f); + _baseColor = SphereDrawColor; + } + + public override void UpdateTick() + { + GridFilter = SUGMA_SessionComponent.I.ShareTrackApi.GetTrackedGrids(); + base.UpdateTick(); + + var distinctFactions = new HashSet(); + foreach (var grid in ContainedGrids) + { + var faction = grid.GetFaction(); + if (faction != null) + distinctFactions.Add(faction); + } + + if (distinctFactions.Count == 0) + { + CaptureTimeCurrent = MathHelper.Max(0f, CaptureTimeCurrent - (1f / 120f)); + if (CaptureTimeCurrent <= 0f) + ActiveCapturingFaction = null; + } + else if (distinctFactions.Count > 1) + { + CaptureTimeCurrent = MathHelper.Max(0f, CaptureTimeCurrent - (1f / 120f)); + if (CaptureTimeCurrent <= 0f) + ActiveCapturingFaction = null; + } + else + { + var occupant = distinctFactions.First(); + + if (occupant == _zoneOwner) + { + CaptureTimeCurrent = 0f; + ActiveCapturingFaction = null; + } + else + { + if (ActiveCapturingFaction == null) + { + ActiveCapturingFaction = occupant; + } + else if (ActiveCapturingFaction != occupant) + { + CaptureTimeCurrent = MathHelper.Max(0f, CaptureTimeCurrent - (1f / 60f)); + + if (CaptureTimeCurrent <= 0f) + { + ActiveCapturingFaction = occupant; + CaptureTimeCurrent = 0f; + } + } + + if (ActiveCapturingFaction == occupant) + { + CaptureTimeCurrent += (1f / 60f); + + if (CaptureTimeCurrent >= CaptureTime) + { + _zoneOwner = ActiveCapturingFaction; + CaptureTimeCurrent = 0f; + ActiveCapturingFaction = null; + OnCapture(); + } + } + } + } + + float lerpAmount = (CaptureTime <= 0f ? 0f : CaptureTimeCurrent / CaptureTime); + Color capturingColor = ActiveCapturingFaction?.CustomColor.ColorMaskToRgb() ?? Color.White; + SphereDrawColor = Color.Lerp(_baseColor, capturingColor, lerpAmount).SetAlphaPct(0.25f); + } + + public virtual void OnCapture() + { + IsCaptured = true; + SUtils.PlaySound(CaptureSound); + } + } +} diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs index bc51ba722..b237979cb 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs @@ -10,6 +10,7 @@ using SC.SUGMA.GameModes.Domination; using SC.SUGMA.GameModes.Elimination; using SC.SUGMA.GameModes.TeamDeathmatch; +using SC.SUGMA.GameModes.KOTH; using SC.SUGMA.GameState; using SC.SUGMA.HeartNetworking; using SC.SUGMA.HeartNetworking.Custom; @@ -33,6 +34,7 @@ internal class SUGMA_SessionComponent : MySessionComponentBase ["elm"] = new EliminationGamemode(), ["dom"] = new DominationGamemode(), ["tdm"] = new TeamDeathmatchGamemode(), + ["koth"] = new KOTHGamemode(), }; /// diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Utilities/SUtils.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Utilities/SUtils.cs index 3285df400..aec9bd4a1 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Utilities/SUtils.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Utilities/SUtils.cs @@ -49,7 +49,7 @@ public static void SetWorldPermissionsForMatch(bool matchActive) MySessionComponentSafeZones.AllowedActions = CastProhibit(MySessionComponentSafeZones.AllowedActions, matchActive ? MatchPermsInt : FullPermsInt); - if (matchActive && MyAPIGateway.Session.IsServer) + if (matchActive && (MyAPIGateway.Session?.IsServer ?? false)) ClearImageLcds(); } @@ -110,31 +110,42 @@ public static void ClearBoard(bool resetFactions) if (!MyAPIGateway.Session.IsServer) return; - var playerIds = new List(); + var playerIds = new List(); // All players that aren't spectators. foreach (var faction in PlayerTracker.I.GetPlayerFactions()) playerIds.AddRange(faction.Members.Values.Select(player => player.PlayerId)); - var greenSpawn = GetFactionSpawns().FirstOrDefault(b => b.Key.Tag == "NEU").Value; - foreach (var player in PlayerTracker.I.AllPlayers.Where(p => playerIds.Contains(p.Key))) + var factionSpawns = GetFactionSpawns(); + if (factionSpawns.Any(b => b.Key.Tag == "NEU")) { - if (greenSpawn != null) - player.Value.Character?.SetWorldMatrix(greenSpawn.WorldMatrix); - else + var spawnPos = GetFactionSpawns().First(b => b.Key.Tag == "NEU").Value.WorldMatrix.Translation; + spawnPos -= spawnPos.Normalized() * 100; + + foreach (var player in PlayerTracker.I.AllPlayers) + { + (player.Value.Controller.ControlledEntity as IMyCockpit)?.RemovePilot(); + player.Value.Character?.Teleport(MatrixD.CreateWorld(spawnPos + RandVector(-50, 50) * Vector3D.Right)); + } + } + else + { + foreach (var player in PlayerTracker.I.AllPlayers.Where(p => playerIds.Contains(p.Key))) player.Value.Character?.Kill(); } - + SUGMA_SessionComponent.I.StopGamemode(true); + List bufferGroupGrids = new List(); MyAPIGateway.Entities.GetEntities(null, g => { IMyCubeGrid grid = g as IMyCubeGrid; if (grid == null) return false; - // If this ever becomes an issue with deleting existing subgrids, change it to a GridGroup check. - if (!grid.IsStatic) + grid.GetGridGroup(GridLinkTypeEnum.Physical).GetGrids(bufferGroupGrids); // Ignore the spawn stations, blockers, and any grids attached to them. + if (!bufferGroupGrids.Any(attachedGrid => attachedGrid.IsStatic)) grid.Close(); + bufferGroupGrids.Clear(); return false; }); diff --git a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs index 9ea961c32..3bcf84387 100644 --- a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs +++ b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs @@ -762,6 +762,9 @@ internal class PointAdditions : MySessionComponentBase ["Caster_Reactor"] = 125, ["Heat_Heatsink"] = 10, ["Heat_FlatRadiator"] = 10, + ["ActiveRadiator"] = 250, + ["RadiatorPanel"] = 5, + ["ExtendableRadiatorBase"] = 5, #endregion }; diff --git a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/GridStats.cs b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/GridStats.cs index f0dc41672..205cde8be 100644 --- a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/GridStats.cs +++ b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/GridStats.cs @@ -13,6 +13,11 @@ namespace StarCore.ShareTrack.ShipTracking { internal class GridStats // TODO convert this to be event-driven. OnBlockPlace, etc. Keep a queue. { + private readonly string[] _ignoredIntegrityBlocks = new[] + { + "SC_SRB" + }; + private readonly HashSet _fatBlocks = new HashSet(); private readonly HashSet _slimBlocks; @@ -38,7 +43,7 @@ public GridStats(IMyCubeGrid grid) foreach (var block in _slimBlocks) { - if (block?.FatBlock != null) + if (block?.FatBlock != null && !_ignoredIntegrityBlocks.Contains(block.BlockDefinition.Id.SubtypeName)) { _fatBlocks.Add(block.FatBlock); GridIntegrity += block.Integrity; @@ -72,11 +77,11 @@ public void UpdateAfterSim() { float tempGridInteg = 0; - foreach (var block in _slimBlocks) + foreach (var block in _fatBlocks) { - if (block.FatBlock != null) // Remove To Count All Blocks + if (block != null && !_ignoredIntegrityBlocks.Contains(block.BlockDefinition.SubtypeName)) // Remove To Count All Blocks { - tempGridInteg += block.Integrity; + tempGridInteg += block.SlimBlock.Integrity; } } diff --git a/Utility Mods/MoA Fusion Systems/Data/ActiveRadiatorParticle.sbc b/Utility Mods/MoA Fusion Systems/Data/ActiveRadiatorParticle.sbc index 7f6031369..c908eab58 100644 --- a/Utility Mods/MoA Fusion Systems/Data/ActiveRadiatorParticle.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/ActiveRadiatorParticle.sbc @@ -315,7 +315,7 @@ true - 0 + 1 0 diff --git a/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc b/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc index b9195b695..47d25cb99 100644 --- a/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc @@ -7,7 +7,7 @@ Fusion Systems - FusionSystems + Fusion Systems Caster_Accelerator_0 Caster_Accelerator_90 diff --git a/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc b/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc index 491910d46..d915be8dc 100644 --- a/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc @@ -35,6 +35,7 @@ + X \ No newline at end of file diff --git a/Utility Mods/MoA Fusion Systems/Data/ctf_score_background.sbc b/Utility Mods/MoA Fusion Systems/Data/HudTextures.sbc similarity index 71% rename from Utility Mods/MoA Fusion Systems/Data/ctf_score_background.sbc rename to Utility Mods/MoA Fusion Systems/Data/HudTextures.sbc index 0e6538197..dadd3556e 100644 --- a/Utility Mods/MoA Fusion Systems/Data/ctf_score_background.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/HudTextures.sbc @@ -25,5 +25,17 @@ 0.1 Textures\fusionBarBackground.dds + + + TransparentMaterialDefinition + HudBackground + + false + 1 + false + false + 0.1 + Textures\HudBackground.dds + diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/FusionWindow.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/FusionWindow.cs new file mode 100644 index 000000000..9d9df4b8f --- /dev/null +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/FusionWindow.cs @@ -0,0 +1,260 @@ +using Epstein_Fusion_DS.Communication; +using Epstein_Fusion_DS.FusionParts; +using Epstein_Fusion_DS.HeatParts; +using RichHudFramework.UI; +using RichHudFramework.UI.Rendering; +using RichHudFramework.UI.Rendering.Client; +using Sandbox.Game.Entities; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VRage.Game.Entity; +using VRage.Game.ModAPI; +using VRageMath; + +namespace Epstein_Fusion_DS.HudHelpers +{ + internal class FusionWindow : CamSpaceNode + { + private readonly TexturedBox _backgroundBox, _foregroundBox, _heatBox, _storBox; + private readonly Label _heatLabel, _storageLabel, _infoLabelLeft; + + private readonly GlyphFormat _stdTextFormat = new GlyphFormat(color: HudConstants.HudTextColor, alignment: TextAlignment.Center, font: FontManager.GetFont("Monospace")); + private readonly GlyphFormat _stdTextFormatInfo = new GlyphFormat(color: HudConstants.HudTextColor, textSize: 0.6f, alignment: TextAlignment.Left, font: FontManager.GetFont("Monospace")); + + public FusionWindow(HudParentBase parent) : base(parent) + { + RotationAxis = new Vector3(0, 1, 0); + RotationAngle = 0.25f; + TransformOffset = new Vector3D(-0.0675, -0.04, -0.05); + + _backgroundBox = new TexturedBox(this) + { + Material = new Material("WhiteSquare", HudConstants.HudSize), + Size = HudConstants.HudSize, + Color = HudConstants.HudBackgroundColor, + IsMasking = true, + ZOffset = sbyte.MinValue, + Padding = Vector2.Zero, + }; + _foregroundBox = new TexturedBox(this) + { + Material = new Material("HudBackground", new Vector2(400, 136)), + Size = HudConstants.HudSize, + ZOffset = sbyte.MaxValue, + }; + + _heatLabel = new Label(this) + { + Text = "00% HEAT", + Offset = new Vector2(0, 0), + Format = _stdTextFormat, + ZOffset = sbyte.MaxValue, + }; + _storageLabel = new Label(this) + { + Text = "00% STOR", + Offset = new Vector2(0, -_backgroundBox.Size.Y/3), + Format = _stdTextFormat, + ZOffset = sbyte.MaxValue, + }; + + _infoLabelLeft = new Label(this) + { + Text = "100% INTEGRITY - ALL SYSTEMS NOMINAL", + Offset = new Vector2(0, _backgroundBox.Size.Y/3), + Format = _stdTextFormat, + ZOffset = sbyte.MaxValue, + }; + + _heatBox = new TexturedBox(_backgroundBox) + { + Material = new Material("WhiteSquare", new Vector2(384, 38) * HudConstants.HudSizeRatio), + Size = new Vector2(384, 38) * HudConstants.HudSizeRatio, + ParentAlignment = ParentAlignments.Left | ParentAlignments.Top | ParentAlignments.Inner, + Offset = new Vector2(8, -49) * HudConstants.HudSizeRatio, + ZOffset = 0, + Color = Color.Red, + }; + + _storBox = new TexturedBox(_backgroundBox) + { + Material = new Material("WhiteSquare", new Vector2(384, 38) * HudConstants.HudSizeRatio), + Size = new Vector2(384, 38) * HudConstants.HudSizeRatio, + ParentAlignment = ParentAlignments.Left | ParentAlignments.Top | ParentAlignments.Inner, + Offset = new Vector2(8, -95) * HudConstants.HudSizeRatio, + ZOffset = 0, + Color = Color.Orange, + }; + } + + + private static ModularDefinitionApi ModularApi => Epstein_Fusion_DS.ModularDefinition.ModularApi; + private int _ticks = 0; + private bool _shouldHide; + private MyEntity3DSoundEmitter _soundEmitter = null; + private readonly MySoundPair _alertSound = new MySoundPair("ArcSoundBlockAlert2"); + + public void Update() + { + _ticks++; + var playerCockpit = MyAPIGateway.Session?.Player?.Controller?.ControlledEntity?.Entity as IMyShipController; + + // Pulling the current HudState is SLOOOOWWWW, so we only pull it when tab is just pressed. + //if (MyAPIGateway.Input.IsNewKeyPressed(MyKeys.Tab)) + // _shouldHide = MyAPIGateway.Session?.Config?.HudState != 1; + + // Hide HUD element if the player isn't in a cockpit + if (playerCockpit == null || _shouldHide) + { + if (Visible) Visible = false; + + if (_soundEmitter != null) + { + _soundEmitter.StopSound(true); + _soundEmitter = null; + } + return; + } + + var playerGrid = playerCockpit.CubeGrid; + + float totalFusionCapacity = 0; + float totalFusionGeneration = 0; + float totalFusionStored = 0; + float reactorIntegrity = 0; + int reactorCount = 0; + + foreach (var system in SFusionManager.I.FusionSystems) + { + if (playerGrid != ModularApi.GetAssemblyGrid(system.Key)) + continue; + + totalFusionCapacity += system.Value.MaxPowerStored; + totalFusionGeneration += system.Value.PowerGeneration; + totalFusionStored += system.Value.PowerStored; + foreach (var reactor in system.Value.Reactors) + { + reactorIntegrity += reactor.Block.SlimBlock.Integrity/reactor.Block.SlimBlock.MaxIntegrity; + reactorCount++; + } + foreach (var thruster in system.Value.Thrusters) + { + reactorIntegrity += thruster.Block.SlimBlock.Integrity/thruster.Block.SlimBlock.MaxIntegrity; + reactorCount++; + } + } + reactorIntegrity /= reactorCount; + + // Hide HUD element if the grid has no fusion systems (capacity is always >0 for a fusion system) + if (totalFusionCapacity == 0) + { + if (Visible) Visible = false; + return; + } + + // Show otherwise + if (!Visible) Visible = true; + + var heatPct = HeatManager.I.GetGridHeatLevel(playerGrid); + + _heatBox.Width = 384 * HudConstants.HudSizeRatio.X * heatPct; + _heatBox.Color = new Color(heatPct, 1-heatPct, 0, 0.75f); + + _storBox.Width = 384 * HudConstants.HudSizeRatio.X * (totalFusionStored / totalFusionCapacity); + + _infoLabelLeft.Text = new RichText + { + {(reactorIntegrity*100).ToString("N0") + "%", _stdTextFormatInfo.WithColor(reactorIntegrity > 0.6 ? Color.White : Color.Red)}, + {" INTEGRITY - ", _stdTextFormatInfo}, + {GetNoticeText(heatPct, reactorIntegrity), GetNoticeFormat(heatPct, reactorIntegrity)}, + }; + + _heatLabel.Text = $"{heatPct*100:N0}% HEAT"; + _storageLabel.Text = $"{(totalFusionStored / totalFusionCapacity) * 100:N0}% STOR"; + + if (heatPct > 0.8f) + { + if (_soundEmitter == null) + { + _soundEmitter = new MyEntity3DSoundEmitter((MyEntity) playerCockpit.Entity) + { + CanPlayLoopSounds = true + }; + _soundEmitter.PlaySound(_alertSound); + } + } + else + { + if (_soundEmitter != null) + { + _soundEmitter.StopSound(true); + _soundEmitter = null; + } + } + } + + private int _errRemainingTicks = 0; + private float _lastIntegrityPct = 1; + private string _lastErrText = ""; + private string GetNoticeText(float heatPct, float integrityPct) + { + if (integrityPct < _lastIntegrityPct && _errRemainingTicks == 0) + _errRemainingTicks = Utils.Random.Next(60, 120); + //_lastIntegrityPct = integrityPct; + + string baseText = "ALL SYSTEMS NOMINAL"; + char[] errArray = new[] + { + '?', + '░', + '▒', + '▓', + '█', + '*', + '%', + '@', + }; + + if (integrityPct < 0.1) + baseText = " I DON'T WANT TO DIE. "; + else if (integrityPct < 0.5) + baseText = " -! REACTOR FAILURE !- "; + else if (integrityPct < 0.6) + baseText = "-! SHUTDOWN IMMINENT !-"; + else if (heatPct > 0.8) + baseText = " ! THERMAL DAMAGE ! "; + + if (_errRemainingTicks > 0 || integrityPct < 0.6) + { + if (_errRemainingTicks % 4 == 0) + { + var chars = baseText.ToCharArray(); + for (int i = Utils.Random.Next(0, baseText.Length/4); i < baseText.Length; i += Utils.Random.Next(1, baseText.Length/2)) + chars[i] = errArray[Utils.Random.Next(0, errArray.Length - 1)]; + baseText = new string(chars); + _lastErrText = baseText; + } + else + { + baseText = _lastErrText; + } + _errRemainingTicks--; + } + + return baseText; + } + + private GlyphFormat GetNoticeFormat(float heatPct, float integrityPct) + { + if (integrityPct < 0.6 || heatPct > 0.8) + return _stdTextFormatInfo.WithColor(Color.Red); + else if (_errRemainingTicks > 0) + return _stdTextFormatInfo.WithColor(Color.Yellow); + return _stdTextFormatInfo; + } + } +} diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/HudConstants.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/HudConstants.cs new file mode 100644 index 000000000..cab42a67e --- /dev/null +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HudHelpers/HudConstants.cs @@ -0,0 +1,20 @@ +using RichHudFramework.UI.Rendering; +using VRageMath; + +namespace Epstein_Fusion_DS.HudHelpers +{ + /// + /// HUD constants class for Fusion Systems + /// + public static class HudConstants + { + public static readonly Color HudBackgroundColor = new Color(255, 255, 255, 40); + public static readonly Color HudTextColor = Color.White; + public static Vector2 HudSize = new Vector2(300, 102); + public static Vector2 HudSizeRatio = HudSize / new Vector2(400, 136); + + //public static Material BackgroundMaterial = new Material("HudBackground", new Vector2(435, 102)); + + //public static Vector2 HudAngle = new Vector2( + } +} diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/S_FusionPlayerHud.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/S_FusionPlayerHud.cs index e21fca76b..76f6d0a24 100644 --- a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/S_FusionPlayerHud.cs +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/S_FusionPlayerHud.cs @@ -21,7 +21,7 @@ public class SFusionPlayerHud : MySessionComponentBase public static SFusionPlayerHud I; private int _ticks; - private ConsumptionBar _consumptionBar; + private FusionWindow _fusionHud; private static ModularDefinitionApi ModularApi => Epstein_Fusion_DS.ModularDefinition.ModularApi; private static SFusionManager FusionManager => SFusionManager.I; private static HeatManager HeatManager => HeatManager.I; @@ -53,15 +53,17 @@ public override void UpdateAfterSimulation() _ticks++; try { - if (_consumptionBar == null && RichHudClient.Registered) - _consumptionBar = new ConsumptionBar(HudMain.HighDpiRoot) + if (_fusionHud == null && RichHudClient.Registered) + { + _fusionHud = new FusionWindow(HudMain.HighDpiRoot) { Visible = true - }; + }; + } HeatManager.UpdateTick(); FusionManager.UpdateTick(); - _consumptionBar?.Update(); + _fusionHud?.Update(); if (ModularApi.IsDebug()) { diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/Utils.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/Utils.cs index 50d5541e1..466ec002b 100644 --- a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/Utils.cs +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/Utils.cs @@ -1,9 +1,12 @@ -using VRageMath; +using System; +using VRageMath; namespace Epstein_Fusion_DS { public static class Utils { + public static Random Random = new Random(); + // TODO make this less inefficient. public static Matrix RotateMatrixAroundPoint(Matrix matrix, Vector3D point, Vector3D axis, double angleRadians) { diff --git a/Utility Mods/MoA Fusion Systems/Textures/HudBackground.dds b/Utility Mods/MoA Fusion Systems/Textures/HudBackground.dds new file mode 100644 index 0000000000000000000000000000000000000000..1e517cff8cdc7acb5740cec450102dc7a292fbf0 GIT binary patch literal 54548 zcmeI)L246G0LJkbA}ER^C#VH4pu2)lH@$%y*RBd)piy*X>sNpMrRCjcKh&q@H&3ts=K6N~F#B6ByGJ~BB(_^T@JIrDNE-5#4}3@hd`KGd zfe(C00(?js@_`S0NCJFF8uEb;d`JR(NE-5i4}3@hd`KGdfe(C00(?js@_`S0NCJFF z8uEb;d`JR(NE-5i4}3@hd`KGdfe(C00(?js@_`S0NCJFF8uEb;d`JR(NE-5i4}3@h zd`KGdfe(C00(?js@_`S0NCJFF8uEb;d`JR(NE-5i4}3@h56y?wWxKtdH@}{po}MmW zoHbt-<+^QW&H4rVc<{k`kO$Mq!+jroT6}$ZbaeEuKHDE(`{U!fKe7z#&-S}O@W3Mp z@F8i)i-+#Rz7J}DywM-}ue-eQz@tOpq350V-`I|+=9dac|J;F~uI1cT}snO?p&ai+jWCEE8Ji*l1)u!~~g;_w0sbo0i@_yJ0o$cEi)r zl(<*j<_qOMb1tRmh?IP#)=btE@>PN+znegHQVYgG$CjZ7?dB_GCW8z!Bt@J#Wvx_W zd4v*!gMKeoFV$dHR!TN6NPV)>%#mhPK$6_+reHzFU#XS(?Q|1I7FJ3vzy@Xore&tk|nD_0a*l z+b9^gjMIHz8Yjy_XV@!ccs_#?i8@Lq`zVuDP)R_%l0pfTOD0h!lO>0&BBZnt&*#Py zQ6JTL1t|j0la54by7Xuw%ApitB!l{;5>k}I@zT7g_3IHW%p~fA9dYEV>Kq@-n3mPE zB0G^_f%EscQEd0Zt}dsxs$AFa>+f^}wqflX7aFlGd#l|GihjA<3wDcrlrtLsAQ#yU z*rj~m4u@k#I?&x0V|+boVa)Q;07`{+7(ZsWqqUy36BFwEAibjp#V%)5M>>*yMs^3Y z`D%$*8tEL;EVb z{9F4?A=;?63kfx6gnUA=%W!QqCTMasQYbXTLiwO!T8(r`ibYVGDT~F(`RK5Y4pLks z5lk?C6zEEtHVA2KI6J;$*>WwMG!C#)eo^2*X&kn z0pL#`L)9g_jWx?f29{M*P|c2RV%as0J_}BCa*gAX`*s-mm~CPshb>Vid&*e2ZBp|T zH8)2;HVb_o0@!)gwBRU9OAl9uCYic^bb{a0N9}~(YGKJDVa;4mVGSFqv`#j?Ew*e- z;EcM=lysw|Hl}oh)*1MHFbj=nR18bu2+IXSn2B+h*8Z2^mo8p{ z!&B}#BCZhfzXlD$73E$aVgb7E&Kb;cbwq=h<`gmvaR@~E_EaEyb*95qNBEJMc5j>^ z<_Y{=?L4*xNH_R`dyxp(1=RDP^bRvQ``F8g2fE?f%c&Yvysfrm_g)$IRLDkT5i#%5 z5}c?>{@(s9MRl$cNa%1J8$jlM_dpnY{_o@xKNv>^Cz?CN!-XDPRho9WNykG^LOuB>(=<=vCdCM?i@~|Pn$jg!!jy3GyxHsVSH~?{PEw$BYXeGOPxLwN# zH9J=cF$j&rCjD2!D{$*tIi@8FS{@=@{;8G#2hS(aLa@h5$Rp}V33&xLahU$|1aS2j zU|i(3EjZc;CPR@0<=6n8_;>xYKt8wtUKwVW9S`hSSmIbP21QP zC49;m^iA`~$#I91Mpnk(<79F)a|+=EpZRCsN1ty-ck#Ab@W4lBS5(H^06yrYrKe_x z#>yRe9KeZ%pCBvTpCn=$rJn#0AlYI2Q{=<_X(FZ*K0_Kb7{HnEB>8ZkA!0hgLmCT! z{GXi);__mHc!gZ(%s(@Gh8jt`{CL3h<#nSiwvL)`2<(>Zfo+Q-Vr6$8oC`Sa=MIZNL2F=%EN)CPdqVee8+Via|0I>gS$wwrIx3x zxt}I&n!dI0YZ8V2&3ebloCvnJM=b#w6dK&zxeL!g3;Z2?>6pns2P5G7V0PE%iCA>D z<_V5*f_I1XgJ5;-uxc;@CnbY=U%`0 tqc=AB`(ZTZoocOi?lwOYp6;Q(arN4@gD>2}!aJ92emnmB50oY_@h`2dANK$N literal 0 HcmV?d00001 diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs index 7b821d10f..4822e35e5 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs @@ -34,6 +34,7 @@ public class Generator_Settings public float MinPowerDraw = 50.00f; public int MaxSiegeTime = 60; + public int MinSiegeTime = 15; public int SiegePowerDraw = 900; public float SiegeModeResistence = 0.9f; @@ -56,6 +57,7 @@ void LoadConfig(MyIni iniParser) MinPowerDraw = iniParser.Get(IniSection, nameof(MinPowerDraw)).ToSingle(MinPowerDraw); MaxSiegeTime = iniParser.Get(IniSection, nameof(MaxSiegeTime)).ToInt32(MaxSiegeTime); + MinSiegeTime = iniParser.Get(IniSection, nameof(MinSiegeTime)).ToInt32(MinSiegeTime); SiegePowerDraw = iniParser.Get(IniSection, nameof(SiegePowerDraw)).ToInt32(SiegePowerDraw); SiegeModeResistence = iniParser.Get(IniSection, nameof(SiegeModeResistence)).ToSingle(SiegeModeResistence); diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs index ab5b00db3..cb8c55567 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs @@ -471,7 +471,7 @@ private void EndSiegeMode() SiegeBlockEnabler(Block.CubeGrid.GetFatBlocks(), true); - SiegeCooldownTime.Value = (SiegeElapsedTime.Value > 5) ? (SiegeElapsedTime.Value * 2) : 5; + SiegeCooldownTime.Value = (SiegeElapsedTime.Value > Config.MinSiegeTime) ? (SiegeElapsedTime.Value * 2) : Config.MinSiegeTime; SiegeElapsedTime.Value = 0; SiegeCooldownActive.Value = true; } diff --git a/Utility Mods/SC_Season_4_Adjustments/Data/AiRange_EntityComponents.sbc b/Utility Mods/SC_Season_4_Adjustments/Data/AiRange_EntityComponents.sbc new file mode 100644 index 000000000..b32182fb9 --- /dev/null +++ b/Utility Mods/SC_Season_4_Adjustments/Data/AiRange_EntityComponents.sbc @@ -0,0 +1,111 @@ + + + + + + + BasicMissionFollowHome + BasicMissionBlock + + 2 + 0 + 19990 + 0 + 1 + 20000 + 1000 + + + + EventDistanceToLockedTarget + EventControllerBlockComponent + + 22 + 25000 + 25000 + + + + + OffensiveCombatCircleOrbit + OffensiveCombatBlock + + 0 + 100 + 20000 + 2 + + + + OffensiveCombatHitAndRun + OffensiveCombatBlock + + 5000 + 10000 + 2 + 90 + 2 + + + + OffensiveCombatIntercept + OffensiveCombatBlock + + 3 + + + + OffensiveCombatStayAtRange + OffensiveCombatBlock + + 2 + 1 + + + + + SearchEnemyComponent + DefaultEnemySearch + + 20000 + + + diff --git a/Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl b/Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl.disabled similarity index 99% rename from Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl rename to Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl.disabled index 444c291d7..0f65db8c4 100644 --- a/Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl +++ b/Weapon Mods/40k-Weapons-Mod/Data/Animation/NEC_Whip_Crystal.bsl.disabled @@ -30,4 +30,4 @@ action Block() { API.stoploop("rotateCrystal") API.stoploop("bounceCrystal") } -} \ No newline at end of file +} diff --git a/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info b/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info deleted file mode 100644 index 671be8d7d..000000000 --- a/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info +++ /dev/null @@ -1 +0,0 @@ -Animation NEC_Whip_Crystal \ No newline at end of file diff --git a/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info.disabled b/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info.disabled new file mode 100644 index 000000000..5dc7658b9 --- /dev/null +++ b/Weapon Mods/40k-Weapons-Mod/Data/Animation/main.info.disabled @@ -0,0 +1 @@ +Animation NEC_Whip_Crystal diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs index 7a5721d15..3a9db9986 100644 --- a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs +++ b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs @@ -94,8 +94,8 @@ partial class Parts { { RotateRate = 0.013f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). ElevateRate = 0.0075f, // Max traversal speed of elevation subpart in radians per tick. - MinAzimuth = -180, - MaxAzimuth = 180, + MinAzimuth = -45, + MaxAzimuth = 45, MinElevation = -13, MaxElevation = 45, HomeAzimuth = 0, // Default resting rotation angle From 201187152c33d305e9448b99dff15b847b337fb4 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Thu, 6 Mar 2025 15:25:21 -0500 Subject: [PATCH 02/36] Blink Drive Power Draw why were SI tanks buffed, reducing blink charge to 100MW. I think it used to be 500MW, but was told to set it to 300MW for now. --- Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc | 2 +- .../Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc b/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc index 67f8ae8cd..3f3aff751 100644 --- a/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc +++ b/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc @@ -8,7 +8,7 @@ Standard Blink Drive Textures\GUI\Icons\BlinkDriveIcon.dds - 1Km teleport. Holds 3 charges. Each charge takes 100MW and 60s to recharge. + 1Km teleport. Holds 3 charges. Each charge takes 300MW and 60s to recharge. Large TriangleMesh diff --git a/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs b/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs index 765c9c116..b53f00606 100644 --- a/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs +++ b/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs @@ -39,7 +39,7 @@ public class BlinkDrive : MyGameLogicComponent, IMyEventProxy private const int RechargeTimeSeconds = 60; private const int MaxCharges = 3; - private float GetPowerDraw => JumpTimerSync > 0 ? 100 : 0.25f; + private float GetPowerDraw => JumpTimerSync > 0 ? 300 : 0.25f; private bool CanJump => Block.IsWorking && Block.IsFunctional && MaxCharges > 0; static bool controlsCreated = false; From f2a2032f558c5f07821d40ec7e56ff229b078276 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Thu, 6 Mar 2025 16:28:23 -0500 Subject: [PATCH 03/36] attempt to improve siege formula found an issue of discontinuity in the siege math, this should fix it. Set min siege time from 15 -> 20 for now. The issue was any time spent in siege between 8 seconds and 15 seconds was worth an incorrect 15 seconds of cooldown, and the 16th second was worth a correct 32 seconds of cooldown. Now there is a smooth transition, the first 10 seconds are worth 20 seconds of cooldown, and the 11th second is 22s of cooldown, the 12th second is 24s of cooldown, etc. Tested and confirmed to work in single player. --- .../FieldGenerator/FieldGenerator_Config.cs | 150 +++++++++--------- .../FieldGenerator/FieldGenerator_Core.cs | 2 +- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs index 4822e35e5..c9be5667c 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs @@ -33,8 +33,8 @@ public class Generator_Settings public float MaxPowerDraw = 500.00f; public float MinPowerDraw = 50.00f; - public int MaxSiegeTime = 60; - public int MinSiegeTime = 15; + public int MaxSiegeTime = 60; // this refers to max time spent you are able to be in siege mode. + public int MinSiegeTime = 10; // this refers to min time spent sieging in the cooldown formula, any time spent in siege below this number will count as this value for the cooldown formula. thus the minimum cooldown time is this number * 2. public int SiegePowerDraw = 900; public float SiegeModeResistence = 0.9f; @@ -75,79 +75,79 @@ void LoadConfig(MyIni iniParser) void SaveConfig(MyIni iniParser) { - iniParser.Set(IniSection, nameof(MaxModuleCount), MaxModuleCount); - iniParser.SetComment(IniSection, nameof(MaxModuleCount), - " \n[Maximum number of upgrade modules that can be attached to the Field Generator core.]\n" + - "[Each core has 4 mounting points by default.]\n" + - "[Default: 4]"); - - iniParser.Set(IniSection, nameof(PerModuleAmount), PerModuleAmount); - iniParser.SetComment(IniSection, nameof(PerModuleAmount), - " \n[Amount of resistance each attached upgrade module provides.]\n" + - "[Default: 10.0]"); - - iniParser.Set(IniSection, nameof(MaxPowerDraw), MaxPowerDraw); - iniParser.SetComment(IniSection, nameof(MaxPowerDraw), - " \n[The maximum power draw (in MW) when the Field Generator is at full power.]\n" + - "[Default: 500 MW]"); - - iniParser.Set(IniSection, nameof(MinPowerDraw), MinPowerDraw); - iniParser.SetComment(IniSection, nameof(MinPowerDraw), - " \n[Baseline power draw (in MW) at minimum field power.]\n" + - "[Default: 50 MW]"); - - iniParser.Set(IniSection, nameof(MaxSiegeTime), MaxSiegeTime); - iniParser.SetComment(IniSection, nameof(MaxSiegeTime), - " \n[Maximum duration (in seconds) the Field Generator can remain in Siege mode.]\n" + - "[Default: 60s]\n"); - - iniParser.Set(IniSection, nameof(SiegePowerDraw), SiegePowerDraw); - iniParser.SetComment(IniSection, nameof(SiegePowerDraw), - " \n[Power draw (in MW) while Siege mode is active.]\n" + - "[Overrides normal scaled power draw.]\n" + - "[Default: 900 MW]"); - - iniParser.Set(IniSection, nameof(SiegeModeResistence), SiegeModeResistence); - iniParser.SetComment(IniSection, nameof(SiegeModeResistence), - " \n[Amount of damage resistance provided by Siege mode (0.0 to 1.0).]\n" + - "[Example: 0.9 means 90% damage reduction from normal.]\n" + - "[Default: 0.9]"); - - iniParser.Set(IniSection, nameof(SimplifiedMode), SimplifiedMode); - iniParser.SetComment(IniSection, nameof(SimplifiedMode), - " \n[Whether to disable (true) or enable (false) the advanced stability system.]\n" + - "[Default: true]"); - - iniParser.Set(IniSection, nameof(DamageEventThreshold), DamageEventThreshold); - iniParser.SetComment(IniSection, nameof(DamageEventThreshold), - " \n[Number of damage events (within ResetInterval) needed to trigger stability reduction.]\n" + - "[Default: 6]"); - - iniParser.Set(IniSection, nameof(ResetInterval), ResetInterval); - iniParser.SetComment(IniSection, nameof(ResetInterval), - " \n[Time interval (in seconds) between damage counter resets.]\n" + - "[Default: 3]"); - - iniParser.Set(IniSection, nameof(MinBlockCount), MinBlockCount); - iniParser.SetComment(IniSection, nameof(MinBlockCount), - " \n[Minimum grid block count used in the size-based stability calculation.]\n" + - "[Default: 2500]"); - - iniParser.Set(IniSection, nameof(MaxBlockCount), MaxBlockCount); - iniParser.SetComment(IniSection, nameof(MaxBlockCount), - " \n[Maximum grid block count used in the size-based stability calculation.]\n" + - "[Default: 35000]"); - - iniParser.Set(IniSection, nameof(SizeModifierMin), SizeModifierMin); - iniParser.SetComment(IniSection, nameof(SizeModifierMin), - " \n[The lower bound of the size modifier.]\n" + - "[Size Modifier can reduce or increase stability change based on the grid size. This Min is the Increase at Min Grid Size]\n" + - "[Default: 1.2]"); - - iniParser.Set(IniSection, nameof(SizeModifierMax), SizeModifierMax); - iniParser.SetComment(IniSection, nameof(SizeModifierMax), - " \n[The upper bound of the size modifier.]\n" + - "[Size Modifier can reduce or increase stability change based on the grid size. This Max is the Reduction at Max Grid Size]\n" + + iniParser.Set(IniSection, nameof(MaxModuleCount), MaxModuleCount); + iniParser.SetComment(IniSection, nameof(MaxModuleCount), + " \n[Maximum number of upgrade modules that can be attached to the Field Generator core.]\n" + + "[Each core has 4 mounting points by default.]\n" + + "[Default: 4]"); + + iniParser.Set(IniSection, nameof(PerModuleAmount), PerModuleAmount); + iniParser.SetComment(IniSection, nameof(PerModuleAmount), + " \n[Amount of resistance each attached upgrade module provides.]\n" + + "[Default: 10.0]"); + + iniParser.Set(IniSection, nameof(MaxPowerDraw), MaxPowerDraw); + iniParser.SetComment(IniSection, nameof(MaxPowerDraw), + " \n[The maximum power draw (in MW) when the Field Generator is at full power.]\n" + + "[Default: 500 MW]"); + + iniParser.Set(IniSection, nameof(MinPowerDraw), MinPowerDraw); + iniParser.SetComment(IniSection, nameof(MinPowerDraw), + " \n[Baseline power draw (in MW) at minimum field power.]\n" + + "[Default: 50 MW]"); + + iniParser.Set(IniSection, nameof(MaxSiegeTime), MaxSiegeTime); + iniParser.SetComment(IniSection, nameof(MaxSiegeTime), + " \n[Maximum duration (in seconds) the Field Generator can remain in Siege mode.]\n" + + "[Default: 60s]\n"); + + iniParser.Set(IniSection, nameof(SiegePowerDraw), SiegePowerDraw); + iniParser.SetComment(IniSection, nameof(SiegePowerDraw), + " \n[Power draw (in MW) while Siege mode is active.]\n" + + "[Overrides normal scaled power draw.]\n" + + "[Default: 900 MW]"); + + iniParser.Set(IniSection, nameof(SiegeModeResistence), SiegeModeResistence); + iniParser.SetComment(IniSection, nameof(SiegeModeResistence), + " \n[Amount of damage resistance provided by Siege mode (0.0 to 1.0).]\n" + + "[Example: 0.9 means 90% damage reduction from normal.]\n" + + "[Default: 0.9]"); + + iniParser.Set(IniSection, nameof(SimplifiedMode), SimplifiedMode); + iniParser.SetComment(IniSection, nameof(SimplifiedMode), + " \n[Whether to disable (true) or enable (false) the advanced stability system.]\n" + + "[Default: true]"); + + iniParser.Set(IniSection, nameof(DamageEventThreshold), DamageEventThreshold); + iniParser.SetComment(IniSection, nameof(DamageEventThreshold), + " \n[Number of damage events (within ResetInterval) needed to trigger stability reduction.]\n" + + "[Default: 6]"); + + iniParser.Set(IniSection, nameof(ResetInterval), ResetInterval); + iniParser.SetComment(IniSection, nameof(ResetInterval), + " \n[Time interval (in seconds) between damage counter resets.]\n" + + "[Default: 3]"); + + iniParser.Set(IniSection, nameof(MinBlockCount), MinBlockCount); + iniParser.SetComment(IniSection, nameof(MinBlockCount), + " \n[Minimum grid block count used in the size-based stability calculation.]\n" + + "[Default: 2500]"); + + iniParser.Set(IniSection, nameof(MaxBlockCount), MaxBlockCount); + iniParser.SetComment(IniSection, nameof(MaxBlockCount), + " \n[Maximum grid block count used in the size-based stability calculation.]\n" + + "[Default: 35000]"); + + iniParser.Set(IniSection, nameof(SizeModifierMin), SizeModifierMin); + iniParser.SetComment(IniSection, nameof(SizeModifierMin), + " \n[The lower bound of the size modifier.]\n" + + "[Size Modifier can reduce or increase stability change based on the grid size. This Min is the Increase at Min Grid Size]\n" + + "[Default: 1.2]"); + + iniParser.Set(IniSection, nameof(SizeModifierMax), SizeModifierMax); + iniParser.SetComment(IniSection, nameof(SizeModifierMax), + " \n[The upper bound of the size modifier.]\n" + + "[Size Modifier can reduce or increase stability change based on the grid size. This Max is the Reduction at Max Grid Size]\n" + "[Default: 0.8]"); } diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs index cb8c55567..1dd275f28 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs @@ -471,7 +471,7 @@ private void EndSiegeMode() SiegeBlockEnabler(Block.CubeGrid.GetFatBlocks(), true); - SiegeCooldownTime.Value = (SiegeElapsedTime.Value > Config.MinSiegeTime) ? (SiegeElapsedTime.Value * 2) : Config.MinSiegeTime; + SiegeCooldownTime.Value = 2 * (SiegeElapsedTime.Value > Config.MinSiegeTime ? SiegeElapsedTime.Value : Config.MinSiegeTime); SiegeElapsedTime.Value = 0; SiegeCooldownActive.Value = true; } From ade232b86c58bafef1f17e26372860b1d819022c Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Thu, 6 Mar 2025 18:42:32 -0600 Subject: [PATCH 04/36] KOTH & ShareTrack Dev (#1916) --- .../Scripts/SUGMA/Commands/CommandMethods.cs | 6 +- .../GameModes/Domination/DominationHud.cs | 2 +- .../Elimination/EliminationGamemode.cs | 2 +- .../GameModes/Elimination/EliminationHud.cs | 8 +-- .../GameModes/KingOfTheHill/KOTHGamemode.cs | 61 ++++++++++++++++++- .../SUGMA/GameModes/KingOfTheHill/KOTHHud.cs | 3 +- .../Scripts/SUGMA/SUGMA_SessionComponent.cs | 12 ++-- 7 files changed, 77 insertions(+), 17 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs index 6d8ffb9d7..c7758501d 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs @@ -17,7 +17,8 @@ public static void Start(string[] args) if (args.Length < 2) { MyAPIGateway.Utilities.ShowMessage("SUGMA", - $"Unrecognized gamemode \"null\". Available gamemodes:{SUGMA_SessionComponent.ListGamemodes()}"); + $"Unrecognized gamemode \"null\". Available gamemodes:"); + SUGMA_SessionComponent.ListGamemodes(); return; } @@ -33,7 +34,8 @@ public static void Start(string[] args) if (!SUGMA_SessionComponent.I.StartGamemode(args[1].ToLower(), startArgs, true)) { MyAPIGateway.Utilities.ShowMessage("SUGMA", - $"Unrecognized gamemode \"{args[1].ToLower()}\". Available gamemodes:{SUGMA_SessionComponent.ListGamemodes()}"); + $"Unrecognized gamemode \"{args[1].ToLower()}\". Available gamemodes:"); + SUGMA_SessionComponent.ListGamemodes(); return; } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs index 59a825ac7..c8b530e24 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs @@ -66,7 +66,7 @@ internal class DominationHud_Window : WindowBase private readonly TexturedBox[] _captureIndicators; private readonly DominationGamemode _gamemode; - private readonly elmHud_Window _windowBase; + private readonly ElmHud_Window _windowBase; public DominationHud_Window(HudParentBase parent, DominationGamemode gamemode) : base(parent) { diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index c7034ba57..6c108cca5 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -122,6 +122,7 @@ private void RemoveBlockers(float maxDistanceFromCenter) public override void StartRound(string[] arguments = null) { + _winningFaction = null; PointTracker = new PointTracker(3, 0); SUGMA_SessionComponent.I.UnregisterComponent("ELMPointTracker"); if (!MyAPIGateway.Utilities.IsDedicated) @@ -222,7 +223,6 @@ public override void StopRound() ShareTrackApi.UnregisterOnTrack(OnGridTrackChanged); base.StopRound(); - _winningFaction = null; TrackedFactions.Clear(); PointTracker = null; } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs index ecbbeccfa..0f2ebb842 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs @@ -14,7 +14,7 @@ internal class EliminationHud : ComponentBase private int _closeTime = -1; private readonly EliminationGamemode _gamemode; - public elmHud_Window Window; + public ElmHud_Window Window; public EliminationHud(EliminationGamemode gamemode) { @@ -28,7 +28,7 @@ public override void Init(string id) if (!RichHudClient.Registered) throw new Exception("RichHudAPI was not initialized in time!"); - Window = new elmHud_Window(HudMain.HighDpiRoot, _gamemode); + Window = new ElmHud_Window(HudMain.HighDpiRoot, _gamemode); } public override void Close() @@ -52,7 +52,7 @@ public void MatchEnded(IMyFaction winner) } } - internal class elmHud_Window : HudElementBase + internal class ElmHud_Window : HudElementBase { private readonly EliminationGamemode _gamemode; @@ -63,7 +63,7 @@ internal class elmHud_Window : HudElementBase internal LabelBox _winnerLabel; public EliminationHud_TeamBanner[] Banners; - public elmHud_Window(HudParentBase parent, EliminationGamemode gamemode) : base(parent) + public ElmHud_Window(HudParentBase parent, EliminationGamemode gamemode) : base(parent) { _gamemode = gamemode; _timer = gamemode._matchTimer; diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 151ea2ae9..69da86da4 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Sandbox.ModAPI; using SC.SUGMA.GameModes.Elimination; using SC.SUGMA.GameState; @@ -49,6 +50,16 @@ public override void StartRound(string[] arguments = null) if (TrackedFactions.Count <= 1) return; + foreach (var faction in TrackedFactions.Keys.ToArray()) + TrackedFactions[faction] = 0; + + foreach (var grid in ShareTrackApi.GetTrackedGrids()) + { + var faction = grid.GetFaction(); + if (TrackedFactions.ContainsKey(faction)) + TrackedFactions[faction]++; + } + ActivationTimeCounter = ActivationTime; ControlPoint = null; @@ -58,7 +69,8 @@ public override void StartRound(string[] arguments = null) public override void StopRound() { - _winningFaction = ControlPoint?._zoneOwner; + if (ControlPoint != null) + _winningFaction = ControlPoint._zoneOwner; base.StopRound(); SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(_winningFaction); @@ -81,6 +93,9 @@ internal override void DisplayWinMessage() public override void UpdateActive() { + foreach (var faction in TrackedFactions) + MyAPIGateway.Utilities.ShowNotification($"{faction.Key.Tag}: {faction.Value}", 1000/60); + if (ActivationTimeCounter > 0) { if (_matchTimer.Ticks % 60 == 0) @@ -103,5 +118,49 @@ public override void UpdateActive() StopRound(); } } + + internal override void OnGridTrackChanged(IMyCubeGrid grid, bool isTracked) + { + if (!isTracked) + OnAliveChanged(grid, false); + } + + internal override void OnAliveChanged(IMyCubeGrid grid, bool isAlive) + { + var gridFaction = PlayerTracker.I.GetGridFaction(grid); + if (gridFaction == null || !TrackedFactions.ContainsKey(gridFaction)) + return; + if (!isAlive) + { + TrackedFactions[gridFaction]--; + if (TrackedFactions[gridFaction] <= 0) + { + IMyFaction winningFaction = null; + foreach (var factionKvp in TrackedFactions) + { + if (factionKvp.Value <= 0) + continue; + if (winningFaction != null) + { + winningFaction = null; + break; + } + winningFaction = factionKvp.Key; + } + + if (winningFaction != null) + { + if (ControlPoint != null) + ControlPoint._zoneOwner = winningFaction; + _winningFaction = winningFaction; + StopRound(); + } + } + } + else + { + TrackedFactions[gridFaction]++; + } + } } } \ No newline at end of file diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs index 2a899b44c..3e4fb2b2f 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs @@ -57,7 +57,7 @@ internal class KOTHHud_Window : WindowBase new Material(MyStringId.GetOrCompute("SugmaCircle"), new Vector2(32, 32)); private readonly KOTHGamemode _gamemode; - private readonly elmHud_Window _windowBase; + private readonly ElmHud_Window _windowBase; private TexturedBox _captureIndicator; @@ -130,7 +130,6 @@ public void Update() public void MatchEnded(IMyFaction winner) { - Log.Info("KOTHHud.cs:133 MatchEnded (" + winner?.Name + ")"); _captureIndicator.Visible = false; _captureLabel.Visible = false; diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs index b237979cb..3c1774295 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs @@ -16,6 +16,9 @@ using SC.SUGMA.HeartNetworking.Custom; using SC.SUGMA.Utilities; using VRage.Game.Components; +using VRage.Scripting; +using Sandbox.Game; +using VRageMath; namespace SC.SUGMA { @@ -102,7 +105,7 @@ public bool StartGamemode(string id, string[] arguments, bool notifyNetwork = fa CurrentGamemode = (GamemodeBase)_components[id]; CurrentGamemode.StartRound(arguments); - if (!CurrentGamemode.IsStarted) + if (!(CurrentGamemode?.IsStarted ?? false)) { CurrentGamemode = null; return false; @@ -134,18 +137,15 @@ public bool StopGamemode(bool notifyNetwork = false) return true; } - public static string ListGamemodes() + public static void ListGamemodes() { var availableGamemodes = new StringBuilder(); foreach (var gamemode in I.GetGamemodes()) { var gamemodeObject = I.GetComponent(gamemode); - availableGamemodes.Append( - $"\n- {gamemode} ({gamemodeObject.ReadableName})\n * {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n * ")}"); + MyVisualScriptLogicProvider.SendChatMessageColored($"\n- {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n- ")}", Color.Green, $"{gamemode} ({gamemodeObject.ReadableName})"); } - - return availableGamemodes.ToString(); } #region Base Methods From 926d526154e8b279d6423981233ba647c10bebcf Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Fri, 7 Mar 2025 21:58:29 -0500 Subject: [PATCH 05/36] Chets desired changes --- .../FieldGenerator/FieldGenerator_Config.cs | 4 ++-- .../FieldGenerator/FieldGenerator_Core.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs index c9be5667c..b89c15cc8 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs @@ -33,8 +33,8 @@ public class Generator_Settings public float MaxPowerDraw = 500.00f; public float MinPowerDraw = 50.00f; - public int MaxSiegeTime = 60; // this refers to max time spent you are able to be in siege mode. - public int MinSiegeTime = 10; // this refers to min time spent sieging in the cooldown formula, any time spent in siege below this number will count as this value for the cooldown formula. thus the minimum cooldown time is this number * 2. + public int MaxSiegeTime = 60; + public int MinSiegeTime = 15; public int SiegePowerDraw = 900; public float SiegeModeResistence = 0.9f; diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs index 1dd275f28..28f4cdf96 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs @@ -471,7 +471,7 @@ private void EndSiegeMode() SiegeBlockEnabler(Block.CubeGrid.GetFatBlocks(), true); - SiegeCooldownTime.Value = 2 * (SiegeElapsedTime.Value > Config.MinSiegeTime ? SiegeElapsedTime.Value : Config.MinSiegeTime); + SiegeCooldownTime.Value = Math.Max(SiegeElapsedTime.Value * 2, Config.MinSiegeTime); SiegeElapsedTime.Value = 0; SiegeCooldownActive.Value = true; } From 13fed802468195d935cb15710ad6399e00c0aebc Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 7 Mar 2025 23:48:16 -0600 Subject: [PATCH 06/36] Update KOTHGamemode.cs --- .../Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 69da86da4..2ecd60fd4 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -93,9 +93,6 @@ internal override void DisplayWinMessage() public override void UpdateActive() { - foreach (var faction in TrackedFactions) - MyAPIGateway.Utilities.ShowNotification($"{faction.Key.Tag}: {faction.Value}", 1000/60); - if (ActivationTimeCounter > 0) { if (_matchTimer.Ticks % 60 == 0) @@ -163,4 +160,4 @@ internal override void OnAliveChanged(IMyCubeGrid grid, bool isAlive) } } } -} \ No newline at end of file +} From 318199019bc29648a8f53eecf9256650e69e9ab7 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Sat, 8 Mar 2025 00:30:52 -0600 Subject: [PATCH 07/36] Update SUGMA_SessionComponent.cs (#1918) --- .../Data/Scripts/SUGMA/SUGMA_SessionComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs index 3c1774295..e863fb505 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs @@ -144,7 +144,7 @@ public static void ListGamemodes() foreach (var gamemode in I.GetGamemodes()) { var gamemodeObject = I.GetComponent(gamemode); - MyVisualScriptLogicProvider.SendChatMessageColored($"\n- {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n- ")}", Color.Green, $"{gamemode} ({gamemodeObject.ReadableName})"); + MyAPIGateway.Utilities.ShowMessage($"{gamemode} ({gamemodeObject.ReadableName})", $"\n- {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n- ")}"); } } @@ -238,4 +238,4 @@ protected override void UnloadData() #endregion } -} \ No newline at end of file +} From 08c490c2aa7053625ae9c6f8741751c053e41142 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Tue, 11 Mar 2025 10:37:03 -0500 Subject: [PATCH 08/36] Stable merge kothfix pre5.2 (#1919) --- .../Scripts/SUGMA/Commands/CommandMethods.cs | 6 +- .../GameModes/Domination/DominationHud.cs | 2 +- .../Elimination/EliminationGamemode.cs | 2 +- .../GameModes/Elimination/EliminationHud.cs | 8 +-- .../GameModes/KingOfTheHill/KOTHGamemode.cs | 60 ++++++++++++++++++- .../SUGMA/GameModes/KingOfTheHill/KOTHHud.cs | 3 +- .../Scripts/SUGMA/SUGMA_SessionComponent.cs | 14 ++--- 7 files changed, 76 insertions(+), 19 deletions(-) diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs index 6d8ffb9d7..c7758501d 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/Commands/CommandMethods.cs @@ -17,7 +17,8 @@ public static void Start(string[] args) if (args.Length < 2) { MyAPIGateway.Utilities.ShowMessage("SUGMA", - $"Unrecognized gamemode \"null\". Available gamemodes:{SUGMA_SessionComponent.ListGamemodes()}"); + $"Unrecognized gamemode \"null\". Available gamemodes:"); + SUGMA_SessionComponent.ListGamemodes(); return; } @@ -33,7 +34,8 @@ public static void Start(string[] args) if (!SUGMA_SessionComponent.I.StartGamemode(args[1].ToLower(), startArgs, true)) { MyAPIGateway.Utilities.ShowMessage("SUGMA", - $"Unrecognized gamemode \"{args[1].ToLower()}\". Available gamemodes:{SUGMA_SessionComponent.ListGamemodes()}"); + $"Unrecognized gamemode \"{args[1].ToLower()}\". Available gamemodes:"); + SUGMA_SessionComponent.ListGamemodes(); return; } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs index 59a825ac7..c8b530e24 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Domination/DominationHud.cs @@ -66,7 +66,7 @@ internal class DominationHud_Window : WindowBase private readonly TexturedBox[] _captureIndicators; private readonly DominationGamemode _gamemode; - private readonly elmHud_Window _windowBase; + private readonly ElmHud_Window _windowBase; public DominationHud_Window(HudParentBase parent, DominationGamemode gamemode) : base(parent) { diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs index c7034ba57..6c108cca5 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationGamemode.cs @@ -122,6 +122,7 @@ private void RemoveBlockers(float maxDistanceFromCenter) public override void StartRound(string[] arguments = null) { + _winningFaction = null; PointTracker = new PointTracker(3, 0); SUGMA_SessionComponent.I.UnregisterComponent("ELMPointTracker"); if (!MyAPIGateway.Utilities.IsDedicated) @@ -222,7 +223,6 @@ public override void StopRound() ShareTrackApi.UnregisterOnTrack(OnGridTrackChanged); base.StopRound(); - _winningFaction = null; TrackedFactions.Clear(); PointTracker = null; } diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs index ecbbeccfa..0f2ebb842 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/Elimination/EliminationHud.cs @@ -14,7 +14,7 @@ internal class EliminationHud : ComponentBase private int _closeTime = -1; private readonly EliminationGamemode _gamemode; - public elmHud_Window Window; + public ElmHud_Window Window; public EliminationHud(EliminationGamemode gamemode) { @@ -28,7 +28,7 @@ public override void Init(string id) if (!RichHudClient.Registered) throw new Exception("RichHudAPI was not initialized in time!"); - Window = new elmHud_Window(HudMain.HighDpiRoot, _gamemode); + Window = new ElmHud_Window(HudMain.HighDpiRoot, _gamemode); } public override void Close() @@ -52,7 +52,7 @@ public void MatchEnded(IMyFaction winner) } } - internal class elmHud_Window : HudElementBase + internal class ElmHud_Window : HudElementBase { private readonly EliminationGamemode _gamemode; @@ -63,7 +63,7 @@ internal class elmHud_Window : HudElementBase internal LabelBox _winnerLabel; public EliminationHud_TeamBanner[] Banners; - public elmHud_Window(HudParentBase parent, EliminationGamemode gamemode) : base(parent) + public ElmHud_Window(HudParentBase parent, EliminationGamemode gamemode) : base(parent) { _gamemode = gamemode; _timer = gamemode._matchTimer; diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs index 151ea2ae9..2ecd60fd4 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHGamemode.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Sandbox.ModAPI; using SC.SUGMA.GameModes.Elimination; using SC.SUGMA.GameState; @@ -49,6 +50,16 @@ public override void StartRound(string[] arguments = null) if (TrackedFactions.Count <= 1) return; + foreach (var faction in TrackedFactions.Keys.ToArray()) + TrackedFactions[faction] = 0; + + foreach (var grid in ShareTrackApi.GetTrackedGrids()) + { + var faction = grid.GetFaction(); + if (TrackedFactions.ContainsKey(faction)) + TrackedFactions[faction]++; + } + ActivationTimeCounter = ActivationTime; ControlPoint = null; @@ -58,7 +69,8 @@ public override void StartRound(string[] arguments = null) public override void StopRound() { - _winningFaction = ControlPoint?._zoneOwner; + if (ControlPoint != null) + _winningFaction = ControlPoint._zoneOwner; base.StopRound(); SUGMA_SessionComponent.I.GetComponent("KOTHHud")?.MatchEnded(_winningFaction); @@ -103,5 +115,49 @@ public override void UpdateActive() StopRound(); } } + + internal override void OnGridTrackChanged(IMyCubeGrid grid, bool isTracked) + { + if (!isTracked) + OnAliveChanged(grid, false); + } + + internal override void OnAliveChanged(IMyCubeGrid grid, bool isAlive) + { + var gridFaction = PlayerTracker.I.GetGridFaction(grid); + if (gridFaction == null || !TrackedFactions.ContainsKey(gridFaction)) + return; + if (!isAlive) + { + TrackedFactions[gridFaction]--; + if (TrackedFactions[gridFaction] <= 0) + { + IMyFaction winningFaction = null; + foreach (var factionKvp in TrackedFactions) + { + if (factionKvp.Value <= 0) + continue; + if (winningFaction != null) + { + winningFaction = null; + break; + } + winningFaction = factionKvp.Key; + } + + if (winningFaction != null) + { + if (ControlPoint != null) + ControlPoint._zoneOwner = winningFaction; + _winningFaction = winningFaction; + StopRound(); + } + } + } + else + { + TrackedFactions[gridFaction]++; + } + } } -} \ No newline at end of file +} diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs index 2a899b44c..3e4fb2b2f 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/GameModes/KingOfTheHill/KOTHHud.cs @@ -57,7 +57,7 @@ internal class KOTHHud_Window : WindowBase new Material(MyStringId.GetOrCompute("SugmaCircle"), new Vector2(32, 32)); private readonly KOTHGamemode _gamemode; - private readonly elmHud_Window _windowBase; + private readonly ElmHud_Window _windowBase; private TexturedBox _captureIndicator; @@ -130,7 +130,6 @@ public void Update() public void MatchEnded(IMyFaction winner) { - Log.Info("KOTHHud.cs:133 MatchEnded (" + winner?.Name + ")"); _captureIndicator.Visible = false; _captureLabel.Visible = false; diff --git a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs index b237979cb..e863fb505 100644 --- a/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs +++ b/Gamemode Mods/StarCore SUGMA Gamemodes/Data/Scripts/SUGMA/SUGMA_SessionComponent.cs @@ -16,6 +16,9 @@ using SC.SUGMA.HeartNetworking.Custom; using SC.SUGMA.Utilities; using VRage.Game.Components; +using VRage.Scripting; +using Sandbox.Game; +using VRageMath; namespace SC.SUGMA { @@ -102,7 +105,7 @@ public bool StartGamemode(string id, string[] arguments, bool notifyNetwork = fa CurrentGamemode = (GamemodeBase)_components[id]; CurrentGamemode.StartRound(arguments); - if (!CurrentGamemode.IsStarted) + if (!(CurrentGamemode?.IsStarted ?? false)) { CurrentGamemode = null; return false; @@ -134,18 +137,15 @@ public bool StopGamemode(bool notifyNetwork = false) return true; } - public static string ListGamemodes() + public static void ListGamemodes() { var availableGamemodes = new StringBuilder(); foreach (var gamemode in I.GetGamemodes()) { var gamemodeObject = I.GetComponent(gamemode); - availableGamemodes.Append( - $"\n- {gamemode} ({gamemodeObject.ReadableName})\n * {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n * ")}"); + MyAPIGateway.Utilities.ShowMessage($"{gamemode} ({gamemodeObject.ReadableName})", $"\n- {gamemodeObject.ArgumentParser.HelpText.Replace("\n", "\n- ")}"); } - - return availableGamemodes.ToString(); } #region Base Methods @@ -238,4 +238,4 @@ protected override void UnloadData() #endregion } -} \ No newline at end of file +} From 2cd54075355ec35972879ee76b0feec0c488b928 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:23:35 -0400 Subject: [PATCH 09/36] Update selfrepair.cs extremely loud incorrect buzzer --- .../Data/Scripts/selfrepair/selfrepair.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs index 4de6b91a5..00dbdc145 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs @@ -68,7 +68,7 @@ private void DoRepair() // If the grid has an owner, proceed with repair and ownership change. - float repairAmount = 14; //about 1% per triggertick, tested in game. + float repairAmount = 8; //about 3.5% per triggertick at 14, 2% per trigger at 8, tested in game. slimBlock.IncreaseMountLevel(repairAmount, 0L, null, 0f, false, MyOwnershipShareModeEnum.Faction); // Try casting to MyCubeBlock and change the owner. From e548d54078a597a7434d29df241e0331d1189788 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 21:31:21 -0500 Subject: [PATCH 10/36] Update Aristeas NewUniversalUpload.yml --- .github/workflows/Aristeas NewUniversalUpload.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/Aristeas NewUniversalUpload.yml b/.github/workflows/Aristeas NewUniversalUpload.yml index 3b259788a..5d4672807 100644 --- a/.github/workflows/Aristeas NewUniversalUpload.yml +++ b/.github/workflows/Aristeas NewUniversalUpload.yml @@ -14,12 +14,6 @@ jobs: - uses: actions/checkout@v4.1.4 with: fetch-depth: 0 - - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - separator: ',' #- name: List all changed files # env: @@ -30,6 +24,6 @@ jobs: # done - id: test_SEWT run: | - & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" --repo "${{ github.workspace }}" --changes "${{ steps.changed-files.outputs.all_changed_and_modified_files }}" --changelog "${{ github.event.head_commit.message }}" + & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" --repo "${{ github.workspace }}" --changelog "${{ github.event.head_commit.message }}" - uses: EndBug/add-and-commit@v9 From df4639ae6d520d8afc49ead62435d2965c85c1b6 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:02:12 -0500 Subject: [PATCH 11/36] Create createfiletest.txt --- createfiletest.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 createfiletest.txt diff --git a/createfiletest.txt b/createfiletest.txt new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/createfiletest.txt @@ -0,0 +1 @@ + From d5af7da25fa18f5c631833a102ec5ec58d78cb2b Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:02:39 -0500 Subject: [PATCH 12/36] Delete createfiletest.txt --- createfiletest.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 createfiletest.txt diff --git a/createfiletest.txt b/createfiletest.txt deleted file mode 100644 index 8b1378917..000000000 --- a/createfiletest.txt +++ /dev/null @@ -1 +0,0 @@ - From 7fd284cbbd20172c76af9533a853fa4c4cc17827 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:21:54 -0500 Subject: [PATCH 13/36] Update Aristeas_BuildScripts.yml --- .github/workflows/Aristeas_BuildScripts.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/Aristeas_BuildScripts.yml b/.github/workflows/Aristeas_BuildScripts.yml index a6767072d..37bea3400 100644 --- a/.github/workflows/Aristeas_BuildScripts.yml +++ b/.github/workflows/Aristeas_BuildScripts.yml @@ -13,12 +13,6 @@ jobs: - uses: actions/checkout@v4.1.4 with: fetch-depth: 0 - - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - separator: ',' #- name: List all changed files # env: From b31a88aa39d50ac4ded7e95b71a3dc49cdc97f05 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:26:13 -0500 Subject: [PATCH 14/36] Emergency weld time fix (#1920) Co-authored-by: BadM0dder <109397107+BadM0dder@users.noreply.github.com> --- .../workflows/Aristeas NewUniversalUpload.yml | 8 +------- .github/workflows/Aristeas_BuildScripts.yml | 6 ------ .../40k-Weapons-Mod/Data/Cubeblocks_IMP.sbc | 12 ++++++------ .../Data/CubeBlocks/203Triple.sbc | 8 ++++---- .../Data/CubeBlocks/203Twin.sbc | 1 + .../Data/CubeBlocks/508mm twin.sbc | 2 +- .../Data/CubeBlocks/5InchQF.sbc | 1 + .../Data/CubeBlocks/BarbetteSet.sbc | 6 +++--- .../Data/CubeBlocks/BoforTwinMain.sbc | 1 + .../Data/CubeBlocks/Mk25 Rangefinder.sbc | 1 + .../Data/CubeBlocks/OerlikonDual.sbc | 1 + .../Data/CubeBlocks/OerlikonMain.sbc | 1 + .../Data/CubeBlocks/PomPomMain.sbc | 1 + .../Data/CubeBlocks/QuadBofor.sbc | 1 + .../Data/CubeBlocks/TorpBarbette.sbc | 1 + .../TaitMod_Fletcher/Data/Cubeblocks.sbc | 18 +++++++++--------- 16 files changed, 33 insertions(+), 36 deletions(-) diff --git a/.github/workflows/Aristeas NewUniversalUpload.yml b/.github/workflows/Aristeas NewUniversalUpload.yml index 3b259788a..5d4672807 100644 --- a/.github/workflows/Aristeas NewUniversalUpload.yml +++ b/.github/workflows/Aristeas NewUniversalUpload.yml @@ -14,12 +14,6 @@ jobs: - uses: actions/checkout@v4.1.4 with: fetch-depth: 0 - - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - separator: ',' #- name: List all changed files # env: @@ -30,6 +24,6 @@ jobs: # done - id: test_SEWT run: | - & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" --repo "${{ github.workspace }}" --changes "${{ steps.changed-files.outputs.all_changed_and_modified_files }}" --changelog "${{ github.event.head_commit.message }}" + & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" --repo "${{ github.workspace }}" --changelog "${{ github.event.head_commit.message }}" - uses: EndBug/add-and-commit@v9 diff --git a/.github/workflows/Aristeas_BuildScripts.yml b/.github/workflows/Aristeas_BuildScripts.yml index a6767072d..37bea3400 100644 --- a/.github/workflows/Aristeas_BuildScripts.yml +++ b/.github/workflows/Aristeas_BuildScripts.yml @@ -13,12 +13,6 @@ jobs: - uses: actions/checkout@v4.1.4 with: fetch-depth: 0 - - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - separator: ',' #- name: List all changed files # env: diff --git a/Weapon Mods/40k-Weapons-Mod/Data/Cubeblocks_IMP.sbc b/Weapon Mods/40k-Weapons-Mod/Data/Cubeblocks_IMP.sbc index 23d7d8d73..558f6e379 100644 --- a/Weapon Mods/40k-Weapons-Mod/Data/Cubeblocks_IMP.sbc +++ b/Weapon Mods/40k-Weapons-Mod/Data/Cubeblocks_IMP.sbc @@ -157,7 +157,7 @@ Macro Light - 120 + 150 @@ -216,7 +216,7 @@ HeavyMacro Light - 180 + 240 @@ -331,7 +331,7 @@ Lance Light - 120 + 210 @@ -387,7 +387,7 @@ LightLance Light - 100 + 180 @@ -443,7 +443,7 @@ HeavyLance Light - 140 + 300 @@ -669,7 +669,7 @@ Aegis Light - 30 + 40 diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Triple.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Triple.sbc index f884acb3e..04e918f3f 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Triple.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Triple.sbc @@ -16,10 +16,10 @@ [Shell Speed: 1000m/s | 1100m/s] [Damage Types: Energy | Kinetic] - Triple barreled 203mm/8 Inch used commonly by the Us navy during ww2 and into the cold war period - Medium to long range artillery turret, used heavily on heavy cruisers likt eh Des Moines. + Triple barreled 203mm/8 Inch used commonly by the USN during WW2 and into the cold war period. + Medium to long range artillery turret, used heavily on heavy cruisers like Des Moines. - Textures\GUI\Icons\8Inch55RF.dds + Textures\GUI\Icons\8Inch55Main.dds Large TriangleMesh @@ -42,7 +42,7 @@ Z Y - 30 + 180 203mmQuad diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Twin.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Twin.sbc index ba258c82f..d15636517 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Twin.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/203Twin.sbc @@ -41,6 +41,7 @@ Z Y + 180 203mmTwin diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/508mm twin.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/508mm twin.sbc index b77417e82..fa34538ae 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/508mm twin.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/508mm twin.sbc @@ -38,7 +38,7 @@ - 120 + 360 20InchTwin Z Y diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/5InchQF.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/5InchQF.sbc index 3445f5c0f..ba49f1bdb 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/5InchQF.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/5InchQF.sbc @@ -35,6 +35,7 @@ + 150 Z Y diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BarbetteSet.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BarbetteSet.sbc index f3d57b1d1..c9e636c2e 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BarbetteSet.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BarbetteSet.sbc @@ -35,7 +35,7 @@ Barbette5x5 Light - 15 + 420 Default Damage_HeavyMech_Damaged ParticleHeavyMech @@ -80,7 +80,7 @@ Barbette3x3 X Light - 10 + 270 Default Damage_HeavyMech_Damaged ParticleHeavyMech @@ -125,7 +125,7 @@ Barbette1x1 X Light - 5 + 30 Default Damage_HeavyMech_Damaged ParticleHeavyMech diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BoforTwinMain.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BoforTwinMain.sbc index 3d43a76c5..0acb07cd0 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BoforTwinMain.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/BoforTwinMain.sbc @@ -28,6 +28,7 @@ + 15 diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/Mk25 Rangefinder.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/Mk25 Rangefinder.sbc index 0dc421de0..3bd92f2d9 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/Mk25 Rangefinder.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/Mk25 Rangefinder.sbc @@ -20,6 +20,7 @@ Models\Rangefinder\Mk25 Rangefinder.mwm true + 15 diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonDual.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonDual.sbc index 05e50411f..e2da86684 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonDual.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonDual.sbc @@ -28,6 +28,7 @@ + 15 OerlikonDual Z Y diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonMain.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonMain.sbc index 706ef0a2a..268ff0b93 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonMain.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/OerlikonMain.sbc @@ -29,6 +29,7 @@ + 15 diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/PomPomMain.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/PomPomMain.sbc index a972af33e..bb598ea27 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/PomPomMain.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/PomPomMain.sbc @@ -31,6 +31,7 @@ + 15 PomPomMain Z Y diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/QuadBofor.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/QuadBofor.sbc index c1ccaed6c..6834b3a3d 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/QuadBofor.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/QuadBofor.sbc @@ -37,6 +37,7 @@ QuadBofor + 15 Z Y diff --git a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/TorpBarbette.sbc b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/TorpBarbette.sbc index c130dca25..e9f5eeef8 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/TorpBarbette.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/CubeBlocks/TorpBarbette.sbc @@ -35,6 +35,7 @@ + 540 diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Cubeblocks.sbc b/Weapon Mods/TaitMod_Fletcher/Data/Cubeblocks.sbc index 0dfa34b19..a58a04132 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Cubeblocks.sbc +++ b/Weapon Mods/TaitMod_Fletcher/Data/Cubeblocks.sbc @@ -774,7 +774,7 @@ Z Y Light - 40 + 150 Textures\GUI\HUD\USAASight.dds 300 @@ -827,7 +827,7 @@ - + @@ -850,7 +850,7 @@ Z Y Light - 40 + 150 Textures\GUI\HUD\USAASight.dds 200 @@ -931,7 +931,7 @@ Z Y Light - 30 + 150 Textures\GUI\HUD\USAASight.dds 120 @@ -1008,7 +1008,7 @@ Z Y Light - 40 + 150 Textures\GUI\HUD\USGunsight.dds 100 @@ -1084,7 +1084,7 @@ Z Y Light - 120 + 250 Textures\GUI\HUD\USGunsight.dds 100 @@ -1168,7 +1168,7 @@ Z Y Light - 120 + 250 Textures\GUI\HUD\GermanTankSight.dds 100 @@ -1244,7 +1244,7 @@ Z Y Light - 120 + 250 Textures\GUI\HUD\GermanTankSight.dds 100 @@ -1466,7 +1466,7 @@ Z Y Light - 120 + 250 Textures\GUI\HUD\GermanTankSight.dds 100 From 9f66cea0ddb0c3396b9538826f58bcbcfba9b732 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:47:26 -0500 Subject: [PATCH 15/36] Update Aristeas_BuildScripts.yml --- .github/workflows/Aristeas_BuildScripts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Aristeas_BuildScripts.yml b/.github/workflows/Aristeas_BuildScripts.yml index 37bea3400..5dff320f8 100644 --- a/.github/workflows/Aristeas_BuildScripts.yml +++ b/.github/workflows/Aristeas_BuildScripts.yml @@ -23,4 +23,4 @@ jobs: # done - id: build-mods run: | - & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" "build" --repo "${{ github.workspace }}" --changes "${{ steps.changed-files.outputs.all_changed_and_modified_files }}" + & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" "build" --repo "${{ github.workspace }}" From 1a2b6d7ab127172a9130869f05f0789f811729ab Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 01:29:07 -0400 Subject: [PATCH 16/36] RAC Buff --- .../Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs | 4 ++-- .../Data/Scripts/CoreParts/Vulcan_Ammo.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs index ff49f5072..47319bc74 100644 --- a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs +++ b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs @@ -56,9 +56,9 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "R.A.C.-5 Avenger", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0.57f, // Projectile inaccuracy in degrees. + DeviateShotAngle = 0.52f, //0.57f //Projectile inaccuracy in degrees. AimingTolerance = 1f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Basic, // Level of turret aim prediction; Off, Basic, Accurate, Advanced + AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released. AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. diff --git a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs index 489d7b5e9..c43ae332f 100644 --- a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs +++ b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs @@ -95,8 +95,8 @@ partial class Parts // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 4000f, // Distance at which damage begins falling off. - MinMultipler = 0.5f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + Distance = 0f, //4000f// Distance at which damage begins falling off. + MinMultipler = 1f, //0.5f // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef { From 41dd93e18c4d058c2b3ebe32d2d65ad354fd7c77 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 01:34:14 -0400 Subject: [PATCH 17/36] Update FixedgunRLXammo.cs Become NonProportional (undoes proportional RLX damage nerf) --- .../Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs index 0553e31a5..84615e511 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs @@ -47,8 +47,8 @@ partial class Parts EnergyCost = 0.017f, //195 Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 10000f, // Direct damage; one steel plate is worth 100. Mass = 500f, // In kilograms; how much force the impact will apply to the target. - Health = 12, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. - BackKickForce = 7771000f, // Recoil. This is applied to the Parent Grid. + Health = 50, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. + BackKickForce = 5777100f, // Recoil. This is applied to the Parent Grid. DecayPerShot = 0f, // Damage to the firing weapon itself. //float.MaxValue will drop the weapon to the first build state and destroy all components used for construction //If greater than cube integrity it will remove the cube upon firing, without causing deformation (makes it look like the whole "block" flew away) @@ -539,7 +539,7 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = 4f, // Multiplier for damage against shields. + Modifier = 6f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1.3f, // If greater than zero, the percentage of damage that will penetrate the shield. }, From 79e0fe6d6b729a3d3065367838bb66a24789ef6b Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 01:36:26 -0400 Subject: [PATCH 18/36] Update LBX_ammo.cs Woe, 8 more fragments be upon yee --- .../Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs index 3b2b42d11..9bb782e1d 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs @@ -1939,7 +1939,7 @@ partial class Parts Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { AmmoRound = "LBXCluster_Fragment", // AmmoRound field of the ammo to spawn. - Fragments = 4, // Number of projectiles to spawn. + Fragments = 6, // Number of projectiles to spawn. Degrees = 9f, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. DropVelocity = true, // fragments will not inherit velocity from parent. @@ -1959,8 +1959,8 @@ partial class Parts PointAtTarget = false, // Start fragment direction pointing at Target PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) DirectAimCone = 15f, //Aim cone used for Direct fire, in degrees - GroupSize = 4, // Number of spawns in each group - GroupDelay = 4, //5 Delay between each group. + GroupSize = 6, // Number of spawns in each group + GroupDelay = 3, //5 Delay between each group. }, }, Pattern = new PatternDef From 5806429bc58615eb82ce2a3181b692df0c6331a3 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 01:44:42 -0400 Subject: [PATCH 19/36] Beta test for ye old metalstorm --- .../Data/Scripts/CoreParts/MetalStorm.cs | 6 +++--- .../Data/Scripts/CoreParts/MetalStormAmmo.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs index e51b7195a..913c37668 100644 --- a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs +++ b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs @@ -79,7 +79,7 @@ partial class Parts { LockedSmartOnly = false, // Only fire at smart projectiles that are locked on to parent grid. MinimumDiameter = 0, // Minimum radius of threat to engage. MaximumDiameter = 0, // Maximum radius of threat to engage; 0 = unlimited. - MaxTargetDistance = 40000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MaxTargetDistance = 3000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited. @@ -88,8 +88,8 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "Metal Storm", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0.05f, // Projectile inaccuracy in degrees. - AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + DeviateShotAngle = 0.15f, // Projectile inaccuracy in degrees. + AimingTolerance = 3f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released - while a target is available. AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. diff --git a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs index 983589aea..0fdcd81d9 100644 --- a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs +++ b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs @@ -135,11 +135,11 @@ partial class Parts MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things. AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. DesiredSpeed = 1000, // voxel phasing if you go above 5100 - MaxTrajectory = 4000, // Max Distance the projectile or beam can Travel. + MaxTrajectory = 3150, // Max Distance the projectile or beam can Travel. DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second) GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards. - RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + RangeVariance = Random(start: 0, end: 75), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. }, AmmoGraphics = new GraphicDef From ad7cea9336ddd08b965270dda99e6c2ef71260d3 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 01:56:34 -0400 Subject: [PATCH 20/36] testing railguns --- .../Data/CubeBlocks_Weapons_IVL.sbc | 4 ++-- .../Data/Scripts/CoreParts/AmmoTypes.cs | 16 ++++++++-------- .../Data/Scripts/CoreParts/Railguns.cs | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc index 9221c72d3..a95913d6d 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc @@ -545,9 +545,9 @@ [FLAW] Railgun 2.0 Textures\GUI\Icons\Cubes\RailGun.dds - 10km range Railgun. 5000m/s velocity + 11km range Railgun. 6000m/s velocity 24Mw Passive Draw, 300Mw Recharge - Falloff After 6km. + Falloff After 10km. Deals Kinetic Damage. Large diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs index 82da8fb0a..63eaf3980 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs @@ -2294,7 +2294,7 @@ partial class Parts AmmoRound = "Large Railgun Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. HybridRound = true, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.2858f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 126000f, // Direct damage; one steel plate is worth 100. + BaseDamage = 126000f, //holy number, not to be changed //Direct damage; one steel plate is worth 100. Mass = 277f, // In kilograms; how much force the impact will apply to the target. Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. BackKickForce = 0f, // Recoil. This is applied to the Parent Grid. 21777000f @@ -2358,7 +2358,7 @@ partial class Parts // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 6000f, // Distance at which damage begins falling off. + Distance = 10000f, // Distance at which damage begins falling off. MinMultipler = 0.75f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef @@ -2409,10 +2409,10 @@ partial class Parts ByBlockHit = new ByBlockHitDef { Enable = true, - Radius = 3f, // Meters - Damage = 10000f, // Damages 4 blocks - Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 2500f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Radius = 4f, // Meters + Damage = 20000f, // Damages 4 blocks + Depth = 2f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 5000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius //.Linear drops evenly by distance from center out to max radius //.Curve drops off damage sharply as it approaches the max radius @@ -2514,8 +2514,8 @@ partial class Parts TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 120, //120 is required for sound. 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things. AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. - DesiredSpeed = 5000, // voxel phasing if you go above 5100 - MaxTrajectory = 10000f, //**MUST** be double of speed for sound to work good.// Max Distance the projectile or beam can Travel. + DesiredSpeed = 6000, // voxel phasing if you go above 5100 + MaxTrajectory = 12500f, //**MUST** be double of speed for sound to work good.// Max Distance the projectile or beam can Travel. DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second) GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards. diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs index 7fb8a06cc..10341b779 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs @@ -49,7 +49,7 @@ partial class Parts { LockedSmartOnly = false, // Only fire at smart projectiles that are locked on to parent grid. MinimumDiameter = 0, // Minimum radius of threat to engage. MaximumDiameter = 0, // Maximum radius of threat to engage; 0 = unlimited. - MaxTargetDistance = 8000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MaxTargetDistance = 11000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. TopTargets = 2, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 4, // Maximum number of blocks to randomize between; 0 = unlimited. From 58661e889327fdc4344a65651f625d143f5113de Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Mon, 17 Mar 2025 02:05:40 -0400 Subject: [PATCH 21/36] ok im overcooking the types on mod-dev if you say they are weak i swear to god --- .../CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs | 8 ++++---- .../Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs index 28f74ded6..040a54e83 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs @@ -127,13 +127,13 @@ partial class Parts Armor = new ArmorDef { Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). - Light = 0.7f, // Multiplier for damage against light armor. + Light = -1f, // Multiplier for damage against light armor. Heavy = -1f, // Multiplier for damage against heavy armor. - NonArmor = 0.30f, // Multiplier for damage against every else. + NonArmor = 0.4f, // Multiplier for damage against every else. }, Shields = new ShieldDef { - Modifier = 2.1f, // Multiplier for damage against shields. + Modifier = 2.5f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1.25f, // If greater than zero, the percentage of damage that will penetrate the shield. }, @@ -184,7 +184,7 @@ partial class Parts { Enable = true, Radius = 11.25f, // Meters - Damage = 10000f, + Damage = 12500f, Depth = 3.1f, MaxAbsorb = 0f, Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs index 896921a11..b61a304c5 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs @@ -125,7 +125,7 @@ partial class Parts { BarrelsPerShot = 1, // How many muzzles will fire a projectile per fire event. TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event. SkipBarrels = 0, // Number of muzzles to skip after each fire event. - ReloadTime = 1200, //20 seconds //Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + ReloadTime = 360, //20 seconds //Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MagsToLoad = 8, // Number of physical magazines to consume on reload. DelayUntilFire = 45, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). HeatPerShot = 10, // Heat generated per shot. From 17fc000b0c46a4e79ad2ddc3042f92c4bd818f29 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:19:27 -0500 Subject: [PATCH 22/36] Add CameraInfoApi (#1928) --- .../Scripts/CameraInfoApi/CameraDataPacket.cs | 16 ++++ .../Data/Scripts/CameraInfoApi/ClientMain.cs | 46 +++++++++++ .../Data/Scripts/CameraInfoApi/ServerMain.cs | 81 +++++++++++++++++++ .../CameraInfoApi/Properties/AssemblyInfo.cs | 36 +++++++++ 4 files changed, 179 insertions(+) create mode 100644 Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs create mode 100644 Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs create mode 100644 Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs create mode 100644 Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs new file mode 100644 index 000000000..d1ceb042d --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs @@ -0,0 +1,16 @@ +using ProtoBuf; +using VRage; +using VRageMath; + +namespace CameraInfoApi.Data.Scripts.CameraInfoApi +{ + [ProtoContract] + internal class CameraDataPacket + { + [ProtoMember(1)] public MatrixD Matrix; + [ProtoMember(2)] public float FieldOfView; + [ProtoMember(3)] public long GridId; + + public MyTuple Tuple => new MyTuple(Matrix, FieldOfView); + } +} diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs new file mode 100644 index 000000000..bc079a312 --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs @@ -0,0 +1,46 @@ +using CameraInfoApi.Data.Scripts.CameraInfoApi; +using Sandbox.ModAPI; +using System; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRageMath; + +namespace CameraInfoApi +{ + [MySessionComponentDescriptor(MyUpdateOrder.AfterSimulation)] + internal class ClientMain : MySessionComponentBase + { + private IMyCubeGrid prevGrid = null; + private int _ticks = 0; + public override void UpdateAfterSimulation() + { + if (MyAPIGateway.Utilities.IsDedicated) + return; + + if (_ticks++ % 10 != 0) + return; + + var clientGrid = (MyAPIGateway.Session.Player?.Controller?.ControlledEntity as IMyShipController)?.CubeGrid; + if (clientGrid == null) + { + if (prevGrid != null) + MyAPIGateway.Multiplayer.SendMessageToServer(3621, MyAPIGateway.Utilities.SerializeToBinary(new CameraDataPacket() + { + Matrix = MatrixD.Identity, + FieldOfView = -1, + GridId = prevGrid.EntityId, + })); + prevGrid = null; + return; + } + + prevGrid = clientGrid; + MyAPIGateway.Multiplayer.SendMessageToServer(3621, MyAPIGateway.Utilities.SerializeToBinary(new CameraDataPacket() + { + Matrix = MyAPIGateway.Session.Camera.ViewMatrix, + FieldOfView = MyAPIGateway.Session.Camera.FieldOfViewAngle, + GridId = prevGrid.EntityId, + })); + } + } +} diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs new file mode 100644 index 000000000..7f0b4123e --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs @@ -0,0 +1,81 @@ +using CameraInfoApi.Data.Scripts.CameraInfoApi; +using Sandbox.Game.Entities; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using VRage; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRageMath; + +namespace CameraInfoApi +{ + internal class ServerMain : MySessionComponentBase + { + public Dictionary> CameraInfos = new Dictionary>(); + + public override void LoadData() + { + if (!MyAPIGateway.Session.IsServer) + return; + + MyAPIGateway.Multiplayer.RegisterSecureMessageHandler(3621, HandleMessage); + InitPbApi(); + } + + protected override void UnloadData() + { + if (!MyAPIGateway.Session.IsServer) + return; + + MyAPIGateway.Multiplayer.UnregisterSecureMessageHandler(3621, HandleMessage); + } + + private void HandleMessage(ushort handlerId, byte[] package, ulong senderSteamId, bool fromServer) + { + if (package == null || package.Length == 0) + return; + var message = MyAPIGateway.Utilities.SerializeFromBinary(package); + if (message == null) + return; + + var grid = MyAPIGateway.Entities.GetEntityById(message.GridId) as MyCubeGrid; + if (grid == null) + return; + + if (message.FieldOfView == -1) + { + CameraInfos.Remove(grid); + return; + } + + CameraInfos[grid] = message.Tuple; + } + + private void InitPbApi() + { + var property = MyAPIGateway.TerminalControls.CreateProperty?>, IMyProgrammableBlock>("CameraInfoApi"); + property.Getter = b => () => + { + MyTuple info; + if (!CameraInfos.TryGetValue((MyCubeGrid) b.CubeGrid, out info)) + return null; + return new MyTuple?(info); + }; + MyAPIGateway.TerminalControls.AddControl(property); + + MyAPIGateway.Entities.GetEntities(null, ent => + { + var grid = ent as IMyCubeGrid; + if (grid == null) + return false; + + // Workaround for scripts crashing when loading before the API is ready (i.e. on world load) + foreach (var pb in grid.GetFatBlocks()) + if (!pb.IsRunning && pb.ProgramData.Contains("CameraInfoApi")) + pb.Recompile(); + return false; + }); + } + } +} diff --git a/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs b/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..01d77734a --- /dev/null +++ b/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CameraInfoApi")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CameraInfoApi")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("4b783ffe-e887-4220-8412-25caa84a7869")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] From caa3cd001b8ee0d068c27d87e9413600a3b97841 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:21:43 -0500 Subject: [PATCH 23/36] forgor mb --- .../CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs index 7f0b4123e..c3a52df5a 100644 --- a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs @@ -10,6 +10,7 @@ namespace CameraInfoApi { + [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate)] internal class ServerMain : MySessionComponentBase { public Dictionary> CameraInfos = new Dictionary>(); From e348934b761e1bf6a022b83fda78fc9e5cbf93ec Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:39:29 -0500 Subject: [PATCH 24/36] Create CONTRIBUTING.md --- CONTRIBUTING.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..284790e6a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,23 @@ + +### Prerequsites: +- (extremely recommended) github Desktop, GitExtentions, or something similar +- knowing the layout of SE mod files +- enough space to download the entire git repo (~5gb)? + +### Step 1: +- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. + +### Step 2: +- ``Make a branch`` for the changes you want to do on ``your local repository``. (i.e. SCModRepository-Yourname/BuffMyFavoriteGunPlease) Use your local repository's ``Main`` branch to keep in sync with starcore's ``Main`` branch, it makes edits much easier. You just click the button on github to sync it. + +### Step 3: +- To test your changes ingame, Copy the mod you want to edit to your ``%Appdata%/SpaceEngineers/Mods`` folder. + +### Step 4: +- Make your edits and throw it back in the repository folder. you can use the ``.bat file`` included in the repository to link your local Space Engineers mods with the ones in the repository. + +### Step 5: +- Submit a pull request so that the branch can be merged into the SCModRepository/Main one. +- You can merge your PR yourself if you're confident, or ask for review. Once merged, the development version of the mod will automatically be updated. + +Note - the `Main` branch is for the ModDev world, and `Stable` is for the primary combat and build worlds. `Stable` pushes are done in bulk after Test Tournaments. From c30d57be3c8fc5377a169990f5057f4ee5f4eaf3 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:42:37 -0500 Subject: [PATCH 25/36] Update README.md --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 19b4b32ac..6ea2b2695 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,18 @@ In StarCore, teams build their own ships and battle for the spot of champion in a StarCore Tournament. They normally take place on Saturdays and are streamed live by one of several streamers over on Twitch (See #content-announcements in the StarCore Discord for more information). It's time to join the arena! +*** ## Contribution guide -### prerequsites: + +### Prerequsites: - (extremely recommended) github Desktop, GitExtentions, or something similar - knowing the layout of SE mod files - enough space to download the entire git repo (~5gb)? ### Step 1: -- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. You can do this in GitHub desktop by git cloning the url, or through the github website, with the "fork" button which you can then git clone to a folder on your computer where you can make changes. +- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. ### Step 2: - ``Make a branch`` for the changes you want to do on ``your local repository``. (i.e. SCModRepository-Yourname/BuffMyFavoriteGunPlease) Use your local repository's ``Main`` branch to keep in sync with starcore's ``Main`` branch, it makes edits much easier. You just click the button on github to sync it. @@ -30,17 +32,19 @@ In StarCore, teams build their own ships and battle for the spot of champion in - Make your edits and throw it back in the repository folder. you can use the ``.bat file`` included in the repository to link your local Space Engineers mods with the ones in the repository. ### Step 5: -- Submit a pull request so that the branch can be merged into the SCModRepository/master one. - +- Submit a pull request so that the branch can be merged into the SCModRepository/Main one. +- You can merge your PR yourself if you're confident, or ask for review. Once merged, the development version of the mod will automatically be updated. +Note - the `Main` branch is for the ModDev world, and `Stable` is for the primary combat and build worlds. `Stable` pushes are done in bulk after Test Tournaments. +*** ## How does this work? The repository contains a .github folder, Space Engineers mod folders, and a .gitignore file. ### .github folder: -- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after the respective .yml file detects a change in the folder its looking for +- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after [SCUniversalUpload](https://github.com/StarCoreSE/SCModRepository/blob/main/.github/workflows/Aristeas%20NewUniversalUpload.yml) detects a change in a folder with a `modinfo_BRANCHNAME.sbmi` file. ### SE Mod folders: - contains all the data that would load normally as an SE mod ### .gitignore file From 1a401170f560370751e6debb53cf8935ca151f58 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:42:53 -0500 Subject: [PATCH 26/36] Update CONTRIBUTING.md --- CONTRIBUTING.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 284790e6a..d8e933aa1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,3 @@ - ### Prerequsites: - (extremely recommended) github Desktop, GitExtentions, or something similar - knowing the layout of SE mod files @@ -21,3 +20,16 @@ - You can merge your PR yourself if you're confident, or ask for review. Once merged, the development version of the mod will automatically be updated. Note - the `Main` branch is for the ModDev world, and `Stable` is for the primary combat and build worlds. `Stable` pushes are done in bulk after Test Tournaments. + + +*** + + +## How does this work? +The repository contains a .github folder, Space Engineers mod folders, and a .gitignore file. +### .github folder: +- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after [SCUniversalUpload](https://github.com/StarCoreSE/SCModRepository/blob/main/.github/workflows/Aristeas%20NewUniversalUpload.yml) detects a change in a folder with a `modinfo_BRANCHNAME.sbmi` file. +### SE Mod folders: +- contains all the data that would load normally as an SE mod +### .gitignore file +- tells git what to exclude during a push (like .sln files in visual studio) From 162c9c36036f8d2841ed25e2f86337e9999eed3e Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:44:06 -0500 Subject: [PATCH 27/36] Update and rename unfuckaudio.py to fixaudio.py nerd emoji reaction --- unfuckaudio.py => fixaudio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename unfuckaudio.py => fixaudio.py (97%) diff --git a/unfuckaudio.py b/fixaudio.py similarity index 97% rename from unfuckaudio.py rename to fixaudio.py index 272770be4..a2aa8e427 100644 --- a/unfuckaudio.py +++ b/fixaudio.py @@ -109,4 +109,4 @@ def process_directory(): process_directory() except KeyboardInterrupt: print("\n\n❗ Process interrupted by user. Exiting gracefully.") - sys.exit(0) \ No newline at end of file + sys.exit(0) From f73b4ef5a4474a0b058568bbb69e40e8afd665ab Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Tue, 18 Mar 2025 16:04:05 -0400 Subject: [PATCH 28/36] ModDev Thrust Experiments --- .../Data/Scripts/Additions/PointAdditions.cs | 34 +++++++++---------- .../BoostedThrustAndFlame.cs | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs index 6e2f5f12f..221218d6e 100644 --- a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs +++ b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs @@ -182,25 +182,25 @@ internal class PointAdditions : MySessionComponentBase ["AQD_LG_HydroThrusterL_ArmoredSlope"] = 50, ["AQD_LG_HydroThrusterL_Armored"] = 50, ["LargeBlockLargeHydrogenThrustIndustrial"] = 50, - ["LargeBlockSmallHydrogenThrust"] = 15, - ["AQD_LG_HydroThrusterS_ArmoredSlope"] = 15, - ["AQD_LG_HydroThrusterS_Armored"] = 15, - ["LargeBlockSmallHydrogenThrustIndustrial"] = 15, + ["LargeBlockSmallHydrogenThrust"] = 10, + ["AQD_LG_HydroThrusterS_ArmoredSlope"] = 10, + ["AQD_LG_HydroThrusterS_Armored"] = 10, + ["LargeBlockSmallHydrogenThrustIndustrial"] = 10, ["HugeHydrogenThruster"] = 200, - ["LargeBlockLargeThrust"] = 20, - ["AQD_LG_IonThrusterL_ArmoredSlope"] = 20, - ["AQD_LG_IonThrusterL_Armored"] = 20, - ["LargeBlockLargeThrustSciFi"] = 20, - ["LargeBlockLargeModularThruster"] = 20, - ["LargeBlockSmallThrust"] = 4, - ["AQD_LG_IonThrusterS_Armored"] = 4, - ["AQD_LG_IonThrusterS_ArmoredSlope"] = 4, - ["LargeBlockSmallThrustSciFi"] = 4, - ["SmallThrustSciFi"] = 4, - ["LargeBlockSmallModularThruster"] = 4, - ["AWGFocusDrive"] = 100, - ["IonHeavyCovered"] = 100, + ["LargeBlockLargeThrust"] = 10, + ["AQD_LG_IonThrusterL_ArmoredSlope"] = 10, + ["AQD_LG_IonThrusterL_Armored"] = 10, + ["LargeBlockLargeThrustSciFi"] = 10, + ["LargeBlockLargeModularThruster"] = 10, + ["LargeBlockSmallThrust"] = 2, + ["AQD_LG_IonThrusterS_Armored"] = 2, + ["AQD_LG_IonThrusterS_ArmoredSlope"] = 2, + ["LargeBlockSmallThrustSciFi"] = 2, + ["SmallThrustSciFi"] = 2, + ["LargeBlockSmallModularThruster"] = 2, + ["AWGFocusDrive"] = 50, + ["IonHeavyCovered"] = 50, ["AWGGG"] = 150, ["AQD_LG_AtmoThrusterS_ArmoredSlopeRev"] = 3, diff --git a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs index ab8f091ca..d1e70b4de 100644 --- a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs +++ b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs @@ -24,7 +24,7 @@ public override void LoadData() if (thruster != null) { thruster.ForceMagnitude *= 4.0f; //S3 was 3.5 - thruster.MaxPowerConsumption *= 3.0f; //S3 was 3.5 + thruster.MaxPowerConsumption *= 1.5f; //S3 was 3.5 thruster.FlameDamage *= 5f; //thruster.FlameDamageLengthScale *= 1.5f; thruster.FlameLengthScale *= 2.0f; From fc8db2da993f807da7e3bc0f6563a2886a19f1cc Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:15:02 -0400 Subject: [PATCH 29/36] maybe it hates decimals --- .../CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs index d1e70b4de..8a5052318 100644 --- a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs +++ b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs @@ -24,7 +24,7 @@ public override void LoadData() if (thruster != null) { thruster.ForceMagnitude *= 4.0f; //S3 was 3.5 - thruster.MaxPowerConsumption *= 1.5f; //S3 was 3.5 + thruster.MaxPowerConsumption *= 2f; //S3 was 3.5 thruster.FlameDamage *= 5f; //thruster.FlameDamageLengthScale *= 1.5f; thruster.FlameLengthScale *= 2.0f; From 04cb9cecb47a2ddef02f71ce3ddc6c0605f9f562 Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Tue, 18 Mar 2025 20:44:25 -0400 Subject: [PATCH 30/36] Make FlakWall's Work Again Holy shit Reecore's weapons Dont need WC tracer enabled but TIO mod weapons do aaaaa --- .../Flak MachineGuns LightCannons/GoalieAmmotypes.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs index aa44fa4c4..09734263e 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs @@ -239,7 +239,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, //doesn't need to be true I think. thanks darth for the tip. + Enable = true, //doesn't need to be true I think. thanks darth for the tip. Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -489,7 +489,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -723,7 +723,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -971,7 +971,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -1163,7 +1163,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 0.001f, // Width = 1f, // Color = Color(red: 1f, green: 1f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. From 25ca92ddc71804a5437bb3d2400edb0429a8a75c Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Tue, 18 Mar 2025 23:04:06 -0400 Subject: [PATCH 31/36] Railgun checking to see if this BBH even works --- .../Data/Scripts/CoreParts/AmmoTypes.cs | 6 +++--- .../Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs index 63eaf3980..91392e67b 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs @@ -2409,10 +2409,10 @@ partial class Parts ByBlockHit = new ByBlockHitDef { Enable = true, - Radius = 4f, // Meters - Damage = 20000f, // Damages 4 blocks + Radius = 5f, // Meters + Damage = 24000f, // Damages 4 blocks Depth = 2f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 5000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + MaxAbsorb = 6000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius //.Linear drops evenly by distance from center out to max radius //.Curve drops off damage sharply as it approaches the max radius diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs index 7ff0c5ae1..e3f615280 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs @@ -387,7 +387,7 @@ partial class Parts { DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). ShotsInBurst = 2, // Use this if you don't want the weapon to fire an entire physical magazine in one go. Should not be more than your magazine capacity. DelayAfterBurst = 29, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - FireFull = true, // Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely. + FireFull = true, //doesnt work currently because of the burst needed for the cadence //Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely. GiveUpAfter = false, // Whether the weapon should drop its current target and reacquire a new target after finishing its magazine or burst. BarrelSpinRate = 0, // Visual only, 0 disables and uses RateOfFire. DeterministicSpin = false, // Spin barrel position will always be relative to initial / starting positions (spin will not be as smooth). From 40bfa44544f9020e09d8ee4d2122cdd7d370931e Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Tue, 18 Mar 2025 23:15:47 -0400 Subject: [PATCH 32/36] ok works, less funny numbers for railguns --- .../Data/Scripts/CoreParts/AmmoTypes.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs index 91392e67b..a5fba7caa 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs @@ -2409,10 +2409,10 @@ partial class Parts ByBlockHit = new ByBlockHitDef { Enable = true, - Radius = 5f, // Meters - Damage = 24000f, // Damages 4 blocks - Depth = 2f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 6000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Radius = 3.5f, // Meters + Damage = 20000f, // Damages 4 blocks + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 5000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius //.Linear drops evenly by distance from center out to max radius //.Curve drops off damage sharply as it approaches the max radius From ece01100b6300f5f89f2ab2a627069ee072fd1ed Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Wed, 19 Mar 2025 14:59:27 -0500 Subject: [PATCH 33/36] Clean up block categories (#1934) --- .../Data/Scripts/Additions/PointAdditions.cs | 2 +- .../BlockCategories_StarCoreCorporate.sbc | 356 +++++++++--------- 2 files changed, 180 insertions(+), 178 deletions(-) diff --git a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs index 221218d6e..c5a54d2bc 100644 --- a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs +++ b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs @@ -768,7 +768,7 @@ internal class PointAdditions : MySessionComponentBase ["Heat_Heatsink"] = 10, ["Heat_FlatRadiator"] = 10, ["ActiveRadiator"] = 250, - ["RadiatorPanel"] = 5, + ["RadiatorPanel"] = 10, ["ExtendableRadiatorBase"] = 5, #endregion }; diff --git a/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc b/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc index 99d8c16c0..9acfa59a7 100644 --- a/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc +++ b/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc @@ -8,86 +8,150 @@ GuiBlockCategoryDefinition - SC [All Access] - .SC_.[All Access] + SC [All Access] Utility + .SC_.[ALL]_A true - + GravityGenerator + Door + AirtightHangarDoor + SurvivalKitLarge + SmallLight + LargeBlockFrontLight + + SC_PowerControlSystem_L + SC_RCS_Computer + + LargeBlockConveyorPipeJunction + LargeBlockConveyor + ConveyorTube + ConveyorTubeDuct + + MA_Buster_ArmorBlock + + LargeDecoy + LargeBlockRadioAntenna + LargeFlightMovement + + LargeTurretControlBlock + SELtdLargeNanobotBuildAndRepairSystem - - - FieldGen_Core - FieldGen_Capacity_Upgrade + + LargeProgrammableBlock + 6SidePB + LargeBlockRemoteControl + + DampeningEnhancer_x2_Large + LargeStator + WorklightSmall + + + + + + + GuiBlockCategoryDefinition + + [ALL] Mobility + .SC_.[ALL]_B + true + + - MA_Afterburner_Large_5x SC_SRB DETPAK + MA_Afterburner_Large_5x AncientAfterburnerT40 - LargeDecoy_MetalFoam - - SC_Flare + BlinkDriveLarge - - Starcore_RWR_Projectiles + LargeBlockGyro + AQD_LG_GyroBooster + AQD_LG_LargeGyro + AQD_LG_GyroUpgrade - - Caster_Accelerator_0 - Caster_Accelerator_90 - Caster_Feeder - Caster_CentralPipe_0 - Caster_CentralPipe_90 - Caster_CentralPipe_T + LargeBlockLargeThrust + HugeHydrogenThruster + AWGFocusDrive + IonHeavyCovered + + Caster_FocusLens - Caster_Reactor - - SC_RCS_Computer - DampeningEnhancer_x2_Large - SC_PowerControlSystem_L - LargeLargeBlockUpgrade - AQD_LG_GyroBooster - AQD_LG_GyroUpgrade + LargeHydrogenTank + LargeHydrogenTankSmall + + + + + + + GuiBlockCategoryDefinition + + [ALL] Defense + .SC_.[ALL]_C + true + + + + FieldGen_Core + FieldGen_Capacity_Upgrade + + + Starcore_RWR_Projectiles SC_Radome - WorklightSmall - BlinkDriveLarge + Mk25Rangefinder - - GIGA_BLASTPLATE + 3x3_Blastplate_A + 3x3_Blastplate_B + 3x3_Blastplate_C + ACTIVE_BLASTPLATE + + SC_Flare + LargeDecoy_MetalFoam + + DSControlLarge + EmitterL + LargeShieldModulator + LargeEnhancer + + Barbette5x5 + + + + + + + GuiBlockCategoryDefinition + + [ALL] Power + .SC_.[ALL]_D + true + + + LargeBlockSolarPanel + LargeBlockBatteryBlock + LargeBlockSmallGenerator + SmallLargeBlockUpgrade + LargeBlockLargeGenerator + LargeLargeBlockUpgrade + + + Caster_Accelerator_0 + Caster_CentralPipe_0 + Caster_Reactor + RadiatorPanel + Heat_Heatsink - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -99,18 +163,11 @@ - NovaCannon - GothicTorp - MacroCannon + AegisFlakTurret + MacroCannon HeavyMacroCannon - FixedLance LanceBattery - LanceLightBattery - LanceHeavyBattery - MacroTurret - MacroLightTurret - MacroHeavyTurret - AegisFlakTurret + NovaCannon @@ -126,22 +183,15 @@ + Priest_Block + PriestReskin_Block + Reaver_Coilgun + Assault_Coil_Turret DualSnubLaserTurret - UnguidedRocketTurret DualPulseLaserTurret - DrunkRocketTurret - Reaver_Coilgun - - Assault_Coil_Turret - APE_Strong - Devastator_Torp - Priest_Block - Type18_Artillery - Type19_Driver - Type21_Artillery - Type22_Driver - Type24_Artillery - Type25_Driver + APE_Strong + Type18_Artillery + Devastator_Torp @@ -151,23 +201,17 @@ GuiBlockCategoryDefinition - [FLAW] - .SC_[FLAW] + [FLW] + .SC_[FLW] true - + LargeRailgun_SC GoalieCasemate - KreegMagnetarCannon - Thagomizer - HeavyFighterBay - HeavyCarronade_5x5_Turret - X4_7x7_HeavyTurret - VindicatorKineticLance - HadeanPlasmaBlastgun - JN_175Fixed - longsword + X4_7x7_HeavyTurret + HeavyCarronade_5x5_Turret + JN_175Fixed @@ -183,18 +227,14 @@ - MA_Fixed_T3 + MA_PDX + MA_Gimbal_Laser + UNN_Heavy_Torpedo + MA_AC150 MA_Gimbal_Laser_T2 - MA_Gladius - MA_Guardian - MA_Derecho - MCRN_Heavy_Torpedo MA_T2PDX - MA_AC150 - MA_Gimbal_Laser - MA_PDX - MA_Tiger - UNN_Heavy_Torpedo + MA_Derecho + MA_Gladius @@ -210,20 +250,13 @@ - NHI_Heavy_Gun_Turret - NHI_Autocannon_Turret - NHI_Fixed_Autocannon NHI_PD_Turret + NHI_Gatling_Laser_Turret + NHI_Autocannon_Turret NHI_Kinetic_Cannon_Turret - NHI_Fixed_Gatling_Laser - SC_Coil_Cannon - NHI_Mk1_Cannon_Turret NHI_Mk2_Cannon_Turret - NHI_Mk3_Cannon_Turret - NHI_Light_Railgun_Turret - NHI_Gatling_Laser_Turret - NHI_Light_Autocannon_Turret - + SC_Coil_Cannon + NHI_Mk3_Cannon_Turret @@ -238,16 +271,10 @@ - SC_AR_Eris - SC_AR_MagnaStar SC_AR_Tumult - SC_AR_Afflictor - SC_AR_Afflictor_Slanted SC_AR_Deimos - SC_AR_FocusedBeam SC_AR_Forager - SC_AR_Heliod - SC_AR_Phobos + SC_AR_Eris @@ -263,17 +290,12 @@ - K_SA_HeavyMetal_Gauss_A - K_SA_HeavyMetal_Gauss_ERII - K_SA_HeavyMetal_Gauss_PGBC SA_HMI_Erebos - Hellfire_Laser_Block - K_SA_HeavyMetal_Spinal_Rotary_Reskin - K_SA_HeavyMetal_Spinal_Rotary - K_SA_Gauss_ERC + K_SA_HeavyMetal_Gauss_A K_SA_HeavyMetal_Gauss_ERFM + K_SA_HeavyMetal_Gauss_PGBC - + @@ -287,15 +309,10 @@ - K_SA_Launcher_VIV - HAS_Cyclops - HAS_Mammon - HAS_Nyx K_SA_Launcher_VI - HAS_Thanatos - HAS_Esper + K_SA_Launcher_VIV HAS_Avenger - HAS_Crossfield + HAS_Esper @@ -313,12 +330,6 @@ Hexcannon MetalStorm - TaiidanHangarBomber - TaiidanHangarBomberMedium - TaiidanRailBomber - TaiidanHangarFighter - TaiidanRailFighter - TaiidanSingleHangar @@ -332,24 +343,22 @@ .SC_[BTI] true + - Starcore_AMS_II_Block - ERPPC - Starcore_L_Laser_Block - ModularLRM5 + ModularLRM5 ModularLRM5Angled ModularLRM5AngledReversed - ModularMiddleLRM5 - Starcore_M_Laser_Block - ModularMRM10 + ModularMiddleLRM5 + Starcore_Arrow_Block_Single + ModularMRM10 ModularMRM10Angled ModularMRM10AngledReversed ModularMiddleMRM10 - Starcore_AMS_I_Block - Starcore_PPC_Block - ModularSRM8 - Starcore_Arrow_Block - Starcore_Arrow_Block_Single + Starcore_AMS_I_Block + Starcore_AMS_II_Block + Starcore_Arrow_Block + ERPPC + @@ -363,13 +372,13 @@ MagnaPulse_Gen - - Impulse_Torch - + + + Counter_Battery - S_Chem_Laser_Block - S_Armored_Laser_Block - + + + Nariman_Dart_Turret SolHyp_Magnetic_Coilgun @@ -383,26 +392,19 @@ .SC_[FAS] true + - 16InchTriple - 6InchTriple + BoforTwinRemodel + QuadBofor + PomPomMain 127mmMk32 127mmMk12 127mmMk24 - 381mmDualR - 15cmTbtsKC36 - 105mmTwin + 203mmTwin 380mmMLE1935 - 15cmSKC28R - 15cmSKC28NR - PomPomMain - BoforTwinRemodel - BoforSingleRemodel - TorpBarbette - Barbette5x5 - QuadBofor - 20InchTwin - 406alternate + 381mmDualR + 16InchTriple + From e2e4d11f56803468905e9c888cd24d1e261f7c68 Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Wed, 19 Mar 2025 20:02:10 -0500 Subject: [PATCH 34/36] Add uploaddisable for CameraApi and StealthDrive --- Utility Mods/CameraInfoApi/uploaddisable_main.sbmi | 0 Utility Mods/CameraInfoApi/uploaddisable_stable.sbmi | 0 .../Stealth Drive - Starcore Edition/uploaddisable_stable.sbmi | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Utility Mods/CameraInfoApi/uploaddisable_main.sbmi create mode 100644 Utility Mods/CameraInfoApi/uploaddisable_stable.sbmi create mode 100644 Utility Mods/Stealth Drive - Starcore Edition/uploaddisable_stable.sbmi diff --git a/Utility Mods/CameraInfoApi/uploaddisable_main.sbmi b/Utility Mods/CameraInfoApi/uploaddisable_main.sbmi new file mode 100644 index 000000000..e69de29bb diff --git a/Utility Mods/CameraInfoApi/uploaddisable_stable.sbmi b/Utility Mods/CameraInfoApi/uploaddisable_stable.sbmi new file mode 100644 index 000000000..e69de29bb diff --git a/Utility Mods/Stealth Drive - Starcore Edition/uploaddisable_stable.sbmi b/Utility Mods/Stealth Drive - Starcore Edition/uploaddisable_stable.sbmi new file mode 100644 index 000000000..e69de29bb From 10a673bfee573013a807c0f34510f012892e0bff Mon Sep 17 00:00:00 2001 From: Aristeas <94058548+ari-steas@users.noreply.github.com> Date: Wed, 19 Mar 2025 22:37:01 -0500 Subject: [PATCH 35/36] REALFAKE ROTARY RADIATOR !!! (#1938) --- .../Data/BlockCategories.sbc | 1 + .../Data/CubeBlocks/ActiveRadiator.sbc | 37 +++++++++++++++++++ .../ActiveRadiatorAnimation.cs | 9 ++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc b/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc index 47d25cb99..caa2b293a 100644 --- a/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/BlockCategories.sbc @@ -24,6 +24,7 @@ ExtendableRadiatorBase Heat_FlatRadiator ActiveRadiator + ActiveRadiatorFake diff --git a/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc b/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc index d915be8dc..b3dbadc28 100644 --- a/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc +++ b/Utility Mods/MoA Fusion Systems/Data/CubeBlocks/ActiveRadiator.sbc @@ -36,6 +36,43 @@ X + + + + TerminalBlock + ActiveRadiatorFake + + RealFake Rotary Active Radiator + + Looks just like the Rotary Active Radiator, but doesn't actually reduce heat! + Animation tied to grid power draw. + + Textures\GUI\Icons\Cubes\ActiveRadiator.dds + Large + TriangleMesh + + + Models\ActiveRadiator.mwm + + + + + + + + + + 0.3 + ActiveRadiatorFake + + + + + + + + + X \ No newline at end of file diff --git a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ActiveRadiatorAnimation.cs b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ActiveRadiatorAnimation.cs index b21d9f7df..a9b2abf5b 100644 --- a/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ActiveRadiatorAnimation.cs +++ b/Utility Mods/MoA Fusion Systems/Data/Scripts/ModularAssemblies/HeatParts/ExtendableRadiators/ActiveRadiatorAnimation.cs @@ -9,12 +9,15 @@ namespace Epstein_Fusion_DS.HeatParts.ExtendableRadiators { - [MyEntityComponentDescriptor(typeof(MyObjectBuilder_TerminalBlock), false, "ActiveRadiator")] + [MyEntityComponentDescriptor(typeof(MyObjectBuilder_TerminalBlock), false, "ActiveRadiator", "ActiveRadiatorFake")] internal class ActiveRadiatorAnimation : MyGameLogicComponent { private IMyCubeBlock Block; private MyEntitySubpart FanPart; private MyParticleEffect Particle; + private readonly MyDefinitionId ElectricityId = MyDefinitionId.Parse("GasProperties/Electricity"); + + private float UsedPowerPct => Block.CubeGrid.ResourceDistributor.TotalRequiredInputByType(ElectricityId, Block.CubeGrid) / Block.CubeGrid.ResourceDistributor.MaxAvailableResourceByType(ElectricityId); public override void Init(MyObjectBuilder_EntityBase objectBuilder) { @@ -41,7 +44,9 @@ public override void UpdateOnceBeforeFrame() public override void UpdateAfterSimulation() { - float heatLevel = HeatManager.I.GetGridHeatLevel(Block.CubeGrid); + float heatLevel = Block.BlockDefinition.SubtypeName == "ActiveRadiatorFake" ? UsedPowerPct : HeatManager.I.GetGridHeatLevel(Block.CubeGrid); + if (!Block.IsWorking) + heatLevel = 0; Matrix refMatrix = MatrixD.CreateFromAxisAngle(Vector3D.Up, -0.1 * heatLevel) * FanPart.PositionComp.LocalMatrixRef; refMatrix.Translation = FanPart.PositionComp.LocalMatrixRef.Translation; From 3d81a418c3a50f150c4a4ac8333101848f413c9e Mon Sep 17 00:00:00 2001 From: BadM0dder <109397107+BadM0dder@users.noreply.github.com> Date: Fri, 21 Mar 2025 17:21:17 -0400 Subject: [PATCH 36/36] brighten Iowa round, Reaver adjustments, railgun power, Goalie changed adding commas and spaces to FAS Goalie Buffed, BP reduced cause its meh, limited to 4 per grid because awesome particle show can be too much Reaver Reload halved Railgun power set to 150 --- .../Data/Scripts/Additions/PointAdditions.cs | 12 +-- .../Data/Scripts/CoreParts/AmmoTypes.cs | 2 +- .../GoalkeeperFlakwallCubeblock.sbc | 8 +- .../GoalieMultiTurretParts.cs | 8 +- .../Magnetic Weapons/ReaverWeaponParts.cs | 8 +- .../CoreParts/Large Calibre/380mmAPAmmo.cs | 93 +------------------ .../CoreParts/Large Calibre/380mmHEAmmo.cs | 6 +- .../CoreParts/Large Calibre/380mmQuadGun.cs | 2 +- .../Large Calibre/381mmGunTwinAlt.cs | 2 +- .../CoreParts/Large Calibre/381mmTwinGun.cs | 2 +- .../CoreParts/Large Calibre/406mmGun.cs | 2 +- .../CoreParts/Large Calibre/406mmalt.cs | 2 +- .../Medium Calibre/203mmTripleGun.cs | 2 +- .../CoreParts/Medium Calibre/203mmTwinGun.cs | 2 +- .../CoreParts/Small Calibre/127mmMark12.cs | 2 +- .../CoreParts/Small Calibre/127mmMark24.cs | 2 +- .../CoreParts/Small Calibre/127mmMark32.cs | 2 +- .../CoreParts/Small Calibre/127mmMark56.cs | 2 +- .../Small Calibre/152mmTripleUSI127mmCON.cs | 2 +- 19 files changed, 38 insertions(+), 123 deletions(-) diff --git a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs index 221218d6e..57af221b6 100644 --- a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs +++ b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs @@ -560,7 +560,7 @@ internal class PointAdditions : MySessionComponentBase ["Hellfire_Laser_Block"] = 666, - ["Cat_StarcoreUlitity"] = 21, + ["Cat_StarcoreUlitity"] = 21, ["LargeBlockRemoteControl"] = 100, ["SmallBlockRemoteControl"] = 50, ["LargeProgrammableBlock"] = 50, @@ -591,7 +591,7 @@ internal class PointAdditions : MySessionComponentBase ["Starcore_RWR_Projectiles"] = 5, ["SC_Flare"] = 50, ["SI_Field_Gen"] = 50, - ["FieldGen_Core"] = 50, + ["FieldGen_Core"] = 50, ["FieldGen_Capacity_Upgrade"] = 50, ["SELtdLargeNanobotBuildAndRepairSystem"] = 50, ["PM_LG_BLASTPLATE_BLASTPLATE"] = 100, @@ -612,9 +612,9 @@ internal class PointAdditions : MySessionComponentBase ["BlinkDriveLarge"] = 500, ["SCSmallJumpDrive"] = 250, - ["Cat_BadModder"] = 22, + ["Cat_BadModder"] = 22, ["APE_Strong"] = 200, - ["GoalieCasemate"] = 175, + ["GoalieCasemate"] = 100, ["Reaver_Coilgun"] = 115, ["Assault_Coil_Turret"] = 115, ["Priest_Block"] = 100, @@ -646,7 +646,7 @@ internal class PointAdditions : MySessionComponentBase ["Thagomizer_Angled"] = 635, ["Thagomizer_Angled_Flipped"] = 635, - ["Cat_Strikecraft"] = 23, + ["Cat_Strikecraft"] = 23, ["HeavyFighterBay"] = 230, ["longsword"] = 625, ["TaiidanSingleHangar"] = 100, @@ -948,7 +948,7 @@ private static MyTuple ClimbingCostRename(string blockDisplayName break; case "[FLAW] Goalkeeper Casemate Flak Battery": blockDisplayName = "[FLAW] Goalkeeper Flakwall"; - costMultiplier = 0.119f; + costMultiplier = 0f; break; case "Shield Controller": case "Shield Controller Table": diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs index a5fba7caa..0d5aa9cd5 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs @@ -2293,7 +2293,7 @@ partial class Parts AmmoMagazine = "LargeRailgunAmmo", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. AmmoRound = "Large Railgun Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. HybridRound = true, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.2858f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + EnergyCost = 0.2143f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 126000f, //holy number, not to be changed //Direct damage; one steel plate is worth 100. Mass = 277f, // In kilograms; how much force the impact will apply to the target. Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. diff --git a/Weapon Mods/TIOStarcore/Data/SBC CubeBlocks/GoalkeeperFlakwallCubeblock.sbc b/Weapon Mods/TIOStarcore/Data/SBC CubeBlocks/GoalkeeperFlakwallCubeblock.sbc index a8215e0fd..028154c48 100644 --- a/Weapon Mods/TIOStarcore/Data/SBC CubeBlocks/GoalkeeperFlakwallCubeblock.sbc +++ b/Weapon Mods/TIOStarcore/Data/SBC CubeBlocks/GoalkeeperFlakwallCubeblock.sbc @@ -9,8 +9,8 @@ [FLAW] Goalkeeper Casemate Flak Battery - [1600 Targeting Range] - [1200 Flak Range] + [2000m Targeting Range] + [1200m Flak Range] [Clouds of small pre-cast fragments are lethal to missiles, biologicals, below average sized meteors, and small grids.] [Targets Missiles, deals 160 AMS Damage Per Second] @@ -19,8 +19,8 @@ Large true TriangleMesh - - + + Models\HSR\K_HSR_Damnation_Large.mwm diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs index e3f615280..398761d1b 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs @@ -53,7 +53,7 @@ partial class Parts { Projectiles, Meteors, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { - Offense, Thrust, Utility, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any }, ClosestFirst = false, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. @@ -147,7 +147,7 @@ partial class Parts { }, Other = new OtherDef { - ConstructPartCap = 0, // Maximum number of blocks with this weapon on a grid; 0 = unlimited. + ConstructPartCap = 4, // Maximum number of blocks with this weapon on a grid; 0 = unlimited. RotateBarrelAxis = 0, // For spinning barrels, which axis to spin the barrel around; 0 = none. EnergyPriority = 0, // Deprecated. MuzzleCheck = false, // Whether the weapon should check LOS from each individual muzzle in addition to the scope. @@ -266,7 +266,7 @@ partial class Parts { Projectiles, Meteors, Neutrals,// Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { - Offense, Thrust, Utility, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any }, ClosestFirst = false, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. @@ -480,7 +480,7 @@ partial class Parts { Projectiles, Meteors, Neutrals,// Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { - Offense, Thrust, Utility, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any }, ClosestFirst = false, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Magnetic Weapons/ReaverWeaponParts.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Magnetic Weapons/ReaverWeaponParts.cs index 9758d29f4..6a99203c9 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Magnetic Weapons/ReaverWeaponParts.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Magnetic Weapons/ReaverWeaponParts.cs @@ -127,7 +127,7 @@ partial class Parts { HomeAzimuth = 0, // Default resting rotation angle HomeElevation = 0, // Default resting elevation InventorySize = 1f, // Inventory capacity in kL. - IdlePower = 0.001f, //fix for animation??? Constant base power draw in MW. + IdlePower = 0f, //fix for animation??? Constant base power draw in MW. FixedOffset = false, // Deprecated. Offset = Vector(x: 0, y: 0, z: 0), // Offsets the aiming/firing line of the weapon, in metres. Type = BlockWeapon, // What type of weapon this is; BlockWeapon, HandWeapon, Phantom @@ -159,7 +159,7 @@ partial class Parts { BarrelsPerShot = 2, // How many muzzles will fire a projectile per fire event. TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event. SkipBarrels = 0, // Number of muzzles to skip after each fire event. - ReloadTime = 600, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + ReloadTime = 300, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MagsToLoad = 1, //20 Number of physical magazines to consume on reload. DelayUntilFire = 0, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). HeatPerShot = 1, // Heat generated per shot. @@ -343,7 +343,7 @@ partial class Parts { HomeAzimuth = 0, // Default resting rotation angle HomeElevation = 0, // Default resting elevation InventorySize = 1f, // Inventory capacity in kL. - IdlePower = 0.0001f, // Constant base power draw in MW. + IdlePower = 0f, // Constant base power draw in MW. FixedOffset = false, // Deprecated. Offset = Vector(x: 0, y: 0, z: 0), // Offsets the aiming/firing line of the weapon, in metres. Type = BlockWeapon, // What type of weapon this is; BlockWeapon, HandWeapon, Phantom @@ -375,7 +375,7 @@ partial class Parts { BarrelsPerShot = 2, // How many muzzles will fire a projectile per fire event. TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event. SkipBarrels = 0, // Number of muzzles to skip after each fire event. - ReloadTime = 600, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + ReloadTime = 300, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MagsToLoad = 1, //20 Number of physical magazines to consume on reload. DelayUntilFire = 0, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). HeatPerShot = 1, // Heat generated per shot. diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmAPAmmo.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmAPAmmo.cs index b50730355..88da056d5 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmAPAmmo.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmAPAmmo.cs @@ -173,73 +173,12 @@ partial class Parts CustomSound = "", }, }, - Ewar = new EwarDef - { - Enable = false, // Enables the EWAR , Electronic-Warfare System - Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, - Mode = Effect, // Effect , Field - Strength = 10000f, - Radius = 100f, // Meters - Duration = 100, // In Ticks - StackDuration = true, // Combined Durations - Depletable = true, - MaxStacks = 10, // Max Debuffs at once - NoHitParticle = false, - /* - EnergySink : Targets & Shutdowns Power Supplies, such as Batteries & Reactor - Emp : Targets & Shutdown any Block capable of being powered - Offense : Targets & Shutdowns Weaponry - Nav : Targets & Shutdown Gyros, Thrusters, or Locks them down - Dot : Deals Damage to Blocks in radius - AntiSmart : Effects & Scrambles the Targeting List of Affected Missiles - JumpNull : Shutdown & Stops any Active Jumps, or JumpDrive Units in radius - Tractor : Affects target with Physics - Pull : Affects target with Physics - Push : Affects target with Physics - Anchor : Affects target with Physics - - */ - Force = new PushPullDef - { - ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass - ForceTo = HitPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass - Position = TargetCenterOfMass, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass - DisableRelativeMass = false, - TractorRange = 0, - ShooterFeelsForce = false, - }, - Field = new FieldDef - { - Interval = 0, // Time between each pulse, in game ticks (60 == 1 second). - PulseChance = 0, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. - GrowTime = 0, // How many ticks it should take the field to grow to full size. - HideModel = false, // Hide the projectile model if it has one. - ShowParticle = false, // Set to show block damage effect when ewared. - TriggerRange = 250f, //range at which fields are triggered - Particle = new ParticleDef // Particle effect to generate at the field's position. - { - Name = "", // SubtypeId of field particle effect. - Extras = new ParticleOptionDef - { - Scale = 1, // Scale of effect. - }, - }, - }, - }, - Beams = new BeamDef - { - Enable = false, // Enable beam behaviour. Please have 3600 RPM, when this Setting is enabled. Please do not fire Beams into Voxels. - VirtualBeams = false, // Only one damaging beam, but with the effectiveness of the visual beams combined (better performance). - ConvergeBeams = false, // When using virtual beams, converge the visual beams to the location of the real beam. - RotateRealBeam = false, // The real beam is rotated between all visual beams, instead of centered between them. - OneParticle = false, // Only spawn one particle hit per beam weapon. - }, Trajectory = new TrajectoryDef { Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed TargetLossDegree = 80f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 2000, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). Please have a value for this, It stops Bad things. + MaxLifeTime = 600, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). Please have a value for this, It stops Bad things. AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. DesiredSpeed = 1300, // voxel phasing if you go above 5100 MaxTrajectory = 10000f, // Max Distance the projectile or beam can Travel. @@ -248,30 +187,6 @@ partial class Parts SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards. RangeVariance = Random(start: 5, end: 10), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. - Smarts = new SmartsDef - { - Inaccuracy = 5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 1f, // controls how responsive tracking is. - MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn - TrackingDelay = 1, // Measured in Shape diameter units traveled. - MaxChaseTime = 450, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - OverideTarget = true, // when set to true ammo picks its own target, does not use hardpoint's. - CheckFutureIntersection = false, // Utilize obstacle avoidance? - MaxTargets = 3, // Number of targets allowed before ending, 0 = unlimited - NoTargetExpire = false, // Expire without ever having a target at TargetLossTime - Roam = false, // Roam current area after target loss - KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss - OffsetRatio = 0f, // The ratio to offset the random direction (0 to 1) - OffsetTime = 0, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) - }, - Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. - { - DetectRadius = 0, - DeCloakRadius = 0, - FieldTime = 0, - Cloak = false, - Persist = false, - }, }, AmmoGraphics = new GraphicDef { @@ -333,13 +248,13 @@ partial class Parts Lines = new LineDef { TracerMaterial = "ProjectileTrailLine", // WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - ColorVariance = Random(start: 1.0f, end: 1.3f), // multiply the color by random values within range. + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { Enable = true, - Length = 10f, - Width = 0.1f, + Length = 20f, + Width = 0.25f, Color = Color(red: 25f, green: 25f, blue: 24f, alpha: 0.8f), }, Trail = new TrailDef diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmHEAmmo.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmHEAmmo.cs index ec1b72944..188ea5d5e 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmHEAmmo.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmHEAmmo.cs @@ -333,13 +333,13 @@ partial class Parts Lines = new LineDef { TracerMaterial = "ProjectileTrailLine", // WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - ColorVariance = Random(start: 1.0f, end: 1.3f), // multiply the color by random values within range. + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { Enable = true, - Length = 10f, - Width = 0.1f, + Length = 20f, + Width = 0.25f, Color = Color(red: 40.80f, green: 8.20f, blue: 1.6f, alpha: 0.1f), }, Trail = new TrailDef diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmQuadGun.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmQuadGun.cs index 88858f125..44358720a 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmQuadGun.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/380mmQuadGun.cs @@ -189,7 +189,7 @@ partial class Parts { }, }, Ammos = new[] { - FA380mmShell,FA380mmAPShell // Must list all primary, shrapnel, and pattern ammos. + FA380mmShell, FA380mmAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmGunTwinAlt.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmGunTwinAlt.cs index a3192bd78..e86e4ab83 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmGunTwinAlt.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmGunTwinAlt.cs @@ -187,7 +187,7 @@ partial class Parts { }, }, Ammos = new[] { - FA380mmShell,FA380mmAPShell // Must list all primary, shrapnel, and pattern ammos. + FA380mmShell, FA380mmAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmTwinGun.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmTwinGun.cs index ed6583ebb..818c8d032 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmTwinGun.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/381mmTwinGun.cs @@ -187,7 +187,7 @@ partial class Parts { }, }, Ammos = new[] { - FA380mmShell,FA380mmAPShell,// Must list all primary, shrapnel, and pattern ammos. + FA380mmShell, FA380mmAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmGun.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmGun.cs index b3640043d..29dd9ed71 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmGun.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmGun.cs @@ -191,7 +191,7 @@ partial class Parts { }, }, Ammos = new[] { - FA380mmShell,FA380mmAPShell // Must list all primary, shrapnel, and pattern ammos. + FA380mmShell, FA380mmAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = FA16InchRecoil, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmalt.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmalt.cs index da2b04a92..2dd99cc0f 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmalt.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Large Calibre/406mmalt.cs @@ -191,7 +191,7 @@ partial class Parts { }, }, Ammos = new[] { - FA380mmShell,FA380mmAPShell // Must list all primary, shrapnel, and pattern ammos. + FA380mmShell, FA380mmAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = FA16InchRecoil, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTripleGun.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTripleGun.cs index 2deb08a9f..c08133782 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTripleGun.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTripleGun.cs @@ -193,7 +193,7 @@ partial class Parts { }, }, Ammos = new[] { - APShell203, HEShell203 // Must list all primary, shrapnel, and pattern ammos. + APShell203, HEShell203, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTwinGun.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTwinGun.cs index 869048020..b8f7a1a96 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTwinGun.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Medium Calibre/203mmTwinGun.cs @@ -192,7 +192,7 @@ partial class Parts { }, }, Ammos = new[] { - APShell203, HEShell203 // Must list all primary, shrapnel, and pattern ammos. + APShell203, HEShell203, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark12.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark12.cs index 27f8b1540..cc721d7af 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark12.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark12.cs @@ -184,7 +184,7 @@ partial class Parts { }, }, Ammos = new[] { - FA5InchShell, FA5SAPShell // Must list all primary, shrapnel, and pattern ammos. + FA5InchShell, FA5SAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark24.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark24.cs index bde56d017..f474702c3 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark24.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark24.cs @@ -184,7 +184,7 @@ partial class Parts { }, }, Ammos = new[] { - FA5InchShell,FA5SAPShell // Must list all primary, shrapnel, and pattern ammos. + FA5InchShell, FA5SAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark32.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark32.cs index 36cd5c97f..6d379263a 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark32.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark32.cs @@ -185,7 +185,7 @@ partial class Parts { }, }, Ammos = new[] { - FA5InchShell,FA5SAPShell // Must list all primary, shrapnel, and pattern ammos. + FA5InchShell, FA5SAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark56.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark56.cs index f9189a61c..255f2287b 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark56.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/127mmMark56.cs @@ -185,7 +185,7 @@ partial class Parts { }, }, Ammos = new[] { - FA5InchShell,FA5SAPShell // Must list all primary, shrapnel, and pattern ammos. + FA5InchShell, FA5SAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/152mmTripleUSI127mmCON.cs b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/152mmTripleUSI127mmCON.cs index e269ef293..e86995807 100644 --- a/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/152mmTripleUSI127mmCON.cs +++ b/Weapon Mods/TaitMod_Fletcher/Data/Scripts/CoreParts/Small Calibre/152mmTripleUSI127mmCON.cs @@ -193,7 +193,7 @@ partial class Parts { }, }, Ammos = new[] { - FA5InchShell,FA5SAPShell // Must list all primary, shrapnel, and pattern ammos. + FA5InchShell, FA5SAPShell, // Must list all primary, shrapnel, and pattern ammos. }, //Animations = Weapon75_Animation, //Upgrades = UpgradeModules,