About this mod
Resource/Framework for real time cover penetration that interacts with surfaces. Enables projectiles to penetrate cover in real time, without the use of VATS + Penetrator Perk. Now with functioning examples for playtesting! Intended for mod authors to use as either a framework or for incorporation into their own weapon mods.
- Requirements
- Permissions and credits
-
Translations
- French
- Changelogs
This is intended to be a resource for mod authors rather than for end-users. Download this if instructed by a Mod Author, or if you want to make your own patch. Check out DankRafft's Real Time Cover Penetration Framework Expansion for ECO implementing this framework as an expansion to ECO!
The lack of material penetration always bothered me, especially when you have AP rounds punching through body/power armor. What are those wooden planks and tin huts made of? After several days of testing, I am happy to present to everyone a functioning Real Time Cover Penetration Framework. Once set up, projectiles will be able to penetrate cover and damage/kill targets. My hope is that we will see more weapon mods introducing real time cover penetration functionality!
Also included is a simulated spalling effect if direct penetration is not desired. This results in a spray of damaging shards on the opposite side of the impacted surface. Note that spalling may be performance intensive on less robust rigs especially if a high number of spalls are generated. Though this framework is primarily intended for simulating material penetration for more powerful projectiles, the framework also includes templates for weaker penetration effects, intended for rifle grade projectiles (10-30 damage should be appropriate).
NB: To be absolutely clear, the framework alone currently does not modify anything in-game. There is currently no effect for end-users unless one of the Optional Files is used. However, I welcome bug reports and feedback based on the Optional Files, and sincerely hope that others are curious or inspired to make a mod/patch yourself (which I would love to see). The framework is also therefore safe to drop in and out of any game, because it does not touch on any existing files.
Functioning proof of concept is available at: Gauss Rifle 2mm EC Cover Penetration. It is a standalone mod (esp flagged as esl) that can be dropped into a game to enable 2mm EC to penetrate cover in real time. It's pretty fun. v0.3-Beta Update: I have also released a framework plugin: 50 BMG Cover Penetration, which is intended for players. The demonstration files will remain in the Optional Files of this Framework, but they will conflict with the plugin.
Generally, the Ammunition record determines the Projectile fired (DNAM - DNAM > Projectile). Alternatively, the initial Projectile fired can also be determined by Object Modification (SET + Ammo, or SET + OverrideProjectile). OMOD Projectile Overrides always take priority; the Projectile fired is ultimately determined by OMOD if an override is set. If the you want to give penetrative abilities to a Projectile/Ammunition that is shared/used by other Ammunition types or weapons which you do not want to give penetration to, create a new Projectile to: (1) add to the Ammunition [affects all weapons using that ammunition]; or (2) add to the specific weapon via OMOD [affects all weapons that can use that OMOD]:
- If the non-Vanilla Ammunition record is linked to a Vanilla Projectile, you must add a new Projectile record as a replacement. For example, creating a new Projectile for .50 Cal, which by default uses AssaultRifleProjectile. If not, adding penetration to the Vanilla AssaultRifleProjectile means that everything using that Projectile will obtain penetration (all other weapons using that Ammunition and other Ammunition also linked to that Projectile).
- If you do not want all Weapons using the Ammunition to have penetration (or the same penetration), you must add a new Projectile record and link it to an OMOD SET > OverrideProjectile. Do not replace the Projectile linked to the Ammunition record. Instead, add the OverrideProjectile as a new Property to suitable OMODs for suitable weapons (for example, only AP receivers on Rifles firing the Ammunition, or specific mods).
- If an existing Object Modification has SET > OverrideProjectile, you must modify this Override to reference the Projectile that has penetration. OMOD Overrides always take priority. If you add a new Projectile with penetration but fail to also change the OMODs, attaching the OMOD will remove penetration. OverrideProjectile is most commonly found on suppressors, but can be attached to any OMOD.
Intended Use:
The framework is intended to be used in two ways.
- (1) Mod authors can simply integrate the framework's data into their weapon mod (no dependency on the Framework; just remember to mention me!) [See the Article for more details]; or
- (2) Mod authors can make their mod dependent on installing the framework [See the Optional File for a demonstration] (framework file remains .esp because I have no clue what happens if an ESP flagged as ESL is made a master for other mods. If anyone knows please contact me ;_;').
Adding Penetration: Basic Use (v0.3-Beta onwards):
To add penetration:
- Install the framework and add it as a Master to your plugin. Locate the Projectile you want to modify or create a new Projectile (the "initial Projectile"). Consider how much damage you want it to deal after penetrating a surface, and whether you want it to penetrate in a linear line or create spalling.
- For an existing initial Projectile, ensure that it is flagged as an Explosion and that Tracer Frequency is set to 1. Unflag Alt Trigger. To create a new Projectile, copy as new record the framework's "Template for adding new Initial Projectile [PROJ:xx000811]" (for example), and link this to the Ammunition/OMOD record.
- Simply add a suitable Explosion provided by the framework to that Projectile. For direct penetration, look for EditorIDs that begin with "Penetration Effect" (the templates following the convention: "Penetration Effect: [10-200] Damage"). For spalling, look for EditorIDs that begin with "Spalling Effect" (the templates following the convention: "Spalling Effect: [30-180] Shards").
Adding Penetration: Generally/Advanced (v0.3-Beta onwards):
The Framework basically relies on Explosions?!. [Note: there are no actual explosions]
- Locate the Projectile you want to modify or create a new Projectile (the "initial Projectile").
- The initial Projectile (custom or vanilla) must be modified to apply an Explosion (most currently do not), and must be flagged as an Explosion. The initial Projectile must have its Tracer Frequency set to 1. Unflag Alt Trigger (for example).
- The Explosion you apply is what creates the Penetrator Projectile. The framework provides a template Explosion called "Generic Penetration Effect" [EXPL:xx000801] which should be attached to the subject Projectile (the "Generic Penetration Effect" should be either modified/duplicated/otherwise customized to your liking). v0.3-Beta onwards provides a wide range of template Spalling/Penetration Effects that are already ready for use.
- The "Generic Penetration Effect" (as modified/duplicated/customized by you) should then have a Spawn Projectile added. You can simply select one of the template Penetrator Projectiles provided by this framework, which you can use as-is, or customize to your liking. Both the "Penetration Effect" Explosion (from Step 3) and the generated Penetrator Projectile (from Step 4) should probably be contained in the same plugin.
- Each Penetrator Projectile is linked to an Explosion which provides it with damage. This framework provides a library of options for you to choose from, with each template Penetrator Projectile already linked to the appropriate Explosion. To change the damage after penetration, simply change the Damage of the associated Explosion (all damage modifiers are labelled "Determines Damage: [dmg]", and come linked to the appropriate Penetrator Projectile). You can also modify the Force, Knockdown, and other visual effects.
For Spalling Effects, simply add a "Spalling Effect" in lieu of the "Penetration Effect" in Step 3. The framework provides several template Spalling Effects which are already linked to the Spall Projectile and damage. To customize the effect, you can change the number of spawned Spalls in the "Spalling Effect" Explosion, or change the damage and range of the "Spall Shard" Explosion.
The framework has several template Penetrator Projectiles covering a gradient of damage-after-penetration, and template Spalling Effects (30-180 Spalls). These are intended for use as reference, to make it easier to customize or integrate into your own weapon mod. However, they can be utilized as-is by linking a Projectile to a "Penetration Effect" by adding the chosen Penetrator Projectile to the "Spawn Projectile" field. Authors are recommended to make their own custom Penetrator Projectiles with desired properties; simply duplicate/modify/rename the templates.
Making a Patch (v0.3-Beta onwards):
To add penetration to an existing Projectile:
- Install the framework. Find the Projectile you want to make penetrate. Copy the Projectile record as an override into a new plugin and add the framework as a Master to that new plugin.
- Flag the Projectile as Explosive and set Tracer Frequency to 1 (for example). Consider how much damage you want it to deal after penetrating a surface, and whether you want it to penetrate in a linear line or create spalling.
- Simply add a suitable Explosion provided by the framework to that Projectile record. For direct penetration, look for EditorIDs that begin with "Penetration Effect" (the templates following the convention: "Penetration Effect: [10-200] Damage"). For spalling, look for EditorIDs that begin with "Spalling Effect" (the templates following the convention: "Spalling Effect: [30-180] Shards").
- Ensure that the desired changes are also made to the relevant Ammunition and OMODs.
New xEdit users: See the Pinned Comment for a step-by-step example based guide on how to patch an existing projectile. See also the Article for more details.
Caliber Complex users: Aaron7491 has released a patch for Caliber Complex in his patch bundle.
Compatibility
Projectiles must be edited (or Ammunition, if a new Projectile is required). Because this Framework relies on adding Explosions, it should be very compatible so long as the Projectile does not already apply an explosion. If it does, you can modify the existing Explosion (see the Wasteland Ballistics Version included in the proof of concept) with limited loss of functionality. The reliance on Explosions also means that it should be compatible/easily patched with Ballistics mods (i.e. those that add gravity, speed, etc. to Projectiles), unless the mod also relies on Explosions (e.g. Wasteland Ballistics). The framework works with "Missile"-type Projectiles as well, as both initial Projectiles AND Penetrator Projectiles [tested].
The framework .esp can sit high up in the load order as it does not edit anything on its own. Any plugins/patches should load after the mod being patched.
Articles
The Article is complete and provides a lot of finer details for Authors on how to integrate penetration or use the framework, as well as all known variables (very detailed) that can be customize or tweaked (and the consequences of doing so), and further additional comments on interactions, how damage works and scales, limitations, and suggestions: Real Time Cover Penetration Framework: Explanation and Variables Endorse if you found it helpful or interesting!
Updates
[See changelogs] v0.3-Beta release is "done" and will not be updated pending further research and or feedback/bug reports. The Article is complete and contains the results of several tests of practical importance. Further future surface testing to determine cause of occasional deflection (does not appear to be linked to Collision Layers, might be angle of incidence or incline of surface), I require manpower assistance. Might add more templates (in addition to the existing templates) over time, for ease of use. Will probably work on a patch for Combined Arms in general.
If you identify a location with unusual deflection, kindly make a bug report describing the location and surface you were shooting.
Optional Files:
- 50 Cal Penetration Demonstration: Adds Real Time Cover Penetration to anything firing .50 Cal. Uses the Framework as Master. Basic demonstration of framework implementation made using the existing template Penetrators. COMPATIBILITY WARNING: Changes had to be made to Vanilla .50 Cal Ammunition to add a new .50 Cal Projectile. This prevents penetration from being applied to too many weapons, as several types of Ammunition including Vanilla .50 Cal use the same "AssaultRifleProjectile". Does 120 ballistic damage after penetration (with knockdown), regardless of whether the .50 round was fired from a pipegun or Nova's M82.
- 50 Cal Spalling Demonstration: Almost identical to the 50 Cal Penetration Demonstration (SAME COMPATIBILITY), except that the template Spalling Effect is applied rather than the normal Penetration Effect (which continues in a straight line). Pick only one of the 50 Cal demonstrations at a time. Showcases the application of the Spalling Effect and demonstrates the potential for variety. Attempts to simulate a material spalling effect caused by high energy projectiles, which might be considered more realistic/fun compared to simple penetration. Impacts generate spray of moderate damage Spalls which are flung out from the back of the surface hit, distributed randomly in a wide cone. Targets close to the point of impact take multiple Spalls and invariably die, but if allowed to travel, the Spalls can hit a group of enemies hiding behind the same cover. Compared to regular penetration (which is the same regardless of whether the surface hit is close to the shooter or the enemy), here, distance to cover becomes a factor as the initial 50 Cal projectile stops on the first surface hit, and the damaging cone is only of a medium range.
- Patching Projectiles with Existing Explosion Demonstration (Wasteland Ballistics): Requires Wasteland Ballistics. Functional in-game but not intended to be playable (no compatibility checks were done - meant as reference material for FO4Edit). Basic demonstration of framework implementation made using modified templates. Demonstration on how to forward existing (1) ballistics data; (2) projectile appearance; and (3) projectile effects into the Penetrator Projectile. Also demonstrates how to merge/patch Projectiles with pre-existing Explosions. Changes Explosions for Gauss, 44, 45-70, 308, 5.56, 7.62, 50 Cal. Projectiles, effects, and creativity originally by Hedieded.
- Combined Arms High-Penetration Ammo Plugin: Requires Combined Arms - Modern Weapon Pack, which inspired this entire endeavour. Small plugin that fixes the High Penetration Ammo-Type
that is uniquely available to the AKM. In the original mod, this Ammo-Type is unique because it is the only Ammo-Type that passes through cover (other AP rounds simply boast about their DR penetration). However, this came at the cost of removing environmental interaction. This plugin makes the High Penetration Ammo-Type function on the principles of this Framework, thus enabling it to visually impact cover. [Notably, the original High Penetration Ammo actually applied a 15 damage Explosion on impact, of the same type used by the SPAS-12's Frag Rounds, the AKM's HE Rounds, and the M82's SALVO, MIRV Ammo. I have integrated this effect faithfully, but the resulting damage is somewhat higher than what the description of theAKM'sHigh Penetration Ammo would suggest.]. Original work made by the Combined Arms team. - Also added tiny baby 9x39mm Plugin. Requires Combined Arms - Modern Weapon Pack. Modifies the 9x39 Ammunition record as well as the barrel OMODs for the AS Val added by Combined Arms to spawn a new 9x39Projectile which can penetrate [Conflicts with Dank's WPIP or WPIP Redux as he modifies the ammo to give it weight and name, easy to fix in xEdit - forward the changes into the last/lowest plugin].
- Gepard GM6 Lynx Plugin: Requires Gepard GM6 Lynx by Adshield. Adds penetration only to the GM6 via OverrideProjectile property added to the various receivers. Damage-after-penetration scales with the damage of the receiver (about half of the initial damage).
Thanks JuiceHead!
Background
Some existing workarounds (directly setting collision layers for fired projectiles) were unsatisfactory due to the consequential lack of interaction between the projectile and the environment: the rounds pass clean through anything without leaving even a bullet decal. For example, see the High Penetration rounds for the AKM in NovaFinch's Combined Arms - Modern Weapon Pack, which initiated and inspired this entire project (Nova's mod is fantastic). This framework has resolved this issue (subject to some caveats), thus the initial surface will display a bullet impact effect and decal for maximum immersion.
I am predominantly a player rather than a modder. Due to my lack of FO4Edit/Creation Kit knowledge, this framework was developed by brute force testing of variables and might be criticized for being unrefined/rudimentary. I invite any pointers. Nevertheless, as there is nothing that currently does this, and because I spent quite a bit of time on this, I have decided to release it for testing. On the upside, I have no idea what scripts are or how to make them, therefore this framework does not involve any scripts (which I hear are performance intensive).
Credits
Made using FO4Edit, kudos to the xEdit team.