Installation & Configuration - PhilippVidal/Breachingcharge GitHub Wiki

Installation

  1. Subscribe to the Breachingcharge mod on the steam workshop.
  2. Copy the folder @Breachingcharge from the downloaded files into the root folder of your DayZ server.
  3. Copy the bikey from the key folder into the key folder of your server.
  4. Load the mod on your server. How this is done depends on how you are hosting your server, if you are using a .bat file or similar you can add @Breachingcharge to the mod list (-mod:...)
  5. Start the server once with the mod loaded, this will create a BreachingCharge folder in your server's profile directory that contains a file called breachingcharge.json
  6. Edit this file to adjust it to your server and the mods you are running. (Note that the settings file always has to be called breachingcharge.json, otherwise the mod will not find it and create a new one on server start-up)

Configuration

How much damage the charges do, which objects they can be placed on, how long it takes for them to detonate and several other aspects of the mod can be adjusted in the json file. An explanation for the values inside the json and multiple example jsons can be found under @Breachingcharge/Templates/or here.

To make other objects destroyable with the breachingcharges you have to add entries for them to the json file. For a few mods there are special entries that have to be used (e.g., BBP), which can be found in the Templates folder mentioned above. If there are no special entries listed the classname can be used for basic functionality. To enable features like partial destruction on unsupported objects requires a bit of scripting.

The breachingcharge mod mainly consists of old code that needs to be rewritten at some point, a lot of the functionality is very specific and not easily generalizable (e.g., the extra code required to fully support custom objects). As long as the objects you want to raid are inherited from the BaseBuildingBase class, it might be a better idea to use the MoreExplosives mod instead.

Json Explanation

Setting Explanation
CreateLogs = [bool] Should logs be created?
EnableExperimentalPlacing = [bool] and ExperimentalPlacingRaycastDistance = [float] Should be set to 1 for most people, it's a different (better) way for the mod to figure out where to place the charges on the object the player is aiming at.

Charge Settings

These settings are used for each different charge type.

Setting Explanation
Classname = [string] Classname of the charge these settings apply to
DamageToObjects = [integer] How much damage is dealt to objects hit by this charge?
DamageToDestroyableObjectsRadius = [float] How big is the radius (in meters) in which objects that can be destroyed by this charge type can be hit?
VerticalDistanceModeObjects = [integer] Selected mode for vertical distance checks, 0 = No vertical distance checks, 1 = distance from charge, 2 = distance from charge target, 3 = checks both distances
MaxVerticalDistanceObjects = [float] What is the maximum vertical distance an object can have to still be hit by the explosion?
MaxDamageToPlayers = [float] What is the maximum damage dealt to players?
MinDamageToPlayers = [float] What is the minimum damage dealt to players?
DamageToPlayersRadius = [float] In what range can players be hit by the explosion?
MaxDamageToPlayersRadius = [float] In what range will the maximum damage be dealt to players?
MaxVerticalDistancePlayers = [float] Same as for objects above
OnlyDestroyLocks = [bool] Should this charge only be able to destroy locks?
DeleteObjectsDirectly = [bool] Should this charge just delete objects completely?
DestroyLocksFirst = [bool] Should this charge delete locks first and only damage objects directly when there is no lock present?
ToolDamageOnDefuse = [float] Damage dealt to tools used to defuse this charge
DestroyOtherCharges = [bool] Delete other charges in the radius when this charge blows up
AutomaticallyArm = [bool] Automatically arm the charge when placing is finished
TimeToPlant = [float] Seconds to plant
TimeToExplode = [float] Seconds to explode once armed
TimeToDefuse = [float] Seconds to defuse while active
LightBrightness = [float] Brightness of the attached light
LightRadius = [float] Radius of the attached light
LightColorStart = [float3], LightColorHalfway = [float3], LightColorEnd = [float3] Lightcolors at different points during the timer countdown
BeepingSoundSet = [string] Soundset for beeping
ExplosionSoundSet = [string] Soundset for explosion
DefuseTools = [string array] Tools that can be used to defuse the charge (use Unarmed for no tool)

Object Tiers/Categories

Tiers are essentially just categories that can be assigned to an object entry and hold the health value and accepted charge types for easier editing.

Setting Explanation
Name = [string] Name of the Tier/Category
Health = [integer] How much health does an object of this category have?
AcceptedChargeTypes = [string array] What charges can be placed on objects of this category?

Destroyable Objects

Entries in this section define which objects are raidable with the breachingcharges. Each entry must have a Tier/Category assigned to it from which it retrieves its values. For a few mods special entries are needed, if the mod is not directly supported the classname of the object can be used as an entry instead. The special entries for supported mods can be found in the Templates folder. These entries refer to the current building state of the object, not the specific parts of the object themselves! Generally speaking, the naming scheme for these entries is Classname followed by identifiers for the parts that are curently build on this object. For example the entries for a big door from the BBP mod (Classname BBP_BDoor) are the following:

"BBP_BDoor_Frame",         //Just the frame is build 
"BBP_BDoor_Frame_Door_T1", //The Frame and a Tier1 door is build
"BBP_BDoor_Frame_Door_T2", //Frame + T2 door
"BBP_BDoor_Frame_Door_T3", //Frame + T3 door
"BBP_BDoor_T1",            //Tier1 wall part is build, no door though
"BBP_BDoor_T1_Door_T1",    //T1 wall part is build and a Tier1 door
"BBP_BDoor_T1_Door_T2",    //T1 wall part + T2 door
"BBP_BDoor_T1_Door_T3",    //T1 wall part + T3 door
"BBP_BDoor_T2",
"BBP_BDoor_T2_Door_T1",
"BBP_BDoor_T2_Door_T2",
"BBP_BDoor_T2_Door_T3",
"BBP_BDoor_T3",
"BBP_BDoor_T3_Door_T1",
"BBP_BDoor_T3_Door_T2",
"BBP_BDoor_T3_Door_T3"

Here are some screenshots of a few different entries as reference:

BBP_BDoor_Frame
BBP_BDoor_Frame

BBP_BDoor_Frame_Door_T1
BBP_BDoor_Frame_Door_T1

BBP_BDoor_T1
BBP_BDoor_T1

BBP_BDoor_T2_Door_T1
BBP_BDoor_T2_Door_T1

BBP_BDoor_T2_Door_T2
BBP_BDoor_T2_Door_T2

If you want to make a new type compatible with this system you have to add the different states in the code (this can be done by modding the class HDSN_DestructionManager and overriding the GetWallType function)