Installation & Configuration - PhilippVidal/Breachingcharge GitHub Wiki
Installation
- Subscribe to the Breachingcharge mod on the steam workshop.
- Copy the folder @Breachingcharge from the downloaded files into the root folder of your DayZ server.
- Copy the bikey from the key folder into the key folder of your server.
- 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:...)
- Start the server once with the mod loaded, this will create a
BreachingCharge
folder in your server's profile directory that contains a file calledbreachingcharge.json
- 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_Door_T1
BBP_BDoor_T1
BBP_BDoor_T2_Door_T1
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)