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..6e2f5f12f 100644 --- a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs +++ b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs @@ -159,13 +159,18 @@ internal class PointAdditions : MySessionComponentBase ["S_Armored_Laser_Block"] = 120, ["S_Chem_Laser_Block"] = 120, + ["ScathisM77"] = 150, ["Impulse_Torch"] = 175, ["Flechette_DoubleBarrel"] = 200, - ["Nariman_Dart_Turret"] = 225, + ["Nariman_Dart_Turret"] = 245, ["Counter_Battery"] = 250, - ["SolHyp_ArcStrike_Torp"] = 275, + ["ArcStrike_Torp_Launcher"] = 275, + ["Meson3_Turret"] = 300, + ["Meson5_Turret"] = 600, + ["PSP"] = 500, ["MagnaPulse_Gen"] = 400, ["SolHyp_Magnetic_Coilgun"] = 450, + ["WCSentry_Hangar"] = 1000, @@ -762,6 +767,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/Cast Spectator - StarCore/Data/Scripts/CastSpectator/CastSpectator.cs b/Utility Mods/Cast Spectator - StarCore/Data/Scripts/CastSpectator/CastSpectator.cs index 06505e23f..ddccc3169 100644 --- a/Utility Mods/Cast Spectator - StarCore/Data/Scripts/CastSpectator/CastSpectator.cs +++ b/Utility Mods/Cast Spectator - StarCore/Data/Scripts/CastSpectator/CastSpectator.cs @@ -123,6 +123,9 @@ public class CastSpectator : MySessionComponentBase public float InQuint(float t) => t * t * t * t * t; public float OutQuint(float t) => 1 - InQuint(1 - t); + private MatrixD freeModeMatrix = MatrixD.Identity; + private bool freeModeInitialized = false; + private bool HideHud { get @@ -221,9 +224,11 @@ public override void UpdateAfterSimulation() { Clear(); } - + // Keep current position, just look at target + Vector3D targetPos = tempHIt.HitEntity.WorldVolume.Center; + m_specCam.SetTarget(targetPos, m_specCam.Orientation.Up); // Use current Up vector SetTarget(tempHIt.HitEntity); - SetMode(1); + ObsCameraState.lockmode = CameraMode.Follow; // Default to Follow } } } @@ -242,6 +247,7 @@ public override void UpdateAfterSimulation() { case CameraMode.Free: ObsCameraState.lockmode = CameraMode.Follow; + InitializeFollowFromFree(); // Preserve Free mode state break; case CameraMode.Follow: ObsCameraState.lockmode = CameraMode.Orbit; @@ -252,6 +258,7 @@ public override void UpdateAfterSimulation() break; case CameraMode.Track: ObsCameraState.lockmode = CameraMode.Free; + InitializeFreeMode(); break; } } @@ -264,10 +271,15 @@ public override void UpdateAfterSimulation() if (m_Pref.FreeMode.IsKeybindPressed()) { ObsCameraState.lockmode = CameraMode.Free; + InitializeFreeMode(); } if (m_Pref.FollowMode.IsKeybindPressed()) { + if (ObsCameraState.lockmode == CameraMode.Free) + { + InitializeFollowFromFree(); + } ObsCameraState.lockmode = CameraMode.Follow; } @@ -533,22 +545,69 @@ public override void UpdateAfterSimulation() switch (ObsCameraState.lockmode) { case CameraMode.Free: - Vector3D WorldMoveFree = mi.X * m_playerCamera.WorldMatrix.Right - + mi.Y * m_playerCamera.WorldMatrix.Up - + mi.Z * m_playerCamera.WorldMatrix.Backward; - m_specCam.Position = ObsCameraState.lockEntity.WorldVolume.Center + ObsCameraState.localVector + WorldMoveFree; + { + if (!freeModeInitialized) + { + InitializeFreeMode(); + } + + // Apply smoothed movement + Vector3D freeMovement = mi.X * freeModeMatrix.Right + + mi.Y * freeModeMatrix.Up + + mi.Z * freeModeMatrix.Backward; + freeModeMatrix.Translation += freeMovement; + + // Apply smoothed rotation + if (mouse.Y != 0) + { + Vector3D newRight, newForward; + MyUtils.VectorPlaneRotation(freeModeMatrix.Right, freeModeMatrix.Forward, out newRight, out newForward, -mouse.Y); + freeModeMatrix.Right = newRight; + freeModeMatrix.Forward = newForward; + } + if (mouse.X != 0) + { + Vector3D newUp, newForward; + MyUtils.VectorPlaneRotation(freeModeMatrix.Up, freeModeMatrix.Forward, out newUp, out newForward, mouse.X); + freeModeMatrix.Up = newUp; + freeModeMatrix.Forward = newForward; + } + if (ri != 0) + { + Vector3D newUp, newRight; + MyUtils.VectorPlaneRotation(freeModeMatrix.Up, freeModeMatrix.Right, out newUp, out newRight, ri); + freeModeMatrix.Up = newUp; + freeModeMatrix.Right = newRight; + } + + // Set camera position and orientation + Vector3D basePos = ObsCameraState.lockEntity?.WorldVolume.Center ?? Vector3D.Zero; + m_specCam.Position = basePos + freeModeMatrix.Translation; + m_specCam.SetTarget(m_specCam.Position + freeModeMatrix.Forward, freeModeMatrix.Up); + } break; + case CameraMode.Follow: - Vector3D WorldMoveFollow = mi.X * ObsCameraState.localMatrix.Right - + mi.Y * ObsCameraState.localMatrix.Up - + mi.Z * ObsCameraState.localMatrix.Backward; - var move = ObsCameraState.localMatrix.Translation + WorldMoveFollow; - ObsCameraState.localMatrix.Translation = move; - var fworldmatrix = ObsCameraState.lockEntity.WorldMatrix; - var targetm = LocalToWorld(ObsCameraState.localMatrix, fworldmatrix); - m_specCam.Position = targetm.Translation; - m_specCam.SetTarget(m_specCam.Position + targetm.Forward, targetm.Up); + { + if (ObsCameraState.localMatrix == MatrixD.Identity && ObsCameraState.lockEntity != null) + { + // Fallback initialization if localMatrix wasn’t set (e.g., no prior mode) + Vector3D offset = m_specCam.Position - ObsCameraState.lockEntity.WorldVolume.Center; + MatrixD worldMatrix = m_specCam.Orientation; + worldMatrix.Translation = offset; + ObsCameraState.localMatrix = WorldToLocalNI(worldMatrix, ObsCameraState.lockEntity.WorldMatrixNormalizedInv); + } + Vector3D WorldMoveFollow = mi.X * ObsCameraState.localMatrix.Right + + mi.Y * ObsCameraState.localMatrix.Up + + mi.Z * ObsCameraState.localMatrix.Backward; + var move = ObsCameraState.localMatrix.Translation + WorldMoveFollow; + ObsCameraState.localMatrix.Translation = move; + var fworldmatrix = ObsCameraState.lockEntity.WorldMatrix; + var targetm = LocalToWorld(ObsCameraState.localMatrix, fworldmatrix); + m_specCam.Position = targetm.Translation; + m_specCam.SetTarget(m_specCam.Position + targetm.Forward, targetm.Up); + } break; case CameraMode.Orbit: var lookAt = ObsCameraState.lockEntity.WorldVolume.Center; @@ -586,14 +645,16 @@ public override void UpdateAfterSimulation() } - var reconstruct = ObsCameraState.lastOrientation = m_specCam.Orientation; - reconstruct.Translation = m_specCam.Position; - ObsCameraState.localMatrix = WorldToLocalNI(reconstruct, ObsCameraState.lockEntity.WorldMatrixNormalizedInv); - - ObsCameraState.localVector = m_specCam.Position - ObsCameraState.lockEntity.WorldVolume.Center; - if (ObsCameraState.lockmode != CameraMode.Orbit) + if (ObsCameraState.lockmode != CameraMode.Free) { - ObsCameraState.localDistance = ObsCameraState.localVector.Length(); + var reconstruct = ObsCameraState.lastOrientation = m_specCam.Orientation; + reconstruct.Translation = m_specCam.Position; + ObsCameraState.localMatrix = WorldToLocalNI(reconstruct, ObsCameraState.lockEntity.WorldMatrixNormalizedInv); + ObsCameraState.localVector = m_specCam.Position - ObsCameraState.lockEntity.WorldVolume.Center; + if (ObsCameraState.lockmode != CameraMode.Orbit) + { + ObsCameraState.localDistance = ObsCameraState.localVector.Length(); + } } } @@ -637,7 +698,7 @@ public override void UpdateAfterSimulation() if (m_FindAndMoveState == FindAndMoveState.GoToMove) { - Clear(); + // Don’t Clear() immediately to preserve mode state until animation ends origStart = m_specCam.Position; origFor = m_specCam.Orientation.Forward; origUp = m_specCam.Orientation.Up; @@ -655,7 +716,6 @@ public override void UpdateAfterSimulation() if (m_FindAndMoveState == FindAndMoveState.InMove) { bool complete = false; - if (moveGrid == null || moveGrid.Physics == null || MyAPIGateway.Session.IsCameraControlledObject) { m_FindAndMoveState = FindAndMoveState.GoToIdle; @@ -665,9 +725,7 @@ public override void UpdateAfterSimulation() Vector3D currentStartPosition = m_specCam.Position; Vector3D focusCentralPosition = moveGrid.WorldAABB.Center; Vector3D direction = Vector3D.Normalize(focusCentralPosition - currentStartPosition); - double pullbackDist = moveGrid.PositionComp.WorldVolume.Radius; - pullbackDist *= 1.5; - + double pullbackDist = moveGrid.PositionComp.WorldVolume.Radius * 1.5; double travelDist = (focusCentralPosition - currentStartPosition).Length() - pullbackDist; Vector3D endPosition = currentStartPosition + (direction * travelDist); @@ -681,6 +739,7 @@ public override void UpdateAfterSimulation() var realRatio = (double)viewAnimFrame / maxViewAnimFrame; var easingRatio = OutQuint((float)realRatio); m_specCam.Position = Vector3D.Lerp(origStart, endPosition, easingRatio); + // Remove SetTarget during animation to preserve orientation viewAnimFrame += 1; } else @@ -690,11 +749,37 @@ public override void UpdateAfterSimulation() if (complete) { + // Set final animation position, keep existing orientation + m_specCam.Position = endPosition; + + // Lock onto the grid, preserving current mode and orientation + if (ObsCameraState.lockEntity != null) + { + Clear(); // Clear previous lock + } SetTarget(moveGrid); + ObsCameraState.islocked = true; + + // Update mode-specific state with current orientation + switch (ObsCameraState.lockmode) + { + case CameraMode.Free: + freeModeMatrix = m_specCam.Orientation; // Use current orientation + freeModeMatrix.Translation = m_specCam.Position - moveGrid.WorldVolume.Center; + freeModeInitialized = true; + break; + case CameraMode.Follow: + case CameraMode.Orbit: + case CameraMode.Track: + MatrixD worldMatrix = m_specCam.Orientation; // Preserve current orientation + worldMatrix.Translation = m_specCam.Position; + ObsCameraState.localMatrix = WorldToLocalNI(worldMatrix, moveGrid.WorldMatrixNormalizedInv); + break; + } + m_FindAndMoveState = FindAndMoveState.GoToIdle; } } - if (m_FindAndMoveState == FindAndMoveState.InMoveLookback) { bool complete = false; @@ -713,7 +798,7 @@ public override void UpdateAfterSimulation() var moveRatio = (double)viewAnimFrame / maxViewAnimFrame; var moveEaseRatio = OutQuint((float)moveRatio); - var rotateRatio = (double)rotationAnimFrame/ maxRotationAnimFrame; + var rotateRatio = (double)rotationAnimFrame / maxRotationAnimFrame; var rotateEaseRatio = OutQuint((float)rotateRatio); if (viewAnimFrame < maxViewAnimFrame + 1) @@ -726,7 +811,7 @@ public override void UpdateAfterSimulation() var lerpedRotation = MathHelper.Lerp(0, Math.PI, rotateEaseRatio); MatrixD rotMat = MatrixD.CreateFromAxisAngle(origUp, lerpedRotation); var finalFor = Vector3D.Rotate(origFor, rotMat); - m_specCam.SetTarget(m_specCam.Position + finalFor, m_specCam.Orientation.Up); + m_specCam.SetTarget(m_specCam.Position + finalFor, m_specCam.Orientation.Up); // Keep spin animation } if (moveRatio > 0.1) @@ -743,17 +828,42 @@ public override void UpdateAfterSimulation() if (complete) { + // Set final position, preserve orientation with spin applied + m_specCam.Position = endPosition; + + // Lock onto the grid, preserving current mode and orientation + if (ObsCameraState.lockEntity != null) + { + Clear(); // Clear previous lock + } SetTarget(moveGrid); + ObsCameraState.islocked = true; + + // Update mode-specific state with current orientation + switch (ObsCameraState.lockmode) + { + case CameraMode.Free: + freeModeMatrix = m_specCam.Orientation; // Use current orientation (post-spin) + freeModeMatrix.Translation = m_specCam.Position - moveGrid.WorldVolume.Center; + freeModeInitialized = true; + break; + case CameraMode.Follow: + case CameraMode.Orbit: + case CameraMode.Track: + MatrixD worldMatrix = m_specCam.Orientation; // Preserve current orientation (post-spin) + worldMatrix.Translation = m_specCam.Position; + ObsCameraState.localMatrix = WorldToLocalNI(worldMatrix, moveGrid.WorldMatrixNormalizedInv); + break; + } + m_FindAndMoveState = FindAndMoveState.GoToIdle; } } - if (m_FindAndMoveState == FindAndMoveState.GoToIdle) { - moveGrid = null; + moveGrid = null; // Clear animation state viewAnimFrame = 0; rotationAnimFrame = 0; - origStart = Vector3D.Zero; origFor = Vector3D.Zero; origUp = Vector3D.Zero; @@ -792,9 +902,10 @@ private void UpdateLockEntity(IMyEntity lockEntity) ObsCameraState.lockEntity = lockEntity; ObsCameraState.islocked = true; + // Only set a default mode if none exists if (ObsCameraState.lockmode == CameraMode.None) { - SetMode(1); + ObsCameraState.lockmode = CameraMode.Follow; // Default to Follow only if no mode is set } if (ObsCameraState.lockmode == CameraMode.Track) @@ -804,6 +915,7 @@ private void UpdateLockEntity(IMyEntity lockEntity) if (ObsCameraState.lockEntity != null && m_specCam != null) { + // Use current spectator camera state var reconstruct = m_specCam.Orientation; reconstruct.Translation = m_specCam.Position; ObsCameraState.localMatrix = WorldToLocalNI(reconstruct, ObsCameraState.lockEntity.WorldMatrixNormalizedInv); @@ -902,31 +1014,34 @@ private void onRegistered() private void UpdateMenu() { - LockTargetInput.Text = "Lock Target - " + m_Pref.ToggleLock.ToString(); - NextModeInput.Text = "Next Mode - " + m_Pref.SwitchMode.ToString(); - FindAndMoveInput.Text = "Find and Move - " + m_Pref.FindAndMove.ToString(); - FindAndMoveSpinInput.Text = "Find and Move Spin - " + m_Pref.FindAndMoveSpin.ToString(); - ModeFreeInput.Text = "Mode Free - " + m_Pref.FreeMode.ToString(); - ModeFollowInput.Text = "Mode Follow - " + m_Pref.FollowMode.ToString(); - ModeOrbitInput.Text = "Mode Orbit - " + m_Pref.OrbitMode.ToString(); - ModeTrackInput.Text = "Mode Track - " + m_Pref.TrackMode.ToString(); - - CameraSmoothKeybind.Text = "Toggle Smooth Camera - " + m_Pref.ToggleSmoothCamera.ToString(); - CameraSmoothOnOff.Text = m_SmoothCamera ? "Smooth Camera On" : "Smooth Camera Off"; - CameraSmoothRate.Text = string.Format("Camera Smooth Rate {0:N0}", SmoothSenseToValue(m_Pref.SmoothCameraLERP).ToString()); - - CameraSmoothRate.InitialPercent = m_Pref.SmoothCameraLERP; - - // Remove updates for Cycle Player Up and Cycle Player Down - // CyclePlayerUp.Text = "Cycle Player Up - " + m_Pref.CyclePlayerUp.ToString(); - // CyclePlayerDown.Text = "Cycle Player Down - " + m_Pref.CyclePlayerDown.ToString(); - - PeriodicSwitchInput.Text = "Periodic Switch - " + m_Pref.PeriodicSwitch.ToString(); - PeriodicSwitchIntervalSlider.Text = "Switch Interval: " + m_PeriodicSwitchInterval + "s"; - PeriodicSwitchIntervalSlider.InitialPercent = m_PeriodicSwitchInterval / 30f; - PeriodicSwitchRandomToggle.Text = m_PeriodicSwitchRandom ? "Random Switch: On" : "Random Switch: Off"; - - HideHudOnOff.Text = m_Pref.HideHud ? "Hud Hidden" : "HUD Always Visible"; + if (TextHUD == null || !m_init) return; // Skip if HUD isn’t initialized + + if (LockTargetInput != null) LockTargetInput.Text = "Lock Target - " + m_Pref.ToggleLock.ToString(); + if (NextModeInput != null) NextModeInput.Text = "Next Mode - " + m_Pref.SwitchMode.ToString(); + if (FindAndMoveInput != null) FindAndMoveInput.Text = "Find and Move - " + m_Pref.FindAndMove.ToString(); + if (FindAndMoveSpinInput != null) FindAndMoveSpinInput.Text = "Find and Move Spin - " + m_Pref.FindAndMoveSpin.ToString(); + if (ModeFreeInput != null) ModeFreeInput.Text = "Mode Free - " + m_Pref.FreeMode.ToString(); + if (ModeFollowInput != null) ModeFollowInput.Text = "Mode Follow - " + m_Pref.FollowMode.ToString(); + if (ModeOrbitInput != null) ModeOrbitInput.Text = "Mode Orbit - " + m_Pref.OrbitMode.ToString(); + if (ModeTrackInput != null) ModeTrackInput.Text = "Mode Track - " + m_Pref.TrackMode.ToString(); + + if (CameraSmoothKeybind != null) CameraSmoothKeybind.Text = "Toggle Smooth Camera - " + m_Pref.ToggleSmoothCamera.ToString(); + if (CameraSmoothOnOff != null) CameraSmoothOnOff.Text = m_SmoothCamera ? "Smooth Camera On" : "Smooth Camera Off"; + if (CameraSmoothRate != null) + { + CameraSmoothRate.Text = string.Format("Camera Smooth Rate {0:N0}", SmoothSenseToValue(m_Pref.SmoothCameraLERP)); + CameraSmoothRate.InitialPercent = m_Pref.SmoothCameraLERP; + } + + if (PeriodicSwitchInput != null) PeriodicSwitchInput.Text = "Periodic Switch - " + m_Pref.PeriodicSwitch.ToString(); + if (PeriodicSwitchIntervalSlider != null) + { + PeriodicSwitchIntervalSlider.Text = "Switch Interval: " + m_PeriodicSwitchInterval + "s"; + PeriodicSwitchIntervalSlider.InitialPercent = m_PeriodicSwitchInterval / 30f; + } + if (PeriodicSwitchRandomToggle != null) PeriodicSwitchRandomToggle.Text = m_PeriodicSwitchRandom ? "Random Switch: On" : "Random Switch: Off"; + + if (HideHudOnOff != null) HideHudOnOff.Text = m_Pref.HideHud ? "Hud Hidden" : "HUD Always Visible"; } private void ToggleHideHud() @@ -1145,6 +1260,40 @@ private MatrixD LocalToWorld(MatrixD local, MatrixD worldMatrix) return local * worldMatrix; } + private void InitializeFreeMode() + { + if (m_specCam != null) + { + // Capture current orientation (rotation only) + freeModeMatrix = m_specCam.Orientation; + // Set translation as offset from target (if locked) or absolute position + if (ObsCameraState.lockEntity != null) + { + Vector3D targetPos = ObsCameraState.lockEntity.WorldVolume.Center; + freeModeMatrix.Translation = m_specCam.Position - targetPos; + } + else + { + freeModeMatrix.Translation = m_specCam.Position; // Absolute position if no target + } + freeModeInitialized = true; + } + } + + private void InitializeFollowFromFree() + { + if (m_specCam != null && ObsCameraState.lockEntity != null) + { + // Convert freeModeMatrix (world relative to target) to localMatrix (relative to entity's world matrix) + Vector3D worldPosition = ObsCameraState.lockEntity.WorldVolume.Center + freeModeMatrix.Translation; + MatrixD worldMatrix = freeModeMatrix; + worldMatrix.Translation = worldPosition; + ObsCameraState.localMatrix = WorldToLocalNI(worldMatrix, ObsCameraState.lockEntity.WorldMatrixNormalizedInv); + // Reset free mode state + freeModeInitialized = false; + } + } + public IMyGridGroupData GetConeFocus() { IMyCamera camera = MyAPIGateway.Session.Camera; 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 000000000..1e517cff8 Binary files /dev/null and b/Utility Mods/MoA Fusion Systems/Textures/HudBackground.dds differ diff --git a/Utility Mods/MoA Fusion Systems/Textures/HudBackground.pdn b/Utility Mods/MoA Fusion Systems/Textures/HudBackground.pdn new file mode 100644 index 000000000..5765d762b Binary files /dev/null and b/Utility Mods/MoA Fusion Systems/Textures/HudBackground.pdn differ 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/Utility Mods/Stealth Drive - Starcore Edition/Data/BlockVariantGroups.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Data/BlockVariantGroups.sbc new file mode 100644 index 000000000..33e0c7ff6 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/BlockVariantGroups.sbc @@ -0,0 +1,32 @@ + + + + + + + + Textures\GUI\Icons\Cubes\Aryx_AWE_TacticalModule.dds + Stealth Drive + Allows a ship to enter stealth, becoming almost invisible as well as undetectable by weapon systems. + + + + + + + + + + + + + + StealthDrive + + 6 + 18 + + + + + \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_1x1Drive.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_1x1Drive.sbc new file mode 100644 index 000000000..7eb7b3d03 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_1x1Drive.sbc @@ -0,0 +1,58 @@ + + + + + + + UpgradeModule + StealthDrive1x1 + + Stealth Drive + Textures\GUI\Icons\Cubes\Aryx_AWE_TacticalModule.dds + Allows a ship to enter stealth, becoming almost invisible as well as undetectable by weapon systems. + Large + false + TriangleMesh + + + Models\Cubes\large\StealthDrive1x1.mwm + + + + + + + + + + + + + + + + + + + + + + + + + StealthDrive1x1 + Z + Y + Light + true + BlockModuleEfficiency + Damage_Electrical_Damaged + ParticleElectrical + Default + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + + + \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_Stealth.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_Stealth.sbc new file mode 100644 index 000000000..d0074524c --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/CubeBlocks_Stealth.sbc @@ -0,0 +1,206 @@ + + + + + + + UpgradeModule + StealthDrive + + Stealth Drive + Textures\GUI\Icons\Cubes\Aryx_AWE_TacticalModule.dds + Allows a ship to enter stealth, becoming almost invisible as well as undetectable by weapon systems. + Large + false + TriangleMesh + + + Models\AWE_Aegis\ARYX_TacticalModule.mwm + + + + + + + + + + + + + + + + + + + + + + + + + StealthDrive + Z + Y + Light + true + BlockModuleEfficiency + Damage_Electrical_Damaged + ParticleElectrical + Default + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + + + + UpgradeModule + StealthDriveSmall + + Stealth Drive + Textures\GUI\Icons\Cubes\Aryx_AWE_TacticalModule.dds + Allows a ship to enter stealth, becoming almost invisible as well as undetectable by weapon systems. + Small + false + TriangleMesh + + + Models\Cubes\small\StealthDriveSmall.mwm + + + + + + + + + + + + + + + + + + + + + + + + + StealthDrive + Z + Y + Light + true + BlockModuleEfficiency + Damage_Electrical_Damaged + ParticleElectrical + Default + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + + + + UpgradeModule + StealthHeatSink + + Heat Sink + Textures\GUI\Icons\Cubes\UpgradeEnergy.dds + Increases the duration a ship can stay in stealth before needing to drop out of stealth to vent heat. + Large + false + TriangleMesh + + + Models\Cubes\large\StealthHeatSink.mwm + + + + + + + + + + + + + + + + + + + + + + StealthHeatSink + Y + X + Light + BlockModuleEfficiency + Damage_Electrical_Damaged + ParticleElectrical + Default + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + + + + UpgradeModule + StealthHeatSinkSmall + + Heat Sink + Textures\GUI\Icons\Cubes\UpgradeEnergy.dds + Increases the duration a ship can stay in stealth before needing to drop out of stealth to vent heat. + Small + false + TriangleMesh + + + Models\Cubes\small\StealthHeatSinkSmall.mwm + + + + + + + + + + + + + + + + + + + + + + StealthHeatSink + Y + X + Light + BlockModuleEfficiency + Damage_Electrical_Damaged + ParticleElectrical + Default + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + + + \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/EntityComponents.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Data/EntityComponents.sbc new file mode 100644 index 000000000..47eb42706 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/EntityComponents.sbc @@ -0,0 +1,13 @@ + + + + + ModStorageComponent + StealthMod + + + 75BBB4F5-4FB9-4230-AAAA-BB79C9811507 + + + + \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Fonts.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Data/Fonts.sbc new file mode 100644 index 000000000..9c285804d --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Fonts.sbc @@ -0,0 +1,34 @@ + + + + + + + FontDefinition + StealthOrange + + + 227 + 69 + 0 + + + + + + + + + + + + + + + + + + + + + diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIBackend.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIBackend.cs new file mode 100644 index 000000000..acc95cd17 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIBackend.cs @@ -0,0 +1,115 @@ +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using IMyTerminalBlock = Sandbox.ModAPI.Ingame.IMyTerminalBlock; +using IMyCubeGrid = VRage.Game.ModAPI.Ingame.IMyCubeGrid; + +namespace StealthSystem +{ + internal class APIBackend + { + internal readonly Dictionary ModApiMethods; + internal Dictionary PbApiMethods; + + private readonly StealthSession _session; + + internal APIBackend(StealthSession session) + { + _session = session; + + ModApiMethods = new Dictionary + { + ["ToggleStealth"] = new Func(ToggleStealth), + ["GetStatus"] = new Func(GetStatus), + ["GetDuration"] = new Func(GetDuration), + ["GetMainDrive"] = new Func(GetMainDrive), + ["GetHeatSinks"] = new Action>(GetHeatSinks), + }; + } + + + internal void PbInit() + { + PbApiMethods = new Dictionary + { + ["ToggleStealth"] = new Func(ToggleStealthPB), + ["GetStatus"] = new Func(GetStatus), + ["GetDuration"] = new Func(GetDuration), + ["GetMainDrive"] = new Func(GetMainDrive), + ["GetHeatSinks"] = new Action>(GetHeatSinksPB), + }; + var pb = MyAPIGateway.TerminalControls.CreateProperty, Sandbox.ModAPI.IMyTerminalBlock>("StealthPbAPI"); + pb.Getter = b => PbApiMethods; + MyAPIGateway.TerminalControls.AddControl(pb); + _session.PbApiInited = true; + } + + private bool ToggleStealth(IMyTerminalBlock block, bool force) + { + DriveComp comp; + if (!_session.DriveMap.TryGetValue(block.EntityId, out comp)) + return false; + + return comp.ToggleStealth(force); + } + + private bool ToggleStealthPB(IMyTerminalBlock block) + { + return ToggleStealth(block, false); + } + + private int GetStatus(IMyTerminalBlock block) + { + DriveComp comp; + if (!_session.DriveMap.TryGetValue(block.EntityId, out comp)) + return 4; + + var status = !comp.Online ? 4 : !comp.SufficientPower ? 3 : comp.CoolingDown ? 2 : comp.StealthActive ? 1 : 0; + return status; + } + + private int GetDuration(IMyTerminalBlock block) + { + DriveComp comp; + if (!_session.DriveMap.TryGetValue(block.EntityId, out comp)) + return 0; + + var duration = comp.StealthActive ? comp.TotalTime - comp.TimeElapsed : comp.CoolingDown ? comp.TimeElapsed : comp.MaxDuration; + return duration; + } + + private Sandbox.ModAPI.IMyTerminalBlock GetMainDrive(IMyCubeGrid grid) + { + GridComp comp; + if (!_session.GridMap.TryGetValue(grid as VRage.Game.ModAPI.IMyCubeGrid, out comp)) + return null; + + return comp.MasterComp?.Block; + } + + private void GetHeatSinksPB(IMyCubeGrid grid, ICollection blocks) + { + GridComp comp; + if (_session.GridMap.TryGetValue(grid as VRage.Game.ModAPI.IMyCubeGrid, out comp)) + { + for (int i = 0; i < comp.HeatComps.Count; i++) + blocks.Add(comp.HeatComps[i].Block); + } + + return; + } + + private void GetHeatSinks(VRage.Game.ModAPI.IMyCubeGrid grid, ICollection blocks) + { + GridComp comp; + if (_session.GridMap.TryGetValue(grid, out comp)) + { + for (int i = 0; i < comp.HeatComps.Count; i++) + blocks.Add(comp.HeatComps[i].Block); + } + + return; + } + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIServer.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIServer.cs new file mode 100644 index 000000000..cc577f3ce --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/Backend/APIServer.cs @@ -0,0 +1,65 @@ +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; + +namespace StealthSystem +{ + internal class APIServer + { + private const long CHANNEL = 2172757427; + + private readonly StealthSession _session; + + internal APIServer(StealthSession session) + { + _session = session; + } + + /// + /// Is the API ready to be serve + /// + public bool IsReady { get; private set; } + + private void HandleMessage(object o) + { + if ((o as string) == "ApiEndpointRequest") + MyAPIGateway.Utilities.SendModMessage(CHANNEL, _session.API.ModApiMethods); + } + + private bool _isRegistered; + + /// + /// Prepares the client to receive API endpoints and requests an update. + /// + public void Load() + { + if (!_isRegistered) + { + _isRegistered = true; + MyAPIGateway.Utilities.RegisterMessageHandler(CHANNEL, HandleMessage); + } + IsReady = true; + try + { + MyAPIGateway.Utilities.SendModMessage(CHANNEL, _session.API.ModApiMethods); + + } + catch (Exception ex) { Logs.WriteLine($"Exception in APIServer.Load() - {ex}"); } + } + + + /// + /// Unloads all API endpoints and detaches events. + /// + public void Unload() + { + if (_isRegistered) + { + _isRegistered = false; + MyAPIGateway.Utilities.UnregisterMessageHandler(CHANNEL, HandleMessage); + } + IsReady = false; + MyAPIGateway.Utilities.SendModMessage(CHANNEL, new Dictionary()); + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI.cs new file mode 100644 index 000000000..61b82f6a2 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI.cs @@ -0,0 +1,119 @@ +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using VRage.Game.ModAPI; + +namespace StealthSystem +{ + internal class StealthAPI + { + /// Returns true if drive status was toggled successfully. + /// Ignore power requirements and overheat. + public bool ToggleStealth(IMyTerminalBlock drive, bool force) => _toggleStealth?.Invoke(drive, force) ?? false; + + /// Returns status of drive. 0 = Ready, 1 = Active, 2 = Cooldown, 3 = Not enough power, 4 = Offline + public int GetStatus(IMyTerminalBlock drive) => _getStatus?.Invoke(drive) ?? 4; + + /// Returns remaining duration of stealth/cooldown. + public int GetDuration(IMyTerminalBlock drive) => _getDuration?.Invoke(drive) ?? 0; + + /// Retuns active stealth drive on grid if one exists, otherwise returns null. + public IMyTerminalBlock GetMainDrive(IMyCubeGrid grid) => _getMainDrive?.Invoke(grid); + + /// Collection to populate with heat sinks on grid. + public void GetHeatSinks(IMyCubeGrid grid, ICollection sinks) => _getHeatSinks?.Invoke(grid, sinks); + + + + private const long CHANNEL = 2172757427; + private bool _isRegistered; + private bool _apiInit; + private Action _readyCallback; + + private Func _toggleStealth; + private Func _getStatus; + private Func _getDuration; + private Func _getMainDrive; + private Action> _getHeatSinks; + + public bool IsReady { get; private set; } + + + /// + /// Ask CoreSystems to send the API methods. + /// Throws an exception if it gets called more than once per session without . + /// + /// Method to be called when CoreSystems replies. + public void Load(Action readyCallback = null) + { + if (_isRegistered) + throw new Exception($"{GetType().Name}.Load() should not be called multiple times!"); + + _readyCallback = readyCallback; + _isRegistered = true; + MyAPIGateway.Utilities.RegisterMessageHandler(CHANNEL, HandleMessage); + MyAPIGateway.Utilities.SendModMessage(CHANNEL, "ApiEndpointRequest"); + } + + public void Unload() + { + MyAPIGateway.Utilities.UnregisterMessageHandler(CHANNEL, HandleMessage); + + ApiAssign(null); + + _isRegistered = false; + _apiInit = false; + IsReady = false; + } + + private void HandleMessage(object obj) + { + if (_apiInit || obj is string + ) // the sent "ApiEndpointRequest" will also be received here, explicitly ignoring that + return; + + var dict = obj as IReadOnlyDictionary; + + if (dict == null) + return; + + ApiAssign(dict); + + IsReady = true; + _readyCallback?.Invoke(); + } + + public void ApiAssign(IReadOnlyDictionary delegates) + { + _apiInit = (delegates != null); + /// base methods + AssignMethod(delegates, "ToggleStealth", ref _toggleStealth); + AssignMethod(delegates, "GetStatus", ref _getStatus); + AssignMethod(delegates, "GetDuration", ref _getDuration); + AssignMethod(delegates, "GetMainDrive", ref _getMainDrive); + AssignMethod(delegates, "GetHeatSinks", ref _getHeatSinks); + } + + private void AssignMethod(IReadOnlyDictionary delegates, string name, ref T field) + where T : class + { + if (delegates == null) + { + field = null; + return; + } + + Delegate del; + if (!delegates.TryGetValue(name, out del)) + throw new Exception($"{GetType().Name} :: Couldn't find {name} delegate of type {typeof(T)}"); + + field = del as T; + + if (field == null) + throw new Exception( + $"{GetType().Name} :: Delegate {name} is not type {typeof(T)}, instead it's: {del.GetType()}"); + } + + } + +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI_PB.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI_PB.cs new file mode 100644 index 000000000..e31056e7e --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/API/StealthAPI_PB.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using Sandbox.ModAPI.Interfaces; + +namespace StealthSystem +{ + internal class StealthPbAPI + { + /// Returns true if drive status was toggled successfully. + public bool ToggleStealth(Sandbox.ModAPI.Ingame.IMyTerminalBlock drive) => _toggleStealth?.Invoke(drive) ?? false; + + /// Returns status of drive. 0 = Ready, 1 = Active, 2 = Cooldown, 3 = Not enough power, 4 = Offline + public int GetStatus(Sandbox.ModAPI.Ingame.IMyTerminalBlock drive) => _getStatus?.Invoke(drive) ?? 4; + + /// Returns remaining duration of stealth/cooldown. + public int GetDuration(Sandbox.ModAPI.Ingame.IMyTerminalBlock drive) => _getDuration?.Invoke(drive) ?? 0; + + /// Retuns active stealth drive on grid if one exists, otherwise returns null. + public Sandbox.ModAPI.Ingame.IMyTerminalBlock GetMainDrive(VRage.Game.ModAPI.Ingame.IMyCubeGrid grid) => _getMainDrive?.Invoke(grid); + + /// Collection to populate with heat sinks on grid. + public void GetHeatSinks(VRage.Game.ModAPI.Ingame.IMyCubeGrid grid, ICollection sinks) => _getHeatSinks?.Invoke(grid, sinks); + + + + + private Func _toggleStealth; + private Func _getStatus; + private Func _getDuration; + private Func _getMainDrive; + private Action> _getHeatSinks; + + public bool Activate(Sandbox.ModAPI.Ingame.IMyTerminalBlock pbBlock) + { + var dict = pbBlock.GetProperty("StealthPbAPI")?.As>().GetValue(pbBlock); + if (dict == null) throw new Exception("StealthPbAPI failed to activate"); + return ApiAssign(dict); + } + + public bool ApiAssign(IReadOnlyDictionary delegates) + { + if (delegates == null) + return false; + + AssignMethod(delegates, "ToggleStealth", ref _toggleStealth); + AssignMethod(delegates, "GetStatus", ref _getStatus); + AssignMethod(delegates, "GetDuration", ref _getDuration); + AssignMethod(delegates, "GetMainDrive", ref _getMainDrive); + AssignMethod(delegates, "GetHeatSinks", ref _getHeatSinks); + return true; + } + + private void AssignMethod(IReadOnlyDictionary delegates, string name, ref T field) where T : class + { + if (delegates == null) + { + field = null; + return; + } + + Delegate del; + if (!delegates.TryGetValue(name, out del)) + throw new Exception($"{GetType().Name} :: Couldn't find {name} delegate of type {typeof(T)}"); + + field = del as T; + if (field == null) + throw new Exception( + $"{GetType().Name} :: Delegate {name} is not type {typeof(T)}, instead it's: {del.GetType()}"); + } + + } + +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/CompData.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/CompData.cs new file mode 100644 index 000000000..1ebec4775 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/CompData.cs @@ -0,0 +1,486 @@ +using ProtoBuf; +using Sandbox.ModAPI; +using System; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using System.Collections.Generic; +using VRageMath; +using Sandbox.Game.Entities; + +namespace StealthSystem +{ + + [ProtoContract] + public class DriveRepo + { + [ProtoMember(1)] public bool StealthActive; + [ProtoMember(2)] public bool CoolingDown; + [ProtoMember(3)] public int RemainingDuration; //TimeElapsed + [ProtoMember(4)] public int TotalTime; + + + public void Sync(DriveComp comp) + { + StealthActive = comp.StealthActive; + CoolingDown = comp.CoolingDown; + //RemainingDuration = comp.RemainingDuration; + RemainingDuration = comp.TimeElapsed; + TotalTime = comp.TotalTime; + } + + } + + [ProtoContract] + public class SinkRepo + { + [ProtoMember(1)] public bool Accumulating; + [ProtoMember(2)] public bool Radiating; + [ProtoMember(3)] public byte HeatPercent; + + + public void Sync(SinkComp comp) + { + Accumulating = comp.Accumulating; + Radiating = comp.Radiating; + HeatPercent = comp.HeatPercent; + } + + } + + internal class WaterData + { + public WaterData(MyPlanet planet) + { + Planet = planet; + WaterId = planet.EntityId; + } + + internal MyPlanet Planet; + internal long WaterId; + internal Vector3D Centre; + internal float Radius; + } + + internal class GridComp + { + internal List StealthComps = new List(); + internal List HeatComps = new List(); + + internal List ShieldBlocks = new List(); + internal List Turrets; + + internal DriveComp MasterComp; + internal GroupMap GroupMap; + internal IMyCubeGrid Grid; + internal MyPlanet Planet; + internal BoundingSphereD Water; + + internal bool GroupsDirty; + internal bool Revealed; + internal bool Underwater; + internal bool WaterValid = true; + internal bool DisableShields; + internal bool DisableWeapons; + + internal int DamageTaken; + internal int SinkBonus; + + private StealthSession _session; + + internal void Init(IMyCubeGrid grid, StealthSession session) + { + _session = session; + + Grid = grid; + + Grid.OnBlockAdded += BlockAdded; + Grid.OnBlockRemoved += BlockRemoved; + + DisableShields = _session.DisableShields; + DisableWeapons = _session.DisableWeapons && !_session.WcActive; + + if (DisableWeapons) Turrets = new List(); + + var group = MyAPIGateway.GridGroups.GetGridGroup(GridLinkTypeEnum.Physical, grid); + if (group != null) + { + GroupMap map; + if (_session.GridGroupMap.TryGetValue(group, out map)) + GroupMap = map; + } + else Logs.WriteLine("group null at GridComp.Init()"); + + GroupsDirty = true; + + if (!DisableShields && !DisableWeapons) return; + + var blocks = grid.GetFatBlocks(); + foreach (var block in blocks) + { + if (block?.BlockDefinition == null) continue; + + if (DisableShields && _session.ShieldBlocks.Contains(block.BlockDefinition.SubtypeName)) + ShieldBlocks.Add(block as IMyFunctionalBlock); + + if (DisableWeapons && block is IMyUserControllableGun) + Turrets.Add(block as IMyUserControllableGun); + } + + if (_session.TrackWater) + { + Planet = MyGamePruningStructure.GetClosestPlanet(Grid.PositionComp.WorldAABB.Center); + + WaterData waterData; + if (Planet != null && _session.WaterMap.TryGetValue(Planet.EntityId, out waterData)) + { + Water = new BoundingSphereD(waterData.Centre, waterData.Radius + _session.WaterTransitionDepth); + + var planetVector = Grid.PositionComp.WorldAABB.Center - waterData.Centre; + var radius = waterData.Radius + _session.WaterTransitionDepth; + var radiusSqr = radius * radius; + if (planetVector.LengthSquared() < radiusSqr) + { + Underwater = true; + + var obb = new MyOrientedBoundingBoxD(Grid.PositionComp.LocalAABB, Grid.PositionComp.WorldMatrixRef); + obb.GetCorners(_session.ObbCorners, 0); + for (int j = 0; j < 8; j++) + { + var corner = _session.ObbCorners[j]; + planetVector = corner = waterData.Centre; + if (planetVector.LengthSquared() > radiusSqr) + { + Underwater = false; + break; + } + } + } + WaterValid = Underwater == _session.WorkInWater; + } + } + } + + private void BlockAdded(IMySlimBlock slim) + { + if (slim.FatBlock == null) return; + + var fat = slim.FatBlock; + if (fat is IMyUpgradeModule) + { + var module = fat as IMyUpgradeModule; + if (_session.DriveDefinitions.ContainsKey(module.BlockDefinition.SubtypeName)) + { + if (!_session.DriveMap.ContainsKey(module.EntityId)) + { + Logs.WriteLine("BlockAdded() - Drive not in map!"); + return; + } + + var dComp = _session.DriveMap[module.EntityId]; + + if (!dComp.Inited) + { + Logs.WriteLine("BlockAdded() - Drive not yet Inited!"); + return; + } + + var gridComp = _session.GridMap[Grid]; + + if (gridComp.StealthComps.Contains(dComp)) + { + Logs.WriteLine("BlockAdded() - Drive already in correct GridComp!"); + return; + } + + try + { + dComp.GridChange(); + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in GridChange() {ex}"); + } + } + } + + if (DisableShields && _session.ShieldBlocks.Contains(fat.BlockDefinition.SubtypeName)) + ShieldBlocks.Add(fat as IMyFunctionalBlock); + + if (DisableWeapons && fat is IMyUserControllableGun) + Turrets.Add(fat as IMyUserControllableGun); + } + + private void BlockRemoved(IMySlimBlock slim) + { + if (slim.FatBlock == null) return; + + var func = slim.FatBlock as IMyFunctionalBlock; + if (DisableShields && func != null && ShieldBlocks.Contains(func)) + ShieldBlocks.Remove(func); + + var wep = func as IMyUserControllableGun; + if (DisableWeapons && wep != null && Turrets.Contains(wep)) + Turrets.Remove(wep); + } + + internal void Clean() + { + Grid.OnBlockAdded -= BlockAdded; + Grid.OnBlockRemoved -= BlockRemoved; + + StealthComps.Clear(); + HeatComps.Clear(); + ShieldBlocks.Clear(); + + if (DisableWeapons) Turrets.Clear(); + + MasterComp = null; + GroupMap = null; + Grid = null; + + GroupsDirty = false; + Revealed = false; + DamageTaken = 0; + + _session = null; + } + } + + internal class GroupMap + { + private StealthSession _session; + + public IMyGridGroupData GroupData; + + internal List ConnectedGrids = new List(); + + internal List SlimBlocks = new List(); + internal HashSet Children = new HashSet(); + + internal void Init(IMyGridGroupData data, StealthSession session) + { + GroupData = data; + + _session = session; + } + + public void OnGridAdded(IMyGridGroupData newGroup, IMyCubeGrid grid, IMyGridGroupData oldGroup) + { + try + { + ConnectedGrids.Add(grid); + + GridComp gridComp; + if (!_session.GridMap.TryGetValue(grid, out gridComp)) + return; + + gridComp.GroupMap = this; + gridComp.GroupsDirty = true; + + bool thisActive = false; + var thisMaster = gridComp.MasterComp; + if (thisMaster != null && thisMaster.StealthActive) //Added grid has active drive + thisActive = true; + else if (((uint)grid.Flags & StealthSession.IsStealthedFlag) > 0) //Added grid is being stealthed by another grid + return; + + var newSubgrids = new List(); + GridComp subgridComp; + DriveComp subgridMaster = null; + + GroupData.GetGrids(newSubgrids); + for (int i = 0; i < newSubgrids.Count; i++) + { + var newSubgrid = newSubgrids[i]; + if (newSubgrid == grid) continue; + + if (thisActive) + { + if (((uint)newSubgrid.Flags & StealthSession.IsStealthedFlag) > 0) continue; //Other grid already stealthed + + newSubgrid.Flags |= _session.StealthFlag; + + if (!_session.IsDedicated && !thisMaster.VisibleToClient) + StealthConnectedGrid(newSubgrid, thisMaster, true); + + //continue; + } + + if (!_session.GridMap.TryGetValue(newSubgrid, out subgridComp)) + continue; + + if (thisActive) //Reenable shield emitters/vanilla turrets since previously connected grid is no longer stealthed + { + if (gridComp.DisableShields) + thisMaster.DisableShields(subgridComp); + + if (gridComp.DisableWeapons) + thisMaster.DisableTurrets(subgridComp); + + continue; + } + + subgridMaster = subgridComp.MasterComp; + if (subgridMaster == null) continue; + + if (subgridMaster.StealthActive) //Other grid has active drive so stealth this grid + { + grid.Flags |= _session.StealthFlag; + + if (!_session.IsDedicated && !subgridMaster.VisibleToClient) + StealthConnectedGrid(grid, subgridMaster, true); + + if (gridComp.DisableShields) + subgridMaster.DisableShields(gridComp); + + if (gridComp.DisableWeapons) + subgridMaster.DisableTurrets(gridComp); + + return; + } + } + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in OnGridAdded(): {ex}"); + } + + } + + public void OnGridRemoved(IMyGridGroupData oldGroup, IMyCubeGrid grid, IMyGridGroupData newGroup) + { + try + { + ConnectedGrids.Remove(grid); + + GridComp gridComp; + if (!_session.GridMap.TryGetValue(grid, out gridComp)) + return; + + gridComp.GroupsDirty = true; + + bool thisActive = false; + var thisMaster = gridComp.MasterComp; + if (thisMaster != null && thisMaster.StealthActive) //Removed grid has active drive + thisActive = true; + //else if (((uint)grid.Flags & IsStealthedFlag) > 0) + // return; + + var formerSubgrids = new List(); + GridComp subgridComp; + DriveComp subgridMaster = null; + + GroupData.GetGrids(formerSubgrids); + for (int i = 0; i < formerSubgrids.Count; i++) + { + var formerSubgrid = formerSubgrids[i]; + if (formerSubgrid == grid) continue; + + if (thisActive) //Unstealth previously connected grid since this grid was providing stealth + { + formerSubgrid.Flags ^= _session.StealthFlag; + + if (!_session.IsDedicated) + StealthConnectedGrid(formerSubgrid, thisMaster, false); + } + + if (!_session.GridMap.TryGetValue(formerSubgrid, out subgridComp)) + continue; + + if (thisActive) //Reenable shield emitters/vanilla turrets since previously connected grid is no longer stealthed + { + if (gridComp.DisableShields) + thisMaster.ReEnableShields(subgridComp); + + if (gridComp.DisableWeapons) + thisMaster.ReEnableTurrets(subgridComp); + + continue; + } + + //We only keep going if the removed grid wasn't providing stealth + //We check if the grid it was connected to was stealthing it + + subgridMaster = subgridComp.MasterComp; + if (subgridMaster == null) continue; + + if (subgridMaster.StealthActive) //Connected grid was providing stealth so destealth this + { + grid.Flags ^= _session.StealthFlag; + + if (!_session.IsDedicated) + StealthConnectedGrid(grid, subgridMaster, false); + + if (gridComp.DisableShields) + subgridMaster.ReEnableShields(gridComp); + + if (gridComp.DisableWeapons) + subgridMaster.ReEnableTurrets(gridComp); + + return; + } + } + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in OnGridRemoved(): {ex}"); + } + + } + + internal void StealthConnectedGrid(IMyCubeGrid grid, DriveComp comp, bool stealth) + { + if (stealth) _session.StealthedGrids.Add(grid); + else _session.StealthedGrids.Remove(grid); + + grid.GetBlocks(SlimBlocks); + + var dither = stealth ? _session.Transparency : 0f; + foreach (var slim in SlimBlocks) + { + var fatBlock = slim.FatBlock; + if (fatBlock == null) + { + slim.Dithering = dither; + continue; + } + + fatBlock.Render.Transparency = dither; + fatBlock.Render.UpdateTransparency(); + + fatBlock.Hierarchy.GetChildrenRecursive(Children); + foreach (var child in Children) + { + child.Render.Transparency = dither; + child.Render.UpdateTransparency(); + } + Children.Clear(); + + //var cockpit = fatBlock as IMyCockpit; + //if (cockpit != null && cockpit.Pilot != null) + // cockpit.Pilot.Render.Visible = !add; + + var jump = fatBlock as IMyJumpDrive; + if (jump != null) + { + if (stealth) comp.JumpDrives.Add(jump, jump.CurrentStoredPower); + else comp.JumpDrives.Remove(jump); + } + } + SlimBlocks.Clear(); + } + + internal void Clean() + { + GroupData = null; + + ConnectedGrids.Clear(); + + SlimBlocks.Clear(); + Children.Clear(); + + _session = null; + } + } + +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/DriveComp.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/DriveComp.cs new file mode 100644 index 000000000..89ea57241 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/DriveComp.cs @@ -0,0 +1,1068 @@ +using Sandbox.ModAPI; +using System; +using VRage.Game; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using VRageMath; +using VRage.Utils; +using Sandbox.Game.Entities; +using SpaceEngineers.Game.ModAPI; +using VRage.Game.Entity; +using System.Collections.Generic; +using Sandbox.Game.EntityComponents; +using System.Text; +using Sandbox.ModAPI.Interfaces.Terminal; +using System.Collections.Concurrent; +using Sandbox.ModAPI.Interfaces; + +namespace StealthSystem +{ + public class DriveComp : MyEntityComponentBase + { + internal IMyFunctionalBlock Block; + internal IMyCubeGrid Grid; + internal MyResourceSinkComponent Sink; + internal MyResourceDistributorComponent Source; + internal IMyTerminalControlOnOffSwitch ShowInToolbarSwitch; + internal IMyGps HeatSignature; + + internal DriveRepo Repo; + internal GridComp GridComp; + internal Definitions.DriveDefinition Definition; + + //internal List ConnectedGrids = new List(); + internal List SlimBlocks = new List(); + internal List FadeEntities = new List(); + internal List FadeSlims = new List(); + internal HashSet Children = new HashSet(); + internal HashSet StealthedExternalGrids = new HashSet(); + internal Dictionary JumpDrives = new Dictionary(); + internal ConcurrentDictionary DisabledBlocks = new ConcurrentDictionary(); + internal List ReplicatedClients = new List(); + internal HashSet PreviousEntities = new HashSet(); + internal HashSet CurrentEntities = new HashSet(); + + internal List NearbyTurrets; + internal MyOrientedBoundingBoxD ExpandedOBB; + internal Color OldColour; + + internal bool IsPrimary; + internal bool Inited; + internal bool Online; + internal bool CoolingDown; + internal bool SufficientPower; + internal bool StealthActive; + internal bool EnterStealth; + internal bool ExitStealth; + internal bool VisibleToClient; + internal bool Fading; + internal bool GridUpdated; + internal bool BlocksDirty; + internal bool PowerDirty; + internal bool TransferFailed; + internal bool StealthOnInit; + internal bool CdOnInit; + internal bool Transfer; + internal bool ShieldWaiting; + internal bool IgnorePower; + + internal int Fade; + internal int ShieldWait; + internal int SurfaceArea; + internal int MaxDuration; + internal int RemainingDuration; + internal int TimeElapsed; + internal int TotalTime; + internal long CompTick15; + internal long CompTick60; + internal long SignalDistance; + internal long SignalDistanceSquared; + + internal float RequiredPower; + internal float Transparency; + internal float TransOffset = -0.35f; + + private readonly StealthSession _session; + + private List _entities; + private BoundingSphereD _sphere; + private readonly Vector3D[] _obbCorners = new Vector3D[8]; + + internal DriveComp(IMyFunctionalBlock stealthBlock, Definitions.DriveDefinition def, StealthSession session) + { + _session = session; + + Block = stealthBlock; + Definition = def; + + Transparency = -_session.Transparency; + + if (!_session.WcActive) + { + NearbyTurrets = new List(); + _entities = new List(); + _sphere = new BoundingSphereD(Vector3D.Zero, 1200); + } + } + + public override void OnAddedToContainer() + { + base.OnAddedToContainer(); + } + + public override void OnAddedToScene() + { + base.OnAddedToScene(); + + if (!MyAPIGateway.Session.IsServer) StealthSession.SendPacketToServer(new ReplicationPacket { EntityId = Block.EntityId, Fresh = true, Type = PacketType.Replicate }); + } + + public override void OnBeforeRemovedFromContainer() + { + base.OnBeforeRemovedFromContainer(); + + Close(); + } + + public override bool IsSerialized() + { + if (Block.Storage == null || Repo == null) return false; + + Repo.Sync(this); + + Block.Storage[_session.CompDataGuid] = Convert.ToBase64String(MyAPIGateway.Utilities.SerializeToBinary(Repo)); + + return false; + } + + internal void Init() + { + Grid = Block.CubeGrid; + if (Grid == null) + { + Logs.WriteLine("DriveComp.Init() - Grid null"); + return; + } + + var gridData = _session.GridMap[Grid]; + if (gridData.StealthComps.Count == 1) + { + IsPrimary = true; + GridComp = gridData; + gridData.MasterComp = this; + } + + Block.Components.Add(this); + CompTick15 = Block.EntityId % 15; + CompTick60 = Block.EntityId % 60; + + SinkInit(); + StorageInit(); + + Inited = true; + GridUpdated = true; + VisibleToClient = true; + + Grid.OnGridSplit += GridSplit; + Grid.OnBlockAdded += BlockAdded; + Grid.OnBlockRemoved += BlockRemoved; + + Block.EnabledChanged += EnabledChanged; + Source.SystemChanged += SourceChanged; + + if (!_session.IsDedicated) + { + GetShowInToolbarSwitch(); + Block.AppendingCustomInfo += AppendingCustomData; + } + + if (!MyAPIGateway.Session.IsServer) + StealthSession.SendPacketToServer(new ReplicationPacket { EntityId = Block.EntityId, Fresh = true, Type = PacketType.Replicate }); + } + + internal void Close() + { + if (Transfer) return; + + if (IsPrimary) + TransferPrimary(true); + + _session.DriveMap.Remove(Block.EntityId); + + GridComp gridComp; + if (_session.GridMap.TryGetValue(Grid, out gridComp)) + { + gridComp.StealthComps.Remove(this); + } + + Grid.OnGridSplit -= GridSplit; + Grid.OnBlockAdded -= BlockAdded; + Grid.OnBlockRemoved -= BlockRemoved; + + Block.EnabledChanged -= EnabledChanged; + + if (Source != null) + Source.SystemChanged -= SourceChanged; + else Logs.WriteLine("Source null on close"); + + if (StealthActive && !VisibleToClient) + { + SwitchStealth(false); + + foreach (var entity in PreviousEntities) + { + if (entity == null) + { + Logs.WriteLine($"Previous entity null on close"); + continue; + } + + if (!_session.IsDedicated) + { + if (entity is IMyCubeGrid) + StealthExternalGrid(false, entity as IMyCubeGrid); + else + entity.Render.Visible = true; + } + + entity.Flags ^= _session.StealthFlag; + } + } + + if (HeatSignature != null) + MyAPIGateway.Session.GPS.RemoveLocalGps(HeatSignature); + + if (!_session.IsDedicated) + Block.AppendingCustomInfo -= AppendingCustomData; + + if (!MyAPIGateway.Session.IsServer) + StealthSession.SendPacketToServer(new ReplicationPacket { EntityId = Block.EntityId, Fresh = false, Type = PacketType.Replicate }); + + Clean(); + } + + internal void Clean() + { + Block = null; + Grid = null; + Sink = null; + Source = null; + ShowInToolbarSwitch = null; + HeatSignature = null; + + Repo = null; + GridComp = null; + + //ConnectedGrids = null; + SlimBlocks = null; + FadeEntities = null; + FadeSlims = null; + StealthedExternalGrids = null; + JumpDrives = null; + DisabledBlocks = null; + ReplicatedClients = null; + PreviousEntities = null; + CurrentEntities = null; + NearbyTurrets = null; + } + + internal void GridChange() + { + Grid.OnGridSplit -= GridSplit; + Grid.OnBlockAdded -= BlockAdded; + Grid.OnBlockRemoved -= BlockRemoved; + + if (StealthActive) + SwitchStealth(false, true); + + var gridData = _session.GridMap[Grid]; + if (TransferPrimary(true)) + { + var newPrimary = gridData.MasterComp; + newPrimary.IsPrimary = true; + //newPrimary.RemainingDuration = StealthActive ? MaxDuration - RemainingDuration : RemainingDuration; + //newPrimary.CoolingDown = RemainingDuration > 0; + newPrimary.TotalTime = TotalTime; + newPrimary.TimeElapsed = TimeElapsed; + newPrimary.CoolingDown = TimeElapsed < TotalTime; + + } + + gridData.StealthComps.Remove(this); + + Grid = Block.CubeGrid; + + //if (StealthActive) + // Grid.Visible = false; + + var newGridData = _session.GridMap[Block.CubeGrid]; + GridComp = newGridData; + newGridData.StealthComps.Add(this); + if (newGridData.MasterComp == null) + { + newGridData.MasterComp = this; + IsPrimary = true; + } + else + { + IsPrimary = false; + } + + Grid.OnGridSplit += GridSplit; + Grid.OnBlockAdded += BlockAdded; + Grid.OnBlockRemoved += BlockRemoved; + + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + CalculatePowerRequirements(); + UpdateStatus(true); + + Transfer = false; + } + + internal bool TransferPrimary(bool force) + { + var gridData = _session.GridMap[Grid]; + + if (gridData.StealthComps.Count <= 1) + return false; + + DriveComp newPrimary = null; + for (int i = 0; i < gridData.StealthComps.Count; i++) + { + var comp = gridData.StealthComps[i]; + + if (comp == this || comp.Block.CubeGrid != Grid) + continue; + + if (comp.Block.IsFunctional) + { + newPrimary = comp; + break; + } + + if (force && newPrimary == null) + newPrimary = comp; + } + + if (newPrimary == null) + return false; + + IsPrimary = false; + newPrimary.IsPrimary = true; + gridData.MasterComp = newPrimary; + return true; + } + + private void SourceChanged() + { + PowerDirty = true; + GridUpdated = true; + } + + private void EnabledChanged(IMyTerminalBlock block) + { + UpdateStatus(); + block.RefreshCustomInfo(); + } + + private void GridSplit(IMyCubeGrid grid1, IMyCubeGrid grid2) + { + GridUpdated = true; + BlocksDirty = true; + } + + private void BlockAdded(IMySlimBlock slim) + { + GridUpdated = true; + BlocksDirty = true; + + if (StealthActive) + DitherBlock(true, slim); + } + + private void BlockRemoved(IMySlimBlock slim) + { + GridUpdated = true; + BlocksDirty = true; + + if (StealthActive) + DitherBlock(false, slim); + } + + private void AppendingCustomData(IMyTerminalBlock block, StringBuilder builder) + { + var status = !IsPrimary ? "Standby" + : !Online ? "Offline" + : !SufficientPower ? "Insufficient Power" + : CoolingDown ? "Cooling Down" + : !GridComp.WaterValid ? _session.WorkInWater ? "Not Submerged" : "Submerged" + : StealthActive ? "Stealth Engaged" + : "Ready"; + + builder.Append("Drive Status: ") + .Append(status) + .Append("\n"); + + if (!IsPrimary) return; + + if (Online) + { + if (!StealthActive && !CoolingDown) + builder.Append($"Stealth Duration: {MaxDuration / 60}s \n"); + + builder.Append($"Surface Area: {SurfaceArea} blocks square \n") + .Append($"Required Power: {RequiredPower.ToString("F1")}MW \n") + .Append($"Detection Radius: {SignalDistance}m \n"); + } + + if (StealthActive) + { + int timeLeft = (TotalTime - TimeElapsed) / 60; + int seconds = timeLeft % 60; + int minutes = (timeLeft - seconds) / 60; + builder.Append("Time Remaining: ") + .Append($"{minutes.ToString("00")}:{seconds.ToString("00")}\n"); + } + + if (CoolingDown) + { + int timeLeft = (TimeElapsed) / 60; + int seconds = timeLeft % 60; + int minutes = (timeLeft - seconds) / 60; + builder.Append("Time Remaining: ") + .Append($"{minutes.ToString("00")}:{seconds.ToString("00")}\n"); + } + } + + internal void UpdateStatus(bool gridChange = false) + { + if (PowerDirty || Source == null) + { + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + PowerDirty = false; + } + var available = Source.MaxAvailableResourceByType(MyResourceDistributorComponent.ElectricityId, (MyCubeGrid)Grid) - Source.TotalRequiredInputByType(MyResourceDistributorComponent.ElectricityId, (MyCubeGrid)Grid); + SufficientPower = StealthActive ? available >= 0 : available >= RequiredPower; + Online = Block.IsFunctional && Block.Enabled && available > 0; + + if (!_session.IsDedicated) + SetEmissiveColor(gridChange); + } + + internal void SetEmissiveColor(bool force) + { + var emissiveColor = !Block.IsFunctional ? Color.Black : !Online ? EmissiveValues.RED : StealthActive ? Color.Cyan : CoolingDown ? Color.OrangeRed : EmissiveValues.GREEN; + if (!force && emissiveColor == OldColour) + return; + + OldColour = emissiveColor; + Block.SetEmissiveParts(StealthSession.STATUS_EMISSIVE, emissiveColor, 1f); + } + + internal void RefreshTerminal() + { + Block.RefreshCustomInfo(); + + if (ShowInToolbarSwitch != null) + { + var originalSetting = ShowInToolbarSwitch.Getter(Block); + ShowInToolbarSwitch.Setter(Block, !originalSetting); + ShowInToolbarSwitch.Setter(Block, originalSetting); + } + } + + internal void CalculatePowerRequirements() + { + //ConnectedGrids.Clear(); + //MyAPIGateway.GridGroups.GetGroup(Grid, GridLinkTypeEnum.Physical, ConnectedGrids); + + CalculateExpandedOBB(); + var scale = Grid.GridSizeEnum == MyCubeSize.Large ? 6.25 : 0.25; + var areaMetres = (int)OBBSurfaceArea(ExpandedOBB); + SurfaceArea = (int)(areaMetres / scale); + + RequiredPower = areaMetres * Definition.PowerScale; + SignalDistance = (int)(RequiredPower * Definition.SignalRangeScale); + SignalDistanceSquared = SignalDistance * SignalDistance; + + } + + internal void CalculateExpandedOBB() + { + var worldMat = Grid.PositionComp.WorldMatrixRef; + var halfExtents = (Vector3D)Grid.PositionComp.LocalAABB.HalfExtents; + var newCentre = Grid.PositionComp.WorldAABB.Center; + + var left = worldMat.Left; + var up = worldMat.Up; + var back = worldMat.Backward; + + var grids = GridComp.GroupMap.ConnectedGrids; + for (int i = 0; i < grids.Count; i++) + { + var cGrid = grids[i]; + if (cGrid == Grid) continue; + + var obb = new MyOrientedBoundingBoxD(cGrid.PositionComp.LocalAABB, cGrid.PositionComp.WorldMatrixRef); + obb.GetCorners(_obbCorners, 0); + for (int j = 0; j < 8; j++) + { + var point = _obbCorners[j]; + var offset = point - newCentre; + if (offset.LengthSquared() < Math.Pow(halfExtents.Min(), 2)) + continue; + + var xDot = Vector3D.Dot(offset, left); + var xAbs = Math.Abs(xDot); + if (xAbs > halfExtents.X) + { + var dist = (xAbs - halfExtents.X) / 2; + halfExtents.X += dist; + newCentre += left * dist * Math.Sign(xDot); + } + + var yDot = Vector3D.Dot(offset, up); + var yAbs = Math.Abs(yDot); + if (yAbs > halfExtents.Y) + { + var dist = (yAbs - halfExtents.Y) / 2; + halfExtents.Y += dist; + newCentre += up * dist * Math.Sign(yDot); + } + + var zDot = Vector3D.Dot(offset, back); + var zAbs = Math.Abs(zDot); + if (zAbs > halfExtents.Z) + { + var dist = (zAbs - halfExtents.Z) / 2; + halfExtents.Z += dist; + newCentre += back * dist * Math.Sign(zDot); + } + } + } + + var orientation = Quaternion.CreateFromRotationMatrix(worldMat); + ExpandedOBB = new MyOrientedBoundingBoxD(newCentre, halfExtents, orientation); + + } + + internal double OBBSurfaceArea(MyOrientedBoundingBoxD obb) + { + var halfExtent = obb.HalfExtent; + + return 8 * (halfExtent.X * halfExtent.Y + halfExtent.X * halfExtent.Z + halfExtent.Y * halfExtent.Z); + } + + internal void PrepGrids(bool set) + { + //ConnectedGrids.Clear(); + //MyAPIGateway.GridGroups.GetGroup(Grid, GridLinkTypeEnum.Physical, ConnectedGrids); + + var grids = GridComp.GroupMap.ConnectedGrids; + for (int i = 0; i < grids.Count; i++) + { + var grid = grids[i]; + var comp = _session.GridMap[grid]; + + if (set) + { + grid.Flags |= _session.StealthFlag; + _session.StealthedGrids.Add(grid); + + if (GridComp.DisableShields) + DisableShields(comp); + + if (GridComp.DisableWeapons) + DisableTurrets(comp); + } + else + { + grid.Flags ^= _session.StealthFlag; + _session.StealthedGrids.Remove(grid); + + if (GridComp.DisableWeapons) + ReEnableTurrets(comp); + } + } + + if (!set && _session.DisableShields) + { + ShieldWait = _session.ShieldDelay; + ShieldWaiting = true; + } + + } + + internal void DisableShields(GridComp comp) + { + for (int j = 0; j < comp.ShieldBlocks.Count; j++) + { + var block = comp.ShieldBlocks[j]; + + DisabledBlocks[block] = block.Enabled; + + block.Enabled = false; + block.EnabledChanged += OnEnabledChanged; + } + } + + internal void DisableTurrets(GridComp comp) + { + for (int j = 0; j < comp.Turrets.Count; j++) + { + var block = comp.Turrets[j]; + + DisabledBlocks[block] = block.Enabled; + + block.Enabled = false; + block.EnabledChanged += OnEnabledChanged; + } + } + + internal void ReEnableShields(GridComp comp) + { + for (int j = 0; j < comp.ShieldBlocks.Count; j++) + { + var block = comp.ShieldBlocks[j]; + + bool wasEnabled; + if (!DisabledBlocks.TryGetValue(block, out wasEnabled)) + continue; + + block.EnabledChanged -= OnEnabledChanged; + block.Enabled = wasEnabled; + + DisabledBlocks.Remove(block); + } + } + + internal void ReEnableTurrets(GridComp comp) + { + for (int j = 0; j < comp.Turrets.Count; j++) + { + var block = comp.Turrets[j]; + + bool wasEnabled; + if (!DisabledBlocks.TryGetValue(block, out wasEnabled)) + continue; + + block.EnabledChanged -= OnEnabledChanged; + block.Enabled = wasEnabled; + + DisabledBlocks.Remove(block); + } + } + + internal void OnEnabledChanged(IMyTerminalBlock block) + { + (block as IMyFunctionalBlock).Enabled = false; + } + + internal bool ToggleStealth(bool force = false) + { + if (!Online || !StealthActive && !force && (!SufficientPower || CoolingDown || !GridComp.WaterValid)) + { + var status = !Online ? "Drive Offline" + : !SufficientPower ? "Insufficient Power" + : CoolingDown ? $"Drive Cooling Down - {TimeElapsed / 60}s Remaining" + : !GridComp.WaterValid ? _session.WorkInWater ? "Drive not Submerged" + : "Drive Submerged" : ""; + MyAPIGateway.Utilities.ShowNotification(status, 2000, "Red"); + + return false; + } + + EnterStealth = !StealthActive; + ExitStealth = StealthActive; + + var message = EnterStealth ? $"Engaging Stealth - {TotalTime / 60}s Remaining" : $"Disengaging Stealth - {TimeElapsed / 60}s Cooldown"; + var colour = EnterStealth ? "Green" : "StealthOrange"; + MyAPIGateway.Utilities.ShowNotification(message, 2000, colour); + + IgnorePower = force && EnterStealth; + + return true; + } + + internal void SwitchStealth(bool stealth, bool fade = false) + { + if (stealth) + { + var antiAliasEnabled = (uint)MyAPIGateway.Session?.Config?.AntialiasingMode == 1u; + Transparency = antiAliasEnabled ? -_session.Transparency : -1f; + TransOffset = antiAliasEnabled ? -0.35f : -0.2f; + + JumpDrives.Clear(); + } + + var dither = stealth ? Transparency : 0f; + + if (fade) + { + var steps = _session.FadeSteps; + float fraction = (stealth ? 1 : steps - 1) / (float)steps; + dither = TransOffset + fraction * (Transparency - TransOffset); + + FadeEntities.Clear(); + FadeSlims.Clear(); + } + + for (int i = 0; i < GridComp.GroupMap.ConnectedGrids.Count; i++) + { + var grid = GridComp.GroupMap.ConnectedGrids[i]; + grid.GetBlocks(SlimBlocks); + + for (int j = 0; j < SlimBlocks.Count; j++) + { + var slim = SlimBlocks[j]; + var fatBlock = slim.FatBlock; + if (fatBlock == null || fatBlock is IMyOxygenFarm) + { + slim.Dithering = dither; + if (fade) FadeSlims.Add(slim); + continue; + } + if (fatBlock is MyThrust && _session.HideThrusterFlames) + { + var thrust = (MyThrust)fatBlock; + if (stealth) + { + if (_session.RecolourableThrust) + (thrust as Sandbox.ModAPI.Ingame.IMyTerminalBlock).GetProperty("HideThrustFlames").AsBool().SetValue(fatBlock, true); + else + { + var def = thrust.BlockDefinition; + var flameIdle = def.FlameIdleColor; + var flameFull = def.FlameFullColor; + + def.FlameIdleColor = Vector4.Zero; + def.FlameFullColor = Vector4.Zero; + thrust.Render.UpdateFlameAnimatorData(); + + def.FlameIdleColor = flameIdle; + def.FlameFullColor = flameFull; + } + + } + else if (!fade) + { + if (_session.RecolourableThrust) + (thrust as Sandbox.ModAPI.Ingame.IMyTerminalBlock).GetProperty("HideThrustFlames").AsBool().SetValue(fatBlock, false); + else + thrust.Render.UpdateFlameAnimatorData(); + } + + } + + if (fade) FadeEntities.Add(fatBlock); + + fatBlock.Render.Transparency = dither; + fatBlock.Render.UpdateTransparency(); + + fatBlock.Hierarchy.GetChildrenRecursive(Children); + foreach (var child in Children) + { + if (fade) FadeEntities.Add(child); + + child.Render.Transparency = dither; + child.Render.UpdateTransparency(); + } + Children.Clear(); + + if (stealth) + { + var jump = fatBlock as IMyJumpDrive; + if (jump != null) + JumpDrives.Add(jump, jump.CurrentStoredPower); + } + } + SlimBlocks.Clear(); + } + + if (fade) + { + Fade = Fading ? _session.FadeTime - Fade : _session.FadeTime; + Fading = true; + } + + VisibleToClient = !stealth; + } + + internal void ReCacheBlocks() + { + FadeSlims.Clear(); + FadeEntities.Clear(); + + var grids = GridComp.GroupMap.ConnectedGrids; + for (int i = 0; i < grids.Count; i++) + { + var grid = grids[i]; + grid.GetBlocks(SlimBlocks); + + for (int j = 0; j < SlimBlocks.Count; j++) + { + var slim = SlimBlocks[j]; + + if (slim.IsDestroyed) + continue; + + var fatBlock = slim.FatBlock; + if (fatBlock == null) + { + FadeSlims.Add(slim); + continue; + } + + FadeEntities.Add(fatBlock); + + fatBlock.Hierarchy.GetChildrenRecursive(Children); + foreach (var child in Children) + FadeEntities.Add(child); + + Children.Clear(); + } + SlimBlocks.Clear(); + } + BlocksDirty = false; + } + + internal void FadeBlocks(bool fadeOut, int step) + { + var steps = _session.FadeSteps; + var fraction = (fadeOut ? steps - step : step) / (float)steps; + var reset = !fadeOut && step == 0; + var dither = reset? 0f : TransOffset + fraction * (Transparency - TransOffset); + + Fading = step != 0; + + for (int i = 0; i < FadeSlims.Count; i++) + { + var slim = FadeSlims[i]; + if (slim.IsDestroyed) + { + FadeSlims.RemoveAtFast(i); + i--; + continue; + } + + slim.Dithering = dither; + } + + for (int i = 0; i < FadeEntities.Count; i++) + { + var entity = FadeEntities[i]; + entity.Render.Transparency = dither; + entity.Render.UpdateTransparency(); + + if (Fading || fadeOut || entity.Render is MyNullRenderComponent) //Not final step + continue; + + var thrust = entity as MyThrust; + if (thrust != null && _session.HideThrusterFlames) + { + if (_session.RecolourableThrust) + (thrust as Sandbox.ModAPI.Ingame.IMyTerminalBlock).GetProperty("HideThrustFlames").AsBool().SetValue(thrust, false); + else + thrust.Render.UpdateFlameAnimatorData(); + } + + } + Grid.Render.UpdateTransparency(); + + } + + internal void StealthExternalGrid(bool stealth, IMyCubeGrid grid) + { + if (stealth) StealthedExternalGrids.Add(grid); + else StealthedExternalGrids.Remove(grid); + + var dither = stealth ? Transparency : 0f; + + grid.GetBlocks(SlimBlocks); + foreach (var slim in SlimBlocks) + { + var block = slim.FatBlock; + if (block == null) + { + slim.Dithering = dither; + continue; + } + + block.Render.Transparency = dither; + block.Render.UpdateTransparency(); + + block.Hierarchy.GetChildrenRecursive(Children); + foreach (var child in Children) + { + child.Render.Transparency = dither; + child.Render.UpdateTransparency(); + } + } + SlimBlocks.Clear(); + + (grid as MyCubeGrid).UpdateDirty(null, true); + } + + internal void DitherBlock(bool stealth, IMySlimBlock slim) + { + var dither = stealth ? Transparency : 0f; + + if (slim.FatBlock == null) + { + if (!slim.IsDestroyed) + slim.Dithering = dither; + return; + } + + var fat = slim.FatBlock; + + fat.Render.Transparency = dither; + fat.Render.UpdateTransparency(); + + fat.Hierarchy.GetChildrenRecursive(Children); + foreach (var child in Children) + { + child.Render.Transparency = dither; + child.Render.UpdateTransparency(); + } + Children.Clear(); + } + + internal void CreateHeatSignature() + { + var gps = MyAPIGateway.Session.GPS.Create("Heat Signature", "Heat signature from a cooling down stealth drive.", Block.PositionComp.WorldAABB.Center, true, true); + gps.GPSColor = Color.OrangeRed; + HeatSignature = gps; + MyAPIGateway.Session.GPS.AddLocalGps(gps); + } + + internal void SinkInit() + { + var sinkInfo = new MyResourceSinkInfo() + { + MaxRequiredInput = 0, + RequiredInputFunc = PowerFunc, + ResourceTypeId = MyResourceDistributorComponent.ElectricityId + }; + + Sink = Block.Components?.Get(); + if (Sink != null) + { + Sink.RemoveType(ref sinkInfo.ResourceTypeId); + Sink.AddType(ref sinkInfo); + } + else + { + Sink = new MyResourceSinkComponent(); + Sink.Init(MyStringHash.GetOrCompute("Utility"), sinkInfo); + (Block as MyCubeBlock).Components.Add(Sink); + } + + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + if (Source != null) + Source.AddSink(Sink); + else + Logs.WriteLine($"DriveComp.SinkInit() - Distributor null"); + + Sink.Update(); + } + + private void GetShowInToolbarSwitch() + { + List items; + MyAPIGateway.TerminalControls.GetControls(out items); + + foreach (var item in items) + { + + if (item.Id == "ShowInToolbarConfig") + { + ShowInToolbarSwitch = (IMyTerminalControlOnOffSwitch)item; + break; + } + } + } + + private void StorageInit() + { + string rawData; + DriveRepo loadRepo = null; + if (Block.Storage == null) + { + Block.Storage = new MyModStorageComponent(); + } + else if (Block.Storage.TryGetValue(_session.CompDataGuid, out rawData)) + { + try + { + var base64 = Convert.FromBase64String(rawData); + loadRepo = MyAPIGateway.Utilities.SerializeFromBinary(base64); + } + catch (Exception ex) + { + Logs.WriteLine($"DriveComp - Exception at StorageInit() - {ex}"); + } + } + + if (loadRepo != null) + { + Sync(loadRepo); + } + else + { + Repo = new DriveRepo(); + } + } + + private float PowerFunc() + { + if (!Online) + return 0f; + if (StealthActive) + return RequiredPower; + return 0.001f; + } + + private void Sync(DriveRepo repo) + { + Repo = repo; + + StealthActive = repo.StealthActive; + CoolingDown = repo.CoolingDown; + TimeElapsed = repo.RemainingDuration; + TotalTime = repo.TotalTime; + + StealthOnInit = repo.StealthActive; + CdOnInit = repo.CoolingDown; + } + + // + // Vanilla Cope + // + + internal void GetNearbyTurrets() + { + _sphere.Center = Block.PositionComp.WorldAABB.Center; + + MyGamePruningStructure.GetAllEntitiesInSphere(ref _sphere, _entities); + + NearbyTurrets.Clear(); + for (int i = 0; i < _entities.Count; i++) + { + var entity = _entities[i]; + if (!(entity is IMyLargeTurretBase)) continue; + + var turret = entity as IMyLargeTurretBase; + if (turret.CubeGrid == Grid) continue; + + NearbyTurrets.Add(turret); + } + _entities.Clear(); + + } + + public override string ComponentTypeDebugString => "StealthMod"; + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/SinkComp.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/SinkComp.cs new file mode 100644 index 000000000..f0d21a8fd --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Comp/SinkComp.cs @@ -0,0 +1,362 @@ +using Sandbox.ModAPI; +using System; +using VRage.Game; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRageMath; +using VRage.Utils; +using Sandbox.Game.Entities; +using VRage.Game.Entity; +using System.Collections.Generic; +using Sandbox.Game.EntityComponents; +using System.Text; +using Sandbox.ModAPI.Interfaces.Terminal; +using VRage.Game.ModAPI.Interfaces; +using static VRage.Game.ObjectBuilders.Definitions.MyObjectBuilder_GameDefinition; + +namespace StealthSystem +{ + public class SinkComp : MyEntityComponentBase + { + internal IMyFunctionalBlock Block; + internal IMyCubeGrid Grid; + internal MyResourceSinkComponent Sink; + internal MyResourceDistributorComponent Source; + internal IMyTerminalControlOnOffSwitch ShowInToolbarSwitch; + + internal SinkRepo Repo; + internal DriveComp Master; + internal Definitions.SinkDefinition Definition; + + internal Color OldColour; + internal MyOrientedBoundingBoxD DamageBox; + internal MyOrientedBoundingBoxD BlockBox; + + internal bool Inited; + internal bool PowerDirty; + internal bool Working = true; + internal bool SufficientPower; + internal bool Accumulating; + internal bool Radiating; + internal bool WasAccumulating; + internal bool WorkingChanged; + + internal long CompTick; + internal byte HeatPercent; + + private StealthSession _session; + + internal SinkComp(IMyFunctionalBlock sinkBlock, Definitions.SinkDefinition def, StealthSession session) + { + _session = session; + + Block = sinkBlock; + Definition = def; + } + + public override void OnBeforeRemovedFromContainer() + { + base.OnBeforeRemovedFromContainer(); + + Close(); + } + + public override bool IsSerialized() + { + if (Block.Storage == null || Repo == null) return false; + + Repo.Sync(this); + + Block.Storage[_session.CompDataGuid] = Convert.ToBase64String(MyAPIGateway.Utilities.SerializeToBinary(Repo)); + + return false; + } + + internal void Init() + { + Grid = Block.CubeGrid; + + //Block.IsWorkingChanged += IsWorkingChanged; + + Block.Components.Add(this); + CompTick = Block.EntityId % 20; + + Block.SetEmissiveParts(StealthSession.RADIANT_EMISSIVE, Color.DarkSlateGray, 0.1f); + + SinkInit(); + StorageInit(); + + Source.SystemChanged += SourceChanged; + + Inited = true; + + if (!_session.IsDedicated) + { + GetShowInToolbarSwitch(); + Block.AppendingCustomInfo += AppendingCustomData; + } + } + + internal void Close() + { + GridComp gridComp; + if (_session.GridMap.TryGetValue(Grid, out gridComp)) + { + gridComp.HeatComps.Remove(this); + } + + //Block.IsWorkingChanged -= IsWorkingChanged; + + Source.SystemChanged -= SourceChanged; + + if (!_session.IsDedicated) + Block.AppendingCustomInfo -= AppendingCustomData; + + Clean(); + } + + internal void Clean() + { + Block = null; + Grid = null; + Sink = null; + Source = null; + ShowInToolbarSwitch = null; + + Repo = null; + Master = null; + } + + private void IsWorkingChanged(IMyCubeBlock block) + { + Working = block.IsWorking; + } + + private void AppendingCustomData(IMyTerminalBlock block, StringBuilder builder) + { + var status = !Working ? "Offline" : !SufficientPower ? "Insufficient Power" : Radiating ? "Venting ඞ" : Accumulating ? "Accumulating Heat" : "Ready"; + + builder.Append("Heat Sink Status: ") + .Append(status) + .Append("\n") + .Append("Stored Heat: ") + .Append($"{HeatPercent}%"); + } + + private void SourceChanged() + { + PowerDirty = true; + } + + internal void GridChange(GridComp gridComp) + { + gridComp.HeatComps.Remove(this); + + Grid = Block.CubeGrid; + + var newGridComp = _session.GridMap[Grid]; + newGridComp.HeatComps.Add(this); + + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + } + + internal void UpdateStatus() + { + if (PowerDirty || Source == null) + { + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + PowerDirty = false; + } + var available = Source.MaxAvailableResourceByType(MyResourceDistributorComponent.ElectricityId, (MyCubeGrid)Grid) - Source.TotalRequiredInputByType(MyResourceDistributorComponent.ElectricityId, (MyCubeGrid)Grid); + SufficientPower = available > 0; + + var isWorking = Block.IsFunctional && Block.Enabled && SufficientPower; + if (isWorking != Working) + { + Working = isWorking; + WorkingChanged = true; + } + //SufficientPower = StealthActive ? available >= 0 : available >= RequiredPower; + //Online = Block.IsFunctional && Block.Enabled && available > 0; + + if (!_session.IsDedicated) + SetEmissiveColor(); + } + + internal void SetEmissiveColor() + { + if (Radiating) + Block.SetEmissiveParts(StealthSession.RADIANT_EMISSIVE, Color.DarkRed, HeatPercent / 200); + + var emissiveColor = !Block.IsFunctional ? Color.Black : !Working ? EmissiveValues.RED : Accumulating ? Color.Cyan : Radiating ? Color.OrangeRed : EmissiveValues.GREEN; + if (emissiveColor == OldColour) + return; + + OldColour = emissiveColor; + Block.SetEmissiveParts(StealthSession.STATUS_EMISSIVE, emissiveColor, 1f); + } + + internal List BlockBoxes = new List(); + + internal void DamageBlocks() + { + var large = Grid.GridSizeEnum == MyCubeSize.Large; + var box = large ? _session.LargeBox : _session.SmallBox; + var radius = large ? 7.25 : 6.45; + var offset = large ? 7.75 : 7.25; + var matrix = Block.WorldMatrix; + matrix.Translation += Block.WorldMatrix.Up * offset; + var obb = new MyOrientedBoundingBoxD(box, matrix); + //DamageBox = obb; + + var hits = new List(); + MyGamePruningStructure.GetAllEntitiesInOBB(ref obb, hits); + + //BlockBoxes.Clear(); + for (int i = 0; i < hits.Count; i++) + { + var ent = hits[i]; + + var dest = ent as IMyDestroyableObject; + if (dest != null) + { + var entObb = new MyOrientedBoundingBoxD(ent.PositionComp.LocalAABB, ent.PositionComp.WorldMatrixRef); + if (entObb.Contains(ref obb) != ContainmentType.Disjoint) + dest.DoDamage(9f, MyDamageType.Temperature, true); + + continue; + } + + var grid = ent as IMyCubeGrid; + if (grid != null) + { + var sphere = new BoundingSphereD(matrix.Translation, radius); + var slims = grid.GetBlocksInsideSphere(ref sphere); + + for (int j = 0; j < slims.Count; j++) + { + var slim = slims[j]; + var fat = slim.FatBlock; + MyOrientedBoundingBoxD blockBox; + if (fat == null) + { + var gridSize = (double)Grid.GridSize; + var aabb = new BoundingBoxD(slim.Min * gridSize - gridSize / 2, slim.Max * gridSize + gridSize / 2); + blockBox = new MyOrientedBoundingBoxD(aabb, grid.PositionComp.WorldMatrixRef); + } + else + { + blockBox = new MyOrientedBoundingBoxD(fat.PositionComp.LocalAABB, fat.PositionComp.WorldMatrixRef); + } + + if (obb.Contains(ref blockBox) != ContainmentType.Disjoint) + { + slim.DoDamage(500f, MyDamageType.Temperature, true); + //BlockBoxes.Add(blockBox); + } + + } + } + } + } + + internal void SinkInit() + { + var sinkInfo = new MyResourceSinkInfo() + { + MaxRequiredInput = 0, + RequiredInputFunc = PowerFunc, + ResourceTypeId = MyResourceDistributorComponent.ElectricityId + }; + + Sink = Block.Components?.Get(); + if (Sink != null) + { + Sink.RemoveType(ref sinkInfo.ResourceTypeId); + Sink.AddType(ref sinkInfo); + } + else + { + Sink = new MyResourceSinkComponent(); + Sink.Init(MyStringHash.GetOrCompute("Utility"), sinkInfo); + (Block as MyCubeBlock).Components.Add(Sink); + } + + Source = Grid.ResourceDistributor as MyResourceDistributorComponent; + if (Source != null) + Source.AddSink(Sink); + else + Logs.WriteLine($"SinkComp.SinkInit() - Distributor null"); + + Sink.Update(); + } + + private float PowerFunc() + { + if (!Working) + return 0f; + if (Accumulating) + return Definition.Power; + return 0.001f; + } + + private void GetShowInToolbarSwitch() + { + List items; + MyAPIGateway.TerminalControls.GetControls(out items); + + foreach (var item in items) + { + + if (item.Id == "ShowInToolbarConfig") + { + ShowInToolbarSwitch = (IMyTerminalControlOnOffSwitch)item; + break; + } + } + } + + private void StorageInit() + { + string rawData; + SinkRepo loadRepo = null; + if (Block.Storage == null) + { + Block.Storage = new MyModStorageComponent(); + } + else if (Block.Storage.TryGetValue(_session.CompDataGuid, out rawData)) + { + try + { + var base64 = Convert.FromBase64String(rawData); + loadRepo = MyAPIGateway.Utilities.SerializeFromBinary(base64); + } + catch (Exception ex) + { + Logs.WriteLine($"SinkComp - Exception at StorageInit() - {ex}"); + } + } + + if (loadRepo != null) + { + Sync(loadRepo); + } + else + { + Repo = new SinkRepo(); + } + } + + private void Sync(SinkRepo repo) + { + Repo = repo; + + Accumulating = repo.Accumulating; + Radiating = repo.Radiating; + HeatPercent = repo.HeatPercent; + } + + public override string ComponentTypeDebugString => "StealthMod"; + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Definitions/Definitions.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Definitions/Definitions.cs new file mode 100644 index 000000000..36816b7d2 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Definitions/Definitions.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StealthSystem +{ + internal class Definitions + { + internal class DriveDefinition + { + internal int Duration; + internal float PowerScale; + internal float SignalRangeScale; + + public DriveDefinition(int duration, float powerScale, float signalScale) + { + Duration = duration; + PowerScale = powerScale; + SignalRangeScale = signalScale; + } + } + + internal class SinkDefinition + { + internal int Duration; + internal float Power; + internal bool DoDamage; + + public SinkDefinition(int duration, float power, bool damage) + { + Duration = duration; + Power = power; + DoDamage = damage; + } + } + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionControls.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionControls.cs new file mode 100644 index 000000000..971d5e017 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionControls.cs @@ -0,0 +1,255 @@ +using Sandbox.ModAPI; +using VRage.Utils; +using System.Collections.Generic; +using Sandbox.ModAPI.Interfaces.Terminal; +using System.Text; + +namespace StealthSystem +{ + public partial class StealthSession + { + private readonly List _customControls = new List(); + private readonly List _customActions = new List(); + + internal IMyTerminalBlock LastTerminal; + + private void CustomControlGetter(IMyTerminalBlock block, List controls) + { + if (block is IMyUpgradeModule && DriveDefinitions.ContainsKey(block.BlockDefinition.SubtypeName)) + { + foreach (var control in _customControls) + controls.Add(control); + } + + LastTerminal = block; + } + + private void CustomActionGetter(IMyTerminalBlock block, List actions) + { + if (block is IMyUpgradeModule && DriveDefinitions.ContainsKey(block.BlockDefinition.SubtypeName)) + { + foreach (var action in _customActions) + actions.Add(action); + } + } + + internal void CreateTerminalControls() where T : IMyUpgradeModule + { + _customControls.Add(Separator()); + _customControls.Add(CreateEnterStealth()); + _customControls.Add(CreateExitStealth()); + + _customActions.Add(CreateEnterAction()); + _customActions.Add(CreateExitAction()); + _customActions.Add(CreateSwitchAction()); + } + + internal IMyTerminalControlSeparator Separator() where T : IMyTerminalBlock + { + var c = MyAPIGateway.TerminalControls.CreateControl("Stealth_Separator"); + + c.Enabled = IsTrue; + c.Visible = IsTrue; + + return c; + } + + internal IMyTerminalControlButton CreateEnterStealth() where T : IMyUpgradeModule + { + var control = MyAPIGateway.TerminalControls.CreateControl($"Stealth_Enter"); + + control.Title = MyStringId.GetOrCompute("Enter Stealth"); + control.Tooltip = MyStringId.GetOrCompute("Engage Stealth Drive to become virtually undetectable."); + control.Action = EnterStealth; + control.Visible = IsTrue; + control.Enabled = CanEnterStealth; + + return control; + } + + internal IMyTerminalControlButton CreateExitStealth() where T : IMyUpgradeModule + { + var control = MyAPIGateway.TerminalControls.CreateControl($"Stealth_Exit"); + + control.Title = MyStringId.GetOrCompute("Leave Stealth"); + control.Tooltip = MyStringId.GetOrCompute("Disengage Stealth Drive."); + control.Action = ExitStealth; + control.Visible = IsTrue; + control.Enabled = CanExitStealth; + + return control; + } + + internal IMyTerminalAction CreateEnterAction() where T : IMyUpgradeModule + { + var action = MyAPIGateway.TerminalControls.CreateAction("Stealth_Enter_Action"); + action.Icon = ModPath + @"\Textures\GUI\Icons\Actions\StealthSwitchOn.dds"; + action.Name = new StringBuilder("Enter Stealth"); + action.Action = EnterStealth; + action.Writer = EnterStealthWriter; + action.Enabled = IsTrue; + + return action; + } + + internal IMyTerminalAction CreateExitAction() where T : IMyUpgradeModule + { + var action = MyAPIGateway.TerminalControls.CreateAction("Stealth_Exit_Action"); + action.Icon = ModPath + @"\Textures\GUI\Icons\Actions\StealthSwitchOff.dds"; + action.Name = new StringBuilder("Leave Stealth"); + action.Action = ExitStealth; + action.Writer = ExitStealthWriter; + action.Enabled = IsTrue; + + return action; + } + + internal IMyTerminalAction CreateSwitchAction() where T : IMyUpgradeModule + { + var action = MyAPIGateway.TerminalControls.CreateAction("Stealth_Switch_Action"); + action.Icon = ModPath + @"\Textures\GUI\Icons\Actions\StealthSwitchToggle.dds"; + action.Name = new StringBuilder("Switch Stealth"); + action.Action = SwitchStealth; + action.Writer = SwitchStealthWriter; + action.Enabled = IsTrue; + + return action; + } + + internal bool IsTrue(IMyTerminalBlock block) + { + return true; + } + + internal bool CanEnterStealth(IMyTerminalBlock block) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("CanEnterStealth() - Comp not found!"); + return false; + } + + return comp.Online && comp.SufficientPower && !comp.CoolingDown && !comp.StealthActive && comp.GridComp.WaterValid; + } + + internal bool CanExitStealth(IMyTerminalBlock block) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("CanExitStealth() - Comp not found!"); + return false; + } + + return comp.Online && comp.StealthActive; + } + + internal void EnterStealthWriter(IMyTerminalBlock block, StringBuilder builder) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("EnterStealthWriter() - Comp not found!"); + return; + } + + if (comp.StealthActive) + builder.Append("Cloaked"); + else + builder.Append("Cloak"); + } + + internal void ExitStealthWriter(IMyTerminalBlock block, StringBuilder builder) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("ExitStealthWriter() - Comp not found!"); + return; + } + + if (comp.StealthActive) + builder.Append("Uncloak"); + else + builder.Append("Uncloaked"); + } + + internal void SwitchStealthWriter(IMyTerminalBlock block, StringBuilder builder) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("ExitStealthWriter() - Comp not found!"); + return; + } + + if (comp.StealthActive) + builder.Append("Uncloak"); + else + builder.Append("Cloak"); + } + + internal void EnterStealth(IMyTerminalBlock block) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("EnterStealth() - Comp not found!"); + return; + } + + if (!comp.Online || !comp.SufficientPower || comp.CoolingDown || comp.StealthActive || !comp.GridComp.WaterValid) + { + var status = !comp.Online ? "Drive Offline" + : !comp.SufficientPower ? "Insufficient Power" + : comp.CoolingDown ? $"Drive Cooling Down - {comp.TimeElapsed / 60}s Remaining" + : comp.StealthActive ? "Drive Already Engaged" + : !comp.GridComp.WaterValid ? WorkInWater ? "Drive not Submerged" + : "Drive Submerged" : ""; + MyAPIGateway.Utilities.ShowNotification(status, 2000, "Red"); + return; + } + + comp.EnterStealth = true; + MyAPIGateway.Utilities.ShowNotification($"Engaging Stealth - {comp.TotalTime / 60}s Remaining", 2000, "Green"); + + foreach (var control in _customControls) + control.UpdateVisual(); + } + + internal void ExitStealth(IMyTerminalBlock block) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("ExitStealth() - Comp not found!"); + return; + } + + if (!comp.Online || !comp.StealthActive) return; + + comp.ExitStealth = true; + MyAPIGateway.Utilities.ShowNotification($"Disengaging Stealth - {comp.TimeElapsed / 60}s Cooldown", 2000, "StealthOrange"); + + foreach (var control in _customControls) + control.UpdateVisual(); + } + + internal void SwitchStealth(IMyTerminalBlock block) + { + DriveComp comp; + if (!DriveMap.TryGetValue(block.EntityId, out comp)) + { + Logs.WriteLine("SwitchStealth() - Comp not found!"); + return; + } + + comp.ToggleStealth(); + + foreach (var control in _customControls) + control.UpdateVisual(); + } + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionEvents.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionEvents.cs new file mode 100644 index 000000000..27a28fbec --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionEvents.cs @@ -0,0 +1,184 @@ +using Sandbox.ModAPI; +using System; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using Sandbox.Game.Entities; +using VRage.Game.Entity; +using System.Collections.Generic; + +namespace StealthSystem +{ + public partial class StealthSession + { + private void OnEntityCreate(MyEntity entity) + { + try + { + if (!Inited) lock (InitObj) Init(); + + var planet = entity as MyPlanet; + if (planet != null) + PlanetTemp.TryAdd(planet, byte.MaxValue); //More keen jank workarounds + + var grid = entity as IMyCubeGrid; + if (grid != null) + { + (grid as MyCubeGrid).AddedToScene += AddToStart => _startGrids.Add(grid); + return; + } + + var upgrade = entity as IMyUpgradeModule; + if (upgrade != null) + { + var subtype = upgrade.BlockDefinition.SubtypeName; + if (Enforced && !DriveDefinitions.ContainsKey(subtype) && !SinkDefinitions.ContainsKey(subtype)) + return; + + (upgrade as MyCubeBlock).AddedToScene += AddToStart => _startBlocks.Add(upgrade); + } + + if (!PbApiInited && IsServer && entity is IMyProgrammableBlock) + { + MyAPIGateway.Utilities.InvokeOnGameThread(() => API.PbInit()); + PbApiInited = true; + } + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in EntityCreate: {entity.GetType()} - {ex}"); + } + + } + + private void OnGridClose(IMyEntity entity) + { + var grid = entity as IMyCubeGrid; + + if (GridMap.ContainsKey(grid)) + { + var comp = GridMap[grid]; + GridMap.Remove(grid); + GridList.Remove(comp); + + comp.Clean(); + _gridCompPool.Push(comp); + } + else Logs.WriteLine("OnGridClose() - grid not in map!!!"); + } + + private void OnCloseAll() + { + try + { + var list = new List(GridGroupMap.Keys); + foreach (var value in list) + GridGroupsOnOnGridGroupDestroyed(value); + + MyAPIGateway.GridGroups.OnGridGroupDestroyed -= GridGroupsOnOnGridGroupDestroyed; + MyAPIGateway.GridGroups.OnGridGroupCreated -= GridGroupsOnOnGridGroupCreated; + + GridGroupMap.Clear(); + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in CloseAll: {ex}"); + } + + } + + private void GridGroupsOnOnGridGroupCreated(IMyGridGroupData groupData) + { + if (groupData.LinkType != GridLinkTypeEnum.Physical) + return; + + var map = _groupMapPool.Count > 0 ? _groupMapPool.Pop() : new GroupMap(); + map.Init(groupData, this); + + //groupData.OnReleased += map.OnReleased; + groupData.OnGridAdded += map.OnGridAdded; + groupData.OnGridRemoved += map.OnGridRemoved; + GridGroupMap[groupData] = map; + } + + private void GridGroupsOnOnGridGroupDestroyed(IMyGridGroupData groupData) + { + if (groupData.LinkType != GridLinkTypeEnum.Physical) + return; + + GroupMap map; + if (GridGroupMap.TryGetValue(groupData, out map)) + { + //groupData.OnReleased -= map.OnReleased; + groupData.OnGridAdded -= map.OnGridAdded; + groupData.OnGridRemoved -= map.OnGridRemoved; + + GridGroupMap.Remove(groupData); + map.Clean(); + _groupMapPool.Push(map); + } + else + Logs.WriteLine($"GridGroupsOnOnGridGroupDestroyed could not find map"); + } + + private void PlayerConnected(long id) + { + try + { + MyAPIGateway.Multiplayer.Players.GetPlayers(null, myPlayer => FindPlayer(myPlayer, id)); + } + catch (Exception ex) { Logs.WriteLine($"Exception in PlayerConnected: {ex}"); } + } + + private bool FindPlayer(IMyPlayer player, long id) + { + if (player.IdentityId == id) + { + var packet = new SettingsPacket { EntityId = 0, Settings = ConfigSettings.Config, Type = PacketType.Settings }; + SendPacketToClient(packet, player.SteamUserId); + } + return false; + } + + internal void AfterDamageApplied(object target, MyDamageInformation info) + { + if (!DisableWeapons && RevealOnDamage) //Reveal grid on dealing damage + { + var ent = MyEntities.GetEntityById(info.AttackerId); + if (!(ent is MyCubeBlock)) return; + + var attackingGrid = (ent as IMyCubeBlock).CubeGrid; + if (attackingGrid == null) return; + + if (!StealthedGrids.Contains(attackingGrid)) + return; + + GridComp gridCompA; + if (!GridMap.TryGetValue(attackingGrid, out gridCompA)) + { + Logs.WriteLine("Attacking grid not mapped in damage handler"); + return; + } + + gridCompA.Revealed = true; + } + + if (!TrackDamage) return; + + if (info.AttackerId == 0 || !(target is IMySlimBlock)) + return; + + var targetGrid = (target as IMySlimBlock).CubeGrid; + + if (targetGrid == null || !StealthedGrids.Contains(targetGrid)) return; + + GridComp gridComp; + if (!GridMap.TryGetValue(targetGrid, out gridComp)) + { + Logs.WriteLine("Grid not mapped in damage handler"); + return; + } + + gridComp.DamageTaken += (int)info.Amount; + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionFields.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionFields.cs new file mode 100644 index 000000000..181da45a1 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionFields.cs @@ -0,0 +1,133 @@ +using Sandbox.ModAPI; +using System; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using VRageMath; +using VRage.Utils; +using VRage.Game.Entity; +using System.Collections.Generic; +using VRage.Collections; +using Jakaria.API; +using System.Collections.Concurrent; +using Sandbox.Game.Entities; +using Sandbox.Definitions; + +namespace StealthSystem +{ + public partial class StealthSession + { + internal const string STATUS_EMISSIVE = "Emissive"; + internal const string RADIANT_EMISSIVE = "Emissive0"; + + internal const int FADE_INTERVAL = 5; + internal const int IsStealthedFlag = 0x20000000; + + internal readonly Dictionary DriveDefinitions = new Dictionary(); + internal readonly Dictionary SinkDefinitions = new Dictionary(); + + internal readonly HashSet ShieldBlocks = new HashSet() + { + "EmitterL", + "EmitterS", + "EmitterST", + "EmitterLA", + "EmitterSA", + "LargeShipSmallShieldGeneratorBase", + "LargeShipLargeShieldGeneratorBase", + "SmallShipSmallShieldGeneratorBase", + "SmallShipMicroShieldGeneratorBase", + "LargeGridLargeShield", + "LargeGridSmallShield", + "SmallGridLargeShield", + "SmallGridSmallShield", + }; + + internal string ModPath; + internal readonly Guid CompDataGuid = new Guid("75BBB4F5-4FB9-4230-AAAA-BB79C9811507"); + internal static readonly MyStringId _square = MyStringId.GetOrCompute("Square"); + + internal BoundingBoxD LargeBox; + internal BoundingBoxD SmallBox; + + internal EntityFlags StealthFlag; + + internal int ShieldDelay; + internal int JumpPenalty; + internal int FadeTime; + internal int FadeSteps; + internal int DamageThreshold; + internal float Transparency; + internal float WaterTransitionDepth; + internal float WaterOffsetSqr; + internal bool DisableShields; + internal bool DisableWeapons; + internal bool HideThrusterFlames; + internal bool WorkInWater; + internal bool WorkOutOfWater; + internal bool TrackWater; + internal bool TrackDamage; + internal bool RevealOnDamage; + + internal readonly Dictionary DriveMap = new Dictionary(); + internal readonly Dictionary GridMap = new Dictionary(); + internal readonly Dictionary GridGroupMap = new Dictionary(); + internal readonly List GridList = new List(); + internal readonly HashSet StealthedGrids = new HashSet(); + internal readonly Vector3D[] ObbCorners = new Vector3D[8]; + + internal Settings ConfigSettings; + internal APIBackend API; + internal APIServer APIServer; + internal readonly WaterModAPI WaterAPI = new WaterModAPI(); + + internal object InitObj = new object(); + internal bool Enforced; + internal bool Inited; + internal bool PbApiInited; + + internal bool WcActive; + internal bool WaterMod; + internal bool RecolourableThrust; + + internal readonly ConcurrentDictionary WaterMap = new ConcurrentDictionary(); + internal readonly ConcurrentDictionary PlanetMap = new ConcurrentDictionary(); + internal readonly ConcurrentDictionary PlanetTemp = new ConcurrentDictionary(); + + private readonly List _entities = new List(); + private readonly ConcurrentCachingList _startBlocks = new ConcurrentCachingList(); + private readonly ConcurrentCachingList _startGrids = new ConcurrentCachingList(); + private readonly Stack _groupMapPool = new Stack(64); + private readonly Stack _gridCompPool = new Stack(128); + + private readonly Vector3D _large = new Vector3D(1.125, 6.25, 3.5); + private readonly Vector3D _small = new Vector3D(1.125, 6.25, 1.125); + + public StealthSession() + { + API = new APIBackend(this); + APIServer = new APIServer(this); + } + + private void Clean() + { + DriveDefinitions.Clear(); + SinkDefinitions.Clear(); + ShieldBlocks.Clear(); + + DriveMap.Clear(); + GridMap.Clear(); + GridGroupMap.Clear(); + GridList.Clear(); + StealthedGrids.Clear(); + + _entities.Clear(); + _startBlocks.ClearImmediate(); + _startGrids.ClearImmediate(); + _groupMapPool.Clear(); + _gridCompPool.Clear(); + + _customControls.Clear(); + _customActions.Clear(); + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionLogic.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionLogic.cs new file mode 100644 index 000000000..1f598a77d --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionLogic.cs @@ -0,0 +1,614 @@ +using Sandbox.ModAPI; +using System; +using VRage.Game.ModAPI; +using VRageMath; +using Sandbox.Game.Entities; +using VRage.Game.Entity; +using System.Collections.Generic; +using VRage.Game.ModAPI.Interfaces; + +namespace StealthSystem +{ + public partial class StealthSession + { + internal void CompLoop() + { + //var position = MyAPIGateway.Session.LocalHumanPlayer?.Character?.PositionComp.WorldAABB.Center ?? MyAPIGateway.Session?.Camera?.Position; + //var controlledGrid = (MyAPIGateway.Session.ControlledObject as MyCubeBlock)?.GetTopMostParent(); + + if (GridList.Count == 0) return; + + for (int i = 0; i < GridList.Count; i++) + { + var gridComp = GridList[i]; + var master = gridComp.MasterComp; + + if (gridComp.GroupMap == null) + { + var group = MyAPIGateway.GridGroups.GetGridGroup(GridLinkTypeEnum.Physical, gridComp.Grid); + if (group != null) + { + GroupMap map; + if (GridGroupMap.TryGetValue(group, out map)) + gridComp.GroupMap = map; + } + } + + bool enter = false; + bool exit = false; + bool cold = false; + + try + { + for (int j = 0; j < gridComp.StealthComps.Count; j++) + { + var comp = gridComp.StealthComps[j]; + + if (comp.Grid != comp.Block.CubeGrid) + { + if (!GridMap.ContainsKey(comp.Block.CubeGrid)) + { + comp.Transfer = true; + continue; + } + + comp.GridChange(); + } + + if (!IsDedicated && comp.Fading) + { + if (comp.StealthActive && (gridComp.GroupsDirty || comp.BlocksDirty)) + comp.ReCacheBlocks(); + + if (comp.Fade-- % FADE_INTERVAL == 0) + comp.FadeBlocks(comp.StealthActive, comp.Fade / FADE_INTERVAL); + } + + if (comp.ShieldWaiting) + { + if (comp.ShieldWait-- <= 0) + { + comp.ShieldWaiting = false; + + foreach (var block in comp.DisabledBlocks.Keys) + { + block.EnabledChanged -= comp.OnEnabledChanged; + block.Enabled = comp.DisabledBlocks[block]; + } + comp.DisabledBlocks.Clear(); + } + } + + //Update cooldown and heat signal + if (comp.CoolingDown) + { + if (comp.TimeElapsed-- <= 0 || comp.EnterStealth) //comp.RemainingDuration-- <= 0 + { + if (!IsDedicated && comp.HeatSignature != null) + { + MyAPIGateway.Session.GPS.RemoveLocalGps(comp.HeatSignature); + comp.HeatSignature = null; + } + comp.CoolingDown = false; + cold = true; + } + else if (!IsDedicated && comp.HeatSignature != null) + { + comp.HeatSignature.Coords = comp.Block.PositionComp.WorldAABB.Center; + } + + if (!IsDedicated && comp.CdOnInit) + { + var position = MyAPIGateway.Session?.Camera?.Position ?? Vector3D.Zero; + if (Vector3D.DistanceSquared(position, comp.Block.PositionComp.WorldAABB.Center) < comp.SignalDistanceSquared) + comp.CreateHeatSignature(); + + comp.CdOnInit = false; + } + } + + //Hide/unhide main grid after delay to match slimblock transparency update + //if (comp.DelayedRender) + //{ + // if (comp.Delay-- == 0) + // { + // foreach (var grid in comp.ConnectedGrids) + // comp.DitherFatBlocks(!comp.VisibleToClient); + + // comp.DelayedRender = false; + // } + //} + + if (!comp.IsPrimary && !comp.StealthActive) + continue; + + if (comp != master && (master == null || !master.Online)) + { + Logs.WriteLine($"[StealthMod] Primary != master - master null: {master == null}"); + master = comp; + } + + if (!comp.Block.IsFunctional && (!comp.TransferFailed || Tick120)) + comp.TransferFailed = !comp.TransferPrimary(false); + + //Calculate grid surface area and drive power + if (gridComp.GroupsDirty || Tick60 && comp.GridUpdated) + { + comp.CalculatePowerRequirements(); + gridComp.GroupsDirty = false; + comp.GridUpdated = false; + } + + if (TrackWater) + { + WaterData waterData; + if (Tick3600) + { + var planet = MyGamePruningStructure.GetClosestPlanet(gridComp.Grid.PositionComp.WorldAABB.Center); + + if (planet != gridComp.Planet && planet != null && WaterMap.TryGetValue(planet.EntityId, out waterData)) + gridComp.Water = new BoundingSphereD(waterData.Centre, waterData.Radius + WaterTransitionDepth); + + gridComp.Planet = planet; + } + + if (Tick60 && gridComp.Planet != null && WaterMap.TryGetValue(gridComp.Planet.EntityId, out waterData)) + { + gridComp.Underwater = false; + + var planetVector = gridComp.Grid.PositionComp.WorldAABB.Center - waterData.Centre; + var radius = waterData.Radius + WaterTransitionDepth; + var radiusSqr = radius * radius; + if (planetVector.LengthSquared() < radiusSqr) + { + gridComp.Underwater = true; + + var obb = new MyOrientedBoundingBoxD(gridComp.Grid.PositionComp.LocalAABB, gridComp.Grid.PositionComp.WorldMatrixRef); + obb.GetCorners(ObbCorners, 0); + for (int k = 0; k < 8; k++) + { + var corner = ObbCorners[j]; + planetVector = corner - waterData.Centre; + + if (planetVector.LengthSquared() > radiusSqr) + { + gridComp.Underwater = false; + break; + } + } + } + gridComp.WaterValid = gridComp.Underwater == WorkInWater; + } + } + + //Update comp state and refresh custom info + if (Tick20 || comp.PowerDirty) + { + comp.UpdateStatus(); + if (!IsDedicated && LastTerminal == comp.Block && MyAPIGateway.Gui.GetCurrentScreen == MyTerminalPageEnum.ControlPanel) + comp.RefreshTerminal(); + } + + if (comp.StealthActive) + { + //Exit stealth conditions + var forcedExit = !comp.IsPrimary || !comp.Online || gridComp.Revealed || !gridComp.WaterValid || TrackDamage && gridComp.DamageTaken > DamageThreshold; + if (forcedExit || !comp.IgnorePower && (!comp.SufficientPower || comp.TimeElapsed++ >= comp.TotalTime)) //comp.RemainingDuration-- <= 0 + comp.ExitStealth = true; + + //Decrease remaining stealth duration after jump + if (Tick120) + { + var jumpList = new List(comp.JumpDrives.Keys); + foreach (var jump in jumpList) + { + if (jump.CurrentStoredPower < comp.JumpDrives[jump]) + comp.TotalTime -= JumpPenalty; + //comp.RemainingDuration -= JumpPenalty; + + comp.JumpDrives[jump] = jump.CurrentStoredPower; + } + } + + //Vanilla fuckery + if (!WcActive) + { + if (TickMod60 == comp.CompTick60) + comp.GetNearbyTurrets(); + + for (int k = 0; k < comp.NearbyTurrets.Count; k++) + { + var turret = comp.NearbyTurrets[k]; + + if (!turret.HasTarget) continue; + + var target = turret.Target; + + var block = target as IMyCubeBlock; + if (block != null && ((uint)block.CubeGrid.Flags & IsStealthedFlag) > 0) + { + turret.ResetTargetingToDefault(); + continue; + } + + if (((uint)target.Flags & IsStealthedFlag) > 0) + turret.ResetTargetingToDefault(); + } + } + } + + //if (comp.ExpandedOBB != null) DrawBox(comp.ExpandedOBB, Color.AliceBlue); + + if (comp.EnterStealth || comp.ExitStealth || comp.StealthOnInit || comp.StealthActive && TickMod15 == comp.CompTick15) + { + comp.CalculateExpandedOBB(); + + Vector3D position = Vector3D.Zero; + bool inside = false; + if (!IsDedicated) + { + position = MyAPIGateway.Session?.Camera?.Position ?? Vector3D.Zero; + inside = comp.ExpandedOBB.Contains(ref position); + } + + if (comp.EnterStealth) + { + comp.EnterStealth = false; + comp.UpdateStatus(); + if (!comp.Online || !comp.IgnorePower && !comp.SufficientPower) + continue; + + enter = true; + + gridComp.DamageTaken = 0; + gridComp.Revealed = false; + comp.StealthActive = true; + //comp.RemainingDuration = comp.MaxDuration; + comp.TotalTime = comp.MaxDuration; + comp.TimeElapsed = 0; + + //comp.Grid.Flags |= (EntityFlags)IsStealthedFlag; + + comp.Sink.Update(); + + var packet = new UpdateStatePacket { EntityId = comp.Block.EntityId, EnterStealth = true, Type = PacketType.UpdateState }; + if (IsServer) + SendPacketToClients(packet, comp.ReplicatedClients); + + comp.PrepGrids(true); + + if (!WcActive) comp.GetNearbyTurrets(); + + if (!IsDedicated) + { + if (IsClient) + SendPacketToServer(packet); + + if (!inside) + comp.SwitchStealth(true, true); + + comp.RefreshTerminal(); + + } + + } + else if (comp.ExitStealth) + { + exit = true; + Logs.WriteLine($"Exiting stealth: {comp.IsPrimary} {comp.Online} {gridComp.Revealed} {gridComp.WaterValid} {TrackDamage && gridComp.DamageTaken > DamageThreshold}" + + $" {comp.SufficientPower} {comp.TimeElapsed} / {comp.TotalTime}"); + + comp.ExitStealth = false; + comp.StealthActive = false; + comp.IgnorePower = false; + + comp.CoolingDown = true; + //comp.RemainingDuration = comp.MaxDuration - comp.RemainingDuration; + //comp.TotalTime = comp.TimeElapsed; + //comp.TimeElapsed = 0; + + //comp.Grid.Flags ^= (EntityFlags)IsStealthedFlag; + + comp.Sink.Update(); + + var packet = new UpdateStatePacket { EntityId = comp.Block.EntityId, ExitStealth = true, Type = PacketType.UpdateState }; + if (IsServer) + SendPacketToClients(packet, comp.ReplicatedClients); + + comp.PrepGrids(false); + + foreach (var entity in comp.PreviousEntities) + { + if (!IsDedicated) + { + if (entity is IMyCubeGrid) + comp.StealthExternalGrid(false, entity as IMyCubeGrid); + else + entity.Render.Visible = true; + } + + entity.Flags ^= StealthFlag; + } + + if (!IsDedicated) + { + if (IsClient) + SendPacketToServer(packet); + + if (!comp.VisibleToClient) + comp.SwitchStealth(false, true); + + comp.RefreshTerminal(); + + if (Vector3D.DistanceSquared(position, comp.Block.PositionComp.WorldAABB.Center) < comp.SignalDistanceSquared) + comp.CreateHeatSignature(); + } + + } + else + { + if (comp.StealthOnInit) + { + if (!WcActive) comp.GetNearbyTurrets(); + comp.PrepGrids(true); + comp.StealthOnInit = false; + } + + if (!IsDedicated && (comp.StealthOnInit || inside != comp.VisibleToClient)) + { + comp.SwitchStealth(!inside); + comp.Fading = false; + } + + MyGamePruningStructure.GetAllEntitiesInOBB(ref comp.ExpandedOBB, _entities); + + for (int k = 0; k < _entities.Count; k++) + { + MyEntity entity = _entities[k]; + if (!(entity is IMyDestroyableObject || entity is IMyCubeGrid)) + continue; + + if (entity is IMyCubeGrid) + { + var grid = (IMyCubeGrid)entity; + if (StealthedGrids.Contains(grid)) continue; + + var obb = new MyOrientedBoundingBoxD(grid.PositionComp.LocalAABB, grid.PositionComp.WorldMatrixRef); + if (comp.ExpandedOBB.Contains(ref obb) != ContainmentType.Contains) continue; + + + if (!IsDedicated && inside == comp.StealthedExternalGrids.Contains(grid)) + comp.StealthExternalGrid(!inside, grid); + } + else if (!IsDedicated) entity.Render.Visible = inside; + + comp.CurrentEntities.Add(entity); + + if (comp.PreviousEntities.Remove(entity)) + continue; + + entity.Flags |= StealthFlag; + } + _entities.Clear(); + + foreach (var entity in comp.PreviousEntities) + { + var grid = entity as IMyCubeGrid; + if (grid != null && gridComp.GroupMap.ConnectedGrids.Contains(grid)) + { + comp.StealthedExternalGrids.Remove(grid); + continue; + } + + if (!IsDedicated) + { + if (grid != null) + comp.StealthExternalGrid(false, grid); + else + entity.Render.Visible = true; + } + entity.Flags ^= StealthFlag; + } + + comp.PreviousEntities = new HashSet(comp.CurrentEntities); + comp.CurrentEntities.Clear(); + } + } + } + + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in stealth comp loop: {ex}"); + } + + + if (Tick20) + { + if (master != null) + master.MaxDuration = master.Definition.Duration + gridComp.SinkBonus; + + gridComp.SinkBonus = 0; + } + + if (gridComp.HeatComps.Count == 0) continue; + + try + { + for (int j = 0; j < gridComp.HeatComps.Count; j++) + { + var comp = gridComp.HeatComps[j]; + + if (comp.Grid != comp.Block.CubeGrid) + { + comp.GridChange(gridComp); + j--; + // Deal with conditionals? + continue; + } + + if (enter) + { + comp.Accumulating = true; + } + else if (exit) + { + comp.Accumulating = false; + comp.Radiating = true; + comp.Block.SetEmissiveParts(RADIANT_EMISSIVE, Color.DarkRed, 0.5f); + } + else if (cold) + { + comp.Radiating = false; + comp.Block.SetEmissiveParts(RADIANT_EMISSIVE, Color.DarkSlateGray, 0.1f); + comp.HeatPercent = 0; + } + + //DrawBox(comp.DamageBox, Color.OrangeRed); + + //foreach (var box in comp.BlockBoxes) + // DrawBox(box, Color.Red); + + if (TickMod20 != comp.CompTick) + continue; + + comp.UpdateStatus(); + if (!IsDedicated && LastTerminal == comp.Block && MyAPIGateway.Gui.GetCurrentScreen == MyTerminalPageEnum.ControlPanel) + RefreshTerminal(comp.Block, comp.ShowInToolbarSwitch); + + if (comp.WorkingChanged && master != null) + { + if (master.StealthActive) + { + var timeChange = comp.Working ? comp.Definition.Duration : -comp.Definition.Duration; + master.TotalTime += timeChange; + + comp.Accumulating = comp.Working; + } + comp.WorkingChanged = false; + } + + if (comp.Working) + { + if (comp.Accumulating) + { + //comp.HeatPercent = (byte)(100 * (1 - (master.RemainingDuration / (float)_duration))); + comp.HeatPercent = (byte)(100f * (float)master.TimeElapsed / (float)master.TotalTime); + } + else if (comp.Radiating) + { + //comp.HeatPercent = (byte)(100 * (master.RemainingDuration / (float)_duration)); + comp.HeatPercent = (byte)(100f * ((float)master.TimeElapsed / (float)master.TotalTime)); + if (!IsClient && comp.Definition.DoDamage) comp.DamageBlocks(); + } + + gridComp.SinkBonus += comp.Definition.Duration; + + //if (master != null) + //master.MaxDuration += SinkDuration; + + } + else + { + if (comp.Accumulating) + { + comp.Accumulating = false; + comp.WasAccumulating = true; + //master.RemainingDuration -= SinkDuration * (100 - comp.HeatPercent) / 100; + } + + if (comp.HeatPercent > 0) + { + var loss = (byte)(100 / (comp.Definition.Duration / 20f)); + if (loss >= comp.HeatPercent) + comp.HeatPercent = 0; + else + comp.HeatPercent -= loss; + + if (!IsClient && comp.Definition.DoDamage) comp.DamageBlocks(); + //do heat signature + } + } + } + + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in heat comp loop: {ex}"); + } + + } + + } + + internal void StartComps() + { + try + { + _startGrids.ApplyAdditions(); + if (_startGrids.Count > 0) + { + for (int i = 0; i < _startGrids.Count; i++) + { + var grid = _startGrids[i]; + + if ((grid as MyCubeGrid).IsPreview) + continue; + + var gridComp = _gridCompPool.Count > 0 ? _gridCompPool.Pop() : new GridComp(); + gridComp.Init(grid, this); + + GridList.Add(gridComp); + GridMap[grid] = gridComp; + grid.OnClose += OnGridClose; + } + _startGrids.ClearImmediate(); + } + + _startBlocks.ApplyAdditions(); + for (int i = 0; i < _startBlocks.Count; i++) + { + var module = _startBlocks[i]; + + if (module?.CubeGrid == null || !GridMap.ContainsKey(module.CubeGrid)) + continue; + + if (module.CubeGrid.Physics == null || (module.CubeGrid as MyCubeGrid).IsPreview) + { + Logs.WriteLine($"invalid grid in startblocks - IsPreview {(module.CubeGrid as MyCubeGrid).IsPreview} - physics null {module.CubeGrid.Physics == null}"); + continue; + } + + var gridData = GridMap[module.CubeGrid]; + + Definitions.DriveDefinition dDef; + if (DriveDefinitions.TryGetValue(module.BlockDefinition.SubtypeName, out dDef)) + { + if (DriveMap.ContainsKey(module.EntityId)) continue; + + var comp = new DriveComp(module, dDef, this); + DriveMap[module.EntityId] = comp; + gridData.StealthComps.Add(comp); + comp.Init(); + + continue; + } + + Definitions.SinkDefinition sDef; + if (SinkDefinitions.TryGetValue(module.BlockDefinition.SubtypeName, out sDef)) + { + var comp = new SinkComp(module, sDef, this); + gridData.HeatComps.Add(comp); + comp.Init(); + } + } + _startBlocks.ClearImmediate(); + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in StartComps: {ex}"); + } + + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionMethods.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionMethods.cs new file mode 100644 index 000000000..8af8f4121 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionMethods.cs @@ -0,0 +1,205 @@ +using Sandbox.Definitions; +using Sandbox.ModAPI; +using VRage.Game; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using VRageMath; +using VRage.Utils; +using System.Collections.Generic; +using Sandbox.ModAPI.Interfaces.Terminal; +using Jakaria.API; +using System; +using Sandbox.Game.Entities; +using Sandbox.Common.ObjectBuilders; + +namespace StealthSystem +{ + public partial class StealthSession + { + private void Init() + { + if (Inited) return; + Inited = true; + + MyAPIGateway.GridGroups.OnGridGroupCreated += GridGroupsOnOnGridGroupCreated; + MyAPIGateway.GridGroups.OnGridGroupDestroyed += GridGroupsOnOnGridGroupDestroyed; + } + + internal void ModCheck() + { + foreach (var mod in Session.Mods) + { + if (mod.PublishedFileId == 1918681825 || mod.PublishedFileId == 2496225055 || mod.PublishedFileId == 2726343161) + WcActive = true; + + else if (mod.Name == "WeaponCore" || mod.Name == "CoreSystems") + WcActive = true; + + else if (mod.PublishedFileId == 2200451495) + WaterMod = true; + + else if (mod.PublishedFileId == 1354870812) + RecolourableThrust = true; + + } + } + + internal bool PlayerInit() + { + try + { + //if (MyAPIGateway.Session.LocalHumanPlayer == null) + // return false; + + List players = new List(); + MyAPIGateway.Multiplayer.Players.GetPlayers(players); + + for (int i = 0; i < players.Count; i++) + PlayerConnected(players[i].IdentityId); + + return true; + } + catch (Exception ex) + { + Logs.WriteLine($"Caught exception in PlayerInit() - {ex}"); + } + + return false; + } + + internal void UpdateWaters() + { + if (IsClient && PlayersLoaded && MyAPIGateway.Session.Player?.Character != null) + { + var character = MyAPIGateway.Session.Player.Character.PositionComp.WorldAABB.Center; + var closestPlanet = MyGamePruningStructure.GetClosestPlanet(character); + if (closestPlanet.EntityId != 0 && !PlanetMap.ContainsKey(closestPlanet.EntityId)) + PlanetTemp.TryAdd(closestPlanet, closestPlanet.EntityId); + } + + if (!PlanetTemp.IsEmpty) + { + foreach (var planetToAdd in PlanetTemp) + { + if (planetToAdd.Key.EntityId != 0) + PlanetMap.TryAdd(planetToAdd.Key.EntityId, planetToAdd.Key); + } + + PlanetTemp.Clear(); + } + + foreach (var planet in PlanetMap.Values) + { + WaterData data; + if (WaterModAPI.HasWater(planet)) + { + if (!WaterMap.TryGetValue(planet.EntityId, out data)) + { + data = new WaterData(planet); + WaterMap[planet.EntityId] = data; + } + + var radiusInfo = WaterModAPI.GetPhysical(planet); + data.Centre = radiusInfo.Item1; + data.Radius = radiusInfo.Item2; + } + else WaterMap.TryRemove(planet.EntityId, out data); + } + } + + internal void UpdateEnforcement(StealthSettings settings) + { + Enforced = true; + Logs.WriteLine($"Config settings loaded"); + + JumpPenalty = settings.JumpPenalty; + Transparency = settings.Transparency; + ShieldDelay = settings.ShieldDelay; + FadeTime = settings.FadeTime; + DamageThreshold = settings.DamageThreshold; + DisableShields = settings.DisableShields; + DisableWeapons = settings.DisableWeapons; + HideThrusterFlames = settings.HideThrusterFlames; + WorkInWater = settings.WorkInWater; + WorkOutOfWater = settings.WorkOutOfWater; + WaterTransitionDepth = settings.WaterTransitionDepth; + RevealOnDamage = settings.RevealOnDamage; + + WaterOffsetSqr = WaterTransitionDepth * Math.Abs(WaterTransitionDepth); + TrackWater = WaterMod && WorkInWater != WorkOutOfWater; + TrackDamage = DamageThreshold > 0; + + FadeSteps = FadeTime / FADE_INTERVAL + 1; + + foreach (var drive in settings.DriveConfigs) + { + var def = new Definitions.DriveDefinition(drive.Duration, drive.PowerScale, drive.SignalRangeScale); + DriveDefinitions[drive.Subtype] = def; + } + + foreach (var sink in settings.SinkConfigs) + { + var def = new Definitions.SinkDefinition(sink.Duration, sink.Power, sink.DoDamage); + SinkDefinitions[sink.Subtype] = def; + } + + StealthFlag = (EntityFlags)(DisableWeapons ? IsStealthedFlag + 4 : IsStealthedFlag); + } + + internal void RemoveEdges() + { + var defs = MyDefinitionManager.Static.GetAllDefinitions(); + foreach (var def in defs) + { + if (def is MyCubeBlockDefinition && def.Id.SubtypeName.Contains("Armor")) + { + var armorDef = (MyCubeBlockDefinition)def; + if (armorDef.CubeDefinition == null) + continue; + + armorDef.CubeDefinition.ShowEdges = false; + } + } + } + + internal void RefreshTerminal(IMyFunctionalBlock block, IMyTerminalControlOnOffSwitch control) + { + block.RefreshCustomInfo(); + + if (control != null) + { + var originalSetting = control.Getter(block); + control.Setter(block, !originalSetting); + control.Setter(block, originalSetting); + } + } + + internal static void DrawBox(MyOrientedBoundingBoxD obb, Color color) + { + var box = new BoundingBoxD(-obb.HalfExtent, obb.HalfExtent); + var wm = MatrixD.CreateFromTransformScale(obb.Orientation, obb.Center, Vector3D.One); + var material = MyStringId.GetOrCompute("Square"); + MySimpleObjectDraw.DrawTransparentBox(ref wm, ref box, ref color, MySimpleObjectRasterizer.Wireframe, 1, 0.01f, null, material); + } + + internal static void DrawScaledPoint(Vector3D pos, double radius, Color color, int divideRatio = 20, bool solid = true, float lineWidth = 0.5f) + { + var posMatCenterScaled = MatrixD.CreateTranslation(pos); + var posMatScaler = MatrixD.Rescale(posMatCenterScaled, radius); + var material = MyStringId.GetOrCompute("Square"); + MySimpleObjectDraw.DrawTransparentSphere(ref posMatScaler, 1f, ref color, solid ? MySimpleObjectRasterizer.Solid : MySimpleObjectRasterizer.Wireframe, divideRatio, null, material, lineWidth); + } + + internal static void DrawLine(Vector3D start, Vector3D end, Vector4 color, float width) + { + var c = color; + MySimpleObjectDraw.DrawLine(start, end, _square, ref c, width); + } + + internal static void DrawLine(Vector3D start, Vector3D dir, Vector4 color, float width, float length) + { + var c = color; + MySimpleObjectDraw.DrawLine(start, start + (dir * length), _square, ref c, width); + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionNetwork.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionNetwork.cs new file mode 100644 index 000000000..086091a16 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionNetwork.cs @@ -0,0 +1,126 @@ +using ProtoBuf; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; + +namespace StealthSystem +{ + public partial class StealthSession + { + internal const ushort ServerPacketId = 65347; + internal const ushort ClientPacketId = 65348; + + public static void SendPacketToServer(Packet packet) + { + var rawData = MyAPIGateway.Utilities.SerializeToBinary(packet); + MyModAPIHelper.MyMultiplayer.Static.SendMessageToServer(ServerPacketId, rawData, true); + } + + public static void SendPacketToClient(Packet packet, ulong client) + { + var rawData = MyAPIGateway.Utilities.SerializeToBinary(packet); + MyModAPIHelper.MyMultiplayer.Static.SendMessageTo(ClientPacketId, rawData, client, true); + } + + public static void SendPacketToClients(Packet packet, List clients) + { + var rawData = MyAPIGateway.Utilities.SerializeToBinary(packet); + + foreach (var client in clients) + MyModAPIHelper.MyMultiplayer.Static.SendMessageTo(ClientPacketId, rawData, client, true); + } + + internal void ProcessPacket(ushort id, byte[] rawData, ulong sender, bool reliable) + { + try + { + var packet = MyAPIGateway.Utilities.SerializeFromBinary(rawData); + if (packet == null || packet.EntityId != 0 && !DriveMap.ContainsKey(packet.EntityId)) + { + Logs.WriteLine($"Invalid packet - null:{packet == null}"); + return; + } + + var comp = packet.EntityId == 0 ? null : DriveMap[packet.EntityId]; + switch (packet.Type) + { + case PacketType.UpdateState: + var uPacket = packet as UpdateStatePacket; + comp.EnterStealth = uPacket.EnterStealth && !comp.StealthActive; + comp.ExitStealth = uPacket.ExitStealth && comp.StealthActive; + break; + case PacketType.UpdateDuration: + var dPacket = packet as UpdateDurationPacket; + //comp.RemainingDuration += dPacket.DurationChange; + comp.TotalTime += dPacket.DurationChange; + break; + case PacketType.Replicate: + var rPacket = packet as ReplicationPacket; + if (rPacket.Fresh) + comp.ReplicatedClients.Add(sender); + else + comp.ReplicatedClients.Remove(sender); + break; + case PacketType.Settings: + var sPacket = packet as SettingsPacket; + UpdateEnforcement(sPacket.Settings); + break; + default: + Logs.WriteLine($"Invalid packet type - {packet.GetType()}"); + break; + } + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in ProcessPacket: {ex}"); + } + + } + + } + + [ProtoContract] + [ProtoInclude(4, typeof(UpdateStatePacket))] + [ProtoInclude(5, typeof(UpdateDurationPacket))] + [ProtoInclude(6, typeof(ReplicationPacket))] + [ProtoInclude(7, typeof(SettingsPacket))] + public class Packet + { + [ProtoMember(1)] internal long EntityId; + [ProtoMember(2)] internal PacketType Type; + } + + [ProtoContract] + public class UpdateStatePacket : Packet + { + [ProtoMember(1)] internal bool EnterStealth; + [ProtoMember(2)] internal bool ExitStealth; + } + + [ProtoContract] + public class UpdateDurationPacket : Packet + { + [ProtoMember(1)] internal int DurationChange; + } + + [ProtoContract] + public class ReplicationPacket : Packet + { + [ProtoMember(1)] internal bool Fresh; + } + + [ProtoContract] + public class SettingsPacket : Packet + { + [ProtoMember(1)] internal StealthSettings Settings; + } + + public enum PacketType + { + UpdateState, + UpdateDuration, + Replicate, + Settings + } + +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionRun.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionRun.cs new file mode 100644 index 000000000..59e9ba63f --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Session/SessionRun.cs @@ -0,0 +1,130 @@ +using Sandbox.ModAPI; +using VRage.Game.Components; +using VRageMath; +using Sandbox.Game.Entities; +using Sandbox.Game; +using VRage.Game; + +namespace StealthSystem +{ + [MySessionComponentDescriptor(MyUpdateOrder.AfterSimulation)] + public partial class StealthSession : MySessionComponentBase + { + internal static int Tick; + internal int TickMod15; + internal int TickMod20; + internal int TickMod60; + internal bool Tick10; + internal bool Tick20; + internal bool Tick60; + internal bool Tick120; + internal bool Tick600; + internal bool Tick3600; + internal bool IsServer; + internal bool IsClient; + internal bool IsDedicated; + internal bool PlayersLoaded; + + public override void LoadData() + { + IsServer = MyAPIGateway.Multiplayer.MultiplayerActive && MyAPIGateway.Session.IsServer; + IsClient = MyAPIGateway.Multiplayer.MultiplayerActive && !MyAPIGateway.Session.IsServer; + IsDedicated = MyAPIGateway.Utilities.IsDedicated; + + LargeBox = new BoundingBoxD(-_large, _large); + SmallBox = new BoundingBoxD(-_small, _small); + + Logs.InitLogs(); + + ModPath = ModContext.ModPath; + ModCheck(); + + //RemoveEdges(); + CreateTerminalControls(); + + MyEntities.OnEntityCreate += OnEntityCreate; + //MyEntities.OnEntityDelete += OnEntityDelete; + MyEntities.OnCloseAll += OnCloseAll; + MyAPIGateway.TerminalControls.CustomControlGetter += CustomControlGetter; + MyAPIGateway.TerminalControls.CustomActionGetter += CustomActionGetter; + } + + public override void BeforeStart() + { + if (IsClient) + MyAPIGateway.Multiplayer.RegisterSecureMessageHandler(ClientPacketId, ProcessPacket); + else if (IsServer) + { + MyAPIGateway.Multiplayer.RegisterSecureMessageHandler(ServerPacketId, ProcessPacket); + MyVisualScriptLogicProvider.PlayerRespawnRequest += PlayerConnected; + } + + if (!IsClient) + MyAPIGateway.Session.DamageSystem.RegisterAfterDamageHandler(0, AfterDamageApplied); + + ConfigSettings = new Settings(this); + + APIServer.Load(); + + if (WaterMod) + WaterAPI.Register(); + } + + public override void UpdateAfterSimulation() + { + Tick++; + + TickMod15 = Tick % 15; + TickMod20 = Tick % 20; + TickMod60 = Tick % 60; + + Tick10 = Tick % 10 == 0; + Tick20 = TickMod20 == 0; + Tick60 = TickMod60 == 0; + Tick120 = Tick % 120 == 0; + Tick600 = Tick % 600 == 0; + Tick3600 = Tick % 3600 == 0; + + if (!PlayersLoaded && IsServer && PlayerInit()) + PlayersLoaded = true; + + if (TrackWater && (Tick3600 || Tick60 && WaterMap.IsEmpty)) + UpdateWaters(); + + if (Enforced && (!_startBlocks.IsEmpty || !_startGrids.IsEmpty)) + StartComps(); + + CompLoop(); + } + + protected override void UnloadData() + { + if (IsClient) + MyAPIGateway.Multiplayer.UnregisterSecureMessageHandler(ClientPacketId, ProcessPacket); + else if (IsServer) + { + MyAPIGateway.Multiplayer.UnregisterSecureMessageHandler(ServerPacketId, ProcessPacket); + MyVisualScriptLogicProvider.PlayerRespawnRequest -= PlayerConnected; + } + + MyEntities.OnEntityCreate -= OnEntityCreate; + MyEntities.OnCloseAll -= OnCloseAll; + + MyAPIGateway.TerminalControls.CustomControlGetter -= CustomControlGetter; + MyAPIGateway.TerminalControls.CustomActionGetter -= CustomActionGetter; + + Logs.Close(); + APIServer.Unload(); + if (WaterMod) + WaterAPI.Unregister(); + + Clean(); + } + + public override MyObjectBuilder_SessionComponent GetObjectBuilder() + { + return base.GetObjectBuilder(); + } + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Support/WaterModAPI.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Support/WaterModAPI.cs new file mode 100644 index 000000000..34ba4ba3e --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Support/WaterModAPI.cs @@ -0,0 +1,281 @@ +using Sandbox.Game.Entities; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using VRage; +using VRage.Game; +using VRage.Game.Components; +using VRage.Utils; +using VRageMath; + +namespace Jakaria.API +{ + //See the steam guide for how to use this + //https://steamcommunity.com/sharedfiles/filedetails/?id=2639207010 + /// + /// https://github.com/jakarianstudios/SE-Water/blob/master/API/WaterModAPI.cs + /// + + [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate)] + public class WaterModAPI : MySessionComponentBase + { + public static string ModName = ""; + public const ushort ModHandlerID = 50271; + public const int ModAPIVersion = 19; + public static bool Registered { get; private set; } = false; + + private static Dictionary ModAPIMethods; + + private static Func _VerifyVersion; + + private static Func _IsUnderwater; + private static Func _LineIntersectsWater; + private static Action, ICollection, MyPlanet> _LineIntersectsWaterList; + private static Func _GetClosestWater; + private static Func _SphereIntersectsWater; + private static Action, ICollection, MyPlanet> _SphereIntersectsWaterList; + private static Func _GetClosestSurfacePoint; + private static Action, ICollection, MyPlanet> _GetClosestSurfacePointList; + private static Func _GetDepth; + private static Action _ForceSync; + private static Action _RunCommand; + private static Func _GetUpDirection; + private static Func _HasWater; + private static Func _GetBuoyancyMultiplier; + private static Func _GetCrushDepth; + + private static Func> _GetPhysicalData; + private static Func> _GetWaveData; + private static Func> _GetRenderData; + private static Func> _GetPhysicsData; + private static Func> _GetTideData; + private static Func _GetTideDirection; + + private static Action _CreateSplash; + private static Action _CreateBubble; + private static Action _CreatePhysicsSplash; + + /// + /// Returns true if the version is compatibile with the API Backend, this is automatically called + /// + public static bool VerifyVersion(int Version, string ModName) => _VerifyVersion?.Invoke(Version, ModName) ?? false; + + /// + /// Returns true if the provided planet entity ID has water + /// + public static bool HasWater(MyPlanet planet) => _HasWater?.Invoke(planet) ?? false; + + /// + /// Returns true if the position is underwater + /// + public static bool IsUnderwater(Vector3D Position, MyPlanet ID = null) => _IsUnderwater?.Invoke(Position, ID) ?? false; + + /// + /// Overwater = 0, ExitsWater = 1, EntersWater = 2, Underwater = 3 + /// + public static int LineIntersectsWater(LineD Line, MyPlanet ID = null) => _LineIntersectsWater?.Invoke(Line, ID) ?? 0; + + /// + /// Overwater = 0, ExitsWater = 1, EntersWater = 2, Underwater = 3 + /// + public static void LineIntersectsWater(List Lines, ICollection Intersections, MyPlanet ID = null) => _LineIntersectsWaterList?.Invoke(Lines, Intersections, ID); + + /// + /// Gets the closest water to the provided water + /// + public static MyPlanet GetClosestWater(Vector3D Position) => _GetClosestWater?.Invoke(Position) ?? null; + + /// + /// Overwater = 0, ExitsWater = 1, EntersWater = 2, Underwater = 3 + /// + public static int SphereIntersectsWater(BoundingSphereD Sphere, MyPlanet ID = null) => _SphereIntersectsWater?.Invoke(Sphere, ID) ?? 0; + + /// + /// Overwater = 0, ExitsWater = 1, EntersWater = 2, Underwater = 3 + /// + public static void SphereIntersectsWater(List Spheres, ICollection Intersections, MyPlanet ID = null) => _SphereIntersectsWaterList?.Invoke(Spheres, Intersections, ID); + + + /// + /// Returns the closest position on the water surface + /// + public static Vector3D GetClosestSurfacePoint(Vector3D Position, MyPlanet ID = null) => _GetClosestSurfacePoint?.Invoke(Position, ID) ?? Position; + + /// + /// Returns the closest position on the water surface + /// + public static void GetClosestSurfacePoint(List Positions, ICollection Points, MyPlanet ID = null) => _GetClosestSurfacePointList?.Invoke(Positions, Points, ID); + + + /// + /// Returns the depth the position is underwater + /// + public static float? GetDepth(Vector3D Position, MyPlanet ID = null) => _GetDepth?.Invoke(Position, ID) ?? null; + + /// + /// Creates a splash at the provided position + /// + public static void CreateSplash(Vector3D Position, float Radius, bool Audible) => _CreateSplash?.Invoke(Position, Radius, Audible); + + /// + /// Creates a physical splash at the provided position (Particles outside of the water) + /// + public static void CreatePhysicsSplash(Vector3D Position, Vector3D Velocity, float Radius, int Count = 1) => _CreatePhysicsSplash?.Invoke(Position, Velocity, Radius, Count); + + /// + /// Creates a bubble at the provided position + /// + public static void CreateBubble(Vector3D Position, float Radius) => _CreateBubble?.Invoke(Position, Radius); + + /// + /// Forces the server to sync with the client + /// + public static void ForceSync() => _ForceSync?.Invoke(); + + /// + /// Simulates a command being run by the client, EX: /wcreate, client must have permissions to run the command + /// + public static void RunCommand(string MessageText) => _RunCommand?.Invoke(MessageText); + + /// + /// Gets the up direction at the position + /// + public static Vector3D GetUpDirection(Vector3D Position, MyPlanet ID = null) => _GetUpDirection?.Invoke(Position, ID) ?? Vector3D.Up; + + /// + /// Gets the buoyancy multiplier to help calculate buoyancy of a grid, used in the final calculation of grid buoyancy. + /// + public static float GetBuoyancyMultiplier(Vector3D Position, MyCubeSize GridSize, MyPlanet ID = null) => _GetBuoyancyMultiplier?.Invoke(Position, GridSize, ID) ?? 0; + + /// + /// Gets crush damage + /// + [Obsolete] + public static float GetCrushDepth(MyPlanet planet) => _GetCrushDepth?.Invoke(planet) ?? 500; + + /// + /// Gets position, radius, minimum radius, and maximum radius- in that order. + /// + public static MyTuple GetPhysical(MyPlanet planet) => (MyTuple)(_GetPhysicalData?.Invoke(planet) ?? null); + + /// + /// Gets wave height, wave speed, wave scale, and seed- in that order. + /// + public static MyTuple GetWaveData(MyPlanet planet) => (MyTuple)(_GetWaveData?.Invoke(planet) ?? null); + + /// + /// Gets fog color, transparency toggle, and lighting toggle- in that order. + /// + public static MyTuple GetRenderData(MyPlanet planet) => (MyTuple)(_GetRenderData?.Invoke(planet) ?? null); + + /// + /// Gets tide height and tide speed- in that order. + /// + public static MyTuple GetTideData(MyPlanet planet) => (MyTuple)(_GetTideData?.Invoke(planet) ?? null); + + /// + /// Gets density and buoyancy multiplier- in that order. + /// + public static MyTuple GetPhysicsData(MyPlanet planet) => (MyTuple)(_GetPhysicsData?.Invoke(planet) ?? null); + + /// + /// Gets the direction of high tide, from center of the water to the surface + /// + public static Vector3D GetTideDirection(MyPlanet planet) => (Vector3D)(_GetTideDirection?.Invoke(planet) ?? null); + + /// + /// Do not use. This is for the session component to register automatically + /// + public override void LoadData() + { + Register(); + } + + /// + /// Do not use. This is for the session component to register automatically + /// + protected override void UnloadData() + { + Unregister(); + } + + /// + /// Registers the mod and sets the mod name if it is not already set + /// + public void Register() + { + MyAPIGateway.Utilities.RegisterMessageHandler(ModHandlerID, ModHandler); + + if (ModName == "") + { + if (MyAPIGateway.Utilities.GamePaths.ModScopeName.Contains("_")) + ModName = MyAPIGateway.Utilities.GamePaths.ModScopeName.Split('_')[1]; + else + ModName = MyAPIGateway.Utilities.GamePaths.ModScopeName; + } + } + + /// + /// Unregisters the mod + /// + public void Unregister() + { + MyAPIGateway.Utilities.UnregisterMessageHandler(ModHandlerID, ModHandler); + Registered = false; + } + + private void ModHandler(object obj) + { + if (obj == null) + { + return; + } + + if (obj is Dictionary) + { + ModAPIMethods = (Dictionary)obj; + _VerifyVersion = (Func)ModAPIMethods["VerifyVersion"]; + + Registered = VerifyVersion(ModAPIVersion, ModName); + + MyLog.Default.WriteLine("Registering WaterAPI for Mod '" + ModName + "'"); + + if (Registered) + { + try + { + _IsUnderwater = (Func)ModAPIMethods["IsUnderwater"]; + _GetClosestWater = (Func)ModAPIMethods["GetClosestWater"]; + _SphereIntersectsWater = (Func)ModAPIMethods["SphereIntersectsWater"]; + _SphereIntersectsWaterList = (Action, ICollection, MyPlanet>)ModAPIMethods["SphereIntersectsWaterList"]; + _GetClosestSurfacePoint = (Func)ModAPIMethods["GetClosestSurfacePoint"]; + _GetClosestSurfacePointList = (Action, ICollection, MyPlanet>)ModAPIMethods["GetClosestSurfacePointList"]; + _LineIntersectsWater = (Func)ModAPIMethods["LineIntersectsWater"]; + _LineIntersectsWaterList = (Action, ICollection, MyPlanet>)ModAPIMethods["LineIntersectsWaterList"]; + _GetDepth = (Func)ModAPIMethods["GetDepth"]; + _CreateSplash = (Action)ModAPIMethods["CreateSplash"]; + _CreatePhysicsSplash = (Action)ModAPIMethods["CreatePhysicsSplash"]; + _CreateBubble = (Action)ModAPIMethods["CreateBubble"]; + _ForceSync = (Action)ModAPIMethods["ForceSync"]; + _RunCommand = (Action)ModAPIMethods["RunCommand"]; + _GetUpDirection = (Func)ModAPIMethods["GetUpDirection"]; + _HasWater = (Func)ModAPIMethods["HasWater"]; + _GetBuoyancyMultiplier = (Func)ModAPIMethods["GetBuoyancyMultiplier"]; + _GetCrushDepth = (Func)ModAPIMethods["GetCrushDepth"]; + _GetPhysicalData = (Func>)ModAPIMethods["GetPhysicalData"]; + _GetWaveData = (Func>)ModAPIMethods["GetWaveData"]; + _GetRenderData = (Func>)ModAPIMethods["GetRenderData"]; + _GetPhysicsData = (Func>)ModAPIMethods["GetPhysicsData"]; + _GetTideData = (Func>)ModAPIMethods["GetTideData"]; + _GetTideDirection = (Func)ModAPIMethods["GetTideDirection"]; + } + catch (Exception e) + { + MyAPIGateway.Utilities.ShowMessage("WaterMod", "Mod '" + ModName + "' encountered an error when registering the Water Mod API, see log for more info."); + MyLog.Default.WriteLine("WaterMod: " + e); + } + } + } + } + } +} \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/EmissiveValues.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/EmissiveValues.cs new file mode 100644 index 000000000..d093238bf --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/EmissiveValues.cs @@ -0,0 +1,48 @@ +using Sandbox.ModAPI; +using VRage.Game.Components; +using VRageMath; + +namespace StealthSystem +{ + [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate)] + public class EmissiveValues : MySessionComponentBase + { + internal static Color GREEN = new Color(0, 255, 0); + internal static Color RED = new Color(255, 0, 0); + + public override void BeforeStart() + { + if (MyAPIGateway.Utilities.IsDedicated) return; + + UpdateEmissiveValues(); + + } + + private void UpdateEmissiveValues() + { + bool aqdVisualsPresent = false; + bool emissiveColorsPresent = false; + + foreach (var mod in MyAPIGateway.Session.Mods) + { + if (mod.PublishedFileId == 2244563617) // AQD - Visuals + aqdVisualsPresent = true; + else if (mod.PublishedFileId == 2212516940) // Emissive Colors - Red / Green Color Vision Deficiency + emissiveColorsPresent = true; + + if (aqdVisualsPresent && emissiveColorsPresent) + break; + } + + if (aqdVisualsPresent) + { + RED = new Color(171, 42, 29); + GREEN = emissiveColorsPresent ? new Color(10, 255, 25) : new Color(60, 163, 33); + } + else if (emissiveColorsPresent) + { + GREEN = new Color(10, 255, 25); + } + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Logs.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Logs.cs new file mode 100644 index 000000000..ee6246781 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Logs.cs @@ -0,0 +1,98 @@ +using Sandbox.ModAPI; +using System; +using System.IO; +using VRage.Game.ModAPI; + +namespace StealthSystem +{ + internal class Logs + { + internal const string LOG_PREFIX = "StealthMod_"; + internal const string LOG_SUFFIX = ".log"; + internal const int LOGS_TO_KEEP = 5; + + internal static TextWriter TextWriter; + + internal static void InitLogs() + { + int last = LOGS_TO_KEEP - 1; + string lastName = LOG_PREFIX + last + LOG_SUFFIX; + if (MyAPIGateway.Utilities.FileExistsInLocalStorage(lastName, typeof(Logs))) + MyAPIGateway.Utilities.DeleteFileInLocalStorage(lastName, typeof(Logs)); + + if (last > 0) + { + for (int i = last; i > 0; i--) + { + string oldName = LOG_PREFIX + (i - 1) + LOG_SUFFIX; + string newName = LOG_PREFIX + i + LOG_SUFFIX; + RenameFileInLocalStorage(oldName, newName, typeof(Logs)); + } + } + + string fileName = LOG_PREFIX + 0 + LOG_SUFFIX; + TextWriter = MyAPIGateway.Utilities.WriteFileInLocalStorage(fileName, typeof(Logs)); + + var message = $"{DateTime.Now:dd-MM-yy HH-mm-ss} - Logging Started"; + TextWriter.WriteLine(message); + TextWriter.WriteLine(" Tick - Log"); + TextWriter.Flush(); + + } + + internal static void RenameFileInLocalStorage(string oldName, string newName, Type anyObjectInYourMod) + { + if (!MyAPIGateway.Utilities.FileExistsInLocalStorage(oldName, anyObjectInYourMod)) + return; + + if (MyAPIGateway.Utilities.FileExistsInLocalStorage(newName, anyObjectInYourMod)) + return; + + using (var read = MyAPIGateway.Utilities.ReadFileInLocalStorage(oldName, anyObjectInYourMod)) + { + using (var write = MyAPIGateway.Utilities.WriteFileInLocalStorage(newName, anyObjectInYourMod)) + { + write.Write(read.ReadToEnd()); + write.Flush(); + write.Dispose(); + } + } + + MyAPIGateway.Utilities.DeleteFileInLocalStorage(oldName, anyObjectInYourMod); + } + + internal static void WriteLine(string text) + { + string line = $"{StealthSession.Tick,6} - " + text; + TextWriter.WriteLine(line); + TextWriter.Flush(); + } + + internal static void Close() + { + var message = $"{DateTime.Now:dd-MM-yy HH-mm-ss} - Logging Stopped"; + TextWriter.WriteLine(message); + + TextWriter.Flush(); + TextWriter.Close(); + TextWriter.Dispose(); + } + + internal static void CheckGrid() + { + if (MyAPIGateway.Session.LocalHumanPlayer?.Character == null) return; + + var from = MyAPIGateway.Session.LocalHumanPlayer.Character.PositionComp.WorldMatrixRef.Translation; + var to = from + MyAPIGateway.Session.LocalHumanPlayer.Character.PositionComp.WorldMatrixRef.Forward * 100; + IHitInfo info; + MyAPIGateway.Physics.CastRay(from, to, out info); + + if (info == null) return; + + var grid = info.HitEntity as IMyCubeGrid; + if (grid == null) return; + + Logs.WriteLine($"Grid: {grid.DisplayName} - has flag: {((uint)grid.Flags & StealthSession.IsStealthedFlag) > 0}"); + } + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Settings.cs b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Settings.cs new file mode 100644 index 000000000..5b414ee95 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Data/Scripts/Stealth System/Utils/Settings.cs @@ -0,0 +1,342 @@ +using ProtoBuf; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using System.IO; + +namespace StealthSystem +{ + internal class Settings + { + private readonly StealthSession _session; + + internal const string CONFIG_FILE = "StealthMod.cfg"; + internal const int CONFIG_VERSION = 8; + + internal StealthSettings Config; + + internal Settings(StealthSession session) + { + _session = session; + + LoadConfig(); + } + + private void LoadConfig() + { + try + { + if (MyAPIGateway.Utilities.FileExistsInWorldStorage(CONFIG_FILE, typeof(StealthSettings))) + { + + var writer = MyAPIGateway.Utilities.ReadFileInWorldStorage(CONFIG_FILE, typeof(StealthSettings)); + + StealthSettings xmlData = null; + + try { xmlData = MyAPIGateway.Utilities.SerializeFromXML(writer.ReadToEnd()); } + catch (Exception ex) + { + writer.Dispose(); + Logs.WriteLine($"Exception in SerializeFromXML: {ex}"); + } + + writer.Dispose(); + + if (xmlData?.Version == CONFIG_VERSION) + { + Logs.WriteLine($"Found up to date config file"); + + Config = xmlData; + CorruptionCheck(); + SaveConfig(); + } + else + { + var versionStr = xmlData != null ? xmlData.Version.ToString() : "null"; + Logs.WriteLine($"Found config file with version {versionStr} : updating to version {CONFIG_VERSION}"); + + GenerateConfig(xmlData); + } + } + else + { + Logs.WriteLine($"No config file found, generating..."); + + GenerateConfig(); + } + + _session.UpdateEnforcement(Config); + } + catch (Exception ex) + { + Logs.WriteLine($"Exception in LoadConfig: {ex}"); + } + } + + private void GenerateConfig(StealthSettings oldSettings = null) + { + + if (oldSettings != null) + { + RebuildConfig(oldSettings); + } + else + Config = new StealthSettings { Version = CONFIG_VERSION }; + + CorruptionCheck(); + SaveConfig(); + } + + private void RebuildConfig(StealthSettings oldSettings) + { + Config = new StealthSettings { Version = CONFIG_VERSION }; + + var fade = oldSettings.Version < 4; + var five = oldSettings.Version < 5; + var six = oldSettings.Version < 6; + var seven = oldSettings.Version < 7; + var eight = oldSettings.Version < 8; + + Config.FadeTime = fade ? 150 : oldSettings.FadeTime; + Config.ShieldDelay = five ? 300 : oldSettings.ShieldDelay; + Config.JumpPenalty = oldSettings.JumpPenalty; + Config.Transparency = oldSettings.Transparency; + Config.DisableShields = five ? true : oldSettings.DisableShields; + Config.DamageThreshold = oldSettings.DamageThreshold; + Config.DisableWeapons = six ? true : oldSettings.DisableWeapons; + Config.HideThrusterFlames = seven ? true : oldSettings.HideThrusterFlames; + Config.WorkInWater = eight ? true : oldSettings.WorkInWater; + Config.WorkOutOfWater = eight ? true : oldSettings.WorkOutOfWater; + Config.WaterTransitionDepth = eight ? 0f : oldSettings.WaterTransitionDepth; + + Config.DriveConfig = oldSettings.DriveConfig; + Config.SinkConfig = oldSettings.SinkConfig; + + Config.DriveConfigs = oldSettings.DriveConfigs; + Config.SinkConfigs = oldSettings.SinkConfigs; + + + } + + private void CorruptionCheck() + { + if (Config.FadeTime < 0) + { + Config.FadeTime = 210; + Logs.WriteLine($"Config error: FadeTime cannot be negative!"); + } + if (Config.ShieldDelay < 0) + { + Config.ShieldDelay = 300; + Logs.WriteLine($"Config error: ShieldDelay cannot be negative!"); + } + if (Config.JumpPenalty < 0) + { + Config.JumpPenalty = 180; + Logs.WriteLine($"Config error: JumpPenalty cannot be negative!"); + } + if (Config.Transparency <= 0) + { + Config.Transparency = 0.9f; + Logs.WriteLine($"Config error: Transparency must be greater than zero!"); + } + + if (Config.WorkInWater == false && Config.WorkOutOfWater == false) + { + Config.WorkInWater = Config.WorkOutOfWater = true; + Logs.WriteLine($"Config error: WorkInWater and WorkOutOfWater cannot both be false!"); + } + + if (Config.DriveConfigs == null || Config.DriveConfigs.Length == 0) + { + var oldDrive = Config.DriveConfig; + Config.DriveConfigs = new StealthSettings.DriveSettings[3] + { + new StealthSettings.DriveSettings(oldDrive) + { + Subtype = "StealthDrive", + }, + new StealthSettings.DriveSettings(oldDrive) + { + Subtype = "StealthDriveSmall", + }, + new StealthSettings.DriveSettings(oldDrive) + { + Subtype = "StealthDrive1x1", + Duration = 600, + }, + }; + Logs.WriteLine($"Config error: No Drive configs found, regenerating..."); + } + else + { + var drives = new List(); + for (int i = 0; i < Config.DriveConfigs.Length; i++) + { + var drive = Config.DriveConfigs[i]; + if (string.IsNullOrEmpty(drive.Subtype)) + { + Logs.WriteLine($"Drive config error: Invalid SubtypeId!"); + continue; + } + + if (drive.Duration <= 0) + { + drive.Duration = 1800; + Logs.WriteLine($"Drive config error ({drive.Subtype}): Duration must be greater than zero!"); + } + if (drive.PowerScale <= 0f) + { + drive.PowerScale = 0.02f; + Logs.WriteLine($"Drive config error ({drive.Subtype}): PowerScale must be greater than zero!"); + } + if (drive.SignalRangeScale <= 0f) + { + drive.SignalRangeScale = 20f; + Logs.WriteLine($"Drive config error ({drive.Subtype}): SignalRangeScale must be greater than zero!"); + } + + drives.Add(drive); + } + if (drives.Count > 0) + Config.DriveConfigs = drives.ToArray(); + } + + if (Config.SinkConfigs == null || Config.SinkConfigs.Length == 0) + { + var oldSink = Config.SinkConfig; + Config.SinkConfigs = new StealthSettings.SinkSettings[2] + { + new StealthSettings.SinkSettings(oldSink) + { + Subtype = "StealthHeatSink", + }, + new StealthSettings.SinkSettings(oldSink) + { + Subtype = "StealthHeatSinkSmall", + }, + }; + Logs.WriteLine($"Config error: No Heatsink configs found, regenerating..."); + } + else + { + var sinks = new List(); + for (int i = 0; i < Config.SinkConfigs.Length; i++) + { + var sink = Config.SinkConfigs[i]; + if (string.IsNullOrEmpty(sink.Subtype)) + { + Logs.WriteLine($"Heatsink config error: Invalid SubtypeId!"); + continue; + } + + if (sink.Duration <= 0) + { + sink.Duration = 900; + Logs.WriteLine($"Heatsink config error ({sink.Subtype}): Duration must be greater than zero!"); + } + if (sink.Power <= 0f) + { + sink.Power = 10f; + Logs.WriteLine($"Heatsink config error ({sink.Subtype}): Power must be greater than zero!"); + } + + sinks.Add(sink); + } + if (sinks.Count > 0) + Config.SinkConfigs = sinks.ToArray(); + } + + Config.DriveConfig = null; + Config.SinkConfig = null; + + } + + private void SaveConfig() + { + MyAPIGateway.Utilities.DeleteFileInWorldStorage(CONFIG_FILE, typeof(StealthSettings)); + var writer = MyAPIGateway.Utilities.WriteFileInWorldStorage(CONFIG_FILE, typeof(StealthSettings)); + var data = MyAPIGateway.Utilities.SerializeToXML(Config); + Write(writer, data); + } + + private static void Write(TextWriter writer, string data) + { + writer.Write(data); + writer.Flush(); + writer.Dispose(); + } + } + + [ProtoContract] + public class StealthSettings + { + [ProtoMember(1)] public int Version = -1; + [ProtoMember(2)] public int FadeTime = 210; + [ProtoMember(3)] public int ShieldDelay = 300; + [ProtoMember(4)] public int JumpPenalty = 180; + + [ProtoMember(7)] public float Transparency = 0.9f; + [ProtoMember(8)] public bool DisableShields = true; + [ProtoMember(9)] public int DamageThreshold = 1000; + [ProtoMember(10)] public bool DisableWeapons = true; + [ProtoMember(11)] public bool HideThrusterFlames = true; + [ProtoMember(12)] public bool WorkInWater = true; + [ProtoMember(13)] public bool WorkOutOfWater = true; + [ProtoMember(14)] public float WaterTransitionDepth = 0f; + [ProtoMember(15)] public bool RevealOnDamage = true; + + [ProtoMember(20)] public DriveSettings DriveConfig; + [ProtoMember(21)] public SinkSettings SinkConfig; + + [ProtoMember(30)] public DriveSettings[] DriveConfigs; + [ProtoMember(31)] public SinkSettings[] SinkConfigs; + + [ProtoContract] + public class DriveSettings + { + [ProtoMember(1)] public string Subtype; + [ProtoMember(2)] public int Duration = 1800; + [ProtoMember(3)] public float PowerScale = 0.02f; + [ProtoMember(4)] public float SignalRangeScale = 20f; + + public DriveSettings() + { + + } + + public DriveSettings(DriveSettings old) + { + if (old == null) return; + + Duration = old.Duration; + PowerScale = old.PowerScale; + SignalRangeScale = old.SignalRangeScale; + } + } + + [ProtoContract] + public class SinkSettings + { + [ProtoMember(1)] public string Subtype; + [ProtoMember(2)] public int Duration = 600; + [ProtoMember(3)] public float Power = 10f; + [ProtoMember(4)] public bool DoDamage = true; + + public SinkSettings() + { + + } + + public SinkSettings(SinkSettings old) + { + if (old == null) return; + + Duration = old.Duration; + Power = old.Power; + DoDamage = old.DoDamage; + } + } + + } +} diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.mwm new file mode 100644 index 000000000..1eedbbca2 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.sbc b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.sbc new file mode 100644 index 000000000..05c215b6b --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule.sbc @@ -0,0 +1,39 @@ + + + + + + CubeBlock + ARYX_TacticalModule + + DisplayName_ARYX_TacticalModule + Description_ARYX_TacticalModule + Textures\GUI\Icons\AstronautBackpack.dds + Large + TriangleMesh + + + Models\AWE_Aegis\ARYX_TacticalModule.mwm + + + + + + + + + + + + + + + + + + ARYX_TacticalModule + Z + Y + + + diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS1.mwm new file mode 100644 index 000000000..8eecf63c3 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS2.mwm new file mode 100644 index 000000000..31a0d40a8 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS3.mwm new file mode 100644 index 000000000..79b719a64 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_BS3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD1.mwm new file mode 100644 index 000000000..e5c9f5ccc Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD2.mwm new file mode 100644 index 000000000..a30694882 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD3.mwm new file mode 100644 index 000000000..eaea06c2f Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/AWE_Aegis/ARYX_TacticalModule_LOD3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1.mwm new file mode 100644 index 000000000..2cb1cc92e Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS1.mwm new file mode 100644 index 000000000..a66247ddf Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS2.mwm new file mode 100644 index 000000000..979bc9195 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS3.mwm new file mode 100644 index 000000000..6e4dc5c38 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_BS3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD1.mwm new file mode 100644 index 000000000..b2dd01f47 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD2.mwm new file mode 100644 index 000000000..ac9627c70 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD3.mwm new file mode 100644 index 000000000..3f8405d5e Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthDrive1x1_LOD3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink.mwm new file mode 100644 index 000000000..68b8e0e8c Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS1.mwm new file mode 100644 index 000000000..6fe24ce16 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS2.mwm new file mode 100644 index 000000000..9ca488cb5 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS3.mwm new file mode 100644 index 000000000..af2334420 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/large/StealthHeatSink_BS3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall.mwm new file mode 100644 index 000000000..b7b27e2b0 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS1.mwm new file mode 100644 index 000000000..57b8a8f81 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS2.mwm new file mode 100644 index 000000000..fe8e6f9eb Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS3.mwm new file mode 100644 index 000000000..8ea3c46cc Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_BS3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD1.mwm new file mode 100644 index 000000000..fffcb4d7e Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD2.mwm new file mode 100644 index 000000000..ef7ef5c6f Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD3.mwm new file mode 100644 index 000000000..07f290bf7 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthDriveSmall_LOD3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall.mwm new file mode 100644 index 000000000..3ef3c0f0f Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS1.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS1.mwm new file mode 100644 index 000000000..11f63b4a8 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS1.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS2.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS2.mwm new file mode 100644 index 000000000..ac6305c84 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS2.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS3.mwm b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS3.mwm new file mode 100644 index 000000000..114d95c45 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Models/Cubes/small/StealthHeatSinkSmall_BS3.mwm differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.dds new file mode 100644 index 000000000..f271e6c87 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.png b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.png new file mode 100644 index 000000000..5e812623a Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOff.png differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.dds new file mode 100644 index 000000000..c10376a55 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.png b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.png new file mode 100644 index 000000000..8fdd4ae60 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.png differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.xcf b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.xcf new file mode 100644 index 000000000..5eb1221e9 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchOn.xcf differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.dds new file mode 100644 index 000000000..3d36a45aa Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.png b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.png new file mode 100644 index 000000000..2a3e826ff Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Actions/StealthSwitchToggle.png differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Cubes/Aryx_AWE_TacticalModule.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Cubes/Aryx_AWE_TacticalModule.dds new file mode 100644 index 000000000..91236f0c1 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/GUI/Icons/Cubes/Aryx_AWE_TacticalModule.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_add.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_add.dds new file mode 100644 index 000000000..a573fbbea Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_add.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_cm.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_cm.dds new file mode 100644 index 000000000..d89e64fe4 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_cm.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_ng.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_ng.dds new file mode 100644 index 000000000..0f7243303 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_Colorable_ng.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_alphamask.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_alphamask.dds new file mode 100644 index 000000000..277f2c57b Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas3_alphamask.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_add.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_add.dds new file mode 100644 index 000000000..f6b1c3209 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_add.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_cm.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_cm.dds new file mode 100644 index 000000000..2dd7709ed Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_cm.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_ng.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_ng.dds new file mode 100644 index 000000000..48a0daab1 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_Colorable_ng.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_alphamask.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_alphamask.dds new file mode 100644 index 000000000..d893de672 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Atlas4_alphamask.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_add.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_add.dds new file mode 100644 index 000000000..f5eeac05f Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_add.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_cm.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_cm.dds new file mode 100644 index 000000000..2fc8f1943 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_cm.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_ng.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_ng.dds new file mode 100644 index 000000000..fcabe892d Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/Copper1_ng.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_add.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_add.dds new file mode 100644 index 000000000..fb2f2a0bb Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_add.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_cm.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_cm.dds new file mode 100644 index 000000000..0cd4ec850 Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_cm.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_ng.dds b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_ng.dds new file mode 100644 index 000000000..9f6ea4a4e Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/Textures/Models/Cubes/PaintedMetalColorable_ng.dds differ diff --git a/Utility Mods/Stealth Drive - Starcore Edition/metadata.mod b/Utility Mods/Stealth Drive - Starcore Edition/metadata.mod new file mode 100644 index 000000000..83173346a --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/metadata.mod @@ -0,0 +1,4 @@ + + + 1.0 + \ No newline at end of file diff --git a/Utility Mods/Stealth Drive - Starcore Edition/modinfo_main.sbmi b/Utility Mods/Stealth Drive - Starcore Edition/modinfo_main.sbmi new file mode 100644 index 000000000..229fc7352 --- /dev/null +++ b/Utility Mods/Stealth Drive - Starcore Edition/modinfo_main.sbmi @@ -0,0 +1,11 @@ + + + 76561198049738491 + 0 + + + 3436896074 + Steam + + + diff --git a/Utility Mods/Stealth Drive - Starcore Edition/thumb.png b/Utility Mods/Stealth Drive - Starcore Edition/thumb.png new file mode 100644 index 000000000..3a3e809ab Binary files /dev/null and b/Utility Mods/Stealth Drive - Starcore Edition/thumb.png differ 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/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav new file mode 100644 index 000000000..938ff2cc0 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav.old b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav.old new file mode 100644 index 000000000..cb3dca360 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cbar_hit1A.wav.old differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cn.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cn.wav new file mode 100644 index 000000000..66971b586 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/cn.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav new file mode 100644 index 000000000..33970b313 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.9mmorsomething b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.9mmorsomething new file mode 100644 index 000000000..58527ba14 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.9mmorsomething differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.OLD b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.OLD new file mode 100644 index 000000000..f9231c275 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.OLD differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.alternate b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.alternate new file mode 100644 index 000000000..ad599a372 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav.alternate differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav2 b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav2 new file mode 100644 index 000000000..bc7761ff9 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstorm.wav2 differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormdistance.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormdistance.wav new file mode 100644 index 000000000..434b19e14 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormdistance.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormreload.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormreload.wav new file mode 100644 index 000000000..9d3987d12 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/metalstormreload.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/shieldhit1.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/shieldhit1.wav new file mode 100644 index 000000000..2f1bc3ab3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Arcade/shieldhit1.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFire.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFire.wav new file mode 100644 index 000000000..d200f4747 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFire.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFireB.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFireB.wav new file mode 100644 index 000000000..8cb068eb5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2BeamFireB.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2HitA.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2HitA.wav new file mode 100644 index 000000000..9f1892ac6 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2HitA.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2PulseFire.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2PulseFire.wav new file mode 100644 index 000000000..5c50d32de Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2PulseFire.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2Reload.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2Reload.wav new file mode 100644 index 000000000..028d7da58 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2Reload.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2ReloadLong.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2ReloadLong.wav new file mode 100644 index 000000000..a7188af46 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Auger2ReloadLong.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoop.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoop.wav new file mode 100644 index 000000000..14456b000 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoop.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoopB.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoopB.wav new file mode 100644 index 000000000..62ada2bd0 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/Goliath2GearLoopB.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioGlitchLoop.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioGlitchLoop.wav new file mode 100644 index 000000000..c475e9c2c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioGlitchLoop.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioLoop2MIN.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioLoop2MIN.wav new file mode 100644 index 000000000..9d34ad64c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Auger/RadioLoop2MIN.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Concussion_Missile.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Concussion_Missile.wav new file mode 100644 index 000000000..ab01fc9a3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Concussion_Missile.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_01.wav new file mode 100644 index 000000000..7c9603433 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_02.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_02.wav new file mode 100644 index 000000000..d1c9250ea Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_02.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_03.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_03.wav new file mode 100644 index 000000000..0cf1bed11 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Arrival_03.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Distant.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Distant.wav new file mode 100644 index 000000000..49eba853a Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Distant.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Idle.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Idle.wav new file mode 100644 index 000000000..36425976e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Engine_Idle.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-01.wav new file mode 100644 index 000000000..4e269fb3f Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-02.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-02.wav new file mode 100644 index 000000000..4ecc59c44 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-02.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-03.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-03.wav new file mode 100644 index 000000000..a83e8aae4 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-03.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-04.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-04.wav new file mode 100644 index 000000000..3492b3ce5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-04.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-05.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-05.wav new file mode 100644 index 000000000..6ea1f8499 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-05.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-06.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-06.wav new file mode 100644 index 000000000..5806f6065 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-06.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-07.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-07.wav new file mode 100644 index 000000000..f39183206 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-07.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-08.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-08.wav new file mode 100644 index 000000000..bb2a06db2 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-08.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-09.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-09.wav new file mode 100644 index 000000000..074bf2318 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-09.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-10.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-10.wav new file mode 100644 index 000000000..a11ba79a1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-10.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-11.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-11.wav new file mode 100644 index 000000000..40f4ffa99 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-11.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-12.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-12.wav new file mode 100644 index 000000000..03be73580 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-12.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-13.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-13.wav new file mode 100644 index 000000000..2e16b6bb1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-13.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-14.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-14.wav new file mode 100644 index 000000000..355db0391 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-14.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-15.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-15.wav new file mode 100644 index 000000000..774838705 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-15.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-16.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-16.wav new file mode 100644 index 000000000..95dfae550 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-16.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-17.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-17.wav new file mode 100644 index 000000000..b92d6e531 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Dreadnaught_Status-17.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion01.wav new file mode 100644 index 000000000..a293cd582 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion02.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion02.wav new file mode 100644 index 000000000..f7028c938 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion02.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion03.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion03.wav new file mode 100644 index 000000000..e526af4b6 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion03.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion04.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion04.wav new file mode 100644 index 000000000..ff08a73e3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Explosion04.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Fighter_Laser.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Fighter_Laser.wav new file mode 100644 index 000000000..d9fdf4dd3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Fighter_Laser.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_01.WAV b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_01.WAV new file mode 100644 index 000000000..f4aca8f01 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_01.WAV differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_02.WAV b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_02.WAV new file mode 100644 index 000000000..c07429f27 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Hyperspace_Exit_02.WAV differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/LR_Ion_Cannon.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/LR_Ion_Cannon.wav new file mode 100644 index 000000000..4475833f8 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/LR_Ion_Cannon.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/Energy.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/Energy.wav new file mode 100644 index 000000000..b4beea3c5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/Energy.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/beamstart5.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/beamstart5.wav new file mode 100644 index 000000000..796feb608 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/beamstart5.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/charging.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/charging.wav new file mode 100644 index 000000000..dd9f73dd3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/charging.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_break2.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_break2.wav new file mode 100644 index 000000000..a7ca558a3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_break2.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_scrape_smooth_loop1.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_scrape_smooth_loop1.wav new file mode 100644 index 000000000..4321e341f Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/concrete_scrape_smooth_loop1.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/countdown.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/countdown.wav new file mode 100644 index 000000000..af56945dc Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/countdown.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/energypellet1.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/energypellet1.wav new file mode 100644 index 000000000..ffefcff24 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/energypellet1.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/gapsfx.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/gapsfx.wav new file mode 100644 index 000000000..66395c6ba Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/gapsfx.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/hexcannoncharge.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/hexcannoncharge.wav new file mode 100644 index 000000000..86a8f4986 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/hexcannoncharge.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/mspark.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/mspark.wav new file mode 100644 index 000000000..f5309918c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/mspark.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav new file mode 100644 index 000000000..4fcc07cbf Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav.disabled b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav.disabled new file mode 100644 index 000000000..c79663dba Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup.wav.disabled differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup2.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup2.wav new file mode 100644 index 000000000..39edf454e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/powerup2.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilecreate.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilecreate.wav new file mode 100644 index 000000000..216186289 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilecreate.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilepass1.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilepass1.wav new file mode 100644 index 000000000..dc95ff12f Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/projectilepass1.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/rocklaunch.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/rocklaunch.wav new file mode 100644 index 000000000..0d0b15c44 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/rocklaunch.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_kira01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_kira01.wav new file mode 100644 index 000000000..662b3493a Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_kira01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_tan01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_tan01.wav new file mode 100644 index 000000000..96ad0d4b0 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/se_tan01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sknifeimpact.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sknifeimpact.wav new file mode 100644 index 000000000..2f78e822e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sknifeimpact.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/spook.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/spook.wav new file mode 100644 index 000000000..cb17e3283 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/spook.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunloop.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunloop.wav new file mode 100644 index 000000000..2ddeb64f9 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunloop.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunprojhit.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunprojhit.wav new file mode 100644 index 000000000..5a52116e5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/sunprojhit.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/suntravelloop.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/suntravelloop.wav new file mode 100644 index 000000000..eabfaa1ce Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/suntravelloop.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/zapping.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/zapping.wav new file mode 100644 index 000000000..349f08d8d Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Magic/zapping.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-01.wav new file mode 100644 index 000000000..d8f9035ee Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-02.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-02.wav new file mode 100644 index 000000000..6b831a6fe Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-02.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-03.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-03.wav new file mode 100644 index 000000000..1d6bb2dcc Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-03.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-04.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-04.wav new file mode 100644 index 000000000..12f718c74 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-04.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-05.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-05.wav new file mode 100644 index 000000000..41009ffca Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-05.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-06.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-06.wav new file mode 100644 index 000000000..c81c043c6 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-06.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-07.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-07.wav new file mode 100644 index 000000000..7fd8116b7 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-07.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-08.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-08.wav new file mode 100644 index 000000000..a744051d9 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-08.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-09.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-09.wav new file mode 100644 index 000000000..44031d8e1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-09.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-10.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-10.wav new file mode 100644 index 000000000..b567e4d1b Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-10.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-11.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-11.wav new file mode 100644 index 000000000..8066974c2 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-11.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-12.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-12.wav new file mode 100644 index 000000000..91c59d56e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-12.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-13.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-13.wav new file mode 100644 index 000000000..04c2bbd56 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-13.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-14.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-14.wav new file mode 100644 index 000000000..dd3594b40 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-14.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-15.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-15.wav new file mode 100644 index 000000000..f6dc29b43 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-15.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-16.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-16.wav new file mode 100644 index 000000000..3234fd6f5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-16.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-17.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-17.wav new file mode 100644 index 000000000..41ac39917 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/NebulonB_Status-17.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_01.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_01.wav new file mode 100644 index 000000000..42f899cdc Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_01.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_02.wav b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_02.wav new file mode 100644 index 000000000..301180335 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/RB_Turbolaser_02.wav differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Turboion_Impact.WAV b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Turboion_Impact.WAV new file mode 100644 index 000000000..4ba28d0e3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Audio/Turboion_Impact.WAV differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/AMP_AmmoMagazines.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/AMP_AmmoMagazines.sbc deleted file mode 100644 index 4633a2c65..000000000 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/AMP_AmmoMagazines.sbc +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - AmmoMagazine - ImpulseTorch_Magazine - - ImpulseTorch Fuel Cartridge - Textures\GUI\Icons\ImpulseTorch_Magazine.dds - - 0.25 - 0.2 - 0.2 - - 1000 - 10 - Models\Ammos\ImpulseTorch_Magazine.mwm - 15 - - - - - - AmmoMagazine - FlakShotgun_Magazine - - Shotgun Shell - Textures\GUI\Icons\ImpulseTorch_Magazine.dds - - 0.25 - 0.2 - 0.2 - - 1000 - 10 - Models\Ammos\LBX5_AmmoShellShotgun.mwm - 1 - - - - - - - - - - - - - AmmoMagazine - DragonyosBomber - - Dragonyos Torpedo Bomber - Textures\GUI\Icons\Manticore.dds - - 1 - 2 - 0.5 - - 300 - 500 - Models\Drones\Manticore.mwm - Ammo - 1 - - - 6 - 12 - 3 - 24 - true - - - - - - AmmoMagazine - HarcosFighter - - Harcos Laser Fighter - Textures\GUI\Icons\Fighter_drone.dds - - 1 - 2 - 0.5 - - 300 - 500 - Models\Drones\Fighter_drone.mwm - Ammo - 1 - - - 6 - 12 - 3 - 24 - true - - - - - - - AmmoMagazine - FegyverDrone - - Fegyver Light Sentry - Textures\GUI\Icons\Artillery_drone.dds - - 1 - 2 - 0.5 - - 350 - 500 - Models\Drones\Artillery_drone.mwm - Ammo - 1 - - - 6 - 12 - 3 - 24 - true - - - - - - AmmoMagazine - AgyuDrone - - Agyu Heavy Sentry - Textures\GUI\Icons\Artillery_drone.dds - - 1 - 2 - 0.5 - - 290 - 500 - Models\Drones\Artillery_drone.mwm - Ammo - 1 - - - 6 - 12 - 3 - 24 - true - - - - - - AmmoMagazine - OrszemDrone - - Orszem Sentinel - Textures\GUI\Icons\Artillery_drone.dds - - 1 - 2 - 0.5 - - 290 - 500 - Models\Drones\Artillery_drone.mwm - Ammo - 1 - - - 6 - 12 - 3 - 24 - true - - - - - - - - - - - - \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio.sbc index eac46dd85..2ab6d2563 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio.sbc @@ -7,6 +7,308 @@ + + + + + + + + + + + + + MyObjectBuilder_AudioDefinition + Auger3Reload + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 15 + false + 32 + 0.7 + 5 + + + Audio\Auger\Auger2Reload.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Auger5Reload + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 15 + false + 32 + 0.7 + 5 + + + Audio\Auger\Auger2ReloadLong.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Auger3Fire + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 15 + false + 32 + 0.7 + 5 + + + Audio\Auger\Auger2PulseFire.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Auger5Fire + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 3 + true + 5 + 0.7 + 5 + + + Audio\Auger\Auger2BeamFire.wav + + + + + + + + MyObjectBuilder_AudioDefinition + AugerGears + + SHOT + 0.1 + 500 + 0 + HeavyFight + 1 + true + 1 + 0.7 + 5 + + + Audio\Auger\Goliath2GearLoopB.wav + + + + + + + + MyObjectBuilder_AudioDefinition + AugerHitA + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 15 + false + 32 + 0.7 + 5 + + + Audio\Auger\Auger2HitA.wav + + + + + + + + + MyObjectBuilder_AudioDefinition + RadioGlitchLoop + + SHOT + 0.1 + 3000 + 0 + HeavyFight + 4 + true + 4 + 0.7 + 5 + 3 + + + Audio\Auger\RadioLoop2MIN.wav + + + + + + + + + + + + + + + + + + + + + MyObjectBuilder_AudioDefinition + metalstorm + + SHOT + 0.1 + 2100 + 0 + + + + HeavyFight + 15 + false + 32 + 0.1 + 5 + + + Audio\Arcade\metalstorm.wav + + + + + + + + MyObjectBuilder_AudioDefinition + metalstormdistant + + SHOT + 0.1 + 2100 + 0 + HeavyFight + 15 + false + 32 + 0.1 + 5 + + + Audio\Arcade\metalstorm.wav + + + + + + + + MyObjectBuilder_AudioDefinition + cbar + + SHOT + 0.1 + 1000 + 0 + HeavyFight + 15 + false + 0.1 + 5 + + + Audio\Arcade\cbar_hit1A.wav + + + + + + + + MyObjectBuilder_AudioDefinition + shit + + SHOT + 0.1 + 1000 + 0 + HeavyFight + 15 + false + 0.1 + 5 + + + Audio\Arcade\shieldhit1.wav + + + + + + + + MyObjectBuilder_AudioDefinition + metalstormreload + + SHOT + 0.1 + 250 + 10 + 0 + HeavyFight + 15 + false + 1 + 5 + + + Audio\Arcade\metalstormreload.wav + + + + + @@ -238,6 +540,35 @@ + + + + MyObjectBuilder_AudioDefinition + MedLaserLoop + + SHOT + 1200 + 0 + HeavyFight + 3 + 0.4 + 25 + 5 + true + + + Audio\MW4 Laser MediumLoop.wav + + + + + + + + + + + MyObjectBuilder_AudioDefinition @@ -378,6 +709,121 @@ + + + + + + + MyObjectBuilder_AudioDefinition + caution + + SHOT + 3000 + 0 + HeavyFight + 15 + false + 1 + 5 + + + Audio\Magic\hexcannoncharge.wav + + + + + + + + MyObjectBuilder_AudioDefinition + suntravelloop + + SHOT + 3000 + 0 + HeavyFight + 15 + true + 5 + + + Audio\Magic\suntravelloop.wav + Audio\Magic\suntravelloop.wav + Audio\Magic\suntravelloop.wav + + + + + + + + MyObjectBuilder_AudioDefinition + sunloop + + SHOT + 3000 + 0 + HeavyFight + 15 + true + 1 + + + Audio\Magic\sunloop.wav + + + + + + + + MyObjectBuilder_AudioDefinition + sunprojhit + + SHOT + 500 + 0 + + + HeavyFight + 15 + false + 1 + 5 + + + Audio\Magic\sunprojhit.wav + + + + + + + + MyObjectBuilder_AudioDefinition + gapsfx + + SHOT + 1000 + 0 + + + HeavyFight + 15 + false + 1 + 5 + 5 + + + Audio\Magic\gapsfx.wav + + + + + + MyObjectBuilder_AudioDefinition diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SA.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SA.sbc index 288861c27..7012c86d6 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SA.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SA.sbc @@ -1,756 +1,756 @@ - - - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_AMS - - SHOT - 3000 - 0 - HeavyFight - 35 - 1 - false - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_Heavy - - SHOT - 5000 - 0 - HeavyFight - 35 - 1.45 - false - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_RotaryGauss - - SHOT - 4000 - 0 - HeavyFight - 35 - 1 - 50 - - - - false - - - Audio\General\RotaryGauss.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_RotaryGauss_Distant - - SHOT - 4000 - 0 - HeavyFight - - 35 - 1 - -5 - false - - - Audio\General\RotaryGauss_Distant.wav - - - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_HeavyCharon - - SHOT - 7000 - 0 - HeavyFight - 35 - 0.65 - 20 - - - - false - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_HeavyCharon_Distant - - SHOT - 7000 - 0 - HeavyFight - 35 - 2 - 20 - false - - - Audio\Gauss\HSR_Shot_B.wav - - - - - - - MyObjectBuilder_AudioDefinition - Charon_Charge_Distant - - SHOT - 7000 - 0 - HeavyFight - 35 - 3 - false - - - Audio\Gauss\Charon_Charge_Distant.wav - - - - - - - MyObjectBuilder_AudioDefinition - Monopole_Charge_Distant - - SHOT - 7000 - 0 - HeavyFight - 35 - 3 - false - - - Audio\Gauss\Monopole_Charge_Distant.wav - - - - - - - - - MyObjectBuilder_AudioDefinition - Charon_Charge - - SHOT - 7000 - 0 - HeavyFight - 35 - 2 - - - - false - - - Audio\Gauss\Charon_Charge.wav - - - - - - - MyObjectBuilder_AudioDefinition - Charon_Barrel_Spin - - SHOT - 5000 - 0 - HeavyFight - 35 - 10 - true - - - Audio\Gauss\Charon_Barrel.wav - - - - - - - MyObjectBuilder_AudioDefinition - Monopole_Charge - - SHOT - 7000 - 0 - HeavyFight - 35 - 2 - - - - false - - - Audio\Gauss\Monopole_Charge.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_ER - - SHOT - 5000 - 0 - HeavyFight - 35 - 1 - false - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_Cerberus - - SHOT - 7000 - 0 - HeavyFight - 35 - 1 - -1 - false - - - - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_Cerberus_Distant - - SHOT - 7000 - 0 - HeavyFight - 35 - 4 - 1 - false - - - Audio\Gauss\HSR_Shot_B.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_Cerberus_Impact - - SHOT - 400 - 0 - HeavyFight - 35 - 2 - 50 - false - - - Audio\Gauss\HSR_Shot_D.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Launch - - SHOT - 8000 - 0 - HeavyFight - 35 - 1 - 1 - 0.1 - 0.1 - false - - - Audio\Gauss\HSR_Missile_Launch_A.wav - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_GrimFlight - - SHOT - 1000 - 0 - HeavyFight - 35 - 1 - true - - - Audio\Gauss\Audio_MissileTravelLoop_Dark.wav - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Reload_Gauss - - SHOT - 50 - 0 - HeavyFight - 35 - 1 - false - - - Audio\General\SA_Reload_1.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_AmmoEmpty - - SHOT - 50 - 0 - HeavyFight - 35 - 1 - false - - - Audio\General\SA_Error_AmmoEmpty.wav - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Charon_Impact - - SHOT - 1300 - 0 - HeavyFight - 35 - 1 - false - - - Audio\Gauss\HSR_Shot_D.wav - - - - - - - - MyObjectBuilder_AudioDefinition - K_SA_Gauss_Asterius - - SHOT - 1000 - HeavyFight - 3 - 1 - false - 30 - 0.1 - 100 - 0 - - - Audio\Gauss\HSR_Shot_Alpha.wav - - - - - - - MyObjectBuilder_AudioDefinition - Satisfaction - - SHOT - 1500 - HeavyFight - 3 - 1 - 100 - 10 - false - - - Audio\Gauss\Satisfaction.wav - - - - - - - MyObjectBuilder_AudioDefinition - Somnus_Fire - - SHOT - 5000 - HeavyFight - 3 - 1 - 50 - 10 - false - - - Audio\Gauss\Somnus_Heavy.wav - - - - - - - MyObjectBuilder_AudioDefinition - Somnus_Hit - - SHOT - 1500 - HeavyFight - 3 - 1 - -2 - false - - - Audio\Gauss\Somnus_Heavy_Reverse_Impact.wav - - - - - - - MyObjectBuilder_AudioDefinition - Somnus_Shield_Hit - - SHOT - 1500 - HeavyFight - 3 - 1 - -5 - false - - - Audio\Gauss\Somnus_Shield_Hit.wav - - - - - - - MyObjectBuilder_AudioDefinition - SomnusFlyby - - SHOT - 1500 - 25 - HeavyFight - 3 - 3 - -1 - 40 - true - - - Audio\Gauss\Somnus_Flyby.wav - - - - - - - - MyObjectBuilder_AudioDefinition - Silvius_Charge - - SHOT - 8500 - HeavyFight - 3 - 4 - false - 0 - - - Audio\Gauss\Charge_up.wav - - - - - - MyObjectBuilder_AudioDefinition - Silvius_Fire - - SHOT - 8500 - HeavyFight - 3 - 4 - false - 0 - - - Audio\Gauss\Reverb_Cannon.wav - - - - - - - - MyObjectBuilder_AudioDefinition - Hydra_Reload - - SHOT - 500 - HeavyFight - 3 - 0.8 - false - 0 - - - Audio\shotgun\Dopamine_Device_Hydra_LoadingV2.wav - - - - - - - MyObjectBuilder_AudioDefinition - AutoCoilReload - - SHOT - 500 - HeavyFight - 3 - 0.5 - false - 0 - - - Audio\Gauss\AutoCoilReload.wav - - - - - - - - - - MyObjectBuilder_AudioDefinition - Hydra_Fire_Distant - - SHOT - 7000 - 0 - HeavyFight - 35 - 0.8 - false - - - Audio\shotgun\Dopamine_Device_Hydra_Firing_Distant.wav - - - - - - - MyObjectBuilder_AudioDefinition - Hydra_Fire - - SHOT - 7000 - 0 - HeavyFight - 35 - 0.8 - 20 - - - - false - - - Audio\shotgun\Chungus_Boom_Hydra_Firing.wav - - - - - - - - - MyObjectBuilder_AudioDefinition - Rotary_Gauss_Fire - - SHOT - 5000 - 0 - HeavyFight - 35 - 1 - 20 - - - - false - - - Audio\General\RotaryGauss.wav - - - - - - - MyObjectBuilder_AudioDefinition - Rotary_Gauss_Fire_Distant - - SHOT - 5000 - 0 - HeavyFight - 35 - 1 - 20 - false - - - Audio\General\RotaryGauss_Distant.wav - - - - - - - MyObjectBuilder_AudioDefinition - Pulse_Flak - - SHOT - 1200 - 5 - HeavyFight - 35 - 0.1 - 90 - false - - - Audio\Gauss\Pulse Flak.wav - - - - - - - MyObjectBuilder_AudioDefinition - Pulse_Flak_placeholder - - SHOT - 800 - HeavyFight - 35 - 0.5 - 50 - false - - - Audio\General\FixedHardLaser.wav - - - - - - - - - + + + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_AMS + + SHOT + 3000 + 0 + HeavyFight + 35 + 1 + false + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_Heavy + + SHOT + 5000 + 0 + HeavyFight + 35 + 1.45 + false + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_RotaryGauss + + SHOT + 4000 + 0 + HeavyFight + 35 + 1 + 50 + + + + false + + + Audio\General\RotaryGauss.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_RotaryGauss_Distant + + SHOT + 4000 + 0 + HeavyFight + + 35 + 1 + -5 + false + + + Audio\General\RotaryGauss_Distant.wav + + + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_HeavyCharon + + SHOT + 7000 + 0 + HeavyFight + 35 + 0.65 + 20 + + + + false + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_HeavyCharon_Distant + + SHOT + 7000 + 0 + HeavyFight + 35 + 2 + 20 + false + + + Audio\Gauss\HSR_Shot_B.wav + + + + + + + MyObjectBuilder_AudioDefinition + Charon_Charge_Distant + + SHOT + 7000 + 0 + HeavyFight + 35 + 3 + false + + + Audio\Gauss\Charon_Charge_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Monopole_Charge_Distant + + SHOT + 7000 + 0 + HeavyFight + 35 + 3 + false + + + Audio\Gauss\Monopole_Charge_Distant.wav + + + + + + + + + MyObjectBuilder_AudioDefinition + Charon_Charge + + SHOT + 7000 + 0 + HeavyFight + 35 + 2 + + + + false + + + Audio\Gauss\Charon_Charge.wav + + + + + + + MyObjectBuilder_AudioDefinition + Charon_Barrel_Spin + + SHOT + 5000 + 0 + HeavyFight + 35 + 10 + true + + + Audio\Gauss\Charon_Barrel.wav + + + + + + + MyObjectBuilder_AudioDefinition + Monopole_Charge + + SHOT + 7000 + 0 + HeavyFight + 35 + 2 + + + + false + + + Audio\Gauss\Monopole_Charge.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_ER + + SHOT + 5000 + 0 + HeavyFight + 35 + 1 + false + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_Cerberus + + SHOT + 7000 + 0 + HeavyFight + 35 + 1 + -1 + false + + + + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_Cerberus_Distant + + SHOT + 7000 + 0 + HeavyFight + 35 + 4 + 1 + false + + + Audio\Gauss\HSR_Shot_B.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_Cerberus_Impact + + SHOT + 400 + 0 + HeavyFight + 35 + 2 + 50 + false + + + Audio\Gauss\HSR_Shot_D.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Launch + + SHOT + 8000 + 0 + HeavyFight + 35 + 1 + 1 + 0.1 + 0.1 + false + + + Audio\Gauss\HSR_Missile_Launch_A.wav + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_GrimFlight + + SHOT + 1000 + 0 + HeavyFight + 35 + 1 + true + + + Audio\Gauss\Audio_MissileTravelLoop_Dark.wav + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Reload_Gauss + + SHOT + 50 + 0 + HeavyFight + 35 + 1 + false + + + Audio\General\SA_Reload_1.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_AmmoEmpty + + SHOT + 50 + 0 + HeavyFight + 35 + 1 + false + + + Audio\General\SA_Error_AmmoEmpty.wav + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Charon_Impact + + SHOT + 1300 + 0 + HeavyFight + 35 + 1 + false + + + Audio\Gauss\HSR_Shot_D.wav + + + + + + + + MyObjectBuilder_AudioDefinition + K_SA_Gauss_Asterius + + SHOT + 1000 + HeavyFight + 3 + 1 + false + 30 + 0.1 + 100 + 0 + + + Audio\Gauss\HSR_Shot_Alpha.wav + + + + + + + MyObjectBuilder_AudioDefinition + Satisfaction + + SHOT + 1500 + HeavyFight + 3 + 1 + 100 + 10 + false + + + Audio\Gauss\Satisfaction.wav + + + + + + + MyObjectBuilder_AudioDefinition + Somnus_Fire + + SHOT + 5000 + HeavyFight + 3 + 1 + 50 + 10 + false + + + Audio\Gauss\Somnus_Heavy.wav + + + + + + + MyObjectBuilder_AudioDefinition + Somnus_Hit + + SHOT + 1500 + HeavyFight + 3 + 1 + -2 + false + + + Audio\Gauss\Somnus_Heavy_Reverse_Impact.wav + + + + + + + MyObjectBuilder_AudioDefinition + Somnus_Shield_Hit + + SHOT + 1500 + HeavyFight + 3 + 1 + -5 + false + + + Audio\Gauss\Somnus_Shield_Hit.wav + + + + + + + MyObjectBuilder_AudioDefinition + SomnusFlyby + + SHOT + 1500 + 25 + HeavyFight + 3 + 3 + -1 + 40 + true + + + Audio\Gauss\Somnus_Flyby.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Silvius_Charge + + SHOT + 8500 + HeavyFight + 3 + 4 + false + 0 + + + Audio\Gauss\Charge_up.wav + + + + + + MyObjectBuilder_AudioDefinition + Silvius_Fire + + SHOT + 8500 + HeavyFight + 3 + 4 + false + 0 + + + Audio\Gauss\Reverb_Cannon.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Hydra_Reload + + SHOT + 500 + HeavyFight + 3 + 0.8 + false + 0 + + + Audio\shotgun\Dopamine_Device_Hydra_LoadingV2.wav + + + + + + + MyObjectBuilder_AudioDefinition + AutoCoilReload + + SHOT + 500 + HeavyFight + 3 + 0.5 + false + 0 + + + Audio\Gauss\AutoCoilReload.wav + + + + + + + + + + MyObjectBuilder_AudioDefinition + Hydra_Fire_Distant + + SHOT + 7000 + 0 + HeavyFight + 35 + 0.8 + false + + + Audio\shotgun\Dopamine_Device_Hydra_Firing_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Hydra_Fire + + SHOT + 7000 + 0 + HeavyFight + 35 + 0.8 + 20 + + + + false + + + Audio\shotgun\Chungus_Boom_Hydra_Firing.wav + + + + + + + + + MyObjectBuilder_AudioDefinition + Rotary_Gauss_Fire + + SHOT + 5000 + 0 + HeavyFight + 35 + 1 + 20 + + + + false + + + Audio\General\RotaryGauss.wav + + + + + + + MyObjectBuilder_AudioDefinition + Rotary_Gauss_Fire_Distant + + SHOT + 5000 + 0 + HeavyFight + 35 + 1 + 20 + false + + + Audio\General\RotaryGauss_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Pulse_Flak + + SHOT + 1200 + 5 + HeavyFight + 35 + 0.1 + 90 + false + + + Audio\Gauss\Pulse Flak.wav + + + + + + + MyObjectBuilder_AudioDefinition + Pulse_Flak_placeholder + + SHOT + 800 + HeavyFight + 35 + 0.5 + 50 + false + + + Audio\General\FixedHardLaser.wav + + + + + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SW.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SW.sbc new file mode 100644 index 000000000..cbee6ee7d --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Audio_SW.sbc @@ -0,0 +1,652 @@ + + + + + + + + MyObjectBuilder_AudioDefinition + Ship_Engine + + SHOT + 3000 + 1 + true + 1 + 3 + 25 + + + + + + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + Ship_Engine_Distant + + SHOT + 3000 + 0.75 + true + 1 + 3 + 25 + + + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Turbolaser_Impact + + SHOT + 1200 + 1 + false + 14 + + + Audio\Explosion01.wav + + + Audio\Explosion02.wav + + + Audio\Explosion03.wav + + + Audio\Explosion04.wav + + + + + + + MyObjectBuilder_AudioDefinition + Turboion_Impact + + SHOT + 1200 + 1 + false + 50 + + + Audio\Turboion_Impact.wav + + + + + + + MyObjectBuilder_AudioDefinition + Light_Turbolaser_Shot + + SHOT + 2500 + 1 + true + 15 + + + + + + Audio\RB_Turbolaser_01.wav + + + Audio\RB_Turbolaser_02.wav + + + + + + + MyObjectBuilder_AudioDefinition + Light_Turbolaser_Shot_Dist + + SHOT + 2500 + 0.75 + true + + 25 + + + Audio\RB_Turbolaser_01.wav + + + + + + + MyObjectBuilder_AudioDefinition + Light_Turboion_Shot + + SHOT + 2500 + 1 + false + 10 + + + Audio\LR_Ion_Cannon.wav + + + + + + + MyObjectBuilder_AudioDefinition + Concussion_Missile_Shot + + SHOT + 2500 + 1 + false + 10 + + + Audio\Concussion_Missile.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Arrival + + SHOT + 1500 + 1 + false + 1 + + + Audio\Dreadnaught_Status-01.wav + + + Audio\Dreadnaught_Status-02.wav + + + Audio\Dreadnaught_Status-03.wav + + + Audio\Dreadnaught_Status-04.wav + + + Audio\Dreadnaught_Status-05.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_01 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\Dreadnaught_Status-06.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-07.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-08.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_01_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\Dreadnaught_Status-06.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-07.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-08.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_02 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\Dreadnaught_Status-09.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-10.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-11.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_02_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\Dreadnaught_Status-09.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-10.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-11.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_03 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\Dreadnaught_Status-12.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-13.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\Dreadnaught_Status-14.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Stage_03_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\Dreadnaught_Status-12.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-13.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\Dreadnaught_Status-14.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + Dreadnaught_Death + + SHOT + 2500 + 1 + false + 3 + 25 + + + Audio\Dreadnaught_Status-15.wav + + + Audio\Dreadnaught_Status-16.wav + + + Audio\Dreadnaught_Status-17.wav + + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Arrival + + SHOT + 1500 + 4 + false + 1 + + + Audio\NebulonB_Status-01.wav + + + Audio\NebulonB_Status-02.wav + + + Audio\NebulonB_Status-03.wav + + + Audio\NebulonB_Status-04.wav + + + Audio\NebulonB_Status-05.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_01 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\NebulonB_Status-06.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-07.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-08.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_01_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\NebulonB_Status-06.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-07.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-08.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_02 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\NebulonB_Status-09.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-10.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-11.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_02_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\NebulonB_Status-09.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-10.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-11.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_03 + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + + + + Audio\NebulonB_Status-12.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-13.wav + Audio\Dreadnaught_Engine_Idle.wav + + + Audio\NebulonB_Status-14.wav + Audio\Dreadnaught_Engine_Idle.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Stage_03_Distant + + SHOT + 2500 + 1 + true + 1 + 3 + 25 + + + Audio\NebulonB_Status-12.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-13.wav + Audio\Dreadnaught_Engine_Distant.wav + + + Audio\NebulonB_Status-14.wav + Audio\Dreadnaught_Engine_Distant.wav + + + + + + + MyObjectBuilder_AudioDefinition + NebulonB_Death + + SHOT + 2500 + 1 + false + 3 + 25 + + + Audio\NebulonB_Status-15.wav + + + Audio\NebulonB_Status-16.wav + + + Audio\NebulonB_Status-17.wav + + + + + + + + MyObjectBuilder_AudioDefinition + Hyperspace_Exit + + SHOT + 1200 + 1 + false + 25 + + + Audio\Hyperspace_Exit_01.wav + + + Audio\Hyperspace_Exit_02.wav + + + + + + + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/CapacitorBlocks.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/CapacitorBlocks.sbc index 2adee2d34..5a4b32386 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/CapacitorBlocks.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/CapacitorBlocks.sbc @@ -1,71 +1,71 @@ - - - - - - BatteryBlock - CapacitorLarge - - Capacitor - Textures\GUI\Icons\Capacitor.dds - - Has a reserve of power that can discharge - It must be set to "Discharge" or "Auto" to provide power. Setting it back to "Rechage" pauses the timer.i se - - Large - TriangleMesh - - - Models\Capacitor.mwm - - - - - - Ore - Scrap - - - - - - - - - - Capacitor - Light - 40 - - Battery - 1000 - - BatteryBlock - 12 - true - 3 - 0.3 - 0.8 - - - 1 - 1 - 1 - - true - Damage_Electrical_Damaged - ParticleElectrical - Extended - BlockDestroyedExplosion_Large - WepSmallWarheadExpl - 15 - true - Y - Z - - PowerSystems - - - - - + + + + + + BatteryBlock + CapacitorLarge + + Capacitor + Textures\GUI\Icons\Capacitor.dds + + Has a reserve of power that can discharge + It must be set to "Discharge" or "Auto" to provide power. Setting it back to "Rechage" pauses the timer.i se + + Large + TriangleMesh + + + Models\Capacitor.mwm + + + + + + Ore + Scrap + + + + + + + + + + Capacitor + Light + 40 + + Battery + 1000 + + BatteryBlock + 12 + true + 3 + 0.3 + 0.8 + + + 1 + 1 + 1 + + true + Damage_Electrical_Damaged + ParticleElectrical + Extended + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 15 + true + Y + Z + + PowerSystems + + + + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Concussion_Missile.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Concussion_Missile.sbc new file mode 100644 index 000000000..66a35570b --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Concussion_Missile.sbc @@ -0,0 +1,1848 @@ + + + + + + 2117308147 + 1 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 72 + + + + + + + + + + + 0.2196078 + 0.2084001 + 0.1071171 + 0.2196078 + + + + + + + 0.1390225 + 0.05818718 + 0.02095113 + 1 + + + + + + + 0.01517524 + 0.01517524 + 0.01517524 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0.02 + 0.02 + 0.02 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0.3 + + + + + + + + + 0.2 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 2 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + + 0.35 + + + + + 1.25 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + 2 + + + 4 + + + 0.05 + + + true + + + + + + 450 + + + + + 100 + + + + + 500 + + + + + 200 + + + + + 300 + + + + + 150 + + + + + 450 + + + + + 250 + + + + + 350 + + + + + 100 + + + + + 300 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + true + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0.2 + + + + 0.5 + + + 0.01 + + + true + + + 0.5 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.2 + + + + + + + + + + 300 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 2.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 1 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 10 + 35 + 0.5 + + + + + + + 6 + 10 + 35 + 0.5 + + + + + + + 6 + 10 + 35 + 0.5 + + + + + + + 6 + 10 + 35 + 0.5 + + + + + + + + + + + + + + + + + 100 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.05 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 0.9743002 + 0.7667436 + 0.5174014 + 1 + + + + + + + 0.9743002 + 0.7667436 + 0.5174014 + 1 + + + + + + + 0.9743002 + 0.7667436 + 0.5174014 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 300 + + + + + 300 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 5 + + + + + + + + + 2 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.2 + + + + + 0.2 + + + + + + + + + 0.05 + + + 1 + + + 2 + + + 1 + + + true + + + + + + 30 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 2 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 1 + + + + 103 + + + 1 + + + + + + + + + + + 0.075 + 0.2 + 0.5 + 0.5 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + + + + + + + + + + + 100 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + 0.9137255 + 0.7882353 + 0.3411765 + 1 + + + + + + + + + + + + + 5 + + + + + + + + + + + + 2 + + + + + + + + + 0.5 + + + + + + false + + + 0 + + + 1 + + + 0.1 + + + + + 5000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/ConveyorBlocks.sbc.disabled b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/ConveyorBlocks.sbc.disabled index 0047582fb..5e71661e8 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/ConveyorBlocks.sbc.disabled +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/ConveyorBlocks.sbc.disabled @@ -1,81 +1,81 @@ - - - - - - - Conveyor - BusLineStraight - - Capacitor Bus Line - Textures\GUI\Icons\Cubes\conveyor.dds - Connects high-voltage components from CapacitCore. - Large - TriangleMesh - - - Models\BusLineStraight.mwm - - - - - - - - - - BusLine - - - - - Conveyor - BusLineCurved - - Curved Capacitor Bus Line - Textures\GUI\Icons\Cubes\conveyor.dds - Connects high-voltage components from CapacitCore. - Large - TriangleMesh - - - Models\BusLineCurved.mwm - - - - - - - - - - BusLineC - - - - - Conveyor - BusLineT - - Split-T Capacitor Bus Line - Textures\GUI\Icons\Cubes\conveyor.dds - Connects high-voltage components from CapacitCore. - Large - TriangleMesh - - - Models\BusLineT.mwm - - - - - - - - - - BusLineT - - - + + + + + + + Conveyor + BusLineStraight + + Capacitor Bus Line + Textures\GUI\Icons\Cubes\conveyor.dds + Connects high-voltage components from CapacitCore. + Large + TriangleMesh + + + Models\BusLineStraight.mwm + + + + + + + + + + BusLine + + + + + Conveyor + BusLineCurved + + Curved Capacitor Bus Line + Textures\GUI\Icons\Cubes\conveyor.dds + Connects high-voltage components from CapacitCore. + Large + TriangleMesh + + + Models\BusLineCurved.mwm + + + + + + + + + + BusLineC + + + + + Conveyor + BusLineT + + Split-T Capacitor Bus Line + Textures\GUI\Icons\Cubes\conveyor.dds + Connects high-voltage components from CapacitCore. + Large + TriangleMesh + + + Models\BusLineT.mwm + + + + + + + + + + BusLineT + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/GasProperties.sbc.disabled b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/GasProperties.sbc.disabled index 53451ee40..00f88526d 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/GasProperties.sbc.disabled +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/GasProperties.sbc.disabled @@ -1,13 +1,13 @@ - - - - - - MyObjectBuilder_GasProperties - CapacitCoreCharge - - 500 - - - - + + + + + + MyObjectBuilder_GasProperties + CapacitCoreCharge + + 500 + + + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/MA_Afterburner_Audio.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/MA_Afterburner_Audio.sbc index 1b870adc3..92274344d 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/MA_Afterburner_Audio.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/MA_Afterburner_Audio.sbc @@ -1,146 +1,146 @@ - - - - - - - AudioDefinition - MA_Afterburner_Large - - WEP_SHIP - 800 - 3 - 1 - 6 - true - - - Audio\EMP_Fire_Start.wav - Audio\EMP_Fire_Loop.wav - Audio\EMP_Fire_Stop.wav - - - - - - - AudioDefinition - MA_Afterburner_Large_Fug - - WEP_SHIP - 800 - 2 - 1 - true - - - Audio\EMP_Fire_Loop.wav - - - - - - - MyObjectBuilder_AudioDefinition - EMPFiringSoundDistant - - SHOT - 800 - 100 - 3 - true - - - Audio\EMP_Fire_Start_Dist.wav - Audio\EMP_Fire_Loop_Dist.wav - Audio\EMP_Fire_Stop_Dist.wav - - - - - - - MyObjectBuilder_AudioDefinition - ABWarning - - SHOT - 800 - 100 - 3 - true - - - Audio\abwarning.wav - - - - - - - - - MyObjectBuilder_AudioDefinition - SRBstart - - SHOT - 800 - 100 - 0.1 - true - - - Audio\SRBstart.wav - - - - - - - - - AudioDefinition - SRBloop - - WEP_SHIP - 800 - 0.1 - 1 - 6 - true - - - Audio\SRBloop_start.wav - Audio\SRBloop.wav - Audio\EMP_Fire_Stop.wav - - - - - - - MyObjectBuilder_AudioDefinition - gravgun - - SHOT - 1000 - 0 - - - HeavyFight - 15 - false - 1 - 5 - - - Audio\gravgun.wav - - - - - - - - - + + + + + + + AudioDefinition + MA_Afterburner_Large + + WEP_SHIP + 800 + 3 + 1 + 6 + true + + + Audio\EMP_Fire_Start.wav + Audio\EMP_Fire_Loop.wav + Audio\EMP_Fire_Stop.wav + + + + + + + AudioDefinition + MA_Afterburner_Large_Fug + + WEP_SHIP + 800 + 2 + 1 + true + + + Audio\EMP_Fire_Loop.wav + + + + + + + MyObjectBuilder_AudioDefinition + EMPFiringSoundDistant + + SHOT + 800 + 100 + 3 + true + + + Audio\EMP_Fire_Start_Dist.wav + Audio\EMP_Fire_Loop_Dist.wav + Audio\EMP_Fire_Stop_Dist.wav + + + + + + + MyObjectBuilder_AudioDefinition + ABWarning + + SHOT + 800 + 100 + 3 + true + + + Audio\abwarning.wav + + + + + + + + + MyObjectBuilder_AudioDefinition + SRBstart + + SHOT + 800 + 100 + 0.1 + true + + + Audio\SRBstart.wav + + + + + + + + + AudioDefinition + SRBloop + + WEP_SHIP + 800 + 0.1 + 1 + 6 + true + + + Audio\SRBloop_start.wav + Audio\SRBloop.wav + Audio\EMP_Fire_Stop.wav + + + + + + + MyObjectBuilder_AudioDefinition + gravgun + + SHOT + 1000 + 0 + + + HeavyFight + 15 + false + 1 + 5 + + + Audio\gravgun.wav + + + + + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Muzzle_Flash_MetalStorm.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Muzzle_Flash_MetalStorm.sbc new file mode 100644 index 000000000..0361c4a2b --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Muzzle_Flash_MetalStorm.sbc @@ -0,0 +1,2288 @@ + + + + + + 75 + 4 + 0 + false + false + 4 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 72 + + + + + + + + + + + 1 + 0.607843161 + 0.270588249 + 1 + + + + + + + 0.235294119 + 0.235294119 + 0.235294119 + 0.156862751 + + + + + + + 0.007843138 + 0.007843138 + 0.007843138 + 0.0392156877 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 3 + + + + + 0.2 + + + + + 0.05 + + + + + 0.05 + + + + + + + + + 0.5 + + + + + + + 0.02 + 0.02 + 0.02 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 10 + + + + + + + + + 3 + + + + + + + + + 0 + + + + + + + + + 50 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + -110 + + + + + -9.91 + + + + + -4.1 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 0.25 + + + + + 0.9 + + + + + 6 + + + + + 6 + + + + + + + + + 2 + + + 2 + + + 4 + + + 0.15 + + + true + + + + + + Atlas_D_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + -0.07 + + + + 0 + + + 0 + + + true + + + 0.97 + + + 0.5 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 3 + + + + + + 0 + + + + + + + + + + 30 + + + + + 1 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 25 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 480 + + + 16 + + + + + + + + + + + 1 + 0.521568656 + 0.294117659 + 1 + + + + + + + 1 + 0.470588237 + 0.219607845 + 1 + + + + + + + 0.447058827 + 0.203921571 + 0.141176477 + 0.5019608 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 2000 + + + + + 2000 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 20 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + -500 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.02 + + + + + 0.3 + + + + + 0 + + + + + + + + + 0.1 + + + 15 + + + 1 + + + 0.3 + + + false + + + + + + Atlas_D_01 + + + 20 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 0 + + + + + 0 + + + + + + + + + 0.1 + + + false + + + true + + + 100 + + + 1 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 72 + + + + + + + + + + + 1 + 0.654902 + 0.254901975 + 1 + + + + + + + 0.156862751 + 0.156862751 + 0.156862751 + 0.196078435 + + + + + + + 0.007843138 + 0.007843138 + 0.007843138 + 0.0392156877 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 3 + + + + + 0.5 + + + + + 0.05 + + + + + 0.05 + + + + + + + + + 0.5 + + + + + + + 0.02 + 0.02 + 0.02 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 30 + + + + + + + + + 5 + + + + + + + + + 0 + + + + + + + + + 20 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + -500 + + + + + -45 + + + + + -9 + + + + + 0 + + + + + + + + + 2.6 + + + + + + + + + + 0.25 + + + + + 0.4 + + + + + 4 + + + + + 0.7 + + + + + + + + + 1 + + + 2 + + + 4 + + + 0.3 + + + false + + + + + + Atlas_D_01 + + + 0.3 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + -0.07 + + + + 0 + + + 0 + + + true + + + 0.97 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 5 + + + + + + 0 + + + + + + + + + + 5 + + + + + 1 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 25 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 128 + + + 96 + + + + + + + + + + + 0.0784313753 + 0.0784313753 + 0.0784313753 + 0.0784313753 + + + + + + + 0.0784313753 + 0.0784313753 + 0.0784313753 + 0.117647059 + + + + + + + 0.0784313753 + 0.0784313753 + 0.0784313753 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 0.05 + + + + + 0.05 + + + + + 0.05 + + + + + 0.05 + + + + + + + + + 0.5 + + + + + + + 0.02 + 0.02 + 0.02 + + + + + + + + + + 0 + + + + + + + 0 + 0.2 + 1 + + + + + + + 1 + + + + + + + + + 0.5 + + + + + + + + + 0 + + + + + + + + + 30 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 1.5 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.2 + + + + + 0.4 + + + + + 3.5 + + + + + 3.5 + + + + + + + + + 1.5 + + + 20 + + + 4 + + + 0.4 + + + false + + + + + + 9 + + + + + 5 + + + + + 0 + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + -0.07 + + + + 0 + + + 0 + + + true + + + 0.97 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 25 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 480 + + + 16 + + + + + + + + + + + 1 + 0.521568656 + 0.294117659 + 1 + + + + + + + 1 + 0.470588237 + 0.219607845 + 1 + + + + + + + 0.447058827 + 0.203921571 + 0.141176477 + 0.5019608 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 2000 + + + + + 2000 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 20 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + -500 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.02 + + + + + 0.28 + + + + + 0 + + + + + + + + + 0.1 + + + 15 + + + 1 + + + 0.3 + + + false + + + + + + Atlas_D_01 + + + 20 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 0 + + + + + 0 + + + + + + + + + 0.1 + + + false + + + true + + + 100 + + + 1 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + + 1 + 0.7742273 + 0.3736151 + 1 + + + + + + + + + + + + + 30 + + + + + + + + + + + + 80 + + + + + 0 + + + + + + + + + 30 + + + + + 0 + + + + + + true + + + 0 + + + 0.1 + + + 0.005 + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Nebulon_Engine.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Nebulon_Engine.sbc new file mode 100644 index 000000000..e42a5af6c --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Nebulon_Engine.sbc @@ -0,0 +1,6013 @@ + + + + + + -863470998 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1.5 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1.5 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 5.35 + 2 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -5.35 + 2 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 5.8 + 9.5 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -5.8 + 9.5 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.8 + 9.5 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + 80 + 33 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + 1.5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.8 + 9.5 + 72 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 5.35 + 2 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -5.35 + 2 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 5.8 + 9.5 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -5.8 + 9.5 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.8 + 9.5 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + 12 + 6 + 0 + 0.5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1.75 + + + + + 3.5 + + + + + 2.25 + + + + + 1.25 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.8 + 9.5 + 72 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particle_Projectiles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particle_Projectiles.sbc index 150e26582..f2a814670 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particle_Projectiles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particle_Projectiles.sbc @@ -1,8385 +1,8385 @@ - - - - - - - - 63799 - 5 - 0 - false - false - 5 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 1 - 0.2 - 1 - - - - - - - 0 - 1 - 0.2 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 50 - - - - - 500 - - - - - 500 - - - - - 50 - - - - - - - - - 0.5 - - - - - - - 0 - 1.8 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.5 - - - - - 0.5 - - - - - 0.5 - - - - - 0.7 - - - - - - - - - 0.45 - - - 1 - - - 4 - - - 0.03 - - - true - - - - - - 0 - - - - - 0 - - - - - 0.1 - - - - - 0 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - -0.1 - - - - 2.9 - 0 - -0.2 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 1 - - - - 0 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 2 - - - - - 2 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 50 - - - - - 50 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.15 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 1 - - - - - 100 - - - - - 100 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - 1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.1 - - - - - 0.38 - - - - - 0.38 - - - - - 0.1 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.03 - - - false - - - - - - 2 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - -1.5 - 0.1 - - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0.5 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1000 - - - - - 1000 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 1 - 0 - - - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.1 - - - - - 0.1 - - - - - 1 - - - - - 1 - - - - - - - - - 1 - - - 1 - - - 4 - - - 0.01 - - - true - - - - - - 0 - - - - - 0 - - - - - 2 - - - - - 2 - - - - - 0 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 1 - 0.2 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 1 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 3 - - - - - 3 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - - - - - - - - - - - - - - - -5 -0.25 -0.25 - 1 - - - - - - - - - - - - - 150 - - - - - - - - - 1 - - - - - - - - - 0 - - - - - 120 - - - - - 115 - - - - - 45 - - - - - 35 - - - - - 12 - - - - - 0 - - - - - - - - - true - - - 0 - - - 0.3 - - - 1 - - - - - 7000 - 1 - - - - - 63800 - 5 - 0 - false - false - 5 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 0.5 - 0.5 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 75 - - - - - 200 - - - - - 300 - - - - - 50 - - - - - - - - - 0.5 - - - - - - - 0 - 1.8 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.5 - - - - - 0.5 - - - - - 0.5 - - - - - 0.7 - - - - - - - - - 10 - - - 1 - - - 4 - - - 0.03 - - - false - - - - - - 10 - - - - - 10 - - - - - 10.1 - - - - - 10 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - -0.1 - - - - 2.9 - 0 - -0.2 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 1 - - - - 0 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 2 - - - - - 2 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 50 - - - - - 50 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.15 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 1 - - - - - 100 - - - - - 100 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - 1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.1 - - - - - 0.38 - - - - - 0.38 - - - - - 0.1 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.03 - - - false - - - - - - 2 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - -1.5 - 0.1 - - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0.5 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 1 - 1 - 1 - - - - - - - 0.2 - 1 - 1 - 1 - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1000 - - - - - 1000 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0.5 - - - - - - - 1 - 1 - 1 - - - - - - - 0.5 - - - - - - - - - 0.05 - - - - - - - - - 20 - - - - - - - - - 20 - - - - - - - 0 - 0 - 2 - - - - - - - - - - - 0 - - - - - 0 - - - - - 1 - - - - - 0 - - - - - - - - - 100 - - - - - - - - - - 6 - - - - - 6 - - - - - 6 - - - - - 6 - - - - - - - - - 0.015 - - - 1 - - - 3 - - - 0.01 - - - true - - - - - - 15 - - - - - 15 - - - - - 15 - - - - - 15 - - - - - 15 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 1000 - - - 0.1 - - - true - - - 1 - - - 0.41 - - - true - - - 0 - - - - 110 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 3 - - - - - 5 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - true - - - 1 - - - 0 - - - 1 - - - 1 - - - 0 - - - true - - - 0 - - - - - - - - - - - - - - - - - - - - - 0 - 2.5 - 2.5 - 1 - - - - - - - - - - - - - 150 - - - - - - - - - 1 - - - - - - - - - 0 - - - - - 120 - - - - - 115 - - - - - 45 - - - - - 35 - - - - - 12 - - - - - 0 - - - - - - - - - false - - - 0 - - - 0.3 - - - 1 - - - - - 2000 - 1 - - - - - 63801 - 5 - 0 - false - false - 5 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 0.5 - 0.5 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 75 - - - - - 200 - - - - - 300 - - - - - 50 - - - - - - - - - 0.5 - - - - - - - 0 - 1.8 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.5 - - - - - 0.5 - - - - - 0.5 - - - - - 0.7 - - - - - - - - - 10 - - - 1 - - - 4 - - - 0.03 - - - false - - - - - - 10 - - - - - 10 - - - - - 10.1 - - - - - 10 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - -0.1 - - - - 2.9 - 0 - -0.2 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 1 - - - - 0 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 2 - - - - - 2 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 50 - - - - - 50 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.15 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 1 - 1 - 1 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 1 - - - - - 100 - - - - - 100 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - 1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0.1 - - - - - 0.38 - - - - - 0.38 - - - - - 0.1 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.03 - - - false - - - - - - 2 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - -1.5 - 0.1 - - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0.5 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 1.86 - 1.29 - 1.94 - 1 - - - - - - - 1.86 - 1.29 - 1.94 - 1 - - - - - - - 1.86 - 1.29 - 1.94 - 1 - - - - - - - 1.86 - 1.29 - 1.94 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1000 - - - - - 1000 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 3 - 3 - 3 - - - - - - - - - - 1 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - - - - - 0.05 - - - - - - - - - 20 - - - - - - - - - 20 - - - - - - - 0 - 0 - 2 - - - - - - - - - - - 0 - - - - - 0 - - - - - 1 - - - - - 0 - - - - - - - - - 100 - - - - - - - - - - 6 - - - - - 6 - - - - - 6 - - - - - 6 - - - - - - - - - 0.015 - - - 1 - - - 1.2 - - - 0.01 - - - true - - - - - - 15 - - - - - 30 - - - - - 30 - - - - - 30 - - - - - 30 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 1000 - - - 0.1 - - - true - - - 1 - - - 0.41 - - - true - - - 0 - - - - 110 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 3 - - - - - 5 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - true - - - 1 - - - 0 - - - 1 - - - 1 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - 0.8117647 - 0.1117647 - 0.1117647 - 0.156862751 - - - - - - - 0.8117647 - 0.1117647 - 0.1117647 - 0.156862751 - - - - - - - 0.8117647 - 0.1117647 - 0.1117647 - 0.156862751 - - - - - - - 0.8117647 - 0.1117647 - 0.1117647 - 0.156862751 - - - - - - - - - - - - - - - - - 0 - - - - - 0.1 - - - - - 0.3 - - - - - 0.3 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - 0.5 - - - 0 - - - 4 - - - 1 - - - true - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - Atlas_E_01 - - - 0.1 - - - false - - - false - - - true - - - false - - - 2 - - - 0 - - - - 0 - 0 - -3 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 0 - - - - - 0.1 - - - - - 0.1 - - - - - 0 - - - - - - - - - 1 - - - false - - - true - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - 0.9117647 - 0.4117647 - 0.4117647 - 0.156862751 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 0.3 - - - - - 0.3 - - - - - 0.3 - - - - - 0.3 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 8 - - - - - 8 - - - - - 8 - - - - - 8 - - - - - - - - - 2 - - - 0 - - - 4 - - - 1 - - - true - - - - - - 5 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - Atlas_E_01 - - - 0.1 - - - false - - - false - - - true - - - false - - - 2 - - - 0 - - - - 0 - 0 - -3 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 0 - - - - - 0.1 - - - - - 0.1 - - - - - 0 - - - - - - - - - 1 - - - false - - - true - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - -11 - -11 - -11 - 5 - - - - - - - - -11 - -11 - -11 - 5 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - -1 - - - - - - - - - - 15 - - - - - 15 - - - - - 15 - - - - - 15 - - - - - - - - - 2 - - - 0 - - - 4 - - - 1 - - - true - - - - - - 5 - - - - - 11 - - - - - 11 - - - - - 11 - - - - - 11 - - - - - - Atlas_E_01 - - - 0.1 - - - false - - - false - - - true - - - false - - - 2 - - - 0 - - - - 0 - 0 - -3 - - - - 0 - - - 0 - - - false - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 0 - - - - - 0.1 - - - - - 0.1 - - - - - 0 - - - - - - - - - 1 - - - false - - - true - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 7 - - - 0 - - - - - - - - - - - 0.11 - 0.11 - 0.11 - 0.1392156877 - - - - - - - 0.11 - 0.11 - 0.11 - 0.1392156877 - - - - - - - 0.11 - 0.11 - 0.11 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 11.5 - - - - - 2.5 - - - - - 0 - - - - - 0 - - - - - - - - - 0.5 - - - - - - - 11 - 11 - 11 - - - - - - - - - - 0 - - - - - - - 0 - 0 - 1 - - - - - - - 110 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 20 - - - - - - - - - - - 0 - - - - - 2 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - - - - - - - - 65 - - - - - 55 - - - - - 25 - - - - - 0 - - - - - - - - - 0.8 - - - 15 - - - 114 - - - 0.0005 - - - true - - - - - - 50 - - - - - - Atlas_E_01 - - - 0.151 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 10 - - - 0 - - - false - - - 0 - - - 0.1 - - - true - - - 1 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 1 - - - - - 1 - - - - - 1.3 - - - - - - - - - - - - 0 - - - - - - 1 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 0.5 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 16 - 16 - 1 - - - - 103 - - - 1 - - - - - - - - - - - 0.4763432 - 0.1800302 - 0.07277033 - 0.5019608 - - - - - - - 0.1554853 - 0.03592236 - 0.03592236 - 0.2195197 - - - - - - - 0.1554853 - 0.03592236 - 0.03592236 - 0.2195197 - - - - - - - 0.1554853 - 0.03592236 - 0.03592236 - 0.2195197 - - - - - - - - - - - - - - - - - 100 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.05 - - - 1 - - - 4 - - - 1 - - - false - - - - - - 25 - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 0 - - - 64 - - - - - - - - - - - 0.7647059 - 1 - 0.996078432 - 1 - - - - - - - 0.494117647 - 0.694117665 - 1 - 1 - - - - - - - 0.192156866 - 0.172549024 - 0.4862745 - 0.784313738 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 8000 - - - - - 8000 - - - - - 100 - - - - - 100 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 1 - - - - - - - 0 - 1 - 0 - - - - - - - 100 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 180 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0.5 - - - - - - - - - - 1.3 - - - - - 12 - - - - - 1.3 - - - - - 0 - - - - - - - - - 0.7 - - - 15 - - - 4 - - - 0.014 - - - false - - - - - - 500 - - - - - 500 - - - - - 2000 - - - - - - Atlas_F_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 17 - - - - 0.5 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0.3 - - - - - - - - - - 8000 - - - - - 8000 - - - - - 100 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 7 - - - 0 - - - - - - - - - - - 0.113725491 - 0.490196079 - 0.6039216 - 1 - - - - - - - 0.6039216 - 0.113725491 - 0.113725491 - 1 - - - - - - - 0.196078435 - 0.196078435 - 0.196078435 - 0 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 30 - - - - - 5 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - 1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 22 - - - - - 22 - - - - - 0 - - - - - - - - - 10 - - - 15 - - - 1 - - - 0.005 - - - false - - - - - - 10 - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - true - - - false - - - 1 - - - 0 - - - - 0 - 0 - 1 - - - - 0 - - - 0.01 - - - false - - - 0 - - - 0.1 - - - true - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0.1 - - - - - 0.1 - - - - - 0 - - - - - - - - - - - - 0 - - - - - - 0 - - - - - - - - - - 10 - - - - - 5 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 0.5 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 0 - - - 64 - - - - - - - - - - - 0.7647059 - 1 - 0.996078432 - 1 - - - - - - - 0.494117647 - 0.694117665 - 1 - 1 - - - - - - - 0.192156866 - 0.172549024 - 0.4862745 - 0.784313738 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 8000 - - - - - 8000 - - - - - 100 - - - - - 100 - - - - - - - - - 1 - - - - - - - 12 - 12 - 12 - - - - - - - - - - 9 - - - - - - - 1 - 1 - 1 - - - - - - - 100 - - - - - - - - - 0 - - - - - - - - - 180 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0.5 - - - - - - - - - - 0.3 - - - - - 2 - - - - - 0.3 - - - - - 0 - - - - - - - - - 0.7 - - - 15 - - - 0.02 - - - 0.014 - - - true - - - - - - 1000 - - - - - - Atlas_F_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0.5 - - - 0 - - - true - - - 0.1 - - - 0 - - - true - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0.3 - - - - - - - - - - 8000 - - - - - 8000 - - - - - 100 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - - - - - - - - - - - - - - - - 0 - 2.5 - 2.5 - 1 - - - - - - - - - - - - - 150 - - - - - - - - - 1 - - - - - - - - - 0 - - - - - 120 - - - - - 115 - - - - - 45 - - - - - 35 - - - - - 12 - - - - - 0 - - - - - - - - - false - - - 0 - - - 0.3 - - - 1 - - - - - 3500 - 1 - - - - - - 63801 - 1.5 - 2 - false - false - 0.1 - 1.5 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 1 - 0.5 - 1 - - - - - - - 0.2 - 1 - 0.2 - 1 - - - - - - - 0 - 1 - 0 - 1 - - - - - - - 0 - 1 - 0 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1000 - - - - - 1000 - - - - - 1 - - - - - - - - - 0 - - - - - - - .11 - .11 - .11 - - - - - - - - - - 0.01 - - - - - - - 1 - 1 - 1 - - - - - - - -1 - - - - - - - - - 0.01 - - - - - - - - - 99 - - - - - - - - - 100 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 1.0 - - - - - 1.0 - - - - - 1.5 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - 0.05 - - - 1 - - - 4 - - - 0.017 - - - true - - - - - - 60 - - - - - 30 - - - - - 20 - - - - - 15 - - - - - 15 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - -1 - 0 - 0 - - - - 5 - - - 0.02 - - - true - - - 0.5 - - - 0.01 - - - true - - - 0 - - - - 360 - 0 - 0 - - - - - 5 - 5 - 5 - - - - - - - - - - - 1 - - - - - 2 - - - - - 4 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - - - - - 50 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - true - - - true - - - 1 - - - 0.05 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - - - - - - - - - - - - - - 0 - 2.5 - 2.5 - 1 - - - - - - - - - - - - - 150 - - - - - - - - - 1 - - - - - - - - - 0 - - - - - 120 - - - - - 115 - - - - - 45 - - - - - 35 - - - - - 12 - - - - - 0 - - - - - - - - - false - - - 0 - - - 0.3 - - - 1 - - - - - 2000 - 1 - - - - - - - + + + + + + + + 63799 + 5 + 0 + false + false + 5 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 1 + 0.2 + 1 + + + + + + + 0 + 1 + 0.2 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 500 + + + + + 500 + + + + + 50 + + + + + + + + + 0.5 + + + + + + + 0 + 1.8 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + 0.7 + + + + + + + + + 0.45 + + + 1 + + + 4 + + + 0.03 + + + true + + + + + + 0 + + + + + 0 + + + + + 0.1 + + + + + 0 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -0.1 + + + + 2.9 + 0 + -0.2 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 2 + + + + + 2 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.15 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 100 + + + + + 100 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.38 + + + + + 0.38 + + + + + 0.1 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.03 + + + false + + + + + + 2 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1.5 + 0.1 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.5 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1000 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 1 + 0 + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.1 + + + + + 1 + + + + + 1 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.01 + + + true + + + + + + 0 + + + + + 0 + + + + + 2 + + + + + 2 + + + + + 0 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 1 + 0.2 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 3 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + + +5 +0.25 +0.25 + 1 + + + + + + + + + + + + + 150 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + 120 + + + + + 115 + + + + + 45 + + + + + 35 + + + + + 12 + + + + + 0 + + + + + + + + + true + + + 0 + + + 0.3 + + + 1 + + + + + 7000 + 1 + + + + + 63800 + 5 + 0 + false + false + 5 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 0.5 + 0.5 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 75 + + + + + 200 + + + + + 300 + + + + + 50 + + + + + + + + + 0.5 + + + + + + + 0 + 1.8 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + 0.7 + + + + + + + + + 10 + + + 1 + + + 4 + + + 0.03 + + + false + + + + + + 10 + + + + + 10 + + + + + 10.1 + + + + + 10 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -0.1 + + + + 2.9 + 0 + -0.2 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 2 + + + + + 2 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.15 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 100 + + + + + 100 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.38 + + + + + 0.38 + + + + + 0.1 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.03 + + + false + + + + + + 2 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1.5 + 0.1 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.5 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 1 + 1 + 1 + + + + + + + 0.2 + 1 + 1 + 1 + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1000 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0.5 + + + + + + + 1 + 1 + 1 + + + + + + + 0.5 + + + + + + + + + 0.05 + + + + + + + + + 20 + + + + + + + + + 20 + + + + + + + 0 + 0 + 2 + + + + + + + + + + + 0 + + + + + 0 + + + + + 1 + + + + + 0 + + + + + + + + + 100 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 0.015 + + + 1 + + + 3 + + + 0.01 + + + true + + + + + + 15 + + + + + 15 + + + + + 15 + + + + + 15 + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 1000 + + + 0.1 + + + true + + + 1 + + + 0.41 + + + true + + + 0 + + + + 110 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 5 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + true + + + 1 + + + 0 + + + 1 + + + 1 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + + + 0 + 2.5 + 2.5 + 1 + + + + + + + + + + + + + 150 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + 120 + + + + + 115 + + + + + 45 + + + + + 35 + + + + + 12 + + + + + 0 + + + + + + + + + false + + + 0 + + + 0.3 + + + 1 + + + + + 2000 + 1 + + + + + 63801 + 5 + 0 + false + false + 5 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 0.5 + 0.5 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 75 + + + + + 200 + + + + + 300 + + + + + 50 + + + + + + + + + 0.5 + + + + + + + 0 + 1.8 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + 0.7 + + + + + + + + + 10 + + + 1 + + + 4 + + + 0.03 + + + false + + + + + + 10 + + + + + 10 + + + + + 10.1 + + + + + 10 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -0.1 + + + + 2.9 + 0 + -0.2 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 2 + + + + + 2 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.15 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 1 + 1 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 100 + + + + + 100 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.38 + + + + + 0.38 + + + + + 0.1 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.03 + + + false + + + + + + 2 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1.5 + 0.1 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.5 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 1.86 + 1.29 + 1.94 + 1 + + + + + + + 1.86 + 1.29 + 1.94 + 1 + + + + + + + 1.86 + 1.29 + 1.94 + 1 + + + + + + + 1.86 + 1.29 + 1.94 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1000 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 3 + 3 + 3 + + + + + + + + + + 1 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + + + + + 0.05 + + + + + + + + + 20 + + + + + + + + + 20 + + + + + + + 0 + 0 + 2 + + + + + + + + + + + 0 + + + + + 0 + + + + + 1 + + + + + 0 + + + + + + + + + 100 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 0.015 + + + 1 + + + 1.2 + + + 0.01 + + + true + + + + + + 15 + + + + + 30 + + + + + 30 + + + + + 30 + + + + + 30 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 1000 + + + 0.1 + + + true + + + 1 + + + 0.41 + + + true + + + 0 + + + + 110 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 3 + + + + + 5 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + true + + + 1 + + + 0 + + + 1 + + + 1 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0.8117647 + 0.1117647 + 0.1117647 + 0.156862751 + + + + + + + 0.8117647 + 0.1117647 + 0.1117647 + 0.156862751 + + + + + + + 0.8117647 + 0.1117647 + 0.1117647 + 0.156862751 + + + + + + + 0.8117647 + 0.1117647 + 0.1117647 + 0.156862751 + + + + + + + + + + + + + + + + + 0 + + + + + 0.1 + + + + + 0.3 + + + + + 0.3 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + 0.5 + + + 0 + + + 4 + + + 1 + + + true + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 2 + + + 0 + + + + 0 + 0 + -3 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.1 + + + + + 0.1 + + + + + 0 + + + + + + + + + 1 + + + false + + + true + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0.9117647 + 0.4117647 + 0.4117647 + 0.156862751 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 0.3 + + + + + 0.3 + + + + + 0.3 + + + + + 0.3 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 8 + + + + + 8 + + + + + 8 + + + + + 8 + + + + + + + + + 2 + + + 0 + + + 4 + + + 1 + + + true + + + + + + 5 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 2 + + + 0 + + + + 0 + 0 + -3 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.1 + + + + + 0.1 + + + + + 0 + + + + + + + + + 1 + + + false + + + true + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -11 + -11 + -11 + 5 + + + + + + + + -11 + -11 + -11 + 5 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + -1 + + + + + + + + + + 15 + + + + + 15 + + + + + 15 + + + + + 15 + + + + + + + + + 2 + + + 0 + + + 4 + + + 1 + + + true + + + + + + 5 + + + + + 11 + + + + + 11 + + + + + 11 + + + + + 11 + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 2 + + + 0 + + + + 0 + 0 + -3 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.1 + + + + + 0.1 + + + + + 0 + + + + + + + + + 1 + + + false + + + true + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 0 + + + + + + + + + + + 0.11 + 0.11 + 0.11 + 0.1392156877 + + + + + + + 0.11 + 0.11 + 0.11 + 0.1392156877 + + + + + + + 0.11 + 0.11 + 0.11 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 11.5 + + + + + 2.5 + + + + + 0 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + 11 + 11 + 11 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 110 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 20 + + + + + + + + + + + 0 + + + + + 2 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + + + + + + + + 65 + + + + + 55 + + + + + 25 + + + + + 0 + + + + + + + + + 0.8 + + + 15 + + + 114 + + + 0.0005 + + + true + + + + + + 50 + + + + + + Atlas_E_01 + + + 0.151 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 10 + + + 0 + + + false + + + 0 + + + 0.1 + + + true + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 1 + + + + + 1 + + + + + 1.3 + + + + + + + + + + + + 0 + + + + + + 1 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 1 + + + + 103 + + + 1 + + + + + + + + + + + 0.4763432 + 0.1800302 + 0.07277033 + 0.5019608 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + 0.1554853 + 0.03592236 + 0.03592236 + 0.2195197 + + + + + + + + + + + + + + + + + 100 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + 1 + + + 4 + + + 1 + + + false + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 64 + + + + + + + + + + + 0.7647059 + 1 + 0.996078432 + 1 + + + + + + + 0.494117647 + 0.694117665 + 1 + 1 + + + + + + + 0.192156866 + 0.172549024 + 0.4862745 + 0.784313738 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 8000 + + + + + 8000 + + + + + 100 + + + + + 100 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 1 + + + + + + + 0 + 1 + 0 + + + + + + + 100 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 180 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + + 1.3 + + + + + 12 + + + + + 1.3 + + + + + 0 + + + + + + + + + 0.7 + + + 15 + + + 4 + + + 0.014 + + + false + + + + + + 500 + + + + + 500 + + + + + 2000 + + + + + + Atlas_F_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 17 + + + + 0.5 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.3 + + + + + + + + + + 8000 + + + + + 8000 + + + + + 100 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 0 + + + + + + + + + + + 0.113725491 + 0.490196079 + 0.6039216 + 1 + + + + + + + 0.6039216 + 0.113725491 + 0.113725491 + 1 + + + + + + + 0.196078435 + 0.196078435 + 0.196078435 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 30 + + + + + 5 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 22 + + + + + 22 + + + + + 0 + + + + + + + + + 10 + + + 15 + + + 1 + + + 0.005 + + + false + + + + + + 10 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + true + + + false + + + 1 + + + 0 + + + + 0 + 0 + 1 + + + + 0 + + + 0.01 + + + false + + + 0 + + + 0.1 + + + true + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0.1 + + + + + 0.1 + + + + + 0 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + 10 + + + + + 5 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 64 + + + + + + + + + + + 0.7647059 + 1 + 0.996078432 + 1 + + + + + + + 0.494117647 + 0.694117665 + 1 + 1 + + + + + + + 0.192156866 + 0.172549024 + 0.4862745 + 0.784313738 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 8000 + + + + + 8000 + + + + + 100 + + + + + 100 + + + + + + + + + 1 + + + + + + + 12 + 12 + 12 + + + + + + + + + + 9 + + + + + + + 1 + 1 + 1 + + + + + + + 100 + + + + + + + + + 0 + + + + + + + + + 180 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + + + + 0.3 + + + + + 2 + + + + + 0.3 + + + + + 0 + + + + + + + + + 0.7 + + + 15 + + + 0.02 + + + 0.014 + + + true + + + + + + 1000 + + + + + + Atlas_F_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0.5 + + + 0 + + + true + + + 0.1 + + + 0 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.3 + + + + + + + + + + 8000 + + + + + 8000 + + + + + 100 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + + + 0 + 2.5 + 2.5 + 1 + + + + + + + + + + + + + 150 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + 120 + + + + + 115 + + + + + 45 + + + + + 35 + + + + + 12 + + + + + 0 + + + + + + + + + false + + + 0 + + + 0.3 + + + 1 + + + + + 3500 + 1 + + + + + + 63801 + 1.5 + 2 + false + false + 0.1 + 1.5 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 1 + 0.5 + 1 + + + + + + + 0.2 + 1 + 0.2 + 1 + + + + + + + 0 + 1 + 0 + 1 + + + + + + + 0 + 1 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1000 + + + + + 1000 + + + + + 1 + + + + + + + + + 0 + + + + + + + .11 + .11 + .11 + + + + + + + + + + 0.01 + + + + + + + 1 + 1 + 1 + + + + + + + -1 + + + + + + + + + 0.01 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 1.0 + + + + + 1.0 + + + + + 1.5 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 0.05 + + + 1 + + + 4 + + + 0.017 + + + true + + + + + + 60 + + + + + 30 + + + + + 20 + + + + + 15 + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -1 + 0 + 0 + + + + 5 + + + 0.02 + + + true + + + 0.5 + + + 0.01 + + + true + + + 0 + + + + 360 + 0 + 0 + + + + + 5 + 5 + 5 + + + + + + + + + + + 1 + + + + + 2 + + + + + 4 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + true + + + true + + + 1 + + + 0.05 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + 0 + 2.5 + 2.5 + 1 + + + + + + + + + + + + + 150 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + 120 + + + + + 115 + + + + + 45 + + + + + 35 + + + + + 12 + + + + + 0 + + + + + + + + + false + + + 0 + + + 0.3 + + + 1 + + + + + 2000 + 1 + + + + + + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_AnomalyHealParticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_AnomalyHealParticle.sbc index 88226a84a..b0d2666a0 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_AnomalyHealParticle.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_AnomalyHealParticle.sbc @@ -1,449 +1,449 @@ - - - - - - -1218519223 - 90 - 0 - false - false - 4 - 4 - 0 - - - GPU - - - - 16 - 16 - 0 - - - - 137 - - - 1 - - - - - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - - - - - - - - - - - 8 - - - - - 8 - - - - - 8 - - - - - 8 - - - - - - - - - 0.5 - - - - - - - 250 - 250 - 250 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.25 - - - 1 - - - 4 - - - 1 - - - true - - - - - - 2500 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 20000 - 1 - - + + + + + + -1218519223 + 90 + 0 + false + false + 4 + 4 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 137 + + + 1 + + + + + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + + + + + + + + + + + 8 + + + + + 8 + + + + + 8 + + + + + 8 + + + + + + + + + 0.5 + + + + + + + 250 + 250 + 250 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.25 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 2500 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 20000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcCollisionParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcCollisionParticles.sbc index 723ae53a9..659f25b1b 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcCollisionParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcCollisionParticles.sbc @@ -1,449 +1,449 @@ - - - - - - 310745088 - 90 - 0 - false - true - 0.1 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 4 - - - - - 4 - - - - - 4 - - - - - 4 - - - - - - - - - 0.4 - - - 1 - - - 4 - - - 0.01 - - - true - - - - - - 16 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 100 - - - - - 100 - - - - - 100 - - - - - 100 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 3000 - 1 - - + + + + + + 310745088 + 90 + 0 + false + true + 0.1 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 0.4 + + + 1 + + + 4 + + + 0.01 + + + true + + + + + + 16 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcLargeParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcLargeParticles.sbc index 00840c82e..254d9b2fe 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcLargeParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcLargeParticles.sbc @@ -1,6129 +1,6129 @@ - - - - - - 1742647582 - 90 - 0 - false - true - 0.1 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -175 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 16 - - - - - 16 - - - - - 16 - - - - - 16 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 10 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -525 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -175 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 16.5 - - - - - 16.5 - - - - - 16.5 - - - - - 16.5 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -525 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -875 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 10 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -875 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 2 - 0 - -10 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 8 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - -2 - 0 - -10 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - -8 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 2 - 0 - -10 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -98 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - -2 - 0 - -10 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -82 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 3 - - - - - 3 - - - - - 3 - - - - - 3 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - 0.5 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 10 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -1225 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -1225 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 3000 - 1 - - + + + + + + 1742647582 + 90 + 0 + false + true + 0.1 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -175 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 16 + + + + + 16 + + + + + 16 + + + + + 16 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 10 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -525 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -175 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 16.5 + + + + + 16.5 + + + + + 16.5 + + + + + 16.5 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -525 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -875 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 10 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -875 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 2 + 0 + -10 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 8 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -2 + 0 + -10 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + -8 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 2 + 0 + -10 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -98 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -2 + 0 + -10 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -82 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + 0.5 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 10 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -1225 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -1225 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcParticles.sbc index 90caccfac..1f086efc4 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ArcParticles.sbc @@ -1,3502 +1,3502 @@ - - - - - - 624593792 - 90 - 0 - false - true - 0.1 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -90 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 9 - - - - - 9 - - - - - 9 - - - - - 9 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 10 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -360 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 9 - - - - - 9 - - - - - 9 - - - - - 9 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 12 - - - - - 12 - - - - - 12 - - - - - 12 - - - - - - - - - 0.1 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -90 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 9 - - - - - 9 - - - - - 9 - - - - - 9 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -360 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 9 - - - - - 9 - - - - - 9 - - - - - 9 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.5 - 0.5 - 1 - 1 - - - - - - - 0.5 - 0.5 - 1 - 1 - - - - - - - 0.5 - 0.5 - 1 - 1 - - - - - - - 0.5 - 0.5 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 10 - 0 - 10 - - - - - - - - - - 1 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - - - 0 - - - - - 70 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.5 - - - true - - - - - - 200 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 7.5 - - - - 0 - - - 0.065 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - -90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 50 - - - - - 50 - - - - - 50 - - - - - 50 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.005 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -640 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - -90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 32 - 16 - 0 - - - - 448 - - - 32 - - - - - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - 0.1 - 0.1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 25 - 25 - 10 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 25 - - - - - 25 - - - - - 25 - - - - - 25 - - - - - - - - - 0.2 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -640 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 20 - - - - - 20 - - - - - 20 - - - - - 20 - - - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - 1000 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 3000 - 1 - - + + + + + + 624593792 + 90 + 0 + false + true + 0.1 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -90 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 10 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -360 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 12 + + + + + 12 + + + + + 12 + + + + + 12 + + + + + + + + + 0.1 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -90 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -360 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 9 + + + + + 9 + + + + + 9 + + + + + 9 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.5 + 0.5 + 1 + 1 + + + + + + + 0.5 + 0.5 + 1 + 1 + + + + + + + 0.5 + 0.5 + 1 + 1 + + + + + + + 0.5 + 0.5 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 10 + 0 + 10 + + + + + + + + + + 1 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + + + 0 + + + + + 70 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.5 + + + true + + + + + + 200 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 7.5 + + + + 0 + + + 0.065 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + -90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 50 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.005 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -640 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + -90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + 0.1 + 0.1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 25 + 25 + 10 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 25 + + + + + 25 + + + + + 25 + + + + + 25 + + + + + + + + + 0.2 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -640 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 20 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + 1000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FieldParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FieldParticles.sbc index 0f94f03e4..6e49f870d 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FieldParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FieldParticles.sbc @@ -1,455 +1,455 @@ - - - - - - 114512441 - 90 - 0 - false - true - 0 - 0 - 0 - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - 1 - 1 - 20 - 1 - - - - - - - 1 - 1 - 20 - 1 - - - - - - - 1 - 1 - 20 - 1 - - - - - - - 1 - 1 - 20 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 10 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 10000 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 0.0334 - - - 1 - - - 2.7 - - - 0 - - - true - - - - - - 30 - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 1 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 3000 - 1 - - + + + + + + 114512441 + 90 + 0 + false + true + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 1 + 1 + 20 + 1 + + + + + + + 1 + 1 + 20 + 1 + + + + + + + 1 + 1 + 20 + 1 + + + + + + + 1 + 1 + 20 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 10000 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 0.0334 + + + 1 + + + 2.7 + + + 0 + + + true + + + + + + 30 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FlamerParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FlamerParticles.sbc index 307746de0..b0599a15b 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FlamerParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_FlamerParticles.sbc @@ -1,887 +1,887 @@ - - - - - - 2109234457 - 90 - 0 - false - true - 0 - 0 - 0 - - - GPU - - - - 16 - 16 - 0 - - - - 1 - - - 31 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.05 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 250 - - - - - - - - - 0 - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 4 - - - 1 - - - 4 - - - 0.15 - - - true - - - - - - 30 - - - - - - Atlas_D_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -5 - - - - 0 - - - 0 - - - true - - - 0 - - - 0.2 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 10 - - - - - - - - - - 100 - - - - - 100 - - - - - 100 - - - - - 100 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.5 - - - 0.05 - - - 3 - - - 0 - - - true - - - 100 - - - - - GPU - - - - 16 - 16 - 0 - - - - 1 - - - 31 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.05 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 250 - - - - - - - - - 0 - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 4 - - - 1 - - - 1 - - - 0.15 - - - true - - - - - - 30 - - - - - - Atlas_D_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0.2 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 10 - - - - - - - - - - 100 - - - - - 100 - - - - - 100 - - - - - 100 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.5 - - - 0.05 - - - 3 - - - 0 - - - true - - - 25 - - - - - - 10000 - 1 - - + + + + + + 2109234457 + 90 + 0 + false + true + 0 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 1 + + + 31 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 250 + + + + + + + + + 0 + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 4 + + + 1 + + + 4 + + + 0.15 + + + true + + + + + + 30 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -5 + + + + 0 + + + 0 + + + true + + + 0 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 10 + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 0.05 + + + 3 + + + 0 + + + true + + + 100 + + + + + GPU + + + + 16 + 16 + 0 + + + + 1 + + + 31 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 250 + + + + + + + + + 0 + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 4 + + + 1 + + + 1 + + + 0.15 + + + true + + + + + + 30 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 10 + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 0.05 + + + 3 + + + 0 + + + true + + + 25 + + + + + + 10000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ImpulseTorchParticles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ImpulseTorchParticles.sbc index 307746de0..b0599a15b 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ImpulseTorchParticles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/AMP_ImpulseTorchParticles.sbc @@ -1,887 +1,887 @@ - - - - - - 2109234457 - 90 - 0 - false - true - 0 - 0 - 0 - - - GPU - - - - 16 - 16 - 0 - - - - 1 - - - 31 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.05 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 250 - - - - - - - - - 0 - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 4 - - - 1 - - - 4 - - - 0.15 - - - true - - - - - - 30 - - - - - - Atlas_D_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -5 - - - - 0 - - - 0 - - - true - - - 0 - - - 0.2 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 10 - - - - - - - - - - 100 - - - - - 100 - - - - - 100 - - - - - 100 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.5 - - - 0.05 - - - 3 - - - 0 - - - true - - - 100 - - - - - GPU - - - - 16 - 16 - 0 - - - - 1 - - - 31 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.05 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 250 - - - - - - - - - 0 - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 4 - - - 1 - - - 1 - - - 0.15 - - - true - - - - - - 30 - - - - - - Atlas_D_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0.2 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 10 - - - - - - - - - - 100 - - - - - 100 - - - - - 100 - - - - - 100 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0.5 - - - 0.05 - - - 3 - - - 0 - - - true - - - 25 - - - - - - 10000 - 1 - - + + + + + + 2109234457 + 90 + 0 + false + true + 0 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 1 + + + 31 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 250 + + + + + + + + + 0 + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 4 + + + 1 + + + 4 + + + 0.15 + + + true + + + + + + 30 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -5 + + + + 0 + + + 0 + + + true + + + 0 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 10 + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 0.05 + + + 3 + + + 0 + + + true + + + 100 + + + + + GPU + + + + 16 + 16 + 0 + + + + 1 + + + 31 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.05 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 250 + + + + + + + + + 0 + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 4 + + + 1 + + + 1 + + + 0.15 + + + true + + + + + + 30 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0.2 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 10 + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 0.05 + + + 3 + + + 0 + + + true + + + 25 + + + + + + 10000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ANO_AnomalyHeal2.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ANO_AnomalyHeal2.sbc index dce5461e7..e1d615f96 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ANO_AnomalyHeal2.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ANO_AnomalyHeal2.sbc @@ -1,476 +1,476 @@ - - - - - - 386088596 - 0.1 - 0 - false - false - 1 - 0 - 0 - - - GPU - - - - 18 - 20 - 0 - - - - 0 - - - 1 - - - - - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - 1 - 100 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 75 - 75 - 75 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 10 - - - - - - - - - 0 - - - - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 1 - - - 1 - - - 4 - - - 1 - - - true - - - - - - 0 - - - - - - Atlas_AnoText - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - -1 - 0 - - - - 0 - - - 0.01 - - - false - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 100 - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - - - - -4 - - - - - -4 - - - - - -4 - - - - - -4 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 10000 - 1 - - + + + + + + 386088596 + 0.1 + 0 + false + false + 1 + 0 + 0 + + + GPU + + + + 18 + 20 + 0 + + + + 0 + + + 1 + + + + + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + 1 + 100 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 75 + 75 + 75 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 10 + + + + + + + + + 0 + + + + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_AnoText + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + -1 + 0 + + + + 0 + + + 0.01 + + + false + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 100 + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + + + + -4 + + + + + -4 + + + + + -4 + + + + + -4 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 10000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLARE.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLARE.sbc new file mode 100644 index 000000000..810e08f46 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLARE.sbc @@ -0,0 +1,455 @@ + + + + + + 117011 + 5 + 0 + false + true + 5 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 8 + + + + + + + + + + + 30 + 30 + 30 + 1 + + + + + + + 12.9828262 + 5.940601 + 2.43134022 + 1 + + + + + + + 0.9913929 + 0.4590799 + 0.0563741 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.4 + + + + + 1.6 + + + + + 1 + + + + + 0 + + + + + + + + + 0.5 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + 100 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.5 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + 0.5 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 5000 + -1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLAREDEATH.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLAREDEATH.sbc new file mode 100644 index 000000000..2f068ccba --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWFLAREDEATH.sbc @@ -0,0 +1,449 @@ + + + + + + 117012 + 4 + 0 + false + false + 4 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 128 + + + 96 + + + + + + + + + + + 1 + 0.5764706 + 0.215686277 + 0.156862751 + + + + + + + 0.215686277 + 0.215686277 + 0.215686277 + 0.5882353 + + + + + + + 0.008526365 + 0.008526365 + 0.008526365 + 0.07843138 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 0.5 + + + + + 0.02 + + + + + 0.02 + + + + + 0.02 + + + + + + + + + 0.5 + + + + + + + 0.012 + 0.012 + 0.012 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + 0 + + + + + + + + + 50 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 4 + + + + + 9 + + + + + 25 + + + + + 6 + + + + + + + + + 1 + + + 2 + + + 4 + + + 0.02 + + + true + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + -4 + + + + 0 + + + 0 + + + true + + + 0.95 + + + 0.5 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 2 + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 25 + + + 0 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + 1500 + 250 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWNUKE.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWNUKE.sbc new file mode 100644 index 000000000..30396951c --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWNUKE.sbc @@ -0,0 +1,2524 @@ + + + + + + 306776690 + 10 + 0 + false + false + 7 + 10 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 0.9743002 + 0.6667436 + 0.4174014 + 1 + + + + + + + 0.9743002 + 0.6667436 + 0.4174014 + 1 + + + + + + + 0.9743002 + 0.6667436 + 0.4174014 + 0.5 + + + + + + + 0.9743002 + 0.2667436 + 0.1174014 + 0.2 + + + + + + + 0.638598263 + 0.174835235 + 0.0769499242 + 0.01 + + + + + + + 0 + 0 + 0 + -10 + + + + + + + + + + + + + + + + + 50 + + + + + 300 + + + + + 300 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 150 + + + + + 90 + + + + + 40 + + + + + 50 + + + + + 40 + + + + + 10 + + + + + + + + + 7 + + + 1 + + + 0 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.86 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 10000 + + + + + 1 + + + + + 0.1 + + + + + -100 + + + + + + + + + 1 + + + false + + + false + + + 10 + + + 0 + + + 1 + + + 3 + + + 0 + + + false + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0.9743002 + 0.6667436 + 0.4174014 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 50 + + + + + 0.5 + + + + + 0.5 + + + + + + + + + 0.5 + + + + + + + 1 + 1 + 1 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 3 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.15 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 200 + + + + + + + + + 1.5 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.86 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + + + + + + + + 3 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 20 + + + + + + + + + + + 0.1 + 0.5 + 0.9 + 1 + + + + + + + 0 + 0.4 + 1 + 1 + + + + + + + 0.2 + 0.3992933 + 0.3992933 + 1 + + + + + + + 0.90472 + 0.180623591 + 0.180623591 + 0.2 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1000 + + + + + 600 + + + + + 3 + + + + + 1 + + + + + + + + + 0.05 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 20 + + + + + + + + + 30 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.2 + + + + + 0.1 + + + + + 0.01 + + + + + 0 + + + + + + + + + 0.2 + + + 1 + + + 0.5 + + + 0.05 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -5 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.86 + + + 0.2 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 40 + + + + + 30 + + + + + 20 + + + + + 10 + + + + + + 0 + + + + + + + + + + 10000 + + + + + 10000 + + + + + 10000 + + + + + 10000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 110 + + + 1 + + + 0 + + + 0 + + + false + + + 100 + + + + + GPU + + + + 16 + 16 + 0 + + + + 4 + + + 1 + + + + + + + + + + + 1 + 0.9743002 + 0.8355278 + 1 + + + + + + + 1 + 0.8355278 + 0.666117 + 1 + + + + + + + 1 + 0.7226725 + 0.7226725 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 50 + + + + + 2 + + + + + 1 + + + + + + + + + 0.3 + + + + + + + 15 + 15 + 15 + + + + + + + + + + 12 + + + + + + + 0 + 0 + -1 + + + + + + + 75 + + + + + + + + + 0.5 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0.25 + + + + + 0.1 + + + + + 0 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 5 + + + + 0 + 0 + 0 + + + + 0.25 + + + 0 + + + true + + + 0.86 + + + 1 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 20 + + + + + 20 + + + + + 10 + + + + + 10 + + + + + + 0 + + + + + + + + + + 10000 + + + + + 1000 + + + + + 500.26825 + + + + + 1 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 10 + + + 1 + + + 0 + + + 0.001 + + + false + + + 20 + + + + + GPU + + + + 16 + 16 + 0 + + + + 4 + + + 1 + + + + + + + + + + + 0 + 0.9743002 + 0.8355278 + 1 + + + + + + + 1 + 0.8355278 + 0.666117 + 1 + + + + + + + 1 + 0.7226725 + 0.7226725 + 1 + + + + + + + 0.8 + 0.2 + 0.2 + 0.523869 + + + + + + + 0.389392346 + 0 + 0 + 0.401010334 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 50 + + + + + 2 + + + + + 0 + + + + + + + + + 0.2 + + + + + + + 5 + 5 + 5 + + + + + + + + + + 4 + + + + + + + 0 + 0 + -1 + + + + + + + 15 + + + + + + + + + 1 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.1 + + + + + 0.1 + + + + + 0 + + + + + + + + + 6 + + + 1 + + + 4 + + + 0 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 2 + + + + 0 + 0 + 0 + + + + 0.25 + + + 0.127 + + + true + + + 0.86 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 12 + + + + + 10 + + + + + 8 + + + + + 6 + + + + + + 0 + + + + + + + + + + 1E+09 + + + + + 100000 + + + + + 10000 + + + + + 1000 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 10 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 0.9743002 + 0.6667436 + 0.4174014 + 1 + + + + + + + 0.9 + 0.6 + 0.4 + 1 + + + + + + + 0.9743002 + 0.2667436 + 0.1174014 + 1 + + + + + + + 0.9743 + 0.9743 + 0.117401 + 1 + + + + + + + + + + + + + 1600 + + + + + 800 + + + + + 600 + + + + + 400 + + + + + 100 + + + + + 0 + + + + + + + + + + + + 24000 + + + + + 5000 + + + + + 200 + + + + + 10 + + + + + 1 + + + + + 8 + + + + + 2 + + + + + 5 + + + + + 25 + + + + + 10 + + + + + 5 + + + + + 1 + + + + + 0 + + + + + + + + + true + + + 0 + + + 0.1 + + + 0 + + + + + 15000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWTRAIL.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWTRAIL.sbc new file mode 100644 index 000000000..da42d6be3 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ARROWTRAIL.sbc @@ -0,0 +1,468 @@ + + + + + + 117010 + 5 + 0 + false + true + 0 + 20 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 72 + + + + + + + + + + + 5 + 5 + 5 + 1 + + + + + + + 0.2390225 + 0.05818718 + 0.02095113 + 1 + + + + + + + 0.05 + 0.05 + 0.05 + 1 + + + + + + + 0.005 + 0.005 + 0.005 + 1 + + + + + + + 0.00251068245 + 0.00251068245 + 0.00251068245 + 0.502136469 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 10 + + + + + 2 + + + + + 1.5 + + + + + 1 + + + + + + + + + 0.95 + + + + + + + 0.25 + 0.25 + 0.5 + + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 1 + + + + + + + 10 + + + + + + + + + 10 + + + + + + + + + + + + 360 + + + + + + + 0 + 0 + -50 + + + + + + + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 1 + + + + + 3 + + + + + 3 + + + + + 1 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 0.75 + + + 1 + + + 1 + + + 0.75 + + + true + + + + + + 200 + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 20 + + + + 5 + + + 0 + + + true + + + 0 + + + 0.25 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 1 + 1 + 1 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 100 + + + + + 1 + + + + + 0 + + + + + 1 + + + + + 1 + + + + + + + + + 0.1 + + + false + + + false + + + 1 + + + 3 + + + 1 + + + 0 + + + 0.0001 + + + false + + + 0 + + + + + + 11000 + -1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine.sbc new file mode 100644 index 000000000..9af9465ca --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine.sbc @@ -0,0 +1,5157 @@ + + + + + + -889240298 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 145 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 146 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -14.5 + 0 + 145 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -14.5 + 0 + 146 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 142 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_01.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_01.sbc new file mode 100644 index 000000000..2e3756ec0 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_01.sbc @@ -0,0 +1,6047 @@ + + + + + + 1951439660 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 145 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 146 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -14.5 + 0 + 145 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -14.5 + 0 + 146 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 142 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 3 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -20 + 15 + -56 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + -20 + 10 + -56 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_02.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_02.sbc new file mode 100644 index 000000000..82dbefb4a --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Dreadnaught_Engine_Damage_02.sbc @@ -0,0 +1,7813 @@ + + + + + + -1940243109 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 145 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 14.5 + 0 + 146 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + 15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + -15.5 + 142 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + 6 + 13 + 15 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 7 + + + + + 14 + + + + + 9 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + 250 + 250 + 250 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 6 + + + + + 6 + + + + + 6 + + + + + 6 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 25 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -9.5 + -15.5 + 143 + + + + 0 + + + 0.1 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 9.5 + 15.5 + 143 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 3 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -20 + 15 + -56 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + -20 + 10 + -56 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + -90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 3 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 20 + 7 + 6 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + -90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 20 + 7 + 6 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + -14.5 + 0 + 145 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -14.5 + 0 + 145 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 73 + + + + + + + + + + + 0 + 0 + 0 + 0.5 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 1 + 1 + 1 + 0.5 + + + + + + + 1 + 1 + 1 + 0.25 + + + + + + + 0 + 0 + 0 + 0.15 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 5 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 3 + + + + + + + + + + 16 + + + + + 20 + + + + + 18 + + + + + 25 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 3 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + -15 + -12 + 0 + + + + 5 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + 15 + 8 + 2 + 1 + + + + + + + + + + + + + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + 0.75 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 90 + 0 + -1 + + + + + + + -10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 6 + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + + + + + + + + 7 + + + + + 12 + + + + + 6 + + + + + 3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.05 + + + true + + + + + + 15 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + -15 + -12 + 0 + + + + 0 + + + 0 + + + true + + + 0.8 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 0.5 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/EXPLODETHESUN1.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/EXPLODETHESUN1.sbc new file mode 100644 index 000000000..a4a623b9e --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/EXPLODETHESUN1.sbc @@ -0,0 +1,455 @@ + + + + + + 305503567 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 10 + 2 + 1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 20 + + + + + 20 + + + + + 20 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 20000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Green_Turbo_Light.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Green_Turbo_Light.sbc new file mode 100644 index 000000000..785d96d10 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Green_Turbo_Light.sbc @@ -0,0 +1,90 @@ + + + + + + 333890035 + 90 + 0 + false + false + 0 + 0 + 0 + + + + + + + + + + + + + + + + 15 + 30 + 0 + 1 + + + + + + + + + + + + + 15 + + + + + + + + + 1.25 + + + + + + + + + 10 + + + + + + + + + true + + + 0 + + + 1 + + + 0.05 + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/INV_NapalmParticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/INV_NapalmParticle.sbc index 798899110..9437ecf44 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/INV_NapalmParticle.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/INV_NapalmParticle.sbc @@ -1,1465 +1,1465 @@ - - - - - - 1872113937 - 90 - 0 - false - false - 0 - 10 - 0 - - - GPU - - - - 16 - 16 - 0 - - - - 0 - - - 32 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 5 - - - - - 5 - - - - - 5 - - - - - 5 - - - - - - - - - - - - 50 - - - - - 50 - - - - - 50 - - - - - 50 - - - - - - - - - 1 - - - 1 - - - 4 - - - 0.03125 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 10 - - - - - 10 - - - - - 10 - - - - - 10 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 0 - - - 32 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 50 - 50 - 50 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 15 - - - - - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 360 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 17 - - - - - 17 - - - - - 17 - - - - - 17 - - - - - - - - - 1 - - - 1 - - - 0.2 - - - 0.03125 - - - true - - - - - - 0 - - - - - 1000 - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 0 - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - -1 - - - - - -1 - - - - - -1 - - - - - -1 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - 0 - 0 - 0 - 1 - - - - - - - 0 - 0 - 0 - 1 - - - - - - - 0 - 0 - 0 - 1 - - - - - - - 0 - 0 - 0 - 1 - - - - - - - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - 250 - - - - - 250 - - - - - 250 - - - - - 250 - - - - - - - - - 1 - - - 1 - - - 4 - - - 1 - - - true - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - true - - - 0 - - - - - - 3000 - 1 - - + + + + + + 1872113937 + 90 + 0 + false + false + 0 + 10 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 50 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.03125 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 32 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 50 + 50 + 50 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 15 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 17 + + + + + 17 + + + + + 17 + + + + + 17 + + + + + + + + + 1 + + + 1 + + + 0.2 + + + 0.03125 + + + true + + + + + + 0 + + + + + 1000 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + -1 + + + + + -1 + + + + + -1 + + + + + -1 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + 0 + 0 + 0 + 1 + + + + + + + 0 + 0 + 0 + 1 + + + + + + + 0 + 0 + 0 + 1 + + + + + + + 0 + 0 + 0 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + 250 + + + + + 250 + + + + + 250 + + + + + 250 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_Disabled.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_Disabled.sbc new file mode 100644 index 000000000..661aca43b --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_Disabled.sbc @@ -0,0 +1,1155 @@ + + + + + + 690491419 + 1 + 0 + false + true + 4 + 3 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 1 + 2 + 2 + 1 + + + + + + + 1 + 2 + 2 + 1 + + + + + + + 1 + 2 + 2 + 1 + + + + + + + 1 + 2 + 2 + 1 + + + + + + + + + + + + + + + + + 50 + + + + + 50 + + + + + 50 + + + + + 50 + + + + + + + + + 0.5 + + + + + + + 4 + 4 + 4 + + + + + + + + + + 0.5 + + + + + + + 0 + 1 + 0 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 1.5 + + + + + 1.5 + + + + + 3 + + + + + + + + + 0.2 + + + 10 + + + 4 + + + 0.01 + + + true + + + + + + 16 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -0.1 + + + + 2 + -1.5 + 0.2 + + + + 0 + + + 0 + + + true + + + 1 + + + 0.1 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + -0.7 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0.3185261 + 0.3495145 + 0.3495145 + 0.3921569 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1000 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 4 + 4 + 4 + + + + + + + + + + 0.5 + + + + + + + 0 + 1 + 0 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 1.5 + + + + + 1.5 + + + + + 3 + + + + + + + + + 0.1 + + + 10 + + + 4 + + + 0.01 + + + true + + + + + + 8 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + -0.1 + + + + -1.2 + -1.5 + 0.2 + + + + 0 + + + 0.05 + + + true + + + 1 + + + 0.1 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + -0.7 + + + + + + + + + + 50 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + 1.4 + 1.4 + 1.4 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + + 0.9644268 + 0.8623552 + 0.616268 + 1 + + + + + + + 0.6186857 + 0.9658147 + 0.9157501 + 1 + + + + + + + + + + + + + 8 + + + + + + + + + 1 + + + + + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + 10 + + + + + 0 + + + + + + + + + 0 + + + + + + true + + + 0 + + + 0.5 + + + 0.1 + + + + + + + + + + + -1.5 + -1.5 + -1.5 + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + 10 + + + + + + + + + + + + 0 + + + + + 0 + + + + + 10 + + + + + 10 + + + + + 0 + + + + + + + + + false + + + 0 + + + 1 + + + 0.1 + + + + + 300 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_impact.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_impact.sbc new file mode 100644 index 000000000..473fed9c9 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Ion_impact.sbc @@ -0,0 +1,1843 @@ + + + + + + -1362751943 + 3 + 0 + false + false + 3 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 128 + + + 96 + + + + + + + + + + + 0.5803922 + 0.160784319 + 0.05882353 + 1 + + + + + + + 0.6039216 + 0.141176477 + 0.08235294 + 1 + + + + + + + 0 + 0.08627451 + 0.8039216 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 300 + + + + + 2500 + + + + + 2500 + + + + + 1 + + + + + + + + + 0 + + + + + + + 3.2 + 3.2 + 3.2 + + + + + + + + + + 0 + + + + + + + 0 + -1 + 0 + + + + + + + 10 + + + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.5 + + + + + -1 + + + + + -0.3 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.02 + + + + + 0.06 + + + + + 0.06 + + + + + 0.02 + + + + + + + + + 0.15 + + + 1 + + + 3 + + + 0.03 + + + true + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + true + + + false + + + 1 + + + 0.05 + + + + 0 + 0 + 0 + + + + 0.25 + + + 0 + + + true + + + 0.86 + + + 0.05 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 5 + + + + + 5 + + + + + 1 + + + + + + + + + + + + 15 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 2000 + + + + + 2000 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 8 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 0.9828262 + 0.9406007 + 0.4313402 + 1 + + + + + + + 0.9913929 + 0.4590799 + 0.0563741 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 500 + + + + + 500 + + + + + 500 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 3 + + + + + 0 + + + + + + + + + 0.13 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + 100 + + + + + 100 + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.86 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 128 + + + 96 + + + + + + + + + + + 0.7299189 + 0.5295233 + 0.3786763 + 1 + + + + + + + 0.3372549 + 0.6862745 + 0.8666667 + 1 + + + + + + + 0 + 0.219607845 + 0.8039216 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 300 + + + + + 2500 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 2.5 + 2.5 + 2.5 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 8 + + + + + + + + + 0.5 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 10 + + + + + 20 + + + + + -3 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.2 + + + + + 0.1 + + + + + 0.2 + + + + + 0.01 + + + + + + + + + 0.15 + + + 1 + + + 1 + + + 0.03 + + + true + + + + + + Atlas_E_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0.25 + + + 0 + + + true + + + 0.86 + + + 0 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 50 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 224 + + + 16 + + + + + + + + + + + 0.7299189 + 0.5295233 + 0.3786763 + 1 + + + + + + + 0.3372549 + 0.6862745 + 0.8666667 + 1 + + + + + + + 0 + 0.219607845 + 0.8039216 + 1 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 300 + + + + + 2500 + + + + + 1000 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 2.5 + 2.5 + 2.5 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 3 + + + + + + + + + 0.5 + + + + + + + + + 0 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 10 + + + + + 20 + + + + + -3 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 1.5 + + + + + 0.8 + + + + + 0.01 + + + + + + + + + 0.33 + + + 1 + + + 0.25 + + + 0.03 + + + true + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0.25 + + + 0 + + + true + + + 0.86 + + + 0.15 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 100 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + 0.5411765 + 0.7764706 + 0.968627453 + 1 + + + + + + + + + + 0.5 + + + + + + + + + 50 + + + + + 100 + + + + + 150 + + + + + 160 + + + + + + + + + + + + 350 + + + + + 500 + + + + + 250 + + + + + 0 + + + + + + + + + true + + + 1 + + + 1 + + + 0.1 + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/NecronWhipProjectileParticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/NecronWhipProjectileParticle.sbc new file mode 100644 index 000000000..881e85851 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/NecronWhipProjectileParticle.sbc @@ -0,0 +1,947 @@ + + + + + + 411954321 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 200 + + + + + + + + + 180 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + 0.2 + + + 1 + + + 0 + + + 0.0001 + + + true + + + + + + 300 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + true + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0.15 + + + 0.05 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + 0.5 + + + + + + + + + + + + 0 + + + + + + + + + + 200 + + + + + 200 + + + + + 200 + + + + + 200 + + + + + + + + + 5 + + + false + + + false + + + 2 + + + 2 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 32 + + + + + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + 1 + 3 + 1 + 1 + + + + + + + + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 500 + + + + + + + + + 200 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 0.1 + + + 1 + + + 0 + + + 0.0001 + + + true + + + + + + 7 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + true + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + -2 + + + 0 + + + true + + + 0.15 + + + 0.05 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + 200 + + + + + 200 + + + + + 200 + + + + + 200 + + + + + + + + + 5 + + + false + + + false + + + 2 + + + 2 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + + + + + + + + + + + + + + 1 + 2 + 1 + 1 + + + + + + + + + + + + + 100 + + + + + + + + + + + + 20 + + + + + + + + + true + + + 0 + + + 1 + + + 0.1 + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Particles.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Particles.sbc index 7d4cab983..062adcb3f 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Particles.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/Particles.sbc @@ -1,5228 +1,5228 @@ - - - - - - - - ParticleEffect - EnergyBauble - - 0 - 4757 - 6 - 1 - 3 - 200 - true - - - - GPU - - - - 16 - 16 - 0 - - - - 64 - - - 8 - - - - - - - - - - - 1.0 - 1.0 - 0.5 - 0.2 - - - - - - 1.0 - 1.0 - 0.5 - 0.2 - - - - - - 1.0 - 1.0 - 0.5 - 0.8 - - - - - - 1.0 - 1.0 - 0.5 - 0.2 - - - - - - - - - - - - - - - - 100 - - - - 100 - - - - 100 - - - - 100 - - - - - - - - 0 - - - - - - - 0.8 - 0.8 - 0.8 - - - - - - - - - .98 - - - - - - 0 - 0 - -1 - - - - - - - 0.001 - - - - 0.001 - - - - - - - - 0.5 - - - - - - - - 20 - - - - - - - - 20 - - - - - - 0 - 0 - 0.003 - - - - 10 - - - - - - - - - - 0.05 - - - - 0.05 - - - - 0.05 - - - - 0.05 - - - - 0.05 - - - - 0.05 - - - - - - - - 1.6 - - - 1 - - - 18.5 - - - 0.02 - - - true - - - - - - 10 - - - - 10 - - - - 10 - - - - - Atlas_E_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 2 - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - true - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - 1 - - - 0.001 - - - - - - - - - GPU - - - - 16 - 16 - 1 - - - - 145 - - - 80 - - - - - - - - - - - 1.0 - 0.99 - 0.5 - 0.2 - - - - - - 1.0 - 0.99 - 0.5 - 0.2 - - - - - - 1.0 - 0.99 - 0.5 - 0.2 - - - - - - 1.0 - 0.99 - 0.5 - 0.2 - - - - - - - - - - - - - - - - 100 - - - - 50 - - - - 50 - - - - 100 - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 0 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - - - - - - - - 0.4 - - - - 0.4 - - - - 0.4 - - - - 0.4 - - - - - - - - 0.15 - - - 1 - - - 4 - - - 2 - - - true - - - - - - 25 - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 1 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 0 - - - - - - - - - - 110 - - - - 110 - - - - 110 - - - - 110 - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - - - - - - - - - - CPU - - - - - - 0 - - - - - - - - 1.5 - - - - - 0.25 - - - - - - - 0 - 1 - 0 - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.0001 - - - - - - - - - - - - - - - - - - - 0 - 0 - 0 - 0 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - Current_A_Sprite - - - - - - - - 0 - - - - - - false - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - false - - - 0 - - - - - - - - - 0 - - - - - - - - - 1 - - - - - 0 - - - - - - 1 - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 0 - - - - 6 - 4 - 0 - - - - - - - - - - - 6 - - - - 7 - - - - - - - - 0 - - - 0 - - - 0 - - - 1 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - - - - - - - - - - - - - - - 1.0 - 0.8 - 0.8 - 0.2 - - - - - - - - - - - - 1.5 - - - - 1.5 - - - - 1.5 - - - - 1.0 - - - - 1.0 - - - - 1.0 - - - - 1.5 - - - - 1.5 - - - - 1.5 - - - - 1.0 - - - - 1.0 - - - - - - - - .5 - - - - - - - - 300 - - - - - - - - 1 - - - - - true - - - 0 - - - 10 - - - 10 - - - - - - - - - - ParticleEffect - Energy_Explosion - - 0 - 34 - 2 - 2 - 0 - 5000 - false - - - GPU - - - - 16 - 16 - 0 - - - - 32 - - - 32 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 0.7686275 - 0.4308151 - 0.4308151 - 0.4308151 - - - - - - 0.7686275 - 0.4308151 - 0.4308151 - 0.4308151 - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - 1500 - - - - 1500 - - - - 50 - - - - 1 - - - - - - - - 0.5 - - - - - - - 1.5 - 1.5 - 1.5 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 1.5 - - - - - - - - 0.5 - - - - - - - - 0 - - - - - - - - 360 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 1 - - - - - - - - - - 1 - - - - 2.5 - - - - 3 - - - - 2.5 - - - - - - - - 1.04 - - - 20 - - - 4 - - - 0.037 - - - true - - - - - - Atlas_D_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 1 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 5 - - - - 3 - - - - 3 - - - - - 0 - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 4 - - - 8 - - - - - - - - - - - 1 - 0.9469329 - 0.9210556 - 0.5143444 - - - - - - 1 - 0.7154654 - 0.3586539 - 0.1904629 - - - - - - 1 - 0.1767743 - 0.1449721 - 0.1449721 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - 2000 - - - - 600 - - - - 100 - - - - 1 - - - - - - - - 0.1 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 25 - - - - 0 - - - - - - - - 15 - - - - - - - - 0 - - - - - - - - 360 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - - - - - - - - 0 - - - - 0 - - - - 0.1 - - - - 0.1 - - - - - - - - 0.5 - - - 1 - - - 0.24 - - - 0.01 - - - true - - - - - - Atlas_D_01 - - - 1 - - - true - - - false - - - false - - - false - - - 1 - - - 1 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0.15 - - - true - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 300 - - - - - 0 - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 64 - - - 8 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 0.9828262 - 0.9406007 - 0.4313402 - - - - - - 1 - 0.9913929 - 0.4590799 - 0.0563741 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - 500 - - - - 500 - - - - 500 - - - - 1 - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 360 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - - - - - - - - 1 - - - - 0.5 - - - - 2.5 - - - - 0.1 - - - - - - - - 0.13 - - - 1 - - - 4 - - - 0.001 - - - true - - - - - - 100 - - - - 100 - - - - 0 - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 4 - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - GPU - - - - 4 - 4 - 1 - - - - 6 - - - 1 - - - - - - - - - - - 0.5019608 - 0.07582522 - 0.1101903 - 0.1083053 - - - - - - 0.254902 - 0.254902 - 0.254902 - 0.254902 - - - - - - 0 - 0 - 0 - 0 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - 2 - - - - 2 - - - - 2 - - - - 2 - - - - - - - - 0.5 - - - - - - - 0 - 0 - 0 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 0 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - - - - - - - - 0.1 - - - - 0.1 - - - - 30 - - - - 50 - - - - - - - - 0.4 - - - 1 - - - 4 - - - 1 - - - true - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - false - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 1 - - - - - 0 - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 7 - - - 1 - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 0.9828262 - 0.9406007 - 0.4313402 - - - - - - 1 - 1 - 1 - 1 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - 500 - - - - 500 - - - - 500 - - - - 1 - - - - - - - - 0.5 - - - - - - - 2 - 2 - 2 - - - - - - - - - 0 - - - - - - 0 - 0 - -1 - - - - - - - 5 - - - - - - - - 0 - - - - - - - - 0 - - - - - - - - 360 - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 0 - - - - - - - - - - 1 - - - - 6 - - - - 1 - - - - 0.1 - - - - - - - - 0.25 - - - 1 - - - 4 - - - 1 - - - false - - - - - - Atlas_E_01 - - - 1 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - 0 - - - - 0 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - 1 - - - - - - - - - - - 1 - - - - 1 - - - - 1 - - - - - 4 - - - - - - - - - - 0 - - - - 0 - - - - 0 - - - - 0 - - - - - - - - 5 - - - false - - - false - - - 1 - - - 0 - - - 1 - - - 0 - - - 0 - - - - - - - - - - - - - - - - - - - 1 - 1 - 0.8122415 - 0.4259053 - - - - - - - - - - - - 150 - - - - - - - - 1 - - - - - - - - 0 - - - - 120 - - - - 115 - - - - 45 - - - - 35 - - - - 12 - - - - 0 - - - - - - - - true - - - 0 - - - 0.3 - - - 1 - - - - - - - - - - - ParticleEffect - recoil_Flash - - 0 - 202 - 1 - 0.25 - 0 - false - - - CPU - - - - - - 0 - - - - - - - - 0.5 - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - 0 - - - - - - - -90 - 0 - 90 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.1 - - - - - - - - - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - Atlas_A_01 - - - - - - - - 0 - - - - - - 0.2 - - - - - true - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - true - - - 0 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - 0 - - - - - - 10 - - - - - - - - - - - - - 0 - 0 - -0.2 - - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 1 - - - - 32 - 16 - 0 - - - - - - - - - - - 64 - - - - 79 - - - - - - - - 0 - - - 0 - - - 0 - - - 1 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - CPU - - - - - - 0 - - - - - - - - 0.5 - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - 0 - - - - - - - -90 - 0 - -45 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.1 - - - - - - - - - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - Atlas_A_01 - - - - - - - - 0 - - - - - - 0.2 - - - - - true - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - true - - - 0 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - 0 - - - - - - 10 - - - - - - - - - - - - - 0 - 0 - -0.2 - - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 1 - - - - 32 - 16 - 0 - - - - - - - - - - - 66 - - - - 79 - - - - - - - - 0 - - - 0 - - - 0 - - - 1 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - CPU - - - - - - 0 - - - - - - - - 0.5 - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.2 - - - - - - - - - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - Atlas_A_01 - - - - - - - - 0 - - - - - - true - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - true - - - 0 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - 0 - - - - - - 2 - - - - - - - - - - - - - 0 - 0 - -0.03 - - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 1 - - - - 16 - 16 - 0 - - - - - - - - - - - 48 - - - - 63 - - - - - - - - 0 - - - 0 - - - 0 - - - 1 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - CPU - - - - - - 0 - - - - - - - - 0.5 - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - 0 - - - - - - - -90 - 0 - 45 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.1 - - - - - - - - - - - - - - - - - - - 1 - 1 - 1 - 1 - - - - - - 1 - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - Atlas_A_01 - - - - - - - - 0 - - - - - - 0.2 - - - - - true - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - true - - - 0 - - - - - - - - - 0 - - - - - - - - - 2 - - - - - 0 - - - - - - 10 - - - - - - - - - - - - - 0 - 0 - -0.2 - - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 1 - - - - 32 - 16 - 0 - - - - - - - - - - - 64 - - - - 79 - - - - - - - - 0 - - - 0 - - - 0 - - - 1 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - CPU - - - - - - 20 - - - - - - - - 0.5 - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0.2 - - - - - - - - - - - - - - - - - - - 0.0103978 - 0.008525821 - 0.006998232 - 0.005011245 - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - Atlas_A_01 - - - - - - - - 0 - - - - - - true - - - false - - - false - - - false - - - -1 - - - -1 - - - - - - 1 - - - - 1 - - - - 0 - - - - - - - - 1 - - - - - - - - 1 - - - - - true - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - 0 - - - - - - 10 - - - - - - - - - - - - - 0 - 0 - -0.03 - - - - - - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - 0 - - - - 16 - 16 - 0 - - - - - - - - - - - 31 - - - - - - - - 0 - - - 0 - - - 0 - - - 10 - - - 0 - - - - - - - 5 - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 1 - 1 - 1 - - - - - - - 1 - - - - - 1 - - - 1 - - - false - - - - - - - - - - - - - - - - - 0 - 0 - 0 - - - - - - - - - - - - - 1 - 1 - 0.9686275 - 0.8823529 - - - - - - - - - - - - 1 - - - - - - - - - - - 10 - - - - - - - - 5 - - - - - true - - - - - - - - + + + + + + + + ParticleEffect + EnergyBauble + + 0 + 4757 + 6 + 1 + 3 + 200 + true + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 8 + + + + + + + + + + + 1.0 + 1.0 + 0.5 + 0.2 + + + + + + 1.0 + 1.0 + 0.5 + 0.2 + + + + + + 1.0 + 1.0 + 0.5 + 0.8 + + + + + + 1.0 + 1.0 + 0.5 + 0.2 + + + + + + + + + + + + + + + + 100 + + + + 100 + + + + 100 + + + + 100 + + + + + + + + 0 + + + + + + + 0.8 + 0.8 + 0.8 + + + + + + + + + .98 + + + + + + 0 + 0 + -1 + + + + + + + 0.001 + + + + 0.001 + + + + + + + + 0.5 + + + + + + + + 20 + + + + + + + + 20 + + + + + + 0 + 0 + 0.003 + + + + 10 + + + + + + + + + + 0.05 + + + + 0.05 + + + + 0.05 + + + + 0.05 + + + + 0.05 + + + + 0.05 + + + + + + + + 1.6 + + + 1 + + + 18.5 + + + 0.02 + + + true + + + + + + 10 + + + + 10 + + + + 10 + + + + + Atlas_E_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 2 + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + 1 + + + 0.001 + + + + + + + + + GPU + + + + 16 + 16 + 1 + + + + 145 + + + 80 + + + + + + + + + + + 1.0 + 0.99 + 0.5 + 0.2 + + + + + + 1.0 + 0.99 + 0.5 + 0.2 + + + + + + 1.0 + 0.99 + 0.5 + 0.2 + + + + + + 1.0 + 0.99 + 0.5 + 0.2 + + + + + + + + + + + + + + + + 100 + + + + 50 + + + + 50 + + + + 100 + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + + + + + + + 0.4 + + + + 0.4 + + + + 0.4 + + + + 0.4 + + + + + + + + 0.15 + + + 1 + + + 4 + + + 2 + + + true + + + + + + 25 + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 0 + + + + + + + + + + 110 + + + + 110 + + + + 110 + + + + 110 + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + + + + + + + + + + CPU + + + + + + 0 + + + + + + + + 1.5 + + + + + 0.25 + + + + + + + 0 + 1 + 0 + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.0001 + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + + + Current_A_Sprite + + + + + + + + 0 + + + + + + false + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + false + + + 0 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + 0 + + + + + + 1 + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 0 + + + + 6 + 4 + 0 + + + + + + + + + + + 6 + + + + 7 + + + + + + + + 0 + + + 0 + + + 0 + + + 1 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + + + + + + + + + + + + + + + 1.0 + 0.8 + 0.8 + 0.2 + + + + + + + + + + + + 1.5 + + + + 1.5 + + + + 1.5 + + + + 1.0 + + + + 1.0 + + + + 1.0 + + + + 1.5 + + + + 1.5 + + + + 1.5 + + + + 1.0 + + + + 1.0 + + + + + + + + .5 + + + + + + + + 300 + + + + + + + + 1 + + + + + true + + + 0 + + + 10 + + + 10 + + + + + + + + + + ParticleEffect + Energy_Explosion + + 0 + 34 + 2 + 2 + 0 + 5000 + false + + + GPU + + + + 16 + 16 + 0 + + + + 32 + + + 32 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 0.7686275 + 0.4308151 + 0.4308151 + 0.4308151 + + + + + + 0.7686275 + 0.4308151 + 0.4308151 + 0.4308151 + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + 1500 + + + + 1500 + + + + 50 + + + + 1 + + + + + + + + 0.5 + + + + + + + 1.5 + 1.5 + 1.5 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 1.5 + + + + + + + + 0.5 + + + + + + + + 0 + + + + + + + + 360 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 1 + + + + + + + + + + 1 + + + + 2.5 + + + + 3 + + + + 2.5 + + + + + + + + 1.04 + + + 20 + + + 4 + + + 0.037 + + + true + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 1 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 5 + + + + 3 + + + + 3 + + + + + 0 + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 4 + + + 8 + + + + + + + + + + + 1 + 0.9469329 + 0.9210556 + 0.5143444 + + + + + + 1 + 0.7154654 + 0.3586539 + 0.1904629 + + + + + + 1 + 0.1767743 + 0.1449721 + 0.1449721 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + 2000 + + + + 600 + + + + 100 + + + + 1 + + + + + + + + 0.1 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 25 + + + + 0 + + + + + + + + 15 + + + + + + + + 0 + + + + + + + + 360 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + + + + + + + 0 + + + + 0 + + + + 0.1 + + + + 0.1 + + + + + + + + 0.5 + + + 1 + + + 0.24 + + + 0.01 + + + true + + + + + + Atlas_D_01 + + + 1 + + + true + + + false + + + false + + + false + + + 1 + + + 1 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0.15 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 300 + + + + + 0 + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 8 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 0.9828262 + 0.9406007 + 0.4313402 + + + + + + 1 + 0.9913929 + 0.4590799 + 0.0563741 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + 500 + + + + 500 + + + + 500 + + + + 1 + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 360 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + + + + + + + 1 + + + + 0.5 + + + + 2.5 + + + + 0.1 + + + + + + + + 0.13 + + + 1 + + + 4 + + + 0.001 + + + true + + + + + + 100 + + + + 100 + + + + 0 + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 4 + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + GPU + + + + 4 + 4 + 1 + + + + 6 + + + 1 + + + + + + + + + + + 0.5019608 + 0.07582522 + 0.1101903 + 0.1083053 + + + + + + 0.254902 + 0.254902 + 0.254902 + 0.254902 + + + + + + 0 + 0 + 0 + 0 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + 0.1 + + + + 30 + + + + 50 + + + + + + + + 0.4 + + + 1 + + + 4 + + + 1 + + + true + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 1 + + + + + 0 + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 0.9828262 + 0.9406007 + 0.4313402 + + + + + + 1 + 1 + 1 + 1 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + 500 + + + + 500 + + + + 500 + + + + 1 + + + + + + + + 0.5 + + + + + + + 2 + 2 + 2 + + + + + + + + + 0 + + + + + + 0 + 0 + -1 + + + + + + + 5 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 360 + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 0 + + + + + + + + + + 1 + + + + 6 + + + + 1 + + + + 0.1 + + + + + + + + 0.25 + + + 1 + + + 4 + + + 1 + + + false + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + + + + + 1 + + + + 1 + + + + 1 + + + + + 4 + + + + + + + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + + + + + + + + + + + + + + + + + 1 + 1 + 0.8122415 + 0.4259053 + + + + + + + + + + + + 150 + + + + + + + + 1 + + + + + + + + 0 + + + + 120 + + + + 115 + + + + 45 + + + + 35 + + + + 12 + + + + 0 + + + + + + + + true + + + 0 + + + 0.3 + + + 1 + + + + + + + + + + + ParticleEffect + recoil_Flash + + 0 + 202 + 1 + 0.25 + 0 + false + + + CPU + + + + + + 0 + + + + + + + + 0.5 + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + 0 + + + + + + + -90 + 0 + 90 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.1 + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + Atlas_A_01 + + + + + + + + 0 + + + + + + 0.2 + + + + + true + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + true + + + 0 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + 0 + + + + + + 10 + + + + + + + + + + + + + 0 + 0 + -0.2 + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 1 + + + + 32 + 16 + 0 + + + + + + + + + + + 64 + + + + 79 + + + + + + + + 0 + + + 0 + + + 0 + + + 1 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + CPU + + + + + + 0 + + + + + + + + 0.5 + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + 0 + + + + + + + -90 + 0 + -45 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.1 + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + Atlas_A_01 + + + + + + + + 0 + + + + + + 0.2 + + + + + true + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + true + + + 0 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + 0 + + + + + + 10 + + + + + + + + + + + + + 0 + 0 + -0.2 + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 1 + + + + 32 + 16 + 0 + + + + + + + + + + + 66 + + + + 79 + + + + + + + + 0 + + + 0 + + + 0 + + + 1 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + CPU + + + + + + 0 + + + + + + + + 0.5 + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.2 + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + Atlas_A_01 + + + + + + + + 0 + + + + + + true + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + true + + + 0 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + 0 + + + + + + 2 + + + + + + + + + + + + + 0 + 0 + -0.03 + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 1 + + + + 16 + 16 + 0 + + + + + + + + + + + 48 + + + + 63 + + + + + + + + 0 + + + 0 + + + 0 + + + 1 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + CPU + + + + + + 0 + + + + + + + + 0.5 + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + 0 + + + + + + + -90 + 0 + 45 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.1 + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + Atlas_A_01 + + + + + + + + 0 + + + + + + 0.2 + + + + + true + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + true + + + 0 + + + + + + + + + 0 + + + + + + + + + 2 + + + + + 0 + + + + + + 10 + + + + + + + + + + + + + 0 + 0 + -0.2 + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 1 + + + + 32 + 16 + 0 + + + + + + + + + + + 64 + + + + 79 + + + + + + + + 0 + + + 0 + + + 0 + + + 1 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + CPU + + + + + + 20 + + + + + + + + 0.5 + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0.2 + + + + + + + + + + + + + + + + + + + 0.0103978 + 0.008525821 + 0.006998232 + 0.005011245 + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + + + Atlas_A_01 + + + + + + + + 0 + + + + + + true + + + false + + + false + + + false + + + -1 + + + -1 + + + + + + 1 + + + + 1 + + + + 0 + + + + + + + + 1 + + + + + + + + 1 + + + + + true + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + 0 + + + + + + 10 + + + + + + + + + + + + + 0 + 0 + -0.03 + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + 0 + + + + 16 + 16 + 0 + + + + + + + + + + + 31 + + + + + + + + 0 + + + 0 + + + 0 + + + 10 + + + 0 + + + + + + + 5 + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 1 + 1 + 1 + + + + + + + 1 + + + + + 1 + + + 1 + + + false + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + + + + + + + 1 + 1 + 0.9686275 + 0.8823529 + + + + + + + + + + + + 1 + + + + + + + + + + + 10 + + + + + + + + 5 + + + + + true + + + + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNSHOT.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNSHOT.sbc new file mode 100644 index 000000000..70f007691 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNSHOT.sbc @@ -0,0 +1,1311 @@ + + + + + + 1248490464 + 90 + 0 + false + true + 1 + 1 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 7 + + + + + + + + + + + 10 + 1 + 1 + 1 + + + + + + + 10 + 1 + 1 + 1 + + + + + + + 10 + 1 + 1 + 1 + + + + + + + 10 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.3 + + + + + 0.3 + + + + + 0.3 + + + + + 0.3 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.1 + + + false + + + + + + 5 + + + + + + Atlas_D_01 + + + 69420 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 10 + + + + + + Atlas_E_01 + + + 69420 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 10 + 2 + 1 + 1 + + + + + + + 10 + 2 + 1 + 1 + + + + + + + 10 + 2 + 1 + 1 + + + + + + + 10 + 2 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 10 + + + + + + Atlas_E_01 + + + 69420 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNTRAVEL.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNTRAVEL.sbc new file mode 100644 index 000000000..69a062ee0 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/SUNTRAVEL.sbc @@ -0,0 +1,455 @@ + + + + + + -310762832 + 90 + 0 + false + true + 0.1 + 1 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.1 + + + + + 0.1 + + + + + 0.1 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUN.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUN.sbc new file mode 100644 index 000000000..d7328df4a --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUN.sbc @@ -0,0 +1,936 @@ + + + + + + 1725926289 + 0.1 + 0 + false + true + 5 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + + + + + + + + + + + 100 + + + + + 100 + + + + + 100 + + + + + 100 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 10 + + + + + 7 + + + + + 10 + + + + + + + + + 10 + + + 1 + + + 4 + + + 1 + + + true + + + + + + Atlas_E_01 + + + 0.001 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.002 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 6 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 30 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 10 + + + 1 + + + 4 + + + 1 + + + true + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 360 + 0 + 360 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 6 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + 10 + 2 + 0 + 10 + + + + + + + + + + + + + 200 + + + + + + + + + + + + 1000 + + + + + + + + + true + + + 0 + + + 1 + + + 100 + + + + + 20000 + -500 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUNMUZZLE.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUNMUZZLE.sbc new file mode 100644 index 000000000..6bc883286 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/THESUNMUZZLE.sbc @@ -0,0 +1,879 @@ + + + + + + -1360319236 + 0.1 + 0 + false + false + 1 + 1 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + 20 + 5 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 4 + + + + + 0 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 20 + + + + + 0 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 20000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/chromaticexplode.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/chromaticexplode.sbc new file mode 100644 index 000000000..9b1668e56 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/chromaticexplode.sbc @@ -0,0 +1,449 @@ + + + + + + 1897916599 + 0.1 + 0 + false + true + 1 + 1 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 48 + + + 16 + + + + + + + + + + + 10 + 10 + 1 + 1 + + + + + + + 10 + 10 + 1 + 1 + + + + + + + 10 + 10 + 1 + 1 + + + + + + + 10 + 10 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.1 + + + true + + + + + + 60 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.473 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/greenportalparticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/greenportalparticle.sbc new file mode 100644 index 000000000..8e7f2683b --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/greenportalparticle.sbc @@ -0,0 +1,872 @@ + + + + + + -1861197498 + 90 + 0 + false + true + 1 + 1 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 137 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 5 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 1 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 137 + + + 1 + + + + + + + + + + + 1 + 10 + 5 + 1 + + + + + + + 1 + 10 + 5 + 1 + + + + + + + 1 + 10 + 5 + 1 + + + + + + + 1 + 10 + 5 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 6 + + + + + 6 + + + + + 0 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 1 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/healaoe.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/healaoe.sbc new file mode 100644 index 000000000..8656c60b3 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/healaoe.sbc @@ -0,0 +1,449 @@ + + + + + + -554714793 + 1 + 0 + false + false + 10 + 10 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 1 + 10 + 5 + 1 + + + + + + + 1 + 10 + 5 + 1 + + + + + + + 1 + 10 + 5 + 0 + + + + + + + 1 + 10 + 5 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1000 + + + + + 947.3876 + + + + + 1 + + + + + + + + + 3 + + + 1 + + + 4 + + + 1 + + + true + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/incandescent_gas.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/incandescent_gas.sbc new file mode 100644 index 000000000..6fa0d4462 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/incandescent_gas.sbc @@ -0,0 +1,2665 @@ + + + + + + -735918706 + 0.1 + 0 + false + true + 60 + 60 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 20 + 5 + 1 + 0.01 + + + + + + + 20 + 5 + 1 + 0.01 + + + + + + + 20 + 5 + 1 + 0.01 + + + + + + + 20 + 5 + 1 + 0.01 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 10 + + + + + 7 + + + + + 10 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 3 + + + + + + Atlas_E_01 + + + 2 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.002 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 60 + + + + + 60 + + + + + 60 + + + + + 60 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 20 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 32 + 16 + 0 + + + + 448 + + + 33 + + + + + + + + + + + 10 + 2 + 2 + 1 + + + + + + + 10 + 2 + 2 + 1 + + + + + + + 10 + 2 + 2 + 1 + + + + + + + 10 + 2 + 2 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.1 + + + true + + + + + + 0.6 + + + + + + Atlas_D_01 + + + 0.1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.03 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 5 + + + + + + + + + + 2000 + + + + + 2000 + + + + + 2000 + + + + + 2000 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 22 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 32 + + + 3 + + + + + + + + + + + 255 + 255 + 255 + 1 + + + + + + + 255 + 255 + 255 + 1 + + + + + + + 255 + 255 + 255 + 1 + + + + + + + 255 + 255 + 255 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 1 + + + + + + Atlas_D_01 + + + 10000 + + + false + + + false + + + true + + + true + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.209 + + + true + + + 1 + + + 0.1 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 1 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 2 + + + 30 + + + + + + + + + + + 0.0001 + 0 + 0 + 1 + + + + + + + 0.0001 + 0 + 0 + 1 + + + + + + + 0.0001 + 0 + 0 + 1 + + + + + + + 0.0001 + 0 + 0 + 1 + + + + + + + + + + + + + + + + + 0.001 + + + + + 1 + + + + + 100 + + + + + 0.001 + + + + + + + + + 0.5 + + + + + + + 60 + 60 + 60 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 12 + + + + + + + + + 2 + + + + + + + + + 50 + + + + + + + + + 360 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 6 + + + + + 0 + + + + + -10 + + + + + + + + + 0 + + + + + + + + + + 3 + + + + + 3 + + + + + 3 + + + + + 3 + + + + + + + + + 5 + + + 1 + + + 0.6 + + + 0.2 + + + true + + + + + + 1.2 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.032 + + + false + + + 1 + + + 1 + + + true + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + 5 + + + + + 500 + + + + + 5000 + + + + + 50000 + + + + + 50 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 10 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 22 + + + 4 + + + + + + + + + + + 55 + 55 + 55 + 1 + + + + + + + 55 + 55 + 55 + 1 + + + + + + + 55 + 55 + 55 + 1 + + + + + + + 55 + 55 + 55 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 5 + + + + + + + + + 10 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 2 + + + 1 + + + 4 + + + 0.2 + + + false + + + + + + 2 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0.5 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 90 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 10 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 18 + + + + + + Atlas_E_01 + + + 5 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 2 + + + 0 + + + true + + + 1 + + + 0.2 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 360 + 0 + 360 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 200 + + + + + 200 + + + + + 200 + + + + + 200 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 20 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + + + + 0.8 + 0.2 + 0.01 + 0.5 + + + + + + + + + + + + + 2500 + + + + + + + + + + + + 700 + + + + + + + + + true + + + 0 + + + 0.0001 + + + 0 + + + + + 40000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magic_I_guess.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magic_I_guess.sbc new file mode 100644 index 000000000..2faec956a --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magic_I_guess.sbc @@ -0,0 +1,541 @@ + + + + + + 444 + 3 + 0 + false + false + 0.1 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 0 + + + 65 + + + + + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0.02 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.2 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + 1 + + + 1 + + + 0.01 + + + true + + + + + + 0 + + + + + + Atlas_F_01 + + + 0.15 + + + false + + + false + + + true + + + false + + + 1 + + + 0.3 + + + + 0 + 0 + 0 + + + + 0.5 + + + 0.737 + + + true + + + 1 + + + 0.1 + + + false + + + 0 + + + + 90 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 2 + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 5 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + + + + + + + + + + + 1 + 1 + 1 + + + + + + + + + + + 1 + 1 + 2 + 1 + + + + + + + + + + + + + 20 + + + + + + + + + 1 + + + + + + + + + 100 + + + + + + + + + 0.5 + + + + + + true + + + 0 + + + 1 + + + 1 + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magicring.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magicring.sbc new file mode 100644 index 000000000..fa2fd77f6 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/magicring.sbc @@ -0,0 +1,541 @@ + + + + + + 444 + 3 + 0 + false + true + 0.1 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + 0.52 + 0.92 + 0.1 + 0.5882353 + + + + + + + + + + + + + + + + + 10 + + + + + 10 + + + + + 10 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + 1 + + + + + + + 0.02 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0.2 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.2 + + + 1 + + + 1 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 0.15 + + + false + + + false + + + true + + + false + + + 1 + + + 0.3 + + + + 0 + 0 + 0 + + + + 0.5 + + + 0.737 + + + true + + + 1 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 5 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + + + + + + + + + + + 1 + 1 + 1 + + + + + + + + + + + 1 + 1 + 2 + 1 + + + + + + + + + + + + + 20 + + + + + + + + + 1 + + + + + + + + + 100 + + + + + + + + + 0.5 + + + + + + true + + + 0 + + + 1 + + + 1 + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/mysticsquare.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/mysticsquare.sbc new file mode 100644 index 000000000..55d3664a2 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/mysticsquare.sbc @@ -0,0 +1,450 @@ + + + + + + 189791659 + 0.1 + 0 + false + true + 1 + 1 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 20 + 1 + 10 + 1 + + + + + + + 20 + 1 + 10 + 1 + + + + + + + 20 + 1 + 10 + 1 + + + + + + + 20 + 1 + 10 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 1 + + + + + 10 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.033 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.079 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/portalparticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/portalparticle.sbc new file mode 100644 index 000000000..f0a6322b6 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/portalparticle.sbc @@ -0,0 +1,872 @@ + + + + + + -1861197498 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 16 + 16 + 0 + + + + 137 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + -1 + -1 + -1 + 99 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 1 + + + + + 5 + + + + + 5 + + + + + + + + + 2 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 1 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 137 + + + 1 + + + + + + + + + + + 10 + 1 + 10 + 1 + + + + + + + 10 + 1 + 10 + 1 + + + + + + + 10 + 1 + 10 + 1 + + + + + + + 10 + 1 + 10 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 6 + + + + + 6 + + + + + 0 + + + + + + + + + 3 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 1 + + + + + + Atlas_D_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ringedplanetparticle.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ringedplanetparticle.sbc new file mode 100644 index 000000000..2bb33fa34 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/ringedplanetparticle.sbc @@ -0,0 +1,1305 @@ + + + + + + -1233968703 + 90 + 0 + false + true + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 7 + + + 1 + + + + + + + + + + + 10 + 30 + 20 + 1 + + + + + + + 10 + 30 + 20 + 1 + + + + + + + 10 + 30 + 20 + 1 + + + + + + + 10 + 30 + 20 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 5 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.094 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0 + 1 + 1 + 0 + + + + + + + 0 + 1 + 1 + 0.5 + + + + + + + 0 + 1 + 1 + 0.5 + + + + + + + 0 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 4 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0.089 + + + false + + + 1 + + + 1 + + + false + + + 1 + + + + 90 + 0 + 0 + + + + + 180 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + -1 + -1 + -1 + 0 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 1 + + + + + + + -1 + -1 + -1 + 0 + + + + + + + + + + + + + + + + + 4 + + + + + 4 + + + + + 4 + + + + + 4 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 2 + + + + + 2 + + + + + 2 + + + + + 2 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 2 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 10000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/rotatingslab.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/rotatingslab.sbc new file mode 100644 index 000000000..65f11daed --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/rotatingslab.sbc @@ -0,0 +1,455 @@ + + + + + + -1254576254 + 90 + 0 + false + false + 0 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 160 + + + 16 + + + + + + + + + + + 9 + 1 + 9 + 1 + + + + + + + 9 + 1 + 9 + 1 + + + + + + + 9 + 1 + 9 + 1 + + + + + + + 9 + 1 + 9 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 5 + + + + + 5 + + + + + 5 + + + + + 5 + + + + + + + + + 1 + + + 1 + + + 4 + + + 0.033 + + + true + + + + + + 1 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + false + + + 1 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 6000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/sunstagechange.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/sunstagechange.sbc new file mode 100644 index 000000000..156285b70 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Particles/sunstagechange.sbc @@ -0,0 +1,455 @@ + + + + + + 1030857634 + 90 + 0 + false + true + 0 + 0 + 0 + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + 1 + 1 + 1 + 1 + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + 0.5 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0.1 + + + + + 0.1 + + + + + 0.1 + + + + + 0.1 + + + + + + + + + 1 + + + 1 + + + 4 + + + 1 + + + true + + + + + + 0 + + + + + + Atlas_E_01 + + + 1 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + 0 + + + + 0 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 5 + + + false + + + false + + + 1 + + + 0 + + + 1 + + + 0 + + + 0 + + + true + + + 0 + + + + + + 3000 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/REE_Decals_OnHit.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/REE_Decals_OnHit.sbc index 6fd30af4a..c9f124014 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/REE_Decals_OnHit.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/REE_Decals_OnHit.sbc @@ -1,85 +1,85 @@ - - - - - - - - - - - - - DecalDefinition - REE_Laser_Damage1 - - REE_Laser_Decal - Metal - - Textures/Decals/MissileDirt_01_ng.dds - Textures/Decals/MissileDirt_01_cm.dds - Textures/Decals/MissileDirt_01_alphamask.dds - Textures/Decals/MissileDirt_01_add.dds - - 1.0 - 3 - 20 - 1000 - - - - - DecalDefinition - REE_Bullet_Damage1 - - REE_Bullet_Decal - Metal - - Textures/Decals/Bullet_Metal_Hit_01_ng.dds - Textures/Decals/Bullet_Metal_Hit_01_cm.dds - Textures/Decals/Bullet_Metal_Hit_01_alphamask.dds - Textures/Decals/Bullet_Metal_Hit_01_add.dds - - 1.0 - 1 - 20 - 1000 - - - - - DecalDefinition - REE_Explosive_Decal1 - - REE_Explosive_Decal - Metal - - Textures/Decals/MissileDirt_01_ng.dds - Textures/Decals/MissileDirt_01_cm.dds - Textures/Decals/MissileDirt_01_alphamask.dds - Textures/Decals/MissileDirt_01_add.dds - - 10 - 10 - 7.5 - 1000 - - - - - + + + + + + + + + + + + + DecalDefinition + REE_Laser_Damage1 + + REE_Laser_Decal + Metal + + Textures/Decals/MissileDirt_01_ng.dds + Textures/Decals/MissileDirt_01_cm.dds + Textures/Decals/MissileDirt_01_alphamask.dds + Textures/Decals/MissileDirt_01_add.dds + + 1.0 + 3 + 20 + 1000 + + + + + DecalDefinition + REE_Bullet_Damage1 + + REE_Bullet_Decal + Metal + + Textures/Decals/Bullet_Metal_Hit_01_ng.dds + Textures/Decals/Bullet_Metal_Hit_01_cm.dds + Textures/Decals/Bullet_Metal_Hit_01_alphamask.dds + Textures/Decals/Bullet_Metal_Hit_01_add.dds + + 1.0 + 1 + 20 + 1000 + + + + + DecalDefinition + REE_Explosive_Decal1 + + REE_Explosive_Decal + Metal + + Textures/Decals/MissileDirt_01_ng.dds + Textures/Decals/MissileDirt_01_cm.dds + Textures/Decals/MissileDirt_01_alphamask.dds + Textures/Decals/MissileDirt_01_add.dds + + 10 + 10 + 7.5 + 1000 + + + + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_AmmoMagazines.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_AmmoMagazines.sbc index 5cb57f195..85bcf5d44 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_AmmoMagazines.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_AmmoMagazines.sbc @@ -1,75 +1,346 @@ - - - - - - - - AmmoMagazine - MACmag - - MACammo - Textures\Icons\srm8l.dds - pewpewpew - - 0.25 - 0.2 - 0.2 - - 103.5 - 138 - Models\Ammo\Starcore_LRM_Missile_Large.mwm - Ammo - 1 - - - - - - - - - - AmmoMagazine - ARCSTRIKEMAG - - NOOOKS - Textures\Icons\arrowiv.dds - I'M HERE TO EAT ASS AND KICK BUBBLEGUM. - - 0.1 - 0.1 - 0.1 - - 30 - 1 - Models\Ammo\Starcore_Arrow_Missile_Large.mwm - Ammo - 4 - - - - - - AmmoMagazine - SM3MAG - - NOOOKS - Textures\Icons\arrowiv.dds - I'M HERE TO EAT ASS AND KICK BUBBLEGUM. - - 0.1 - 0.1 - 0.1 - - 30 - 1 - Models\Ammo\Starcore_Arrow_Missile_Large.mwm - Ammo - 8 - - - - - + + + + + + + + AmmoMagazine + ImpulseTorch_Magazine + + ImpulseTorch Fuel Cartridge + Textures\GUI\Icons\ImpulseTorch_Magazine.dds + + 0.25 + 0.2 + 0.2 + + 1000 + 10 + Models\Ammos\ImpulseTorch_Magazine.mwm + 15 + + + + + + AmmoMagazine + FlakShotgun_Magazine + + Shotgun Shell + Textures\GUI\Icons\ImpulseTorch_Magazine.dds + + 0.25 + 0.2 + 0.2 + + 1000 + 10 + Models\Ammos\LBX5_AmmoShellShotgun.mwm + 1 + + + + + + + + + + + + + AmmoMagazine + DragonyosBomber + + Dragonyos Torpedo Bomber + Textures\GUI\Icons\Manticore.dds + + 1 + 2 + 0.5 + + 300 + 500 + Models\Drones\Manticore.mwm + Ammo + 1 + + + 6 + 12 + 3 + 24 + true + + + + + + AmmoMagazine + HarcosFighter + + Harcos Laser Fighter + Textures\GUI\Icons\Fighter_drone.dds + + 1 + 2 + 0.5 + + 300 + 500 + Models\Drones\Fighter_drone.mwm + Ammo + 1 + + + 6 + 12 + 3 + 24 + true + + + + + + AmmoMagazine + TesterLauncherStage + + Tester Sentry + Textures\GUI\Icons\Artillery_drone.dds + + 1 + 2 + 0.5 + + 350 + 500 + Models\Drones\Artillery_drone.mwm + Ammo + 1 + + + 1 + 12 + 1 + 12 + true + + + + + AmmoMagazine + FegyverLauncherStage + + Fegyver Light Sentry + Textures\GUI\Icons\Artillery_drone.dds + + 1 + 2 + 0.5 + + 350 + 500 + Models\Drones\Artillery_drone.mwm + Ammo + 1 + + + 1 + 1 + 1 + 1 + true + + + + + + AmmoMagazine + AgyuLauncherStage + + Agyu Heavy Sentry + Textures\GUI\Icons\Artillery_drone.dds + + 1 + 2 + 0.5 + + 290 + 500 + Models\Drones\Artillery_drone.mwm + Ammo + 1 + + + 1 + 1 + 1 + 1 + true + + + + + + AmmoMagazine + OrszemLauncherStage + + Orszem Sentinel + Textures\GUI\Icons\Artillery_drone.dds + + 1 + 2 + 0.5 + + 290 + 500 + Models\Drones\Artillery_drone.mwm + Ammo + 1 + + + 1 + 1 + 1 + 1 + true + + + + + + + + + + + + + + + + + + + + + AmmoMagazine + MACmag + + MACammo + Textures\Icons\srm8l.dds + pewpewpew + + 0.25 + 0.2 + 0.2 + + 103.5 + 138 + Models\Ammo\Starcore_LRM_Missile_Large.mwm + Ammo + 1 + + + + + + + + AmmoMagazine + SubterraneanSun + + no one reads this + + pain + + 0.1 + 0.1 + 0.1 + + 150 + 1 + + Ammo + 1 + + + + + + + + + + + AmmoMagazine + ScathisProj1 + + Scathis Electric Bullet + + pain + + 0.1 + 0.1 + 0.1 + + 150 + 1 + + Ammo + 32 + + + + + + + + + + + AmmoMagazine + ARCSTRIKEMAG + + ArcStrike Long Range Anti-Shield Missile + Textures\Icons\arrowiv.dds + I'M HERE TO EAT ASS AND KICK BUBBLEGUM. + + 0.1 + 0.1 + 0.1 + + 30 + 1 + Models\Ammo\Starcore_Arrow_Missile_Large.mwm + Ammo + 4 + + + + + + AmmoMagazine + SM3MAG + + SM-3 Counter Missile + Textures\Icons\arrowiv.dds + I'M HERE TO EAT ASS AND KICK BUBBLEGUM. + + 0.1 + 0.1 + 0.1 + + 30 + 1 + Models\Ammo\Starcore_Arrow_Missile_Large.mwm + Ammo + 8 + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_Ammos.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_Ammos.sbc index 1db1b75eb..aaf217c43 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_Ammos.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_Ammos.sbc @@ -1,56 +1,56 @@ - - - - - - - - - AmmoDefinition - K_HSR_Fake - - - 300 - 0 - 2 - 3.2 - RifleBullet - - - 0.05 - 1 - 30 - 24 - true - 60 - - - - - - - - AmmoDefinition - K_HSR_FakeMissile - - - 200 - 0 - 0 - true - 700 - Missile - - - 45 - 1 - Models\Weapons\Projectile_Missile.mwm - 600 - 100 - false - 0 - - - - + + + + + + + + + AmmoDefinition + K_HSR_Fake + + + 300 + 0 + 2 + 3.2 + RifleBullet + + + 0.05 + 1 + 30 + 24 + true + 60 + + + + + + + + AmmoDefinition + K_HSR_FakeMissile + + + 200 + 0 + 0 + true + 700 + Missile + + + 45 + 1 + Models\Weapons\Projectile_Missile.mwm + 600 + 100 + false + 0 + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc index dc9ae5a54..3609b1187 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SOL_CubeBlocks.sbc @@ -47,15 +47,17 @@ ConveyorSorter Flechette_DoubleBarrel - [SOL] Flechette Shotgun + [SOL] Gewehr Flechette Shotgun - Two shotguns duct taped together, with two ammo's. - Buckshot: - [Range: 2km technically] + Dual shotgun with two flechette ammos. + [Range: 3.5km] [Damage: Kinetic] [Reload Time: 4 seconds] + Proximity Scattershot: + [MinRange: 1km] + [ProxRange: 0.5km] Smart Flak: - [Homing and AMS] + [Homing] Textures\GUI\Icons\FlakShotgun.dds Large @@ -162,7 +164,7 @@ - SolHyp_ArcStrike_Torp + ArcStrike_Torp_Launcher Z Y Light @@ -398,7 +400,7 @@ - + @@ -407,19 +409,13 @@ [SOL] Nariman NanoDart Turret - Dual Ammo, Dual Purpose Turret - Smart NanoDart: + Guided Turret [Range: 5km] [Velocity: 2.5km/s] [Damage: Energy] [Homing and AMS] - Concussion Bolt: - [Range: 3.5km] - [Velocity: 600m/s] - [Damage: Energy] - [Homing and AOE] - Textures\GUI\Icons\Ceis.dds + Textures\GUI\Icons\SA_GaussAP_Large.dds Large false TriangleMesh @@ -440,7 +436,7 @@ - + @@ -484,6 +480,170 @@ + + + + + ConveyorSorter + Meson5_Turret + + [SOL] Auger Series 5 Meson Gun + + Internal Turret + Heavy Meson Gun: + [Range: 5km] + [Velocity: 5km/s] + [Damage: Kinetic] + + Textures\Icons\SA_Auger_S5.dds + Large + false + TriangleMesh + + + Models\SA_Auger_S5.mwm + true + + + + + + + + + + + + + + + + + + + + + + + + + + OutsideVoxel + 0.2 + 0 + + + OutsideVoxel + 0.2 + 0.01 + + + Meson5_Turret + Z + Y + Light + 240 + 1 + 213 + false + ParticleWeapExpl + Defense + -5 + 100 + -180 + 180 + 0.0001 + 0.0001 + false + 3500 + 0.0001 + 2 + Default + + + + + + ConveyorSorter + Meson3_Turret + + [SOL] Auger Series 3 Meson Gun + + Internal Turret + Medium Meson Gun: + [Range: 3km] + [Velocity: 5km/s] + [Damage: Kinetic] + + Textures\Icons\SA_Auger_S3.dds + Large + false + TriangleMesh + + + Models\SA_Auger_S3.mwm + true + + + + + + + + + + + + + + + + + + + + + + + + + + OutsideVoxel + 0.2 + 0 + + + OutsideVoxel + 0.2 + 0.01 + + + Meson3_Turret + Z + Y + Light + 120 + 1 + 213 + false + ParticleWeapExpl + Defense + -5 + 100 + -180 + 180 + 0.0001 + 0.0001 + false + 3500 + 0.0001 + 2 + Default + + + + + @@ -561,6 +721,255 @@ + + + + ConveyorSorter + PSP + + [SOL] Point Singularity Projector + + ☢ CAUTION!! ☢ + Fires a singularity that + travels for [3km]. + At the end, an artificial + sun is spawned, with a + [2km pull EWAR field], + lasting 1 minute. + + Anything pulled to the center + will experience + Ultimate Nuclear Fusion™ + 2 minute reload. + + Textures\GUI\HexCannon.png + Large + TriangleMesh + + +
+ Models\Cubes\Large\HexCannon.mwm + + + + + + + + + + + + + + + + + + + + + + 1 + PSP + Z + Y + 600 + Heavy + + 0.960 + Defense + 213 + 0.2 + 1800 + + + + + + + ConveyorSorter + ScathisM77 + + [SOL] Scathis M-77 + + Burst AMS Turret + [Range: 5.5km] + [Velocity: 1km/s] + [Damage: Kinetic] + Adjustable RoF + 8 second reload + + Textures\GUI\Icons\Cubes\Metal_Storm.dds + Large + TriangleMesh + + + Models\Cubes\Large\Metal_Storm.mwm + + + + + + + + + + + + + + + + + + + + + + OutsideVoxel + 0.2 + 0 + + + OutsideVoxel + 0.2 + 0.01 + + + ScathisM77 + Z + Y + Light + 22 + Textures\GUI\Screens\AWP_TurretOverlay_Universal.dds + + 1.056 + Damage_WeapExpl_Damaged + ParticleWeapExpl + Defense + -9 + 85 + -180 + 180 + false + 800 + 0.002 + 0.003 + Default + 0.1 + 1.0 + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 280 + false + 1 + + + + + + + + + + + + + + ConveyorSorter + Dreadnaught_Beacon + + [SOL] Beacon Dreadnaught + Reinforcement Beacon that calls in a Dreadnaught Heavy Cruiser with Two Z-95 Starfighter Escorts + Textures\Logo_Imperial.dds + Large + TriangleMesh + + + Models\Large_Reinforcement_Beacon.mwm + + + + + + + + + + + + + + + + + Dreadnaught_Beacon_Block + Z + Y + Light + Extended + 30 + + 0.384 + 2 + 6 + Default + 225 + + + + + ConveyorSorter + Nebulon_Beacon + + [SOL] Beacon Nebulon-B + Reinforcement Beacon that calls in a Nebulon-B Frigate with Two Y-Wing Bomber Escorts + Textures\Logo_Rebel.dds + Large + TriangleMesh + + + Models\Large_Reinforcement_Beacon.mwm + + + + + + + + + + + + + + + + + Nebulon_Beacon_Block + Z + Y + Light + Extended + 30 + + 0.384 + 2 + 6 + Default + 225 + + + + + + + + + + + @@ -575,7 +984,20 @@ [SOL] Sentry Hangar Bay Textures\GUI\Icons\Hangar.dds - These drones can be given orders via the hangar's ActionFriend/ActionEnemy options. + + 2 Minute Sentry Reload + 1 km Deployment Distance + + [Fegyver Medium Sentry] + 6km Railgun + 20 Shots + [Agyu Heavy Sentry] + 8km Coilgun + 4 Shots + [Orszem Sentinel] + 1.5km EMP Laser + + These drones can be given orders via the hangar's ActionFriend/ActionEnemy options. Large TriangleMesh @@ -627,7 +1049,8 @@ [SOL] Strikecraft Hangar Bay Textures\GUI\Icons\Hangar.dds - These drones can be given orders via the hangar's ActionFriend/ActionEnemy options. + + These drones can be given orders via the hangar's ActionFriend/ActionEnemy options. Large TriangleMesh @@ -683,6 +1106,79 @@ + + + + + + ConveyorSorter + WCTest_Hangar + + [SOL] Test Hangar Bay + Textures\GUI\Icons\Hangar.dds + These drones can be given orders via the hangar's ActionFriend/ActionEnemy options. + Large + TriangleMesh + + + Models\Hangar.mwm + + + + + + + + + + + + + + + + + + + + + TestHangar + Z + Z + Y + Light + 30 + Default + Defense + 1 + Damage_WeapExpl_Damaged + ParticleWeapExpl + BlockDestroyedExplosion_Large + WepSmallWarheadExpl + 500 + + Weapons + + + + + + + + + + + + + + + + + + + + + ConveyorSorter diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher.cs index b80f4d47f..c7d9966b9 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher.cs @@ -17,7 +17,7 @@ partial class Parts { { MountPoints = new[] { new MountPointDef { - SubtypeId = "SolHyp_ArcStrike_Torp", + SubtypeId = "ArcStrike_Torp_Launcher", SpinPartId = "", // For weapons with a spinning barrel such as Gatling Guns. MuzzlePartId = "None", // The subpart where your muzzle empties are located. AzimuthPartId = "None", diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher_Ammo.cs index fb6deaf94..9dc821587 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher_Ammo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ArcStrike_Launcher_Ammo.cs @@ -313,11 +313,11 @@ partial class Parts { Ammo = new ParticleDef { - Name = "", //ShipWelderArc + Name = "ARROWTRAIL", //ShipWelderArc Offset = Vector(x: 0, y: 0, z: -0.21f), Extras = new ParticleOptionDef { - Scale = 1f, + Scale = 0.3f, }, }, Hit = new ParticleDef @@ -699,7 +699,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -715,7 +715,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -737,7 +737,7 @@ partial class Parts Enable = true, Length = 8f, Width = 2f, - Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + Color = Color(red: 40f, green: 15, blue: 15f, alpha: 1), VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. @@ -769,7 +769,7 @@ partial class Parts }, TextureMode = Normal, DecayTime = 90, - Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Color = Color(red: 40f, green: 10f, blue: 10f, alpha: 1), Back = false, CustomWidth = 0.2f, UseWidthVariance = false, @@ -1081,7 +1081,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -1097,7 +1097,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -1118,7 +1118,7 @@ partial class Parts Enable = true, Length = 8f, Width = 1f, - Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Color = Color(red: 40f, green: 10f, blue: 10f, alpha: 1), VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. @@ -1194,7 +1194,7 @@ partial class Parts AmmoRound = "ArcStrike Torp Frag", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.01f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 12500f, // Direct damage; one steel plate is worth 100. + BaseDamage = 45000f, // Direct damage; one steel plate is worth 100. Mass = 0f, // In kilograms; how much force the impact will apply to the target. Health = 360, // 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. @@ -1459,7 +1459,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -1474,7 +1474,7 @@ partial class Parts { Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 3, green: 0.5f, blue: 0.5f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3.cs new file mode 100644 index 000000000..35ac5da2f --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3.cs @@ -0,0 +1,193 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Auger3_Internal_Turret => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Meson3_Turret", + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. + MuzzlePartId = "Meson3_Elevation", // The subpart where your muzzle empties are located. + AzimuthPartId = "Meson3_Azimuth", + ElevationPartId = "Meson3_Elevation", + DurabilityMod = 0.5f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + }, + Muzzles = new[] { + "Muzzle_Meson3", + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Power, Thrust, Offense, Utility, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = true, // Don't fire at non-smart projectiles. + 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 = 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 = 8, // Maximum number of targets to randomize between; 0 = unlimited. + TopBlocks = 16, // Maximum number of blocks to randomize between; 0 = unlimited. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "AugerS3", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0.25f, // Projectile inaccuracy in degrees. + AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Advanced, // 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. + + Ui = new UiDef + { + RateOfFire = true, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. + TurretController = true, // Whether this weapon can physically control the turret's movement. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0.01f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.01f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, + MaxAzimuth = 180, + MinElevation = -180, + MaxElevation = 180, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 0.639f, // Inventory capacity in kL. + IdlePower = 100f, // Constant base power draw in MW. + FixedOffset = false, // Deprecated. + Offset = Vector(x: 0, y: 0, z: 4), // Offsets the aiming/firing line of the weapon, in metres. + Type = BlockWeapon, // What type of weapon this is; BlockWeapon, HandWeapon, Phantom + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + DisableLosCheck = true, // Do not perform LOS checks at all... not advised for self tracking weapons + NoVoxelLosCheck = true, // If set to true this ignores voxels for LOS checking.. which means weapons will fire at targets behind voxels. However, this can save cpu in some situations, use with caution. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 1200, // Set this to 3600 for beam weapons. + 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 = 180, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 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 = 80, // Heat generated per shot. + MaxHeat = 2000, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .5f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 200, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 12, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "Auger3Fire", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "Auger3Reload", + NoAmmoSound = "", + HardPointRotationSound = "AugerGears", // Audio played when turret is moving. + BarrelRotationSound = "", + FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "FieldShield", // SubtypeId of muzzle particle effect. + Color = Color(red: 0.1f, green: 0.2f, blue: 0, alpha: 0.1f), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 3000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 6, // Deprecated. + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0.1f, green: 0.1f, blue: 0.1f, alpha: 0.1f), + Offset = Vector(x: 0, y: 0, z: 0), + + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 150, + MaxDuration = 6, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + Meson_Medium_Round, //Nariman_EWAR_Round, Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Nariman_Dart_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3_Ammo.cs new file mode 100644 index 000000000..0ac6357f5 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S3_Ammo.cs @@ -0,0 +1,425 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Meson_Medium_Round => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Medium Meson Pulse", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.34283f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 3500f, // Direct damage; one steel plate is worth 100. + Mass = 40f, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 12, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Inactive, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = 1.05f, // Multiplier for damage against light armor. + Heavy = 1.25f, // Multiplier for damage against heavy armor. + NonArmor = 0.75f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 2.4f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 3f, // Meters + Damage = 5f, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Meters + Damage = 4500f, + Depth = 1f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 0.25f, + CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC + CustomSound = "MissileHitRandom", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Anchor, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 1000f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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 = true, // Show Block damage effect. + 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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 900, // 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 = 5000, // voxel phasing if you go above 5100 + MaxTrajectory = 3000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 30, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0.5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2f, // controls how responsive tracking is. + MaxLateralThrust = 0.15, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // 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 = 0.05f, // The ratio to offset the random direction (0 to 1) + OffsetTime = 60, // 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 + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "NecronEnergyProjectile", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 0.15f, + }, + }, + Hit = new ParticleDef + { + Name = "ARROWNUKE", + ApplyToShield = true, + + Color = Color(red: 3, green: 1f, blue: 1.9f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 10, + Scale = 0.4f, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.25f, end: 3f), // multiply the color by random values within range. + WidthVariance = Random(start: 0.25f, end: 1f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 2f, // + Width = 0.15f, // + Color = Color(red: 40f, green: 40f, blue: 25f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1f, green: 2f, blue: 2.5f, alpha: 1f), + WidthMultiplier = 0.25f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 4f, green: 4f, blue: 2.5f, alpha: 1), + Back = false, + CustomWidth = 0.25f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 2,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "DRONEFLYBY", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "PPCImpact", + + ShieldHitSound = "AugerHitA", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5.cs new file mode 100644 index 000000000..028ed478f --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5.cs @@ -0,0 +1,196 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Auger5_Internal_Turret => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Meson5_Turret", + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. + MuzzlePartId = "Meson5_Elevation", // The subpart where your muzzle empties are located. + AzimuthPartId = "Meson5_Azimuth", + ElevationPartId = "Meson5_Elevation", + DurabilityMod = 0.5f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + }, + Muzzles = new[] { + "Muzzle_Meson5", + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "Scope_Meson5", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Projectiles, Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Power, Thrust, Offense, Utility, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = true, // Don't fire at non-smart projectiles. + 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 = 5000, // 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 = 8, // Maximum number of targets to randomize between; 0 = unlimited. + TopBlocks = 16, // Maximum number of blocks to randomize between; 0 = unlimited. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "AugerS5", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0.25f, // Projectile inaccuracy in degrees. + AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Advanced, // 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. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. + TurretController = true, // Whether this weapon can physically control the turret's movement. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0.005f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.005f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, + MaxAzimuth = 180, + MinElevation = -180, + MaxElevation = 180, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 0.639f, // Inventory capacity in kL. + IdlePower = 200f, // Constant base power draw in MW. + FixedOffset = false, // Deprecated. + Offset = Vector(x: 0, y: 0, z: 4), // Offsets the aiming/firing line of the weapon, in metres. + Type = BlockWeapon, // What type of weapon this is; BlockWeapon, HandWeapon, Phantom + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + DisableLosCheck = true, // Do not perform LOS checks at all... not advised for self tracking weapons + NoVoxelLosCheck = true, // If set to true this ignores voxels for LOS checking.. which means weapons will fire at targets behind voxels. However, this can save cpu in some situations, use with caution. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 1800, // Set this to 3600 for beam weapons. + 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 = 420, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 12, // 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 = 10, // Heat generated per shot. + MaxHeat = 2000, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .5f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 200, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 12, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "Auger5Fire", // Audio for warmup effect. + FiringSound = "AugerHitA", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "Auger5Reload", + NoAmmoSound = "", + HardPointRotationSound = "AugerGears", // Audio played when turret is moving. + BarrelRotationSound = "", + FireSoundEndDelay = 10, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "FieldShield", // SubtypeId of muzzle particle effect. + Color = Color(red: 0.1f, green: 0.2f, blue: 0, alpha: 0.1f), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 5000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 6, // Deprecated. + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "SolHyp_MAC_Muzzleflash", // SubtypeId of muzzle particle effect. + Color = Color(red: 15, green: 2, blue: 1, alpha: 0.8f), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0.22, z: -1.5), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = false, // Deprecated, set this in particle sbc. + Restart = true, // Whether to end the previous effect early and spawn a new one. + MaxDistance = 5000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running. + Scale = 1f, // Scale of effect. + }, + }, + }, + }, + Ammos = new[] { + Meson_Heavy_Round, + + //Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Nariman_Dart_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5_Ammo.cs new file mode 100644 index 000000000..c5484ad75 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Auger_S5_Ammo.cs @@ -0,0 +1,433 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Meson_Heavy_Round => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Heavy Meson Bolter", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.12631f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 9500f, // Direct damage; one steel plate is worth 100. + Mass = 40f, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 18, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 10, // Number of projectiles to spawn. + Degrees = 4, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = 0.25f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = 0.95f, // Multiplier for damage against light armor. + Heavy = 0.85f, // Multiplier for damage against heavy armor. + NonArmor = 1.45f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 4f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 1300f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 900, // 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 = 5000, // voxel phasing if you go above 5100 + MaxTrajectory = 5000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 30, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0.5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2f, // controls how responsive tracking is. + MaxLateralThrust = 0.15, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // 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 = 0.05f, // The ratio to offset the random direction (0 to 1) + OffsetTime = 60, // 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 + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "NecronEnergyProjectile", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 0.25f, + }, + }, + Hit = new ParticleDef + { + Name = "",//ARROWFLAREDEATH ARROWNUKE + ApplyToShield = true, + + Color = Color(red: 3, green: 1f, blue: 1.9f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 10, + Scale = 0.65f, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.25f, end: 5f), // multiply the color by random values within range. + WidthVariance = Random(start: 0.15f, end: 1f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 2f, // + Width = 0.15f, // + Color = Color(red: 4f, green: 4f, blue: 2.5f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1f, green: 2f, blue: 2.5f, alpha: 1f), + WidthMultiplier = 0.15f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 5, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 4f, green: 4f, blue: 2.5f, alpha: 1), + Back = false, + CustomWidth = 0.25f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 2,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "Auger5Fire", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "AugerHitA", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Ammo.cs new file mode 100644 index 000000000..e3cb1503c --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Ammo.cs @@ -0,0 +1,2623 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Launch_Dummy_Dreadnaught => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Launch_Dummy_Dreadnaught", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Dreadnaught_Launch", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = -15f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = true, + NoSound = true, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 300, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 1, // voxel phasing if you go above 5100 + MaxTrajectory = 1000000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 0.001f, // + Width = 0.001f, // + Color = Color(red: 1, green: 1, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Dreadnaught => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Dreadnaught_Launch", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 10000, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = true, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = true, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Light_Turbolaser_Dreadnaught", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 8, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1440, // Max number of fragment children to spawn + Proximity = 2500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 2, // Number of spawns in each group + GroupDelay = 420, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "Light_Turbolaser_Dreadnaught", + "Light_Turbolaser_Dreadnaught", + + "Light_Turbolaser_2_Dreadnaught", + "Light_Turbolaser_2_Dreadnaught", + + "Light_Turbolaser_Dreadnaught", + "Light_Turbolaser_Dreadnaught", + + "Light_Turbolaser_2_Dreadnaught", + "Light_Turbolaser_2_Dreadnaught", + + "Light_Turboion_Dreadnaught", + "Light_Turboion_Dreadnaught", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = true, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = 1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 5f, // Radius of AOE effect, in meters. + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Dreadnaught_Death", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + Trajectory = new TrajectoryDef + { + Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 54000, // 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 = 12.5f, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 65, // voxel phasing if you go above 5100 + MaxTrajectory = 1000000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 1234.5, // 0 means no limit, something to do due with a thing called delta and something called v. + Smarts = new SmartsDef + { + SteeringLimit = 30f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 1f, // controls how responsive tracking is, recommended value 3-5. + MaxLateralThrust = 0, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = -1f, // helps influence how the projectile steers, 0 defaults to 1/2 Aggressiveness value or 0 if its 0, a value less than 0 disables this feature. + TrackingDelay = 30, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 18000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = true, // Utilize obstacle avoidance for drones/smarts + FutureIntersectionRange = 250, // Range in front of the projectile at which it will detect obstacle. If set to zero it defaults to DesiredSpeed + Shape Diameter + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = false, // only target the constructs Ai's focus target + FocusEviction = false, // If FocusOnly and this to true will force smarts to lose target when there is no focus target + ScanRange = 0, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + NoSteering = false, // this disables target follow and instead travel straight ahead (but will respect offsets). + MinTurnSpeed = 50, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = false, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + Approaches = new[] // These approaches move forward and backward in order, once the end condition of the last one is reached it will revert to default behavior. Cost level of 4+, or 5+ if used with steering. + { + /** What are approaches? How do they interact with other config variables? What problems do they solve? + * + * At the most basic level an "approach" is a collection of variables that allow you, the mod author, to tell the projectile how to "approach" + * a desired "destination" (aka position) when certain conditions are met and what to then do once it has arrived. I say "destination/position" and not "target" on + * purpose, while the desired destination may be the "target" it often is not. Keep in mind that approaches merely "influence" the projectiles path to + * a desired position, they do not absolutely determine it. Instead you are telling the projectile where you want it to go and through which + * trajectory it should travel to get there, but ultimately you are setting the desired flight path, you are not the pilot. + * + * Approaches are an extension of Smarts and these variables are applied ontop of, not in place of, all other config variables. This means anything + * you set in other parts of the config will still influence approaches and sometimes in unexpected ways (i.e. trackingDelay or not finding a target + * can delay when an approaches begins). In a few cases approaches have variables that override/alter/extend how non-approach variables behave. + * + * Approaches will not alter the path of a projectile until its start condition is met(and optionally maintained). Prior to "starting" the + * projectile will behave as it would have had there was no approach defined.This is also the case once all approaches have completed. + * + * Approaches require you to think about projectile navigation in an abstract manner.This is a good time to restate that you are merely "influencing" the + * projectile, you are not controlling/piloting it.The battlefield is dynamic, always changing, you are setting objectives and providing rules to follow + * if certain conditions are met, nothing more. You must also remember that although you are setting variables like positionB, positionC, elevation, lead + * upDirection, forwardDirection etc... these variables merely "influence" the projectiles heading relative to its current position and velocity, they do not + * represent its actual source nor destination positions, directions nor elevation. + * + * Said another way, imagine your projectile half way between its launcher and the "target" and it is at this time that your approach "starts". If you were + * to then draw this scene out visually, you would draw three spheres representing positions which we will call "projectile current position (aka positionA)", "positionB" + * and "positionC", where you only get to define the latter two.You then define two directions, a forward direction and an up direction.You can + * also optionally set a desired "elevation" relative to the up direction and a desired "lead" relative to the forward direction, applied to the positionB and/or + * positionC. Now draw a 1 and 2 that represents the modified positionB and positionC positions (taking into account elevation, lead, and rotations). Your + * projectiles heading will by default attempt to steer to modified C position(2), or alternatively to modified B(1) if you set TrajectoryRelativeToB to true. */ + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = DistanceFromTarget, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 2000, + Start2Value = 0, + End1Value = 9998, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.85f, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1000, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 9998, + Start2Value = 0, + End1Value = 7000, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 1, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1250, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "Dreadnaught_Stage_01", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 7000, + Start2Value = 0, + End1Value = 4000, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.75, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1150, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "Dreadnaught_Engine_Damage_01", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "Dreadnaught_Stage_02", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 4000, + Start2Value = 0, + End1Value = 100, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = EndProjectile, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.5, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1500, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "Dreadnaught_Engine_Damage_02", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "Dreadnaught_Stage_03", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + }, + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + OnHit = new OnHitDef { + } + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Cubes\\large\\Dreadnaught_Projectile.mwm", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Dreadnaught_Engine", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 0.01f, // + Width = 0.01f, // + Color = Color(red: 30, green: 2, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "Ship_Engine", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Hyperspace_Exit", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Light_Turbolaser_Dreadnaught => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Light_Turbolaser_Dreadnaught", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "MagicFragment", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 50000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turbolaser_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 900, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Green_Turbo_Light", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 18f, // + Width = 0.5f, // + Color = Color(red: 3, green: 30, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Light_Turbolaser_Shot", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Light_Turbolaser_2_Dreadnaught => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Light_Turbolaser_2_Dreadnaught", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "MagicFragment", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 20, y: 7, z: 6f), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 50000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turbolaser_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 900, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Green_Turbo_Light", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 18f, // + Width = 0.5f, // + Color = Color(red: 3, green: 30, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Light_Turbolaser_Shot", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Light_Turboion_Dreadnaught => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Light_Turboion_Dreadnaught", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "MagicFragment", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 50000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Ion_impact", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turboion_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = true, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Anchor, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 1000000f, + Radius = 5f, // Meters + Duration = 900, // In Ticks + StackDuration = false, // Combined Durations + Depletable = true, + MaxStacks = 1, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 900, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 18f, // + Width = 2f, // + Color = Color(red: 3, green: 26, blue: 30f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Light_Turboion_Shot", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Weapon.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Weapon.cs new file mode 100644 index 000000000..c9eadf841 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Dreadnaught_Weapon.cs @@ -0,0 +1,237 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.TargetingDef; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.Comms; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.SecurityMode; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Dreadnaught_Beacon => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Dreadnaught_Beacon", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "None", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle_Dreadnaught", // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals, ScanRoid, ScanPlanet, ScanFriendlyCharacter, ScanFriendlyGrid, ScanEnemyCharacter, ScanEnemyGrid, ScanNeutralCharacter, ScanNeutralGrid, ScanUnOwnedGrid, ScanOwnersGrid + }, + SubSystems = new[] { + Thrust, Offense, Utility, Power, Production, Jumping, Steering, 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. + 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 = 15000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MinTargetDistance = 100, // Minimum distance at which targets will be automatically shot at. + TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. + CycleTargets = 0, // Number of targets to "cycle" per acquire attempt. + TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited. + CycleBlocks = 0, // Number of blocks to "cycle" per acquire attempt. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + UniqueTargetPerWeapon = false, // only applies to multi-weapon blocks + MaxTrackingTime = 0, // After this time has been reached the weapon will stop tracking existing target and scan for a new one + ShootBlanks = false, // Do not generate projectiles when shooting + FocusOnly = false, // This weapon can only track focus targets. + EvictUniqueTargets = false, // if this is set it will evict any weapons set to UniqueTargetPerWeapon unless they to have this set + Communications = new CommunicationDef + { + StoreTargets = false, // Pushes its current target to the grid/construct so that other slaved weapons can fire on it. + StorageLimit = 0, // The limit at which this weapon will no longer export targets onto the channel. + MaxConnections = 0, // 0 is unlimited, this value determines the maximum number of weapons that can link up to another weapon. + StoreLimitPerBlock = false, // Setting this to true will switch the StorageLimit from being per Location to per block per Location. + StorageLocation = "", // This location ID is used either by the master weapon (if ExportTargets = true) or the slave weapon (if its false). This is shared across the conncted grids. + Mode = NoComms, // NoComms, BroadCast, LocalNetwork, Repeater, Relay, Jamming + TargetPersists = false, // Whether or not the weapon will retain its existing target even if the source of the target releases theirs. + Security = Private, // Public, Private, Secure + BroadCastChannel = "", // If defined you will broadcast to all other scanners on this channel. + BroadCastRange = 0, // This is the range that you will broadcast up too. Note that this value applies to both the sender and receiver, both range requirements must be met. + JammingStrength = 0, // If Mode is set to jamming, then this value will decrease the "range" of broadcasts. Strength falls off at sqr of the distance. + RelayChannel = "", // If defined this channel will be used to relay any targets it seems on the broadcast channel. + RelayRange = 0, // This defines the range that any broadcasts will be relayed. Note that this channel id is seen as the "broadcast" channel for all receivers, broadcast range requirements apply. + }, + }, + HardPoint = new HardPointDef + { + PartName = "Dreadnaught", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. + AimingTolerance = 180f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // 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 = true, // 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. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + ScanTrackOnly = false, // This weapon only scans and tracks entities, this disables un-needed functionality and customizes for this purpose. + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + RateOfFireMin = 0.0f, // Sets the minimum limit for the rate of fire slider, default is 0. Range is 0-1f. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + AlternateUi = false, // This simplifies and customizes the block controls for alternative weapon purposes, + DisableStatus = false, // Do not display weapon status NoTarget, Reloading, NoAmmo, etc.. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + DefaultLeadGroup = 0, // Default LeadGroup setting, range 0-5, 0 is disables lead group. Only useful for fixed weapons or weapons set to OverrideLeads. + TargetGridCenter = false, // Does not target blocks, instead it targets grid center. + }, + HardWare = new HardwareDef + { + RotateRate = 0.1f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.1f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, // Az/Ele figures are in degrees + MaxAzimuth = 180, + MinElevation = -9, + MaxElevation = 50, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 15, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + DisableLosCheck = true, // Do not perform LOS checks at all... not advised for self tracking weapons + NoVoxelLosCheck = true, // If set to true this ignores voxels for LOS checking.. which means weapons will fire at targets behind voxels. However, this can save cpu in some situations, use with caution. + Debug = false, // Force enables debug mode - will output damage stats to WC log. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 60, // Set this to 3600 for beam weapons. This is how fast your gun fires per minute. + 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 = 120, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // 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. + MaxHeat = 70000, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 9000000, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 0, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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, // 0 disables and uses RateOfFire. If slower than ROF, will increase time to spin up and start shooting. + DeterministicSpin = false, // Spin barrel position will always be relative to initial / starting positions (spin will not be as smooth). + SpinFree = true, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + GoHomeToReload = false, // Tells the weapon it must be in the home position before it can reload. + DropTargetUntilLoaded = false, // If true this weapon will drop the target when its out of ammo and until its reloaded. + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "Dreadnaught_Arrival", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 120, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "Muzzle_Flash_Large", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 800, + MaxDuration = 0, + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, + MaxDistance = 800, + MaxDuration = 0, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + Launch_Dummy_Dreadnaught, + Dreadnaught, + Light_Turbolaser_Dreadnaught, + Light_Turbolaser_2_Dreadnaught, + Light_Turboion_Dreadnaught,// Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Weapon75_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneFighterTypes.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneFighterTypes.cs index 58d6ed5d1..bff8b9c9e 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneFighterTypes.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneFighterTypes.cs @@ -71,14 +71,14 @@ partial class Parts TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = true, // Enables TimedSpawns mechanism - Interval = 60, // Time between spawning fragments, in ticks + Interval = 460, // Time between spawning fragments, in ticks StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life MaxSpawns = 10, // Max number of fragment children to spawn Proximity = 4000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance ParentDies = false, // Parent dies once after it spawns its last child. PointAtTarget = false, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 2, // Number of spawns in each group + GroupSize = 1, // Number of spawns in each group GroupDelay = 60, // Delay between each group. DirectAimCone = 45, //Angle cone in which the drone will open fire. }, diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTester.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTester.cs new file mode 100644 index 000000000..29f388fb4 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTester.cs @@ -0,0 +1,878 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + + + + + + + + + + + + + private AmmoDef TesterSentry => new AmmoDef + { + + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Tester Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 1000, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Medium_Artillery_Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1f, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 360, // Time between spawning fragments, in ticks + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 20, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + "Medium_Artillery_Slug", + //"FegyverReturnStage", + }, + Enable = true, + Mode = Both, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = true, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 3600, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 8200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 50f, + DesiredSpeed = 100f, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 10000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 0, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3f, // controls how responsive tracking is. + MaxLateralThrust = 0.5f, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = 0, // helps influence how the projectile steers. + TrackingDelay = 0, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + FutureIntersectionRange = 400, + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = true, // only target the constructs Ai's focus target + MinTurnSpeed = 5, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = true, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + //Debug = true, + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "SUNSHOT", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 3, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 2, blue: 2, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "sunloop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + //Fegyver Bullet + private AmmoDef MediumArtillery => new AmmoDef + { + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Medium_Artillery_Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // 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. + Mass = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // 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. + 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 + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + 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. + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 140500f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = 1f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 900, //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. + 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: 100), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // 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. + MaxTargets = 0, // 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 + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "SUNTRAVEL", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "THESUNMUZZLE", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 10000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Override.DISABLED b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Override.DISABLED new file mode 100644 index 000000000..451eca2e9 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Override.DISABLED @@ -0,0 +1,1277 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + + + + + private AmmoDef FegyverLauncher => new AmmoDef + { + AmmoMagazine = "FegyverLauncherStage", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Fegyver Light Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = true, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 700f, // Direct damage; one steel plate is worth 100. + Mass = 10f, // In kilograms; how much force the impact will apply to the target. + Health = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "FegyverSentryStage", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 30, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 5f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 10f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 800, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 200f, + DesiredSpeed = 200f, // voxel phasing if you go above 5100 + MaxTrajectory = 1000f, + DeaccelTime = 60, // 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: 200), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.2f, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? + MaxTargets = 0, // 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 = true, // 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..) + NoSteering = false, // this disables target follow and instead travel straight ahead (but will respect offsets) + }, + 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 + { + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private AmmoDef FegyverSentry => new AmmoDef + { + + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "FegyverSentryStage", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 1000, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Railgun Artillery Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 360, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 10, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 1, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 3600, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 1f, + DesiredSpeed = 5, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 10000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + //Debug = true, + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 0.45f, // controls how sharp the trajectile may turn + //AccelClearance = 1000f, //Unknown + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // 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. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.05f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 3600, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + //Debug = true, + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "ManticoreThrust", //ShipWelderArc + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = true, + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 0.75f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 10f, + Width = 2f, + Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "AryxMissileTrail", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 60, + Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + Back = false, + CustomWidth = 0.1f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + //Fegyver Bullet + private AmmoDef LightArtillery => new AmmoDef + { + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Railgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // 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. + Mass = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // 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. + 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 + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + 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. + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 0.4f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = 0f, // Degrees, Is pointed forward + 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. + 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: 1000), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // 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. + MaxTargets = 0, // 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 + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Three Stage.DISABLED b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Three Stage.DISABLED new file mode 100644 index 000000000..65ea4410d --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - Functional Three Stage.DISABLED @@ -0,0 +1,1278 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + + + + + private AmmoDef FegyverLauncher => new AmmoDef + { + AmmoMagazine = "FegyverLauncherStage", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Fegyver Light Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = true, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 700f, // Direct damage; one steel plate is worth 100. + Mass = 10f, // In kilograms; how much force the impact will apply to the target. + Health = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = true, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "FegyverSentryStage", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 4, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 30, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 5f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "FegyverSentryStage", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 10f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 800, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 200f, + DesiredSpeed = 200f, // voxel phasing if you go above 5100 + MaxTrajectory = 10000f, + DeaccelTime = 60, // 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: 200), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 10, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.2f, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? + MaxTargets = 0, // 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 = true, // 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) + }, + 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 + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + private AmmoDef FegyverSentry => new AmmoDef + { + + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "FegyverSentryStage", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 1000, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Railgun Artillery Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 360, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 10, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 1, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 3600, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 1f, + DesiredSpeed = 5, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 10000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + //Debug = true, + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 0.45f, // controls how sharp the trajectile may turn + //AccelClearance = 1000f, //Unknown + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // 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. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.05f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 3600, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + //Debug = true, + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "ManticoreThrust", //ShipWelderArc + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = true, + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 0.75f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 10f, + Width = 2f, + Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "AryxMissileTrail", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 60, + Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + Back = false, + CustomWidth = 0.1f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + //Fegyver Bullet + private AmmoDef LightArtillery => new AmmoDef + { + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Railgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // 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. + Mass = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // 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. + 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 + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + 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. + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 0.4f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = 0f, // Degrees, Is pointed forward + 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. + 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: 100), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // 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. + MaxTargets = 0, // 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 + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - OG.DISABLED b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - OG.DISABLED new file mode 100644 index 000000000..99bf2b8bf --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes - OG.DISABLED @@ -0,0 +1,2427 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Fegyver => new AmmoDef + { + AmmoMagazine = "FegyverDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Fegyver Light Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 1000, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Railgun Artillery Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 360, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 10, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 1, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 3600, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 1f, + DesiredSpeed = 5, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 10000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 0.45f, // controls how sharp the trajectile may turn + //AccelClearance = 1000f, //Unknown + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.05f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 3600, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "ManticoreThrust", //ShipWelderArc + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = true, + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 0.75f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 10f, + Width = 2f, + Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "AryxMissileTrail", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 60, + Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + Back = false, + CustomWidth = 0.1f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + private AmmoDef Agyu => new AmmoDef + { + AmmoMagazine = "AgyuDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Agyu Heavy Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 2800, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Coilgun Artillery Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 60, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 100f, + DesiredSpeed = 300, // voxel phasing if you go above 5100 + MaxTrajectory = 400000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.25, // controls how responsive tracking is. + MaxLateralThrust = 0.35f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.8f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "ManticoreThrust", //ShipWelderArc + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = true, + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 0.75f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 10f, + Width = 2f, + Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "AryxMissileTrail", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 60, + Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + Back = false, + CustomWidth = 0.1f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Orszem => new AmmoDef + { + AmmoMagazine = "OrszemDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Orszem Sentinel", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 1200, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "AMS Bullet", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 60, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 20, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 100f, + DesiredSpeed = 300, // voxel phasing if you go above 5100 + MaxTrajectory = 400000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.25, // controls how responsive tracking is. + MaxLateralThrust = 0.35f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.8f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "ManticoreThrust", //ShipWelderArc + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = true, + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 500, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 0.75f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 10f, + Width = 2f, + Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "AryxMissileTrail", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 60, + Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + Back = false, + CustomWidth = 0.1f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + //Fegyver Bullet + private AmmoDef LightArtillery => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Railgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // 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. + Mass = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // 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. + 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 + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + 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. + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 0.4f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = 0f, // Degrees, Is pointed forward + 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. + 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: 1000), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + private AmmoDef HeavyArtillery => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Coilgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 5000f, // Direct damage; one steel plate is worth 100. + Mass = 1500f, // In kilograms; how much force the impact will apply to the target. + Health = 200, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 15000f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 3f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Meters + Damage = 375000f, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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, DroneAdvanced + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 0f, + DesiredSpeed = 5000, // voxel phasing if you go above 5100 + MaxTrajectory = 10000f, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + + private AmmoDef PointDefenseBullet => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "AMS Bullet", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 5000f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 200, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 3, // Meters + Damage = 50, + Depth = 2f, + MaxAbsorb = 0f, + Falloff = Linear, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1f, + CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 100f, + DesiredSpeed = 300, // voxel phasing if you go above 5100 + MaxTrajectory = 400000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes.cs index 99bf2b8bf..933b6bdce 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/DroneSentryTypes.cs @@ -11,9 +11,18 @@ using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; @@ -22,29 +31,41 @@ using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; namespace Scripts { // Don't edit above this line partial class Parts { - private AmmoDef Fegyver => new AmmoDef + + //Agyu Launcher Stage + private AmmoDef AgyuLauncher => new AmmoDef { - AmmoMagazine = "FegyverDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Fegyver Light Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + AmmoMagazine = "AgyuLauncherStage", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Agyu Heavy Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 1f, // Direct damage; one steel plate is worth 100. - Mass = 3000, // In kilograms; how much force the impact will apply to the target. - Health = 1000, // 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. + EnergyCost = 0f, //0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 800, // 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. DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. - + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Sync = new SynchronizeDef + { + Full = false, // Be careful, do not use on high fire rate weapons or ammos with many simultaneous fragments. This will send position updates twice per second per projectile/fragment and sync target (grid/block) changes. + PointDefense = true, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = true, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. { Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. @@ -57,43 +78,42 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "Railgun Artillery Slug", // AmmoRound field of the ammo to spawn. + AmmoRound = "AgyuSentryStage", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Degrees = 4, // 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. - Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path - MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions - + MaxChildren = 1, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = true, // Enables TimedSpawns mechanism - Interval = 360, // Time between spawning fragments, in ticks - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 10, // Max number of fragment children to spawn - Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = false, // Parent dies once after it spawns its last child. + Interval = 420, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 420, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target - PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 1, // Number of spawns in each group - GroupDelay = 60, // Delay between each group. - DirectAimCone = 1, //Angle cone in which the drone will open fire. + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 5f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. }, - }, Pattern = new PatternDef { Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", }, - Enable = false, - TriggerChance = 1f, - Random = false, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. RandomMin = 1, RandomMax = 1, - SkipParent = false, + SkipParent = true, // Skip the Ammo itself, in the list PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. }, DamageScales = new DamageScaleDef @@ -102,8 +122,8 @@ partial class Parts DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. - VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. - Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { @@ -124,20 +144,20 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = -1f, // Multiplier for damage against shields. + Modifier = 1f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. }, DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy { - Base = Kinetic, + Base = Kinetic, // Base Damage uses this AreaEffect = Kinetic, Detonation = Kinetic, - Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line }, Custom = new CustomScalesDef { - IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. Types = new[] // List of blocks to apply custom damage multipliers to. { new CustomBlocksDef @@ -153,70 +173,72 @@ partial class Parts }, }, }, - AreaOfDamage = new AreaOfDamageDef + AreaOfDamage = new AreaOfDamageDef { ByBlockHit = new ByBlockHitDef { Enable = false, Radius = 0f, // Meters - Damage = 0, - Depth = 1f, // Meters - MaxAbsorb = 0f, - Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - Shape = Diamond, // Round or Diamond + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, EndOfLife = new EndOfLifeDef { - Enable = true, - Radius = 3, // Meters - Damage = 50, - Depth = 2f, - MaxAbsorb = 0f, - Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius + Enable = false, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 3600, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. NoVisuals = false, NoSound = false, - ParticleScale = 1f, - CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC CustomSound = "", // SubtypeID from your Audio SBC, not a filename - Shape = Round, // Round or Diamond - }, + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, }, Ewar = new EwarDef { Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! - Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, - Mode = Field, // Effect , Field - Strength = 30000000, - Radius = 250f, // Meters - Duration = 600, // In Ticks - StackDuration = false, // Combined Durations - Depletable = false, - MaxStacks = 2, // Max Debuffs at once + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 + Nav : Targets & Shutdown Gyros 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 + Anchor : Targets & Shutdowns Thrusters */ Force = new PushPullDef @@ -230,10 +252,10 @@ partial class Parts }, Field = new FieldDef { - Interval = 5, // Time between each pulse, in game ticks (60 == 1 second). - PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. - GrowTime = 60, // How many ticks it should take the field to grow to full size. - HideModel = false, // Hide the projectile model if it has one. + Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. ShowParticle = true, // Show Block damage effect. TriggerRange = 250f, //range at which fields are triggered Particle = new ParticleDef // Particle effect to generate at the field's position. @@ -248,7 +270,7 @@ partial class Parts }, Beams = new BeamDef { - Enable = false, // Enable beam behaviour. + 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. @@ -256,37 +278,37 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced - TargetLossDegree = 0f, + Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 10f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 1f, - DesiredSpeed = 5, // voxel phasing if you go above 5100 - //MaxSpeed = 50, //Unknown - MaxTrajectory = 10000, - //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. - SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed - RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxLifeTime = 800, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 200f, + DesiredSpeed = 200f, // voxel phasing if you go above 5100 + MaxTrajectory = 10000f, + DeaccelTime = 60, // 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: 200), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { - Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 3, // controls how responsive tracking is. - MaxLateralThrust = 0.45f, // controls how sharp the trajectile may turn - //AccelClearance = 1000f, //Unknown - TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + SteeringLimit = 10f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.2f, // controls how sharp the trajectile may turn + TrackingDelay = 120, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime - Roam = true, // Roam current area after target loss - KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss - CheckFutureIntersection = true, - OffsetRatio = 0.05f, // The ratio to offset the random dir (0 to 1) - OffsetTime = 3600, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + Roam = false, // Roam current area after target loss + KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss + OffsetRatio = 3f, // 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) }, - Mines = new MinesDef + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { DetectRadius = 0, DeCloakRadius = 0, @@ -297,45 +319,42 @@ partial class Parts }, AmmoGraphics = new GraphicDef { - ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", //"\\Models\\Drones\\Fighter_drone.mwm", VisualProbability = 1f, - ShieldHitDraw = true, + ShieldHitDraw = false, Particles = new AmmoParticleDef { Ammo = new ParticleDef { - Name = "ManticoreThrust", //ShipWelderArc - Color = Color(red: 25, green: 25, blue: 25, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), Extras = new ParticleOptionDef { - Loop = true, - Restart = false, - MaxDistance = 500, - MaxDuration = 0, - Scale = 1f, + Scale = 0.75f, }, }, Hit = new ParticleDef { Name = "", ApplyToShield = true, - Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { Restart = false, - MaxDistance = 500, + MaxDistance = 5000, MaxDuration = 0, Scale = 1, - HitPlayChance = 0.75f, + HitPlayChance = 1f, }, }, Eject = new ParticleDef { Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -349,18 +368,19 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. Tracer = new TracerBaseDef { - Enable = false, - Length = 10f, + Enable = true, + Length = 8f, Width = 2f, - Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "AryxMissileTrail", + "WeaponLaser", }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef @@ -372,7 +392,7 @@ partial class Parts SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values Speed = 1f, // meters per second - Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + Color = Color(red: 3, green: 16, blue: 10, alpha: 1), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -387,10 +407,10 @@ partial class Parts "WeaponLaser", }, TextureMode = Normal, - DecayTime = 60, - Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + DecayTime = 90, + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), Back = false, - CustomWidth = 0.1f, + CustomWidth = 0.2f, UseWidthVariance = false, UseColorFade = true, }, @@ -404,13 +424,13 @@ partial class Parts }, AmmoAudio = new AmmoAudioDef { - TravelSound = "", + TravelSound = "ObviousFlyby", HitSound = "", ShieldHitSound = "", PlayerHitSound = "", VoxelHitSound = "", FloatingHitSound = "", - HitPlayChance = 0.5f, + HitPlayChance = 1f, HitPlayShield = true, }, Ejection = new EjectionDef @@ -426,21 +446,21 @@ partial class Parts } }, // Don't edit below this line }; - - - private AmmoDef Agyu => new AmmoDef + //Agyu Sentry Drone + private AmmoDef AgyuSentry => new AmmoDef { - AmmoMagazine = "AgyuDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Agyu Heavy Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "AgyuSentryStage", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 1f, // Direct damage; one steel plate is worth 100. Mass = 3000, // In kilograms; how much force the impact will apply to the target. - Health = 2800, // 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. + Health = 2400, // 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. DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. @@ -455,11 +475,11 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "Coilgun Artillery Slug", // AmmoRound field of the ammo to spawn. + AmmoRound = "Coilgun_Artillery_Slug", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Degrees = 1f, // 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. + DropVelocity = false, // fragments will not inherit velocity from parent. Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited @@ -468,30 +488,35 @@ partial class Parts TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = true, // Enables TimedSpawns mechanism - Interval = 60, // Time between spawning fragments, in ticks - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 900, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = false, // Parent dies once after it spawns its last child. + Interval = 1800, // Time between spawning fragments, in ticks + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 21, // Max number of fragment children to spawn + Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) GroupSize = 1, // Number of spawns in each group GroupDelay = 60, // Delay between each group. - DirectAimCone = 5, //Angle cone in which the drone will open fire. + DirectAimCone = 0.015f, //Angle cone in which the drone will open fire. }, }, Pattern = new PatternDef { Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. - "", - }, - Enable = false, + "Coilgun_Artillery_Slug", + "Coilgun_Artillery_Slug", + "Coilgun_Artillery_Slug", + "Coilgun_Artillery_Slug", + //"FegyverReturnStage", + }, + Enable = true, + Mode = Both, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both TriggerChance = 1f, Random = false, RandomMin = 1, RandomMax = 1, - SkipParent = false, + SkipParent = true, PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. }, DamageScales = new DamageScaleDef @@ -570,25 +595,26 @@ partial class Parts }, EndOfLife = new EndOfLifeDef { - Enable = false, - Radius = 3, // Meters - Damage = 50, - Depth = 2f, - MaxAbsorb = 0f, - Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius + Enable = true , + Radius = 12f , // Meters + Damage = 45000f , + Depth = 6f , + MaxAbsorb = 0f , + Falloff = Linear , //.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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. - NoVisuals = false, - NoSound = false, - ParticleScale = 1f, - CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC - CustomSound = "", // SubtypeID from your Audio SBC, not a filename - Shape = Round, // Round or Diamond + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false , // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0 , // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false , + NoSound = false , + ParticleScale = 3 , + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, }, Ewar = new EwarDef @@ -655,32 +681,43 @@ partial class Parts Trajectory = new TrajectoryDef { Guidance = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, TargetLossDegree = 0f, TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 100f, - DesiredSpeed = 300, // voxel phasing if you go above 5100 - MaxTrajectory = 400000, + MaxLifeTime = 7400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 50f, + DesiredSpeed = 0.25f, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 7000, //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { - Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 0.25, // controls how responsive tracking is. - MaxLateralThrust = 0.35f, // controls how sharp the trajectile may turn - TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + SteeringLimit = 0, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3f, // controls how responsive tracking is. + MaxLateralThrust = 3.5f, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = 0, // helps influence how the projectile steers. + TrackingDelay = 0, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 7400, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + FutureIntersectionRange = 400, MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime - Roam = true, // Roam current area after target loss + Roam = false, // Roam current area after target loss KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss - CheckFutureIntersection = true, - OffsetRatio = 0.8f, // The ratio to offset the random dir (0 to 1) - OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = true, // only target the constructs Ai's focus target + MinTurnSpeed = 5, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = true, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic }, Mines = new MinesDef { @@ -693,6 +730,7 @@ partial class Parts }, AmmoGraphics = new GraphicDef { + //Debug = true, ModelName = "\\Models\\Drones\\Artillery_drone.mwm", VisualProbability = 1f, ShieldHitDraw = true, @@ -700,44 +738,32 @@ partial class Parts { Ammo = new ParticleDef { - Name = "ManticoreThrust", //ShipWelderArc - Color = Color(red: 25, green: 25, blue: 25, alpha: 1), + Name = "SUNSHOT", //ShipWelderArc Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it Extras = new ParticleOptionDef { - Loop = true, - Restart = false, - MaxDistance = 500, - MaxDuration = 0, - Scale = 1f, + Scale = 3, }, }, Hit = new ParticleDef { Name = "", ApplyToShield = true, - Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 500, - MaxDuration = 0, Scale = 1, - HitPlayChance = 0.75f, + HitPlayChance = 1f, }, }, Eject = new ParticleDef { Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 5000, - MaxDuration = 30, Scale = 1, HitPlayChance = 1f, }, @@ -746,29 +772,30 @@ partial class Parts Lines = new LineDef { ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, - Length = 10f, - Width = 2f, - Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + Enable = true, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 2, blue: 2, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "AryxMissileTrail", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef { Enable = false, // If true Tracer TextureMode is ignored Textures = new[] { - "", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values - Speed = 1f, // meters per second - Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -778,15 +805,15 @@ partial class Parts }, Trail = new TrailDef { - Enable = true, + Enable = false, Textures = new[] { - "WeaponLaser", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, - DecayTime = 60, - Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), Back = false, - CustomWidth = 0.1f, + CustomWidth = 0, UseWidthVariance = false, UseColorFade = true, }, @@ -800,16 +827,17 @@ partial class Parts }, AmmoAudio = new AmmoAudioDef { - TravelSound = "", + TravelSound = "RadioGlitchLoop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight HitSound = "", + ShotSound = "", ShieldHitSound = "", PlayerHitSound = "", VoxelHitSound = "", FloatingHitSound = "", - HitPlayChance = 0.5f, + HitPlayChance = 1f, HitPlayShield = true, }, - Ejection = new EjectionDef + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection { Type = Particle, // Particle or Item (Inventory Component) Speed = 100f, // Speed inventory is ejected from in dummy direction @@ -822,20 +850,20 @@ partial class Parts } }, // Don't edit below this line }; - - private AmmoDef Orszem => new AmmoDef + //Agyu Bullet + private AmmoDef HeavyArtillery => new AmmoDef { - AmmoMagazine = "OrszemDrone", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Orszem Sentinel", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Coilgun_Artillery_Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 1f, // Direct damage; one steel plate is worth 100. - Mass = 3000, // In kilograms; how much force the impact will apply to the target. - Health = 1200, // 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. + BaseDamage = 425000f, // Direct damage; one steel plate is worth 100. + Mass = 2500f, // 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. DecayPerShot = 0f, // Damage to the firing weapon itself. - HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. @@ -850,7 +878,7 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "AMS Bullet", // AmmoRound field of the ammo to spawn. + AmmoRound = "", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. Degrees = 1, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. @@ -860,18 +888,19 @@ partial class Parts MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { - Enable = true, // Enables TimedSpawns mechanism - Interval = 60, // Time between spawning fragments, in ticks + Enable = false, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life MaxSpawns = 900, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + Proximity = 10000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance ParentDies = false, // Parent dies once after it spawns its last child. - PointAtTarget = true, // Start fragment direction pointing at Target + PointAtTarget = false, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 20, // Number of spawns in each group - GroupDelay = 60, // Delay between each group. + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. DirectAimCone = 5, //Angle cone in which the drone will open fire. }, @@ -894,14 +923,14 @@ partial class Parts MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. - HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 0f, // Distance at which damage begins falling off. - MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + Distance = 6000f, // 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 { @@ -917,7 +946,7 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = -1f, // Multiplier for damage against shields. + Modifier = 6f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. }, @@ -946,44 +975,46 @@ partial class Parts }, }, }, - AreaOfDamage = new AreaOfDamageDef + AreaOfDamage = new AreaOfDamageDef { ByBlockHit = new ByBlockHitDef { - Enable = false, - Radius = 0f, // Meters - Damage = 0, - Depth = 1f, // Meters - MaxAbsorb = 0f, + Enable = true, + Radius = 3f, // Meters + Damage = 100000f, // 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. 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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - Shape = Diamond, // Round or Diamond + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, EndOfLife = new EndOfLifeDef { - Enable = false, - Radius = 3, // Meters - Damage = 50, - Depth = 2f, - MaxAbsorb = 0f, - Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius + Enable = true, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 240500f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. NoVisuals = false, NoSound = false, - ParticleScale = 1f, - CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC - CustomSound = "", // SubtypeID from your Audio SBC, not a filename - Shape = Round, // Round or Diamond + ParticleScale = 3, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, }, Ewar = new EwarDef @@ -1049,32 +1080,32 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced - TargetLossDegree = 0f, + Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 1f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 100f, - DesiredSpeed = 300, // voxel phasing if you go above 5100 - MaxTrajectory = 400000, - //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. - SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed - RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxLifeTime = 900, //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 = 5100, // 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. + 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: 100), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 0.25, // controls how responsive tracking is. - MaxLateralThrust = 0.35f, // controls how sharp the trajectile may turn + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + MaxChaseTime = 7400, // 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. MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime - Roam = true, // Roam current area after target loss + Roam = false, // Roam current area after target loss KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss CheckFutureIntersection = true, - OffsetRatio = 0.8f, // The ratio to offset the random dir (0 to 1) + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) }, Mines = new MinesDef @@ -1088,50 +1119,47 @@ partial class Parts }, AmmoGraphics = new GraphicDef { - ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + ModelName = "\\Models\\Ammo\\Expanse-Torpedo-Smol",//Expanse-Torpedo-Smol VisualProbability = 1f, - ShieldHitDraw = true, + ShieldHitDraw = false, Particles = new AmmoParticleDef { Ammo = new ParticleDef { - Name = "ManticoreThrust", //ShipWelderArc - Color = Color(red: 25, green: 25, blue: 25, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), + Name = "ARROWFLARE", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), Extras = new ParticleOptionDef { - Loop = true, - Restart = false, - MaxDistance = 500, - MaxDuration = 0, - Scale = 1f, + Scale = 0.35f, }, }, Hit = new ParticleDef { - Name = "", + Name = "ARROWNUKE", ApplyToShield = true, - Color = Color(red: 2.5f, green: 2f, blue: 1f, alpha: 1), + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { Restart = false, - MaxDistance = 500, - MaxDuration = 0, + MaxDistance = 5000, + MaxDuration = 10, Scale = 1, - HitPlayChance = 0.75f, + HitPlayChance = 1f, }, }, Eject = new ParticleDef { - Name = "", + Name = "THESUNMUZZLE", ApplyToShield = true, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { Restart = false, - MaxDistance = 5000, + MaxDistance = 10000, MaxDuration = 30, Scale = 1, HitPlayChance = 1f, @@ -1140,18 +1168,19 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 1.025f), // adds random value to default width (negatives shrinks width) + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. Tracer = new TracerBaseDef { - Enable = false, - Length = 10f, + Enable = true, + Length = 8f, Width = 2f, - Color = Color(red: 25, green: 10, blue: 5, alpha: 0), + Color = Color(red: 40f, green: 40f, blue: 25f, alpha: 1), VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "AryxMissileTrail", + "WarpBubble", }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef @@ -1163,7 +1192,7 @@ partial class Parts SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values Speed = 1f, // meters per second - Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -1178,10 +1207,10 @@ partial class Parts "WeaponLaser", }, TextureMode = Normal, - DecayTime = 60, - Color = Color(red: 25, green: 20, blue: 6, alpha: 1), + DecayTime = 120, + Color = Color(red: 40f, green: 40f, blue: 25f, alpha: 1), Back = false, - CustomWidth = 0.1f, + CustomWidth = 0.2f, UseWidthVariance = false, UseColorFade = true, }, @@ -1195,13 +1224,13 @@ partial class Parts }, AmmoAudio = new AmmoAudioDef { - TravelSound = "", + TravelSound = "ObviousFlyby", HitSound = "", ShieldHitSound = "", PlayerHitSound = "", VoxelHitSound = "", FloatingHitSound = "", - HitPlayChance = 0.5f, + HitPlayChance = 1f, HitPlayShield = true, }, Ejection = new EjectionDef @@ -1224,22 +1253,132 @@ partial class Parts - //Fegyver Bullet - private AmmoDef LightArtillery => new AmmoDef + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + //Fegyver Launcher Stage + private AmmoDef FegyverLauncher => new AmmoDef { - AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Railgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + AmmoMagazine = "FegyverLauncherStage", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Fegyver Medium Sentry", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.1f, // 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. - Mass = 300, // 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. + EnergyCost = 0f, //0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 800, // 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. DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. - + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Sync = new SynchronizeDef + { + Full = false, // Be careful, do not use on high fire rate weapons or ammos with many simultaneous fragments. This will send position updates twice per second per projectile/fragment and sync target (grid/block) changes. + PointDefense = true, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = true, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. { Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. @@ -1252,44 +1391,42 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + AmmoRound = "FegyverSentryStage", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Degrees = 4, // 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. - Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path - MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + MaxChildren = 1, // number of maximum branches for fragments from the roots point of view, 0 is unlimited IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions - - + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = true, // Enables TimedSpawns mechanism - Interval = 10, // Time between spawning fragments, in ticks - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 900, // Max number of fragment children to spawn - Proximity = 8000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = false, // Parent dies once after it spawns its last child. + Interval = 420, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 420, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target - PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 1, // Number of spawns in each group - GroupDelay = 240, // Delay between each group. - DirectAimCone = 5, //Angle cone in which the drone will open fire. + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 5f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. }, - }, Pattern = new PatternDef { Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", }, - Enable = false, - TriggerChance = 1f, - Random = false, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. RandomMin = 1, RandomMax = 1, - SkipParent = false, + SkipParent = true, // Skip the Ammo itself, in the list PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. }, DamageScales = new DamageScaleDef @@ -1297,14 +1434,14 @@ partial class Parts MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. - HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. - VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. - Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. // 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. - MinMultipler = 0.75f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef { @@ -1320,20 +1457,20 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = -1f, // Multiplier for damage against shields. + Modifier = 1f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. }, DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy { - Base = Kinetic, + Base = Kinetic, // Base Damage uses this AreaEffect = Kinetic, Detonation = Kinetic, - Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line }, Custom = new CustomScalesDef { - IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. Types = new[] // List of blocks to apply custom damage multipliers to. { new CustomBlocksDef @@ -1353,12 +1490,12 @@ 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. - Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -1369,10 +1506,10 @@ partial class Parts }, EndOfLife = new EndOfLifeDef { - Enable = true, //particle spawned on hit - Radius = 1f, // Radius of AOE effect, in meters. - Damage = 0.4f, - Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + Enable = false, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value MaxAbsorb = 0f, // 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 @@ -1381,40 +1518,40 @@ partial class Parts //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. //.Exponential drops off exponentially. Does not scale to max radius - ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. NoVisuals = false, NoSound = false, - ParticleScale = 1, + ParticleScale = 2, CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC - CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + CustomSound = "", // SubtypeID from your Audio SBC, not a filename Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. - }, + }, }, Ewar = new EwarDef { Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! - Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, - Mode = Field, // Effect , Field - Strength = 30000000, - Radius = 250f, // Meters - Duration = 600, // In Ticks - StackDuration = false, // Combined Durations - Depletable = false, - MaxStacks = 2, // Max Debuffs at once + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 + Nav : Targets & Shutdown Gyros 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 + Anchor : Targets & Shutdowns Thrusters */ Force = new PushPullDef @@ -1428,10 +1565,1286 @@ partial class Parts }, Field = new FieldDef { - Interval = 5, // Time between each pulse, in game ticks (60 == 1 second). - PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. - GrowTime = 60, // How many ticks it should take the field to grow to full size. - HideModel = false, // Hide the projectile model if it has one. + Interval = 0, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 10f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 800, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 200f, + DesiredSpeed = 200f, // voxel phasing if you go above 5100 + MaxTrajectory = 10000f, + DeaccelTime = 60, // 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: 200), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 10f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.2f, // controls how sharp the trajectile may turn + TrackingDelay = 120, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss + OffsetRatio = 3f, // 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) + }, + 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 + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", //"\\Models\\Drones\\Fighter_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Expanse_Trail", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.75f, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 3, green: 16, blue: 10, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 90, + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + //Fegyver Sentry Drone + private AmmoDef FegyverSentry => new AmmoDef + { + + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "FegyverSentryStage", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 2400, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Railgun_Artillery_Slug", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1f, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 360, // Time between spawning fragments, in ticks + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 21, // Max number of fragment children to spawn + Proximity = 6000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + DirectAimCone = 2, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + "Railgun_Artillery_Slug", + //"FegyverReturnStage", + }, + Enable = true, + Mode = Both, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = true, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = -1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0, + Depth = 1f, // Meters + MaxAbsorb = 0f, + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + Shape = Diamond, // Round or Diamond + }, + EndOfLife = new EndOfLifeDef + { + Enable = true , + Radius = 12f , // Meters + Damage = 45000f , + Depth = 6f , + MaxAbsorb = 0f , + Falloff = Linear , //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false , // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0 , // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false , + NoSound = false , + ParticleScale = 3 , + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, + TargetLossDegree = 0f, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 7400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 50f, + DesiredSpeed = 0.25f, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 7000, + //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + SteeringLimit = 0, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3f, // controls how responsive tracking is. + MaxLateralThrust = 3.5f, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = 0, // helps influence how the projectile steers. + TrackingDelay = 0, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 7400, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + FutureIntersectionRange = 400, + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = true, // only target the constructs Ai's focus target + MinTurnSpeed = 5, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = true, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + //Debug = true, + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", + VisualProbability = 1f, + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "SUNSHOT", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 3, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 2, blue: 2, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "RadioGlitchLoop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + //Fegyver Bullet + private AmmoDef LightArtillery => new AmmoDef + { + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Railgun_Artillery_Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // 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. + Mass = 300, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 10, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + + + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 10, // Time between spawning fragments, in ticks + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 900, // Max number of fragment children to spawn + Proximity = 7000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) + GroupSize = 1, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + DirectAimCone = 5, //Angle cone in which the drone will open fire. + }, + + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Enable = false, + TriggerChance = 1f, + Random = false, + RandomMin = 1, + RandomMax = 1, + SkipParent = false, + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 500, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // 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. + 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 + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 6f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + 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. + 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, //particle spawned on hit + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 140500f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 30000000, + Radius = 250f, // Meters + Duration = 600, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 2, // 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 = 5, // Time between each pulse, in game ticks (60 == 1 second). + PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. + GrowTime = 60, // How many ticks it should take the field to grow to full size. + HideModel = false, // Hide the projectile model if it has one. + ShowParticle = true, // Show Block damage effect. + 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. + 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 = 1f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 900, //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. + 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: 100), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3, // controls how responsive tracking is. + MaxLateralThrust = 3f, // controls how sharp the trajectile may turn + TrackingDelay = 10, // Measured in Shape diameter units traveled. + MaxChaseTime = 7400, // 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. + MaxTargets = 0, // 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 + CheckFutureIntersection = true, + OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) + OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + }, + Mines = new MinesDef + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Ammo\\Expanse-Torpedo-Smol",//Expanse-Torpedo-Smol + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: -0.21f), + Extras = new ParticleOptionDef + { + Scale = 0.35f, + }, + }, + Hit = new ParticleDef + { + Name = "ArcImpact", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 10, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "THESUNMUZZLE", + ApplyToShield = true, + + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 10000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + Tracer = new TracerBaseDef + { + Enable = true, + Length = 8f, + Width = 2f, + Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WarpBubble", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 80, + Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "ObviousFlyby", + HitSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + //Orszem Launcher Stage + private AmmoDef OrszemLauncher => new AmmoDef + { + AmmoMagazine = "OrszemLauncherStage", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Orszem Sentinel", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, //0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 800, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Sync = new SynchronizeDef + { + Full = false, // Be careful, do not use on high fire rate weapons or ammos with many simultaneous fragments. This will send position updates twice per second per projectile/fragment and sync target (grid/block) changes. + PointDefense = true, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = true, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "OrszemSentryStage", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 4, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 1, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 420, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 420, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 5f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = true, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. ShowParticle = true, // Show Block damage effect. TriggerRange = 250f, //range at which fields are triggered Particle = new ParticleDef // Particle effect to generate at the field's position. @@ -1446,7 +2859,7 @@ partial class Parts }, Beams = new BeamDef { - Enable = false, // Enable beam behaviour. + 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. @@ -1454,35 +2867,37 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 0f, // Degrees, Is pointed forward + Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 10f, // Degrees, Is pointed forward 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. - DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second) + MaxLifeTime = 800, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 200f, + DesiredSpeed = 200f, // voxel phasing if you go above 5100 + MaxTrajectory = 10000f, + DeaccelTime = 60, // 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: 1000), // subtracts value from MaxTrajectory + RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { - Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 3, // controls how responsive tracking is. - MaxLateralThrust = 3f, // controls how sharp the trajectile may turn - TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + SteeringLimit = 10f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 4f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.2f, // controls how sharp the trajectile may turn + TrackingDelay = 120, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime Roam = true, // Roam current area after target loss - KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss - CheckFutureIntersection = true, - OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) - OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss + OffsetRatio = 3f, // 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) }, - Mines = new MinesDef + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { DetectRadius = 0, DeCloakRadius = 0, @@ -1493,7 +2908,7 @@ partial class Parts }, AmmoGraphics = new GraphicDef { - ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + ModelName = "\\Models\\Ammo\\Expanse-Torpedo", //"\\Models\\Drones\\Fighter_drone.mwm", VisualProbability = 1f, ShieldHitDraw = false, Particles = new AmmoParticleDef @@ -1512,7 +2927,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -1528,7 +2943,7 @@ partial class Parts Name = "", ApplyToShield = true, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Color = Color(red: 0.5f, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { @@ -1550,7 +2965,7 @@ partial class Parts Enable = true, Length = 8f, Width = 2f, - Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. @@ -1566,7 +2981,7 @@ partial class Parts SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values Speed = 1f, // meters per second - Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + Color = Color(red: 3, green: 16, blue: 10, alpha: 1), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -1582,7 +2997,7 @@ partial class Parts }, TextureMode = Normal, DecayTime = 90, - Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + Color = Color(red: 5f, green: 35, blue: 20f, alpha: 1), Back = false, CustomWidth = 0.2f, UseWidthVariance = false, @@ -1620,25 +3035,20 @@ partial class Parts } }, // Don't edit below this line }; - - - - - - - private AmmoDef HeavyArtillery => new AmmoDef + //Orszem Sentry Drone + private AmmoDef OrszemSentry => new AmmoDef { - AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Coilgun Artillery Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "OrszemSentryStage", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 5000f, // Direct damage; one steel plate is worth 100. - Mass = 1500f, // In kilograms; how much force the impact will apply to the target. - Health = 200, // 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. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 3000, // In kilograms; how much force the impact will apply to the target. + Health = 2400, // 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. DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. @@ -1653,30 +3063,30 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + AmmoRound = "Light_Drone_Slug", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Degrees = 0, // 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. - Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions - - + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = true, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = true, // Enables TimedSpawns mechanism - Interval = 10, // Time between spawning fragments, in ticks + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 900, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + MaxSpawns = 5760, // Max number of fragment children to spawn + Proximity = 1500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance ParentDies = false, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target - PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 1, // Number of spawns in each group - GroupDelay = 240, // Delay between each group. - DirectAimCone = 5, //Angle cone in which the drone will open fire. + PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 120, // Number of spawns in each group + GroupDelay = 30, // Delay between each group. }, }, @@ -1684,13 +3094,15 @@ partial class Parts { Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", + //"FegyverReturnStage", }, Enable = false, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both TriggerChance = 1f, Random = false, RandomMin = 1, RandomMax = 1, - SkipParent = false, + SkipParent = true, PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. }, DamageScales = new DamageScaleDef @@ -1704,7 +3116,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 = 15000f, // Distance at which damage begins falling off. + Distance = 0f, // Distance at which damage begins falling off. MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef @@ -1721,7 +3133,7 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = 3f, // Multiplier for damage against shields. + Modifier = -1f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. }, @@ -1750,7 +3162,7 @@ partial class Parts }, }, }, - AreaOfDamage = new AreaOfDamageDef + AreaOfDamage = new AreaOfDamageDef { ByBlockHit = new ByBlockHitDef { @@ -1769,26 +3181,27 @@ partial class Parts }, EndOfLife = new EndOfLifeDef { - Enable = true, - Radius = 3f, // Meters - Damage = 375000f, - Depth = 2f, - MaxAbsorb = 0f, - Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius + Enable = true , + Radius = 12f , // Meters + Damage = 45000f , + Depth = 6f , + MaxAbsorb = 0f , + Falloff = Linear , //.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 //.InvCurve drops off sharply from the middle and tapers to max radius //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. - NoVisuals = false, - NoSound = false, - ParticleScale = 1f, - CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC - CustomSound = "", // SubtypeID from your Audio SBC, not a filename - Shape = Round, // Round or Diamond - }, + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false , // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0 , // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false , + NoSound = false , + ParticleScale = 3 , + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "MyRailRoundHit", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, }, Ewar = new EwarDef { @@ -1853,33 +3266,44 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + Guidance = DroneAdvanced, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced + //Debug = true, TargetLossDegree = 0f, TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 0f, - DesiredSpeed = 5000, // voxel phasing if you go above 5100 - MaxTrajectory = 10000f, + MaxLifeTime = 7400, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 50f, + DesiredSpeed = 0.25f, // voxel phasing if you go above 5100 + //MaxSpeed = 50, //Unknown + MaxTrajectory = 7000, //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { - Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 3, // controls how responsive tracking is. - MaxLateralThrust = 3f, // controls how sharp the trajectile may turn - TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + SteeringLimit = 0, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 3f, // controls how responsive tracking is. + MaxLateralThrust = 3.5f, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = 0, // helps influence how the projectile steers. + TrackingDelay = 0, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 7200, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + FutureIntersectionRange = 400, MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime Roam = true, // Roam current area after target loss KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss - CheckFutureIntersection = true, - OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) - OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = true, // only target the constructs Ai's focus target + MinTurnSpeed = 5, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = true, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic }, Mines = new MinesDef { @@ -1892,32 +3316,29 @@ partial class Parts }, AmmoGraphics = new GraphicDef { - ModelName = "\\Models\\Ammo\\Expanse-Torpedo", + //Debug = true, + ModelName = "\\Models\\Drones\\Artillery_drone.mwm", VisualProbability = 1f, - ShieldHitDraw = false, + ShieldHitDraw = true, Particles = new AmmoParticleDef { Ammo = new ParticleDef { - Name = "Expanse_Trail", //ShipWelderArc - Offset = Vector(x: 0, y: 0, z: -0.21f), + Name = "SUNSHOT", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it Extras = new ParticleOptionDef { - Scale = 0.75f, + Scale = 3, }, }, Hit = new ParticleDef { Name = "", ApplyToShield = true, - - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 5000, - MaxDuration = 0, Scale = 1, HitPlayChance = 1f, }, @@ -1926,14 +3347,9 @@ partial class Parts { Name = "", ApplyToShield = true, - - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 5000, - MaxDuration = 30, Scale = 1, HitPlayChance = 1f, }, @@ -1941,31 +3357,31 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) - DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { Enable = true, - Length = 8f, - Width = 2f, - Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 2, blue: 2, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "WeaponLaser", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef { Enable = false, // If true Tracer TextureMode is ignored Textures = new[] { - "", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values - Speed = 1f, // meters per second - Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -1975,15 +3391,15 @@ partial class Parts }, Trail = new TrailDef { - Enable = true, + Enable = false, Textures = new[] { - "WeaponLaser", + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, - DecayTime = 90, - Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), Back = false, - CustomWidth = 0.2f, + CustomWidth = 0, UseWidthVariance = false, UseColorFade = true, }, @@ -1997,8 +3413,9 @@ partial class Parts }, AmmoAudio = new AmmoAudioDef { - TravelSound = "ObviousFlyby", + TravelSound = "RadioGlitchLoop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight HitSound = "", + ShotSound = "", ShieldHitSound = "", PlayerHitSound = "", VoxelHitSound = "", @@ -2006,7 +3423,7 @@ partial class Parts HitPlayChance = 1f, HitPlayShield = true, }, - Ejection = new EjectionDef + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection { Type = Particle, // Particle or Item (Inventory Component) Speed = 100f, // Speed inventory is ejected from in dummy direction @@ -2019,28 +3436,22 @@ partial class Parts } }, // Don't edit below this line }; - - - - - - - - - private AmmoDef PointDefenseBullet => new AmmoDef + //Fegyver Bullet + private AmmoDef PointDroneShot => new AmmoDef { - AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "AMS Bullet", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Light_Drone_Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. HybridRound = false, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 5000f, // Direct damage; one steel plate is worth 100. - Mass = 3000, // In kilograms; how much force the impact will apply to the target. - Health = 200, // 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. + EnergyCost = 0.0000001f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1600f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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 = 0, // Recoil. DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 120, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. { @@ -2054,44 +3465,41 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "Energy", // AmmoRound field of the ammo to spawn. + AmmoRound = "", // AmmoRound field of the ammo to spawn. Fragments = 1, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Degrees = 0, // 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. - Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards). + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions - - + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { - Enable = true, // Enables TimedSpawns mechanism - Interval = 10, // Time between spawning fragments, in ticks + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 900, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = false, // Parent dies once after it spawns its last child. + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct, Lead (always fire), Predict (only fire if it can hit) - GroupSize = 1, // Number of spawns in each group - GroupDelay = 240, // Delay between each group. - DirectAimCone = 5, //Angle cone in which the drone will open fire. + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. }, - }, Pattern = new PatternDef { Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", }, - Enable = false, - TriggerChance = 1f, - Random = false, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. RandomMin = 1, RandomMax = 1, - SkipParent = false, + SkipParent = false, // Skip the Ammo itself, in the list PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. }, DamageScales = new DamageScaleDef @@ -2100,12 +3508,12 @@ partial class Parts DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. - VoxelHitModifier = -1, // Voxel damage multiplier; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 0f, // Distance at which damage begins falling off. + Distance = 3000f, // Distance at which damage begins falling off. MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef @@ -2115,27 +3523,27 @@ 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). + Armor = 1.75f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). Light = -1f, // Multiplier for damage against light armor. Heavy = -1f, // Multiplier for damage against heavy armor. - NonArmor = -1f, // Multiplier for damage against every else. + NonArmor = 0.15f, // Multiplier for damage against every else. }, Shields = new ShieldDef { - Modifier = -1f, // Multiplier for damage against shields. + Modifier = 1.25f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal - BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + BypassModifier = -2f, // If greater than zero, the percentage of damage that will penetrate the shield. }, DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy { - Base = Kinetic, - AreaEffect = Kinetic, - Detonation = Kinetic, - Shield = Kinetic, // Damage against shields is currently all of one type per projectile. + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line }, Custom = new CustomScalesDef { - IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. Types = new[] // List of blocks to apply custom damage multipliers to. { new CustomBlocksDef @@ -2158,9 +3566,9 @@ partial class Parts Enable = false, Radius = 0f, // Meters Damage = 0, - Depth = 1f, // Meters + Depth = 0f, // Meters MaxAbsorb = 0f, - Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius + Falloff = Linear, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -2171,9 +3579,9 @@ partial class Parts EndOfLife = new EndOfLifeDef { Enable = false, - Radius = 3, // Meters - Damage = 50, - Depth = 2f, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, MaxAbsorb = 0f, Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius //.Linear drops evenly by distance from center out to max radius @@ -2182,24 +3590,24 @@ partial class Parts //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. - NoVisuals = false, - NoSound = false, - ParticleScale = 1f, - CustomParticle = "FlechetteBurst", // Particle SubtypeID, from your Particle SBC - CustomSound = "", // SubtypeID from your Audio SBC, not a filename - Shape = Round, // Round or Diamond + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = true, + NoSound = true, + ParticleScale = 1, + CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC + CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond }, }, Ewar = new EwarDef { - Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! - Type = Emp, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, - Mode = Field, // Effect , Field - Strength = 30000000, - Radius = 250f, // Meters - Duration = 600, // In Ticks - StackDuration = false, // Combined Durations + Enable = true, // Enables the EWAR , Electronic-Warfare System + Type = Offense, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 15f, // Meters + Duration = 500, // In Ticks + StackDuration = true, // Combined Durations Depletable = false, MaxStacks = 2, // Max Debuffs at once NoHitParticle = false, @@ -2228,12 +3636,12 @@ partial class Parts }, Field = new FieldDef { - Interval = 5, // Time between each pulse, in game ticks (60 == 1 second). - PulseChance = 100, // Chance from 0 - 100 that an entity in the field will be hit by any given pulse. - GrowTime = 60, // How many ticks it should take the field to grow to full size. + 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 = true, // Show Block damage effect. - TriggerRange = 250f, //range at which fields are triggered + TriggerRange = 0f, //range at which fields are triggered Particle = new ParticleDef // Particle effect to generate at the field's position. { Name = "", // SubtypeId of field particle effect. @@ -2246,7 +3654,7 @@ partial class Parts }, Beams = new BeamDef { - Enable = false, // Enable beam behaviour. + Enable = true, // 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. @@ -2254,35 +3662,35 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed, DroneAdvanced - TargetLossDegree = 0f, + Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 20f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 7200, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 100f, - DesiredSpeed = 300, // voxel phasing if you go above 5100 - MaxTrajectory = 400000, - //FieldTime was here, it's dead now is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0.2f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. - SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + MaxLifeTime = 120, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). Please have a value for this, It stops Bad things. + AccelPerSec = 3600f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. + DesiredSpeed = 3600, // voxel phasing if you go above 5100 + MaxTrajectory = 3000f, // 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 MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { - Inaccuracy = 0, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 3, // controls how responsive tracking is. - MaxLateralThrust = 3f, // controls how sharp the trajectile may turn - TrackingDelay = 10, // Measured in Shape diameter units traveled. - MaxChaseTime = 12000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + SteeringLimit = 30, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 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.55f, // controls how sharp the trajectile may turn + TrackingDelay = 60, // Measured in Shape diameter units traveled. + MaxChaseTime = 120, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited NoTargetExpire = false, // Expire without ever having a target at TargetLossTime - Roam = true, // Roam current area after target loss + Roam = false, // Roam current area after target loss KeepAliveAfterTargetLoss = false, // Whether to stop early death of projectile on target loss - CheckFutureIntersection = true, - OffsetRatio = 0.1f, // The ratio to offset the random dir (0 to 1) - OffsetTime = 120, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + 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 + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { DetectRadius = 0, DeCloakRadius = 0, @@ -2291,34 +3699,41 @@ partial class Parts Persist = false, }, }, - AmmoGraphics = new GraphicDef + AmmoGraphics = new GraphicDef { - ModelName = "\\Models\\Ammo\\Expanse-Torpedo", - VisualProbability = 1f, - ShieldHitDraw = false, + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Decals = new DecalDef //will need pattern ammo if laggy + { + MaxAge = 300, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "REE_Laser_Decal", + }, + }, + }, Particles = new AmmoParticleDef { Ammo = new ParticleDef { - Name = "Expanse_Trail", //ShipWelderArc - Offset = Vector(x: 0, y: 0, z: -0.21f), + Name = "", //ShipWelderArc + Offset = Vector(x: 128, y: 0, z: 0), Extras = new ParticleOptionDef { - Scale = 0.75f, + Scale = 1, }, }, Hit = new ParticleDef { - Name = "", + Name = "ArcImpact", ApplyToShield = true, - - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 5000, - MaxDuration = 0, Scale = 1, HitPlayChance = 1f, }, @@ -2327,14 +3742,9 @@ partial class Parts { Name = "", ApplyToShield = true, - - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Restart = false, - MaxDistance = 5000, - MaxDuration = 30, Scale = 1, HitPlayChance = 1f, }, @@ -2342,35 +3752,34 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 0.5f), // adds random value to default width (negatives shrinks width) - DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + ColorVariance = Random(start: 0.25f, end: 3f), // multiply the color by random values within range. + WidthVariance = Random(start: 0.25f, end: 1f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { Enable = true, - Length = 8f, - Width = 2f, - Color = Color(red: 40f, green: 25, blue: 40f, alpha: 1), + Length = 1f, // + Width = 0.35f, // + Color = Color(red: 5, green: 12, blue: 12, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "WeaponLaser", + "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef { Enable = false, // If true Tracer TextureMode is ignored Textures = new[] { - "", + "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, - SegmentLength = 0f, // Uses the values below. + SegmentLength = 50f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values Speed = 1f, // meters per second - Color = Color(red: 16, green: 16, blue: 16, alpha: 1), + Color = Color(red: 2, green: 4, blue: 2.5f, alpha: 1), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, - WidthVariance = Random(start: 0f, end: 0f), + WidthVariance = Random(start: 0.5f, end: 0.75f), ColorVariance = Random(start: 0f, end: 0f) } }, @@ -2378,28 +3787,28 @@ partial class Parts { Enable = true, Textures = new[] { - "WeaponLaser", + "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, - DecayTime = 90, - Color = Color(red: 40f, green: 25f, blue: 40f, alpha: 1), - Back = false, - CustomWidth = 0.2f, + DecayTime = 1, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 5, green: 12, blue: 12, alpha: 1), + Back = true, + CustomWidth = 1f, UseWidthVariance = false, UseColorFade = true, }, OffsetEffect = new OffsetEffectDef { - MaxOffset = 0,// 0 offset value disables this effect - MinLength = 0.2f, - MaxLength = 3, + MaxOffset = 3,// 0 offset value disables this effect + MinLength = 1.2f, + MaxLength = 5, }, }, }, AmmoAudio = new AmmoAudioDef { - TravelSound = "ObviousFlyby", - HitSound = "", + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "MedLaserLoop", ShieldHitSound = "", PlayerHitSound = "", VoxelHitSound = "", @@ -2407,7 +3816,7 @@ partial class Parts HitPlayChance = 1f, HitPlayShield = true, }, - Ejection = new EjectionDef + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection { Type = Particle, // Particle or Item (Inventory Component) Speed = 100f, // Speed inventory is ejected from in dummy direction @@ -2423,5 +3832,19 @@ partial class Parts + + + + + + + + + + + + + + } } diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs index 4c024f1b6..bbd7af545 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Ammo.cs @@ -30,21 +30,421 @@ namespace Scripts { // Don't edit above this line partial class Parts { - private AmmoDef Flechette_Buckshot => new AmmoDef // Your ID, for slotting into the Weapon CS + + //Flechette_ProximityFuse + + + private AmmoDef Flechette_ProximityFuse => new AmmoDef // Your ID, for slotting into the Weapon CS { AmmoMagazine = "FlakShotgun_Magazine", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Buckshot", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + AmmoRound = "Proximity Scattershot", // 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.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 700f, // Direct damage; one steel plate is worth 100. + Mass = 10f, // 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. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Scattershot", // AmmoRound field of the ammo to spawn. + Fragments = 10, // Number of projectiles to spawn. + Degrees = 4, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Never, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = 0.25f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = 0.75f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 2f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 0f, // Meters + Damage = 0f, + Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = Curve, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 8f, // Radius of AOE effect, in meters. + Damage = 85000f, + Depth = 8f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 2400, // 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 = 1550, // voxel phasing if you go above 5100 + MaxTrajectory = 3100f, // 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 = 25f, // 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: 200), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.01f, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? + MaxTargets = 0, // 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "NecronEnergyProjectile", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 0.15f, + }, + }, + Hit = new ParticleDef + { + Name = "Exp_Spark_FCC", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 100f, // + Width = 1.25f, // + Color = Color(red: 20, green: 40, blue: 40f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + Textures = new[] { + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 60, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 40, green: 20, blue: 5, alpha: 1), + Back = false, + CustomWidth = 0.35f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 1f, + MaxLength = 5f, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "FCC_Whistle", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + + + + + + + + + + + private AmmoDef Flechette_Scattershot => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Scattershot", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. HybridRound = false, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 3200f, // Direct damage; one steel plate is worth 100. - Mass = 0f, // In kilograms; how much force the impact will apply to the target. + BaseDamage = 3050f, // Direct damage; one steel plate is worth 100. + Mass = 10f, // 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. - 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) - HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. Synchronize = false, // For future use @@ -62,28 +462,28 @@ partial class Parts Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { AmmoRound = "", // AmmoRound field of the ammo to spawn. - Fragments = 1, // Number of projectiles to spawn. - Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Fragments = 36, // Number of projectiles to spawn. + Degrees = 4, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. - DropVelocity = false, // fragments will not inherit velocity from parent. + DropVelocity = true, // fragments will not inherit velocity from parent. Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = false, // Enables TimedSpawns mechanism Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life MaxSpawns = 1, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + Proximity = 800, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance ParentDies = true, // Parent dies once after it spawns its last child. PointAtTarget = true, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) - DirectAimCone = 4f, //Aim cone used for Direct fire, in degrees - GroupSize = 5, // Number of spawns in each group - GroupDelay = 120, // Delay between each group. + DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. }, }, Pattern = new PatternDef @@ -91,7 +491,7 @@ partial class Parts Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", }, - Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + Mode = Never, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both TriggerChance = 1f, // This is % Random = false, // This randomizes the number spawned at once, NOT the list order. RandomMin = 1, @@ -181,7 +581,7 @@ partial class Parts Damage = 1000f, Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. - Falloff = NoFalloff, //.NoFalloff applies the same damage to all blocks in radius + 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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -262,16 +662,16 @@ partial class Parts Trajectory = new TrajectoryDef { Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 80f, // Degrees, Is pointed forward + TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 360, // 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. + MaxLifeTime = 280, // 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 = 750, // voxel phasing if you go above 5100 - MaxTrajectory = 1800f, // Max Distance the projectile or beam can Travel. + DesiredSpeed = 1600, // voxel phasing if you go above 5100 + MaxTrajectory = 1150f, // 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: 25), // subtracts value from MaxTrajectory + RangeVariance = Random(start: 0, end: 200), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { @@ -280,14 +680,15 @@ partial class Parts MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn TrackingDelay = 0, // Measured in Shape diameter units traveled. MaxChaseTime = 0, // 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 for drones + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance? MaxTargets = 0, // 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 = 0.05f, // The ratio to offset the random direction (0 to 1) OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + //NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) }, Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { @@ -440,7 +841,7 @@ partial class Parts //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) HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + EnergyMagazineSize = 2, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. Synchronize = false, // For future use @@ -663,7 +1064,7 @@ partial class Parts MaxLifeTime = 720, // 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 = 0, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. DesiredSpeed = 1250, // voxel phasing if you go above 5100 - MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + MaxTrajectory = 3500f, // 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/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs index 9ede777fc..32ef9a59c 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Flechette_Shotgun.cs @@ -31,15 +31,15 @@ partial class Parts }, Muzzles = new[] { "muzzle_01", // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A - "muzzle_02" + "muzzle_02", }, Ejector = "subpart_ejectordoor", // Optional; empty from which to eject "shells" if specified. - //Scope = "muzzle_01", // Where line of sight checks are performed from. Must be clear of block collision. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. }, Targeting = new TargetingDef { Threats = new[] { - Projectiles, Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { Thrust, Offense, Utility, Power, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any @@ -49,8 +49,8 @@ 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 = 1500, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. - MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. + MaxTargetDistance = 0, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MinTargetDistance = 1000, // Minimum distance at which targets will be automatically shot at. TopTargets = 6, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited. StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. @@ -60,9 +60,9 @@ partial class Parts PartName = "Flechette_Artillery", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). DeviateShotAngle = 3f, // Projectile inaccuracy in degrees. AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Off, // 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 - while a target is available. - AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. + AddToleranceToTracking = true, // 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. Ui = new UiDef @@ -130,7 +130,7 @@ partial class Parts MaxHeat = 70000, // Max heat before weapon enters cooldown (70% of max heat). Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 HeatSinkRate = 90000, // Amount of heat lost per second. - DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + DegradeRof = true, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). ShotsInBurst = 0, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). FireFull = false, // 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. @@ -173,7 +173,9 @@ partial class Parts }, }, Ammos = new[] { - Flechette_Buckshot, Flechette_Smart,// Must list all primary, shrapnel, and pattern ammos. + Flechette_ProximityFuse, + Flechette_Scattershot, + Flechette_Smart,// Must list all primary, shrapnel, and pattern ammos. }, Animations = FlakAnimation, //Upgrades = UpgradeModules, diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Animation.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Animation.cs index ad5a8db4e..4ff1875c5 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Animation.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Animation.cs @@ -1,237 +1,237 @@ -using System.Collections.Generic; -using static Scripts.Structure.WeaponDefinition; -using static Scripts.Structure.WeaponDefinition.AnimationDef; -using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef.EventTriggers; -using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove.MoveType; -using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove; -namespace Scripts -{ // Don't edit above this line - partial class Parts - { - private AnimationDef FieldAnimation => new AnimationDef - { - - - //Emissives = new [] - //{ - // - // Emissive( - // EmissiveName: "TurnOn", - // Colors: new [] - // { - // Color(red:0, green: 0, blue:0, alpha: 1),//will transitions form one color to the next if more than one - // Color(red:0, green: .051f, blue:.051f, alpha: .05f), - // - // }, - // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value - // IntensityTo:1, - // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value - // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts - // EmissivePartNames: new [] - // { - // "EmissiveSpectrumAtlas" - // }), - // - // Emissive( - // EmissiveName: "TurnOff", - // Colors: new [] - // { - // Color(red:0, green: .051f, blue:.051f, alpha: .05f),//will transitions form one color to the next if more than one - // Color(red:0, green: 0, blue: 0, alpha: 1),//will transitions form one color to the next if more than one - - - // }, - // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value - // IntensityTo:0, - // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value - // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts - // EmissivePartNames: new [] - // { - // "Emissive3" - // }), - - - - - // Emissive( - // EmissiveName: "PowerUp", - // Colors: new [] - // { - // Color(red:0, green: .051f, blue:.051f, alpha: .05f),//will transitions form one color to the next if more than one - // Color(red:0, green: 1, blue:1, alpha: 1), - - // }, - // IntensityFrom:0, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value - // IntensityTo:1, - // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value - // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts - // EmissivePartNames: new [] - // { - // "Emissive3" - // }), - // - // Emissive( - // EmissiveName: "ShootPulse", - // Colors: new [] - // { - // - // - // Color(red:0, green: 250, blue: 250, alpha: 1), - // - // }, - // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value - // IntensityTo:1, - // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value - // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts - // EmissivePartNames: new [] - // { - // "EmissiveSpectrumAtlas.003" - // }), - // Emissive( - // EmissiveName: "PowerDown", - // Colors: new [] - // { - // - // Color(red:0, green: 250, blue:250, alpha: 1), - // Color(red:0, green: .051f, blue:.051f, alpha: .05f), - // - // }, - // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value - // IntensityTo:1, - // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value - // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts - // EmissivePartNames: new [] - // { - // "Emissive3" - // }), - // - //}, - - EventParticles = new Dictionary - { - [Firing] = new[]{ //This particle fires in the Prefire state, during the 10 second windup the gauss cannon has. - //Valid options include Firing, Reloading, Overheated, Tracking, On, Off, BurstReload, OutOfAmmo, PreFire. - new EventParticle - { - EmptyNames = Names("eject"), //If you want an effect on your own dummy - MuzzleNames = Names(""), //If you want an effect on the muzzle - StartDelay = 0, //ticks 60 = 1 second, delay until particle starts. - LoopDelay = 0, //ticks 60 = 1 second - ForceStop = true, - Particle = new ParticleDef - { - Name = "FieldShield", //Particle subtypeID - Color = Color(red: 25, green: 25, blue: 25, alpha: 1), //This is redundant as recolouring is no longer supported. - Extras = new ParticleOptionDef //do your particle colours in your particle file instead. - { - Loop = false, //Should match your particle definition. - Restart = false, - //Scale = 1, //How chunky the particle is. - // MaxDistance = 10000, - //MaxDuration = 1, - } - } - }, - }, - }, - - AnimationSets = new[] - { - #region Muzzles Animations - new PartAnimationSetDef() - { - SubpartId = Names("rotary"), - BarrelId = "Any", //only used for firing, use "Any" for all muzzles - StartupFireDelay = 0, - AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts - Reverse = Events(), - Loop = Events(), - EventMoveSets = new Dictionary - { - // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init - - [Firing] = - new[] - { - - new RelMove - { - CenterEmpty = "", - TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 5), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 9), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 18), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 36), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 72), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 250, //number of ticks to complete motion, 60 = 1 second - MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 1800), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - - new RelMove - { - CenterEmpty = "", - TicksToMove = 100, //number of ticks to complete motion, 60 = 1 second - MovementType = ExpoDecay, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade - LinearPoints = new XYZ[0], - Rotation = Transformation(0, 0, 180), //degrees - RotAroundCenter = Transformation(0, 0, 0), //degrees - }, - }, - - } - }, - - #endregion - - - } - }; - } -} +using System.Collections.Generic; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AnimationDef; +using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef.EventTriggers; +using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove.MoveType; +using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove; +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AnimationDef FieldAnimation => new AnimationDef + { + + + //Emissives = new [] + //{ + // + // Emissive( + // EmissiveName: "TurnOn", + // Colors: new [] + // { + // Color(red:0, green: 0, blue:0, alpha: 1),//will transitions form one color to the next if more than one + // Color(red:0, green: .051f, blue:.051f, alpha: .05f), + // + // }, + // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value + // IntensityTo:1, + // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value + // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts + // EmissivePartNames: new [] + // { + // "EmissiveSpectrumAtlas" + // }), + // + // Emissive( + // EmissiveName: "TurnOff", + // Colors: new [] + // { + // Color(red:0, green: .051f, blue:.051f, alpha: .05f),//will transitions form one color to the next if more than one + // Color(red:0, green: 0, blue: 0, alpha: 1),//will transitions form one color to the next if more than one + + + // }, + // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value + // IntensityTo:0, + // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value + // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts + // EmissivePartNames: new [] + // { + // "Emissive3" + // }), + + + + + // Emissive( + // EmissiveName: "PowerUp", + // Colors: new [] + // { + // Color(red:0, green: .051f, blue:.051f, alpha: .05f),//will transitions form one color to the next if more than one + // Color(red:0, green: 1, blue:1, alpha: 1), + + // }, + // IntensityFrom:0, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value + // IntensityTo:1, + // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value + // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts + // EmissivePartNames: new [] + // { + // "Emissive3" + // }), + // + // Emissive( + // EmissiveName: "ShootPulse", + // Colors: new [] + // { + // + // + // Color(red:0, green: 250, blue: 250, alpha: 1), + // + // }, + // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value + // IntensityTo:1, + // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value + // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts + // EmissivePartNames: new [] + // { + // "EmissiveSpectrumAtlas.003" + // }), + // Emissive( + // EmissiveName: "PowerDown", + // Colors: new [] + // { + // + // Color(red:0, green: 250, blue:250, alpha: 1), + // Color(red:0, green: .051f, blue:.051f, alpha: .05f), + // + // }, + // IntensityFrom:1, //starting intensity, can be 0.0-1.0 or 1.0-0.0, setting both from and to, to the same value will stay at that value + // IntensityTo:1, + // CycleEmissiveParts: false,//whether to cycle from one part to the next, while also following the Intensity Range, or set all parts at the same time to the same value + // LeavePreviousOn: true,//true will leave last part at the last setting until end of animation, used with cycleEmissiveParts + // EmissivePartNames: new [] + // { + // "Emissive3" + // }), + // + //}, + + EventParticles = new Dictionary + { + [Firing] = new[]{ //This particle fires in the Prefire state, during the 10 second windup the gauss cannon has. + //Valid options include Firing, Reloading, Overheated, Tracking, On, Off, BurstReload, OutOfAmmo, PreFire. + new EventParticle + { + EmptyNames = Names("eject"), //If you want an effect on your own dummy + MuzzleNames = Names(""), //If you want an effect on the muzzle + StartDelay = 0, //ticks 60 = 1 second, delay until particle starts. + LoopDelay = 0, //ticks 60 = 1 second + ForceStop = true, + Particle = new ParticleDef + { + Name = "FieldShield", //Particle subtypeID + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), //This is redundant as recolouring is no longer supported. + Extras = new ParticleOptionDef //do your particle colours in your particle file instead. + { + Loop = false, //Should match your particle definition. + Restart = false, + //Scale = 1, //How chunky the particle is. + // MaxDistance = 10000, + //MaxDuration = 1, + } + } + }, + }, + }, + + AnimationSets = new[] + { + #region Muzzles Animations + new PartAnimationSetDef() + { + SubpartId = Names("rotary"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 0, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + + [Firing] = + new[] + { + + new RelMove + { + CenterEmpty = "", + TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 5), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 9), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 18), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 36), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 10, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 72), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 250, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 1800), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + new RelMove + { + CenterEmpty = "", + TicksToMove = 100, //number of ticks to complete motion, 60 = 1 second + MovementType = ExpoDecay, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 0, 180), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + }, + + } + }, + + #endregion + + + } + }; + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Generator.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Generator.cs index be3b08c1c..9844f18b2 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Generator.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Goncol_Generator.cs @@ -1,182 +1,182 @@ -using static Scripts.Structure; -using static Scripts.Structure.WeaponDefinition; -using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; -using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; -using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; - -namespace Scripts -{ - partial class Parts - { - // Don't edit above this line - WeaponDefinition Goncol_MagnaPulse => new WeaponDefinition - { - Assignments = new ModelAssignmentsDef - { - MountPoints = new[] { - new MountPointDef { - SubtypeId = "MagnaPulse_Gen", // Block Subtypeid. Your Cubeblocks contain this information - SpinPartId = "", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. - MuzzlePartId = "elevation", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. - AzimuthPartId = "azimuth", // Your Rotating Subpart, the bit that moves sideways. - ElevationPartId = "elevation",// Your Elevating Subpart, that bit that moves up. - DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. - IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. - }, - - }, - Muzzles = new[] { - "muzzle" // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A - }, - Ejector = "", // Optional; empty from which to eject "shells" if specified. - //Scope = "muzzle_01", // Where line of sight checks are performed from. Must be clear of block collision. - }, - Targeting = new TargetingDef - { - Threats = new[] { - Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals - }, - SubSystems = new[] { - Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any - }, - ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). - IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. - 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 = 0, // 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. - StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. - }, - HardPoint = new HardPointDef - { - PartName = "MagnaPulse Generator", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. - AimingTolerance = 10f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Off, // 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. - CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. - - Ui = new UiDef - { - RateOfFire = false, // Enables terminal slider for changing rate of fire. - DamageModifier = false, // Enables terminal slider for changing damage per shot. - ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. - EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. - }, - Ai = new AiDef - { - TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. - TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. - TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. - PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. - LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. - SuppressFire = false, // If enabled, weapon can only be fired manually. - OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. - }, - HardWare = new HardwareDef - { - RotateRate = 100f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). - ElevateRate = 100f, // Max traversal speed of elevation subpart in radians per tick. - MinAzimuth = -20, - MaxAzimuth = 20, - MinElevation = -20, - MaxElevation = 20, - HomeAzimuth = 0, // Default resting rotation angle - HomeElevation = 0, // Default resting elevation - InventorySize = 1f, // Inventory capacity in kL. - IdlePower = 80f, // 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 - CriticalReaction = new CriticalDef - { - Enable = false, // Enables Warhead behaviour. - DefaultArmedTimer = 120, // Sets default countdown duration. - PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. - TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. - AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. - }, - }, - Other = new OtherDef - { - ConstructPartCap = 0, // 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 = true, // Whether the weapon should check LOS from each individual muzzle in addition to the scope. - Debug = false, // Force enables debug mode. - RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. - CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. - CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. - }, - Loading = new LoadingDef - { - RateOfFire = 360, // Set this to 3600 for beam weapons. This is how fast your Gun fires. 60 = once per second - 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 = 1440, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MagsToLoad = 0, // 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 = 8, // Heat generated per shot. - MaxHeat = 100, // Max heat before weapon enters cooldown (70% of max heat). - Cooldown = 1f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 - HeatSinkRate = 25, // Amount of heat lost per second. - DegradeRof = true, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). - ShotsInBurst = 10, // 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 = 60, // 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. - 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). - SpinFree = true, // Spin barrel while not firing - StayCharged = false, // Will start recharging whenever power cap is not full. - MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) - MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon - }, - Audio = new HardPointAudioDef - { - PreFiringSound = "", // Audio for warmup effect. - FiringSound = "shieldthing_firesound", // Audio for firing. - FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. - ReloadSound = "MaxMemeReload", // Sound SubtypeID, for when your Weapon is in a reloading state - NoAmmoSound = "", - HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. - BarrelRotationSound = "WepShipGatlingRotation", - FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). - FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. - }, - Graphics = new HardPointParticleDef - { - Effect1 = new ParticleDef - { - Name = "FieldShield", // SubtypeId of muzzle particle effect. - Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. - Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. - Extras = new ParticleOptionDef - { - Loop = true, // Set this to the same as in the particle sbc! - Restart = true, // Whether to end a looping effect instantly when firing stops. - //MaxDistance = 10000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! - //MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running. - //Scale = 1f, // Scale of effect. - }, - }, - }, - }, - Ammos = new[] { - FieldDefault, // Must list all primary, shrapnel, and pattern ammos. - }, - Animations = FieldAnimation, - //Upgrades = UpgradeModules, - }; - // Don't edit below this line. - } -} +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts +{ + partial class Parts + { + // Don't edit above this line + WeaponDefinition Goncol_MagnaPulse => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "MagnaPulse_Gen", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "elevation", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "azimuth", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "elevation",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle" // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + //Scope = "muzzle_01", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. + 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 = 0, // 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. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "MagnaPulse Generator", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. + AimingTolerance = 10f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // 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. + CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 100f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 100f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -20, + MaxAzimuth = 20, + MinElevation = -20, + MaxElevation = 20, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 80f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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 = true, // Whether the weapon should check LOS from each individual muzzle in addition to the scope. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 360, // Set this to 3600 for beam weapons. This is how fast your Gun fires. 60 = once per second + 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 = 1440, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 0, // 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 = 8, // Heat generated per shot. + MaxHeat = 100, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = 1f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 25, // Amount of heat lost per second. + DegradeRof = true, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 10, // 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 = 60, // 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. + 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). + SpinFree = true, // Spin barrel while not firing + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "shieldthing_firesound", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "MaxMemeReload", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "FieldShield", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + Extras = new ParticleOptionDef + { + Loop = true, // Set this to the same as in the particle sbc! + Restart = true, // Whether to end a looping effect instantly when firing stops. + //MaxDistance = 10000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + //MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running. + //Scale = 1f, // Scale of effect. + }, + }, + }, + }, + Ammos = new[] { + FieldDefault, // Must list all primary, shrapnel, and pattern ammos. + }, + Animations = FieldAnimation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBaySentry.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBaySentry.cs index 6ff446304..0612c6a2b 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBaySentry.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBaySentry.cs @@ -37,7 +37,7 @@ partial class Parts Targeting = new TargetingDef { Threats = new[] { - Grids, Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + Grids,// Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any @@ -47,38 +47,47 @@ 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 = 15000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MaxTargetDistance = 20000, // 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 = 0, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 0, // Maximum number of blocks to randomize between; 0 = unlimited. StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + + + + + }, HardPoint = new HardPointDef { PartName = "Sentry Hangar Bay", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. - AimingTolerance = 1f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + DeviateShotAngle = 25f, // Projectile inaccuracy in degrees. + AimingTolerance = 180f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. AimLeadingPrediction = Off, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 120, // 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 only track to the edge of the AimingTolerance cone instead of dead centre. + AddToleranceToTracking = true, // Allows turret to only track to the edge of the AimingTolerance cone instead of dead centre. CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. Ui = new UiDef { RateOfFire = false, // Enables terminal slider for changing rate of fire. DamageModifier = false, // Enables terminal slider for changing damage per shot. - ToggleGuidance = true, // Enables terminal option to disable smart projectile guidance. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + AlternateUi = false, // This simplifies and customizes the block controls for alternative weapon purposes, + DisableStatus = false, // Do not display weapon status NoTarget, Reloading, NoAmmo, etc.. }, Ai = new AiDef { - TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. - TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. - TurretController = false, // Whether this weapon can physically control the turret's movement. - PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. - LockOnFocus = false, // Whether this weapon should automatically fire at a target that has been locked onto via HUD. + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. SuppressFire = false, // If enabled, weapon can only be fired manually. OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + DefaultLeadGroup = 0, // Default LeadGroup setting, range 0-5, 0 is disables lead group. Only useful for fixed weapons or weapons set to OverrideLeads. + TargetGridCenter = false, // Does not target blocks, instead it targets grid center. }, HardWare = new HardwareDef { @@ -101,7 +110,7 @@ partial class Parts DefaultArmedTimer = 120, // Sets default countdown duration. PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. - AmmoRound = "40m", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. }, }, Other = new OtherDef @@ -117,12 +126,12 @@ partial class Parts }, Loading = new LoadingDef { - RateOfFire = 3600, // Set this to 3600 for beam weapons. + RateOfFire = 36, // Set this to 3600 for beam weapons. 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 = 720, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MagsToLoad = 3, // Number of physical magazines to consume on reload. + ReloadTime = 7200, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // Number of physical magazines to consume on reload. DelayUntilFire = 120, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). HeatPerShot = 0, // Heat generated per shot. MaxHeat = 1000, // Max heat before weapon enters cooldown (70% of max heat). @@ -184,19 +193,23 @@ partial class Parts }, }, Ammos = new[] { - //Dragonyos, - // AryxATLASAmmoDrone, - Fegyver, - Agyu, - Orszem, - //ConcussionMissile, - LightArtillery, + FegyverLauncher, //Goes drunkenly for a kilometer, then next stage is sentry mode to stay still + FegyverSentry, //Sentry mode, is the parent stage for the weapon fragments + LightArtillery, //Main weapon, does the actual damage, only fires when it can + + AgyuLauncher, + AgyuSentry, HeavyArtillery, - PointDefenseBullet - //ReturnToSender + + + OrszemLauncher, + OrszemSentry, + PointDroneShot, + }, - //Animations = AryxSmallHangarAnimations, + //Animations = ArcAnimation,// + //Animations = HexcannonAnimation, //Upgrades = UpgradeModules, }; diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBayTester.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBayTester.cs new file mode 100644 index 000000000..c35838adc --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HangarBayTester.cs @@ -0,0 +1,227 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts +{ + partial class Parts + { + + WeaponDefinition Test_Hangar => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "WCTest_Hangar", + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. + MuzzlePartId = "None", // The subpart where your muzzle empties are located. + AzimuthPartId = "None", + ElevationPartId = "None", + DurabilityMod = 0.2f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + }, + Muzzles = new[] { + "muzzle_missile_1" + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids,// Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. + 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 = 15000, // 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 = 0, // Maximum number of targets to randomize between; 0 = unlimited. + TopBlocks = 0, // Maximum number of blocks to randomize between; 0 = unlimited. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + + + + + + }, + HardPoint = new HardPointDef + { + PartName = "Tester Hangar Bay", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 25f, // Projectile inaccuracy in degrees. + AimingTolerance = 180f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // Level of turret aim prediction; Off, Basic, Accurate, Advanced + DelayCeaseFire = 120, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released. + AddToleranceToTracking = true, // Allows turret to only track to the edge of the AimingTolerance cone instead of dead centre. + CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + AlternateUi = false, // This simplifies and customizes the block controls for alternative weapon purposes, + DisableStatus = false, // Do not display weapon status NoTarget, Reloading, NoAmmo, etc.. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + DefaultLeadGroup = 0, // Default LeadGroup setting, range 0-5, 0 is disables lead group. Only useful for fixed weapons or weapons set to OverrideLeads. + TargetGridCenter = false, // Does not target blocks, instead it targets grid center. + }, + HardWare = new HardwareDef + { + RotateRate = 0f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = 0, + MaxAzimuth = 0, + MinElevation = 0, + MaxElevation = 0, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 0.5f, // Inventory capacity in kL. + IdlePower = 0.2f, // Power draw in MW while not charging, or for non-energy weapons. Defaults to 0.001. + 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "40m", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + Debug = true, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 360, // Set this to 3600 for beam weapons. + 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 = 720, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // Number of physical magazines to consume on reload. + DelayUntilFire = 120, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + HeatPerShot = 0, // Heat generated per shot. + MaxHeat = 1000, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .5f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 0, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 1, // Use this if you don't want the weapon to fire an entire physical magazine before stopping to reload. Should not be more than your magazine capacity. + DelayAfterBurst = 120, // 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 burst, even if the target is lost or player stops firing prematurely. + GiveUpAfter = false, // Whether the weapon should drop its current target and reacquire a new target after finishing its 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "DroneLaunch", // Audio for firing. + FiringSoundPerShot = false, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "", + NoAmmoSound = "", + HardPointRotationSound = "", // Audio played when turret is moving. + BarrelRotationSound = "", + FireSoundEndDelay = 120, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "", // SubtypeId of muzzle particle effect. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = true, // Deprecated, set this in particle sbc. + Restart = false, // Whether to end the previous effect early and spawn a new one. + MaxDistance = 250, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 1, // How many ticks the effect should be ended after, if it's still running. + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + + Extras = new ParticleOptionDef + { + Loop = true, // Deprecated, set this in particle sbc. + Restart = false, + MaxDistance = 250, + MaxDuration = 1, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + //Dragonyos, + // AryxATLASAmmoDrone, + Z95, + + //TesterLauncher, //Goes drunkenly for a kilometer, then next stage is sentry mode to stay still + // + // + // + //FegyverDummy, //transitional stage between Launcher and Sentry + //TesterSentry, //Sentry mode, is the parent stage for the weapon fragments + // + //LaserPainter, //Zero damage weapon that will follow any target continuously, might blink on and off + //MediumArtillery, //Main weapon, does the actual damage, only fires when it can + // + //FegyverReturn //Return stage that goes very fast back to hangar + + //Agyu, + //Orszem, + //ConcussionMissile, + + //HeavyArtillery, + //PointDefenseBullet + + + }, + //Animations = AryxSmallHangarAnimations, + //Animations = HexcannonAnimation, + //Upgrades = UpgradeModules, + }; + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs index ec37e53fd..8127e0e94 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC.cs @@ -1,4 +1,4 @@ -using static Scripts.Structure; +using static Scripts.Structure; using static Scripts.Structure.WeaponDefinition; using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; using static Scripts.Structure.WeaponDefinition.HardPointDef; @@ -25,7 +25,7 @@ partial class Parts { DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. }, - + }, Muzzles = new[] { "muzzle_coil_EXT", // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A @@ -47,7 +47,7 @@ partial class Parts { MinimumDiameter = 0, // Minimum radius of threat to engage. MaximumDiameter = 0, // Maximum radius ofE threat to engage; 0 = unlimited. MaxTargetDistance = 0, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. - MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. + MinTargetDistance = 1000, // 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. StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. @@ -55,11 +55,11 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "Hercules MAC", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0.1f, // Projectile inaccuracy in degrees. - AimingTolerance = 0f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. + AimingTolerance = 1.5f, // 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. + AddToleranceToTracking = true, // 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. Ui = new UiDef @@ -71,10 +71,10 @@ partial class Parts { }, Ai = new AiDef { - TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. - TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. - TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. - PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. SuppressFire = false, // If enabled, weapon can only be fired manually. OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. @@ -88,7 +88,7 @@ partial class Parts { MinElevation = 0, MaxElevation = 0, HomeAzimuth = 0, // Default resting rotation angle - HomeElevation = 15, // Default resting elevation + HomeElevation = 0, // Default resting elevation InventorySize = 1f, // Inventory capacity in kL. IdlePower = 0.25f, // Constant base power draw in MW. FixedOffset = false, // Deprecated. @@ -128,7 +128,7 @@ partial class Parts { Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 HeatSinkRate = 9000000, // Amount of heat lost per second. DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). - ShotsInBurst = 3, // 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. + ShotsInBurst = 0, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). FireFull = false, // 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. @@ -192,7 +192,7 @@ partial class Parts { SolHyp_HG_VFX3, // Must list all primary, shrapnel, and pattern ammos. }, - //Animations = Weapon75_Animation, + //Animations = FlakAnimation, //Upgrades = UpgradeModules, }; // Don't edit below this line. diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs index 50b87d998..21be6e736 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Heavy_MAC_Ammo.cs @@ -11,7 +11,6 @@ using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; - using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; @@ -27,11 +26,11 @@ using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; - using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; namespace Scripts { // Don't edit above this line + partial class Parts { private AmmoDef SolHyp_HeavyMAC_Ammo => new AmmoDef // Your ID, for slotting into the Weapon CS @@ -39,14 +38,12 @@ partial class Parts AmmoMagazine = "MACmag", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. AmmoRound = "Heavy MAC 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.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + EnergyCost = 0.0645f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 75000f, // Direct damage; one steel plate is worth 100. Mass = 10f, // In kilograms; how much force the impact will apply to the target. - Health = 40, // 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. + Health = 200, // 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 = 500000f, // 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) + DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. EnergyMagazineSize = 3, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. @@ -65,29 +62,29 @@ partial class Parts }, Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { - AmmoRound = "", // AmmoRound field of the ammo to spawn. - Fragments = 0, // Number of projectiles to spawn. - Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + AmmoRound = "SolHyp_HeavyMAC_Shrap", // AmmoRound field of the ammo to spawn. + Fragments = 10, // Number of projectiles to spawn. + Degrees = 4, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. - DropVelocity = false, // fragments will not inherit velocity from parent. + DropVelocity = true, // fragments will not inherit velocity from parent. Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { - Enable = false, // Enables TimedSpawns mechanism + Enable = true, // Enables TimedSpawns mechanism Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life MaxSpawns = 1, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + Proximity = 500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance ParentDies = true, // Parent dies once after it spawns its last child. - PointAtTarget = true, // Start fragment direction pointing at Target + PointAtTarget = false, // Start fragment direction pointing at Target PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) - DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees - GroupSize = 5, // Number of spawns in each group - GroupDelay = 120, // Delay between each group. + DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. }, }, Pattern = new PatternDef @@ -98,7 +95,7 @@ partial class Parts Mode = Weapon, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both TriggerChance = 1f, // This is % Random = false, // This randomizes the number spawned at once, NOT the list order. - RandomMin = 1, + RandomMin = 1, RandomMax = 1, SkipParent = false, // Skip the Ammo itself, in the list PatternSteps = 4, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. @@ -108,14 +105,14 @@ partial class Parts MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. - HealthHitModifier = 1.0f, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. - VoxelHitModifier = 0.1f, // Voxel damage multiplier; defaults to 1 if zero or less. - Characters = 0.2f, // Character damage multiplier; defaults to 1 if zero or less. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { Distance = 0f, // Distance at which damage begins falling off. - MinMultipler = 1.0f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef { @@ -169,7 +166,7 @@ partial class Parts Damage = 0f, Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value MaxAbsorb = 0f, // 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 + Falloff = Curve, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -196,8 +193,8 @@ partial class Parts MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. NoVisuals = false, NoSound = false, - ParticleScale = 1, - CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC + ParticleScale = 2, + CustomParticle = "Definitive_Explosion", // Particle SubtypeID, from your Particle SBC CustomSound = "", // SubtypeID from your Audio SBC, not a filename Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, @@ -265,33 +262,34 @@ partial class Parts }, Trajectory = new TrajectoryDef { - Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 80f, // Degrees, Is pointed forward + Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 2400, // 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 = 1800, // voxel phasing if you go above 5100 + DesiredSpeed = 2200, // voxel phasing if you go above 5100 MaxTrajectory = 10000f, // 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 = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. + GravityMultiplier = 25f, // 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: 200), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 0.3f, // controls how responsive tracking is. - MaxLateralThrust = 0.1, // controls how sharp the trajectile may turn + Aggressiveness = 0.01f, // controls how responsive tracking is. + MaxLateralThrust = 0.01f, // controls how sharp the trajectile may turn TrackingDelay = 0, // Measured in Shape diameter units traveled. MaxChaseTime = 0, // 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. + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. CheckFutureIntersection = false, // Utilize obstacle avoidance? MaxTargets = 0, // 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 = 0.05f, // The ratio to offset the random direction (0 to 1) - OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + 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..) + NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) }, Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { @@ -308,14 +306,14 @@ partial class Parts VisualProbability = 1f, // % ShieldHitDraw = false, Particles = new AmmoParticleDef - { + { Ammo = new ParticleDef { Name = "", //ShipWelderArc Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Scale = 1f, + Scale = 1, }, }, Hit = new ParticleDef @@ -325,7 +323,7 @@ partial class Parts Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Scale = 1f, + Scale = 1, HitPlayChance = 1f, }, }, @@ -343,8 +341,8 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0.5f, end: 1f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 0.1f), // adds random value to default width (negatives shrinks width) + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { Enable = true, @@ -390,7 +388,7 @@ partial class Parts }, OffsetEffect = new OffsetEffectDef { - MaxOffset = 0f,// 0 offset value disables this effect + MaxOffset = 0,// 0 offset value disables this effect MinLength = 1f, MaxLength = 5f, }, @@ -412,7 +410,7 @@ partial class Parts { Type = Particle, // Particle or Item (Inventory Component) Speed = 100f, // Speed inventory is ejected from in dummy direction - SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + SpawnChance = 0f, // chance of triggering effect (0 - 1) CompDef = new ComponentDef { ItemName = "", //InventoryComponent name @@ -420,22 +418,20 @@ partial class Parts Delay = 0, // delay in ticks after shot before ejected } }, // Don't edit below this line - }; - + }; + - private AmmoDef SolHyp_HeavyMAC_Ammo_Shrap => new AmmoDef // Your ID, for slotting into the Weapon CS + private AmmoDef SolHyp_HeavyMAC_Ammo_Shrap => new AmmoDef // Your ID, for slotting into the Weapon CS { AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. AmmoRound = "SolHyp_HeavyMAC_Shrap", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. HybridRound = false, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.01f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 16500, // Direct damage; one steel plate is worth 100. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 10050f, // Direct damage; one steel plate is worth 100. Mass = 10f, // In kilograms; how much force the impact will apply to the target. - Health = 40, // 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. + 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. - 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) + DecayPerShot = 0f, // Damage to the firing weapon itself. HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. EnergyMagazineSize = 0, // For energy weapons, how many shots to fire before reloading. IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. @@ -455,28 +451,28 @@ partial class Parts Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { AmmoRound = "", // AmmoRound field of the ammo to spawn. - Fragments = 0, // Number of projectiles to spawn. - Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Fragments = 36, // Number of projectiles to spawn. + Degrees = 4, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. - DropVelocity = false, // fragments will not inherit velocity from parent. + DropVelocity = true, // fragments will not inherit velocity from parent. Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below { Enable = false, // Enables TimedSpawns mechanism Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 0, // Max number of fragment children to spawn - Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = false, // Parent dies once after it spawns its last child. - PointAtTarget = false, // Start fragment direction pointing at Target - PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) - DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees - GroupSize = 0, // Number of spawns in each group - GroupDelay = 0, // Delay between each group. + StartTime = 15, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 800, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 8f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. }, }, Pattern = new PatternDef @@ -484,7 +480,7 @@ partial class Parts Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. "", }, - Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + Mode = Never, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both TriggerChance = 1f, // This is % Random = false, // This randomizes the number spawned at once, NOT the list order. RandomMin = 1, @@ -497,13 +493,13 @@ partial class Parts MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. DamageVoxels = false, // Whether to damage voxels. SelfDamage = false, // Whether to damage the weapon's own grid. - HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + HealthHitModifier = 1, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. - Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + Characters = 1f, // Character damage multiplier; defaults to 1 if zero or less. // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 10f, // Distance at which damage begins falling off. + Distance = 0f, // 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. }, Grids = new GridSizeDef @@ -515,14 +511,14 @@ partial class Parts { Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). Light = -1f, // Multiplier for damage against light armor. - Heavy = -1f, // Multiplier for damage against heavy armor. - NonArmor = -1f, // Multiplier for damage against every else. + Heavy = 0.8f, // Multiplier for damage against heavy armor. + NonArmor = 0.6f, // Multiplier for damage against every else. }, Shields = new ShieldDef { Modifier = 2f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal - BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + BypassModifier = 0f, // If greater than zero, the percentage of damage that will penetrate the shield. }, DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy { @@ -558,7 +554,7 @@ partial class Parts Damage = 0f, Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value MaxAbsorb = 0f, // 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 + Falloff = Curve, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -570,11 +566,11 @@ partial class Parts EndOfLife = new EndOfLifeDef { Enable = false, - Radius = 0f, // Radius of AOE effect, in meters. - Damage = 0, - Depth = 0f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 500f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. - Falloff = Linear, //.NoFalloff applies the same damage to all blocks in radius + Falloff = NoFalloff, //.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 //.InvCurve drops off sharply from the middle and tapers to max radius @@ -585,9 +581,9 @@ partial class Parts MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. NoVisuals = false, NoSound = false, - ParticleScale = 1, - CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC - CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename + ParticleScale = 2, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. }, }, @@ -596,12 +592,12 @@ partial class Parts Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, Mode = Effect, // Effect , Field - Strength = 0, - Radius = 0f, // Meters - Duration = 0, // In Ticks - StackDuration = false, // Combined Durations - Depletable = false, - MaxStacks = 0, // Max Debuffs at once + Strength = 100f, + Radius = 5f, // 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 @@ -657,30 +653,31 @@ partial class Parts Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - 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. + MaxLifeTime = 280, // 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 = 350, // voxel phasing if you go above 5100 - MaxTrajectory = 15, // Max Distance the projectile or beam can Travel. + DesiredSpeed = 1600, // voxel phasing if you go above 5100 + MaxTrajectory = 1150f, // 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: 200), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. Smarts = new SmartsDef { Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. - Aggressiveness = 0.3f, // controls how responsive tracking is. - MaxLateralThrust = 0.05, // controls how sharp the trajectile may turn - TrackingDelay = 10, // Measured in Shape diameter units traveled. + Aggressiveness = 1f, // controls how responsive tracking is. + MaxLateralThrust = 0.5, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. - CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + CheckFutureIntersection = false, // Utilize obstacle avoidance? MaxTargets = 0, // 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..) + OffsetRatio = 0.05f, // The ratio to offset the random direction (0 to 1) + OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + //NoSteering = true, // this disables target follow and instead travel straight ahead (but will respect offsets) }, Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { @@ -711,10 +708,14 @@ partial class Parts { Name = "", ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Scale = 1, + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1.0f, HitPlayChance = 1f, }, }, @@ -732,18 +733,18 @@ partial class Parts }, Lines = new LineDef { - ColorVariance = Random(start: 0f, end: 0f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + ColorVariance = Random(start: 0.5f, end: 1f), // 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 = 15f, // - Width = 0.45f, // - Color = Color(red: 1, green: 10, blue: 30f, alpha: 0.1f), // RBG 255 is Neon Glowing, 100 is Quite Bright. - VisualFadeStart = 1, // Number of ticks the weapon has been firing before projectiles begin to fade their color - VisualFadeEnd = 60, // How many ticks after fade began before it will be invisible. + Length = 100f, // + Width = 0.2f, // + Color = Color(red: 0, green: 20, blue: 40f, alpha: 0.02f), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, // Normal, Cycle, Chaos, Wave Segmentation = new SegmentDef @@ -755,7 +756,7 @@ partial class Parts SegmentLength = 0f, // Uses the values below. SegmentGap = 0f, // Uses Tracer textures and values Speed = 1f, // meters per second - Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 0.1f), + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 0.02f), WidthMultiplier = 1f, Reverse = false, UseLineVariance = true, @@ -767,21 +768,21 @@ partial class Parts { Enable = true, Textures = new[] { - "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, - DecayTime = 60, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. - Color = Color(red: 25, green: 1, blue: 20f, alpha: 0.1f), + DecayTime = 30, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 2, blue: 1, alpha: 0.02f), Back = false, - CustomWidth = 0, + CustomWidth = 1f, UseWidthVariance = false, UseColorFade = true, }, OffsetEffect = new OffsetEffectDef { - MaxOffset = 0,// 0 offset value disables this effect - MinLength = 0.2f, - MaxLength = 4, + MaxOffset = 1f,// 0 offset value disables this effect + MinLength = 10f, + MaxLength = 20f, }, }, }, @@ -794,14 +795,14 @@ partial class Parts PlayerHitSound = "", VoxelHitSound = "", FloatingHitSound = "", - HitPlayChance = 0.5f, + HitPlayChance = 1f, HitPlayShield = true, }, Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection { Type = Particle, // Particle or Item (Inventory Component) Speed = 100f, // Speed inventory is ejected from in dummy direction - SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + SpawnChance = 0f, // chance of triggering effect (0 - 1) CompDef = new ComponentDef { ItemName = "", //InventoryComponent name @@ -811,7 +812,22 @@ partial class Parts }, // Don't edit below this line }; - + + + + + + + + + + + + + + + + private AmmoDef SolHyp_HG_VFX1 => new AmmoDef // Your ID, for slotting into the Weapon CS { AmmoMagazine = "", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. @@ -1042,11 +1058,11 @@ partial class Parts Trajectory = new TrajectoryDef { Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 80f, // Degrees, Is pointed forward + TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 2400, // 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 = 1800, // voxel phasing if you go above 5100 + DesiredSpeed = 2200, // voxel phasing if you go above 5100 MaxTrajectory = 10000f, // 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 = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. @@ -1432,11 +1448,11 @@ partial class Parts Trajectory = new TrajectoryDef { Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 80f, // Degrees, Is pointed forward + TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 2400, // 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 = 1800, // voxel phasing if you go above 5100 + DesiredSpeed = 2200, // voxel phasing if you go above 5100 MaxTrajectory = 10000f, // 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 = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. @@ -1822,11 +1838,11 @@ partial class Parts Trajectory = new TrajectoryDef { Guidance = None, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed - TargetLossDegree = 80f, // Degrees, Is pointed forward + TargetLossDegree = 0f, // Degrees, Is pointed forward TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 2400, // 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 = 1800, // voxel phasing if you go above 5100 + DesiredSpeed = 2200, // voxel phasing if you go above 5100 MaxTrajectory = 10000f, // 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 = 20f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. @@ -1984,3 +2000,4 @@ partial class Parts } } + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HexcannonAnimations.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HexcannonAnimations.cs new file mode 100644 index 000000000..145a865a8 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/HexcannonAnimations.cs @@ -0,0 +1,316 @@ +using System.Collections.Generic; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AnimationDef; +using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef.EventTriggers; +using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove.MoveType; +using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove; +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AnimationDef HexcannonAnimation => new AnimationDef + { + + EventParticles = new Dictionary + { + [PreFire] = new[]{ //This particle fires in the Prefire state, during the 2 second windup. + //Valid options include Firing, Reloading, Overheated, Tracking, On, Off, BurstReload, OutOfAmmo, PreFire. + new EventParticle + { + EmptyNames = Names("muzzle"), //If you want an effect on your own dummy + MuzzleNames = Names("muzzle"), //If you want an effect on the muzzle + StartDelay = 0, //ticks 60 = 1 second, delay until particle starts. + LoopDelay = 0, //ticks 60 = 1 second + ForceStop = false, + Particle = new ParticleDef + { + Name = "THESUNMUZZLE", //Particle subtypeID + Color = Color(red: 25, green: 25, blue: 25, alpha: 1), //This is redundant as recolouring is no longer supported. + Extras = new ParticleOptionDef //do your particle colours in your particle file instead. + { + Loop = false, //Should match your particle definition. + Restart = false, + MaxDistance = 6000, //meters + MaxDuration = 0, //ticks 60 = 1 second + Scale = 5, //How chunky the particle is. + } + } + }, + }, + }, + + AnimationSets = new[] + { + new PartAnimationSetDef() + { + SubpartId = Names("antEA"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + + new PartAnimationSetDef() + { + SubpartId = Names("antFA"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + + new PartAnimationSetDef() + { + SubpartId = Names("antAB"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + //Rotation = Transformation(-59f, -47f, -82f), //degrees + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + + new PartAnimationSetDef() + { + SubpartId = Names("antBB"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + //Rotation = Transformation(-59f, -47f, -82f), //degrees + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + + new PartAnimationSetDef() + { + SubpartId = Names("antCB"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + //Rotation = Transformation(-59f, -47f, -82f), //degrees + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + + new PartAnimationSetDef() + { + SubpartId = Names("antDB"), + BarrelId = "Any", //only used for firing, use "Any" for all muzzles + StartupFireDelay = 60, + AnimationDelays = Delays(FiringDelay : 0, ReloadingDelay: 0, OverheatedDelay: 0, TrackingDelay: 0, LockedDelay: 0, OnDelay: 0, OffDelay: 0, BurstReloadDelay: 0, OutOfAmmoDelay: 0, PreFireDelay: 0, StopFiringDelay: 0, StopTrackingDelay:0, InitDelay:0),//Delay before animation starts + Reverse = Events(), + Loop = Events(), + EventMoveSets = new Dictionary + { + // Reloading, Firing, Tracking, Overheated, TurnOn, TurnOff, BurstReload, NoMagsToLoad, PreFire, EmptyOnGameLoad, StopFiring, StopTracking, LockDelay, Init + [PreFire] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 50, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + //Rotation = Transformation(-59f, -47f, -82f), //degrees + Rotation = Transformation(0, -75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + [Firing] = + new[] + { + new RelMove + { + CenterEmpty = "", + TicksToMove = 7000, //number of ticks to complete motion, 60 = 1 second + MovementType = Linear, //Linear,ExpoDecay,ExpoGrowth,Delay,Show, //instant or fade Hide, //instant or fade + LinearPoints = new XYZ[0], + Rotation = Transformation(0, 75, 0), //degrees + RotAroundCenter = Transformation(0, 0, 0), //degrees + }, + + }, + + } + }, + } + }; + + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorch.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorch.cs index 111196bca..019e31cab 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorch.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorch.cs @@ -1,192 +1,192 @@ -using static Scripts.Structure; -using static Scripts.Structure.WeaponDefinition; -using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; -using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; -using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; - -namespace Scripts { - partial class Parts { - // Don't edit above this line - WeaponDefinition Gimballed_Impulse_Torch => new WeaponDefinition { - Assignments = new ModelAssignmentsDef { - MountPoints = new[] { - new MountPointDef { - SubtypeId = "Impulse_Torch", // Block Subtypeid. Your Cubeblocks contain this information - SpinPartId = "", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. - MuzzlePartId = "elevation", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. - AzimuthPartId = "azimuth", // Your Rotating Subpart, the bit that moves sideways. - ElevationPartId = "elevation",// Your Elevating Subpart, that bit that moves up. - DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. - IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. - }, - }, - Muzzles = new[] { - "muzzle_01" // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A - }, - Ejector = "", // Optional; empty from which to eject "shells" if specified. - //Scope = "muzzle_01", // Where line of sight checks are performed from. Must be clear of block collision. - }, - Targeting = new TargetingDef - { - Threats = new[] { - Grids, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals - }, - SubSystems = new[] { - Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any - }, - ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). - IgnoreDumbProjectiles = true, // Don't fire at non-smart projectiles. - 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 = 600, // 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. - StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. - }, - HardPoint = new HardPointDef - { - PartName = "Gimballed Impsule Torch", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 1f, // Projectile inaccuracy in degrees. - AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Off, // 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. - CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. - - Ui = new UiDef - { - RateOfFire = false, // Enables terminal slider for changing rate of fire. - DamageModifier = false, // Enables terminal slider for changing damage per shot. - ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. - EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. - }, - Ai = new AiDef - { - TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. - TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. - TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. - PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. - LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. - SuppressFire = false, // If enabled, weapon can only be fired manually. - OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. - }, - HardWare = new HardwareDef - { - RotateRate = 0.01f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). - ElevateRate = 0.01f, // Max traversal speed of elevation subpart in radians per tick. - MinAzimuth = -20, - MaxAzimuth = 20, - MinElevation = -15, - MaxElevation = 15, - HomeAzimuth = 0, // Default resting rotation angle - HomeElevation = 0, // Default resting elevation - InventorySize = 1f, // Inventory capacity in kL. - IdlePower = 0.25f, // 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 - CriticalReaction = new CriticalDef - { - Enable = false, // Enables Warhead behaviour. - DefaultArmedTimer = 120, // Sets default countdown duration. - PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. - TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. - AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. - }, - }, - Other = new OtherDef - { - ConstructPartCap = 0, // 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. - Debug = false, // Force enables debug mode. - RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. - CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. - CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. - }, - Loading = new LoadingDef - { - RateOfFire = 3600, // Set this to 3600 for beam weapons. This is how fast your Gun fires. - 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 = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MagsToLoad = 1, // Number of physical magazines to consume on reload. - DelayUntilFire = 20, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - HeatPerShot = 2, // Heat generated per shot. - MaxHeat = 1800, // Max heat before weapon enters cooldown (70% of max heat). - Cooldown = .90f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 - HeatSinkRate = 20, // Amount of heat lost per second. - DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). - ShotsInBurst = 0, // 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 = 120, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - FireFull = false, // 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). - SpinFree = true, // Spin barrel while not firing. - StayCharged = false, // Will start recharging whenever power cap is not full. - MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) - MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon - }, - Audio = new HardPointAudioDef - { - PreFiringSound = "", // Audio for warmup effect. - FiringSound = "MA_Afterburner_Large_Fug", // Audio for firing. - FiringSoundPerShot = false, // Whether to replay the sound for each shot, or just loop over the entire track while firing. - ReloadSound = "ArcBlockPiston", // Sound SubtypeID, for when your Weapon is in a reloading state - NoAmmoSound = "", - HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. - BarrelRotationSound = "WepShipGatlingRotation", - FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). - FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. - }, - Graphics = new HardPointParticleDef - { - Effect1 = new ParticleDef - { - Name = "AfterburnerExhaust_1x1", // SubtypeId of muzzle particle effect. - Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. - Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. - - Extras = new ParticleOptionDef - { - Loop = true, // Set this to the same as in the particle sbc! - Restart = false, // Whether to end a looping effect instantly when firing stops. - MaxDistance = 5000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! - MaxDuration = 5, // Deprecated. - Scale = 30f, // Scale of effect. - }, - }, - Effect2 = new ParticleDef - { - Name = "", - Color = Color(red: 1, green: 1, blue: 1, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), - - Extras = new ParticleOptionDef - { - Restart = false, - MaxDistance = 5000, - MaxDuration = 5, - Scale = 10f, - }, - }, - }, - }, - Ammos = new[] { - Impulse_Torch_Ammo, // Must list all primary, shrapnel, and pattern ammos. - }, - //Animations = Weapon75_Animation, - //Upgrades = UpgradeModules, - }; - // Don't edit below this line. - } -} +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Gimballed_Impulse_Torch => new WeaponDefinition { + Assignments = new ModelAssignmentsDef { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Impulse_Torch", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "elevation", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "azimuth", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "elevation",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + }, + Muzzles = new[] { + "muzzle_01" // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + //Scope = "muzzle_01", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = true, // Don't fire at non-smart projectiles. + 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 = 600, // 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. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "Gimballed Impsule Torch", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 1f, // Projectile inaccuracy in degrees. + AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // 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. + CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0.01f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.01f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -20, + MaxAzimuth = 20, + MinElevation = -15, + MaxElevation = 15, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 3600, // Set this to 3600 for beam weapons. This is how fast your Gun fires. + 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 = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // Number of physical magazines to consume on reload. + DelayUntilFire = 20, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + HeatPerShot = 2, // Heat generated per shot. + MaxHeat = 1800, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .90f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 20, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 0, // 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 = 120, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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). + SpinFree = true, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "MA_Afterburner_Large_Fug", // Audio for firing. + FiringSoundPerShot = false, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "ArcBlockPiston", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "AfterburnerExhaust_1x1", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = true, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 5000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 5, // Deprecated. + Scale = 30f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 5, + Scale = 10f, + }, + }, + }, + }, + Ammos = new[] { + Impulse_Torch_Ammo, // Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Weapon75_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorchAmmo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorchAmmo.cs index d0d4f20e5..f5ccc161f 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorchAmmo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ImpulseTorchAmmo.cs @@ -1,456 +1,456 @@ -using static Scripts.Structure.WeaponDefinition; -using static Scripts.Structure.WeaponDefinition.AmmoDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; -using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; -using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; -using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; -using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; -using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; -using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; -using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; -using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; -using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; -using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; - -namespace Scripts -{ // Don't edit above this line - partial class Parts - { - private AmmoDef Impulse_Torch_Ammo => new AmmoDef - { - AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. - AmmoRound = "Impulse_Torch_Ammo", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. - HybridRound = false, // Use both a physical ammo magazine and energy per shot. - EnergyCost = 0.45f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 400f, // Direct damage; one steel plate is worth 100. - Mass = 0, // 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 = 2000000f, // Recoil. - DecayPerShot = 0f, // Damage to the firing weapon itself. - HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. - EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. - HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. - - Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. - { - Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. - Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. - }, - ObjectsHit = new ObjectsHitDef - { - MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. - CountBlocks = false, // Counts individual blocks, not just entities hit. - }, - Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). - { - AmmoRound = "", // AmmoRound field of the ammo to spawn. - Fragments = 1, // Number of projectiles to spawn. - Degrees = 0, // Cone in which to randomize direction of spawned projectiles. - Reverse = false, // Spawn projectiles backward instead of forward. - DropVelocity = false, // fragments will not inherit velocity from parent. - Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. - Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path - MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited - IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions - ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. - AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. - TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active - { - Enable = false, // Enables TimedSpawns mechanism - Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other - StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life - MaxSpawns = 1, // Max number of fragment children to spawn - Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance - ParentDies = true, // Parent dies once after it spawns its last child. - PointAtTarget = true, // Start fragment direction pointing at Target - PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) - DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees - GroupSize = 5, // Number of spawns in each group - GroupDelay = 120, // Delay between each group. - }, - }, - Pattern = new PatternDef - { - Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. - "", - }, - Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both - TriggerChance = 1f, // This is % - Random = false, // This randomizes the number spawned at once, NOT the list order. - RandomMin = 1, - RandomMax = 1, - SkipParent = false, // Skip the Ammo itself, in the list - PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. - }, - DamageScales = new DamageScaleDef - { - MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. - DamageVoxels = false, // Whether to damage voxels. - SelfDamage = true, // Whether to damage the weapon's own grid. - HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. - VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. - Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. - // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. - FallOff = new FallOffDef - { - Distance = 20f, // Distance at which damage begins falling off. - MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. - }, - Grids = new GridSizeDef - { - Large = -1f, // Multiplier for damage against large grids. - Small = -1f, // Multiplier for damage against small grids. - }, - Armor = new ArmorDef - { - Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). - Light = -1f, // Multiplier for damage against light armor. - Heavy = -1f, // Multiplier for damage against heavy armor. - NonArmor = -1f, // Multiplier for damage against every else. - }, - Shields = new ShieldDef - { - Modifier = 0.001f, // Multiplier for damage against shields. - Type = Default, // Damage vs healing against shields; Default, Heal - BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. - }, - DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy - { - Base = Energy, - AreaEffect = Energy, // Kinetic , Energy, are your Options. - Detonation = Energy, - Shield = Energy, // Damage against shields is currently all of one type per projectile. - }, - Custom = new CustomScalesDef - { - IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. - Types = new[] // List of blocks to apply custom damage multipliers to. - { - new CustomBlocksDef - { - SubTypeId = "Test1", - Modifier = -1f, - }, - new CustomBlocksDef - { - SubTypeId = "Test2", - Modifier = -1f, - }, - }, - }, - }, - AreaOfDamage = new AreaOfDamageDef - { - ByBlockHit = new ByBlockHitDef - { - Enable = false, - Radius = 1f, // Meters - Damage = 1f, - Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 0f, // 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 - //.InvCurve drops off sharply from the middle and tapers to max radius - //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius - //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - //.Exponential drops off exponentially. Does not scale to max radius - Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. - }, - EndOfLife = new EndOfLifeDef - { - Enable = false, - Radius = 1f, // Radius of AOE effect, in meters. - Damage = 1f, - Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. - Falloff = NoFalloff, //.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 - //.InvCurve drops off sharply from the middle and tapers to max radius - //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius - //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. - //.Exponential drops off exponentially. Does not scale to max radius - ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. - MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. - NoVisuals = true, - NoSound = true, - ParticleScale = 1, - CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC - CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename - Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. - }, - }, - Ewar = new EwarDef - { - Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! - Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, - Mode = Effect, // Effect , Field - Strength = 100f, - Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters - - */ - 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), starts at 0 (59 == tick 60). - 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 default bubble, or other model if specified. - ShowParticle = true, // Show Block damage effect. - 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 = true, // Enable beam behaviour. - 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, - TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - AccelPerSec = 0f, - DesiredSpeed = 0, // voxel phasing if you go above 5100 - MaxTrajectory = 50f, - DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) - GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. - SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed - RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory - MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. - Smarts = new SmartsDef - { - Inaccuracy = 0f, // 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. Cap is 1, and this is % of your Accel. - TrackingDelay = 5, // Measured in Shape diameter units traveled. - MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. - 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 - { - DetectRadius = 0, - DeCloakRadius = 0, - FieldTime = 0, - Cloak = false, - Persist = false, - }, - }, - - - - - - - - - - - - - - AmmoGraphics = new GraphicDef - { - ModelName = "", - VisualProbability = 1f, - ShieldHitDraw = false, - Particles = new AmmoParticleDef - { - Ammo = new ParticleDef - { - Name = "", //ShipWelderArc - //ShrinkByDistance = false, - Color = Color(red: 128, green: 0, blue: 0, alpha: 32), - Offset = Vector(x: 0, y: 0, z: 0), - Extras = new ParticleOptionDef - { - Restart = false, - MaxDistance = 5000, - MaxDuration = 0, - Scale = 1, - }, - }, - Hit = new ParticleDef - { - Name = "", - ApplyToShield = true, - //ShrinkByDistance = false, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), - Extras = new ParticleOptionDef - { - Restart = false, - MaxDistance = 5000, - MaxDuration = 0, - Scale = 1, - HitPlayChance = 1f, - }, - }, - Eject = new ParticleDef - { - Name = "", - ApplyToShield = true, - //ShrinkByDistance = false, - Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), - Extras = new ParticleOptionDef - { - Restart = false, - MaxDistance = 5000, - MaxDuration = 30, - Scale = 1, - HitPlayChance = 1f, - }, - }, - }, - Lines = new LineDef - { - ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. - WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) - Tracer = new TracerBaseDef - { - Enable = false, - Length = 5f, - Width = 0.45f, - Color = Color(red: 0, green: 12, blue: 21f, alpha: 1), - VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color - VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. - Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. - "WeaponLaser", - }, - TextureMode = Normal, // Normal, Cycle, Chaos, Wave - Segmentation = new SegmentDef - { - Enable = false, // If true Tracer TextureMode is ignored - Textures = new[] { - "", - }, - SegmentLength = 0f, // Uses the values below. - SegmentGap = 0f, // Uses Tracer textures and values - Speed = 1f, // meters per second - Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), - WidthMultiplier = 1f, - Reverse = false, - UseLineVariance = true, - WidthVariance = Random(start: 0f, end: 0f), - ColorVariance = Random(start: 0f, end: 0f) - } - }, - Trail = new TrailDef - { - Enable = false, - Textures = new[] { - "WeaponLaser", - }, - TextureMode = Normal, - DecayTime = 100, - Color = Color(red: 0, green: 8, blue: 9f, alpha: 1), - Back = false, - CustomWidth = 0.2f, - UseWidthVariance = false, - UseColorFade = true, - }, - OffsetEffect = new OffsetEffectDef - { - MaxOffset = 0,// 0 offset value disables this effect - MinLength = 0.2f, - MaxLength = 3, - }, - }, - }, - AmmoAudio = new AmmoAudioDef - { - TravelSound = "", - HitSound = "", - ShotSound = "", - ShieldHitSound = "", - PlayerHitSound = "", - VoxelHitSound = "", - FloatingHitSound = "", - HitPlayChance = 0.5f, - HitPlayShield = true, - }, - Ejection = new EjectionDef - { - Type = Particle, // Particle or Item (Inventory Component) - Speed = 100f, // Speed inventory is ejected from in dummy direction - SpawnChance = 0.5f, // chance of triggering effect (0 - 1) - CompDef = new ComponentDef - { - ItemName = "", //InventoryComponent name - ItemLifeTime = 0, // how long item should exist in world - Delay = 0, // delay in ticks after shot before ejected - } - }, // Don't edit below this line - }; - - - } -} +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Impulse_Torch_Ammo => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Impulse_Torch_Ammo", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.45f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 400f, // Direct damage; one steel plate is worth 100. + Mass = 0, // 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 = 2000000f, // Recoil. + DecayPerShot = 0f, // Damage to the firing weapon itself. + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = true, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 20f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 0.001f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, + AreaEffect = Energy, // Kinetic , Energy, are your Options. + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. + }, + Custom = new CustomScalesDef + { + IgnoreAllOthers = false, // Pass through all blocks not listed below without damaging them. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 1f, // Meters + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + Falloff = NoFalloff, //.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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = true, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = true, + NoSound = true, + ParticleScale = 1, + CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC + CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = true, // Enable beam behaviour. + 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, + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + AccelPerSec = 0f, + DesiredSpeed = 0, // voxel phasing if you go above 5100 + MaxTrajectory = 50f, + DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest, spawn a field and remain for a time (Measured in game ticks, 60 = 1 second) + GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. + SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed + RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 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. Cap is 1, and this is % of your Accel. + TrackingDelay = 5, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + 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 + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + }, + + + + + + + + + + + + + + AmmoGraphics = new GraphicDef + { + ModelName = "", + VisualProbability = 1f, + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + //ShrinkByDistance = false, + Color = Color(red: 128, green: 0, blue: 0, alpha: 32), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + //ShrinkByDistance = false, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 0, + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + //ShrinkByDistance = false, + Color = Color(red: 3, green: 1.9f, blue: 1f, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 5000, + MaxDuration = 30, + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 5f, + Width = 0.45f, + Color = Color(red: 0, green: 12, blue: 21f, alpha: 1), + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "WeaponLaser", + }, + TextureMode = Normal, + DecayTime = 100, + Color = Color(red: 0, green: 8, blue: 9f, alpha: 1), + Back = false, + CustomWidth = 0.2f, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/MasterConfig.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/MasterConfig.cs index bde80e056..f295d3635 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/MasterConfig.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/MasterConfig.cs @@ -10,13 +10,20 @@ internal Parts() Gimballed_Impulse_Torch, Flechette_Cannon, Nariman_Smart_Turret, + Auger3_Internal_Turret, + Auger5_Internal_Turret, S_Chem_Laser, //S_Armored_Laser, SM3_Counter_Battery, SolHyp_ArcStrike_HTorpedo, SolHyp_MAC, + Point_Singularity_Projector, + Scathis, + Dreadnaught_Beacon, + Nebulon_Beacon, Sentry_Hangar, - Strikecraft_Hangar + Strikecraft_Hangar, + Test_Hangar ); } } diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret.cs index 25d8a426b..9aa8db357 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret.cs @@ -84,8 +84,8 @@ partial class Parts { ElevateRate = 0.02f, // Max traversal speed of elevation subpart in radians per tick. MinAzimuth = -180, MaxAzimuth = 180, - MinElevation = -180, - MaxElevation = 180, + MinElevation = -10, + MaxElevation = 50, HomeAzimuth = 0, // Default resting rotation angle HomeElevation = 0, // Default resting elevation InventorySize = 0.639f, // Inventory capacity in kL. @@ -119,7 +119,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 = 600, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + ReloadTime = 300, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MagsToLoad = 12, // 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 = 40, // Heat generated per shot. diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs index 2a6bc60ba..e3f100930 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nariman_Turret_Ammo.cs @@ -36,9 +36,9 @@ partial class Parts AmmoRound = "Smart NanoDart", // 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.04f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 7500f, // Direct damage; one steel plate is worth 100. + BaseDamage = 9500f, // Direct damage; one steel plate is worth 100. Mass = 40f, // In kilograms; how much force the impact will apply to the target. - Health = 40, // 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. + 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. DecayPerShot = 0f, // Damage to the firing weapon itself. @@ -173,9 +173,9 @@ partial class Parts }, EndOfLife = new EndOfLifeDef { - Enable = true, + Enable = false, Radius = 1f, // Meters - Damage = 1f, + Damage = 15000f, Depth = 1f, MaxAbsorb = 0f, Falloff = NoFalloff, //.NoFalloff applies the same damage to all blocks in radius @@ -191,7 +191,7 @@ partial class Parts NoSound = false, ParticleScale = 0.25f, CustomParticle = "Exp_Spark_large", // Particle SubtypeID, from your Particle SBC - CustomSound = "K_SA_Gauss_Hit_A", // SubtypeID from your Audio SBC, not a filename + CustomSound = "MissileHitRandom", // SubtypeID from your Audio SBC, not a filename Shape = Diamond, // Round or Diamond }, }, @@ -273,7 +273,7 @@ partial class Parts Smarts = new SmartsDef { SteeringLimit = 30, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. - Inaccuracy = 0.5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Inaccuracy = 2.5f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. Aggressiveness = 2f, // controls how responsive tracking is. MaxLateralThrust = 0.15, // controls how sharp the trajectile may turn TrackingDelay = 0, // Measured in Shape diameter units traveled. @@ -283,7 +283,7 @@ partial class Parts 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 = 0.05f, // The ratio to offset the random direction (0 to 1) + OffsetRatio = 0.25f, // The ratio to offset the random direction (0 to 1) OffsetTime = 60, // 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. @@ -308,12 +308,12 @@ partial class Parts Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef { - Scale = 1, + Scale = 0.25f, }, }, Hit = new ParticleDef { - Name = "Exp_Spark_FCC", + Name = "", ApplyToShield = true, Offset = Vector(x: 0, y: 0, z: 0), Extras = new ParticleOptionDef @@ -374,25 +374,25 @@ partial class Parts "WeaponLaser", // Please always have this Line set, if this Section is enabled. }, TextureMode = Normal, - DecayTime = 1, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. Color = Color(red: 2.5f, green: 7f, blue: 1f, alpha: 1f), Back = false, - CustomWidth = 0, + CustomWidth = 0.25f, UseWidthVariance = false, UseColorFade = true, }, OffsetEffect = new OffsetEffectDef { - MaxOffset = 1,// 0 offset value disables this effect - MinLength = 1.2f, - MaxLength = 7, + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 2, }, }, }, AmmoAudio = new AmmoAudioDef { - TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight - HitSound = "", + TravelSound = "DRONEFLYBY", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "PPCImpact", ShieldHitSound = "", PlayerHitSound = "", diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebluon_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebluon_Ammo.cs new file mode 100644 index 000000000..af26b6d82 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebluon_Ammo.cs @@ -0,0 +1,2658 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Launch_Dummy_Nebulon => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Launch_Dummy", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Nebulon_Launch", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = -15f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = false, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 1, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = true, + NoSound = true, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 300, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 1, // voxel phasing if you go above 5100 + MaxTrajectory = 1000000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 0.001f, // + Width = 0.001f, // + Color = Color(red: 1, green: 1, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Nebulon => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Nebulon_Launch", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 10000, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = true, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = true, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Light_Turbolaser_Nebulon", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 2f, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 18, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 120, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1440, // Max number of fragment children to spawn + Proximity = 2500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 6, // Number of spawns in each group + GroupDelay = 390, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "Light_Turbolaser_Nebulon", + "Light_Turbolaser_Nebulon", + "Light_Turbolaser_Nebulon", + "Blank_Round_Neb", + "Blank_Round_Neb", + "Blank_Round_Neb", + + "Light_Turbolaser_Nebulon", + "Light_Turbolaser_Nebulon", + "Light_Turbolaser_Nebulon", + "Blank_Round_Neb", + "Blank_Round_Neb", + "Blank_Round_Neb", + + "Concussion_Missile_Nebulon", + "Concussion_Missile_Nebulon", + "Concussion_Missile_Nebulon", + "Concussion_Missile_Nebulon", + "Concussion_Missile_Nebulon", + "Concussion_Missile_Nebulon", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = true, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = 1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 5f, // Radius of AOE effect, in meters. + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "NebulonB_Death", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + Trajectory = new TrajectoryDef + { + Guidance = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 54000, // 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 = 12.5f, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 65, // voxel phasing if you go above 5100 + MaxTrajectory = 100000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 1234.5, // 0 means no limit, something to do due with a thing called delta and something called v. + Smarts = new SmartsDef + { + SteeringLimit = 30f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 1f, // controls how responsive tracking is, recommended value 3-5. + MaxLateralThrust = 0, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = -1f, // helps influence how the projectile steers, 0 defaults to 1/2 Aggressiveness value or 0 if its 0, a value less than 0 disables this feature. + TrackingDelay = 30, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 18000, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = true, // Utilize obstacle avoidance for drones/smarts + FutureIntersectionRange = 250, // Range in front of the projectile at which it will detect obstacle. If set to zero it defaults to DesiredSpeed + Shape Diameter + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = false, // only target the constructs Ai's focus target + FocusEviction = false, // If FocusOnly and this to true will force smarts to lose target when there is no focus target + ScanRange = 0, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + NoSteering = false, // this disables target follow and instead travel straight ahead (but will respect offsets). + MinTurnSpeed = 50, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = false, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + Approaches = new[] // These approaches move forward and backward in order, once the end condition of the last one is reached it will revert to default behavior. Cost level of 4+, or 5+ if used with steering. + { + /** What are approaches? How do they interact with other config variables? What problems do they solve? + * + * At the most basic level an "approach" is a collection of variables that allow you, the mod author, to tell the projectile how to "approach" + * a desired "destination" (aka position) when certain conditions are met and what to then do once it has arrived. I say "destination/position" and not "target" on + * purpose, while the desired destination may be the "target" it often is not. Keep in mind that approaches merely "influence" the projectiles path to + * a desired position, they do not absolutely determine it. Instead you are telling the projectile where you want it to go and through which + * trajectory it should travel to get there, but ultimately you are setting the desired flight path, you are not the pilot. + * + * Approaches are an extension of Smarts and these variables are applied ontop of, not in place of, all other config variables. This means anything + * you set in other parts of the config will still influence approaches and sometimes in unexpected ways (i.e. trackingDelay or not finding a target + * can delay when an approaches begins). In a few cases approaches have variables that override/alter/extend how non-approach variables behave. + * + * Approaches will not alter the path of a projectile until its start condition is met(and optionally maintained). Prior to "starting" the + * projectile will behave as it would have had there was no approach defined.This is also the case once all approaches have completed. + * + * Approaches require you to think about projectile navigation in an abstract manner.This is a good time to restate that you are merely "influencing" the + * projectile, you are not controlling/piloting it.The battlefield is dynamic, always changing, you are setting objectives and providing rules to follow + * if certain conditions are met, nothing more. You must also remember that although you are setting variables like positionB, positionC, elevation, lead + * upDirection, forwardDirection etc... these variables merely "influence" the projectiles heading relative to its current position and velocity, they do not + * represent its actual source nor destination positions, directions nor elevation. + * + * Said another way, imagine your projectile half way between its launcher and the "target" and it is at this time that your approach "starts". If you were + * to then draw this scene out visually, you would draw three spheres representing positions which we will call "projectile current position (aka positionA)", "positionB" + * and "positionC", where you only get to define the latter two.You then define two directions, a forward direction and an up direction.You can + * also optionally set a desired "elevation" relative to the up direction and a desired "lead" relative to the forward direction, applied to the positionB and/or + * positionC. Now draw a 1 and 2 that represents the modified positionB and positionC positions (taking into account elevation, lead, and rotations). Your + * projectiles heading will by default attempt to steer to modified C position(2), or alternatively to modified B(1) if you set TrajectoryRelativeToB to true. */ + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = DistanceFromTarget, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 2000, + Start2Value = 0, + End1Value = 9998, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.85f, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1000, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 9998, + Start2Value = 0, + End1Value = 7000, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 1, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1250, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "NebulonB_Stage_01", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 7000, + Start2Value = 0, + End1Value = 4000, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.75, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1150, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "Dreadnaught_Engine_Damage_01", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "NebulonB_Stage_02", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToNext, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = HealthRemaining, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = HealthRemaining, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 4000, + Start2Value = 0, + End1Value = 100, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = EndProjectile, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardRelativeToShooter, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToShooter, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = PositionA, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = Target, + Elevation = Nothing, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = true, // Updated the position overtime. + AdjustPositionC = true, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 0, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 0, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 0, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = false, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.5, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = true, // Orbit the Position + OrbitRadius = 1500, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = true, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = true, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "Dreadnaught_Engine_Damage_02", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "NebulonB_Stage_03", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + }, + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + OnHit = new OnHitDef { + } + }, + AmmoGraphics = new GraphicDef + { + ModelName = "\\Models\\Cubes\\large\\NebulonB_Projectile.mwm", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Nebulon_Engine", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 0.01f, // + Width = 0.01f, // + Color = Color(red: 30, green: 2, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "Ship_Engine", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Hyperspace_Exit", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Light_Turbolaser_Nebulon => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Light_Turbolaser_Nebulon", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "MagicFragment", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 50000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turbolaser_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 900, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Green_Turbo_Light", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 18f, // + Width = 0.5f, // + Color = Color(red: 30, green: 3, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Light_Turbolaser_Shot", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Blank_Round_Neb => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Blank_Round_Neb", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 50000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turbolaser_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 120, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 2500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = false, + Length = 18f, // + Width = 0.5f, // + Color = Color(red: 30, green: 3, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef Concussion_Missile_Nebulon => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Concussion_Missile_Nebulon", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 100f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 30, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = false, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 100, // Number of projectiles to spawn. + Degrees = 15, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 12.5, z: 44.5), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Predict, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 5, // Number of spawns in each group + GroupDelay = 120, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = 1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 3f, // Radius of AOE effect, in meters. + Damage = 80000f, + Depth = 3f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "", // Particle SubtypeID, from your Particle SBC + CustomSound = "Turbolaser_Impact", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + Trajectory = new TrajectoryDef + { + Guidance = Smart, // 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 = 1200, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 100, // voxel phasing if you go above 5100 + MaxTrajectory = 3500f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 0, // 0 means no limit, something to do due with a thing called delta and something called v. + Smarts = new SmartsDef + { + SteeringLimit = 160f, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 1f, // controls how responsive tracking is, recommended value 3-5. + MaxLateralThrust = 0, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = -1f, // helps influence how the projectile steers, 0 defaults to 1/2 Aggressiveness value or 0 if its 0, a value less than 0 disables this feature. + TrackingDelay = 60, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 1200, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones/smarts + FutureIntersectionRange = 0, // Range in front of the projectile at which it will detect obstacle. If set to zero it defaults to DesiredSpeed + Shape Diameter + MaxTargets = 0, // 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 = true, // Whether to stop early death of projectile on target loss + OffsetRatio = 0.35f, // The ratio to offset the random direction (0 to 1) + OffsetTime = 30, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + OffsetMinRange = 500, // The range from target at which offsets are no longer active + FocusOnly = false, // only target the constructs Ai's focus target + FocusEviction = false, // If FocusOnly and this to true will force smarts to lose target when there is no focus target + ScanRange = 0, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + NoSteering = false, // this disables target follow and instead travel straight ahead (but will respect offsets). + MinTurnSpeed = 20, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = false, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "Concussion_Missile", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 0.001f, // + Width = 0.001f, // + Color = Color(red: 1, green: 1, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "Concussion_Missile_Shot", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebulon_Weapon.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebulon_Weapon.cs new file mode 100644 index 000000000..629eb9ced --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Nebulon_Weapon.cs @@ -0,0 +1,240 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.TargetingDef; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.Comms; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.SecurityMode; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Nebulon_Beacon => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Nebulon_Beacon", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "None", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle_Dreadnaught", // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals, ScanRoid, ScanPlanet, ScanFriendlyCharacter, ScanFriendlyGrid, ScanEnemyCharacter, ScanEnemyGrid, ScanNeutralCharacter, ScanNeutralGrid, ScanUnOwnedGrid, ScanOwnersGrid + }, + SubSystems = new[] { + Thrust, Offense, Utility, Power, Production, Jumping, Steering, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. + 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 = 15000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MinTargetDistance = 100, // Minimum distance at which targets will be automatically shot at. + TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. + CycleTargets = 0, // Number of targets to "cycle" per acquire attempt. + TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited. + CycleBlocks = 2, // Number of blocks to "cycle" per acquire attempt. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + UniqueTargetPerWeapon = false, // only applies to multi-weapon blocks + MaxTrackingTime = 0, // After this time has been reached the weapon will stop tracking existing target and scan for a new one, only applies to turreted weapons + ShootBlanks = false, // Do not generate projectiles when shooting + FocusOnly = false, // This weapon can only track focus targets. + EvictUniqueTargets = false, // if this is set it will evict any weapons set to UniqueTargetPerWeapon unless they to have this set + Communications = new CommunicationDef + { + StoreTargets = false, // Pushes its current target to the grid/construct so that other slaved weapons can fire on it. + StorageLimit = 0, // The limit at which this weapon will no longer export targets onto the channel. + MaxConnections = 0, // 0 is unlimited, this value determines the maximum number of weapons that can link up to another weapon. + StoreLimitPerBlock = false, // Setting this to true will switch the StorageLimit from being per Location to per block per Location. + StorageLocation = "", // This location ID is used either by the master weapon (if ExportTargets = true) or the slave weapon (if its false). This is shared across the conncted grids. + Mode = NoComms, // NoComms, BroadCast, LocalNetwork, Repeater, Relay, Jamming + TargetPersists = false, // Whether or not the weapon will retain its existing target even if the source of the target releases theirs. + Security = Private, // Public, Private, Secure + BroadCastChannel = "", // If defined you will broadcast to all other scanners on this channel. + BroadCastRange = 0, // This is the range that you will broadcast up too. Note that this value applies to both the sender and receiver, both range requirements must be met. + JammingStrength = 0, // If Mode is set to jamming, then this value will decrease the "range" of broadcasts. Strength falls off at sqr of the distance. + RelayChannel = "", // If defined this channel will be used to relay any targets it seems on the broadcast channel. + RelayRange = 0, // This defines the range that any broadcasts will be relayed. Note that this channel id is seen as the "broadcast" channel for all receivers, broadcast range requirements apply. + }, + }, + HardPoint = new HardPointDef + { + PartName = "Nebulon-B", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. + AimingTolerance = 1f, // 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 = true, // 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. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + ScanTrackOnly = false, // This weapon only scans and tracks entities, this disables un-needed functionality and customizes for this purpose. + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + AlternateUi = false, // This simplifies and customizes the block controls for alternative weapon purposes, + DisableStatus = false, // Do not display weapon status NoTarget, Reloading, NoAmmo, etc.. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + DefaultLeadGroup = 0, // Default LeadGroup setting, range 0-5, 0 is disables lead group. Only useful for fixed weapons or weapons set to OverrideLeads. + TargetGridCenter = false, // Does not target blocks, instead it targets grid center. + }, + HardWare = new HardwareDef + { + RotateRate = 0.1f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.1f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, // Az/Ele figures are in degrees + MaxAzimuth = 180, + MinElevation = -9, + MaxElevation = 50, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 15, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 2, // 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. + DisableLosCheck = true, // Do not perform LOS checks at all... not advised for self tracking weapons + NoVoxelLosCheck = true, // If set to true this ignores voxels for LOS checking.. which means weapons will fire at targets behind voxels. However, this can save cpu in some situations, use with caution. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 120, // Set this to 3600 for beam weapons. This is how fast your Gun fires. + 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 = 600, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // 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 = 200, // Heat generated per shot. + MaxHeat = 200, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = .95f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 1, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 0, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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). + SpinFree = true, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 1, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + GoHomeToReload = false, // Tells the weapon it must be in the home position before it can reload. + DropTargetUntilLoaded = false, // If true this weapon will drop the target when its out of ammo and until its reloaded. + }, + + + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "NebulonB_Arrival", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 120, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "BeaconWarpFlash", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 10000, + MaxDuration = 1, + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, + MaxDistance = 800, + MaxDuration = 0, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + Launch_Dummy_Nebulon, + Nebulon, + Light_Turbolaser_Nebulon, + Blank_Round_Neb, + Concussion_Missile_Nebulon,// Must list all primary, shrapnel, and pattern ammos. + }, + + //Animations = fuck, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher.cs index e9987de65..8a68f4981 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher.cs @@ -1,198 +1,204 @@ -using static Scripts.Structure; -using static Scripts.Structure.WeaponDefinition; -using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; -using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; -using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; -using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; - -namespace Scripts { - partial class Parts { - // Don't edit above this line - WeaponDefinition SM3_Counter_Battery => new WeaponDefinition - { - Assignments = new ModelAssignmentsDef - { - MountPoints = new[] { - new MountPointDef { - SubtypeId = "Counter_Battery", // Block Subtypeid. Your Cubeblocks contain this information - SpinPartId = "missileturretbarrels", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. - MuzzlePartId = "missileturretbase1", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. - AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways. - ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up. - DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. - IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. - }, - - }, - Muzzles = new[] { - "muzzle_missile_01", - // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A - - }, - Ejector = "", // Optional; empty from which to eject "shells" if specified. - Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. - }, - Targeting = new TargetingDef - { - Threats = new[] { - Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals - }, - SubSystems = new[] { - Thrust, Utility, Offense, Power, Production, 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 = true, // Don't fire at non-smart projectiles. - 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 = 10000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. - MinTargetDistance = 650, // Minimum distance at which targets will be automatically shot at. - TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. - TopBlocks = 16, // Maximum number of blocks to randomize between; 0 = unlimited. - StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. - }, - HardPoint = new HardPointDef - { - PartName = "SM-3 Torpedo", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 7f, // Projectile inaccuracy in degrees. - AimingTolerance = 270f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Off, // 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 = true, // 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. - - Ui = new UiDef - { - RateOfFire = false, // Enables terminal slider for changing rate of fire. - DamageModifier = false, // Enables terminal slider for changing damage per shot. - ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. - EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. - }, - Ai = new AiDef - { - TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. - TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. - TurretController = false, // Whether this weapon can physically control the turret's movement. - PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. - LockOnFocus = false,// If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. - SuppressFire = false, // If enabled, weapon can only be fired manually. - OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. - }, - HardWare = new HardwareDef - { - RotateRate = 0f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). - ElevateRate = 0f, // Max traversal speed of elevation subpart in radians per tick. - MinAzimuth = 0, - MaxAzimuth = 0, - MinElevation = 0, - MaxElevation = 0, - HomeAzimuth = 0, // Default resting rotation angle - HomeElevation = 0, // Default resting elevation - InventorySize = 5f, // Inventory capacity in kL. - IdlePower = 0.25f, // 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 - CriticalReaction = new CriticalDef - { - Enable = false, // Enables Warhead behaviour. - DefaultArmedTimer = 120, // Sets default countdown duration. - PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. - TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. - AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. - }, - }, - Other = new OtherDef - { - ConstructPartCap = 0, // Maximum number of blocks with this weapon on a grid; 0 = unlimited. - RotateBarrelAxis = 3, // 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. - Debug = false, // Force enables debug mode. - RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. - CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. - CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. - }, - Loading = new LoadingDef - { - RateOfFire = 80, // Set this to 3600 for beam weapons. This is how fast your Gun fires. - 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 = 2400, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - MagsToLoad = 1, // 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 = 0, // Heat generated per shot. - MaxHeat = 0, // Max heat before weapon enters cooldown (70% of max heat). - Cooldown = 0f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 - HeatSinkRate = 0, // Amount of heat lost per second. - DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). - ShotsInBurst = 8, // 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 = 180, // 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. - GiveUpAfter = true, // 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). - SpinFree = false, // Spin barrel while not firing. - StayCharged = false, // Will start recharging whenever power cap is not full. - MaxActiveProjectiles = 0, // Maximum number of projectiles in flight - MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon - }, - Audio = new HardPointAudioDef - { - PreFiringSound = "", // Audio for warmup effect. - FiringSound = "", // Audio for firing. - FiringSoundPerShot = false, // Whether to replay the sound for each shot, or just loop over the entire track while firing. - ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state - NoAmmoSound = "", - HardPointRotationSound = "", // Audio played when turret is moving. - BarrelRotationSound = "", - FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). - FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. - }, - Graphics = new HardPointParticleDef - { - Effect1 = new ParticleDef - { - Name = "RERotaryCannonFlash", // SubtypeId of muzzle particle effect. - Color = Color(red: 15, green: 2, blue: 1, alpha: 0.8f), // Deprecated, set color in particle sbc. - Offset = Vector(x: 0, y: 0.22, z: -1.5), // Offsets the effect from the muzzle empty. - - Extras = new ParticleOptionDef - { - Loop = false, // Deprecated, set this in particle sbc. - Restart = true, // Whether to end the previous effect early and spawn a new one. - MaxDistance = 1000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! - MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running. - Scale = 1f, // Scale of effect. - }, - }, - Effect2 = new ParticleDef - { - Name = "", - Color = Color(red: 0, green: 0, blue: 0, alpha: 1), - Offset = Vector(x: 0, y: 0, z: 0), - - Extras = new ParticleOptionDef - { - Restart = false, - MaxDistance = 50, - MaxDuration = 0, - Scale = 1f, - }, - }, - }, - }, - Ammos = new[] { - SM3_Counter_Battery_Launch, - // Must list all primary, shrapnel, and pattern ammos. - }, - //Animations = Weapon75_Animation, - //Upgrades = UpgradeModules, - }; - // Don't edit below this line. - } +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.TargetingDef; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.Comms; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.SecurityMode; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition SM3_Counter_Battery => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "Counter_Battery", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "missileturretbarrels", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "missileturretbase1", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle_missile_01", + // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Thrust, Utility, Offense, Power, Production, 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 = true, // Don't fire at non-smart projectiles. + 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 = 10000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MinTargetDistance = 650, // Minimum distance at which targets will be automatically shot at. + TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. + TopBlocks = 16, // Maximum number of blocks to randomize between; 0 = unlimited. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + UniqueTargetPerWeapon = true, // only applies to multi-weapon blocks + }, + HardPoint = new HardPointDef + { + PartName = "SM-3 Torpedo", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 7f, // Projectile inaccuracy in degrees. + AimingTolerance = 270f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // 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 = true, // 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. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. + TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. + TurretController = false, // Whether this weapon can physically control the turret's movement. + PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false,// If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = 0, + MaxAzimuth = 0, + MinElevation = 0, + MaxElevation = 0, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 5f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // Maximum number of blocks with this weapon on a grid; 0 = unlimited. + RotateBarrelAxis = 3, // 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. + DisableLosCheck = true, // Do not perform LOS checks at all... not advised for self tracking weapons + NoVoxelLosCheck = true, // If set to true this ignores voxels for LOS checking.. which means weapons will fire at targets behind voxels. However, this can save cpu in some situations, use with caution. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 80, // Set this to 3600 for beam weapons. This is how fast your Gun fires. + 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 = 2400, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // 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 = 0, // Heat generated per shot. + MaxHeat = 0, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = 0f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 0, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 8, // 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 = 180, // 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. + GiveUpAfter = true, // 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of projectiles in flight + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "", // Audio for firing. + FiringSoundPerShot = false, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "", // Audio played when turret is moving. + BarrelRotationSound = "", + FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "RERotaryCannonFlash", // SubtypeId of muzzle particle effect. + Color = Color(red: 15, green: 2, blue: 1, alpha: 0.8f), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0.22, z: -1.5), // Offsets the effect from the muzzle empty. + + Extras = new ParticleOptionDef + { + Loop = false, // Deprecated, set this in particle sbc. + Restart = true, // Whether to end the previous effect early and spawn a new one. + MaxDistance = 1000, // Max distance at which this effect should be visible. NOTE: This will use whichever MaxDistance value is higher across Effect1 and Effect2! + MaxDuration = 0, // How many ticks the effect should be ended after, if it's still running. + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + + Extras = new ParticleOptionDef + { + Restart = false, + MaxDistance = 50, + MaxDuration = 0, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + SM3_Counter_Battery_Launch, + // Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Weapon75_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } } \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher_Ammo.cs index cf7570ff2..c0b9d479c 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher_Ammo.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/SM3_Counter_Launcher_Ammo.cs @@ -287,6 +287,7 @@ partial class Parts KeepAliveAfterTargetLoss = true, // Whether to stop early death of projectile on target loss OffsetRatio = 0.25f, // The ratio to offset the random direction (0 to 1) OffsetTime = 35, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + //UniqueTargetPerWeapon = true, // only applies to multi-weapon blocks }, Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. { diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Scathis.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Scathis.cs new file mode 100644 index 000000000..ade2e2022 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Scathis.cs @@ -0,0 +1,223 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Scathis => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "ScathisM77", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "GatlingTurretBarrels", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "GatlingTurretBase1", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "GatlingTurretBarrels",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.25f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle_storm_01", + "muzzle_storm_02", + "muzzle_storm_03", + "muzzle_storm_04", + "muzzle_storm_05", + "muzzle_storm_06", + "muzzle_storm_07", + "muzzle_storm_08", + "muzzle_storm_09", + "muzzle_storm_10", + "muzzle_storm_11", + "muzzle_storm_12", + "muzzle_storm_13", + "muzzle_storm_14", + "muzzle_storm_15", + "muzzle_storm_16", + "muzzle_storm_17", + "muzzle_storm_18", + "muzzle_storm_19", + "muzzle_storm_20", + "muzzle_storm_21", + "muzzle_storm_22", + "muzzle_storm_23", + "muzzle_storm_24", + "muzzle_storm_25", + "muzzle_storm_26", + "muzzle_storm_27", + "muzzle_storm_28", + "muzzle_storm_29", + "muzzle_storm_30", + "muzzle_storm_31", + "muzzle_storm_32", + // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "metal_camera", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, Projectiles, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. + 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 = 5500, // 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. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "Scathis M-77", // 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. + 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. + CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. + + Ui = new UiDef + { + RateOfFire = true, // Enables terminal slider for changing rate of fire. + DamageModifier = true, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = true, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = true, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = true, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = true, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = true, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0.1f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.1f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, + MaxAzimuth = 180, + MinElevation = -45, + MaxElevation = 45, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 0, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 0, // 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. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 2400, // Set this to 3600 for beam weapons. This is how fast your Gun fires. + 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 = 800, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // 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 = 0, // Heat generated per shot. + MaxHeat = 1200, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = 0.01f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 61, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 0, // 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 = 0, // 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. + 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "", // Audio for warmup effect. + FiringSound = "metalstorm", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "metalstormreload", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 120, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "Muzzle_Flash_MetalStorm", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + Scale = 1f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + MS1, // Must list all primary, shrapnel, and pattern ammos. + }, + //Animations = Weapon75_Animation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ScathisAmmo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ScathisAmmo.cs new file mode 100644 index 000000000..27b3544a7 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/ScathisAmmo.cs @@ -0,0 +1,268 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef MS1 => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "ScathisProj1", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.001f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 8000f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 32, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = true, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Kinetic, + Detonation = Kinetic, + Shield = Kinetic, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = NoDeform, // HitBlock- applies deformation to the block that was hit + // AllDamagedBlocks- applies deformation to all blocks damaged (for AOE) + // NoDeform- applies no deformation + DeformDelay = 30, // Time in ticks to wait before applying another deformation event (prevents excess calls for deformation every tick or from multiple sources) + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + 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 = 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 = 6000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 5f, // + Width = 0.1f, // + Color = Color(red: 25, green: 2, blue: 0f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = true, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 0, green: 0, blue: 0f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "cbar", + ShotSound = "", + ShieldHitSound = "shit", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector.cs new file mode 100644 index 000000000..3c3a6cbba --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector.cs @@ -0,0 +1,208 @@ +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.ModelAssignmentsDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.Prediction; +using static Scripts.Structure.WeaponDefinition.TargetingDef.BlockTypes; +using static Scripts.Structure.WeaponDefinition.TargetingDef.Threat; +using static Scripts.Structure.WeaponDefinition.TargetingDef; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.Comms; +using static Scripts.Structure.WeaponDefinition.TargetingDef.CommunicationDef.SecurityMode; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef; +using static Scripts.Structure.WeaponDefinition.HardPointDef.HardwareDef.HardwareType; + +namespace Scripts { + partial class Parts { + // Don't edit above this line + WeaponDefinition Point_Singularity_Projector => new WeaponDefinition + { + Assignments = new ModelAssignmentsDef + { + MountPoints = new[] { + new MountPointDef { + SubtypeId = "PSP", // Block Subtypeid. Your Cubeblocks contain this information + SpinPartId = "None", // For weapons with a spinning barrel such as Gatling Guns. Subpart_Boomsticks must be written as Boomsticks. + MuzzlePartId = "None", // The subpart where your muzzle empties are located. This is often the elevation subpart. Subpart_Boomsticks must be written as Boomsticks. + AzimuthPartId = "None", // Your Rotating Subpart, the bit that moves sideways. + ElevationPartId = "None",// Your Elevating Subpart, that bit that moves up. + DurabilityMod = 0.20f, // GeneralDamageMultiplier, 0.25f = 25% damage taken. + IconName = "TestIcon.dds" // Overlay for block inventory slots, like reactors, refineries, etc. + }, + + }, + Muzzles = new[] { + "muzzle", + // Where your Projectiles spawn. Use numbers not Letters. IE Muzzle_01 not Muzzle_A + + }, + Ejector = "", // Optional; empty from which to eject "shells" if specified. + Scope = "", // Where line of sight checks are performed from. Must be clear of block collision. + }, + Targeting = new TargetingDef + { + Threats = new[] { + Grids, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals + }, + SubSystems = new[] { + Thrust, Utility, Offense, Power, Production, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + }, + ClosestFirst = true, // Tries to pick closest targets first (blocks on grids, projectiles, etc...). + IgnoreDumbProjectiles = false, // Don't fire at non-smart projectiles. + 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 = 0, // 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 = 16, // Maximum number of targets to randomize between; 0 = unlimited. + TopBlocks = 16, // Maximum number of blocks to randomize between; 0 = unlimited. + StopTrackingSpeed = 0, // Do not track threats traveling faster than this speed; 0 = unlimited. + }, + HardPoint = new HardPointDef + { + PartName = "Point Singularity Projector", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). + DeviateShotAngle = 0f, // Projectile inaccuracy in degrees. + AimingTolerance = 180f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + AimLeadingPrediction = Off, // 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. + CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. + + Ui = new UiDef + { + RateOfFire = false, // Enables terminal slider for changing rate of fire. + DamageModifier = false, // Enables terminal slider for changing damage per shot. + ToggleGuidance = false, // Enables terminal option to disable smart projectile guidance. + EnableOverload = false, // Enables terminal option to turn on Overload; this allows energy weapons to double damage per shot, at the cost of quadrupled power draw and heat gain, and 2% self damage on overheat. + }, + Ai = new AiDef + { + TrackTargets = false, // Whether this weapon tracks its own targets, or (for multiweapons) relies on the weapon with PrimaryTracking enabled for target designation. Turrets Need this set to True. + TurretAttached = false, // Whether this weapon is a turret and should have the UI and API options for such. Turrets Need this set to True. + TurretController = false, // Whether this weapon can physically control the turret's movement. Turrets Need this set to True. + PrimaryTracking = false, // For multiweapons: whether this weapon should designate targets for other weapons on the platform without their own tracking. + LockOnFocus = false, // If enabled, weapon will only fire at targets that have been HUD selected AND locked onto by pressing Numpad 0. + SuppressFire = false, // If enabled, weapon can only be fired manually. + OverrideLeads = false, // Disable target leading on fixed weapons, or allow it for turrets. + }, + HardWare = new HardwareDef + { + RotateRate = 0.1f, // Max traversal speed of azimuth subpart in radians per tick (0.1 is approximately 360 degrees per second). + ElevateRate = 0.1f, // Max traversal speed of elevation subpart in radians per tick. + MinAzimuth = -180, + MaxAzimuth = 180, + MinElevation = -180, + MaxElevation = 180, + HomeAzimuth = 0, // Default resting rotation angle + HomeElevation = 15, // Default resting elevation + InventorySize = 1f, // Inventory capacity in kL. + IdlePower = 0.25f, // 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 + CriticalReaction = new CriticalDef + { + Enable = false, // Enables Warhead behaviour. + DefaultArmedTimer = 120, // Sets default countdown duration. + PreArmed = false, // Whether the warhead is armed by default when placed. Best left as false. + TerminalControls = true, // Whether the warhead should have terminal controls for arming and detonation. + AmmoRound = "AmmoType2", // Optional. If specified, the warhead will always use this ammo on detonation rather than the currently selected ammo. + }, + }, + Other = new OtherDef + { + ConstructPartCap = 1, // 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. + Debug = false, // Force enables debug mode. + RestrictionRadius = 0, // Prevents other blocks of this type from being placed within this distance of the centre of the block. + CheckInflatedBox = false, // If true, the above distance check is performed from the edge of the block instead of the centre. + CheckForAnyWeapon = false, // If true, the check will fail if ANY weapon is present, not just weapons of the same subtype. + }, + Loading = new LoadingDef + { + RateOfFire = 1, // Set this to 3600 for beam weapons. This is how fast your Gun fires. + 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 = 7200, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MagsToLoad = 1, // Number of physical magazines to consume on reload. + DelayUntilFire = 120, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + HeatPerShot = 7200, // Heat generated per shot. + MaxHeat = 7200, // Max heat before weapon enters cooldown (70% of max heat). + Cooldown = 0f, // Percentage of max heat to be under to start firing again after overheat; accepts 0 - 0.95 + HeatSinkRate = 60, // Amount of heat lost per second. + DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). + ShotsInBurst = 0, // 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 = 0, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + FireFull = false, // 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). + SpinFree = false, // Spin barrel while not firing. + StayCharged = false, // Will start recharging whenever power cap is not full. + MaxActiveProjectiles = 0, // Maximum number of drones in flight (only works for drone launchers) + MaxReloads = 0, // Maximum number of reloads in the LIFETIME of a weapon + }, + Audio = new HardPointAudioDef + { + PreFiringSound = "caution", // Audio for warmup effect. + FiringSound = "gapsfx", // Audio for firing. + FiringSoundPerShot = true, // Whether to replay the sound for each shot, or just loop over the entire track while firing. + ReloadSound = "", // Sound SubtypeID, for when your Weapon is in a reloading state + NoAmmoSound = "", + HardPointRotationSound = "WepTurretGatlingRotate", // Audio played when turret is moving. + BarrelRotationSound = "WepShipGatlingRotation", + FireSoundEndDelay = 0, // How long the firing audio should keep playing after firing stops. Measured in game ticks(6 = 100ms, 60 = 1 seconds, etc..). + FireSoundNoBurst = true, // Don't stop firing sound from looping when delaying after burst. + }, + Graphics = new HardPointParticleDef + { + Effect1 = new ParticleDef + { + Name = "EXPLODETHESUN1", // SubtypeId of muzzle particle effect. + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), // Deprecated, set color in particle sbc. + Offset = Vector(x: 0, y: 0, z: 0), // Offsets the effect from the muzzle empty. + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, // Whether to end a looping effect instantly when firing stops. + MaxDistance = 6000, + MaxDuration = 120, + Scale = 10f, // Scale of effect. + }, + }, + Effect2 = new ParticleDef + { + Name = "", + Color = Color(red: 0, green: 0, blue: 0, alpha: 1), + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Loop = false, // Set this to the same as in the particle sbc! + Restart = false, + Scale = 1f, + }, + }, + }, + }, + Ammos = new[] { + + SubterraneanSun, + SubterraneanSunStage2, + SubterraneanSunStage2SuccParticleInvis, + SubterraneanSunStage2SuccParticleVisible, + SubterraneanSunStage2EWARTimespawn, + SubterraneanSunStage2EWARPattern, + + + + + }, + //Animations = Weapon75_Animation, + Animations = HexcannonAnimation, + //Upgrades = UpgradeModules, + }; + // Don't edit below this line. + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector_Ammo.cs new file mode 100644 index 000000000..8798a8379 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Singularity_Projector_Ammo.cs @@ -0,0 +1,2331 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + + private AmmoDef SubterraneanSun => new AmmoDef + { + AmmoMagazine = "SubterraneanSun", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSun", // 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 = 1080f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "SubterraneanSunStage2", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 1, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1000, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 0, // Number of spawns in each group + GroupDelay = 0, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "SubterraneanSunStage2", "SubterraneanSunStage2EWARTimespawn", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 3, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "fuckoff", // Particle SubtypeID, from your Particle SBC + CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 300, // 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 = 500, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 5000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 0f, // controls how responsive tracking is. + MaxLateralThrust = 0, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 10f, // + Width = 0.5f, // + Color = Color(red: 20, green: 20, blue: 20f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = true, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 30, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 20, green: 20, blue: 20, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "suntravelloop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef SubterraneanSunStage2 => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSunStage2", // 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.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // In kilograms; how much force the impact will apply to the target. + Health = 50000, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = SphereShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 10, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "SubterraneanSunStage2SuccParticleInvis", // AmmoRound field of the ammo to spawn. + Fragments = 10, // Number of projectiles to spawn. + Degrees = 360, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 24, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 60, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 6000, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + 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 = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 10, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = true, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 20f, // Meters + Damage = 25000f, + Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 100f, // Radius of AOE effect, in meters. + Damage = 5000000f, + Depth = 100f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 20, + CustomParticle = "EXPLODETHESUN1", // Particle SubtypeID, from your Particle SBC + CustomSound = "rocklaunch", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Pull, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 100, + Radius = 1000f, // Meters + Duration = 60, // In Ticks + StackDuration = true, // Combined Durations + Depletable = false, + MaxStacks = 1, // Max Debuffs at once + NoHitParticle = false, + + Force = new PushPullDef + { + ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + ForceTo = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + Position = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + DisableRelativeMass = false, + TractorRange = 0, + ShooterFeelsForce = false, + }, + Field = new FieldDef + { + Interval = 6, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + PulseChance = 100, // 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 default bubble, or other model if specified. + ShowParticle = false, // Show Block damage effect. + TriggerRange = 0f, //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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 3600, // 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 = 0.00000001f, // fucking particle piece of shit + MaxTrajectory = 5000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2, // controls how responsive tracking is. + MaxLateralThrust = 1, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + ScanRange = 2000, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "THESUN", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = true,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 10, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 10, blue: 10f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 10, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "sunloop", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef SubterraneanSunStage2SuccParticleInvis => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSunStage2SuccParticleInvis", // 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.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "SubterraneanSunStage2SuccParticleVisible", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = true, // Spawn projectiles backward instead of forward. + DropVelocity = true, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 4, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 60, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 200, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 180f, //Aim cone used for Direct fire, in degrees + GroupSize = 20, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 20f, // Meters + Damage = 25000f, + Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 100f, // Radius of AOE effect, in meters. + Damage = 5000000f, + Depth = 100f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 20, + CustomParticle = "fuckoff", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Pull, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 100, + Radius = 1000f, // Meters + Duration = 60, // In Ticks + StackDuration = true, // Combined Durations + Depletable = false, + MaxStacks = 1, // Max Debuffs at once + NoHitParticle = false, + + Force = new PushPullDef + { + ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + ForceTo = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + Position = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + DisableRelativeMass = false, + TractorRange = 0, + ShooterFeelsForce = false, + }, + Field = new FieldDef + { + Interval = 6, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + PulseChance = 100, // 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 default bubble, or other model if specified. + ShowParticle = false, // Show Block damage effect. + TriggerRange = 0f, //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 = true, // 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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 600, // 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 = 100, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. + DesiredSpeed = 100, // voxel phasing if you go above 5100 + MaxTrajectory = 2000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2, // controls how responsive tracking is. + MaxLateralThrust = 1, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 20, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 10, blue: 10f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 100, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef SubterraneanSunStage2SuccParticleVisible => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSunStage2SuccParticleVisible", // 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.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // 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. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 4, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 60, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 200, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 180f, //Aim cone used for Direct fire, in degrees + GroupSize = 20, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 20f, // Meters + Damage = 25000f, + Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 100f, // Radius of AOE effect, in meters. + Damage = 5000000f, + Depth = 100f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 20, + CustomParticle = "fuckoff", // Particle SubtypeID, from your Particle SBC + CustomSound = "", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Pull, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 100, + Radius = 2000f, // Meters + Duration = 60, // In Ticks + StackDuration = true, // Combined Durations + Depletable = false, + MaxStacks = 1, // Max Debuffs at once + NoHitParticle = false, + + Force = new PushPullDef + { + ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + ForceTo = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + Position = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + DisableRelativeMass = false, + TractorRange = 0, + ShooterFeelsForce = false, + }, + Field = new FieldDef + { + Interval = 6, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + PulseChance = 100, // 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 default bubble, or other model if specified. + ShowParticle = false, // Show Block damage effect. + TriggerRange = 0f, //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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 600, // 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 = 100, // 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 = 1800, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2, // controls how responsive tracking is. + MaxLateralThrust = 1, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 20, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = true, + Length = 20, // + Width = 1, // + Color = Color(red: 10, green: 5, blue: 0f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 100, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef SubterraneanSunStage2EWARTimespawn => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSunStage2EWARTimespawn", // 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.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = SphereShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 11, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "SubterraneanSunStage2EWARPattern", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = true, // Spawn projectiles backward instead of forward. + DropVelocity = true, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 0, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 60, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 60, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + 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 = 360f, //Aim cone used for Direct fire, in degrees + GroupSize = 1, // Number of spawns in each group + GroupDelay = 60, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 20f, // Meters + Damage = 25000f, + Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 100f, // Radius of AOE effect, in meters. + Damage = 5000000f, + Depth = 100f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 20, + CustomParticle = "fuckoff", // Particle SubtypeID, from your Particle SBC + CustomSound = "rocklaunch", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Pull, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 100, + Radius = 1000f, // Meters + Duration = 60, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 1, // Max Debuffs at once + NoHitParticle = false, + + Force = new PushPullDef + { + ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + ForceTo = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + Position = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + DisableRelativeMass = false, + TractorRange = 0, + ShooterFeelsForce = false, + }, + Field = new FieldDef + { + Interval = 6, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + PulseChance = 100, // 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 default bubble, or other model if specified. + ShowParticle = false, // Show Block damage effect. + TriggerRange = 0f, //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 = Smart, // None, Remote, TravelTo, Smart, DetectTravelTo, DetectSmart, DetectFixed + TargetLossDegree = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 3600, // 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 = 0, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. + DesiredSpeed = 0.00000001f, // voxel phasing if you go above 5100 + MaxTrajectory = 1000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2, // controls how responsive tracking is. + MaxLateralThrust = 1, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + ScanRange = 2000, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 20, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 10, blue: 10f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 100, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + private AmmoDef SubterraneanSunStage2EWARPattern => new AmmoDef + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "SubterraneanSunStage2EWARPattern", // 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.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 1f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = false, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + Synchronize = false, // For future use + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = SphereShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 11, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of entities (grids, players, projectiles) the projectile can penetrate; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 0, // Cone in which to randomize direction of spawned projectiles. + Reverse = true, // Spawn projectiles backward instead of forward. + DropVelocity = true, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = false, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below + { + Enable = false, // Enables TimedSpawns mechanism + Interval = 4, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 60, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 200, // Max number of fragment children to spawn + Proximity = 0, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = true, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 180f, //Aim cone used for Direct fire, in degrees + GroupSize = 20, // Number of spawns in each group + GroupDelay = 240, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // Distance at which damage begins falling off. + MinMultipler = 1f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + }, + Grids = new GridSizeDef + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // If greater than zero, the percentage of damage that will penetrate the shield. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Energy, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef + { + ByBlockHit = new ByBlockHitDef + { + Enable = false, + Radius = 20f, // Meters + Damage = 25000f, + Depth = 20f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = false, + Radius = 100f, // Radius of AOE effect, in meters. + Damage = 5000000f, + Depth = 100f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 0f, // 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 0, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 20, + CustomParticle = "fuckoff", // Particle SubtypeID, from your Particle SBC + CustomSound = "rocklaunch", // SubtypeID from your Audio SBC, not a filename + Shape = Round, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = true, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = Pull, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Field, // Effect , Field + Strength = 15f, + Radius = 1000f, // Meters + Duration = 60, // In Ticks + StackDuration = false, // Combined Durations + Depletable = false, + MaxStacks = 1, // Max Debuffs at once + NoHitParticle = false, + + Force = new PushPullDef + { + ForceFrom = ProjectileLastPosition, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + ForceTo = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + Position = TargetCenter, // ProjectileLastPosition, ProjectileOrigin, HitPosition, TargetCenter, TargetCenterOfMass + DisableRelativeMass = false, + TractorRange = 0, + ShooterFeelsForce = false, + }, + Field = new FieldDef + { + Interval = 6, // Time between each pulse, in game ticks (60 == 1 second), starts at 0 (59 == tick 60). + PulseChance = 100, // 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 default bubble, or other model if specified. + ShowParticle = false, // Show Block damage effect. + TriggerRange = 0f, //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 = 0f, // Degrees, Is pointed forward + TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + MaxLifeTime = 60, // 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 = 0, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. + DesiredSpeed = 0.00000001f, // voxel phasing if you go above 5100 + MaxTrajectory = 1000, // 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + Smarts = new SmartsDef + { + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 2, // controls how responsive tracking is. + MaxLateralThrust = 1, // controls how sharp the trajectile may turn + TrackingDelay = 0, // Measured in Shape diameter units traveled. + MaxChaseTime = 0, // Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + OverideTarget = false, // when set to true ammo picks its own target, does not use hardpoint's. + CheckFutureIntersection = false, // Utilize obstacle avoidance for drones + MaxTargets = 0, // Number of targets allowed before ending, 0 = unlimited + NoTargetExpire = false, // Expire without ever having a target at TargetLossTime + Roam = true, // Roam current area after target loss + KeepAliveAfterTargetLoss = true, // 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..) + FocusOnly = false, // only target the constructs Ai's focus target + }, + 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 + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = true, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 20, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + Tracer = new TracerBaseDef + { + Enable = false, + Length = 1, // + Width = 1, // + Color = Color(red: 10, green: 10, blue: 10f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 0.0001f, // meters per second + Color = Color(red: 5, green: 5, blue: 50f, alpha: 0), + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + Textures = new[] { + "ProjectileTrailLine", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 100, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 1, green: 1, blue: 1, alpha: 1), + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 1f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Z95_Ammo.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Z95_Ammo.cs new file mode 100644 index 000000000..9abff1e09 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/Z95_Ammo.cs @@ -0,0 +1,671 @@ +using static Scripts.Structure.WeaponDefinition; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EjectionDef.SpawnType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.ShapeDef.Shapes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.CustomScalesDef.SkipMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.PatternDef.PatternModes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.FragmentDef.TimedSpawnDef.PointTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.Conditions; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.UpRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.FwdRelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ReInitCondition; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.RelativeTo; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.ConditionOperators; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef.StageEvents; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.ApproachDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.TrajectoryDef.GuidanceType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.ShieldDef.ShieldType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DeformDef.DeformTypes; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.Falloff; +using static Scripts.Structure.WeaponDefinition.AmmoDef.AreaOfDamageDef.AoeShape; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarMode; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.EwarType; +using static Scripts.Structure.WeaponDefinition.AmmoDef.EwarDef.PushPullDef.Force; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.FactionColor; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.TracerBaseDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.LineDef.Texture; +using static Scripts.Structure.WeaponDefinition.AmmoDef.GraphicDef.DecalDef; +using static Scripts.Structure.WeaponDefinition.AmmoDef.DamageScaleDef.DamageTypes.Damage; + +namespace Scripts +{ // Don't edit above this line + partial class Parts + { + private AmmoDef Z95 => new AmmoDef // Your ID, for slotting into the Weapon CS + { + AmmoMagazine = "Energy", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. + AmmoRound = "Z95_Launch", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. + HybridRound = false, // Use both a physical ammo magazine and energy per shot. + EnergyCost = 0.1f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + BaseDamage = 111f, // Direct damage; one steel plate is worth 100. + Mass = 0f, // 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. + 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) + HardPointUsable = true, // Whether this is a primary ammo type fired directly by the turret. Set to false if this is a shrapnel ammoType and you don't want the turret to be able to select it directly. + EnergyMagazineSize = 1, // For energy weapons, how many shots to fire before reloading. + IgnoreWater = false, // Whether the projectile should be able to penetrate water when using WaterMod. + IgnoreVoxels = false, // Whether the projectile should be able to penetrate voxels. + HeatModifier = -1f, // Allows this ammo to modify the amount of heat the weapon produces per shot. + NpcSafe = false, // This is you tell npc moders that your ammo was designed with them in mind, if they tell you otherwise set this to false. + NoGridOrArmorScaling = true, // If you enable this you can remove the damagescale section entirely. + Sync = new SynchronizeDef + { + Full = false, // Do not use - still in progress + PointDefense = false, // Server will inform clients of what projectiles have died by PD defense and will trigger destruction. + OnHitDeath = false, // Server will inform clients when projectiles die due to them hitting something and will trigger destruction. + }, + Shape = new ShapeDef // Defines the collision shape of the projectile, defaults to LineShape and uses the visual Line Length if set to 0. + { + Shape = LineShape, // LineShape or SphereShape. Do not use SphereShape for fast moving projectiles if you care about precision. + Diameter = 1, // Diameter is minimum length of LineShape or minimum diameter of SphereShape. + }, + ObjectsHit = new ObjectsHitDef + { + MaxObjectsHit = 0, // Limits the number of grids or projectiles that damage can be applied to, useful to limit overpenetration; 0 = unlimited. + CountBlocks = false, // Counts individual blocks, not just entities hit. + }, + Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). + { + AmmoRound = "Fighter_Laser_Red", // AmmoRound field of the ammo to spawn. + Fragments = 1, // Number of projectiles to spawn. + Degrees = 1, // Cone in which to randomize direction of spawned projectiles. + Reverse = false, // Spawn projectiles backward instead of forward. + DropVelocity = false, // fragments will not inherit velocity from parent. + Offset = 0f, // Offsets the fragment spawn by this amount, in meters (positive forward, negative for backwards), value is read from parent ammo type. + Radial = 0f, // Determines starting angle for Degrees of spread above. IE, 0 degrees and 90 radial goes perpendicular to travel path + MaxChildren = 0, // number of maximum branches for fragments from the roots point of view, 0 is unlimited + IgnoreArming = true, // If true, ignore ArmOnHit or MinArmingTime in EndOfLife definitions + ArmWhenHit = false, // Setting this to true will arm the projectile when its shot by other projectiles. + AdvOffset = Vector(x: 0, y: 0, z: 0), // advanced offsets the fragment by xyz coordinates relative to parent, value is read from fragment ammo type. + TimedSpawns = new TimedSpawnDef // disables FragOnEnd in favor of info specified below, unless ArmWhenHit or Eol ArmOnlyOnHit is set to true then both kinds of frags are active + { + Enable = true, // Enables TimedSpawns mechanism + Interval = 15, // Time between spawning fragments, in ticks, 0 means every tick, 1 means every other + StartTime = 0, // Time delay to start spawning fragments, in ticks, of total projectile life + MaxSpawns = 1, // Max number of fragment children to spawn + Proximity = 1500, // Starting distance from target bounding sphere to start spawning fragments, 0 disables this feature. No spawning outside this distance + ParentDies = false, // Parent dies once after it spawns its last child. + PointAtTarget = true, // Start fragment direction pointing at Target + PointType = Direct, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) + DirectAimCone = 0f, //Aim cone used for Direct fire, in degrees + GroupSize = 7, // Number of spawns in each group + GroupDelay = 360, // Delay between each group. + }, + }, + Pattern = new PatternDef + { + Patterns = new[] { // If enabled, set of multiple ammos to fire in order instead of the main ammo. + "Fighter_Laser_Red", + "Fighter_Laser_Red", + "Fighter_Laser_Red", + "Fighter_Laser_Red", + "Fighter_Laser_Red", + "Fighter_Laser_Red", + "Fighter_Torpedo", + }, + Mode = Fragment, // Select when to activate this pattern, options: Never, Weapon, Fragment, Both + TriggerChance = 1f, // This is % + Random = false, // This randomizes the number spawned at once, NOT the list order. + RandomMin = 1, + RandomMax = 1, + SkipParent = false, // Skip the Ammo itself, in the list + PatternSteps = 1, // Number of Ammos activated per round, will progress in order and loop. Ignored if Random = true. + }, + DamageScales = new DamageScaleDef + { + MaxIntegrity = 0f, // Blocks with integrity higher than this value will be immune to damage from this projectile; 0 = disabled. + DamageVoxels = false, // Whether to damage voxels. + SelfDamage = false, // Whether to damage the weapon's own grid. + HealthHitModifier = 0.5, // How much Health to subtract from another projectile on hit; defaults to 1 if zero or less. + VoxelHitModifier = 1, // Voxel damage multiplier; defaults to 1 if zero or less. + Characters = -1f, // Character damage multiplier; defaults to 1 if zero or less. + // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. + FallOff = new FallOffDef + { + Distance = 0f, // 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. + }, + Grids = new GridSizeDef //If both of these values are -1, a 4x buff to SG weapons firing at LG and 0.25x debuff to LG weapons firing at SG will apply + { + Large = -1f, // Multiplier for damage against large grids. + Small = -1f, // Multiplier for damage against small grids. + }, + Armor = new ArmorDef + { + Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). + Light = -1f, // Multiplier for damage against light armor. + Heavy = -1f, // Multiplier for damage against heavy armor. + NonArmor = -1f, // Multiplier for damage against every else. + }, + Shields = new ShieldDef + { + Modifier = 1f, // Multiplier for damage against shields. + Type = Default, // Damage vs healing against shields; Default, Heal + BypassModifier = -1f, // 0-1 will bypass shields and apply that damage amount as a scaled %. -1 is disabled. -2 to -1 will alter the chance of penning a damaged shield, with -2 being a 100% reduction + HeatModifier = 1, // scales how much of the damage is converted to heat, negative values subtract heat. + }, + DamageType = new DamageTypes // Damage type of each element of the projectile's damage; Kinetic, Energy + { + Base = Kinetic, // Base Damage uses this + AreaEffect = Energy, + Detonation = Energy, + Shield = Energy, // Damage against shields is currently all of one type per projectile. Shield Bypass Weapons, always Deal Energy regardless of this line + }, + Deform = new DeformDef + { + DeformType = HitBlock, + DeformDelay = 30, + }, + Custom = new CustomScalesDef + { + SkipOthers = NoSkip, // Controls how projectile interacts with other blocks in relation to those defined here, NoSkip, Exclusive, Inclusive. + Types = new[] // List of blocks to apply custom damage multipliers to. + { + new CustomBlocksDef + { + SubTypeId = "Test1", + Modifier = -1f, + }, + new CustomBlocksDef + { + SubTypeId = "Test2", + Modifier = -1f, + }, + }, + }, + }, + AreaOfDamage = new AreaOfDamageDef // Note AOE is only applied to the Player/Grid it hit (and nearby projectiles) not nearby grids/players. + { + ByBlockHit = new ByBlockHitDef + { + Enable = true, + Radius = 5f, // Meters + Damage = 5f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 64000f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + EndOfLife = new EndOfLifeDef + { + Enable = true, + Radius = 1f, // Radius of AOE effect, in meters. + Damage = 1f, + Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value + MaxAbsorb = 1f, // Soft cutoff for damage (total, against shields or grids), 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 + //.InvCurve drops off sharply from the middle and tapers to max radius + //.Squeeze does little damage to the middle, but rapidly increases damage toward max radius + //.Pooled damage behaves in a pooled manner that once exhausted damage ceases. + //.Exponential drops off exponentially. Does not scale to max radius + ArmOnlyOnHit = false, // Detonation only is available, After it hits something, when this is true. IE, if shot down, it won't explode. + MinArmingTime = 100, // In ticks, before the Ammo is allowed to explode, detonate or similar; This affects shrapnel spawning. + NoVisuals = false, + NoSound = false, + ParticleScale = 1, + CustomParticle = "particleName", // Particle SubtypeID, from your Particle SBC + CustomSound = "soundName", // SubtypeID from your Audio SBC, not a filename + Shape = Diamond, // Round or Diamond shape. Diamond is more performance friendly. + }, + }, + Ewar = new EwarDef + { + Enable = false, // Enables EWAR effects AND DISABLES BASE DAMAGE AND AOE DAMAGE!! + Type = EnergySink, // EnergySink, Emp, Offense, Nav, Dot, AntiSmart, JumpNull, Anchor, Tractor, Pull, Push, + Mode = Effect, // Effect , Field + Strength = 100f, + Radius = 5f, // 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 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 : Targets & Shutdowns Thrusters + + */ + 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), starts at 0 (59 == tick 60). + 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 default bubble, or other model if specified. + ShowParticle = true, // Show Block damage effect. + 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. + FakeVoxelHitTicks = 0, // If this beam hits/misses a voxel it assumes it will continue to do so for this many ticks at the same hit length and not extend further within this window. This can save up to n times worth of cpu. + }, + 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 = 900, // 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, // Acceleration in Meters Per Second. Projectile starts on tick 0 at its parents (weapon/other projectiles) travel velocity. + DesiredSpeed = 500, // voxel phasing if you go above 5100 + MaxTrajectory = 1000f, // Max Distance the projectile or beam can Travel. + DeaccelTime = 0, // EWAR & Mines only- time to spend slowing down to stop at end of trajectory. 0 is instant stop + 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 + MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. + TotalAcceleration = 1234.5, // 0 means no limit, something to do due with a thing called delta and something called v. + Smarts = new SmartsDef + { + SteeringLimit = 0, // 0 means no limit, value is in degrees, good starting is 150. This enable advanced smart "control", cost of 3 on a scale of 1-5, 0 being basic smart. + Inaccuracy = 0f, // 0 is perfect, hit accuracy will be a random num of meters between 0 and this value. + Aggressiveness = 1f, // controls how responsive tracking is, recommended value 3-5. + MaxLateralThrust = 0.75, // controls how sharp the projectile may turn, this is the cheaper but less realistic version of SteeringLimit, cost of 2 on a scale of 1-5, 0 being basic smart. + NavAcceleration = 0, // helps influence how the projectile steers, 0 defaults to 1/2 Aggressiveness value or 0 if its 0, a value less than 0 disables this feature. + TrackingDelay = 0, // Measured in Shape diameter units traveled. + AccelClearance = false, // Setting this to true will prevent smart acceleration until it is clear of the grid and tracking delay has been met (free fall). + MaxChaseTime = 0, // 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 for drones/smarts + FutureIntersectionRange = 0, // Range in front of the projectile at which it will detect obstacle. If set to zero it defaults to DesiredSpeed + Shape Diameter + MaxTargets = 0, // 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 = 0.05f, // The ratio to offset the random direction (0 to 1) + OffsetTime = 60, // how often to offset degree, measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..) + OffsetMinRange = 0, // The range from target at which offsets are no longer active + FocusOnly = false, // only target the constructs Ai's focus target + FocusEviction = false, // If FocusOnly and this to true will force smarts to lose target when there is no focus target + ScanRange = 0, // 0 disables projectile screening, the max range that this projectile will be seen at by defending grids (adds this projectile to defenders lookup database). + NoSteering = false, // this disables target follow and instead travel straight ahead (but will respect offsets). + MinTurnSpeed = 0, // set this to a reasonable value to avoid projectiles from spinning in place or being too aggressive turing at slow speeds + NoTargetApproach = false, // If true approaches can begin prior to the projectile ever having had a target. + AltNavigation = false, // If true this will swap the default navigation algorithm from ProNav to ZeroEffort Miss. Zero effort is more direct/precise but less cinematic + }, + Approaches = new [] // These approaches move forward and backward in order, once the end condition of the last one is reached it will revert to default behavior. Cost level of 4+, or 5+ if used with steering. + { + /* + * What are approaches? How do they interact with other config variables? What problems do they solve? + * + * At the most basic level an "approach" is a collection of variables that allow you, the mod author, to tell the projectile how to "approach" + * a desired "destination" (aka position) when certain conditions are met and what to then do once it has arrived. I say "destination/position" and not "target" on + * purpose, while the desired destination may be the "target" it often is not. Keep in mind that approaches merely "influence" the projectiles path to + * a desired position, they do not absolutely determine it. Instead you are telling the projectile where you want it to go and through which + * trajectory it should travel to get there, but ultimately you are setting the desired flight path, you are not the pilot. + * + * Approaches are an extension of Smarts and these variables are applied ontop of, not in place of, all other config variables. This means anything + * you set in other parts of the config will still influence approaches and sometimes in unexpected ways (i.e. trackingDelay or not finding a target + * can delay when an approaches begins). In a few cases approaches have variables that override/alter/extend how non-approach variables behave. + * + * Approaches will not alter the path of a projectile until its start condition is met (and optionally maintained). Prior to "starting" the + * projectile will behave as it would have had there was no approach defined. This is also the case once all approaches have completed. + * + * Approaches require you to think about projectile navigation in an abstract manner. This is a good time to restate that you are merely "influencing" the + * projectile, you are not controlling/piloting it. The battlefield is dynamic, always changing, you are setting objectives and providing rules to follow + * if certain conditions are met, nothing more. You must also remember that although you are setting variables like positionB, positionC, elevation, lead + * upDirection, forwardDirection etc... these variables merely "influence" the projectiles heading relative to its current position and velocity, they do not + * represent its actual source nor destination positions, directions nor elevation. + * + * Said another way, imagine your projectile half way between its launcher and the "target" and it is at this time that your approach "starts". If you were + * to then draw this scene out visually, you would draw three spheres representing positions which we will call "projectile current position (aka positionA)", "positionB" + * and "positionC", where you only get to define the latter two. You then define two directions, a forward direction and an up direction. You can + * also optionally set a desired "elevation" relative to the up direction and a desired "lead" relative to the forward direction, applied to the positionB and/or + * positionC. Now draw a 1 and 2 that represents the modified positionB and positionC positions (taking into account elevation, lead, and rotations). Your + * projectiles heading will by default attempt to steer to modified C position (2), or alternatively to modified B (1) if you set TrajectoryRelativeToB to true. + */ + new ApproachDef // * in comments means default + { + // Start/End behaviors + RestartCondition = MoveToPrevious, // Wait*, MoveToPrevious, MoveToNext, ForceRestart -- A restart condition is when the end condition is reached without having met the start condition. + RestartList = new[] + { // This list is used if RestartCondition is set to ForceRestart and trigger requirement was met. -1 to reset to BEFORE the for approach stage was activated. First stage is 0, second is 1, etc... + new WeightedIdListDef + {// If all valid entries (below MaxRuns) role a 0 (i.e. weights are disabled), then the entry with the lowest current "Runs" will be selected, if two or more share lowest runs then the winner is decided by the order below. + ApproachId = -1, + MaxRuns = 0, // 0 means unlimited, defines how many times this entry can return true. + Weight = Random(0, 99), // The approachId that rolls the highest number will be selected + End1WeightMod = 0, // multiplies the weight Start and End value by this number, if both End conditions were true the highest roll between them wins, 0 means disabled + End2WeightMod = 0, + End3WeightMod = 0, + }, + new WeightedIdListDef + { + ApproachId = 0, + MaxRuns = 0, + Weight = Random(0, 55), + End1WeightMod = 0, + End2WeightMod = 0, + End3WeightMod = 0, + }, + new WeightedIdListDef + { + ApproachId = 1, + MaxRuns = 0, + Weight = Random(0, 31.5f), + End1WeightMod = 0, + End2WeightMod = 0, + End3WeightMod = 0, + }, + }, + Operators = StartEnd_And, // Controls how the start and end conditions are matched: StartEnd_And*, StartEnd_Or, StartAnd_EndOr,StartOr_EndAnd, + CanExpireOnceStarted = false, // This stages values will continue to apply until the end conditions are met. + ForceRestart = false, // This forces the ReStartCondition when the end condition is met no matter if the start condition was met or not. + + // Start/End conditions + StartCondition1 = Lifetime, // Each condition type is either >= or <= the corresponding value defined below. + // Ignore(skip this condition)*, DistanceFromPositionC[<=], DistanceToPositionC[>=], DistanceFromPositionB[<=], DistanceToPositionB[>=] + // DistanceFromTarget[<=], DistanceToTarget[>=], DistanceFromEndTrajectory[<=], DistanceToEndTrajectory[>=], Lifetime[>=], DeadTime[<=], + // MinTravelRequired[>=], MaxTravelRequired[<=], Spawn(per stage), DesiredElevation(tolerance can be set with ElevationTolerance), + // NextTimedSpawn[<=], SinceTimedSpawn[>=], RelativeLifetime[>=], RelativeDeadTime[<=], RelativeSpawns[>=], EnemyTargetLoss[>=], + // RelativeHealthLost[>=], HealthRemaining[<=], + // *NOTE* DO NOT set start1 and start2 or end1 and end2 to same condition + StartCondition2 = Ignore, + EndCondition1 = DesiredElevation, + EndCondition2 = Ignore, + EndCondition3 = Ignore, + // Start/End thresholds -- both conditions are evaluated before activation, use Ignore to skip + Start1Value = 60, + Start2Value = 0, + End1Value = 1000, + End2Value = 0, + End3Value = 0, + // Special triggers when the start/end conditions are met (DoNothing*, EndProjectile, EndProjectileOnRestart, StorePositionA, StorePositionB, StorePositionC, Refund) + StartEvent = DoNothing, + EndEvent = DoNothing, + + // Stored "Local" positions are always relative to the shooter and will remain true even if the shooter moves or rotates. + + // Relative positions and directions (relative to projectile current position aka PositionA) + Forward = ForwardElevationDirection, // ForwardElevationDirection*, ForwardRelativeToBlock, ForwardRelativeToShooter, ForwardRelativeToGravity, ForwardTargetDirection, ForwardTargetVelocity, ForwardStoredStartPosition, ForwardStoredEndPosition, ForwardStoredStartLocalPosition, ForwardStoredEndLocalPosition, ForwardOriginDirection + Up = UpRelativeToBlock, // UpRelativeToBlock*, UpRelativeToShooter, UpRelativeToGravity, UpTargetDirection, UpTargetVelocity, UpStoredStartPosition, UpStoredEndPosition, UpStoredStartLocalPosition, UpStoredEndLocalPosition, UpOriginDirection, UpElevationDirection + PositionB = Surface, // Origin*, Shooter, Target, Surface, MidPoint, PositionA, Nothing, StoredStartPosition, StoredEndPosition, StoredStartLocalPosition, StoredEndLocalPosition + PositionC = StoredStartPosition, + Elevation = Surface, + + // + // Control if the vantagepoints update every frame or only at start. + // + AdjustForward = true, // adjust forwardDir overtime. + AdjustUp = true, // adjust upDir overtime + AdjustPositionB = false, // Updated the position overtime. + AdjustPositionC = false, // Update the position overtime. + LeadRotateElevatePositionB = false, // Add Lead, Rotation and DesiredElevation to PositionB + LeadRotateElevatePositionC = false, // Add Lead, Rotation and DesiredElevation to PositionC + TrajectoryRelativeToB = false, // If true the projectiles immediate trajectory will be relative to PositionB instead of PositionC (e.g. quick response to elevation changes relative to PositionB position assuming that position is closer to PositionA) + ElevationRelativeToC = false, // If true the projectiles desired elevation will be relative to PositionC instead of PositionB (e.g. quick response to elevation changes relative to PositionC position assuming that position is closer to PositionA) + // Tweaks to vantagepoint behavior + AngleOffset = 0, // value 0 - 1, rotates the Updir and ForwardDir + AngleVariance = Random(0, 0), // added to AngleOffset above, values of 0,0 disables feature + ElevationTolerance = 0, // adds additional tolerance (in meters) to meet the Elevation condition requirement. *note* collision size is also added to the tolerance + TrackingDistance = 100, // Minimum travel distance before projectile begins racing to heading + DesiredElevation = 100, // The desired elevation relative to reference position + // Storage Values + StoredStartId = 0, // Which approach id the the start storage was saved in, if any. + StoredEndId = 0, // Which approach id the the end storage was saved in, if any. + StoredStartType = PositionA, // Uses same values as PositionB/PositionC/Elevation + StoredEndType = Target, + // Controls the leading behavior + LeadDistance = 40, // Add additional "lead" in meters to the trajectory (project in the future), this will be applied even before TrackingDistance is met. + PushLeadByTravelDistance = true, // the follow lead position will move in its point direction by an amount equal to the projectiles travel distance. + + // Modify speed and acceleration ratios while this approach is active + AccelMulti = 1.5, // Modify default acceleration by this factor + DeAccelMulti = 0, // Modifies your default deacceleration by this factor + TotalAccelMulti = 0, // Modifies your default totalacceleration by this factor + SpeedCapMulti = 0.5, // Limit max speed to this factor, must keep this value BELOW default maxspeed (1). + + // navigation behavior + Orbit = false, // Orbit the Position + OrbitRadius = 0, // The orbit radius to extend between the projectile and the Position (target volume + this value) + OffsetMinRadius = 0, // Min Radius to offset from Position. + OffsetMaxRadius = 0, // Max Radius to offset from Position. + OffsetTime = 0, // How often to change the offset radius. + + // Other + NoTimedSpawns = false, // When true timedSpawns will not be triggered while this approach is active. + DisableAvoidance = false, // Disable futureIntersect. + IgnoreAntiSmart = false, // If set to true, antismart cannot change this approaches target. + HeatRefund = 0, // how much heat to refund when related EndEvent/StartEvent is met. + ReloadRefund = false, // Refund a reload (for max reload). + ToggleIngoreVoxels = false, // Toggles whatever the default IgnoreVoxel value to its opposite. + SelfAvoidance = false, // If this and FutureIntersect is enabled then projectiles will actively avoid the parent grids. + TargetAvoidance = false, // If this and FutureIntersect is enabled then projectiles will actively avoid the target. + SelfPhasing = false, // If enabled the projectiles can phase through the parent grids without doing damage or dying. + SwapNavigationType = false, // This will swap to other navigation (i.e. the alternate of what is set in smart, ProNav vs ZeroEffort) + // Audio/Visual Section + AlternateParticle = new ParticleDef // if blank it will use default, must be a default version for this to be useable. + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + StartParticle = new ParticleDef // Optional particle to play when this stage begins + { + Name = "", + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + AlternateModel = "", // Define only if you want to switch to an alternate model in this phase + AlternateSound = "BoosterStageSound", // if blank it will use default, must be a default version for this to be useable. + ModelRotateTime = 0, // If this value is greater than 0 then the projectile model will rotate to face the target, a value of 1 is instant (in ticks). + }, + }, + Mines = new MinesDef // Note: This is being investigated. Please report to Github, any issues. + { + DetectRadius = 0, + DeCloakRadius = 0, + FieldTime = 0, + Cloak = false, + Persist = false, + }, + OnHit = new OnHitDef { + } + }, + AmmoGraphics = new GraphicDef + { + ModelName = "", // Model Path goes here. "\\Models\\Ammo\\Starcore_Arrow_Missile_Large" + VisualProbability = 1f, // % + ShieldHitDraw = false, + Decals = new DecalDef + { + MaxAge = 3600, + Map = new[] + { + new TextureMapDef + { + HitMaterial = "Metal", + DecalMaterial = "GunBullet", + }, + new TextureMapDef + { + HitMaterial = "Glass", + DecalMaterial = "GunBullet", + }, + }, + }, + Particles = new AmmoParticleDef + { + Ammo = new ParticleDef + { + Name = "", //ShipWelderArc + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false,// If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + }, + }, + Hit = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + Eject = new ParticleDef + { + Name = "", + ApplyToShield = true, + Offset = Vector(x: 0, y: 0, z: 0), + DisableCameraCulling = false, // If not true will not cull when not in view of camera, be careful with this and only use if you know you need it + Extras = new ParticleOptionDef + { + Scale = 1, + HitPlayChance = 1f, + }, + }, + }, + Lines = new LineDef + { + ColorVariance = Random(start: 0.75f, end: 2f), // multiply the color by random values within range. + WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) + DropParentVelocity = false, // If set to true will not take on the parents (grid/player) initial velocity when rendering. + + Tracer = new TracerBaseDef + { + Enable = true, + Length = 5f, // + Width = 0.1f, // + Color = Color(red: 3, green: 2, blue: 1f, alpha: 1), // RBG 255 is Neon Glowing, 100 is Quite Bright. + FactionColor = DontUse, // DontUse, Foreground, Background. + VisualFadeStart = 0, // Number of ticks the weapon has been firing before projectiles begin to fade their color + VisualFadeEnd = 0, // How many ticks after fade began before it will be invisible. + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] {// WeaponLaser, ProjectileTrailLine, WarpBubble, etc.. + "WeaponLaser", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, // Normal, Cycle, Chaos, Wave + Segmentation = new SegmentDef + { + Enable = false, // If true Tracer TextureMode is ignored + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + SegmentLength = 0f, // Uses the values below. + SegmentGap = 0f, // Uses Tracer textures and values + Speed = 1f, // meters per second + Color = Color(red: 1, green: 2, blue: 2.5f, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + WidthMultiplier = 1f, + Reverse = false, + UseLineVariance = true, + WidthVariance = Random(start: 0f, end: 0f), + ColorVariance = Random(start: 0f, end: 0f) + } + }, + Trail = new TrailDef + { + Enable = false, + AlwaysDraw = false, // Prevents this tracer from being culled. Only use if you have a reason too (very long tracers/trails). + Textures = new[] { + "", // Please always have this Line set, if this Section is enabled. + }, + TextureMode = Normal, + DecayTime = 3, // In Ticks. 1 = 1 Additional Tracer generated per motion, 33 is 33 lines drawn per projectile. Keep this number low. + Color = Color(red: 0, green: 0, blue: 1, alpha: 1), + FactionColor = DontUse, // DontUse, Foreground, Background. + Back = false, + CustomWidth = 0, + UseWidthVariance = false, + UseColorFade = true, + }, + OffsetEffect = new OffsetEffectDef + { + MaxOffset = 0,// 0 offset value disables this effect + MinLength = 0.2f, + MaxLength = 3, + }, + }, + }, + AmmoAudio = new AmmoAudioDef + { + TravelSound = "", // SubtypeID for your Sound File. Travel, is sound generated around your Projectile in flight + HitSound = "", + ShotSound = "", + ShieldHitSound = "", + PlayerHitSound = "", + VoxelHitSound = "", + FloatingHitSound = "", + HitPlayChance = 0.5f, + HitPlayShield = true, + }, + Ejection = new EjectionDef // Optional Component, allows generation of Particle or Item (Typically magazine), on firing, to simulate Tank shell ejection + { + Type = Particle, // Particle or Item (Inventory Component) + Speed = 100f, // Speed inventory is ejected from in dummy direction + SpawnChance = 0.5f, // chance of triggering effect (0 - 1) + CompDef = new ComponentDef + { + ItemName = "", //InventoryComponent name + ItemLifeTime = 0, // how long item should exist in world + Delay = 0, // delay in ticks after shot before ejected + } + }, // Don't edit below this line + }; + + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/PartCompile.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/PartCompile.cs index 217927a8b..447e3fece 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/PartCompile.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/PartCompile.cs @@ -1,133 +1,133 @@ -using System.Collections.Generic; -using System.ComponentModel; -using VRageMath; -using static Scripts.Structure; -using static Scripts.Structure.WeaponDefinition.AmmoDef; -using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove; -using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef; -using static Scripts.Structure.WeaponDefinition.AnimationDef; -using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef.EventTriggers; -using static Scripts.Structure.ArmorDefinition.ArmorType; - -namespace Scripts -{ - partial class Parts - { - internal ContainerDefinition Container = new ContainerDefinition(); - internal void PartDefinitions(params WeaponDefinition[] defs) - { - Container.WeaponDefs = defs; - } - - internal void ArmorDefinitions(params ArmorDefinition[] defs) - { - Container.ArmorDefs = defs; - } - - internal void SupportDefinitions(params SupportDefinition[] defs) - { - Container.SupportDefs = defs; - } - - internal void UpgradeDefinitions(params UpgradeDefinition[] defs) - { - Container.UpgradeDefs = defs; - } - - internal static void GetBaseDefinitions(out ContainerDefinition baseDefs) - { - baseDefs = new Parts().Container; - } - - internal static void SetModPath(ContainerDefinition baseDefs, string modContext) - { - if (baseDefs.WeaponDefs != null) - for (int i = 0; i < baseDefs.WeaponDefs.Length; i++) - baseDefs.WeaponDefs[i].ModPath = modContext; - - if (baseDefs.SupportDefs != null) - for (int i = 0; i < baseDefs.SupportDefs.Length; i++) - baseDefs.SupportDefs[i].ModPath = modContext; - - if (baseDefs.UpgradeDefs != null) - for (int i = 0; i < baseDefs.UpgradeDefs.Length; i++) - baseDefs.UpgradeDefs[i].ModPath = modContext; - } - - internal Randomize Random(float start, float end) - { - return new Randomize { Start = start, End = end }; - } - - internal Vector4 Color(float red, float green, float blue, float alpha) - { - return new Vector4(red, green, blue, alpha); - } - - internal Vector3D Vector(double x, double y, double z) - { - return new Vector3D(x, y, z); - } - - internal XYZ Transformation(double X, double Y, double Z) - { - return new XYZ { x = X, y = Y, z = Z }; - } - - internal Dictionary Delays(uint FiringDelay = 0, uint ReloadingDelay = 0, uint OverheatedDelay = 0, uint TrackingDelay = 0, uint LockedDelay = 0, uint OnDelay = 0, uint OffDelay = 0, uint BurstReloadDelay = 0, uint OutOfAmmoDelay = 0, uint PreFireDelay = 0, uint StopFiringDelay = 0, uint StopTrackingDelay = 0, uint InitDelay = 0, uint HomingDelay = 0, uint TargetAlignedDelay = 0, uint WhileOnDelay = 0, uint TargetRanged100Delay = 0, uint TargetRanged75Delay = 0, uint TargetRanged50Delay = 0, uint TargetRanged25Delay = 0) - { - return new Dictionary - { - [Firing] = FiringDelay, - [Reloading] = ReloadingDelay, - [Overheated] = OverheatedDelay, - [Tracking] = TrackingDelay, - [TurnOn] = OnDelay, - [TurnOff] = OffDelay, - [BurstReload] = BurstReloadDelay, - [NoMagsToLoad] = OutOfAmmoDelay, - [PreFire] = PreFireDelay, - [EmptyOnGameLoad] = 0, - [StopFiring] = StopFiringDelay, - [StopTracking] = StopTrackingDelay, - [LockDelay] = LockedDelay, - [Init] = InitDelay, - [Homing] = HomingDelay, - [TargetAligned] = TargetAlignedDelay, - [WhileOn] = WhileOnDelay, - [TargetRanged100] = TargetRanged100Delay, - [TargetRanged75] = TargetRanged75Delay, - [TargetRanged50] = TargetRanged50Delay, - [TargetRanged25] = TargetRanged25Delay, - }; - } - - internal PartEmissive Emissive(string EmissiveName, bool CycleEmissiveParts, bool LeavePreviousOn, Vector4[] Colors, float IntensityFrom, float IntensityTo, string[] EmissivePartNames) - { - return new PartEmissive - { - EmissiveName = EmissiveName, - Colors = Colors, - CycleEmissivesParts = CycleEmissiveParts, - LeavePreviousOn = LeavePreviousOn, - EmissivePartNames = EmissivePartNames, - IntensityRange = new[]{ IntensityFrom, IntensityTo } - }; - } - - internal EventTriggers[] Events(params EventTriggers[] events) - { - return events; - } - - internal string[] Names(params string[] names) - { - return names; - } - - internal string[] AmmoRounds(params string[] names) - { - return names; - } - } -} +using System.Collections.Generic; +using System.ComponentModel; +using VRageMath; +using static Scripts.Structure; +using static Scripts.Structure.WeaponDefinition.AmmoDef; +using static Scripts.Structure.WeaponDefinition.AnimationDef.RelMove; +using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef; +using static Scripts.Structure.WeaponDefinition.AnimationDef; +using static Scripts.Structure.WeaponDefinition.AnimationDef.PartAnimationSetDef.EventTriggers; +using static Scripts.Structure.ArmorDefinition.ArmorType; + +namespace Scripts +{ + partial class Parts + { + internal ContainerDefinition Container = new ContainerDefinition(); + internal void PartDefinitions(params WeaponDefinition[] defs) + { + Container.WeaponDefs = defs; + } + + internal void ArmorDefinitions(params ArmorDefinition[] defs) + { + Container.ArmorDefs = defs; + } + + internal void SupportDefinitions(params SupportDefinition[] defs) + { + Container.SupportDefs = defs; + } + + internal void UpgradeDefinitions(params UpgradeDefinition[] defs) + { + Container.UpgradeDefs = defs; + } + + internal static void GetBaseDefinitions(out ContainerDefinition baseDefs) + { + baseDefs = new Parts().Container; + } + + internal static void SetModPath(ContainerDefinition baseDefs, string modContext) + { + if (baseDefs.WeaponDefs != null) + for (int i = 0; i < baseDefs.WeaponDefs.Length; i++) + baseDefs.WeaponDefs[i].ModPath = modContext; + + if (baseDefs.SupportDefs != null) + for (int i = 0; i < baseDefs.SupportDefs.Length; i++) + baseDefs.SupportDefs[i].ModPath = modContext; + + if (baseDefs.UpgradeDefs != null) + for (int i = 0; i < baseDefs.UpgradeDefs.Length; i++) + baseDefs.UpgradeDefs[i].ModPath = modContext; + } + + internal Randomize Random(float start, float end) + { + return new Randomize { Start = start, End = end }; + } + + internal Vector4 Color(float red, float green, float blue, float alpha) + { + return new Vector4(red, green, blue, alpha); + } + + internal Vector3D Vector(double x, double y, double z) + { + return new Vector3D(x, y, z); + } + + internal XYZ Transformation(double X, double Y, double Z) + { + return new XYZ { x = X, y = Y, z = Z }; + } + + internal Dictionary Delays(uint FiringDelay = 0, uint ReloadingDelay = 0, uint OverheatedDelay = 0, uint TrackingDelay = 0, uint LockedDelay = 0, uint OnDelay = 0, uint OffDelay = 0, uint BurstReloadDelay = 0, uint OutOfAmmoDelay = 0, uint PreFireDelay = 0, uint StopFiringDelay = 0, uint StopTrackingDelay = 0, uint InitDelay = 0, uint HomingDelay = 0, uint TargetAlignedDelay = 0, uint WhileOnDelay = 0, uint TargetRanged100Delay = 0, uint TargetRanged75Delay = 0, uint TargetRanged50Delay = 0, uint TargetRanged25Delay = 0) + { + return new Dictionary + { + [Firing] = FiringDelay, + [Reloading] = ReloadingDelay, + [Overheated] = OverheatedDelay, + [Tracking] = TrackingDelay, + [TurnOn] = OnDelay, + [TurnOff] = OffDelay, + [BurstReload] = BurstReloadDelay, + [NoMagsToLoad] = OutOfAmmoDelay, + [PreFire] = PreFireDelay, + [EmptyOnGameLoad] = 0, + [StopFiring] = StopFiringDelay, + [StopTracking] = StopTrackingDelay, + [LockDelay] = LockedDelay, + [Init] = InitDelay, + [Homing] = HomingDelay, + [TargetAligned] = TargetAlignedDelay, + [WhileOn] = WhileOnDelay, + [TargetRanged100] = TargetRanged100Delay, + [TargetRanged75] = TargetRanged75Delay, + [TargetRanged50] = TargetRanged50Delay, + [TargetRanged25] = TargetRanged25Delay, + }; + } + + internal PartEmissive Emissive(string EmissiveName, bool CycleEmissiveParts, bool LeavePreviousOn, Vector4[] Colors, float IntensityFrom, float IntensityTo, string[] EmissivePartNames) + { + return new PartEmissive + { + EmissiveName = EmissiveName, + Colors = Colors, + CycleEmissivesParts = CycleEmissiveParts, + LeavePreviousOn = LeavePreviousOn, + EmissivePartNames = EmissivePartNames, + IntensityRange = new[]{ IntensityFrom, IntensityTo } + }; + } + + internal EventTriggers[] Events(params EventTriggers[] events) + { + return events; + } + + internal string[] Names(params string[] names) + { + return names; + } + + internal string[] AmmoRounds(params string[] names) + { + return names; + } + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Slave.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Slave.cs index a115e1130..4dcf3dfda 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Slave.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Slave.cs @@ -1,90 +1,90 @@ -using System; -using System.IO; -using System.Runtime.InteropServices.ComTypes; -using System.Text; -using Sandbox.ModAPI; -using VRage.Game.Components; -using static Scripts.Structure; -namespace Scripts -{ - [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate, int.MaxValue)] - public class Session : MySessionComponentBase - { - public override void LoadData() - { - Log.Init($"{ModContext.ModName}Init.log"); - MyAPIGateway.Utilities.RegisterMessageHandler(7772, Handler); - Init(); - SendModMessage(true); - } - - protected override void UnloadData() - { - Log.Close(); - MyAPIGateway.Utilities.UnregisterMessageHandler(7772, Handler); - Array.Clear(Storage, 0, Storage.Length); - Storage = null; - } - - void Handler(object o) - { - if (o == null) SendModMessage(false); - } - - void SendModMessage(bool sending) - { - Log.CleanLine(sending ? "Sending request to core" : "Receiving request from core"); - MyAPIGateway.Utilities.SendModMessage(7771, Storage); - } - - internal byte[] Storage; - - internal void Init() - { - ContainerDefinition baseDefs; - Parts.GetBaseDefinitions(out baseDefs); - Parts.SetModPath(baseDefs, ModContext.ModPath); - Storage = MyAPIGateway.Utilities.SerializeToBinary(baseDefs); - Log.CleanLine($"Handing over control to Core and going to sleep"); - } - - public class Log - { - private static Log _instance = null; - internal TextWriter File = null; - - public static void Init(string name) - { - var sb = new StringBuilder(name); - ReplaceAll(sb, Path.GetInvalidFileNameChars(), '_'); - _instance = new Log {File = MyAPIGateway.Utilities.WriteFileInLocalStorage(sb.ToString(), typeof(Log))}; - } - - public static void ReplaceAll(StringBuilder sb, char[] charlist, char replacewith) - { - for (int i = 0; i < sb.Length; i++) - { - if (charlist.Contains(sb[i])) - sb[i] = replacewith; - } - } - - public static void CleanLine(string text) - { - _instance.File.WriteLine(text); - _instance.File.Flush(); - } - - public static void Close() - { - if (_instance?.File == null) return; - _instance.File.Flush(); - _instance.File.Close(); - _instance.File.Dispose(); - _instance.File = null; - _instance = null; - } - } - } -} - +using System; +using System.IO; +using System.Runtime.InteropServices.ComTypes; +using System.Text; +using Sandbox.ModAPI; +using VRage.Game.Components; +using static Scripts.Structure; +namespace Scripts +{ + [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate, int.MaxValue)] + public class Session : MySessionComponentBase + { + public override void LoadData() + { + Log.Init($"{ModContext.ModName}Init.log"); + MyAPIGateway.Utilities.RegisterMessageHandler(7772, Handler); + Init(); + SendModMessage(true); + } + + protected override void UnloadData() + { + Log.Close(); + MyAPIGateway.Utilities.UnregisterMessageHandler(7772, Handler); + Array.Clear(Storage, 0, Storage.Length); + Storage = null; + } + + void Handler(object o) + { + if (o == null) SendModMessage(false); + } + + void SendModMessage(bool sending) + { + Log.CleanLine(sending ? "Sending request to core" : "Receiving request from core"); + MyAPIGateway.Utilities.SendModMessage(7771, Storage); + } + + internal byte[] Storage; + + internal void Init() + { + ContainerDefinition baseDefs; + Parts.GetBaseDefinitions(out baseDefs); + Parts.SetModPath(baseDefs, ModContext.ModPath); + Storage = MyAPIGateway.Utilities.SerializeToBinary(baseDefs); + Log.CleanLine($"Handing over control to Core and going to sleep"); + } + + public class Log + { + private static Log _instance = null; + internal TextWriter File = null; + + public static void Init(string name) + { + var sb = new StringBuilder(name); + ReplaceAll(sb, Path.GetInvalidFileNameChars(), '_'); + _instance = new Log {File = MyAPIGateway.Utilities.WriteFileInLocalStorage(sb.ToString(), typeof(Log))}; + } + + public static void ReplaceAll(StringBuilder sb, char[] charlist, char replacewith) + { + for (int i = 0; i < sb.Length; i++) + { + if (charlist.Contains(sb[i])) + sb[i] = replacewith; + } + } + + public static void CleanLine(string text) + { + _instance.File.WriteLine(text); + _instance.File.Flush(); + } + + public static void Close() + { + if (_instance?.File == null) return; + _instance.File.Flush(); + _instance.File.Close(); + _instance.File.Dispose(); + _instance.File = null; + _instance = null; + } + } + } +} + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Structure.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Structure.cs index b6fa49f76..d82791a8e 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Structure.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/CoreParts/script/Structure.cs @@ -1,1570 +1,1569 @@ -using System.Collections.Generic; -using ProtoBuf; -using VRageMath; - -namespace Scripts -{ - public class Structure - { - [ProtoContract] - public class ContainerDefinition - { - [ProtoMember(1)] internal WeaponDefinition[] WeaponDefs; - [ProtoMember(2)] internal ArmorDefinition[] ArmorDefs; - [ProtoMember(3)] internal UpgradeDefinition[] UpgradeDefs; - [ProtoMember(4)] internal SupportDefinition[] SupportDefs; - } - - [ProtoContract] - public class ConsumeableDef - { - [ProtoMember(1)] internal string ItemName; - [ProtoMember(2)] internal string InventoryItem; - [ProtoMember(3)] internal int ItemsNeeded; - [ProtoMember(4)] internal bool Hybrid; - [ProtoMember(5)] internal float EnergyCost; - [ProtoMember(6)] internal float Strength; - } - - [ProtoContract] - public class UpgradeDefinition - { - [ProtoMember(1)] internal ModelAssignmentsDef Assignments; - [ProtoMember(2)] internal HardPointDef HardPoint; - [ProtoMember(3)] internal WeaponDefinition.AnimationDef Animations; - [ProtoMember(4)] internal string ModPath; - [ProtoMember(5)] internal ConsumeableDef[] Consumable; - - [ProtoContract] - public struct ModelAssignmentsDef - { - [ProtoMember(1)] internal MountPointDef[] MountPoints; - - [ProtoContract] - public struct MountPointDef - { - [ProtoMember(1)] internal string SubtypeId; - [ProtoMember(2)] internal float DurabilityMod; - [ProtoMember(3)] internal string IconName; - } - } - - [ProtoContract] - public struct HardPointDef - { - [ProtoMember(1)] internal string PartName; - [ProtoMember(2)] internal HardwareDef HardWare; - [ProtoMember(3)] internal UiDef Ui; - [ProtoMember(4)] internal OtherDef Other; - - - [ProtoContract] - public struct UiDef - { - [ProtoMember(1)] internal bool StrengthModifier; - } - - [ProtoContract] - public struct HardwareDef - { - public enum HardwareType - { - Default, - } - - [ProtoMember(1)] internal float InventorySize; - [ProtoMember(2)] internal HardwareType Type; - [ProtoMember(3)] internal int BlockDistance; - [ProtoMember(4)] internal float IdlePower; - } - - [ProtoContract] - public struct OtherDef - { - [ProtoMember(1)] internal int ConstructPartCap; - [ProtoMember(2)] internal int EnergyPriority; - [ProtoMember(3)] internal bool Debug; - [ProtoMember(4)] internal double RestrictionRadius; - [ProtoMember(5)] internal bool CheckInflatedBox; - [ProtoMember(6)] internal bool CheckForAnySupport; - [ProtoMember(7)] internal bool StayCharged; - } - } - - } - - [ProtoContract] - public class SupportDefinition - { - [ProtoMember(1)] internal ModelAssignmentsDef Assignments; - [ProtoMember(2)] internal HardPointDef HardPoint; - [ProtoMember(3)] internal WeaponDefinition.AnimationDef Animations; - [ProtoMember(4)] internal string ModPath; - [ProtoMember(5)] internal ConsumeableDef[] Consumable; - [ProtoMember(6)] internal SupportEffect Effect; - - [ProtoContract] - public struct ModelAssignmentsDef - { - [ProtoMember(1)] internal MountPointDef[] MountPoints; - - [ProtoContract] - public struct MountPointDef - { - [ProtoMember(1)] internal string SubtypeId; - [ProtoMember(2)] internal float DurabilityMod; - [ProtoMember(3)] internal string IconName; - } - } - [ProtoContract] - public struct HardPointDef - { - [ProtoMember(1)] internal string PartName; - [ProtoMember(2)] internal HardwareDef HardWare; - [ProtoMember(3)] internal UiDef Ui; - [ProtoMember(4)] internal OtherDef Other; - - [ProtoContract] - public struct UiDef - { - [ProtoMember(1)] internal bool ProtectionControl; - } - - [ProtoContract] - public struct HardwareDef - { - [ProtoMember(1)] internal float InventorySize; - [ProtoMember(2)] internal float IdlePower; - } - - [ProtoContract] - public struct OtherDef - { - [ProtoMember(1)] internal int ConstructPartCap; - [ProtoMember(2)] internal int EnergyPriority; - [ProtoMember(3)] internal bool Debug; - [ProtoMember(4)] internal double RestrictionRadius; - [ProtoMember(5)] internal bool CheckInflatedBox; - [ProtoMember(6)] internal bool CheckForAnySupport; - [ProtoMember(7)] internal bool StayCharged; - } - } - - [ProtoContract] - public struct SupportEffect - { - public enum AffectedBlocks - { - Armor, - ArmorPlus, - PlusFunctional, - All, - } - - public enum Protections - { - KineticProt, - EnergeticProt, - GenericProt, - Regenerate, - Structural, - } - - [ProtoMember(1)] internal Protections Protection; - [ProtoMember(2)] internal AffectedBlocks Affected; - [ProtoMember(3)] internal int BlockRange; - [ProtoMember(4)] internal int MaxPoints; - [ProtoMember(5)] internal int PointsPerCharge; - [ProtoMember(6)] internal int UsablePerSecond; - [ProtoMember(7)] internal int UsablePerMinute; - [ProtoMember(8)] internal float Overflow; - [ProtoMember(9)] internal float Effectiveness; - [ProtoMember(10)] internal float ProtectionMin; - [ProtoMember(11)] internal float ProtectionMax; - } - } - - [ProtoContract] - public class ArmorDefinition - { - internal enum ArmorType - { - Light, - Heavy, - NonArmor, - } - - [ProtoMember(1)] internal string[] SubtypeIds; - [ProtoMember(2)] internal ArmorType Kind; - [ProtoMember(3)] internal double KineticResistance; - [ProtoMember(4)] internal double EnergeticResistance; - } - - [ProtoContract] - public class WeaponDefinition - { - [ProtoMember(1)] internal ModelAssignmentsDef Assignments; - [ProtoMember(2)] internal TargetingDef Targeting; - [ProtoMember(3)] internal AnimationDef Animations; - [ProtoMember(4)] internal HardPointDef HardPoint; - [ProtoMember(5)] internal AmmoDef[] Ammos; - [ProtoMember(6)] internal string ModPath; - [ProtoMember(7)] internal Dictionary Upgrades; - - [ProtoContract] - public struct ModelAssignmentsDef - { - [ProtoMember(1)] internal MountPointDef[] MountPoints; - [ProtoMember(2)] internal string[] Muzzles; - [ProtoMember(3)] internal string Ejector; - [ProtoMember(4)] internal string Scope; - - [ProtoContract] - public struct MountPointDef - { - [ProtoMember(1)] internal string SubtypeId; - [ProtoMember(2)] internal string SpinPartId; - [ProtoMember(3)] internal string MuzzlePartId; - [ProtoMember(4)] internal string AzimuthPartId; - [ProtoMember(5)] internal string ElevationPartId; - [ProtoMember(6)] internal float DurabilityMod; - [ProtoMember(7)] internal string IconName; - [ProtoMember(8)] internal string PhantomModel; - } - } - - [ProtoContract] - public struct TargetingDef - { - public enum Threat - { - Projectiles, - Characters, - Grids, - Neutrals, - Meteors, - Other, - ScanNeutralGrid, - ScanFriendlyGrid, - ScanFriendlyCharacter, - ScanRoid, - ScanPlanet, - ScanEnemyCharacter, - ScanEnemyGrid, - ScanNeutralCharacter, - ScanUnOwnedGrid, - ScanOwnersGrid - } - - public enum BlockTypes - { - Any, - Offense, - Utility, - Power, - Production, - Thrust, - Jumping, - Steering - } - - [ProtoMember(1)] internal int TopTargets; - [ProtoMember(2)] internal int TopBlocks; - [ProtoMember(3)] internal double StopTrackingSpeed; - [ProtoMember(4)] internal float MinimumDiameter; - [ProtoMember(5)] internal float MaximumDiameter; - [ProtoMember(6)] internal bool ClosestFirst; - [ProtoMember(7)] internal BlockTypes[] SubSystems; - [ProtoMember(8)] internal Threat[] Threats; - [ProtoMember(9)] internal float MaxTargetDistance; - [ProtoMember(10)] internal float MinTargetDistance; - [ProtoMember(11)] internal bool IgnoreDumbProjectiles; - [ProtoMember(12)] internal bool LockedSmartOnly; - [ProtoMember(13)] internal bool UniqueTargetPerWeapon; - [ProtoMember(14)] internal int MaxTrackingTime; - [ProtoMember(15)] internal bool ShootBlanks; - [ProtoMember(19)] internal CommunicationDef Communications; - [ProtoMember(20)] internal bool FocusOnly; - [ProtoMember(21)] internal bool EvictUniqueTargets; - [ProtoMember(22)] internal int CycleTargets; - [ProtoMember(23)] internal int CycleBlocks; - - [ProtoContract] - public struct CommunicationDef - { - public enum Comms - { - NoComms, - LocalNetwork, - BroadCast, - Relay, - Repeat, - Jamming, - } - - public enum SecurityMode - { - Public, - Private, - Secure, - } - - [ProtoMember(1)] internal bool StoreTargets; - [ProtoMember(2)] internal int StorageLimit; - [ProtoMember(3)] internal string StorageLocation; - [ProtoMember(4)] internal Comms Mode; - [ProtoMember(5)] internal SecurityMode Security; - [ProtoMember(6)] internal string BroadCastChannel; - [ProtoMember(7)] internal double BroadCastRange; - [ProtoMember(8)] internal double JammingStrength; - [ProtoMember(9)] internal string RelayChannel; - [ProtoMember(10)] internal double RelayRange; - [ProtoMember(11)] internal bool TargetPersists; - [ProtoMember(12)] internal bool StoreLimitPerBlock; - [ProtoMember(13)] internal int MaxConnections; - } - } - - - [ProtoContract] - public struct AnimationDef - { - [ProtoMember(1)] internal PartAnimationSetDef[] AnimationSets; - [ProtoMember(2)] internal PartEmissive[] Emissives; - [ProtoMember(3)] internal string[] HeatingEmissiveParts; - [ProtoMember(4)] internal Dictionary EventParticles; - - [ProtoContract(IgnoreListHandling = true)] - public struct PartAnimationSetDef - { - public enum EventTriggers - { - Reloading, - Firing, - Tracking, - Overheated, - TurnOn, - TurnOff, - BurstReload, - NoMagsToLoad, - PreFire, - EmptyOnGameLoad, - StopFiring, - StopTracking, - LockDelay, - Init, - Homing, - TargetAligned, - WhileOn, - TargetRanged100, - TargetRanged75, - TargetRanged50, - TargetRanged25, - } - - public enum ResetConditions - { - None, - Home, - Off, - On, - Reloaded - } - - [ProtoMember(1)] internal string[] SubpartId; - [ProtoMember(2)] internal string BarrelId; - [ProtoMember(3)] internal uint StartupFireDelay; - [ProtoMember(4)] internal Dictionary AnimationDelays; - [ProtoMember(5)] internal EventTriggers[] Reverse; - [ProtoMember(6)] internal EventTriggers[] Loop; - [ProtoMember(7)] internal Dictionary EventMoveSets; - [ProtoMember(8)] internal EventTriggers[] TriggerOnce; - [ProtoMember(9)] internal EventTriggers[] ResetEmissives; - [ProtoMember(10)] internal ResetConditions Resets; - } - - [ProtoContract] - public struct PartEmissive - { - [ProtoMember(1)] internal string EmissiveName; - [ProtoMember(2)] internal string[] EmissivePartNames; - [ProtoMember(3)] internal bool CycleEmissivesParts; - [ProtoMember(4)] internal bool LeavePreviousOn; - [ProtoMember(5)] internal Vector4[] Colors; - [ProtoMember(6)] internal float[] IntensityRange; - } - [ProtoContract] - public struct EventParticle - { - [ProtoMember(1)] internal string[] EmptyNames; - [ProtoMember(2)] internal string[] MuzzleNames; - [ProtoMember(3)] internal ParticleDef Particle; - [ProtoMember(4)] internal uint StartDelay; - [ProtoMember(5)] internal uint LoopDelay; - [ProtoMember(6)] internal bool ForceStop; - } - [ProtoContract] - internal struct RelMove - { - public enum MoveType - { - Linear, - ExpoDecay, - ExpoGrowth, - Delay, - Show, //instant or fade - Hide, //instant or fade - } - - [ProtoMember(1)] internal MoveType MovementType; - [ProtoMember(2)] internal XYZ[] LinearPoints; - [ProtoMember(3)] internal XYZ Rotation; - [ProtoMember(4)] internal XYZ RotAroundCenter; - [ProtoMember(5)] internal uint TicksToMove; - [ProtoMember(6)] internal string CenterEmpty; - [ProtoMember(7)] internal bool Fade; - [ProtoMember(8)] internal string EmissiveName; - - [ProtoContract] - internal struct XYZ - { - [ProtoMember(1)] internal double x; - [ProtoMember(2)] internal double y; - [ProtoMember(3)] internal double z; - } - } - } - - [ProtoContract] - public struct UpgradeValues - { - [ProtoMember(1)] internal string[] Ammo; - [ProtoMember(2)] internal Dependency[] Dependencies; - [ProtoMember(3)] internal int RateOfFireMod; - [ProtoMember(4)] internal int BarrelsPerShotMod; - [ProtoMember(5)] internal int ReloadMod; - [ProtoMember(6)] internal int MaxHeatMod; - [ProtoMember(7)] internal int HeatSinkRateMod; - [ProtoMember(8)] internal int ShotsInBurstMod; - [ProtoMember(9)] internal int DelayAfterBurstMod; - [ProtoMember(10)] internal int AmmoPriority; - - [ProtoContract] - public struct Dependency - { - internal string SubtypeId; - internal int Quanity; - } - } - - [ProtoContract] - public struct HardPointDef - { - public enum Prediction - { - Off, - Basic, - Accurate, - Advanced, - } - - [ProtoMember(1)] internal string PartName; - [ProtoMember(2)] internal int DelayCeaseFire; - [ProtoMember(3)] internal float DeviateShotAngle; - [ProtoMember(4)] internal double AimingTolerance; - [ProtoMember(5)] internal Prediction AimLeadingPrediction; - [ProtoMember(6)] internal LoadingDef Loading; - [ProtoMember(7)] internal AiDef Ai; - [ProtoMember(8)] internal HardwareDef HardWare; - [ProtoMember(9)] internal UiDef Ui; - [ProtoMember(10)] internal HardPointAudioDef Audio; - [ProtoMember(11)] internal HardPointParticleDef Graphics; - [ProtoMember(12)] internal OtherDef Other; - [ProtoMember(13)] internal bool AddToleranceToTracking; - [ProtoMember(14)] internal bool CanShootSubmerged; - [ProtoMember(15)] internal bool NpcSafe; - [ProtoMember(16)] internal bool ScanTrackOnly; - - [ProtoContract] - public struct LoadingDef - { - [ProtoMember(1)] internal int ReloadTime; - [ProtoMember(2)] internal int RateOfFire; - [ProtoMember(3)] internal int BarrelsPerShot; - [ProtoMember(4)] internal int SkipBarrels; - [ProtoMember(5)] internal int TrajectilesPerBarrel; - [ProtoMember(6)] internal int HeatPerShot; - [ProtoMember(7)] internal int MaxHeat; - [ProtoMember(8)] internal int HeatSinkRate; - [ProtoMember(9)] internal float Cooldown; - [ProtoMember(10)] internal int DelayUntilFire; - [ProtoMember(11)] internal int ShotsInBurst; - [ProtoMember(12)] internal int DelayAfterBurst; - [ProtoMember(13)] internal bool DegradeRof; - [ProtoMember(14)] internal int BarrelSpinRate; - [ProtoMember(15)] internal bool FireFull; - [ProtoMember(16)] internal bool GiveUpAfter; - [ProtoMember(17)] internal bool DeterministicSpin; - [ProtoMember(18)] internal bool SpinFree; - [ProtoMember(19)] internal bool StayCharged; - [ProtoMember(20)] internal int MagsToLoad; - [ProtoMember(21)] internal int MaxActiveProjectiles; - [ProtoMember(22)] internal int MaxReloads; - [ProtoMember(23)] internal bool GoHomeToReload; - [ProtoMember(24)] internal bool DropTargetUntilLoaded; - } - - - [ProtoContract] - public struct UiDef - { - [ProtoMember(1)] internal bool RateOfFire; - [ProtoMember(2)] internal bool DamageModifier; - [ProtoMember(3)] internal bool ToggleGuidance; - [ProtoMember(4)] internal bool EnableOverload; - [ProtoMember(5)] internal bool AlternateUi; - [ProtoMember(6)] internal bool DisableStatus; - [ProtoMember(7)] internal float RateOfFireMin; - [ProtoMember(8)] internal bool DisableSupportingPD; - } - - - [ProtoContract] - public struct AiDef - { - [ProtoMember(1)] internal bool TrackTargets; - [ProtoMember(2)] internal bool TurretAttached; - [ProtoMember(3)] internal bool TurretController; - [ProtoMember(4)] internal bool PrimaryTracking; - [ProtoMember(5)] internal bool LockOnFocus; - [ProtoMember(6)] internal bool SuppressFire; - [ProtoMember(7)] internal bool OverrideLeads; - [ProtoMember(8)] internal int DefaultLeadGroup; - [ProtoMember(9)] internal bool TargetGridCenter; - } - - [ProtoContract] - public struct HardwareDef - { - public enum HardwareType - { - BlockWeapon = 0, - HandWeapon = 1, - Phantom = 6, - } - - [ProtoMember(1)] internal float RotateRate; - [ProtoMember(2)] internal float ElevateRate; - [ProtoMember(3)] internal Vector3D Offset; - [ProtoMember(4)] internal bool FixedOffset; - [ProtoMember(5)] internal int MaxAzimuth; - [ProtoMember(6)] internal int MinAzimuth; - [ProtoMember(7)] internal int MaxElevation; - [ProtoMember(8)] internal int MinElevation; - [ProtoMember(9)] internal float InventorySize; - [ProtoMember(10)] internal HardwareType Type; - [ProtoMember(11)] internal int HomeAzimuth; - [ProtoMember(12)] internal int HomeElevation; - [ProtoMember(13)] internal CriticalDef CriticalReaction; - [ProtoMember(14)] internal float IdlePower; - - [ProtoContract] - public struct CriticalDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal int DefaultArmedTimer; - [ProtoMember(3)] internal bool PreArmed; - [ProtoMember(4)] internal bool TerminalControls; - [ProtoMember(5)] internal string AmmoRound; - } - } - - [ProtoContract] - public struct HardPointAudioDef - { - [ProtoMember(1)] internal string ReloadSound; - [ProtoMember(2)] internal string NoAmmoSound; - [ProtoMember(3)] internal string HardPointRotationSound; - [ProtoMember(4)] internal string BarrelRotationSound; - [ProtoMember(5)] internal string FiringSound; - [ProtoMember(6)] internal bool FiringSoundPerShot; - [ProtoMember(7)] internal string PreFiringSound; - [ProtoMember(8)] internal uint FireSoundEndDelay; - [ProtoMember(9)] internal bool FireSoundNoBurst; - } - - [ProtoContract] - public struct OtherDef - { - [ProtoMember(1)] internal int ConstructPartCap; - [ProtoMember(2)] internal int EnergyPriority; - [ProtoMember(3)] internal int RotateBarrelAxis; - [ProtoMember(4)] internal bool MuzzleCheck; - [ProtoMember(5)] internal bool Debug; - [ProtoMember(6)] internal double RestrictionRadius; - [ProtoMember(7)] internal bool CheckInflatedBox; - [ProtoMember(8)] internal bool CheckForAnyWeapon; - [ProtoMember(9)] internal bool DisableLosCheck; - [ProtoMember(10)] internal bool NoVoxelLosCheck; - - } - - [ProtoContract] - public struct HardPointParticleDef - { - [ProtoMember(1)] internal ParticleDef Effect1; - [ProtoMember(2)] internal ParticleDef Effect2; - } - } - - [ProtoContract] - public class AmmoDef - { - [ProtoMember(1)] internal string AmmoMagazine; - [ProtoMember(2)] internal string AmmoRound; - [ProtoMember(3)] internal bool HybridRound; - [ProtoMember(4)] internal float EnergyCost; - [ProtoMember(5)] internal float BaseDamage; - [ProtoMember(6)] internal float Mass; - [ProtoMember(7)] internal float Health; - [ProtoMember(8)] internal float BackKickForce; - [ProtoMember(9)] internal DamageScaleDef DamageScales; - [ProtoMember(10)] internal ShapeDef Shape; - [ProtoMember(11)] internal ObjectsHitDef ObjectsHit; - [ProtoMember(12)] internal TrajectoryDef Trajectory; - [ProtoMember(13)] internal AreaDamageDef AreaEffect; - [ProtoMember(14)] internal BeamDef Beams; - [ProtoMember(15)] internal FragmentDef Fragment; - [ProtoMember(16)] internal GraphicDef AmmoGraphics; - [ProtoMember(17)] internal AmmoAudioDef AmmoAudio; - [ProtoMember(18)] internal bool HardPointUsable; - [ProtoMember(19)] internal PatternDef Pattern; - [ProtoMember(20)] internal int EnergyMagazineSize; - [ProtoMember(21)] internal float DecayPerShot; - [ProtoMember(22)] internal EjectionDef Ejection; - [ProtoMember(23)] internal bool IgnoreWater; - [ProtoMember(24)] internal AreaOfDamageDef AreaOfDamage; - [ProtoMember(25)] internal EwarDef Ewar; - [ProtoMember(26)] internal bool IgnoreVoxels; - [ProtoMember(27)] internal bool Synchronize; - [ProtoMember(28)] internal double HeatModifier; - [ProtoMember(29)] internal bool NpcSafe; - [ProtoMember(30)] internal SynchronizeDef Sync; - [ProtoMember(31)] internal bool NoGridOrArmorScaling; - - [ProtoContract] - public struct SynchronizeDef - { - [ProtoMember(1)] internal bool Full; - [ProtoMember(2)] internal bool PointDefense; - [ProtoMember(3)] internal bool OnHitDeath; - } - - [ProtoContract] - public struct DamageScaleDef - { - - [ProtoMember(1)] internal float MaxIntegrity; - [ProtoMember(2)] internal bool DamageVoxels; - [ProtoMember(3)] internal float Characters; - [ProtoMember(4)] internal bool SelfDamage; - [ProtoMember(5)] internal GridSizeDef Grids; - [ProtoMember(6)] internal ArmorDef Armor; - [ProtoMember(7)] internal CustomScalesDef Custom; - [ProtoMember(8)] internal ShieldDef Shields; - [ProtoMember(9)] internal FallOffDef FallOff; - [ProtoMember(10)] internal double HealthHitModifier; - [ProtoMember(11)] internal double VoxelHitModifier; - [ProtoMember(12)] internal DamageTypes DamageType; - [ProtoMember(13)] internal DeformDef Deform; - - [ProtoContract] - public struct FallOffDef - { - [ProtoMember(1)] internal float Distance; - [ProtoMember(2)] internal float MinMultipler; - } - - [ProtoContract] - public struct GridSizeDef - { - [ProtoMember(1)] internal float Large; - [ProtoMember(2)] internal float Small; - } - - [ProtoContract] - public struct ArmorDef - { - [ProtoMember(1)] internal float Armor; - [ProtoMember(2)] internal float Heavy; - [ProtoMember(3)] internal float Light; - [ProtoMember(4)] internal float NonArmor; - } - - [ProtoContract] - public struct CustomScalesDef - { - internal enum SkipMode - { - NoSkip, - Inclusive, - Exclusive, - } - - [ProtoMember(1)] internal CustomBlocksDef[] Types; - [ProtoMember(2)] internal bool IgnoreAllOthers; - [ProtoMember(3)] internal SkipMode SkipOthers; - } - - [ProtoContract] - public struct DamageTypes - { - internal enum Damage - { - Energy, - Kinetic, - ShieldDefault, - } - - [ProtoMember(1)] internal Damage Base; - [ProtoMember(2)] internal Damage AreaEffect; - [ProtoMember(3)] internal Damage Detonation; - [ProtoMember(4)] internal Damage Shield; - } - - [ProtoContract] - public struct ShieldDef - { - internal enum ShieldType - { - Default, - Heal, - Bypass, - EmpRetired, - } - - [ProtoMember(1)] internal float Modifier; - [ProtoMember(2)] internal ShieldType Type; - [ProtoMember(3)] internal float BypassModifier; - [ProtoMember(4)] internal double HeatModifier; - } - - [ProtoContract] - public struct DeformDef - { - internal enum DeformTypes - { - HitBlock, - AllDamagedBlocks, - NoDeform, - } - - [ProtoMember(1)] internal DeformTypes DeformType; - [ProtoMember(2)] internal int DeformDelay; - } - } - - [ProtoContract] - public struct ShapeDef - { - public enum Shapes - { - LineShape, - SphereShape, - } - - [ProtoMember(1)] internal Shapes Shape; - [ProtoMember(2)] internal double Diameter; - } - - [ProtoContract] - public struct ObjectsHitDef - { - [ProtoMember(1)] internal int MaxObjectsHit; - [ProtoMember(2)] internal bool CountBlocks; - } - - - [ProtoContract] - public struct CustomBlocksDef - { - [ProtoMember(1)] internal string SubTypeId; - [ProtoMember(2)] internal float Modifier; - } - - [ProtoContract] - public struct GraphicDef - { - [ProtoMember(1)] internal bool ShieldHitDraw; - [ProtoMember(2)] internal float VisualProbability; - [ProtoMember(3)] internal string ModelName; - [ProtoMember(4)] internal AmmoParticleDef Particles; - [ProtoMember(5)] internal LineDef Lines; - [ProtoMember(6)] internal DecalDef Decals; - - [ProtoContract] - public struct AmmoParticleDef - { - [ProtoMember(1)] internal ParticleDef Ammo; - [ProtoMember(2)] internal ParticleDef Hit; - [ProtoMember(3)] internal ParticleDef Eject; - } - - [ProtoContract] - public struct LineDef - { - internal enum Texture - { - Normal, - Cycle, - Chaos, - Wave, - } - - public enum FactionColor - { - DontUse, - Foreground, - Background, - } - - [ProtoMember(1)] internal TracerBaseDef Tracer; - [ProtoMember(2)] internal string TracerMaterial; - [ProtoMember(3)] internal Randomize ColorVariance; - [ProtoMember(4)] internal Randomize WidthVariance; - [ProtoMember(5)] internal TrailDef Trail; - [ProtoMember(6)] internal OffsetEffectDef OffsetEffect; - [ProtoMember(7)] internal bool DropParentVelocity; - - - [ProtoContract] - public struct OffsetEffectDef - { - [ProtoMember(1)] internal double MaxOffset; - [ProtoMember(2)] internal double MinLength; - [ProtoMember(3)] internal double MaxLength; - } - - [ProtoContract] - public struct TracerBaseDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal float Length; - [ProtoMember(3)] internal float Width; - [ProtoMember(4)] internal Vector4 Color; - [ProtoMember(5)] internal uint VisualFadeStart; - [ProtoMember(6)] internal uint VisualFadeEnd; - [ProtoMember(7)] internal SegmentDef Segmentation; - [ProtoMember(8)] internal string[] Textures; - [ProtoMember(9)] internal Texture TextureMode; - [ProtoMember(10)] internal bool AlwaysDraw; - [ProtoMember(11)] internal FactionColor FactionColor; - - [ProtoContract] - public struct SegmentDef - { - [ProtoMember(1)] internal string Material; //retired - [ProtoMember(2)] internal double SegmentLength; - [ProtoMember(3)] internal double SegmentGap; - [ProtoMember(4)] internal double Speed; - [ProtoMember(5)] internal Vector4 Color; - [ProtoMember(6)] internal double WidthMultiplier; - [ProtoMember(7)] internal bool Reverse; - [ProtoMember(8)] internal bool UseLineVariance; - [ProtoMember(9)] internal Randomize ColorVariance; - [ProtoMember(10)] internal Randomize WidthVariance; - [ProtoMember(11)] internal string[] Textures; - [ProtoMember(12)] internal bool Enable; - [ProtoMember(13)] internal FactionColor FactionColor; - } - } - - [ProtoContract] - public struct TrailDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal string Material; - [ProtoMember(3)] internal int DecayTime; - [ProtoMember(4)] internal Vector4 Color; - [ProtoMember(5)] internal bool Back; - [ProtoMember(6)] internal float CustomWidth; - [ProtoMember(7)] internal bool UseWidthVariance; - [ProtoMember(8)] internal bool UseColorFade; - [ProtoMember(9)] internal string[] Textures; - [ProtoMember(10)] internal Texture TextureMode; - [ProtoMember(11)] internal bool AlwaysDraw; - [ProtoMember(12)] internal FactionColor FactionColor; - } - } - - [ProtoContract] - public struct DecalDef - { - - [ProtoMember(1)] internal int MaxAge; - [ProtoMember(2)] internal TextureMapDef[] Map; - - [ProtoContract] - public struct TextureMapDef - { - [ProtoMember(1)] internal string HitMaterial; - [ProtoMember(2)] internal string DecalMaterial; - } - } - } - - [ProtoContract] - public struct BeamDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal bool ConvergeBeams; - [ProtoMember(3)] internal bool VirtualBeams; - [ProtoMember(4)] internal bool RotateRealBeam; - [ProtoMember(5)] internal bool OneParticle; - [ProtoMember(6)] internal int FakeVoxelHitTicks; - } - - [ProtoContract] - public struct FragmentDef - { - [ProtoMember(1)] internal string AmmoRound; - [ProtoMember(2)] internal int Fragments; - [ProtoMember(3)] internal float Radial; - [ProtoMember(4)] internal float BackwardDegrees; - [ProtoMember(5)] internal float Degrees; - [ProtoMember(6)] internal bool Reverse; - [ProtoMember(7)] internal bool IgnoreArming; - [ProtoMember(8)] internal bool DropVelocity; - [ProtoMember(9)] internal float Offset; - [ProtoMember(10)] internal int MaxChildren; - [ProtoMember(11)] internal TimedSpawnDef TimedSpawns; - [ProtoMember(12)] internal bool FireSound; // not used, can remove - [ProtoMember(13)] internal Vector3D AdvOffset; - [ProtoMember(14)] internal bool ArmWhenHit; - - [ProtoContract] - public struct TimedSpawnDef - { - public enum PointTypes - { - Direct, - Lead, - Predict, - } - - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal int Interval; - [ProtoMember(3)] internal int StartTime; - [ProtoMember(4)] internal int MaxSpawns; - [ProtoMember(5)] internal double Proximity; - [ProtoMember(6)] internal bool ParentDies; - [ProtoMember(7)] internal bool PointAtTarget; - [ProtoMember(8)] internal int GroupSize; - [ProtoMember(9)] internal int GroupDelay; - [ProtoMember(10)] internal PointTypes PointType; - [ProtoMember(11)] internal float DirectAimCone; - } - } - - [ProtoContract] - public struct PatternDef - { - public enum PatternModes - { - Never, - Weapon, - Fragment, - Both, - } - - [ProtoMember(1)] internal string[] Patterns; - [ProtoMember(2)] internal bool Enable; - [ProtoMember(3)] internal float TriggerChance; - [ProtoMember(4)] internal bool SkipParent; - [ProtoMember(5)] internal bool Random; - [ProtoMember(6)] internal int RandomMin; - [ProtoMember(7)] internal int RandomMax; - [ProtoMember(8)] internal int PatternSteps; - [ProtoMember(9)] internal PatternModes Mode; - } - - [ProtoContract] - public struct EjectionDef - { - public enum SpawnType - { - Item, - Particle, - } - [ProtoMember(1)] internal float Speed; - [ProtoMember(2)] internal float SpawnChance; - [ProtoMember(3)] internal SpawnType Type; - [ProtoMember(4)] internal ComponentDef CompDef; - - [ProtoContract] - public struct ComponentDef - { - [ProtoMember(1)] internal string ItemName; - [ProtoMember(2)] internal int ItemLifeTime; - [ProtoMember(3)] internal int Delay; - } - } - - [ProtoContract] - public struct AreaOfDamageDef - { - public enum Falloff - { - Legacy, - NoFalloff, - Linear, - Curve, - InvCurve, - Squeeze, - Pooled, - Exponential, - } - public enum AoeShape - { - Round, - Diamond, - } - - [ProtoMember(1)] internal ByBlockHitDef ByBlockHit; - [ProtoMember(2)] internal EndOfLifeDef EndOfLife; - - [ProtoContract] - public struct ByBlockHitDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal double Radius; - [ProtoMember(3)] internal float Damage; - [ProtoMember(4)] internal float Depth; - [ProtoMember(5)] internal float MaxAbsorb; - [ProtoMember(6)] internal Falloff Falloff; - [ProtoMember(7)] internal AoeShape Shape; - } - - [ProtoContract] - public struct EndOfLifeDef - { - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal double Radius; - [ProtoMember(3)] internal float Damage; - [ProtoMember(4)] internal float Depth; - [ProtoMember(5)] internal float MaxAbsorb; - [ProtoMember(6)] internal Falloff Falloff; - [ProtoMember(7)] internal bool ArmOnlyOnHit; - [ProtoMember(8)] internal int MinArmingTime; - [ProtoMember(9)] internal bool NoVisuals; - [ProtoMember(10)] internal bool NoSound; - [ProtoMember(11)] internal float ParticleScale; - [ProtoMember(12)] internal string CustomParticle; - [ProtoMember(13)] internal string CustomSound; - [ProtoMember(14)] internal AoeShape Shape; - } - } - - [ProtoContract] - public struct EwarDef - { - public enum EwarType - { - AntiSmart, - JumpNull, - EnergySink, - Anchor, - Emp, - Offense, - Nav, - Dot, - Push, - Pull, - Tractor, - } - - public enum EwarMode - { - Effect, - Field, - } - - [ProtoMember(1)] internal bool Enable; - [ProtoMember(2)] internal EwarType Type; - [ProtoMember(3)] internal EwarMode Mode; - [ProtoMember(4)] internal float Strength; - [ProtoMember(5)] internal double Radius; - [ProtoMember(6)] internal int Duration; - [ProtoMember(7)] internal bool StackDuration; - [ProtoMember(8)] internal bool Depletable; - [ProtoMember(9)] internal int MaxStacks; - [ProtoMember(10)] internal bool NoHitParticle; - [ProtoMember(11)] internal PushPullDef Force; - [ProtoMember(12)] internal FieldDef Field; - - - [ProtoContract] - public struct FieldDef - { - [ProtoMember(1)] internal int Interval; - [ProtoMember(2)] internal int PulseChance; - [ProtoMember(3)] internal int GrowTime; - [ProtoMember(4)] internal bool HideModel; - [ProtoMember(5)] internal bool ShowParticle; - [ProtoMember(6)] internal double TriggerRange; - [ProtoMember(7)] internal ParticleDef Particle; - } - - [ProtoContract] - public struct PushPullDef - { - public enum Force - { - ProjectileLastPosition, - ProjectileOrigin, - HitPosition, - TargetCenter, - TargetCenterOfMass, - } - - [ProtoMember(1)] internal Force ForceFrom; - [ProtoMember(2)] internal Force ForceTo; - [ProtoMember(3)] internal Force Position; - [ProtoMember(4)] internal bool DisableRelativeMass; - [ProtoMember(5)] internal double TractorRange; - [ProtoMember(6)] internal bool ShooterFeelsForce; - } - } - - - [ProtoContract] - public struct AreaDamageDef - { - public enum AreaEffectType - { - Disabled, - Explosive, - Radiant, - AntiSmart, - JumpNullField, - EnergySinkField, - AnchorField, - EmpField, - OffenseField, - NavField, - DotField, - PushField, - PullField, - TractorField, - } - - [ProtoMember(1)] internal double AreaEffectRadius; - [ProtoMember(2)] internal float AreaEffectDamage; - [ProtoMember(3)] internal AreaEffectType AreaEffect; - [ProtoMember(4)] internal PulseDef Pulse; - [ProtoMember(5)] internal DetonateDef Detonation; - [ProtoMember(6)] internal ExplosionDef Explosions; - [ProtoMember(7)] internal EwarFieldsDef EwarFields; - [ProtoMember(8)] internal AreaInfluence Base; - - [ProtoContract] - public struct AreaInfluence - { - [ProtoMember(1)] internal double Radius; - [ProtoMember(2)] internal float EffectStrength; - } - - - [ProtoContract] - public struct PulseDef - { - [ProtoMember(1)] internal int Interval; - [ProtoMember(2)] internal int PulseChance; - [ProtoMember(3)] internal int GrowTime; - [ProtoMember(4)] internal bool HideModel; - [ProtoMember(5)] internal bool ShowParticle; - [ProtoMember(6)] internal ParticleDef Particle; - } - - [ProtoContract] - public struct EwarFieldsDef - { - [ProtoMember(1)] internal int Duration; - [ProtoMember(2)] internal bool StackDuration; - [ProtoMember(3)] internal bool Depletable; - [ProtoMember(4)] internal double TriggerRange; - [ProtoMember(5)] internal int MaxStacks; - [ProtoMember(6)] internal PushPullDef Force; - [ProtoMember(7)] internal bool DisableParticleEffect; - - [ProtoContract] - public struct PushPullDef - { - public enum Force - { - ProjectileLastPosition, - ProjectileOrigin, - HitPosition, - TargetCenter, - TargetCenterOfMass, - } - - [ProtoMember(1)] internal Force ForceFrom; - [ProtoMember(2)] internal Force ForceTo; - [ProtoMember(3)] internal Force Position; - [ProtoMember(4)] internal bool DisableRelativeMass; - [ProtoMember(5)] internal double TractorRange; - [ProtoMember(6)] internal bool ShooterFeelsForce; - } - } - - [ProtoContract] - public struct DetonateDef - { - [ProtoMember(1)] internal bool DetonateOnEnd; - [ProtoMember(2)] internal bool ArmOnlyOnHit; - [ProtoMember(3)] internal float DetonationRadius; - [ProtoMember(4)] internal float DetonationDamage; - [ProtoMember(5)] internal int MinArmingTime; - } - - [ProtoContract] - public struct ExplosionDef - { - [ProtoMember(1)] internal bool NoVisuals; - [ProtoMember(2)] internal bool NoSound; - [ProtoMember(3)] internal float Scale; - [ProtoMember(4)] internal string CustomParticle; - [ProtoMember(5)] internal string CustomSound; - [ProtoMember(6)] internal bool NoShrapnel; - [ProtoMember(7)] internal bool NoDeformation; - } - } - - [ProtoContract] - public struct AmmoAudioDef - { - [ProtoMember(1)] internal string TravelSound; - [ProtoMember(2)] internal string HitSound; - [ProtoMember(3)] internal float HitPlayChance; - [ProtoMember(4)] internal bool HitPlayShield; - [ProtoMember(5)] internal string VoxelHitSound; - [ProtoMember(6)] internal string PlayerHitSound; - [ProtoMember(7)] internal string FloatingHitSound; - [ProtoMember(8)] internal string ShieldHitSound; - [ProtoMember(9)] internal string ShotSound; - } - - [ProtoContract] - public struct TrajectoryDef - { - internal enum GuidanceType - { - None, - Remote, - TravelTo, - Smart, - DetectTravelTo, - DetectSmart, - DetectFixed, - DroneAdvanced, - } - - [ProtoMember(1)] internal float MaxTrajectory; - [ProtoMember(2)] internal float AccelPerSec; - [ProtoMember(3)] internal float DesiredSpeed; - [ProtoMember(4)] internal float TargetLossDegree; - [ProtoMember(5)] internal int TargetLossTime; - [ProtoMember(6)] internal int MaxLifeTime; - [ProtoMember(7)] internal int DeaccelTime; - [ProtoMember(8)] internal Randomize SpeedVariance; - [ProtoMember(9)] internal Randomize RangeVariance; - [ProtoMember(10)] internal GuidanceType Guidance; - [ProtoMember(11)] internal SmartsDef Smarts; - [ProtoMember(12)] internal MinesDef Mines; - [ProtoMember(13)] internal float GravityMultiplier; - [ProtoMember(14)] internal uint MaxTrajectoryTime; - [ProtoMember(15)] internal ApproachDef[] Approaches; - [ProtoMember(16)] internal double TotalAcceleration; - [ProtoMember(17)] internal OnHitDef OnHit; - - [ProtoContract] - public struct SmartsDef - { - [ProtoMember(1)] internal double Inaccuracy; - [ProtoMember(2)] internal double Aggressiveness; - [ProtoMember(3)] internal double MaxLateralThrust; - [ProtoMember(4)] internal double TrackingDelay; - [ProtoMember(5)] internal int MaxChaseTime; - [ProtoMember(6)] internal bool OverideTarget; - [ProtoMember(7)] internal int MaxTargets; - [ProtoMember(8)] internal bool NoTargetExpire; - [ProtoMember(9)] internal bool Roam; - [ProtoMember(10)] internal bool KeepAliveAfterTargetLoss; - [ProtoMember(11)] internal float OffsetRatio; - [ProtoMember(12)] internal int OffsetTime; - [ProtoMember(13)] internal bool CheckFutureIntersection; - [ProtoMember(14)] internal double NavAcceleration; - [ProtoMember(15)] internal bool AccelClearance; - [ProtoMember(16)] internal double SteeringLimit; - [ProtoMember(17)] internal bool FocusOnly; - [ProtoMember(18)] internal double OffsetMinRange; - [ProtoMember(19)] internal bool FocusEviction; - [ProtoMember(20)] internal double ScanRange; - [ProtoMember(21)] internal bool NoSteering; - [ProtoMember(22)] internal double FutureIntersectionRange; - [ProtoMember(23)] internal double MinTurnSpeed; - [ProtoMember(24)] internal bool NoTargetApproach; - [ProtoMember(25)] internal bool AltNavigation; - } - - [ProtoContract] - public struct ApproachDef - { - public enum ReInitCondition - { - Wait, - MoveToPrevious, - MoveToNext, - ForceRestart, - } - - public enum Conditions - { - Ignore, - Spawn, - DistanceFromPositionC, - Lifetime, - DesiredElevation, - MinTravelRequired, - MaxTravelRequired, - Deadtime, - DistanceToPositionC, - NextTimedSpawn, - RelativeLifetime, - RelativeDeadtime, - SinceTimedSpawn, - RelativeSpawns, - EnemyTargetLoss, - RelativeHealthLost, - HealthRemaining, - DistanceFromPositionB, - DistanceToPositionB, - DistanceFromTarget, - DistanceToTarget, - DistanceFromEndTrajectory, - DistanceToEndTrajectory, - } - - public enum UpRelativeTo - { - UpRelativeToBlock, - UpRelativeToGravity, - UpTargetDirection, - UpTargetVelocity, - UpStoredStartDontUse, - UpStoredEndDontUse, - UpStoredStartPosition, - UpStoredEndPosition, - UpStoredStartLocalPosition, - UpStoredEndLocalPosition, - UpRelativeToShooter, - UpOriginDirection, - UpElevationDirection, - } - - public enum FwdRelativeTo - { - ForwardElevationDirection, - ForwardRelativeToBlock, - ForwardRelativeToGravity, - ForwardTargetDirection, - ForwardTargetVelocity, - ForwardStoredStartDontUse, - ForwardStoredEndDontUse, - ForwardStoredStartPosition, - ForwardStoredEndPosition, - ForwardStoredStartLocalPosition, - ForwardStoredEndLocalPosition, - ForwardRelativeToShooter, - ForwardOriginDirection, - } - - public enum RelativeTo - { - Origin, - Shooter, - Target, - Surface, - MidPoint, - PositionA, - Nothing, - StoredStartDontUse, - StoredEndDontUse, - StoredStartPosition, - StoredEndPosition, - StoredStartLocalPosition, - StoredEndLocalPosition, - } - - public enum ConditionOperators - { - StartEnd_And, - StartEnd_Or, - StartAnd_EndOr, - StartOr_EndAnd, - } - - public enum StageEvents - { - DoNothing, - EndProjectile, - EndProjectileOnRestart, - StoreDontUse, - StorePositionDontUse, - Refund, - StorePositionA, - StorePositionB, - StorePositionC, - } - - [ProtoContract] - public struct WeightedIdListDef - { - - [ProtoMember(1)] public int ApproachId; - [ProtoMember(2)] public Randomize Weight; - [ProtoMember(3)] public double End1WeightMod; - [ProtoMember(4)] public double End2WeightMod; - [ProtoMember(5)] public int MaxRuns; - [ProtoMember(6)] public double End3WeightMod; - } - - [ProtoMember(1)] internal ReInitCondition RestartCondition; - [ProtoMember(2)] internal Conditions StartCondition1; - [ProtoMember(3)] internal Conditions EndCondition1; - [ProtoMember(4)] internal UpRelativeTo Up; - [ProtoMember(5)] internal RelativeTo PositionB; - [ProtoMember(6)] internal double AngleOffset; - [ProtoMember(7)] internal double Start1Value; - [ProtoMember(8)] internal double End1Value; - [ProtoMember(9)] internal double LeadDistance; - [ProtoMember(10)] internal double DesiredElevation; - [ProtoMember(11)] internal double AccelMulti; - [ProtoMember(12)] internal double SpeedCapMulti; - [ProtoMember(13)] internal bool AdjustPositionC; - [ProtoMember(14)] internal bool CanExpireOnceStarted; - [ProtoMember(15)] internal ParticleDef AlternateParticle; - [ProtoMember(16)] internal string AlternateSound; - [ProtoMember(17)] internal string AlternateModel; - [ProtoMember(18)] internal int OnRestartRevertTo; - [ProtoMember(19)] internal ParticleDef StartParticle; - [ProtoMember(20)] internal bool AdjustPositionB; - [ProtoMember(21)] internal bool AdjustUp; - [ProtoMember(22)] internal bool PushLeadByTravelDistance; - [ProtoMember(23)] internal double TrackingDistance; - [ProtoMember(24)] internal Conditions StartCondition2; - [ProtoMember(25)] internal double Start2Value; - [ProtoMember(26)] internal Conditions EndCondition2; - [ProtoMember(27)] internal double End2Value; - [ProtoMember(28)] internal RelativeTo Elevation; - [ProtoMember(29)] internal double ElevationTolerance; - [ProtoMember(30)] internal ConditionOperators Operators; - [ProtoMember(31)] internal StageEvents StartEvent; - [ProtoMember(32)] internal StageEvents EndEvent; - [ProtoMember(33)] internal double TotalAccelMulti; - [ProtoMember(34)] internal double DeAccelMulti; - [ProtoMember(35)] internal bool Orbit; - [ProtoMember(36)] internal double OrbitRadius; - [ProtoMember(37)] internal int OffsetTime; - [ProtoMember(38)] internal double OffsetMinRadius; - [ProtoMember(39)] internal bool NoTimedSpawns; - [ProtoMember(40)] internal double OffsetMaxRadius; - [ProtoMember(41)] internal bool ForceRestart; - [ProtoMember(42)] internal RelativeTo PositionC; - [ProtoMember(43)] internal bool DisableAvoidance; - [ProtoMember(44)] internal int StoredStartId; - [ProtoMember(45)] internal int StoredEndId; - [ProtoMember(46)] internal WeightedIdListDef[] RestartList; - [ProtoMember(47)] internal RelativeTo StoredStartType; - [ProtoMember(48)] internal RelativeTo StoredEndType; - [ProtoMember(49)] internal bool LeadRotateElevatePositionB; - [ProtoMember(50)] internal bool LeadRotateElevatePositionC; - [ProtoMember(51)] internal bool NoElevationLead; - [ProtoMember(52)] internal bool IgnoreAntiSmart; - [ProtoMember(53)] internal double HeatRefund; - [ProtoMember(54)] internal Randomize AngleVariance; - [ProtoMember(55)] internal bool ReloadRefund; - [ProtoMember(56)] internal int ModelRotateTime; - [ProtoMember(57)] internal FwdRelativeTo Forward; - [ProtoMember(58)] internal bool AdjustForward; - [ProtoMember(59)] internal bool ToggleIngoreVoxels; - [ProtoMember(60)] internal bool SelfAvoidance; - [ProtoMember(61)] internal bool TargetAvoidance; - [ProtoMember(62)] internal bool SelfPhasing; - [ProtoMember(63)] internal bool TrajectoryRelativeToB; - [ProtoMember(64)] internal Conditions EndCondition3; - [ProtoMember(65)] internal double End3Value; - [ProtoMember(66)] internal bool SwapNavigationType; - [ProtoMember(67)] internal bool ElevationRelativeToC; - } - - [ProtoContract] - public struct MinesDef - { - [ProtoMember(1)] internal double DetectRadius; - [ProtoMember(2)] internal double DeCloakRadius; - [ProtoMember(3)] internal int FieldTime; - [ProtoMember(4)] internal bool Cloak; - [ProtoMember(5)] internal bool Persist; - } - - [ProtoContract] - public struct OnHitDef - { - /* - [ProtoMember(1)] internal int Duration; - [ProtoMember(2)] internal int ProcInterval; - [ProtoMember(3)] internal double ProcAmount; - [ProtoMember(4)] internal bool ProcOnVoxels; - [ProtoMember(5)] internal bool FragOnProc; - [ProtoMember(6)] internal bool DieOnEnd; - [ProtoMember(7)] internal bool StickOnHit; - [ProtoMember(8)] internal bool AlignFragtoImpactAngle; - */ - } - } - - [ProtoContract] - public struct Randomize - { - [ProtoMember(1)] internal float Start; - [ProtoMember(2)] internal float End; - } - } - - [ProtoContract] - public struct ParticleOptionDef - { - [ProtoMember(1)] internal float Scale; - [ProtoMember(2)] internal float MaxDistance; - [ProtoMember(3)] internal float MaxDuration; - [ProtoMember(4)] internal bool Loop; - [ProtoMember(5)] internal bool Restart; - [ProtoMember(6)] internal float HitPlayChance; - } - - - [ProtoContract] - public struct ParticleDef - { - [ProtoMember(1)] internal string Name; - [ProtoMember(2)] internal Vector4 Color; - [ProtoMember(3)] internal Vector3D Offset; - [ProtoMember(4)] internal ParticleOptionDef Extras; - [ProtoMember(5)] internal bool ApplyToShield; - [ProtoMember(6)] internal bool DisableCameraCulling; - } - } - } -} +using System.Collections.Generic; +using ProtoBuf; +using VRageMath; + +namespace Scripts +{ + public class Structure + { + [ProtoContract] + public class ContainerDefinition + { + [ProtoMember(1)] internal WeaponDefinition[] WeaponDefs; + [ProtoMember(2)] internal ArmorDefinition[] ArmorDefs; + [ProtoMember(3)] internal UpgradeDefinition[] UpgradeDefs; + [ProtoMember(4)] internal SupportDefinition[] SupportDefs; + } + + [ProtoContract] + public class ConsumeableDef + { + [ProtoMember(1)] internal string ItemName; + [ProtoMember(2)] internal string InventoryItem; + [ProtoMember(3)] internal int ItemsNeeded; + [ProtoMember(4)] internal bool Hybrid; + [ProtoMember(5)] internal float EnergyCost; + [ProtoMember(6)] internal float Strength; + } + + [ProtoContract] + public class UpgradeDefinition + { + [ProtoMember(1)] internal ModelAssignmentsDef Assignments; + [ProtoMember(2)] internal HardPointDef HardPoint; + [ProtoMember(3)] internal WeaponDefinition.AnimationDef Animations; + [ProtoMember(4)] internal string ModPath; + [ProtoMember(5)] internal ConsumeableDef[] Consumable; + + [ProtoContract] + public struct ModelAssignmentsDef + { + [ProtoMember(1)] internal MountPointDef[] MountPoints; + + [ProtoContract] + public struct MountPointDef + { + [ProtoMember(1)] internal string SubtypeId; + [ProtoMember(2)] internal float DurabilityMod; + [ProtoMember(3)] internal string IconName; + } + } + + [ProtoContract] + public struct HardPointDef + { + [ProtoMember(1)] internal string PartName; + [ProtoMember(2)] internal HardwareDef HardWare; + [ProtoMember(3)] internal UiDef Ui; + [ProtoMember(4)] internal OtherDef Other; + + + [ProtoContract] + public struct UiDef + { + [ProtoMember(1)] internal bool StrengthModifier; + } + + [ProtoContract] + public struct HardwareDef + { + public enum HardwareType + { + Default, + } + + [ProtoMember(1)] internal float InventorySize; + [ProtoMember(2)] internal HardwareType Type; + [ProtoMember(3)] internal int BlockDistance; + [ProtoMember(4)] internal float IdlePower; + } + + [ProtoContract] + public struct OtherDef + { + [ProtoMember(1)] internal int ConstructPartCap; + [ProtoMember(2)] internal int EnergyPriority; + [ProtoMember(3)] internal bool Debug; + [ProtoMember(4)] internal double RestrictionRadius; + [ProtoMember(5)] internal bool CheckInflatedBox; + [ProtoMember(6)] internal bool CheckForAnySupport; + [ProtoMember(7)] internal bool StayCharged; + } + } + + } + + [ProtoContract] + public class SupportDefinition + { + [ProtoMember(1)] internal ModelAssignmentsDef Assignments; + [ProtoMember(2)] internal HardPointDef HardPoint; + [ProtoMember(3)] internal WeaponDefinition.AnimationDef Animations; + [ProtoMember(4)] internal string ModPath; + [ProtoMember(5)] internal ConsumeableDef[] Consumable; + [ProtoMember(6)] internal SupportEffect Effect; + + [ProtoContract] + public struct ModelAssignmentsDef + { + [ProtoMember(1)] internal MountPointDef[] MountPoints; + + [ProtoContract] + public struct MountPointDef + { + [ProtoMember(1)] internal string SubtypeId; + [ProtoMember(2)] internal float DurabilityMod; + [ProtoMember(3)] internal string IconName; + } + } + [ProtoContract] + public struct HardPointDef + { + [ProtoMember(1)] internal string PartName; + [ProtoMember(2)] internal HardwareDef HardWare; + [ProtoMember(3)] internal UiDef Ui; + [ProtoMember(4)] internal OtherDef Other; + + [ProtoContract] + public struct UiDef + { + [ProtoMember(1)] internal bool ProtectionControl; + } + + [ProtoContract] + public struct HardwareDef + { + [ProtoMember(1)] internal float InventorySize; + [ProtoMember(2)] internal float IdlePower; + } + + [ProtoContract] + public struct OtherDef + { + [ProtoMember(1)] internal int ConstructPartCap; + [ProtoMember(2)] internal int EnergyPriority; + [ProtoMember(3)] internal bool Debug; + [ProtoMember(4)] internal double RestrictionRadius; + [ProtoMember(5)] internal bool CheckInflatedBox; + [ProtoMember(6)] internal bool CheckForAnySupport; + [ProtoMember(7)] internal bool StayCharged; + } + } + + [ProtoContract] + public struct SupportEffect + { + public enum AffectedBlocks + { + Armor, + ArmorPlus, + PlusFunctional, + All, + } + + public enum Protections + { + KineticProt, + EnergeticProt, + GenericProt, + Regenerate, + Structural, + } + + [ProtoMember(1)] internal Protections Protection; + [ProtoMember(2)] internal AffectedBlocks Affected; + [ProtoMember(3)] internal int BlockRange; + [ProtoMember(4)] internal int MaxPoints; + [ProtoMember(5)] internal int PointsPerCharge; + [ProtoMember(6)] internal int UsablePerSecond; + [ProtoMember(7)] internal int UsablePerMinute; + [ProtoMember(8)] internal float Overflow; + [ProtoMember(9)] internal float Effectiveness; + [ProtoMember(10)] internal float ProtectionMin; + [ProtoMember(11)] internal float ProtectionMax; + } + } + + [ProtoContract] + public class ArmorDefinition + { + internal enum ArmorType + { + Light, + Heavy, + NonArmor, + } + + [ProtoMember(1)] internal string[] SubtypeIds; + [ProtoMember(2)] internal ArmorType Kind; + [ProtoMember(3)] internal double KineticResistance; + [ProtoMember(4)] internal double EnergeticResistance; + } + + [ProtoContract] + public class WeaponDefinition + { + [ProtoMember(1)] internal ModelAssignmentsDef Assignments; + [ProtoMember(2)] internal TargetingDef Targeting; + [ProtoMember(3)] internal AnimationDef Animations; + [ProtoMember(4)] internal HardPointDef HardPoint; + [ProtoMember(5)] internal AmmoDef[] Ammos; + [ProtoMember(6)] internal string ModPath; + [ProtoMember(7)] internal Dictionary Upgrades; + + [ProtoContract] + public struct ModelAssignmentsDef + { + [ProtoMember(1)] internal MountPointDef[] MountPoints; + [ProtoMember(2)] internal string[] Muzzles; + [ProtoMember(3)] internal string Ejector; + [ProtoMember(4)] internal string Scope; + + [ProtoContract] + public struct MountPointDef + { + [ProtoMember(1)] internal string SubtypeId; + [ProtoMember(2)] internal string SpinPartId; + [ProtoMember(3)] internal string MuzzlePartId; + [ProtoMember(4)] internal string AzimuthPartId; + [ProtoMember(5)] internal string ElevationPartId; + [ProtoMember(6)] internal float DurabilityMod; + [ProtoMember(7)] internal string IconName; + [ProtoMember(8)] internal string PhantomModel; + } + } + + [ProtoContract] + public struct TargetingDef + { + public enum Threat + { + Projectiles, + Characters, + Grids, + Neutrals, + Meteors, + Other, + ScanNeutralGrid, + ScanFriendlyGrid, + ScanFriendlyCharacter, + ScanRoid, + ScanPlanet, + ScanEnemyCharacter, + ScanEnemyGrid, + ScanNeutralCharacter, + ScanUnOwnedGrid, + ScanOwnersGrid + } + + public enum BlockTypes + { + Any, + Offense, + Utility, + Power, + Production, + Thrust, + Jumping, + Steering + } + + [ProtoMember(1)] internal int TopTargets; + [ProtoMember(2)] internal int TopBlocks; + [ProtoMember(3)] internal double StopTrackingSpeed; + [ProtoMember(4)] internal float MinimumDiameter; + [ProtoMember(5)] internal float MaximumDiameter; + [ProtoMember(6)] internal bool ClosestFirst; + [ProtoMember(7)] internal BlockTypes[] SubSystems; + [ProtoMember(8)] internal Threat[] Threats; + [ProtoMember(9)] internal float MaxTargetDistance; + [ProtoMember(10)] internal float MinTargetDistance; + [ProtoMember(11)] internal bool IgnoreDumbProjectiles; + [ProtoMember(12)] internal bool LockedSmartOnly; + [ProtoMember(13)] internal bool UniqueTargetPerWeapon; + [ProtoMember(14)] internal int MaxTrackingTime; + [ProtoMember(15)] internal bool ShootBlanks; + [ProtoMember(19)] internal CommunicationDef Communications; + [ProtoMember(20)] internal bool FocusOnly; + [ProtoMember(21)] internal bool EvictUniqueTargets; + [ProtoMember(22)] internal int CycleTargets; + [ProtoMember(23)] internal int CycleBlocks; + + [ProtoContract] + public struct CommunicationDef + { + public enum Comms + { + NoComms, + LocalNetwork, + BroadCast, + Relay, + Repeat, + Jamming, + } + + public enum SecurityMode + { + Public, + Private, + Secure, + } + + [ProtoMember(1)] internal bool StoreTargets; + [ProtoMember(2)] internal int StorageLimit; + [ProtoMember(3)] internal string StorageLocation; + [ProtoMember(4)] internal Comms Mode; + [ProtoMember(5)] internal SecurityMode Security; + [ProtoMember(6)] internal string BroadCastChannel; + [ProtoMember(7)] internal double BroadCastRange; + [ProtoMember(8)] internal double JammingStrength; + [ProtoMember(9)] internal string RelayChannel; + [ProtoMember(10)] internal double RelayRange; + [ProtoMember(11)] internal bool TargetPersists; + [ProtoMember(12)] internal bool StoreLimitPerBlock; + [ProtoMember(13)] internal int MaxConnections; + } + } + + + [ProtoContract] + public struct AnimationDef + { + [ProtoMember(1)] internal PartAnimationSetDef[] AnimationSets; + [ProtoMember(2)] internal PartEmissive[] Emissives; + [ProtoMember(3)] internal string[] HeatingEmissiveParts; + [ProtoMember(4)] internal Dictionary EventParticles; + + [ProtoContract(IgnoreListHandling = true)] + public struct PartAnimationSetDef + { + public enum EventTriggers + { + Reloading, + Firing, + Tracking, + Overheated, + TurnOn, + TurnOff, + BurstReload, + NoMagsToLoad, + PreFire, + EmptyOnGameLoad, + StopFiring, + StopTracking, + LockDelay, + Init, + Homing, + TargetAligned, + WhileOn, + TargetRanged100, + TargetRanged75, + TargetRanged50, + TargetRanged25, + } + + public enum ResetConditions + { + None, + Home, + Off, + On, + Reloaded + } + + [ProtoMember(1)] internal string[] SubpartId; + [ProtoMember(2)] internal string BarrelId; + [ProtoMember(3)] internal uint StartupFireDelay; + [ProtoMember(4)] internal Dictionary AnimationDelays; + [ProtoMember(5)] internal EventTriggers[] Reverse; + [ProtoMember(6)] internal EventTriggers[] Loop; + [ProtoMember(7)] internal Dictionary EventMoveSets; + [ProtoMember(8)] internal EventTriggers[] TriggerOnce; + [ProtoMember(9)] internal EventTriggers[] ResetEmissives; + [ProtoMember(10)] internal ResetConditions Resets; + } + + [ProtoContract] + public struct PartEmissive + { + [ProtoMember(1)] internal string EmissiveName; + [ProtoMember(2)] internal string[] EmissivePartNames; + [ProtoMember(3)] internal bool CycleEmissivesParts; + [ProtoMember(4)] internal bool LeavePreviousOn; + [ProtoMember(5)] internal Vector4[] Colors; + [ProtoMember(6)] internal float[] IntensityRange; + } + [ProtoContract] + public struct EventParticle + { + [ProtoMember(1)] internal string[] EmptyNames; + [ProtoMember(2)] internal string[] MuzzleNames; + [ProtoMember(3)] internal ParticleDef Particle; + [ProtoMember(4)] internal uint StartDelay; + [ProtoMember(5)] internal uint LoopDelay; + [ProtoMember(6)] internal bool ForceStop; + } + [ProtoContract] + internal struct RelMove + { + public enum MoveType + { + Linear, + ExpoDecay, + ExpoGrowth, + Delay, + Show, //instant or fade + Hide, //instant or fade + } + + [ProtoMember(1)] internal MoveType MovementType; + [ProtoMember(2)] internal XYZ[] LinearPoints; + [ProtoMember(3)] internal XYZ Rotation; + [ProtoMember(4)] internal XYZ RotAroundCenter; + [ProtoMember(5)] internal uint TicksToMove; + [ProtoMember(6)] internal string CenterEmpty; + [ProtoMember(7)] internal bool Fade; + [ProtoMember(8)] internal string EmissiveName; + + [ProtoContract] + internal struct XYZ + { + [ProtoMember(1)] internal double x; + [ProtoMember(2)] internal double y; + [ProtoMember(3)] internal double z; + } + } + } + + [ProtoContract] + public struct UpgradeValues + { + [ProtoMember(1)] internal string[] Ammo; + [ProtoMember(2)] internal Dependency[] Dependencies; + [ProtoMember(3)] internal int RateOfFireMod; + [ProtoMember(4)] internal int BarrelsPerShotMod; + [ProtoMember(5)] internal int ReloadMod; + [ProtoMember(6)] internal int MaxHeatMod; + [ProtoMember(7)] internal int HeatSinkRateMod; + [ProtoMember(8)] internal int ShotsInBurstMod; + [ProtoMember(9)] internal int DelayAfterBurstMod; + [ProtoMember(10)] internal int AmmoPriority; + + [ProtoContract] + public struct Dependency + { + internal string SubtypeId; + internal int Quanity; + } + } + + [ProtoContract] + public struct HardPointDef + { + public enum Prediction + { + Off, + Basic, + Accurate, + Advanced, + } + + [ProtoMember(1)] internal string PartName; + [ProtoMember(2)] internal int DelayCeaseFire; + [ProtoMember(3)] internal float DeviateShotAngle; + [ProtoMember(4)] internal double AimingTolerance; + [ProtoMember(5)] internal Prediction AimLeadingPrediction; + [ProtoMember(6)] internal LoadingDef Loading; + [ProtoMember(7)] internal AiDef Ai; + [ProtoMember(8)] internal HardwareDef HardWare; + [ProtoMember(9)] internal UiDef Ui; + [ProtoMember(10)] internal HardPointAudioDef Audio; + [ProtoMember(11)] internal HardPointParticleDef Graphics; + [ProtoMember(12)] internal OtherDef Other; + [ProtoMember(13)] internal bool AddToleranceToTracking; + [ProtoMember(14)] internal bool CanShootSubmerged; + [ProtoMember(15)] internal bool NpcSafe; + [ProtoMember(16)] internal bool ScanTrackOnly; + + [ProtoContract] + public struct LoadingDef + { + [ProtoMember(1)] internal int ReloadTime; + [ProtoMember(2)] internal int RateOfFire; + [ProtoMember(3)] internal int BarrelsPerShot; + [ProtoMember(4)] internal int SkipBarrels; + [ProtoMember(5)] internal int TrajectilesPerBarrel; + [ProtoMember(6)] internal int HeatPerShot; + [ProtoMember(7)] internal int MaxHeat; + [ProtoMember(8)] internal int HeatSinkRate; + [ProtoMember(9)] internal float Cooldown; + [ProtoMember(10)] internal int DelayUntilFire; + [ProtoMember(11)] internal int ShotsInBurst; + [ProtoMember(12)] internal int DelayAfterBurst; + [ProtoMember(13)] internal bool DegradeRof; + [ProtoMember(14)] internal int BarrelSpinRate; + [ProtoMember(15)] internal bool FireFull; + [ProtoMember(16)] internal bool GiveUpAfter; + [ProtoMember(17)] internal bool DeterministicSpin; + [ProtoMember(18)] internal bool SpinFree; + [ProtoMember(19)] internal bool StayCharged; + [ProtoMember(20)] internal int MagsToLoad; + [ProtoMember(21)] internal int MaxActiveProjectiles; + [ProtoMember(22)] internal int MaxReloads; + [ProtoMember(23)] internal bool GoHomeToReload; + [ProtoMember(24)] internal bool DropTargetUntilLoaded; + } + + + [ProtoContract] + public struct UiDef + { + [ProtoMember(1)] internal bool RateOfFire; + [ProtoMember(2)] internal bool DamageModifier; + [ProtoMember(3)] internal bool ToggleGuidance; + [ProtoMember(4)] internal bool EnableOverload; + [ProtoMember(5)] internal bool AlternateUi; + [ProtoMember(6)] internal bool DisableStatus; + [ProtoMember(7)] internal float RateOfFireMin; + } + + + [ProtoContract] + public struct AiDef + { + [ProtoMember(1)] internal bool TrackTargets; + [ProtoMember(2)] internal bool TurretAttached; + [ProtoMember(3)] internal bool TurretController; + [ProtoMember(4)] internal bool PrimaryTracking; + [ProtoMember(5)] internal bool LockOnFocus; + [ProtoMember(6)] internal bool SuppressFire; + [ProtoMember(7)] internal bool OverrideLeads; + [ProtoMember(8)] internal int DefaultLeadGroup; + [ProtoMember(9)] internal bool TargetGridCenter; + } + + [ProtoContract] + public struct HardwareDef + { + public enum HardwareType + { + BlockWeapon = 0, + HandWeapon = 1, + Phantom = 6, + } + + [ProtoMember(1)] internal float RotateRate; + [ProtoMember(2)] internal float ElevateRate; + [ProtoMember(3)] internal Vector3D Offset; + [ProtoMember(4)] internal bool FixedOffset; + [ProtoMember(5)] internal int MaxAzimuth; + [ProtoMember(6)] internal int MinAzimuth; + [ProtoMember(7)] internal int MaxElevation; + [ProtoMember(8)] internal int MinElevation; + [ProtoMember(9)] internal float InventorySize; + [ProtoMember(10)] internal HardwareType Type; + [ProtoMember(11)] internal int HomeAzimuth; + [ProtoMember(12)] internal int HomeElevation; + [ProtoMember(13)] internal CriticalDef CriticalReaction; + [ProtoMember(14)] internal float IdlePower; + + [ProtoContract] + public struct CriticalDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal int DefaultArmedTimer; + [ProtoMember(3)] internal bool PreArmed; + [ProtoMember(4)] internal bool TerminalControls; + [ProtoMember(5)] internal string AmmoRound; + } + } + + [ProtoContract] + public struct HardPointAudioDef + { + [ProtoMember(1)] internal string ReloadSound; + [ProtoMember(2)] internal string NoAmmoSound; + [ProtoMember(3)] internal string HardPointRotationSound; + [ProtoMember(4)] internal string BarrelRotationSound; + [ProtoMember(5)] internal string FiringSound; + [ProtoMember(6)] internal bool FiringSoundPerShot; + [ProtoMember(7)] internal string PreFiringSound; + [ProtoMember(8)] internal uint FireSoundEndDelay; + [ProtoMember(9)] internal bool FireSoundNoBurst; + } + + [ProtoContract] + public struct OtherDef + { + [ProtoMember(1)] internal int ConstructPartCap; + [ProtoMember(2)] internal int EnergyPriority; + [ProtoMember(3)] internal int RotateBarrelAxis; + [ProtoMember(4)] internal bool MuzzleCheck; + [ProtoMember(5)] internal bool Debug; + [ProtoMember(6)] internal double RestrictionRadius; + [ProtoMember(7)] internal bool CheckInflatedBox; + [ProtoMember(8)] internal bool CheckForAnyWeapon; + [ProtoMember(9)] internal bool DisableLosCheck; + [ProtoMember(10)] internal bool NoVoxelLosCheck; + + } + + [ProtoContract] + public struct HardPointParticleDef + { + [ProtoMember(1)] internal ParticleDef Effect1; + [ProtoMember(2)] internal ParticleDef Effect2; + } + } + + [ProtoContract] + public class AmmoDef + { + [ProtoMember(1)] internal string AmmoMagazine; + [ProtoMember(2)] internal string AmmoRound; + [ProtoMember(3)] internal bool HybridRound; + [ProtoMember(4)] internal float EnergyCost; + [ProtoMember(5)] internal float BaseDamage; + [ProtoMember(6)] internal float Mass; + [ProtoMember(7)] internal float Health; + [ProtoMember(8)] internal float BackKickForce; + [ProtoMember(9)] internal DamageScaleDef DamageScales; + [ProtoMember(10)] internal ShapeDef Shape; + [ProtoMember(11)] internal ObjectsHitDef ObjectsHit; + [ProtoMember(12)] internal TrajectoryDef Trajectory; + [ProtoMember(13)] internal AreaDamageDef AreaEffect; + [ProtoMember(14)] internal BeamDef Beams; + [ProtoMember(15)] internal FragmentDef Fragment; + [ProtoMember(16)] internal GraphicDef AmmoGraphics; + [ProtoMember(17)] internal AmmoAudioDef AmmoAudio; + [ProtoMember(18)] internal bool HardPointUsable; + [ProtoMember(19)] internal PatternDef Pattern; + [ProtoMember(20)] internal int EnergyMagazineSize; + [ProtoMember(21)] internal float DecayPerShot; + [ProtoMember(22)] internal EjectionDef Ejection; + [ProtoMember(23)] internal bool IgnoreWater; + [ProtoMember(24)] internal AreaOfDamageDef AreaOfDamage; + [ProtoMember(25)] internal EwarDef Ewar; + [ProtoMember(26)] internal bool IgnoreVoxels; + [ProtoMember(27)] internal bool Synchronize; + [ProtoMember(28)] internal double HeatModifier; + [ProtoMember(29)] internal bool NpcSafe; + [ProtoMember(30)] internal SynchronizeDef Sync; + [ProtoMember(31)] internal bool NoGridOrArmorScaling; + + [ProtoContract] + public struct SynchronizeDef + { + [ProtoMember(1)] internal bool Full; + [ProtoMember(2)] internal bool PointDefense; + [ProtoMember(3)] internal bool OnHitDeath; + } + + [ProtoContract] + public struct DamageScaleDef + { + + [ProtoMember(1)] internal float MaxIntegrity; + [ProtoMember(2)] internal bool DamageVoxels; + [ProtoMember(3)] internal float Characters; + [ProtoMember(4)] internal bool SelfDamage; + [ProtoMember(5)] internal GridSizeDef Grids; + [ProtoMember(6)] internal ArmorDef Armor; + [ProtoMember(7)] internal CustomScalesDef Custom; + [ProtoMember(8)] internal ShieldDef Shields; + [ProtoMember(9)] internal FallOffDef FallOff; + [ProtoMember(10)] internal double HealthHitModifier; + [ProtoMember(11)] internal double VoxelHitModifier; + [ProtoMember(12)] internal DamageTypes DamageType; + [ProtoMember(13)] internal DeformDef Deform; + + [ProtoContract] + public struct FallOffDef + { + [ProtoMember(1)] internal float Distance; + [ProtoMember(2)] internal float MinMultipler; + } + + [ProtoContract] + public struct GridSizeDef + { + [ProtoMember(1)] internal float Large; + [ProtoMember(2)] internal float Small; + } + + [ProtoContract] + public struct ArmorDef + { + [ProtoMember(1)] internal float Armor; + [ProtoMember(2)] internal float Heavy; + [ProtoMember(3)] internal float Light; + [ProtoMember(4)] internal float NonArmor; + } + + [ProtoContract] + public struct CustomScalesDef + { + internal enum SkipMode + { + NoSkip, + Inclusive, + Exclusive, + } + + [ProtoMember(1)] internal CustomBlocksDef[] Types; + [ProtoMember(2)] internal bool IgnoreAllOthers; + [ProtoMember(3)] internal SkipMode SkipOthers; + } + + [ProtoContract] + public struct DamageTypes + { + internal enum Damage + { + Energy, + Kinetic, + ShieldDefault, + } + + [ProtoMember(1)] internal Damage Base; + [ProtoMember(2)] internal Damage AreaEffect; + [ProtoMember(3)] internal Damage Detonation; + [ProtoMember(4)] internal Damage Shield; + } + + [ProtoContract] + public struct ShieldDef + { + internal enum ShieldType + { + Default, + Heal, + Bypass, + EmpRetired, + } + + [ProtoMember(1)] internal float Modifier; + [ProtoMember(2)] internal ShieldType Type; + [ProtoMember(3)] internal float BypassModifier; + [ProtoMember(4)] internal double HeatModifier; + } + + [ProtoContract] + public struct DeformDef + { + internal enum DeformTypes + { + HitBlock, + AllDamagedBlocks, + NoDeform, + } + + [ProtoMember(1)] internal DeformTypes DeformType; + [ProtoMember(2)] internal int DeformDelay; + } + } + + [ProtoContract] + public struct ShapeDef + { + public enum Shapes + { + LineShape, + SphereShape, + } + + [ProtoMember(1)] internal Shapes Shape; + [ProtoMember(2)] internal double Diameter; + } + + [ProtoContract] + public struct ObjectsHitDef + { + [ProtoMember(1)] internal int MaxObjectsHit; + [ProtoMember(2)] internal bool CountBlocks; + } + + + [ProtoContract] + public struct CustomBlocksDef + { + [ProtoMember(1)] internal string SubTypeId; + [ProtoMember(2)] internal float Modifier; + } + + [ProtoContract] + public struct GraphicDef + { + [ProtoMember(1)] internal bool ShieldHitDraw; + [ProtoMember(2)] internal float VisualProbability; + [ProtoMember(3)] internal string ModelName; + [ProtoMember(4)] internal AmmoParticleDef Particles; + [ProtoMember(5)] internal LineDef Lines; + [ProtoMember(6)] internal DecalDef Decals; + + [ProtoContract] + public struct AmmoParticleDef + { + [ProtoMember(1)] internal ParticleDef Ammo; + [ProtoMember(2)] internal ParticleDef Hit; + [ProtoMember(3)] internal ParticleDef Eject; + } + + [ProtoContract] + public struct LineDef + { + internal enum Texture + { + Normal, + Cycle, + Chaos, + Wave, + } + + public enum FactionColor + { + DontUse, + Foreground, + Background, + } + + [ProtoMember(1)] internal TracerBaseDef Tracer; + [ProtoMember(2)] internal string TracerMaterial; + [ProtoMember(3)] internal Randomize ColorVariance; + [ProtoMember(4)] internal Randomize WidthVariance; + [ProtoMember(5)] internal TrailDef Trail; + [ProtoMember(6)] internal OffsetEffectDef OffsetEffect; + [ProtoMember(7)] internal bool DropParentVelocity; + + + [ProtoContract] + public struct OffsetEffectDef + { + [ProtoMember(1)] internal double MaxOffset; + [ProtoMember(2)] internal double MinLength; + [ProtoMember(3)] internal double MaxLength; + } + + [ProtoContract] + public struct TracerBaseDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal float Length; + [ProtoMember(3)] internal float Width; + [ProtoMember(4)] internal Vector4 Color; + [ProtoMember(5)] internal uint VisualFadeStart; + [ProtoMember(6)] internal uint VisualFadeEnd; + [ProtoMember(7)] internal SegmentDef Segmentation; + [ProtoMember(8)] internal string[] Textures; + [ProtoMember(9)] internal Texture TextureMode; + [ProtoMember(10)] internal bool AlwaysDraw; + [ProtoMember(11)] internal FactionColor FactionColor; + + [ProtoContract] + public struct SegmentDef + { + [ProtoMember(1)] internal string Material; //retired + [ProtoMember(2)] internal double SegmentLength; + [ProtoMember(3)] internal double SegmentGap; + [ProtoMember(4)] internal double Speed; + [ProtoMember(5)] internal Vector4 Color; + [ProtoMember(6)] internal double WidthMultiplier; + [ProtoMember(7)] internal bool Reverse; + [ProtoMember(8)] internal bool UseLineVariance; + [ProtoMember(9)] internal Randomize ColorVariance; + [ProtoMember(10)] internal Randomize WidthVariance; + [ProtoMember(11)] internal string[] Textures; + [ProtoMember(12)] internal bool Enable; + [ProtoMember(13)] internal FactionColor FactionColor; + } + } + + [ProtoContract] + public struct TrailDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal string Material; + [ProtoMember(3)] internal int DecayTime; + [ProtoMember(4)] internal Vector4 Color; + [ProtoMember(5)] internal bool Back; + [ProtoMember(6)] internal float CustomWidth; + [ProtoMember(7)] internal bool UseWidthVariance; + [ProtoMember(8)] internal bool UseColorFade; + [ProtoMember(9)] internal string[] Textures; + [ProtoMember(10)] internal Texture TextureMode; + [ProtoMember(11)] internal bool AlwaysDraw; + [ProtoMember(12)] internal FactionColor FactionColor; + } + } + + [ProtoContract] + public struct DecalDef + { + + [ProtoMember(1)] internal int MaxAge; + [ProtoMember(2)] internal TextureMapDef[] Map; + + [ProtoContract] + public struct TextureMapDef + { + [ProtoMember(1)] internal string HitMaterial; + [ProtoMember(2)] internal string DecalMaterial; + } + } + } + + [ProtoContract] + public struct BeamDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal bool ConvergeBeams; + [ProtoMember(3)] internal bool VirtualBeams; + [ProtoMember(4)] internal bool RotateRealBeam; + [ProtoMember(5)] internal bool OneParticle; + [ProtoMember(6)] internal int FakeVoxelHitTicks; + } + + [ProtoContract] + public struct FragmentDef + { + [ProtoMember(1)] internal string AmmoRound; + [ProtoMember(2)] internal int Fragments; + [ProtoMember(3)] internal float Radial; + [ProtoMember(4)] internal float BackwardDegrees; + [ProtoMember(5)] internal float Degrees; + [ProtoMember(6)] internal bool Reverse; + [ProtoMember(7)] internal bool IgnoreArming; + [ProtoMember(8)] internal bool DropVelocity; + [ProtoMember(9)] internal float Offset; + [ProtoMember(10)] internal int MaxChildren; + [ProtoMember(11)] internal TimedSpawnDef TimedSpawns; + [ProtoMember(12)] internal bool FireSound; // not used, can remove + [ProtoMember(13)] internal Vector3D AdvOffset; + [ProtoMember(14)] internal bool ArmWhenHit; + + [ProtoContract] + public struct TimedSpawnDef + { + public enum PointTypes + { + Direct, + Lead, + Predict, + } + + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal int Interval; + [ProtoMember(3)] internal int StartTime; + [ProtoMember(4)] internal int MaxSpawns; + [ProtoMember(5)] internal double Proximity; + [ProtoMember(6)] internal bool ParentDies; + [ProtoMember(7)] internal bool PointAtTarget; + [ProtoMember(8)] internal int GroupSize; + [ProtoMember(9)] internal int GroupDelay; + [ProtoMember(10)] internal PointTypes PointType; + [ProtoMember(11)] internal float DirectAimCone; + } + } + + [ProtoContract] + public struct PatternDef + { + public enum PatternModes + { + Never, + Weapon, + Fragment, + Both, + } + + [ProtoMember(1)] internal string[] Patterns; + [ProtoMember(2)] internal bool Enable; + [ProtoMember(3)] internal float TriggerChance; + [ProtoMember(4)] internal bool SkipParent; + [ProtoMember(5)] internal bool Random; + [ProtoMember(6)] internal int RandomMin; + [ProtoMember(7)] internal int RandomMax; + [ProtoMember(8)] internal int PatternSteps; + [ProtoMember(9)] internal PatternModes Mode; + } + + [ProtoContract] + public struct EjectionDef + { + public enum SpawnType + { + Item, + Particle, + } + [ProtoMember(1)] internal float Speed; + [ProtoMember(2)] internal float SpawnChance; + [ProtoMember(3)] internal SpawnType Type; + [ProtoMember(4)] internal ComponentDef CompDef; + + [ProtoContract] + public struct ComponentDef + { + [ProtoMember(1)] internal string ItemName; + [ProtoMember(2)] internal int ItemLifeTime; + [ProtoMember(3)] internal int Delay; + } + } + + [ProtoContract] + public struct AreaOfDamageDef + { + public enum Falloff + { + Legacy, + NoFalloff, + Linear, + Curve, + InvCurve, + Squeeze, + Pooled, + Exponential, + } + public enum AoeShape + { + Round, + Diamond, + } + + [ProtoMember(1)] internal ByBlockHitDef ByBlockHit; + [ProtoMember(2)] internal EndOfLifeDef EndOfLife; + + [ProtoContract] + public struct ByBlockHitDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal double Radius; + [ProtoMember(3)] internal float Damage; + [ProtoMember(4)] internal float Depth; + [ProtoMember(5)] internal float MaxAbsorb; + [ProtoMember(6)] internal Falloff Falloff; + [ProtoMember(7)] internal AoeShape Shape; + } + + [ProtoContract] + public struct EndOfLifeDef + { + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal double Radius; + [ProtoMember(3)] internal float Damage; + [ProtoMember(4)] internal float Depth; + [ProtoMember(5)] internal float MaxAbsorb; + [ProtoMember(6)] internal Falloff Falloff; + [ProtoMember(7)] internal bool ArmOnlyOnHit; + [ProtoMember(8)] internal int MinArmingTime; + [ProtoMember(9)] internal bool NoVisuals; + [ProtoMember(10)] internal bool NoSound; + [ProtoMember(11)] internal float ParticleScale; + [ProtoMember(12)] internal string CustomParticle; + [ProtoMember(13)] internal string CustomSound; + [ProtoMember(14)] internal AoeShape Shape; + } + } + + [ProtoContract] + public struct EwarDef + { + public enum EwarType + { + AntiSmart, + JumpNull, + EnergySink, + Anchor, + Emp, + Offense, + Nav, + Dot, + Push, + Pull, + Tractor, + } + + public enum EwarMode + { + Effect, + Field, + } + + [ProtoMember(1)] internal bool Enable; + [ProtoMember(2)] internal EwarType Type; + [ProtoMember(3)] internal EwarMode Mode; + [ProtoMember(4)] internal float Strength; + [ProtoMember(5)] internal double Radius; + [ProtoMember(6)] internal int Duration; + [ProtoMember(7)] internal bool StackDuration; + [ProtoMember(8)] internal bool Depletable; + [ProtoMember(9)] internal int MaxStacks; + [ProtoMember(10)] internal bool NoHitParticle; + [ProtoMember(11)] internal PushPullDef Force; + [ProtoMember(12)] internal FieldDef Field; + + + [ProtoContract] + public struct FieldDef + { + [ProtoMember(1)] internal int Interval; + [ProtoMember(2)] internal int PulseChance; + [ProtoMember(3)] internal int GrowTime; + [ProtoMember(4)] internal bool HideModel; + [ProtoMember(5)] internal bool ShowParticle; + [ProtoMember(6)] internal double TriggerRange; + [ProtoMember(7)] internal ParticleDef Particle; + } + + [ProtoContract] + public struct PushPullDef + { + public enum Force + { + ProjectileLastPosition, + ProjectileOrigin, + HitPosition, + TargetCenter, + TargetCenterOfMass, + } + + [ProtoMember(1)] internal Force ForceFrom; + [ProtoMember(2)] internal Force ForceTo; + [ProtoMember(3)] internal Force Position; + [ProtoMember(4)] internal bool DisableRelativeMass; + [ProtoMember(5)] internal double TractorRange; + [ProtoMember(6)] internal bool ShooterFeelsForce; + } + } + + + [ProtoContract] + public struct AreaDamageDef + { + public enum AreaEffectType + { + Disabled, + Explosive, + Radiant, + AntiSmart, + JumpNullField, + EnergySinkField, + AnchorField, + EmpField, + OffenseField, + NavField, + DotField, + PushField, + PullField, + TractorField, + } + + [ProtoMember(1)] internal double AreaEffectRadius; + [ProtoMember(2)] internal float AreaEffectDamage; + [ProtoMember(3)] internal AreaEffectType AreaEffect; + [ProtoMember(4)] internal PulseDef Pulse; + [ProtoMember(5)] internal DetonateDef Detonation; + [ProtoMember(6)] internal ExplosionDef Explosions; + [ProtoMember(7)] internal EwarFieldsDef EwarFields; + [ProtoMember(8)] internal AreaInfluence Base; + + [ProtoContract] + public struct AreaInfluence + { + [ProtoMember(1)] internal double Radius; + [ProtoMember(2)] internal float EffectStrength; + } + + + [ProtoContract] + public struct PulseDef + { + [ProtoMember(1)] internal int Interval; + [ProtoMember(2)] internal int PulseChance; + [ProtoMember(3)] internal int GrowTime; + [ProtoMember(4)] internal bool HideModel; + [ProtoMember(5)] internal bool ShowParticle; + [ProtoMember(6)] internal ParticleDef Particle; + } + + [ProtoContract] + public struct EwarFieldsDef + { + [ProtoMember(1)] internal int Duration; + [ProtoMember(2)] internal bool StackDuration; + [ProtoMember(3)] internal bool Depletable; + [ProtoMember(4)] internal double TriggerRange; + [ProtoMember(5)] internal int MaxStacks; + [ProtoMember(6)] internal PushPullDef Force; + [ProtoMember(7)] internal bool DisableParticleEffect; + + [ProtoContract] + public struct PushPullDef + { + public enum Force + { + ProjectileLastPosition, + ProjectileOrigin, + HitPosition, + TargetCenter, + TargetCenterOfMass, + } + + [ProtoMember(1)] internal Force ForceFrom; + [ProtoMember(2)] internal Force ForceTo; + [ProtoMember(3)] internal Force Position; + [ProtoMember(4)] internal bool DisableRelativeMass; + [ProtoMember(5)] internal double TractorRange; + [ProtoMember(6)] internal bool ShooterFeelsForce; + } + } + + [ProtoContract] + public struct DetonateDef + { + [ProtoMember(1)] internal bool DetonateOnEnd; + [ProtoMember(2)] internal bool ArmOnlyOnHit; + [ProtoMember(3)] internal float DetonationRadius; + [ProtoMember(4)] internal float DetonationDamage; + [ProtoMember(5)] internal int MinArmingTime; + } + + [ProtoContract] + public struct ExplosionDef + { + [ProtoMember(1)] internal bool NoVisuals; + [ProtoMember(2)] internal bool NoSound; + [ProtoMember(3)] internal float Scale; + [ProtoMember(4)] internal string CustomParticle; + [ProtoMember(5)] internal string CustomSound; + [ProtoMember(6)] internal bool NoShrapnel; + [ProtoMember(7)] internal bool NoDeformation; + } + } + + [ProtoContract] + public struct AmmoAudioDef + { + [ProtoMember(1)] internal string TravelSound; + [ProtoMember(2)] internal string HitSound; + [ProtoMember(3)] internal float HitPlayChance; + [ProtoMember(4)] internal bool HitPlayShield; + [ProtoMember(5)] internal string VoxelHitSound; + [ProtoMember(6)] internal string PlayerHitSound; + [ProtoMember(7)] internal string FloatingHitSound; + [ProtoMember(8)] internal string ShieldHitSound; + [ProtoMember(9)] internal string ShotSound; + } + + [ProtoContract] + public struct TrajectoryDef + { + internal enum GuidanceType + { + None, + Remote, + TravelTo, + Smart, + DetectTravelTo, + DetectSmart, + DetectFixed, + DroneAdvanced, + } + + [ProtoMember(1)] internal float MaxTrajectory; + [ProtoMember(2)] internal float AccelPerSec; + [ProtoMember(3)] internal float DesiredSpeed; + [ProtoMember(4)] internal float TargetLossDegree; + [ProtoMember(5)] internal int TargetLossTime; + [ProtoMember(6)] internal int MaxLifeTime; + [ProtoMember(7)] internal int DeaccelTime; + [ProtoMember(8)] internal Randomize SpeedVariance; + [ProtoMember(9)] internal Randomize RangeVariance; + [ProtoMember(10)] internal GuidanceType Guidance; + [ProtoMember(11)] internal SmartsDef Smarts; + [ProtoMember(12)] internal MinesDef Mines; + [ProtoMember(13)] internal float GravityMultiplier; + [ProtoMember(14)] internal uint MaxTrajectoryTime; + [ProtoMember(15)] internal ApproachDef[] Approaches; + [ProtoMember(16)] internal double TotalAcceleration; + [ProtoMember(17)] internal OnHitDef OnHit; + + [ProtoContract] + public struct SmartsDef + { + [ProtoMember(1)] internal double Inaccuracy; + [ProtoMember(2)] internal double Aggressiveness; + [ProtoMember(3)] internal double MaxLateralThrust; + [ProtoMember(4)] internal double TrackingDelay; + [ProtoMember(5)] internal int MaxChaseTime; + [ProtoMember(6)] internal bool OverideTarget; + [ProtoMember(7)] internal int MaxTargets; + [ProtoMember(8)] internal bool NoTargetExpire; + [ProtoMember(9)] internal bool Roam; + [ProtoMember(10)] internal bool KeepAliveAfterTargetLoss; + [ProtoMember(11)] internal float OffsetRatio; + [ProtoMember(12)] internal int OffsetTime; + [ProtoMember(13)] internal bool CheckFutureIntersection; + [ProtoMember(14)] internal double NavAcceleration; + [ProtoMember(15)] internal bool AccelClearance; + [ProtoMember(16)] internal double SteeringLimit; + [ProtoMember(17)] internal bool FocusOnly; + [ProtoMember(18)] internal double OffsetMinRange; + [ProtoMember(19)] internal bool FocusEviction; + [ProtoMember(20)] internal double ScanRange; + [ProtoMember(21)] internal bool NoSteering; + [ProtoMember(22)] internal double FutureIntersectionRange; + [ProtoMember(23)] internal double MinTurnSpeed; + [ProtoMember(24)] internal bool NoTargetApproach; + [ProtoMember(25)] internal bool AltNavigation; + } + + [ProtoContract] + public struct ApproachDef + { + public enum ReInitCondition + { + Wait, + MoveToPrevious, + MoveToNext, + ForceRestart, + } + + public enum Conditions + { + Ignore, + Spawn, + DistanceFromPositionC, + Lifetime, + DesiredElevation, + MinTravelRequired, + MaxTravelRequired, + Deadtime, + DistanceToPositionC, + NextTimedSpawn, + RelativeLifetime, + RelativeDeadtime, + SinceTimedSpawn, + RelativeSpawns, + EnemyTargetLoss, + RelativeHealthLost, + HealthRemaining, + DistanceFromPositionB, + DistanceToPositionB, + DistanceFromTarget, + DistanceToTarget, + DistanceFromEndTrajectory, + DistanceToEndTrajectory, + } + + public enum UpRelativeTo + { + UpRelativeToBlock, + UpRelativeToGravity, + UpTargetDirection, + UpTargetVelocity, + UpStoredStartDontUse, + UpStoredEndDontUse, + UpStoredStartPosition, + UpStoredEndPosition, + UpStoredStartLocalPosition, + UpStoredEndLocalPosition, + UpRelativeToShooter, + UpOriginDirection, + UpElevationDirection, + } + + public enum FwdRelativeTo + { + ForwardElevationDirection, + ForwardRelativeToBlock, + ForwardRelativeToGravity, + ForwardTargetDirection, + ForwardTargetVelocity, + ForwardStoredStartDontUse, + ForwardStoredEndDontUse, + ForwardStoredStartPosition, + ForwardStoredEndPosition, + ForwardStoredStartLocalPosition, + ForwardStoredEndLocalPosition, + ForwardRelativeToShooter, + ForwardOriginDirection, + } + + public enum RelativeTo + { + Origin, + Shooter, + Target, + Surface, + MidPoint, + PositionA, + Nothing, + StoredStartDontUse, + StoredEndDontUse, + StoredStartPosition, + StoredEndPosition, + StoredStartLocalPosition, + StoredEndLocalPosition, + } + + public enum ConditionOperators + { + StartEnd_And, + StartEnd_Or, + StartAnd_EndOr, + StartOr_EndAnd, + } + + public enum StageEvents + { + DoNothing, + EndProjectile, + EndProjectileOnRestart, + StoreDontUse, + StorePositionDontUse, + Refund, + StorePositionA, + StorePositionB, + StorePositionC, + } + + [ProtoContract] + public struct WeightedIdListDef + { + + [ProtoMember(1)] public int ApproachId; + [ProtoMember(2)] public Randomize Weight; + [ProtoMember(3)] public double End1WeightMod; + [ProtoMember(4)] public double End2WeightMod; + [ProtoMember(5)] public int MaxRuns; + [ProtoMember(6)] public double End3WeightMod; + } + + [ProtoMember(1)] internal ReInitCondition RestartCondition; + [ProtoMember(2)] internal Conditions StartCondition1; + [ProtoMember(3)] internal Conditions EndCondition1; + [ProtoMember(4)] internal UpRelativeTo Up; + [ProtoMember(5)] internal RelativeTo PositionB; + [ProtoMember(6)] internal double AngleOffset; + [ProtoMember(7)] internal double Start1Value; + [ProtoMember(8)] internal double End1Value; + [ProtoMember(9)] internal double LeadDistance; + [ProtoMember(10)] internal double DesiredElevation; + [ProtoMember(11)] internal double AccelMulti; + [ProtoMember(12)] internal double SpeedCapMulti; + [ProtoMember(13)] internal bool AdjustPositionC; + [ProtoMember(14)] internal bool CanExpireOnceStarted; + [ProtoMember(15)] internal ParticleDef AlternateParticle; + [ProtoMember(16)] internal string AlternateSound; + [ProtoMember(17)] internal string AlternateModel; + [ProtoMember(18)] internal int OnRestartRevertTo; + [ProtoMember(19)] internal ParticleDef StartParticle; + [ProtoMember(20)] internal bool AdjustPositionB; + [ProtoMember(21)] internal bool AdjustUp; + [ProtoMember(22)] internal bool PushLeadByTravelDistance; + [ProtoMember(23)] internal double TrackingDistance; + [ProtoMember(24)] internal Conditions StartCondition2; + [ProtoMember(25)] internal double Start2Value; + [ProtoMember(26)] internal Conditions EndCondition2; + [ProtoMember(27)] internal double End2Value; + [ProtoMember(28)] internal RelativeTo Elevation; + [ProtoMember(29)] internal double ElevationTolerance; + [ProtoMember(30)] internal ConditionOperators Operators; + [ProtoMember(31)] internal StageEvents StartEvent; + [ProtoMember(32)] internal StageEvents EndEvent; + [ProtoMember(33)] internal double TotalAccelMulti; + [ProtoMember(34)] internal double DeAccelMulti; + [ProtoMember(35)] internal bool Orbit; + [ProtoMember(36)] internal double OrbitRadius; + [ProtoMember(37)] internal int OffsetTime; + [ProtoMember(38)] internal double OffsetMinRadius; + [ProtoMember(39)] internal bool NoTimedSpawns; + [ProtoMember(40)] internal double OffsetMaxRadius; + [ProtoMember(41)] internal bool ForceRestart; + [ProtoMember(42)] internal RelativeTo PositionC; + [ProtoMember(43)] internal bool DisableAvoidance; + [ProtoMember(44)] internal int StoredStartId; + [ProtoMember(45)] internal int StoredEndId; + [ProtoMember(46)] internal WeightedIdListDef[] RestartList; + [ProtoMember(47)] internal RelativeTo StoredStartType; + [ProtoMember(48)] internal RelativeTo StoredEndType; + [ProtoMember(49)] internal bool LeadRotateElevatePositionB; + [ProtoMember(50)] internal bool LeadRotateElevatePositionC; + [ProtoMember(51)] internal bool NoElevationLead; + [ProtoMember(52)] internal bool IgnoreAntiSmart; + [ProtoMember(53)] internal double HeatRefund; + [ProtoMember(54)] internal Randomize AngleVariance; + [ProtoMember(55)] internal bool ReloadRefund; + [ProtoMember(56)] internal int ModelRotateTime; + [ProtoMember(57)] internal FwdRelativeTo Forward; + [ProtoMember(58)] internal bool AdjustForward; + [ProtoMember(59)] internal bool ToggleIngoreVoxels; + [ProtoMember(60)] internal bool SelfAvoidance; + [ProtoMember(61)] internal bool TargetAvoidance; + [ProtoMember(62)] internal bool SelfPhasing; + [ProtoMember(63)] internal bool TrajectoryRelativeToB; + [ProtoMember(64)] internal Conditions EndCondition3; + [ProtoMember(65)] internal double End3Value; + [ProtoMember(66)] internal bool SwapNavigationType; + [ProtoMember(67)] internal bool ElevationRelativeToC; + } + + [ProtoContract] + public struct MinesDef + { + [ProtoMember(1)] internal double DetectRadius; + [ProtoMember(2)] internal double DeCloakRadius; + [ProtoMember(3)] internal int FieldTime; + [ProtoMember(4)] internal bool Cloak; + [ProtoMember(5)] internal bool Persist; + } + + [ProtoContract] + public struct OnHitDef + { + /* + [ProtoMember(1)] internal int Duration; + [ProtoMember(2)] internal int ProcInterval; + [ProtoMember(3)] internal double ProcAmount; + [ProtoMember(4)] internal bool ProcOnVoxels; + [ProtoMember(5)] internal bool FragOnProc; + [ProtoMember(6)] internal bool DieOnEnd; + [ProtoMember(7)] internal bool StickOnHit; + [ProtoMember(8)] internal bool AlignFragtoImpactAngle; + */ + } + } + + [ProtoContract] + public struct Randomize + { + [ProtoMember(1)] internal float Start; + [ProtoMember(2)] internal float End; + } + } + + [ProtoContract] + public struct ParticleOptionDef + { + [ProtoMember(1)] internal float Scale; + [ProtoMember(2)] internal float MaxDistance; + [ProtoMember(3)] internal float MaxDuration; + [ProtoMember(4)] internal bool Loop; + [ProtoMember(5)] internal bool Restart; + [ProtoMember(6)] internal float HitPlayChance; + } + + + [ProtoContract] + public struct ParticleDef + { + [ProtoMember(1)] internal string Name; + [ProtoMember(2)] internal Vector4 Color; + [ProtoMember(3)] internal Vector3D Offset; + [ProtoMember(4)] internal ParticleOptionDef Extras; + [ProtoMember(5)] internal bool ApplyToShield; + [ProtoMember(6)] internal bool DisableCameraCulling; + } + } + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/Onedeeper/capacitorlimited.cs b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/Onedeeper/capacitorlimited.cs index cd8f515b9..3499ab323 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/Onedeeper/capacitorlimited.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/Onedeeper/capacitorlimited.cs @@ -1,92 +1,92 @@ -using Sandbox.Common.ObjectBuilders; -using Sandbox.Game; -using Sandbox.Game.Entities; -using Sandbox.Game.Entities.Blocks; -using Sandbox.ModAPI; -using Sandbox.ModAPI.Ingame; -using System; -using VRage.Game.Components; -using VRage.Game.ModAPI; -using VRage.ModAPI; -using VRage.ObjectBuilders; -using VRageMath; - -namespace capacitorlimited -{ - [MyEntityComponentDescriptor(typeof(MyObjectBuilder_BatteryBlock), false, "CapacitorLarge")] - public class capacitorlimited : MyGameLogicComponent - { - private Sandbox.ModAPI.IMyBatteryBlock Capacitor; - private int triggerTick = 0; - private const double OFFSET_DISTANCE = 3; - private const int COUNTDOWN_SECONDS = 30 * 60; // 5 seconds in game time - - public override void Init(MyObjectBuilder_EntityBase objectBuilder) - { - if (!MyAPIGateway.Session.IsServer) return; // Only do explosions serverside - Capacitor = Entity as Sandbox.ModAPI.IMyBatteryBlock; - NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; - } - - public override void UpdateOnceBeforeFrame() - { - if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; - Capacitor.ChargeMode = ChargeMode.Recharge; // Set to recharge mode by default - Capacitor.IsWorkingChanged += CapacitorIsWorkingChanged; - NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; - } - - public override void UpdateAfterSimulation() - { - if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; - if (Capacitor.ChargeMode != ChargeMode.Recharge) - { - triggerTick += 1; - if (triggerTick >= COUNTDOWN_SECONDS) - { - DoExplosion(); - } - else if (triggerTick % 60 == 0) // Show notification every second - { - int remainingSeconds = COUNTDOWN_SECONDS - triggerTick; - int seconds = remainingSeconds / 60; - string name = Capacitor.CustomName; - string message = string.Format("Capacitor ({0}) explodes in {1} seconds", name, seconds); - - MyVisualScriptLogicProvider.ShowNotificationLocal(message, 1000, "Red"); - } - } - else - { - triggerTick = 0; // Reset countdown if in recharge mode - } - } - - private void DoExplosion() - { - if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; - double radius = 30; - BoundingSphereD sphere = new BoundingSphereD(Capacitor.WorldMatrix.Translation + (Capacitor.WorldMatrix.Forward * OFFSET_DISTANCE), radius); // Apply offset, 10); - MyExplosionInfo explosion = new MyExplosionInfo(0f, 10000f, sphere, MyExplosionTypeEnum.CUSTOM, true); - - MyExplosions.AddExplosion(ref explosion); - } - - private void CapacitorIsWorkingChanged(IMyCubeBlock obj) - { - if (obj.EntityId != Capacitor.EntityId) return; - if (Capacitor.ChargeMode != ChargeMode.Recharge && Capacitor.Enabled) - { - triggerTick += 1; - } - } - - public override void Close() - { - if (Capacitor != null) - { - Capacitor.IsWorkingChanged -= CapacitorIsWorkingChanged; - } - } - } -} +using Sandbox.Common.ObjectBuilders; +using Sandbox.Game; +using Sandbox.Game.Entities; +using Sandbox.Game.Entities.Blocks; +using Sandbox.ModAPI; +using Sandbox.ModAPI.Ingame; +using System; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRage.ModAPI; +using VRage.ObjectBuilders; +using VRageMath; + +namespace capacitorlimited +{ + [MyEntityComponentDescriptor(typeof(MyObjectBuilder_BatteryBlock), false, "CapacitorLarge")] + public class capacitorlimited : MyGameLogicComponent + { + private Sandbox.ModAPI.IMyBatteryBlock Capacitor; + private int triggerTick = 0; + private const double OFFSET_DISTANCE = 3; + private const int COUNTDOWN_SECONDS = 30 * 60; // 5 seconds in game time + + public override void Init(MyObjectBuilder_EntityBase objectBuilder) + { + if (!MyAPIGateway.Session.IsServer) return; // Only do explosions serverside + Capacitor = Entity as Sandbox.ModAPI.IMyBatteryBlock; + NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; + } + + public override void UpdateOnceBeforeFrame() + { + if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; + Capacitor.ChargeMode = ChargeMode.Recharge; // Set to recharge mode by default + Capacitor.IsWorkingChanged += CapacitorIsWorkingChanged; + NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; + } + + public override void UpdateAfterSimulation() + { + if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; + if (Capacitor.ChargeMode != ChargeMode.Recharge) + { + triggerTick += 1; + if (triggerTick >= COUNTDOWN_SECONDS) + { + DoExplosion(); + } + else if (triggerTick % 60 == 0) // Show notification every second + { + int remainingSeconds = COUNTDOWN_SECONDS - triggerTick; + int seconds = remainingSeconds / 60; + string name = Capacitor.CustomName; + string message = string.Format("Capacitor ({0}) explodes in {1} seconds", name, seconds); + + MyVisualScriptLogicProvider.ShowNotificationLocal(message, 1000, "Red"); + } + } + else + { + triggerTick = 0; // Reset countdown if in recharge mode + } + } + + private void DoExplosion() + { + if (Capacitor == null || Capacitor.CubeGrid.Physics == null) return; + double radius = 30; + BoundingSphereD sphere = new BoundingSphereD(Capacitor.WorldMatrix.Translation + (Capacitor.WorldMatrix.Forward * OFFSET_DISTANCE), radius); // Apply offset, 10); + MyExplosionInfo explosion = new MyExplosionInfo(0f, 10000f, sphere, MyExplosionTypeEnum.CUSTOM, true); + + MyExplosions.AddExplosion(ref explosion); + } + + private void CapacitorIsWorkingChanged(IMyCubeBlock obj) + { + if (obj.EntityId != Capacitor.EntityId) return; + if (Capacitor.ChargeMode != ChargeMode.Recharge && Capacitor.Enabled) + { + triggerTick += 1; + } + } + + public override void Close() + { + if (Capacitor != null) + { + Capacitor.IsWorkingChanged -= CapacitorIsWorkingChanged; + } + } + } +} 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 363ee0799..4de6b91a5 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Scripts/selfrepair/selfrepair.cs @@ -1,101 +1,101 @@ -using Sandbox.Common.ObjectBuilders; -using Sandbox.Game; -using Sandbox.Game.Entities; -using Sandbox.Game.EntityComponents; -using Sandbox.ModAPI; -using VRage.Game; -using VRage.Game.Components; -using VRage.Game.ModAPI; -using VRage.Game.ModAPI.Ingame; -using VRage.ModAPI; -using VRage.ObjectBuilders; -using VRageMath; -using IMySlimBlock = VRage.Game.ModAPI.IMySlimBlock; - -namespace TIOSelfRepair -{ - [MyEntityComponentDescriptor(typeof(MyObjectBuilder_ConveyorSorter), false, "ACTIVE_BLASTPLATE", "GIGA_BLASTPLATE" )] - public class TIOSelfRepair : MyGameLogicComponent - { - private IMyConveyorSorter artilleryBlock; //gosh i hope this doesnt conflict with the script in TIO - private int triggerTick = 0; - private const int COUNTDOWN_TICKS = 10 * 60; // (60 ticks per second) - - public override void Init(MyObjectBuilder_EntityBase objectBuilder) - { - if (!MyAPIGateway.Session.IsServer) return; - artilleryBlock = Entity as IMyConveyorSorter; - NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; - } - - public override void UpdateOnceBeforeFrame() - { - if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; - artilleryBlock.EnabledChanged += ArtilleryBlockEnabledChanged; - NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; - } - - public override void UpdateAfterSimulation() - { - if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; - - if (!artilleryBlock.IsFunctional) - { - triggerTick += 1; - if (triggerTick >= COUNTDOWN_TICKS) - { - DoRepair(); - MyVisualScriptLogicProvider.CreateParticleEffectAtPosition("RepairParticle", artilleryBlock.GetPosition()); - MyVisualScriptLogicProvider.PlaySingleSoundAtPosition("RepairSound", artilleryBlock.GetPosition()); - triggerTick = 0; // Restart the timer after repair - } - } - else - { - triggerTick = 0; // Reset countdown if the block is functional - } - } - - private void DoRepair() - { - if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; - - IMySlimBlock slimBlock = artilleryBlock.SlimBlock; - if (slimBlock == null) return; - - // Fetch the original owner ID of the grid. - long gridOwnerId = artilleryBlock.CubeGrid.BigOwners.Count > 0 ? artilleryBlock.CubeGrid.BigOwners[0] : 0; - - // If the grid has an owner, proceed with repair and ownership change. - - float repairAmount = 14; //about 1% per triggertick, tested in game. - slimBlock.IncreaseMountLevel(repairAmount, 0L, null, 0f, false, MyOwnershipShareModeEnum.Faction); - - // Try casting to MyCubeBlock and change the owner. - MyCubeBlock cubeBlock = artilleryBlock as MyCubeBlock; - if (cubeBlock != null) - { - cubeBlock.ChangeBlockOwnerRequest(gridOwnerId, MyOwnershipShareModeEnum.Faction); - } - - } - - - private void ArtilleryBlockEnabledChanged(IMyTerminalBlock obj) - { - if (obj.EntityId != artilleryBlock.EntityId) return; - if (artilleryBlock.IsFunctional) - { - triggerTick = 0; // Reset countdown if functional - } - } - - public override void Close() - { - if (artilleryBlock != null) - { - artilleryBlock.EnabledChanged -= ArtilleryBlockEnabledChanged; - } - } - } -} +using Sandbox.Common.ObjectBuilders; +using Sandbox.Game; +using Sandbox.Game.Entities; +using Sandbox.Game.EntityComponents; +using Sandbox.ModAPI; +using VRage.Game; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRage.Game.ModAPI.Ingame; +using VRage.ModAPI; +using VRage.ObjectBuilders; +using VRageMath; +using IMySlimBlock = VRage.Game.ModAPI.IMySlimBlock; + +namespace TIOSelfRepair +{ + [MyEntityComponentDescriptor(typeof(MyObjectBuilder_ConveyorSorter), false, "ACTIVE_BLASTPLATE", "Nariman_Dart_Turret", "GIGA_BLASTPLATE" )] + public class TIOSelfRepair : MyGameLogicComponent + { + private IMyConveyorSorter artilleryBlock; //gosh i hope this doesnt conflict with the script in TIO + private int triggerTick = 0; + private const int COUNTDOWN_TICKS = 10 * 60; // (60 ticks per second) + + public override void Init(MyObjectBuilder_EntityBase objectBuilder) + { + if (!MyAPIGateway.Session.IsServer) return; + artilleryBlock = Entity as IMyConveyorSorter; + NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; + } + + public override void UpdateOnceBeforeFrame() + { + if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; + artilleryBlock.EnabledChanged += ArtilleryBlockEnabledChanged; + NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME; + } + + public override void UpdateAfterSimulation() + { + if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; + + if (!artilleryBlock.IsFunctional) + { + triggerTick += 1; + if (triggerTick >= COUNTDOWN_TICKS) + { + DoRepair(); + MyVisualScriptLogicProvider.CreateParticleEffectAtPosition("RepairParticle", artilleryBlock.GetPosition()); + MyVisualScriptLogicProvider.PlaySingleSoundAtPosition("RepairSound", artilleryBlock.GetPosition()); + triggerTick = 0; // Restart the timer after repair + } + } + else + { + triggerTick = 0; // Reset countdown if the block is functional + } + } + + private void DoRepair() + { + if (artilleryBlock == null || artilleryBlock.CubeGrid.Physics == null) return; + + IMySlimBlock slimBlock = artilleryBlock.SlimBlock; + if (slimBlock == null) return; + + // Fetch the original owner ID of the grid. + long gridOwnerId = artilleryBlock.CubeGrid.BigOwners.Count > 0 ? artilleryBlock.CubeGrid.BigOwners[0] : 0; + + // If the grid has an owner, proceed with repair and ownership change. + + float repairAmount = 14; //about 1% per triggertick, tested in game. + slimBlock.IncreaseMountLevel(repairAmount, 0L, null, 0f, false, MyOwnershipShareModeEnum.Faction); + + // Try casting to MyCubeBlock and change the owner. + MyCubeBlock cubeBlock = artilleryBlock as MyCubeBlock; + if (cubeBlock != null) + { + cubeBlock.ChangeBlockOwnerRequest(gridOwnerId, MyOwnershipShareModeEnum.Faction); + } + + } + + + private void ArtilleryBlockEnabledChanged(IMyTerminalBlock obj) + { + if (obj.EntityId != artilleryBlock.EntityId) return; + if (artilleryBlock.IsFunctional) + { + triggerTick = 0; // Reset countdown if functional + } + } + + public override void Close() + { + if (artilleryBlock != null) + { + artilleryBlock.EnabledChanged -= ArtilleryBlockEnabledChanged; + } + } + } +} diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SolHyp_FAC_MuzzleFlash.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SolHyp_FAC_MuzzleFlash.sbc index f35ff9697..596214acb 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SolHyp_FAC_MuzzleFlash.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/SolHyp_FAC_MuzzleFlash.sbc @@ -1,1859 +1,1859 @@ - - - - - - 63758 - 4 - 0 - false - false - 4 - 0 - 0 - - - GPU - - - - 32 - 16 - 0 - - - - 480 - - - 16 - - - - - - - - - - - 2 - 5.1 - 5 - 1 - - - - - - - 3 - 5.1 - 5 - 1 - - - - - - - 4 - 5.1 - 5 - 0.2 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 50 - - - - - 20 - - - - - 1 - - - - - 0 - - - - - - - - - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 0 - - - - - - - - - 1 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - -500 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 0 - - - - - - - - - - 0 - - - - - 0.8 - - - - - 0.8 - - - - - 0 - - - - - - - - - 0.3 - - - 15 - - - 1 - - - 0.02 - - - true - - - - - - Atlas_D_01 - - - 15 - - - false - - - false - - - false - - - false - - - 1 - - - 0 - - - - 0 - 0 - -7 - - - - 0 - - - 0.306 - - - false - - - 0 - - - 0 - - - false - - - 1 - - - - 90 - 0 - 90 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 2 - - - - - 2 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 5 - - - - - 200 - - - - - 100 - - - - - 50 - - - - - - - - - 0.5 - - - false - - - true - - - 20 - - - 5 - - - 1 - - - 0 - - - 0.001 - - - false - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 64 - - - 72 - - - - - - - - - - - 1 - 0.933333337 - 0.7921569 - 1 - - - - - - - 0.235294119 - 0.235294119 - 0.235294119 - 1 - - - - - - - 0.008526365 - 0.008526365 - 0.008526365 - 0.07843138 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 1 - - - - - 0.2 - - - - - 0.05 - - - - - 0 - - - - - - - - - 0.5 - - - - - - - 0.02 - 0.02 - 0.02 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 30 - - - - - - - - - 5 - - - - - - - - - 0 - - - - - - - - - 15 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - - - - -300 - - - - - -35 - - - - - -9 - - - - - 0 - - - - - - - - - 1.6 - - - - - - - - - - 0.25 - - - - - 3 - - - - - 8 - - - - - 0.7 - - - - - - - - - 2 - - - 2 - - - 4 - - - 0.2 - - - true - - - - - - Atlas_D_01 - - - 0.3 - - - false - - - false - - - true - - - false - - - 1 - - - -0.04 - - - - 0 - 0 - 0 - - - - 1 - - - 0 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 8 - - - - - - 0 - - - - - - - - - - 3 - - - - - 0.5 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 10 - - - 1 - - - 1 - - - 0 - - - 0 - - - false - - - 0 - - - - - GPU - - - - 16 - 16 - 0 - - - - 128 - - - 96 - - - - - - - - - - - 1 - 0.5764706 - 0.215686277 - 0.156862751 - - - - - - - 0.215686277 - 0.215686277 - 0.215686277 - 0.5882353 - - - - - - - 0.008526365 - 0.008526365 - 0.008526365 - 0.07843138 - - - - - - - 0 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - 0.5 - - - - - 0.02 - - - - - 0.02 - - - - - 0.02 - - - - - - - - - 0.5 - - - - - - - 0.012 - 0.012 - 0.012 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 2 - - - - - - - - - 3 - - - - - - - - - 0 - - - - - - - - - 50 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 2 - - - - - - - - - - 4 - - - - - 9 - - - - - 25 - - - - - 6 - - - - - - - - - 1 - - - 2 - - - 4 - - - 0.02 - - - true - - - - - - Atlas_E_01 - - - 0.1 - - - false - - - false - - - true - - - false - - - 1 - - - -0.04 - - - - 0 - 0 - -4 - - - - 0 - - - 0 - - - true - - - 0.95 - - - 0.5 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 2 - - - - - - 0 - - - - - - - - - - 0.5 - - - - - 0 - - - - - 0 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 25 - - - 0 - - - 1 - - - 0 - - - 0 - - - false - - - 0 - - - - - GPU - - - - 4 - 4 - 0 - - - - 6 - - - 1 - - - - - - - - - - - 0 - 0 - 0.1 - 0.5 - - - - - - - 0 - 0.5 - 0.8 - 0.4 - - - - - - - 0.5 - 0.6 - 0.8 - 0.7 - - - - - - - 0.5 - 0.5 - 0.5 - 0.4 - - - - - - - - - - - - - - - - - 1 - - - - - 0.1 - - - - - 0.3 - - - - - 0.13 - - - - - - - - - 10.5 - - - - - - - 0 - 0 - 5 - - - - - - - - - - 0 - - - - - - - 0 - 0 - -1 - - - - - - - 1 - - - - - - - - - 0 - - - - - - - - - 10 - - - - - - - - - 30 - - - - - - - 0 - 0 - 0 - - - - - - - - - - - 0 - - - - - 0 - - - - - 11 - - - - - 0 - - - - - - - - - 0.85 - - - - - - - - - - 0 - - - - - 0 - - - - - 2 - - - - - 22 - - - - - - - - - 0.3 - - - 0 - - - 4 - - - 0.01 - - - true - - - - - - Atlas_E_01 - - - 0.51 - - - false - - - false - - - false - - - false - - - 2 - - - 0 - - - - 0 - 0 - -1 - - - - 0 - - - 0.089 - - - true - - - 0 - - - 0 - - - false - - - 0 - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - - - - - - - - - - - - 1 - - - - - - 0 - - - - - - - - - - 1000 - - - - - 100 - - - - - 0.1 - - - - - 0 - - - - - - - - - 1 - - - false - - - false - - - 1 - - - 0.5 - - - 1 - - - 0 - - - 0 - - - false - - - 0 - - - - - - - - - - - - - 0 - 0 - -2 - - - - - - - 0 - 0 - -13 - - - - - - - - - - - - - - 1 - 0.7742273 - 0.3736151 - 1 - - - - - - - - - - - - - 100 - - - - - - - - - - - - 200 - - - - - 0 - - - - - - - - - 50 - - - - - 0 - - - - - - true - - - 0 - - - 0.1 - - - 0.005 - - - - - 3000 - 1 - - + + + + + + 63758 + 4 + 0 + false + false + 4 + 0 + 0 + + + GPU + + + + 32 + 16 + 0 + + + + 480 + + + 16 + + + + + + + + + + + 2 + 5.1 + 5 + 1 + + + + + + + 3 + 5.1 + 5 + 1 + + + + + + + 4 + 5.1 + 5 + 0.2 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 50 + + + + + 20 + + + + + 1 + + + + + 0 + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 0 + + + + + + + + + 1 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + -500 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 0 + + + + + + + + + + 0 + + + + + 0.8 + + + + + 0.8 + + + + + 0 + + + + + + + + + 0.3 + + + 15 + + + 1 + + + 0.02 + + + true + + + + + + Atlas_D_01 + + + 15 + + + false + + + false + + + false + + + false + + + 1 + + + 0 + + + + 0 + 0 + -7 + + + + 0 + + + 0.306 + + + false + + + 0 + + + 0 + + + false + + + 1 + + + + 90 + 0 + 90 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 2 + + + + + 2 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 5 + + + + + 200 + + + + + 100 + + + + + 50 + + + + + + + + + 0.5 + + + false + + + true + + + 20 + + + 5 + + + 1 + + + 0 + + + 0.001 + + + false + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 64 + + + 72 + + + + + + + + + + + 1 + 0.933333337 + 0.7921569 + 1 + + + + + + + 0.235294119 + 0.235294119 + 0.235294119 + 1 + + + + + + + 0.008526365 + 0.008526365 + 0.008526365 + 0.07843138 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 1 + + + + + 0.2 + + + + + 0.05 + + + + + 0 + + + + + + + + + 0.5 + + + + + + + 0.02 + 0.02 + 0.02 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 30 + + + + + + + + + 5 + + + + + + + + + 0 + + + + + + + + + 15 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + + + + -300 + + + + + -35 + + + + + -9 + + + + + 0 + + + + + + + + + 1.6 + + + + + + + + + + 0.25 + + + + + 3 + + + + + 8 + + + + + 0.7 + + + + + + + + + 2 + + + 2 + + + 4 + + + 0.2 + + + true + + + + + + Atlas_D_01 + + + 0.3 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + 0 + + + + 1 + + + 0 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 8 + + + + + + 0 + + + + + + + + + + 3 + + + + + 0.5 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 10 + + + 1 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + GPU + + + + 16 + 16 + 0 + + + + 128 + + + 96 + + + + + + + + + + + 1 + 0.5764706 + 0.215686277 + 0.156862751 + + + + + + + 0.215686277 + 0.215686277 + 0.215686277 + 0.5882353 + + + + + + + 0.008526365 + 0.008526365 + 0.008526365 + 0.07843138 + + + + + + + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + + + + 0.5 + + + + + 0.02 + + + + + 0.02 + + + + + 0.02 + + + + + + + + + 0.5 + + + + + + + 0.012 + 0.012 + 0.012 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 2 + + + + + + + + + 3 + + + + + + + + + 0 + + + + + + + + + 50 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 2 + + + + + + + + + + 4 + + + + + 9 + + + + + 25 + + + + + 6 + + + + + + + + + 1 + + + 2 + + + 4 + + + 0.02 + + + true + + + + + + Atlas_E_01 + + + 0.1 + + + false + + + false + + + true + + + false + + + 1 + + + -0.04 + + + + 0 + 0 + -4 + + + + 0 + + + 0 + + + true + + + 0.95 + + + 0.5 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 2 + + + + + + 0 + + + + + + + + + + 0.5 + + + + + 0 + + + + + 0 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 25 + + + 0 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + GPU + + + + 4 + 4 + 0 + + + + 6 + + + 1 + + + + + + + + + + + 0 + 0 + 0.1 + 0.5 + + + + + + + 0 + 0.5 + 0.8 + 0.4 + + + + + + + 0.5 + 0.6 + 0.8 + 0.7 + + + + + + + 0.5 + 0.5 + 0.5 + 0.4 + + + + + + + + + + + + + + + + + 1 + + + + + 0.1 + + + + + 0.3 + + + + + 0.13 + + + + + + + + + 10.5 + + + + + + + 0 + 0 + 5 + + + + + + + + + + 0 + + + + + + + 0 + 0 + -1 + + + + + + + 1 + + + + + + + + + 0 + + + + + + + + + 10 + + + + + + + + + 30 + + + + + + + 0 + 0 + 0 + + + + + + + + + + + 0 + + + + + 0 + + + + + 11 + + + + + 0 + + + + + + + + + 0.85 + + + + + + + + + + 0 + + + + + 0 + + + + + 2 + + + + + 22 + + + + + + + + + 0.3 + + + 0 + + + 4 + + + 0.01 + + + true + + + + + + Atlas_E_01 + + + 0.51 + + + false + + + false + + + false + + + false + + + 2 + + + 0 + + + + 0 + 0 + -1 + + + + 0 + + + 0.089 + + + true + + + 0 + + + 0 + + + false + + + 0 + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + + + + + + + 1 + + + + + 1 + + + + + 1 + + + + + 1 + + + + + + + + + + + + 1 + + + + + + 0 + + + + + + + + + + 1000 + + + + + 100 + + + + + 0.1 + + + + + 0 + + + + + + + + + 1 + + + false + + + false + + + 1 + + + 0.5 + + + 1 + + + 0 + + + 0 + + + false + + + 0 + + + + + + + + + + + + + 0 + 0 + -2 + + + + + + + 0 + 0 + -13 + + + + + + + + + + + + + + 1 + 0.7742273 + 0.3736151 + 1 + + + + + + + + + + + + + 100 + + + + + + + + + + + + 200 + + + + + 0 + + + + + + + + + 50 + + + + + 0 + + + + + + true + + + 0 + + + 0.1 + + + 0.005 + + + + + 3000 + 1 + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/TransparentMaterials.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/TransparentMaterials.sbc index f18d2d10a..11da730c9 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/TransparentMaterials.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/TransparentMaterials.sbc @@ -1,26 +1,26 @@ - - - - - - TransparentMaterialDefinition - Atlas_AnoText - - false - 0 - false - false - 1 - Textures\Atlas_AnoText.dds - false - - 0 - 0 - - - 1 - 1 - - - + + + + + + TransparentMaterialDefinition + Atlas_AnoText + + false + 0 + false + false + 1 + Textures\Atlas_AnoText.dds + false + + 0 + 0 + + + 1 + 1 + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_MS.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_MS.sbc new file mode 100644 index 000000000..2370a6a0b --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_MS.sbc @@ -0,0 +1,21 @@ + + + + + + + WeaponDefinition + MetalStorm + + + WepShipGatlingNoAmmo + 2 + + + + 0 + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SA.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SA.sbc index cf9ff9ed5..e058ca0fb 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SA.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SA.sbc @@ -1,25 +1,25 @@ - - - - - - - WeaponDefinition - K_SA_Gun - - - 100 - 0 - 0 - WepShipGatlingNoAmmo - WepShipGatlingRotation - 0 - - - - - - - - + + + + + + + WeaponDefinition + K_SA_Gun + + + 100 + 0 + 0 + WepShipGatlingNoAmmo + WepShipGatlingRotation + 0 + + + + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SC.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SC.sbc index 6405b4c2a..6c1c63509 100644 --- a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SC.sbc +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SC.sbc @@ -1,23 +1,23 @@ - - - - - - WeaponDefinition - Starcore_FakeWeapon - - - 100 - 0 - 0 - WepShipGatlingNoAmmo - WepShipGatlingRotation - 0 - - - - - - - + + + + + + WeaponDefinition + Starcore_FakeWeapon + + + 100 + 0 + 0 + WepShipGatlingNoAmmo + WepShipGatlingRotation + 0 + + + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SCMW.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SCMW.sbc new file mode 100644 index 000000000..e79f800f6 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SCMW.sbc @@ -0,0 +1,21 @@ + + + + + + + WeaponDefinition + is this even used for anything? + + + WepShipGatlingNoAmmo + 2 + + + + 0 + + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SW.sbc b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SW.sbc new file mode 100644 index 000000000..90a1d1980 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Data/Weapons_SW.sbc @@ -0,0 +1,22 @@ + + + + + + WeaponDefinition + ReinforcementBeacon + + + 0 + 0 + 0 + WepShipGatlingNoAmmo + WepShipGatlingRotation + + + + 0 + + + + \ No newline at end of file diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.fbx new file mode 100644 index 000000000..422610702 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.mwm new file mode 100644 index 000000000..24826d0db Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.xml new file mode 100644 index 000000000..9ffc5a7a6 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Azimuth.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.fbx new file mode 100644 index 000000000..90dbf2143 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.mwm new file mode 100644 index 000000000..a04ad4a46 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.xml new file mode 100644 index 000000000..1ab4d858a --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS3_Beam_Elevation.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.fbx new file mode 100644 index 000000000..377e17a83 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.mwm new file mode 100644 index 000000000..0adb9f2b2 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.xml new file mode 100644 index 000000000..2a620fba3 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Azimuth.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.fbx new file mode 100644 index 000000000..87a6064e5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.mwm new file mode 100644 index 000000000..0694111e7 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.xml new file mode 100644 index 000000000..87598180a --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/AugerS5_Beam_Elevation.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Mesh.mwm new file mode 100644 index 000000000..778c4b679 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Subpart.mwm new file mode 100644 index 000000000..dff5d333f Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntA Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Mesh.mwm new file mode 100644 index 000000000..b86d7ed12 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Subpart.mwm new file mode 100644 index 000000000..f69f4e887 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntB Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Mesh.mwm new file mode 100644 index 000000000..27764d3ac Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Subpart.mwm new file mode 100644 index 000000000..eb4c3d81e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntC Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh (AntD Mesh).mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh (AntD Mesh).mwm new file mode 100644 index 000000000..7395e88fb Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh (AntD Mesh).mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh.mwm new file mode 100644 index 000000000..436b8baa3 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Subpart.mwm new file mode 100644 index 000000000..e046985d1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntD Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Mesh.mwm new file mode 100644 index 000000000..5559dd5f7 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Subpart.mwm new file mode 100644 index 000000000..290c1206c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntE Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Mesh.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Mesh.mwm new file mode 100644 index 000000000..4ca108bde Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Mesh.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Subpart.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Subpart.mwm new file mode 100644 index 000000000..bba130534 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/AntF Subpart.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannon.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannon.mwm new file mode 100644 index 000000000..7c257c6f9 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannon.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannonWings.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannonWings.mwm new file mode 100644 index 000000000..beee8b6d8 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/HexCannonWings.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/MagicCannon.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/MagicCannon.mwm new file mode 100644 index 000000000..624eba0a8 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/MagicCannon.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm.mwm new file mode 100644 index 000000000..6e5bed979 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels.mwm new file mode 100644 index 000000000..ff080196b Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD1.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD1.mwm new file mode 100644 index 000000000..e293f60af Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD1.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD2.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD2.mwm new file mode 100644 index 000000000..d3b4e6d85 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD2.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD3.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD3.mwm new file mode 100644 index 000000000..df279e9b0 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Barrels_LOD3.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base.mwm new file mode 100644 index 000000000..2c84564d5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD1.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD1.mwm new file mode 100644 index 000000000..9b9d86b41 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD1.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD2.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD2.mwm new file mode 100644 index 000000000..bf5d51911 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD2.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD3.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD3.mwm new file mode 100644 index 000000000..bacca3b89 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_Base_LOD3.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD1.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD1.mwm new file mode 100644 index 000000000..3d51667a5 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD1.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD2.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD2.mwm new file mode 100644 index 000000000..2ae12a525 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD2.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD3.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD3.mwm new file mode 100644 index 000000000..8aa3eef31 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/Metal_Storm_LOD3.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/zappyspellcaster.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/zappyspellcaster.mwm new file mode 100644 index 000000000..1f93a936c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Cubes/large/zappyspellcaster.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Dreadnaught_Projectile.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Dreadnaught_Projectile.mwm new file mode 100644 index 000000000..48e3e45c9 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Dreadnaught_Projectile.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/NebulonB_Projectile.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/NebulonB_Projectile.mwm new file mode 100644 index 000000000..8b81c14c4 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/NebulonB_Projectile.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/YWing_Projectile.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/YWing_Projectile.mwm new file mode 100644 index 000000000..20da2c352 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/YWing_Projectile.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Z95_Projectile.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Z95_Projectile.mwm new file mode 100644 index 000000000..b251f011b Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Drones/Z95_Projectile.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Large_Reinforcement_Beacon.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Large_Reinforcement_Beacon.mwm new file mode 100644 index 000000000..a1a0227fb Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/Large_Reinforcement_Beacon.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.fbx new file mode 100644 index 000000000..97cf90dcc Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.mwm new file mode 100644 index 000000000..bd17d05eb Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.xml new file mode 100644 index 000000000..098680cf8 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S3.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.fbx b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.fbx new file mode 100644 index 000000000..aef8178a4 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.fbx differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.mwm new file mode 100644 index 000000000..c43de1087 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.xml b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.xml new file mode 100644 index 000000000..dd8f183f2 --- /dev/null +++ b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Auger_S5.xml @@ -0,0 +1,78 @@ + + + 1.0 + false + false + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas1_cm.dds + Textures\Models\Cubes\Atlas1_ng.dds + Textures\Models\Cubes\Atlas1_add.dds + Textures\Models\Cubes\Atlas1_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Chrome_cm.dds + Textures\Models\Cubes\Atlas3_Chrome_ng.dds + Textures\Models\Cubes\Atlas3_Chrome_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\Atlas3_Colorable_cm.dds + Textures\Models\Cubes\Atlas3_Colorable_ng.dds + Textures\Models\Cubes\Atlas3_Colorable_add.dds + Textures\Models\Cubes\Atlas3_alphamask.dds + + + DECAL_CUTOUT + Textures\Models\Cubes\ButtonsAtlas_Colorable_cm.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_ng.dds + Textures\Models\Cubes\ButtonsAtlas_Colorable_add.dds + Textures\Models\Cubes\ButtonsAtlas_alphamask.dds + + + MESH + Textures\Models\Cubes\EmissiveAtlas_cm.dds + Textures\Models\Cubes\EmissiveAtlas_ng.dds + Textures\Models\Cubes\EmissiveAtlas_add.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterConePlates_cm.dds + Textures\Models\Cubes\HydrogenThrusterConePlates_ng.dds + + + MESH + Textures\Models\Cubes\HydrogenThrusterInjector_cm.dds + Textures\Models\Cubes\HydrogenThrusterInjector_ng.dds + + + MESH + Textures\Models\Cubes\Leather_Dark_cm.dds + Textures\Models\Cubes\Leather_Dark_ng.dds + Textures\Models\Cubes\Leather_Dark_add.dds + + + MESH + Textures\Models\Cubes\Aluminium_cm.dds + Textures\Models\Cubes\AluminiumDull_ng.dds + + + MESH + Textures\Models\Cubes\MetalMilitary_cm.dds + Textures\Models\Cubes\MetalMilitary_ng.dds + Textures\Models\Cubes\MetalMilitary_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_Clean_cm.dds + Textures\Models\Cubes\PaintedMetal_Clean_ng.dds + Textures\Models\Cubes\PaintedMetal_Clean_add.dds + + + MESH + Textures\Models\Cubes\PaintedMetal_VeryDark_cm.dds + Textures\Models\Cubes\PaintedMetalColorable_ng.dds + + diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Ele_Large.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Ele_Large.mwm index a33f883db..f480de8a8 100644 Binary files a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Ele_Large.mwm and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Ele_Large.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Large.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Large.mwm index 33cf5d3fa..76f0a84c9 100644 Binary files a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Large.mwm and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Large.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Recoil_Large.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Recoil_Large.mwm index 39cfbdc6b..6e0e8e706 100644 Binary files a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Recoil_Large.mwm and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Recoil_Large.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Rot_Large.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Rot_Large.mwm index 8222f1f04..7c55f877f 100644 Binary files a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Rot_Large.mwm and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_GaussAP_Rot_Large.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Gauss_AP_Large.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Gauss_AP_Large.mwm new file mode 100644 index 000000000..2c19d6e43 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SA_Gauss_AP_Large.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SwordMelee.mwm b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SwordMelee.mwm new file mode 100644 index 000000000..6a7a849a0 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Models/SwordMelee.mwm differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/HexCannon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/HexCannon.png new file mode 100644 index 000000000..9b897f231 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/HexCannon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1000mmShell_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1000mmShell_Icon.png new file mode 100644 index 000000000..c8f322dd1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1000mmShell_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1500mmShell_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1500mmShell_Icon.png new file mode 100644 index 000000000..c7575e205 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/1500mmShell_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/150mmShell_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/150mmShell_Icon.png new file mode 100644 index 000000000..fcfddeea1 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/150mmShell_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/220mmBurstMissile_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/220mmBurstMissile_Icon.png new file mode 100644 index 000000000..f313805a7 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/220mmBurstMissile_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/300mmShell_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/300mmShell_Icon.png new file mode 100644 index 000000000..e63106381 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/300mmShell_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/30mmAmmoBox_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/30mmAmmoBox_Icon.png new file mode 100644 index 000000000..bb4b580e2 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/30mmAmmoBox_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/400mmShell_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/400mmShell_Icon.png new file mode 100644 index 000000000..a13e835eb Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/400mmShell_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/FoldingChair_Icon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/FoldingChair_Icon.png new file mode 100644 index 000000000..f76f94358 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Ammo/FoldingChair_Icon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/Metal_Storm.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/Metal_Storm.dds new file mode 100644 index 000000000..65b073167 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/Metal_Storm.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/SA_Auger_S5.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/SA_Auger_S5.dds new file mode 100644 index 000000000..466884225 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/Cubes/SA_Auger_S5.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/SA_GaussAP_Large.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/SA_GaussAP_Large.dds new file mode 100644 index 000000000..769e02f05 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Icons/SA_GaussAP_Large.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Screens/AWP_TurretOverlay_Universal.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Screens/AWP_TurretOverlay_Universal.dds new file mode 100644 index 000000000..9b758e76d Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/Screens/AWP_TurretOverlay_Universal.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/magiccannon.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/magiccannon.png new file mode 100644 index 000000000..e4d7c209d Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/GUI/magiccannon.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S3.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S3.dds new file mode 100644 index 000000000..62a7f02e8 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S3.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.dds new file mode 100644 index 000000000..f3b37fe86 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.xcf b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.xcf new file mode 100644 index 000000000..cc913bb6f Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_S5.xcf differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_Template.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_Template.png new file mode 100644 index 000000000..8e1b4610c Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/SA_Auger_Template.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 3.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 3.png new file mode 100644 index 000000000..95f7e2b40 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 3.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 5.png b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 5.png new file mode 100644 index 000000000..f42109092 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Icons/Series 5.png differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Imperial.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Imperial.dds new file mode 100644 index 000000000..5d31c829e Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Imperial.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Rebel.DDS b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Rebel.DDS new file mode 100644 index 000000000..3f65de240 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/Logo_Rebel.DDS differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_CM.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_CM.dds new file mode 100644 index 000000000..efcd1f7af Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_CM.dds differ diff --git a/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_NG.dds b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_NG.dds new file mode 100644 index 000000000..b878a3208 Binary files /dev/null and b/Weapon Mods/Anomaly_Solaris_Hypernautics/Textures/RV_Dreadnaught_NG.dds differ diff --git a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/script/Structure.cs b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/script/Structure.cs index b6fa49f76..ed5efbe33 100644 --- a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/script/Structure.cs +++ b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/script/Structure.cs @@ -525,7 +525,6 @@ public struct UiDef [ProtoMember(5)] internal bool AlternateUi; [ProtoMember(6)] internal bool DisableStatus; [ProtoMember(7)] internal float RateOfFireMin; - [ProtoMember(8)] internal bool DisableSupportingPD; } diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Ammos_SA.sbc b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Ammos_SA.sbc index 1db1b75eb..cf091c04f 100644 --- a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Ammos_SA.sbc +++ b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Ammos_SA.sbc @@ -52,5 +52,28 @@ + + + AmmoDefinition + TestAmmoB8T + + + 500 + 0 + 1400 + 50 + GunBullet + + + 0.2 + 6 + 80 + 50 + true + + + + + \ No newline at end of file diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Ele_Large.mwm b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Ele_Large.mwm index a33f883db..f480de8a8 100644 Binary files a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Ele_Large.mwm and b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Ele_Large.mwm differ diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Large.mwm b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Large.mwm index 33cf5d3fa..76f0a84c9 100644 Binary files a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Large.mwm and b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Large.mwm differ diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Recoil_Large.mwm b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Recoil_Large.mwm index 39cfbdc6b..6e0e8e706 100644 Binary files a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Recoil_Large.mwm and b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Recoil_Large.mwm differ diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Rot_Large.mwm b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Rot_Large.mwm index 8222f1f04..7c55f877f 100644 Binary files a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Rot_Large.mwm and b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Models/SerpentArms/SA_GaussAP_Rot_Large.mwm differ