diff --git a/.github/workflows/Aristeas_BuildScripts.yml b/.github/workflows/Aristeas_BuildScripts.yml index 37bea3400..5dff320f8 100644 --- a/.github/workflows/Aristeas_BuildScripts.yml +++ b/.github/workflows/Aristeas_BuildScripts.yml @@ -23,4 +23,4 @@ jobs: # done - id: build-mods run: | - & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" "build" --repo "${{ github.workspace }}" --changes "${{ steps.changed-files.outputs.all_changed_and_modified_files }}" + & "C:\Program Files\SCUniversalUpload\SC_NewUniversalUpload.exe" "build" --repo "${{ github.workspace }}" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..d8e933aa1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +### Prerequsites: +- (extremely recommended) github Desktop, GitExtentions, or something similar +- knowing the layout of SE mod files +- enough space to download the entire git repo (~5gb)? + +### Step 1: +- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. + +### Step 2: +- ``Make a branch`` for the changes you want to do on ``your local repository``. (i.e. SCModRepository-Yourname/BuffMyFavoriteGunPlease) Use your local repository's ``Main`` branch to keep in sync with starcore's ``Main`` branch, it makes edits much easier. You just click the button on github to sync it. + +### Step 3: +- To test your changes ingame, Copy the mod you want to edit to your ``%Appdata%/SpaceEngineers/Mods`` folder. + +### Step 4: +- Make your edits and throw it back in the repository folder. you can use the ``.bat file`` included in the repository to link your local Space Engineers mods with the ones in the repository. + +### Step 5: +- Submit a pull request so that the branch can be merged into the SCModRepository/Main one. +- You can merge your PR yourself if you're confident, or ask for review. Once merged, the development version of the mod will automatically be updated. + +Note - the `Main` branch is for the ModDev world, and `Stable` is for the primary combat and build worlds. `Stable` pushes are done in bulk after Test Tournaments. + + +*** + + +## How does this work? +The repository contains a .github folder, Space Engineers mod folders, and a .gitignore file. +### .github folder: +- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after [SCUniversalUpload](https://github.com/StarCoreSE/SCModRepository/blob/main/.github/workflows/Aristeas%20NewUniversalUpload.yml) detects a change in a folder with a `modinfo_BRANCHNAME.sbmi` file. +### SE Mod folders: +- contains all the data that would load normally as an SE mod +### .gitignore file +- tells git what to exclude during a push (like .sln files in visual studio) diff --git a/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs b/Gamemode Mods/Starcore_Pointslist/Data/Scripts/Additions/PointAdditions.cs index 3bcf84387..c12dace37 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, @@ -177,25 +182,25 @@ internal class PointAdditions : MySessionComponentBase ["AQD_LG_HydroThrusterL_ArmoredSlope"] = 50, ["AQD_LG_HydroThrusterL_Armored"] = 50, ["LargeBlockLargeHydrogenThrustIndustrial"] = 50, - ["LargeBlockSmallHydrogenThrust"] = 15, - ["AQD_LG_HydroThrusterS_ArmoredSlope"] = 15, - ["AQD_LG_HydroThrusterS_Armored"] = 15, - ["LargeBlockSmallHydrogenThrustIndustrial"] = 15, + ["LargeBlockSmallHydrogenThrust"] = 10, + ["AQD_LG_HydroThrusterS_ArmoredSlope"] = 10, + ["AQD_LG_HydroThrusterS_Armored"] = 10, + ["LargeBlockSmallHydrogenThrustIndustrial"] = 10, ["HugeHydrogenThruster"] = 200, - ["LargeBlockLargeThrust"] = 20, - ["AQD_LG_IonThrusterL_ArmoredSlope"] = 20, - ["AQD_LG_IonThrusterL_Armored"] = 20, - ["LargeBlockLargeThrustSciFi"] = 20, - ["LargeBlockLargeModularThruster"] = 20, - ["LargeBlockSmallThrust"] = 4, - ["AQD_LG_IonThrusterS_Armored"] = 4, - ["AQD_LG_IonThrusterS_ArmoredSlope"] = 4, - ["LargeBlockSmallThrustSciFi"] = 4, - ["SmallThrustSciFi"] = 4, - ["LargeBlockSmallModularThruster"] = 4, - ["AWGFocusDrive"] = 100, - ["IonHeavyCovered"] = 100, + ["LargeBlockLargeThrust"] = 10, + ["AQD_LG_IonThrusterL_ArmoredSlope"] = 10, + ["AQD_LG_IonThrusterL_Armored"] = 10, + ["LargeBlockLargeThrustSciFi"] = 10, + ["LargeBlockLargeModularThruster"] = 10, + ["LargeBlockSmallThrust"] = 2, + ["AQD_LG_IonThrusterS_Armored"] = 2, + ["AQD_LG_IonThrusterS_ArmoredSlope"] = 2, + ["LargeBlockSmallThrustSciFi"] = 2, + ["SmallThrustSciFi"] = 2, + ["LargeBlockSmallModularThruster"] = 2, + ["AWGFocusDrive"] = 50, + ["IonHeavyCovered"] = 50, ["AWGGG"] = 150, ["AQD_LG_AtmoThrusterS_ArmoredSlopeRev"] = 3, @@ -762,9 +767,9 @@ internal class PointAdditions : MySessionComponentBase ["Caster_Reactor"] = 125, ["Heat_Heatsink"] = 10, ["Heat_FlatRadiator"] = 10, - ["ActiveRadiator"] = 250, - ["RadiatorPanel"] = 5, - ["ExtendableRadiatorBase"] = 5, + ["ActiveRadiator"] = 250, + ["RadiatorPanel"] = 10, + ["ExtendableRadiatorBase"] = 5, #endregion }; diff --git a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/API/StealthAPI.cs b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/API/StealthAPI.cs new file mode 100644 index 000000000..8f62cc6da --- /dev/null +++ b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/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()}"); + } + + } + +} \ No newline at end of file diff --git a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/MasterSession.cs b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/MasterSession.cs index 9d1c78f61..19d6edb72 100644 --- a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/MasterSession.cs +++ b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/MasterSession.cs @@ -4,6 +4,7 @@ using StarCore.ShareTrack.HeartNetworking; using StarCore.ShareTrack.ShipTracking; using StarCore.ShareTrack.TrackerApi; +using StealthSystem; using VRage.Game.Components; using VRageMath; @@ -20,6 +21,7 @@ internal class MasterSession : MySessionComponentBase public static MasterSession I; public static SharetrackConfig Config; + public StealthAPI StealthApi = new StealthAPI(); public HudAPIv2 TextHudApi; public Action HudRegistered = () => { }; @@ -46,6 +48,8 @@ public override void LoadData() _buildingBlockPoints = new BuildingBlockPoints(); TrackingManager.Init(); // Initialize TrackingManager, but don't start tracking yet + StealthApi.Load(); + if (!MyAPIGateway.Utilities.IsDedicated) // Initialize the sphere entities // Initialize the text_api with the HUDRegistered callback diff --git a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/ShipTracker.cs b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/ShipTracker.cs index 1c9c81463..2fb19819d 100644 --- a/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/ShipTracker.cs +++ b/Gamemode Mods/Starcore_Sharetrack/Data/Scripts/ShipPoints/ShipTracking/ShipTracker.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -351,6 +351,14 @@ public void UpdateHud() camera.WorldMatrix.Forward); var stealthed = ((uint)Grid.Flags & 0x1000000) > 0; + + if (MasterSession.I.StealthApi?.IsReady ?? false) + { + var mainStealthDrive = MasterSession.I.StealthApi.GetMainDrive(Grid); + if (mainStealthDrive != null) + stealthed |= MasterSession.I.StealthApi.GetStatus(mainStealthDrive) == 1; + } + var visible = !(newOrigin.X > 1 || newOrigin.X < -1 || newOrigin.Y > 1 || newOrigin.Y < -1) && angle <= fov && !stealthed; @@ -687,4 +695,4 @@ public float CurrentFieldPower #endregion #endregion } -} \ No newline at end of file +} diff --git a/README.md b/README.md index 19b4b32ac..6ea2b2695 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,18 @@ In StarCore, teams build their own ships and battle for the spot of champion in a StarCore Tournament. They normally take place on Saturdays and are streamed live by one of several streamers over on Twitch (See #content-announcements in the StarCore Discord for more information). It's time to join the arena! +*** ## Contribution guide -### prerequsites: + +### Prerequsites: - (extremely recommended) github Desktop, GitExtentions, or something similar - knowing the layout of SE mod files - enough space to download the entire git repo (~5gb)? ### Step 1: -- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. You can do this in GitHub desktop by git cloning the url, or through the github website, with the "fork" button which you can then git clone to a folder on your computer where you can make changes. +- ``Fork`` this repository to a folder on your computer. Name it something like SCModRepository-Yourname. This is where your edits can be made, and is apparently how actual projects do it. ### Step 2: - ``Make a branch`` for the changes you want to do on ``your local repository``. (i.e. SCModRepository-Yourname/BuffMyFavoriteGunPlease) Use your local repository's ``Main`` branch to keep in sync with starcore's ``Main`` branch, it makes edits much easier. You just click the button on github to sync it. @@ -30,17 +32,19 @@ In StarCore, teams build their own ships and battle for the spot of champion in - Make your edits and throw it back in the repository folder. you can use the ``.bat file`` included in the repository to link your local Space Engineers mods with the ones in the repository. ### Step 5: -- Submit a pull request so that the branch can be merged into the SCModRepository/master one. - +- Submit a pull request so that the branch can be merged into the SCModRepository/Main one. +- You can merge your PR yourself if you're confident, or ask for review. Once merged, the development version of the mod will automatically be updated. +Note - the `Main` branch is for the ModDev world, and `Stable` is for the primary combat and build worlds. `Stable` pushes are done in bulk after Test Tournaments. +*** ## How does this work? The repository contains a .github folder, Space Engineers mod folders, and a .gitignore file. ### .github folder: -- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after the respective .yml file detects a change in the folder its looking for +- contains the instructions to the bot what to do after a "push", currently set to upload to the steam workshop after [SCUniversalUpload](https://github.com/StarCoreSE/SCModRepository/blob/main/.github/workflows/Aristeas%20NewUniversalUpload.yml) detects a change in a folder with a `modinfo_BRANCHNAME.sbmi` file. ### SE Mod folders: - contains all the data that would load normally as an SE mod ### .gitignore file diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs new file mode 100644 index 000000000..d1ceb042d --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/CameraDataPacket.cs @@ -0,0 +1,16 @@ +using ProtoBuf; +using VRage; +using VRageMath; + +namespace CameraInfoApi.Data.Scripts.CameraInfoApi +{ + [ProtoContract] + internal class CameraDataPacket + { + [ProtoMember(1)] public MatrixD Matrix; + [ProtoMember(2)] public float FieldOfView; + [ProtoMember(3)] public long GridId; + + public MyTuple Tuple => new MyTuple(Matrix, FieldOfView); + } +} diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs new file mode 100644 index 000000000..bc079a312 --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ClientMain.cs @@ -0,0 +1,46 @@ +using CameraInfoApi.Data.Scripts.CameraInfoApi; +using Sandbox.ModAPI; +using System; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRageMath; + +namespace CameraInfoApi +{ + [MySessionComponentDescriptor(MyUpdateOrder.AfterSimulation)] + internal class ClientMain : MySessionComponentBase + { + private IMyCubeGrid prevGrid = null; + private int _ticks = 0; + public override void UpdateAfterSimulation() + { + if (MyAPIGateway.Utilities.IsDedicated) + return; + + if (_ticks++ % 10 != 0) + return; + + var clientGrid = (MyAPIGateway.Session.Player?.Controller?.ControlledEntity as IMyShipController)?.CubeGrid; + if (clientGrid == null) + { + if (prevGrid != null) + MyAPIGateway.Multiplayer.SendMessageToServer(3621, MyAPIGateway.Utilities.SerializeToBinary(new CameraDataPacket() + { + Matrix = MatrixD.Identity, + FieldOfView = -1, + GridId = prevGrid.EntityId, + })); + prevGrid = null; + return; + } + + prevGrid = clientGrid; + MyAPIGateway.Multiplayer.SendMessageToServer(3621, MyAPIGateway.Utilities.SerializeToBinary(new CameraDataPacket() + { + Matrix = MyAPIGateway.Session.Camera.ViewMatrix, + FieldOfView = MyAPIGateway.Session.Camera.FieldOfViewAngle, + GridId = prevGrid.EntityId, + })); + } + } +} diff --git a/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs new file mode 100644 index 000000000..c3a52df5a --- /dev/null +++ b/Utility Mods/CameraInfoApi/Data/Scripts/CameraInfoApi/ServerMain.cs @@ -0,0 +1,82 @@ +using CameraInfoApi.Data.Scripts.CameraInfoApi; +using Sandbox.Game.Entities; +using Sandbox.ModAPI; +using System; +using System.Collections.Generic; +using VRage; +using VRage.Game.Components; +using VRage.Game.ModAPI; +using VRageMath; + +namespace CameraInfoApi +{ + [MySessionComponentDescriptor(MyUpdateOrder.NoUpdate)] + internal class ServerMain : MySessionComponentBase + { + public Dictionary> CameraInfos = new Dictionary>(); + + public override void LoadData() + { + if (!MyAPIGateway.Session.IsServer) + return; + + MyAPIGateway.Multiplayer.RegisterSecureMessageHandler(3621, HandleMessage); + InitPbApi(); + } + + protected override void UnloadData() + { + if (!MyAPIGateway.Session.IsServer) + return; + + MyAPIGateway.Multiplayer.UnregisterSecureMessageHandler(3621, HandleMessage); + } + + private void HandleMessage(ushort handlerId, byte[] package, ulong senderSteamId, bool fromServer) + { + if (package == null || package.Length == 0) + return; + var message = MyAPIGateway.Utilities.SerializeFromBinary(package); + if (message == null) + return; + + var grid = MyAPIGateway.Entities.GetEntityById(message.GridId) as MyCubeGrid; + if (grid == null) + return; + + if (message.FieldOfView == -1) + { + CameraInfos.Remove(grid); + return; + } + + CameraInfos[grid] = message.Tuple; + } + + private void InitPbApi() + { + var property = MyAPIGateway.TerminalControls.CreateProperty?>, IMyProgrammableBlock>("CameraInfoApi"); + property.Getter = b => () => + { + MyTuple info; + if (!CameraInfos.TryGetValue((MyCubeGrid) b.CubeGrid, out info)) + return null; + return new MyTuple?(info); + }; + MyAPIGateway.TerminalControls.AddControl(property); + + MyAPIGateway.Entities.GetEntities(null, ent => + { + var grid = ent as IMyCubeGrid; + if (grid == null) + return false; + + // Workaround for scripts crashing when loading before the API is ready (i.e. on world load) + foreach (var pb in grid.GetFatBlocks()) + if (!pb.IsRunning && pb.ProgramData.Contains("CameraInfoApi")) + pb.Recompile(); + return false; + }); + } + } +} diff --git a/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs b/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..01d77734a --- /dev/null +++ b/Utility Mods/CameraInfoApi/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CameraInfoApi")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CameraInfoApi")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("4b783ffe-e887-4220-8412-25caa84a7869")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] 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/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs index 4822e35e5..b89c15cc8 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Config.cs @@ -33,8 +33,8 @@ public class Generator_Settings public float MaxPowerDraw = 500.00f; public float MinPowerDraw = 50.00f; - public int MaxSiegeTime = 60; - public int MinSiegeTime = 15; + public int MaxSiegeTime = 60; + public int MinSiegeTime = 15; public int SiegePowerDraw = 900; public float SiegeModeResistence = 0.9f; @@ -75,79 +75,79 @@ void LoadConfig(MyIni iniParser) void SaveConfig(MyIni iniParser) { - iniParser.Set(IniSection, nameof(MaxModuleCount), MaxModuleCount); - iniParser.SetComment(IniSection, nameof(MaxModuleCount), - " \n[Maximum number of upgrade modules that can be attached to the Field Generator core.]\n" + - "[Each core has 4 mounting points by default.]\n" + - "[Default: 4]"); - - iniParser.Set(IniSection, nameof(PerModuleAmount), PerModuleAmount); - iniParser.SetComment(IniSection, nameof(PerModuleAmount), - " \n[Amount of resistance each attached upgrade module provides.]\n" + - "[Default: 10.0]"); - - iniParser.Set(IniSection, nameof(MaxPowerDraw), MaxPowerDraw); - iniParser.SetComment(IniSection, nameof(MaxPowerDraw), - " \n[The maximum power draw (in MW) when the Field Generator is at full power.]\n" + - "[Default: 500 MW]"); - - iniParser.Set(IniSection, nameof(MinPowerDraw), MinPowerDraw); - iniParser.SetComment(IniSection, nameof(MinPowerDraw), - " \n[Baseline power draw (in MW) at minimum field power.]\n" + - "[Default: 50 MW]"); - - iniParser.Set(IniSection, nameof(MaxSiegeTime), MaxSiegeTime); - iniParser.SetComment(IniSection, nameof(MaxSiegeTime), - " \n[Maximum duration (in seconds) the Field Generator can remain in Siege mode.]\n" + - "[Default: 60s]\n"); - - iniParser.Set(IniSection, nameof(SiegePowerDraw), SiegePowerDraw); - iniParser.SetComment(IniSection, nameof(SiegePowerDraw), - " \n[Power draw (in MW) while Siege mode is active.]\n" + - "[Overrides normal scaled power draw.]\n" + - "[Default: 900 MW]"); - - iniParser.Set(IniSection, nameof(SiegeModeResistence), SiegeModeResistence); - iniParser.SetComment(IniSection, nameof(SiegeModeResistence), - " \n[Amount of damage resistance provided by Siege mode (0.0 to 1.0).]\n" + - "[Example: 0.9 means 90% damage reduction from normal.]\n" + - "[Default: 0.9]"); - - iniParser.Set(IniSection, nameof(SimplifiedMode), SimplifiedMode); - iniParser.SetComment(IniSection, nameof(SimplifiedMode), - " \n[Whether to disable (true) or enable (false) the advanced stability system.]\n" + - "[Default: true]"); - - iniParser.Set(IniSection, nameof(DamageEventThreshold), DamageEventThreshold); - iniParser.SetComment(IniSection, nameof(DamageEventThreshold), - " \n[Number of damage events (within ResetInterval) needed to trigger stability reduction.]\n" + - "[Default: 6]"); - - iniParser.Set(IniSection, nameof(ResetInterval), ResetInterval); - iniParser.SetComment(IniSection, nameof(ResetInterval), - " \n[Time interval (in seconds) between damage counter resets.]\n" + - "[Default: 3]"); - - iniParser.Set(IniSection, nameof(MinBlockCount), MinBlockCount); - iniParser.SetComment(IniSection, nameof(MinBlockCount), - " \n[Minimum grid block count used in the size-based stability calculation.]\n" + - "[Default: 2500]"); - - iniParser.Set(IniSection, nameof(MaxBlockCount), MaxBlockCount); - iniParser.SetComment(IniSection, nameof(MaxBlockCount), - " \n[Maximum grid block count used in the size-based stability calculation.]\n" + - "[Default: 35000]"); - - iniParser.Set(IniSection, nameof(SizeModifierMin), SizeModifierMin); - iniParser.SetComment(IniSection, nameof(SizeModifierMin), - " \n[The lower bound of the size modifier.]\n" + - "[Size Modifier can reduce or increase stability change based on the grid size. This Min is the Increase at Min Grid Size]\n" + - "[Default: 1.2]"); - - iniParser.Set(IniSection, nameof(SizeModifierMax), SizeModifierMax); - iniParser.SetComment(IniSection, nameof(SizeModifierMax), - " \n[The upper bound of the size modifier.]\n" + - "[Size Modifier can reduce or increase stability change based on the grid size. This Max is the Reduction at Max Grid Size]\n" + + iniParser.Set(IniSection, nameof(MaxModuleCount), MaxModuleCount); + iniParser.SetComment(IniSection, nameof(MaxModuleCount), + " \n[Maximum number of upgrade modules that can be attached to the Field Generator core.]\n" + + "[Each core has 4 mounting points by default.]\n" + + "[Default: 4]"); + + iniParser.Set(IniSection, nameof(PerModuleAmount), PerModuleAmount); + iniParser.SetComment(IniSection, nameof(PerModuleAmount), + " \n[Amount of resistance each attached upgrade module provides.]\n" + + "[Default: 10.0]"); + + iniParser.Set(IniSection, nameof(MaxPowerDraw), MaxPowerDraw); + iniParser.SetComment(IniSection, nameof(MaxPowerDraw), + " \n[The maximum power draw (in MW) when the Field Generator is at full power.]\n" + + "[Default: 500 MW]"); + + iniParser.Set(IniSection, nameof(MinPowerDraw), MinPowerDraw); + iniParser.SetComment(IniSection, nameof(MinPowerDraw), + " \n[Baseline power draw (in MW) at minimum field power.]\n" + + "[Default: 50 MW]"); + + iniParser.Set(IniSection, nameof(MaxSiegeTime), MaxSiegeTime); + iniParser.SetComment(IniSection, nameof(MaxSiegeTime), + " \n[Maximum duration (in seconds) the Field Generator can remain in Siege mode.]\n" + + "[Default: 60s]\n"); + + iniParser.Set(IniSection, nameof(SiegePowerDraw), SiegePowerDraw); + iniParser.SetComment(IniSection, nameof(SiegePowerDraw), + " \n[Power draw (in MW) while Siege mode is active.]\n" + + "[Overrides normal scaled power draw.]\n" + + "[Default: 900 MW]"); + + iniParser.Set(IniSection, nameof(SiegeModeResistence), SiegeModeResistence); + iniParser.SetComment(IniSection, nameof(SiegeModeResistence), + " \n[Amount of damage resistance provided by Siege mode (0.0 to 1.0).]\n" + + "[Example: 0.9 means 90% damage reduction from normal.]\n" + + "[Default: 0.9]"); + + iniParser.Set(IniSection, nameof(SimplifiedMode), SimplifiedMode); + iniParser.SetComment(IniSection, nameof(SimplifiedMode), + " \n[Whether to disable (true) or enable (false) the advanced stability system.]\n" + + "[Default: true]"); + + iniParser.Set(IniSection, nameof(DamageEventThreshold), DamageEventThreshold); + iniParser.SetComment(IniSection, nameof(DamageEventThreshold), + " \n[Number of damage events (within ResetInterval) needed to trigger stability reduction.]\n" + + "[Default: 6]"); + + iniParser.Set(IniSection, nameof(ResetInterval), ResetInterval); + iniParser.SetComment(IniSection, nameof(ResetInterval), + " \n[Time interval (in seconds) between damage counter resets.]\n" + + "[Default: 3]"); + + iniParser.Set(IniSection, nameof(MinBlockCount), MinBlockCount); + iniParser.SetComment(IniSection, nameof(MinBlockCount), + " \n[Minimum grid block count used in the size-based stability calculation.]\n" + + "[Default: 2500]"); + + iniParser.Set(IniSection, nameof(MaxBlockCount), MaxBlockCount); + iniParser.SetComment(IniSection, nameof(MaxBlockCount), + " \n[Maximum grid block count used in the size-based stability calculation.]\n" + + "[Default: 35000]"); + + iniParser.Set(IniSection, nameof(SizeModifierMin), SizeModifierMin); + iniParser.SetComment(IniSection, nameof(SizeModifierMin), + " \n[The lower bound of the size modifier.]\n" + + "[Size Modifier can reduce or increase stability change based on the grid size. This Min is the Increase at Min Grid Size]\n" + + "[Default: 1.2]"); + + iniParser.Set(IniSection, nameof(SizeModifierMax), SizeModifierMax); + iniParser.SetComment(IniSection, nameof(SizeModifierMax), + " \n[The upper bound of the size modifier.]\n" + + "[Size Modifier can reduce or increase stability change based on the grid size. This Max is the Reduction at Max Grid Size]\n" + "[Default: 0.8]"); } diff --git a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs index cb8c55567..28f4cdf96 100644 --- a/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs +++ b/Utility Mods/SCDefenseBlocks/Data/Scripts/OneFuckingFolderDeeper/FieldGenerator/FieldGenerator_Core.cs @@ -471,7 +471,7 @@ private void EndSiegeMode() SiegeBlockEnabler(Block.CubeGrid.GetFatBlocks(), true); - SiegeCooldownTime.Value = (SiegeElapsedTime.Value > Config.MinSiegeTime) ? (SiegeElapsedTime.Value * 2) : Config.MinSiegeTime; + SiegeCooldownTime.Value = Math.Max(SiegeElapsedTime.Value * 2, Config.MinSiegeTime); SiegeElapsedTime.Value = 0; SiegeCooldownActive.Value = true; } diff --git a/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc b/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc index 67f8ae8cd..3f3aff751 100644 --- a/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc +++ b/Utility Mods/SCMobilityBlocks/Data/CubeBlock_CustomBlink.sbc @@ -8,7 +8,7 @@ Standard Blink Drive Textures\GUI\Icons\BlinkDriveIcon.dds - 1Km teleport. Holds 3 charges. Each charge takes 100MW and 60s to recharge. + 1Km teleport. Holds 3 charges. Each charge takes 300MW and 60s to recharge. Large TriangleMesh diff --git a/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs b/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs index 765c9c116..b53f00606 100644 --- a/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs +++ b/Utility Mods/SCMobilityBlocks/Data/Scripts/InvalidsCustomBlink/CustomBlinkDrive.cs @@ -39,7 +39,7 @@ public class BlinkDrive : MyGameLogicComponent, IMyEventProxy private const int RechargeTimeSeconds = 60; private const int MaxCharges = 3; - private float GetPowerDraw => JumpTimerSync > 0 ? 100 : 0.25f; + private float GetPowerDraw => JumpTimerSync > 0 ? 300 : 0.25f; private bool CanJump => Block.IsWorking && Block.IsFunctional && MaxCharges > 0; static bool controlsCreated = false; diff --git a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs index ab8f091ca..8a5052318 100644 --- a/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs +++ b/Utility Mods/SC_Season_4_Adjustments/Data/Scripts/CoreParts/BoostedThrustAndFlame/BoostedThrustAndFlame.cs @@ -24,7 +24,7 @@ public override void LoadData() if (thruster != null) { thruster.ForceMagnitude *= 4.0f; //S3 was 3.5 - thruster.MaxPowerConsumption *= 3.0f; //S3 was 3.5 + thruster.MaxPowerConsumption *= 2f; //S3 was 3.5 thruster.FlameDamage *= 5f; //thruster.FlameDamageLengthScale *= 1.5f; thruster.FlameLengthScale *= 2.0f; diff --git a/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc b/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc index 99d8c16c0..9acfa59a7 100644 --- a/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc +++ b/Utility Mods/StarCore Tournament Weapon Category/Data/BlockCategories_StarCoreCorporate.sbc @@ -8,86 +8,150 @@ GuiBlockCategoryDefinition - SC [All Access] - .SC_.[All Access] + SC [All Access] Utility + .SC_.[ALL]_A true - + GravityGenerator + Door + AirtightHangarDoor + SurvivalKitLarge + SmallLight + LargeBlockFrontLight + + SC_PowerControlSystem_L + SC_RCS_Computer + + LargeBlockConveyorPipeJunction + LargeBlockConveyor + ConveyorTube + ConveyorTubeDuct + + MA_Buster_ArmorBlock + + LargeDecoy + LargeBlockRadioAntenna + LargeFlightMovement + + LargeTurretControlBlock + SELtdLargeNanobotBuildAndRepairSystem - - - FieldGen_Core - FieldGen_Capacity_Upgrade + + LargeProgrammableBlock + 6SidePB + LargeBlockRemoteControl + + DampeningEnhancer_x2_Large + LargeStator + WorklightSmall + + + + + + + GuiBlockCategoryDefinition + + [ALL] Mobility + .SC_.[ALL]_B + true + + - MA_Afterburner_Large_5x SC_SRB DETPAK + MA_Afterburner_Large_5x AncientAfterburnerT40 - LargeDecoy_MetalFoam - - SC_Flare + BlinkDriveLarge - - Starcore_RWR_Projectiles + LargeBlockGyro + AQD_LG_GyroBooster + AQD_LG_LargeGyro + AQD_LG_GyroUpgrade - - Caster_Accelerator_0 - Caster_Accelerator_90 - Caster_Feeder - Caster_CentralPipe_0 - Caster_CentralPipe_90 - Caster_CentralPipe_T + LargeBlockLargeThrust + HugeHydrogenThruster + AWGFocusDrive + IonHeavyCovered + + Caster_FocusLens - Caster_Reactor - - SC_RCS_Computer - DampeningEnhancer_x2_Large - SC_PowerControlSystem_L - LargeLargeBlockUpgrade - AQD_LG_GyroBooster - AQD_LG_GyroUpgrade + LargeHydrogenTank + LargeHydrogenTankSmall + + + + + + + GuiBlockCategoryDefinition + + [ALL] Defense + .SC_.[ALL]_C + true + + + + FieldGen_Core + FieldGen_Capacity_Upgrade + + + Starcore_RWR_Projectiles SC_Radome - WorklightSmall - BlinkDriveLarge + Mk25Rangefinder - - GIGA_BLASTPLATE + 3x3_Blastplate_A + 3x3_Blastplate_B + 3x3_Blastplate_C + ACTIVE_BLASTPLATE + + SC_Flare + LargeDecoy_MetalFoam + + DSControlLarge + EmitterL + LargeShieldModulator + LargeEnhancer + + Barbette5x5 + + + + + + + GuiBlockCategoryDefinition + + [ALL] Power + .SC_.[ALL]_D + true + + + LargeBlockSolarPanel + LargeBlockBatteryBlock + LargeBlockSmallGenerator + SmallLargeBlockUpgrade + LargeBlockLargeGenerator + LargeLargeBlockUpgrade + + + Caster_Accelerator_0 + Caster_CentralPipe_0 + Caster_Reactor + RadiatorPanel + Heat_Heatsink - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -99,18 +163,11 @@ - NovaCannon - GothicTorp - MacroCannon + AegisFlakTurret + MacroCannon HeavyMacroCannon - FixedLance LanceBattery - LanceLightBattery - LanceHeavyBattery - MacroTurret - MacroLightTurret - MacroHeavyTurret - AegisFlakTurret + NovaCannon @@ -126,22 +183,15 @@ + Priest_Block + PriestReskin_Block + Reaver_Coilgun + Assault_Coil_Turret DualSnubLaserTurret - UnguidedRocketTurret DualPulseLaserTurret - DrunkRocketTurret - Reaver_Coilgun - - Assault_Coil_Turret - APE_Strong - Devastator_Torp - Priest_Block - Type18_Artillery - Type19_Driver - Type21_Artillery - Type22_Driver - Type24_Artillery - Type25_Driver + APE_Strong + Type18_Artillery + Devastator_Torp @@ -151,23 +201,17 @@ GuiBlockCategoryDefinition - [FLAW] - .SC_[FLAW] + [FLW] + .SC_[FLW] true - + LargeRailgun_SC GoalieCasemate - KreegMagnetarCannon - Thagomizer - HeavyFighterBay - HeavyCarronade_5x5_Turret - X4_7x7_HeavyTurret - VindicatorKineticLance - HadeanPlasmaBlastgun - JN_175Fixed - longsword + X4_7x7_HeavyTurret + HeavyCarronade_5x5_Turret + JN_175Fixed @@ -183,18 +227,14 @@ - MA_Fixed_T3 + MA_PDX + MA_Gimbal_Laser + UNN_Heavy_Torpedo + MA_AC150 MA_Gimbal_Laser_T2 - MA_Gladius - MA_Guardian - MA_Derecho - MCRN_Heavy_Torpedo MA_T2PDX - MA_AC150 - MA_Gimbal_Laser - MA_PDX - MA_Tiger - UNN_Heavy_Torpedo + MA_Derecho + MA_Gladius @@ -210,20 +250,13 @@ - NHI_Heavy_Gun_Turret - NHI_Autocannon_Turret - NHI_Fixed_Autocannon NHI_PD_Turret + NHI_Gatling_Laser_Turret + NHI_Autocannon_Turret NHI_Kinetic_Cannon_Turret - NHI_Fixed_Gatling_Laser - SC_Coil_Cannon - NHI_Mk1_Cannon_Turret NHI_Mk2_Cannon_Turret - NHI_Mk3_Cannon_Turret - NHI_Light_Railgun_Turret - NHI_Gatling_Laser_Turret - NHI_Light_Autocannon_Turret - + SC_Coil_Cannon + NHI_Mk3_Cannon_Turret @@ -238,16 +271,10 @@ - SC_AR_Eris - SC_AR_MagnaStar SC_AR_Tumult - SC_AR_Afflictor - SC_AR_Afflictor_Slanted SC_AR_Deimos - SC_AR_FocusedBeam SC_AR_Forager - SC_AR_Heliod - SC_AR_Phobos + SC_AR_Eris @@ -263,17 +290,12 @@ - K_SA_HeavyMetal_Gauss_A - K_SA_HeavyMetal_Gauss_ERII - K_SA_HeavyMetal_Gauss_PGBC SA_HMI_Erebos - Hellfire_Laser_Block - K_SA_HeavyMetal_Spinal_Rotary_Reskin - K_SA_HeavyMetal_Spinal_Rotary - K_SA_Gauss_ERC + K_SA_HeavyMetal_Gauss_A K_SA_HeavyMetal_Gauss_ERFM + K_SA_HeavyMetal_Gauss_PGBC - + @@ -287,15 +309,10 @@ - K_SA_Launcher_VIV - HAS_Cyclops - HAS_Mammon - HAS_Nyx K_SA_Launcher_VI - HAS_Thanatos - HAS_Esper + K_SA_Launcher_VIV HAS_Avenger - HAS_Crossfield + HAS_Esper @@ -313,12 +330,6 @@ Hexcannon MetalStorm - TaiidanHangarBomber - TaiidanHangarBomberMedium - TaiidanRailBomber - TaiidanHangarFighter - TaiidanRailFighter - TaiidanSingleHangar @@ -332,24 +343,22 @@ .SC_[BTI] true + - Starcore_AMS_II_Block - ERPPC - Starcore_L_Laser_Block - ModularLRM5 + ModularLRM5 ModularLRM5Angled ModularLRM5AngledReversed - ModularMiddleLRM5 - Starcore_M_Laser_Block - ModularMRM10 + ModularMiddleLRM5 + Starcore_Arrow_Block_Single + ModularMRM10 ModularMRM10Angled ModularMRM10AngledReversed ModularMiddleMRM10 - Starcore_AMS_I_Block - Starcore_PPC_Block - ModularSRM8 - Starcore_Arrow_Block - Starcore_Arrow_Block_Single + Starcore_AMS_I_Block + Starcore_AMS_II_Block + Starcore_Arrow_Block + ERPPC + @@ -363,13 +372,13 @@ MagnaPulse_Gen - - Impulse_Torch - + + + Counter_Battery - S_Chem_Laser_Block - S_Armored_Laser_Block - + + + Nariman_Dart_Turret SolHyp_Magnetic_Coilgun @@ -383,26 +392,19 @@ .SC_[FAS] true + - 16InchTriple - 6InchTriple + BoforTwinRemodel + QuadBofor + PomPomMain 127mmMk32 127mmMk12 127mmMk24 - 381mmDualR - 15cmTbtsKC36 - 105mmTwin + 203mmTwin 380mmMLE1935 - 15cmSKC28R - 15cmSKC28NR - PomPomMain - BoforTwinRemodel - BoforSingleRemodel - TorpBarbette - Barbette5x5 - QuadBofor - 20InchTwin - 406alternate + 381mmDualR + 16InchTriple + 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/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..22a0a062c 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 @@ -198,6 +200,7 @@ [8 mini torps target missiles] [Will heal shields if it impacts] [40 second reload] + Caution, give it decent line of sight for better results Textures\GUI\missile_defense.png @@ -398,7 +401,7 @@ - + @@ -407,19 +410,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 +437,7 @@ - + @@ -484,6 +481,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 +722,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 +985,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 +1050,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 +1107,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..ed47ab146 --- /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.15f, + }, + }, + Hit = new ParticleDef + { + Name = "",//ARROWFLAREDEATH ARROWNUKE + ApplyToShield = true, + + Color = Color(red: 3, green: 1f, blue: 1.9f, alpha: 0.4f), + 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..53e96cd86 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 @@ -54,8 +54,8 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "Nariman", // 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. + DeviateShotAngle = 10f, // Projectile inaccuracy in degrees. + AimingTolerance = 2f, // 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. @@ -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..75ae25921 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 }, }, @@ -272,8 +272,8 @@ partial class Parts 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. + SteeringLimit = 40, // 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 = 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..00dbdc145 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 = 8; //about 3.5% per triggertick at 14, 2% per trigger at 8, tested in game. + slimBlock.IncreaseMountLevel(repairAmount, 0L, null, 0f, false, MyOwnershipShareModeEnum.Faction); + + // Try casting to MyCubeBlock and change the owner. + 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/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs index ff49f5072..47319bc74 100644 --- a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs +++ b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan.cs @@ -56,9 +56,9 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "R.A.C.-5 Avenger", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0.57f, // Projectile inaccuracy in degrees. + DeviateShotAngle = 0.52f, //0.57f //Projectile inaccuracy in degrees. AimingTolerance = 1f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Basic, // Level of turret aim prediction; Off, Basic, Accurate, Advanced + AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released. AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. diff --git a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs index 489d7b5e9..c43ae332f 100644 --- a/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs +++ b/Weapon Mods/Heavy-Assault-Systems/Data/Scripts/CoreParts/Vulcan_Ammo.cs @@ -95,8 +95,8 @@ partial class Parts // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 4000f, // Distance at which damage begins falling off. - MinMultipler = 0.5f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + Distance = 0f, //4000f// Distance at which damage begins falling off. + MinMultipler = 1f, //0.5f // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef { diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc index 9221c72d3..a95913d6d 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/CubeBlocks_Weapons_IVL.sbc @@ -545,9 +545,9 @@ [FLAW] Railgun 2.0 Textures\GUI\Icons\Cubes\RailGun.dds - 10km range Railgun. 5000m/s velocity + 11km range Railgun. 6000m/s velocity 24Mw Passive Draw, 300Mw Recharge - Falloff After 6km. + Falloff After 10km. Deals Kinetic Damage. Large diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs index 82da8fb0a..a5fba7caa 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/AmmoTypes.cs @@ -2294,7 +2294,7 @@ partial class Parts AmmoRound = "Large Railgun Slug", // Name of ammo in terminal, should be different for each ammo type used by the same weapon. Is used by Shrapnel. HybridRound = true, // Use both a physical ammo magazine and energy per shot. EnergyCost = 0.2858f, // Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. - BaseDamage = 126000f, // Direct damage; one steel plate is worth 100. + BaseDamage = 126000f, //holy number, not to be changed //Direct damage; one steel plate is worth 100. Mass = 277f, // In kilograms; how much force the impact will apply to the target. Health = 0, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. BackKickForce = 0f, // Recoil. This is applied to the Parent Grid. 21777000f @@ -2358,7 +2358,7 @@ partial class Parts // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 6000f, // Distance at which damage begins falling off. + Distance = 10000f, // Distance at which damage begins falling off. MinMultipler = 0.75f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. }, Grids = new GridSizeDef @@ -2409,10 +2409,10 @@ partial class Parts ByBlockHit = new ByBlockHitDef { Enable = true, - Radius = 3f, // Meters - Damage = 10000f, // Damages 4 blocks + Radius = 3.5f, // Meters + Damage = 20000f, // Damages 4 blocks Depth = 1f, // Max depth of AOE effect, in meters. 0=disabled, and AOE effect will reach to a depth of the radius value - MaxAbsorb = 2500f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. + MaxAbsorb = 5000f, // Soft cutoff for damage, except for pooled falloff. If pooled falloff, limits max damage per block. Falloff = Pooled, //.NoFalloff applies the same damage to all blocks in radius //.Linear drops evenly by distance from center out to max radius //.Curve drops off damage sharply as it approaches the max radius @@ -2514,8 +2514,8 @@ partial class Parts TargetLossTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MaxLifeTime = 120, //120 is required for sound. 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things. AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. - DesiredSpeed = 5000, // voxel phasing if you go above 5100 - MaxTrajectory = 10000f, //**MUST** be double of speed for sound to work good.// Max Distance the projectile or beam can Travel. + DesiredSpeed = 6000, // voxel phasing if you go above 5100 + MaxTrajectory = 12500f, //**MUST** be double of speed for sound to work good.// Max Distance the projectile or beam can Travel. DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second) GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards. diff --git a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs index 7fb8a06cc..10341b779 100644 --- a/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs +++ b/Weapon Mods/Invalids Vanilla Lobotomizer/Data/Scripts/CoreParts/Railguns.cs @@ -49,7 +49,7 @@ partial class Parts { LockedSmartOnly = false, // Only fire at smart projectiles that are locked on to parent grid. MinimumDiameter = 0, // Minimum radius of threat to engage. MaximumDiameter = 0, // Maximum radius of threat to engage; 0 = unlimited. - MaxTargetDistance = 8000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MaxTargetDistance = 11000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. TopTargets = 2, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 4, // Maximum number of blocks to randomize between; 0 = unlimited. diff --git a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs index e51b7195a..913c37668 100644 --- a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs +++ b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStorm.cs @@ -79,7 +79,7 @@ partial class Parts { LockedSmartOnly = false, // Only fire at smart projectiles that are locked on to parent grid. MinimumDiameter = 0, // Minimum radius of threat to engage. MaximumDiameter = 0, // Maximum radius of threat to engage; 0 = unlimited. - MaxTargetDistance = 40000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. + MaxTargetDistance = 3000, // Maximum distance at which targets will be automatically shot at; 0 = unlimited. MinTargetDistance = 0, // Minimum distance at which targets will be automatically shot at. TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. TopBlocks = 8, // Maximum number of blocks to randomize between; 0 = unlimited. @@ -88,8 +88,8 @@ partial class Parts { HardPoint = new HardPointDef { PartName = "Metal Storm", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). - DeviateShotAngle = 0.05f, // Projectile inaccuracy in degrees. - AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. + DeviateShotAngle = 0.15f, // Projectile inaccuracy in degrees. + AimingTolerance = 3f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released - while a target is available. AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. diff --git a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs index 983589aea..0fdcd81d9 100644 --- a/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs +++ b/Weapon Mods/Military Industrial Complex/Data/Scripts/CoreParts/MetalStormAmmo.cs @@ -135,11 +135,11 @@ partial class Parts MaxLifeTime = 0, // 0 is disabled, Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). time begins at 0 and time must EXCEED this value to trigger "time > maxValue". Please have a value for this, It stops Bad things. AccelPerSec = 0f, // Meters Per Second. This is the spawning Speed of the Projectile, and used by turning. DesiredSpeed = 1000, // voxel phasing if you go above 5100 - MaxTrajectory = 4000, // Max Distance the projectile or beam can Travel. + MaxTrajectory = 3150, // Max Distance the projectile or beam can Travel. DeaccelTime = 0, // 0 is disabled, a value causes the projectile to come to rest overtime, (Measured in game ticks, 60 = 1 second) GravityMultiplier = 0f, // Gravity multiplier, influences the trajectory of the projectile, value greater than 0 to enable. Natural Gravity Only. SpeedVariance = Random(start: 0, end: 0), // subtracts value from DesiredSpeed. Be warned, you can make your projectile go backwards. - RangeVariance = Random(start: 0, end: 0), // subtracts value from MaxTrajectory + RangeVariance = Random(start: 0, end: 75), // subtracts value from MaxTrajectory MaxTrajectoryTime = 0, // How long the weapon must fire before it reaches MaxTrajectory. }, AmmoGraphics = new GraphicDef 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/Data/Scripts/CoreParts/Charon.cs b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs index 3a9db9986..21f7fc219 100644 --- a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs +++ b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon.cs @@ -44,7 +44,7 @@ partial class Parts { Grids, Neutrals, // Types of threat to engage: Grids, Projectiles, Characters, Meteors, Neutrals }, SubSystems = new[] { - Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any, // Subsystem targeting priority: Offense, Utility, Power, Production, Thrust, Jumping, Steering, Any + Offense, Utility, Thrust, 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. @@ -53,12 +53,12 @@ partial class Parts { MaximumDiameter = 0, // Maximum radius of threat to engage; 0 = unlimited. MaxTargetDistance = 2750f, // 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. - CycleBlocks = 3, // Number of blocks to "cycle" per acquire attempt. + TopTargets = 4, // Maximum number of targets to randomize between; 0 = unlimited. + 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 = 180, // After this time has been reached the weapon will stop tracking existing target and scan for a new one + 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 @@ -68,7 +68,7 @@ partial class Parts { PartName = "Charon", // Name of the weapon in terminal, should be unique for each weapon definition that shares a SubtypeId (i.e. multiweapons). DeviateShotAngle = 0.50f, // Projectile inaccuracy in degrees. AimingTolerance = 5f, // How many degrees off target a turret can fire at. 0 - 180 firing angle. - AimLeadingPrediction = Basic, // Level of turret aim prediction; Off, Basic, Accurate, Advanced + AimLeadingPrediction = Accurate, // Level of turret aim prediction; Off, Basic, Accurate, Advanced DelayCeaseFire = 0, // Measured in game ticks (6 = 100ms, 60 = 1 second, etc..). Length of time the weapon continues firing after trigger is released. AddToleranceToTracking = false, // Allows turret to track to the edge of the AimingTolerance cone instead of dead centre. CanShootSubmerged = false, // Whether the weapon can be fired underwater when using WaterMod. @@ -101,7 +101,7 @@ partial class Parts { HomeAzimuth = 0, // Default resting rotation angle HomeElevation = 0, // Default resting elevation InventorySize = 1f, // Inventory capacity in kL. - IdlePower = 150f, // Constant base power draw in MW. + IdlePower = 50f, // 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 @@ -141,7 +141,7 @@ partial class Parts { 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. + FireFull = false, //probably should be set to 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). diff --git a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon_Ammo.cs b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon_Ammo.cs index 37e4349c1..402813dec 100644 --- a/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon_Ammo.cs +++ b/Weapon Mods/Starcore_Serpent_Arms_Heavy_Metal/Data/Scripts/CoreParts/Charon_Ammo.cs @@ -44,7 +44,7 @@ partial class Parts AmmoMagazine = "K_GaussPrototypeBlitzCase", // SubtypeId of physical ammo magazine. Use "Energy" for weapons without physical ammo. AmmoRound = "Charon_Shot", // 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.063f, // ~600MW / Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. + EnergyCost = 0.0315f, // ~300MW / Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 33000f, // Direct damage; one steel plate is worth 100. Mass = 15f, // 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. @@ -116,8 +116,8 @@ partial class Parts // For the following modifier values: -1 = disabled (higher performance), 0 = no damage, 0.01f = 1% damage, 2 = 200% damage. FallOff = new FallOffDef { - Distance = 2000f, // Distance at which damage begins falling off. - MinMultipler = 0.5f, // Value from 0.0001f to 1f where 0.1f would be a min damage of 10% of base damage. + Distance = 0f, // 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 { 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 diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs index 0553e31a5..84615e511 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/FixedgunRLXammo.cs @@ -47,8 +47,8 @@ partial class Parts EnergyCost = 0.017f, //195 Scaler for energy per shot (EnergyCost * BaseDamage * (RateOfFire / 3600) * BarrelsPerShot * TrajectilesPerBarrel). Uses EffectStrength instead of BaseDamage if EWAR. BaseDamage = 10000f, // Direct damage; one steel plate is worth 100. Mass = 500f, // In kilograms; how much force the impact will apply to the target. - Health = 12, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. - BackKickForce = 7771000f, // Recoil. This is applied to the Parent Grid. + Health = 50, // How much damage the projectile can take from other projectiles (base of 1 per hit) before dying; 0 disables this and makes the projectile untargetable. + BackKickForce = 5777100f, // Recoil. This is applied to the Parent Grid. DecayPerShot = 0f, // Damage to the firing weapon itself. //float.MaxValue will drop the weapon to the first build state and destroy all components used for construction //If greater than cube integrity it will remove the cube upon firing, without causing deformation (makes it look like the whole "block" flew away) @@ -539,7 +539,7 @@ partial class Parts }, Shields = new ShieldDef { - Modifier = 4f, // Multiplier for damage against shields. + Modifier = 6f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1.3f, // If greater than zero, the percentage of damage that will penetrate the shield. }, diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs index 3b2b42d11..9bb782e1d 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Fixed Guns/LBX_ammo.cs @@ -1939,7 +1939,7 @@ partial class Parts Fragment = new FragmentDef // Formerly known as Shrapnel. Spawns specified ammo fragments on projectile death (via hit or detonation). { AmmoRound = "LBXCluster_Fragment", // AmmoRound field of the ammo to spawn. - Fragments = 4, // Number of projectiles to spawn. + Fragments = 6, // Number of projectiles to spawn. Degrees = 9f, // Cone in which to randomize direction of spawned projectiles. Reverse = false, // Spawn projectiles backward instead of forward. DropVelocity = true, // fragments will not inherit velocity from parent. @@ -1959,8 +1959,8 @@ partial class Parts PointAtTarget = false, // Start fragment direction pointing at Target PointType = Lead, // Point accuracy, Direct (straight forward), Lead (always fire), Predict (only fire if it can hit) DirectAimCone = 15f, //Aim cone used for Direct fire, in degrees - GroupSize = 4, // Number of spawns in each group - GroupDelay = 4, //5 Delay between each group. + GroupSize = 6, // Number of spawns in each group + GroupDelay = 3, //5 Delay between each group. }, }, Pattern = new PatternDef diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs index aa44fa4c4..09734263e 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieAmmotypes.cs @@ -239,7 +239,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, //doesn't need to be true I think. thanks darth for the tip. + Enable = true, //doesn't need to be true I think. thanks darth for the tip. Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -489,7 +489,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -723,7 +723,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -971,7 +971,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 10f, // Width = 1f, // Color = Color(red: 0f, green: 0f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. @@ -1163,7 +1163,7 @@ partial class Parts WidthVariance = Random(start: 0f, end: 0f), // adds random value to default width (negatives shrinks width) Tracer = new TracerBaseDef { - Enable = false, + Enable = true, Length = 0.001f, // Width = 1f, // Color = Color(red: 1f, green: 1f, blue: 0f, alpha: 0f), // RBG 255 is Neon Glowing, 100 is Quite Bright. diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs index 7ff0c5ae1..e3f615280 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/Flak MachineGuns LightCannons/GoalieMultiTurretParts.cs @@ -387,7 +387,7 @@ partial class Parts { DegradeRof = false, // Progressively lower rate of fire when over 80% heat threshold (80% of max heat). ShotsInBurst = 2, // Use this if you don't want the weapon to fire an entire physical magazine in one go. Should not be more than your magazine capacity. DelayAfterBurst = 29, // How long to spend "reloading" after each burst. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). - FireFull = true, // Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely. + FireFull = true, //doesnt work currently because of the burst needed for the cadence //Whether the weapon should fire the full magazine (or the full burst instead if ShotsInBurst > 0), even if the target is lost or the player stops firing prematurely. GiveUpAfter = false, // Whether the weapon should drop its current target and reacquire a new target after finishing its magazine or burst. BarrelSpinRate = 0, // Visual only, 0 disables and uses RateOfFire. DeterministicSpin = false, // Spin barrel position will always be relative to initial / starting positions (spin will not be as smooth). diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs index 28f74ded6..040a54e83 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Standard_Type_HE_Ammo.cs @@ -127,13 +127,13 @@ partial class Parts Armor = new ArmorDef { Armor = -1f, // Multiplier for damage against all armor. This is multiplied with the specific armor type multiplier (light, heavy). - Light = 0.7f, // Multiplier for damage against light armor. + Light = -1f, // Multiplier for damage against light armor. Heavy = -1f, // Multiplier for damage against heavy armor. - NonArmor = 0.30f, // Multiplier for damage against every else. + NonArmor = 0.4f, // Multiplier for damage against every else. }, Shields = new ShieldDef { - Modifier = 2.1f, // Multiplier for damage against shields. + Modifier = 2.5f, // Multiplier for damage against shields. Type = Default, // Damage vs healing against shields; Default, Heal BypassModifier = -1.25f, // If greater than zero, the percentage of damage that will penetrate the shield. }, @@ -184,7 +184,7 @@ partial class Parts { Enable = true, Radius = 11.25f, // Meters - Damage = 10000f, + Damage = 12500f, Depth = 3.1f, MaxAbsorb = 0f, Falloff = Curve, //.NoFalloff applies the same damage to all blocks in radius diff --git a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs index 896921a11..b61a304c5 100644 --- a/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs +++ b/Weapon Mods/TIOStarcore/Data/Scripts/CoreParts/TypeCannons/Type18 Heavy Turret.cs @@ -125,7 +125,7 @@ partial class Parts { BarrelsPerShot = 1, // How many muzzles will fire a projectile per fire event. TrajectilesPerBarrel = 1, // Number of projectiles per muzzle per fire event. SkipBarrels = 0, // Number of muzzles to skip after each fire event. - ReloadTime = 1200, //20 seconds //Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). + ReloadTime = 360, //20 seconds //Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). MagsToLoad = 8, // Number of physical magazines to consume on reload. DelayUntilFire = 45, // How long the weapon waits before shooting after being told to fire. Measured in game ticks (6 = 100ms, 60 = 1 seconds, etc..). HeatPerShot = 10, // Heat generated per shot. diff --git a/unfuckaudio.py b/fixaudio.py similarity index 97% rename from unfuckaudio.py rename to fixaudio.py index 272770be4..a2aa8e427 100644 --- a/unfuckaudio.py +++ b/fixaudio.py @@ -109,4 +109,4 @@ def process_directory(): process_directory() except KeyboardInterrupt: print("\n\n❗ Process interrupted by user. Exiting gracefully.") - sys.exit(0) \ No newline at end of file + sys.exit(0)