-
Notifications
You must be signed in to change notification settings - Fork 9
Changes and Additions in CoreSystems
These changes are implemented on the Git or WIP version of CoreSystems, and will typically be included in the next scheduled Steam update.
- Fixed painter mark cancellation discrepancy between client, server, and other clients.
- Fixed Advanced Settings tick box- now refreshes terminal when pressed and hides Track Angular Motion
- Updated RNG option descriptions for weapon targeting in CoreParts
- Fixed RNG not randomizing on the first usage
- Added weapon camera channels to searchlights, to be consistent with other turrets
- Fixed emissive initial state setting in world load, which used to fire per keyframe instead of per unique emissive. May have previously caused IndexOutOfRangeException in MyConcurrentTwoLevelQueue.Enqueue
- Fixed weapons that use TargetGridCenter ignoring terminal settings on target types
- Fixed a PD corner case where TargetGridCenter-fired projectiles might have been ignored
- Fixed inconsistent trigger distances for TimedSpawns using proximity - modders see pin in #coresys-wc-dev
- Update min/max size thresholds on targeting to include "or equal"
- More message/error clarifications
- Bugfix for painter used on fixed smarts that have a dumb terminal stage
- Whitelisted Gauge's grappling hook turret
- Fixed PD targeting corner case where valid target projectiles would get kicked out from tracking
- Fixed erroneous velocity inheritance for travel-to without frag that drops velocity (yes, it's as odd as it sounds)
- Clarified some error messages for modders
- Fixed TravelTo estimation returning the target position without lead if TimedSpawns were not used but their field serialized with defaults
- Added drag option under Trajectory.
- Changed vanilla replacer check to .Contains, allowing WC to detect a vanilla replacer with "WCVanilla" anywhere in the file path or steam name
- Added additional notes on subpart naming errors for modders
- Added error correction for ammo list changes and existing BPs/worlds.
- Added optional low/fill-to thresholds for weapon inventories. If not specified, weapons will continue to use the 25% low / 75% fill thresholds that were previously hardcoded.
- Corrected voxel prefetch to use the new server-side setting for a max distance
- Added option to include world volume multiplier in inventory calculations
- Fixed "No Lead Group" message appearing in the terminal for fixed launchers with smart munitions
- Added Server Settings options for global small grid/large grid damage multipliers
- Added velocity inheritance to ejected components
- Started extorting modders when they request feature changes
- Bugfix on invoked actions happening after world unload (would sometimes occur during Nexus re-routing)
- Added option for ammo to override weapon muzzle Effect1
- Added optional Terminal Name for ammo, to specify something other than AmmoRound to appear in the terminal (such as your magazine type)
- Clarified crash messages for duplicate weapons from different mods
- Clarified Focus Fire tooltip
- Added grav-aligned particle option (see Hit particle in ammo example on coreparts)
- Added rotation option to ejected components and new fields for RNG on speed, direction, and rotation
- Bugfix for CTCs shooting at dead NPC characters and not giving up until they were removed from the world
- Bugfix for corner case of a block violating restricted placement boxes due to subgrids throwing an error with GetFatBlocks
- Fixed direction of ejector dummy on handweapons, it's no longer forced to be parallel to the muzzle
- Bug hunting in AlterActions and EstimateTrajectory for corner case NREs.
- Rework of projectile on projectile damage calcs, as previously you could end up with a high primary damage projectile unintentionally surviving multiple hits and doing nearly infinite damage against other projectiles. This was more apparent with smarts that would select and chase a new target. Projectiles with EOL detonations could also explode multiple times without dying.
- If your attacking projectile has a health > 0, it will deduct the HealthHitModifier damage done to the target from its own health.
- If your attacking projectile has a health = 0, the HealthHitModifier damage it does will be deducted from the primary damage field.
- If the attacking projectile health or primary damage drops below 0, it will die.
- In either case, a projectile with EOL will detonate on hitting another projectile and die.
- This should not have a noticeable impact on non-smart anti projectile weapons.
- Added RegisterSubGrid error handling for a modified FatBlocks collection
- Repel tooltip note clarification
- Added AntiSmartv2 that uses ewar strength and projectile health fields to distract smarts. See EWAR section on wiki, and new enum in coreparts.
- Fixed burst count defaulting to 1 for certain sequencing actions, resulting in short cycling of weapons
- Added SG and LG flare/firework launchers to an exemption. They should no longer be removed.
- Added some debugging to catch an elusive SharpDX audio error
- Removed unused code/vars
- Clarified Override tooltip
- Deconflicted faction color on ammo and color variance- previously having a color variance would suppress faction colors
- Added SkipBlocksForAOE option under ObjectsHit in ammo definition. Allows primary damage to count toward max block hits (if enabled) while keeping AOE damage either objects hit or blocks hit limited. See ammo def note updates.
- Touched up MaxAbsorb + Pooled to act as described in the ammo template
- Fixed PD targeting failing to acquire smart handweapons that are dumbfired (similar to a grid-based weapon on override)
- Added option to prohibit cooling when a weapon is turned off
- Corrected wiki/git links
- Fixed chat command for mod development debug mode
- Corrected character targeting failure if a player was hiding behind an unowned grid/armor blocks
- Added prohibit options for shot delay and burst count under weapon UI. This is meant for instances where players utilizing quirks of salvos may go against intended balance/impair functionality of weapons.
- Reworked hit particles to remove a chance of them appearing to lag in space behind the actual impact point
- Added support for TimedSpawn proximity for painted targets
- Reworked warheads/critical reactions https://github.com/Ash-LikeSnow/WeaponCore/wiki/Critical-Reaction---Warheads
- Fixed searchlights to maintain their orientation between world loading events
- Fixed certain particles related to animation states (like prefire) hanging in space indefinitely after block removal
- Fixed TimedSpawns criteria for using the DirectAimCone- it's now only used if the pointing mode is direct AND DirectAimCone has a value
- Fixed camera aiming voxel prefetch for planets (camera ray wouldn't return terrain if no grids nearby, causing weapons to aim around erratically or enabling selection of grids that should have been blocked)
- Voxel prefetch above utilized to return coordinates of voxel being looked at- manual aiming (Control Mode Manual + panning camera) should be more precise on planets
- Added Supportive PD Terminal and Hotbar controls - players can now choose if their weapons can try to target all enemy projectiles in the area (option on) vs only projectiles targeting the construct that the weapon is on (option off)
- Added Disable Supporting PD option to weapons, in the UI def section. Default is false. If set to true, the weapon will be limited to defending the construct it's on and the Terminal/Hotbar options will not be available
- Fixed WC fixed weapons sometimes being present in Ship Weapons category
- Updated ProjectileLockedOn and ProjectileLockedOnPos API methods to utilize master AI to account for subgrids
- Fixed cases where searchlights might have idle movement enabled, which couldn't be cycled off by players as the control was removed. Resulted in some jittering of searchlights in some cases.
- Bugfix to cache faction info on projectiles.
- Fixed grid AI.MaxTargetingRange (used to gather info on nearby potential targets or obstructions). Throughout WC it was based on the lesser of AI aiming max distance or trajectory of the longest ranged weapon. On grid initialization it was only looking at the trajectory max. This AI.MaxTargetingRange value now updates on weapon removal as well, when it previously did not decrease until a world load event or copy/paste of the grid.
- Updated projectile targeting logic to respect "Target Neutrals" toggle on weapons
- Updated ProjectileLockedOn and ProjectileLockedOnPos API methods to only return projectiles locked onto the input grid
- Fixed NRE when stopping turret rotation sounds or some phantom spawns
- Added check for PD targeting- should not try to shoot underwater if the fired projectiles will die hitting the water surface
- Upped cooperative PD range check to the grids MaxTargetingDistance
- Fixed some projectiles hanging in space indefinitely
- Added "Arm" action for WC-based warheads
- Fixed additional insta-recharge exploits related to certain target changes
- Added delay for a spinning weapon to spin down- will wait 60 ticks for a target before spinning down
- Bug with drastic orientation changes on accelerating non-smarts in grav fixed
- Model orientation of non-smart projectiles in grav fixed
- Bug with Approach Orbits producing erratic paths at certain world orientations fixed
- Approach Orbit radius is now much more precise
- Added SG Searchlight
- Fixed custom home positions on block placement for sorter based weapons
- Bug with persistent physics shape from using DecayPerShot > integrity fixed
- Bug with non-smart projectiles that phase through own grid fixed
- Bug with detailed info panel scrolling fixed
- Bug with approaches in the presence of TravelTo ammunition fixed
- Bug with cycling weapons on/off to skip charging fixed
- Block restriction area detection improved, you can no longer place a block inside another restriction zone that is larger
- New mod-level API call for incoming projectile positions
- Automaton Update: AI Offensive Combat block can fire fixed weapons, including smart launchers. CTC Sun Tracking option exposed. Searchlights functional like turrets. Details on Automaton integration: Automaton-Update-Key-Notes
- Bug with accelerating non-smarts not changing pointing vector from gravity fixed
- Bug with CTC (and maybe subgrid mounted turrets) parent velocity not updating fixed. This would only occur if the parent grid didn't have a weapon directly on it.
- CTC subsystem targeting functional (based on mounted weapon config)
- CTC projectile targeting functional (based on mounted weapon config)
- EWAR bugfixes, fields show now persist up to max life time
- Additional damage from deformation (applied by Keen) fixed
- Range slider in terminal now shows the minimum based upon the hardpoint, preventing users from setting min range lower than AI minimum without realizing it.
- New option for Minimum Rate of Fire (if the slider/UI control is enabled). Can be used to prevent cheesing heat mechanics
- Fixed hand weapon issue where entering a cockpit with a weapon in hand resulted in a loss of currently loaded ammo
- Fixed turret LOS check that would sometimes fail if collider geo was much smaller than bounding box
- Some instances of voxel phasing at extreme distance from any other entities fixed
- Bug in DroneAdvanced orbiting a point in space and not updating for moving grids fixed
- Approaches reworked, see comments in latest CoreParts
- MaxObjectsHit fixed for AOE (first block no longer counts as 1 entity, then stops the rest of the damage)
- AOE ArmOnlyOnHit now includes water and voxel impact as a "hit"
- Zero Effort Miss nav routine added as optional, compared to the default of Proportional Nav
- Toggling the target type (grid/char/small/large) off in weapon terminal stops engaging the active target.
- Reworked MaxReloads, also now refunds in creative mode on world start.
- Min/max target size is now respected for projectiles and reacquires.
- Ewar/Antismart/rework fixes (Pre 2.0 get ripped, according to push notes)
- Added faction tracer/trail/segment colors
- MinTurnSpeed added to smarts (to prevent sharp low speed turns)
- FragOnEnd can now work with timedSpawns=true
- Non-tracking weapons can use maxtracking time
- MaxTrackingTime (ticks) on weapons (fixed or turrets) will allow you cycle the block targets. Good for multiple shots from the same weapon, like missile salvos, but overkill for rapid fire/short range weapons
- Fixed smarts that lose their target and exceed MaxTargets heading off toward 0,0,0
- ArmedWhenHit variable added for ammo, which will arm (allow AOE:EoL or Fragments) when the ammo is struck by another projectile
- Fragments on projectile death now possible when using the TimedSpawns system
- MP desync conquered
- Number of raycasts for LOS checks to random blocks limited
- Voxels now block grid (HUD) and weapon targeting
- Fixed smart launchers can intercept other projectiles
- TimedSpawn fragments can attack other nearby projectiles (hot drone on drone action)
- Approaches now have a rudimentary planar orbit, more suited for planetary engagements
- Obstacle avoidance option added to Smarts, as well as a field to specify obstacle distance checks
- Corrected drone nav to utilize a simple lateral acceleration model (like before) and fixed CheckFutureInteresections bug
- MP WaterAPI & planet checking updated, client-side AV will now match server and respect water surface
- Indirect fire bug fixed, where a target had LOS but no valid arc solution, resulting in a very short range shot
- Synchronization added (meant for long-life missiles, drones, or things that may retarget after launch)
- Drone MP mission reassignment fixed
- Highly customizable Approaches for Smarts added
- New Smarts proportional-navigation algo and steering options (farewell U-turns!)
- HandWeapons functional (again) with access to HUD targeting
- NpcSafe flag in ammo (for handweapons)
- Advanced mode toggle to hide terminal options
- Deformation options added to ammo
- Decal options added for ammo hits
- Billboard optimizations
- Target acquisition Master/Slave/Scanner concepts
- Particle world/local matrix fix, see Ammo - AV
- Selection/passing of projectiles for PD was reworked. All smart projectiles were previously (erroneously) passed.
- MaxActiveProjectiles functional (only meant for Drones)
- MaxReloads > 0 are enforced between sessions/saves with a persistent block history
- MaxReloads increments by 1 for weapons that start with ammo but haven't reloaded to account for creative mode "free loads"
- AOE fixed for blocks larger than 1x1x1 that aren't the point of impact
- Warheads, programmable blocks, and remote controls added to checks for suspected incoming grid drones/PMWs (Incoming Threat popup)
- Grid size switches added to weapons (terminal and hotbar)
- Critical Reactions/warheads revised. No longer detonate on grid splits, and are impact sensitive. Setup details: here
- Weapon damage reporting will now show how a count of each weapon in the world
- Grid damage reporting now shows the owner of the grid
- Log entry for weapons that feel gravity, but lack advanced aiming (reminder for modders) showing dropoff at max range and 1g
- Repel "switch to incoming" range upped to 1km
- Incoming threat display refresh rate increased (200 ticks->30)
- Water splashes added for all projectiles using WaterModAPI methods and water surface location. Splashes and bubbles are based on tracer size or AOE radius.
- Indirect fire with Smarts=none weapons that are affected by gravity has been completely reworked and is now very accurate.
- Indirect fire will default to the lower arc (assuming there are two possible arcs to the target) unless the weapon cannot depress to the lower one.
- Indirect fire from a turret no longer requires line of sight, but may still hit intervening terrain.
- In AreaOfDamage, Depth will accept a 0 or -1 to be disabled.
- Corrected damage reporting from projectiles to weapon for after-action logs.
- WaterModAPI updated to v18 from v15. For unk reasons v15 was not registering with the Water Mod itself on servers.
- ShootSubmerged now checks if the whole weapon is under water, not just the center, by the highest point.
- DecayPerShot options added, float.MaxValue to drop block to first build state (keeps a weapon mount/pylon), or >cube integrity to kill the launcher (whole block "flies" away)
- Ammo and Weapon config data is written to log folder for data mining/debugging, with headers as CSV. See Ammostats.log and Wepstats.log
- Damage done by each grid is now stored live and written out to Griddmgstats.log when the grid is closed.
- Damage done by each weapon type is tallied (across the entire world) and written to dmgstats.log when the world is closed.
- Max charge rate added to weapon terminal
- PageUp/PageDown now cycle targets, and can be rebound if desired
- Fixes for drones being spawned as shrapnel, and smoothed maneuvering for drones.
- WC lockon mechanic (default numpad 0 and blinky green HUD) removed completely. This will eliminate issues with NPCs and reduce player confusion.
- More functionality and cleanup around CTCs.
- Better aiming in gravity, more stable aiming and control in general (still more improvements coming).
- You can now fire weapons manually when you control the CTC from camera.
- Weapons are automatically assigned to the CTC, no need to manually configure. Tools, cameras and lights will be supported in the future.
- Range slider for CTC is finally working properly.
- Each CTC weapon will hold their fire based on their own ability to hit the target.
- Just to reiterate, beams can now interact with voxels. Any rumors of server crashes when firing lasers at voxels have been greatly exaggerated.
- Custom Turret Controller functional
- Custom Turret Controller WIP for Vanilla Weapon Replacer
- Drone targeting reworked to support future assignment to point in space or friendly
- Burst/Sequencing & associated net code improvements
- Weapon grouping/sequencing fire modes to replace Shoot Once and Click to Fire. MP sync of projectiles.
- Advanced Offsets for child fragments (spawned via TimedSpawns) bugfixes; they're now relative to the projectiles orientation.
- Smart ammunition can now impact/damage the parent grid after the tracking delay and if line of sight to the target grid does not pass through the parent grids bounding box. Note that weapons on small subgrids can impact the parent under certain circumstances.
- Weapons without a target, or that need lockon, will display their status on the right hand HUD. Players can disable this status message via a new button in the weapon terminal.
-
Drone Advanced guidance initial development launched, see Drone Guidance page for specifics.
-
New options for fragments, including advanced offsets (X,Y,Z), inherited velocity, and timed spawns, see fragment page. Recursive/self-spawning fragments are now possible. Please utilize a max life and max children to prevent and infinite runaway of fragment spawning.
-
Patterns can now be applied to the weapon, fragment, never, or both. Minor bug fixed in the first run of pattern starting with the second item in the list. Full details here
-
Override button added to in-game control panel, this is intended for debugging/static testing to force a tracking weapon to dumbfire without a valid target.
-
Sound fixes/tweaks for patterns and fragments.
-
WC updates will be on an approx 2 week cycle for Steam live/stable version. Latest working version can be found on Git, details here on how to utilize it for development.
-
DPS display added to in-game control panel for weapons
New AOE system launched, see details here
Legacy/older configurations will still be supported, and will inherit the following properties:
- Depth = 1m
- Falloff Radiant, Detonation, or Explosive will be Exponential
We've fixed a bug with smart projectiles which meant they were always picking their own target instead of inheriting the weapon's target, even if OverideTarget in the SmartsDef was set to false.
The following settings will have some changes in behaviour for fixed smart launchers:
-
OverideTarget = true: Nothing will change, projectile will stick pick its own target.
-
OverideTarget = false and LockOnFocus = false: The projectile will inherit the grid focus (HUD selected) target. If no target is focused, the projectile will dumbfire.
-
OverideTarget = false and LockOnFocus = true: The projectile will inherit the locked on target, but ONLY if it is within the AimingTolerance cone of the weapon (i.e. if AimingTolerance = 90 the projectile will only lock on if the target is in the hemisphere in front of the launcher). Otherwise the projectile will dumbfire. Can set AimingTolerance = 180 for full coverage.
-
For turrets firing smarts with OverideTarget = false, the projectiles will only track the target the turret is tracking.
-
Addendum: Turrets should now keep tracking even if Click to Fire is on.
We've rewritten the aiming code a little, which should improve aiming for many weapons.
However if you currently use Offset (in HardwareDef) on a turret, you may want to check the aiming by enabling Debug in the config, as the aim position is now calculated off the elevation subpart instead of the azimuth.
Added additional LOS checks:
-
Added LOS checks to turret barrels that extend outside of their bounding box and into other blocks.
-
Prevented weapons from firing without line of sight.
- Energy/Kinetic Damage is no longer unique to shields and has been moved out of the Shields section in AmmoDef.
- It is now set in a new DamageType section in DamageScales.
- Damage type of ammo Base, AreaEffect, and Detonation can now be set independently.
- Shield damage is still only one type per ammo, default value of "ShieldDefault" is treated as Energy.
- Shields Type can now be either Default, Heal, Bypass, or Emp. NOTE: Bypass and Emp do nothing at the moment, and may be removed in future.
In summary, weapon mods using the old config system (WeaponThread) will all default to dealing only Energy damage until updated to the new config system (CoreParts).
- Burst will no longer work with a ShotsInBurst value greater than (or equal to) your magazine size.
- Instead, you can set the weapon to load multiple magazines at once, and reload only after all have been fired.
- If you were using this functionality, you can bring it up to date by moving your ShotsInBurst value to MagsToLoad and DelayAfterBurst to ReloadTime. Time between shots will be set by RoF as usual.
Instead of specifying list of subtypeIds to be treated as light or heavy armor, CoreParts lets you create an individual definition for any block. See example file.
- "Kind" can be Light, Heavy, or NonArmor.
- Each block can have unique resistances against Kinetic and Energy damage.
- These are resistances, not damage multipliers, so higher values mean less damage taken.
If you have suggestions or implementations, please raise them in the Discord! Thank you!
Please donate to DarkStar's Patreon!
WeaponCore Quick Links
Weapon Properties (Page in Progress)
Multi-Turret Creation (Page in Progress)
Weapon - Targeting & Hardpoint
Weapon - Critical Reactions/Warheads
Weapon - Minimal Configurations
Ammo - Electronic Warfare System (EWAR)
Ammo - Guidance System (Homing, Mines, Self-Guided)
Armor System (Page in Progress)