Realistic Driving Terrains REWRITE

Servers admins, Units leaders and selective players that like to enhance realism and add a layer of difficulty for the scenarios:
- Better restrict movement around rough topographic areas of the map;
- Stop players from metagaming, like crossing rivers or shallows with no consequences;
- Make "reckless" driving (much) more punishable, via customizable damage coeficients for each terrain.
All original features are deeply customizable, as many others were added, via CBA Options.
- Added a 4×4 Traction System;
- Rewritten Stuck System;
- Rewritten Slope System;
- Added Vehicle/Surface whitelist/blacklist for Bump, Damage and Stuck scripts;
- Added 3 Custom Surfaces Levels for Bump and Damage scripts;
- Added an optional "rainning system" that affects ‘Stuck’.
- Performance and General Improvements.
Basically, the system works decreasing the vehicle’s mass, acording to terrain surface type & slope angle, to simulate a stronger ‘torque’, working alongside the rewritten Slope System.
It also enhances de equally rewritten Stuck System, adding variety and immersion to it, but one is not dependable from other.
— Automatically enabled for Tracked and APCs;
— Manual "4×4 Gear" available (action button) for off-road types and MRAP variants Wheeled vics;
— Compatibility CBA option (‘array box’ type) to insert ANY other vics that eventually may not be recognized, or disired to, adding the manual 4×4 gear for those.
The system has been almost rewritten from scratch, as the original was a experimental feature…
— Stucks are NOT temporary anymore, and are persistant on scenario/MP, as there are now immersive and variables ways to reverse it:
- Dig your way out of it;
- With realism/difficulty features like ‘ACE Entrenching Tool required’ (IF using ACE only), or ‘no digging when on water’
- Tow with any other vic;
- Via ANY towing mod out there that uses the rope system, including ACE’s, when assisting with any "LandVehicle" family classname
- Sling load with air assets that also use the rope system.
- Including automated mods like ‘Simplex Support System’, when assisting with any "Air" family classname assets
— 4×4 System influence:
- Wheeled Vics with the system ON, have 3x lesser chance to get bogged down (main coeficient customizable via CBA option);
— Tracked Vics have 4x less chance (independent of 4×4 system);
— Various customizations available via CBA;
— Diferent Stuck coeherent coeficients for each soft surface type (marsh, softmud, softsandy, slippery snow, thick soft snow, water). System is now more punitive, for it’s true purpose.
— Added animations, sounds, and visual stuck axis irregularity for immersion.
— Added an optional full "Rain system" which makes wet terrains increase their ‘Stuck’ chance:
- Customizable rain stuck increase factor (by default 20%);
- Optional ‘Heavy rain timer’ that will soften harder terrains, making them ‘wet and boggy’ too;
- Customizable ‘Wet to Dry" terrain worn off time, after it stops rainning;
- Optional Visual RainFXs (performance friendly, spawned locally):
- – Rain droplets on surfaces around the player, as well as on the player’s body, weapon, goggles on 1st person, and vehicle windshield when inside;
- – Water puddles, spawned in distances proportionals to player speed, which also sinalizes if terrain is still "wet" after rain stops, during a customizable time;
- – Customizable minimum FPS to spawn these effects;
Working alongside with the 4×4 System (or not, if preferred), the system now applies diferent mass values for the vehicle, as the terrain angle changes on real time, as well as better recognizing terrains and water surfaces than before:
— When climbing steeper hills, vehicles that just can’t get enought torque, will be able to, when the traction system is ON, as well as having better controlled descents (The original system, which increases mass as steeper the slope, still keeps working in paralel, adding to that)
— To counter-balance, at higher speeds and leveled, 4×4 system "holds" down the vehicle a bit due to wheels traction;
— Vehicles get more drag when driving over water.
— Performance and MP friendly:
- No server overload;
- Multiple Event Handlers to trigger scripts (with double-spawn inhibitor) and make sure it’s ran on every situation:
– MP Vehicle Locality change;
– Unit GetIn;
– Engine On;
– Switched Seats. - Scripts are only spawned on the first client who completes the requirements below (and will continue running only until these are still filled, vehicle is destroyed, or the client disconnects):
– Vehicle Engine is On;
– Any player in the vehicle (wheter the driver is AI or not); - Needs to be loaded on BOTH server and client
— No dependencies other than CBA;
— EVERY vehicle from "Tank_F" and "Car_F" family classnames is compatible with all scripts, even modded ones.
— Better organized and UI friendly CBA options;
— Test mode/Debug available mid-game, via CBA Options, now automatically copies to clipboard the surface from players current position, as well vehicle classname (when inside one), in order to help setting customizable options.
— All other original compatibility mods, like the RHS and 3CB compats, still work with this one, and it’s best to know that they "only" add the ‘friction parameter’ function.
— Arma issues, not the mod’s:
- While stucked, IF turning ON vehicle engine, will rotate the vic 100º clockwise due to attachment;
- When attaching/dettaching ropes, vehicle may "teleport" a few inches around.
- Stucks that happen in steeper slopes (above default coeficient) MAY cause physics to go crazy when unstucking or towing;
- There is already a safety feature that disables collision between the vic and units around, during these events
— IF any script/system isn’t running (maybe because the script "owner" left the vehicle), just get in, turn off/on the engine, or change seats so they can run up again!
— Check Supported Maps thread for terrains compatibility;
- Doesn’t necessarily means the terrain won’t work: often many surface types are the same across various scenarios
— Requests / Suggestions will be taken on REQUESTS thread below;