using System;
using System.CodeDom.Compiler;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using AdditiveDatablockLoader.Constructors;
using AdditiveDatablockLoader.Handlers;
using AdditiveDatablockLoader.Util;
using BepInEx;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using EWC.API;
using GTFO.API;
using GameData;
using Il2CppSystem;
using Localization;
using Microsoft.CodeAnalysis;
using Newtonsoft.Json;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("AdditiveDatablockLoader")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+gitf0c1c8e-master.f0c1c8e8631370db224a909b1b78b148edd61d51")]
[assembly: AssemblyProduct("AdditiveDatablockLoader")]
[assembly: AssemblyTitle("AdditiveDatablockLoader")]
[assembly: TargetPlatform("Windows7.0")]
[assembly: SupportedOSPlatform("Windows7.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace AdditiveDatablockLoader
{
[BepInPlugin("AdditiveDatablockLoader.GUID", "AdditiveDatablockLoader", "0.0.2")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
internal class EntryPoint : BasePlugin
{
public override void Load()
{
EventAPI.OnManagersSetup += OnGameLoaded;
}
internal void OnGameLoaded()
{
JsonHandler.SetupJson();
}
}
internal static class Logger
{
private static readonly ManualLogSource _Logger;
static Logger()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
_Logger = new ManualLogSource("AdditiveDatablockLoader");
Logger.Sources.Add((ILogSource)(object)_Logger);
}
private static string Format(object msg)
{
return msg.ToString();
}
public static void Info(BepInExInfoLogInterpolatedStringHandler handler)
{
_Logger.LogInfo(handler);
}
public static void Info(string str)
{
_Logger.LogMessage((object)str);
}
public static void Info(object data)
{
_Logger.LogMessage((object)Format(data));
}
public static void Debug(BepInExDebugLogInterpolatedStringHandler handler)
{
_Logger.LogDebug(handler);
}
public static void Debug(string str)
{
_Logger.LogDebug((object)str);
}
public static void Debug(object data)
{
_Logger.LogDebug((object)Format(data));
}
public static void Error(BepInExErrorLogInterpolatedStringHandler handler)
{
_Logger.LogError(handler);
}
public static void Error(string str)
{
_Logger.LogError((object)str);
}
public static void Error(object data)
{
_Logger.LogError((object)Format(data));
}
public static void Fatal(BepInExFatalLogInterpolatedStringHandler handler)
{
_Logger.LogFatal(handler);
}
public static void Fatal(string str)
{
_Logger.LogFatal((object)str);
}
public static void Fatal(object data)
{
_Logger.LogFatal((object)Format(data));
}
public static void Warn(BepInExWarningLogInterpolatedStringHandler handler)
{
_Logger.LogWarning(handler);
}
public static void Warn(string str)
{
_Logger.LogWarning((object)str);
}
public static void Warn(object data)
{
_Logger.LogWarning((object)Format(data));
}
[Conditional("DEBUG")]
public static void DebugOnly(object data)
{
}
}
[GeneratedCode("VersionInfoGenerator", "2.1.3+git35c0c2a-master")]
[CompilerGenerated]
internal static class VersionInfo
{
public const string RootNamespace = "AdditiveDatablockLoader";
public const string Version = "1.0.0";
public const string VersionPrerelease = null;
public const string VersionMetadata = "gitf0c1c8e-master";
public const string SemVer = "1.0.0+gitf0c1c8e-master";
public const string GitRevShort = "f0c1c8e";
public const string GitRevLong = "f0c1c8e8631370db224a909b1b78b148edd61d51";
public const string GitBranch = "master";
public const string GitTag = null;
public const int GitCommitsSinceTag = 0;
public const bool GitIsDirty = false;
}
}
namespace AdditiveDatablockLoader.Util
{
internal class JsonHandler
{
private static string ADBL_CustomPath;
private static readonly JsonSerializerSettings _settings = CreateSettings();
internal static void SetupJson()
{
ADBL_CustomPath = Path.Combine(Paths.BepInExRootPath, "GameData", "AdditiveDatablocks");
if (!Directory.Exists(ADBL_CustomPath))
{
Directory.CreateDirectory(ADBL_CustomPath);
}
Log.Info("Loading additive datablocks");
EnsureAndLoadDatablocks<PlayerOfflineGearDataBlock>("PlayerOfflineDB", Constructor.PlayerOfflineGearDataBlockTemplate);
EnsureAndLoadDatablocks<GearCategoryDataBlock>("GearCategoryDB", Constructor.GearCategoryDatablockTemplate);
EnsureAndLoadDatablocks<ArchetypeDataBlock>("ArchetypeDB", Constructor.ArchetypeDatablockTemplate);
EnsureAndLoadDatablocks<ItemDataBlock>("ItemDB", Constructor.ItemDatablockTemplate);
EnsureAndLoadDatablocks<ItemFPSSettingsDataBlock>("ItemFPSDB", Constructor.ItemFPSDatablockTemplate);
EnsureAndLoadDatablocks<RecoilDataBlock>("RecoilDB", Constructor.RecoilDatablockTemplate);
EnsureAndLoadDatablocks<GearFrontPartDataBlock>("GearFrontPartDB", Constructor.GearFrontPartDatablockTemplate);
EnsureAndLoadDatablocks<GearReceiverPartDataBlock>("GearReceiverPartDB", Constructor.GearReceiverPartDatablockTemplate);
EnsureAndLoadDatablocks<GearStockPartDataBlock>("GearStockPartDB", Constructor.GearStockPartDatablockTemplate);
EnsureAndLoadDatablocks<GearMagPartDataBlock>("GearMagPartDB", Constructor.GearMagPartDatablockTemplate);
EnsureAndLoadDatablocks<GearFlashlightPartDataBlock>("GearFlashlightPartDB", Constructor.GearFlashlightPartDatablockTemplate);
EnsureAndLoadDatablocks<GearSightPartDataBlock>("GearSightPartDB", Constructor.GearSightPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolMainPartDataBlock>("GearToolMainPartDB", Constructor.GearToolMainPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolGripPartDataBlock>("GearToolGripPartDB", Constructor.GearToolGripPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolDeliveryPartDataBlock>("GearToolDelivaryPartDB", Constructor.GearToolDelivaryPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolPayloadPartDataBlock>("GearToolPayloadPartDB", Constructor.GearToolPayloadPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolTargetingPartDataBlock>("GearToolTargetingPartDB", Constructor.GearToolTargetingPartDatablockTemplate);
EnsureAndLoadDatablocks<GearToolScreenPartDataBlock>("GearToolScreenPartDB", Constructor.GearToolScreenPartDatablockTemplate);
EnsureAndLoadDatablocks<GearMeleeHeadPartDataBlock>("GearMeleeHeadPartDB", Constructor.GearMeleeHeadPartDatablockTemplate);
EnsureAndLoadDatablocks<GearMeleeNeckPartDataBlock>("GearMeleeNeckPartDB", Constructor.GearMeleeNeckPartDatablockTemplate);
EnsureAndLoadDatablocks<GearMeleeHandlePartDataBlock>("GearMeleeHandlePartDB", Constructor.GearMeleeHandlePartDatablockTemplate);
EnsureAndLoadDatablocks<GearMeleePommelPartDataBlock>("GearMeleePommelPartDB", Constructor.GearMeleePommelPartDatablockTemplate);
EnsureAndLoadDatablocks<MeleeAnimationSetDataBlock>("MeleeAnimationDB", Constructor.MeleeAnimationDatablockTemplate);
EnsureAndLoadDatablocks<MeleeArchetypeDataBlock>("MeleeArchetypeDB", Constructor.MeleeArchetypeDatablockTemplate);
EnsureAndLoadDatablocks<WeaponMuzzleFlashDataBlock>("WeaponMuzzleFlashDB", Constructor.WeaponMuzzleFlashDatablockTemplate);
EnsureAndLoadDatablocks<WeaponShellCasingDataBlock>("WeaponShellCasingDB", Constructor.WeaponShellCasingDatablockTemplate);
EnsureAndLoadDatablocks<WeaponAudioDataBlock>("WeaponAudioDB", Constructor.WeaponAudioDatablockTemplate);
EnsureAndLoadDatablocks<MiningMarkerDataBlock>("MiningMarkerDB", Constructor.MiningMarkerDatablockTemplate);
EnsureAndLoadDatablocks<TechMarkerDataBlock>("TechMarkerDB", Constructor.TechMarkerDatablockTemplate);
EnsureAndLoadDatablocks<ServiceMarkerDataBlock>("ServiceMarkerDB", Constructor.ServiceMarkerDatablockTemplate);
InteropAPI.ExecuteWhenPluginExists("Dinorush.ExtraWeaponCustomization", (Action<PluginInfo>)delegate
{
LoadEWCBlocks();
});
}
private static void LoadEWCBlocks()
{
Log.Info("EWC Detected loading additive EWC blocks");
string text = Path.Combine(ADBL_CustomPath, "ExtraWeaponCustomization");
if (!Directory.Exists(text))
{
Directory.CreateDirectory(text);
File.WriteAllText(text + "/ReadThis.txt", "Just copy the default EWC template file as I won't generate it here");
}
DataAPI.ReadDirectory(text, true);
}
private static void EnsureAndLoadDatablocks<T>(string subFolder, string templateFileContents = "") where T : GameDataBlockBase<T>, new()
{
string text = Path.Combine(ADBL_CustomPath, subFolder);
if (!Directory.Exists(text))
{
Directory.CreateDirectory(text);
CreateIfNotReal(text + "/Template.json", new T(), templateFileContents);
}
LoadJsonDatablocks<T>(text);
}
private static void LoadJsonDatablocks<T>(string directory) where T : GameDataBlockBase<T>, new()
{
string[] files = Directory.GetFiles(directory);
if (files.Length == 0)
{
return;
}
string[] array = files;
foreach (string text in array)
{
if (!text.Contains("Template"))
{
AdditiveBlockLoader.TryAddDatablock(Deserialize(text, new T()));
}
}
}
private static T Deserialize<T>(string jsonPath, T data)
{
if (!File.Exists(jsonPath))
{
Log.Error("Tried to load a JSON file that doesn't exist");
return default(T);
}
return JsonConvert.DeserializeObject<T>(File.ReadAllText(jsonPath), _settings);
}
private static void CreateIfNotReal<T>(string jsonPath, T data, string templateFileContents = "")
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Expected O, but got Unknown
if (!File.Exists(jsonPath))
{
if (!string.IsNullOrEmpty(templateFileContents))
{
File.WriteAllText(jsonPath, templateFileContents);
return;
}
string contents = JsonConvert.SerializeObject((Object)(object)data, _settings);
File.WriteAllText(jsonPath, contents);
}
}
private static JsonSerializerSettings CreateSettings()
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Expected O, but got Unknown
return new JsonSerializerSettings
{
Formatting = (Formatting)1,
ReferenceLoopHandling = (ReferenceLoopHandling)1
};
}
public static void DoesTheBlockExist()
{
ArchetypeDataBlock block = GameDataBlockBase<ArchetypeDataBlock>.GetBlock(100002u);
if (block != null)
{
Log.Info("Block does exist public name: " + LocalizedText.op_Implicit(block.PublicName));
}
else
{
Log.Error("Block does not exist something is fucked");
}
}
}
internal static class Log
{
private static readonly ManualLogSource _Logger;
static Log()
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
_Logger = new ManualLogSource("AdditiveDatablockLoader");
Logger.Sources.Add((ILogSource)(object)_Logger);
}
private static string Format(object msg)
{
return msg.ToString();
}
public static void Info(BepInExInfoLogInterpolatedStringHandler handler)
{
_Logger.LogInfo(handler);
}
public static void Info(string str)
{
_Logger.LogMessage((object)str);
}
public static void Info(object data)
{
_Logger.LogMessage((object)Format(data));
}
public static void Debug(BepInExDebugLogInterpolatedStringHandler handler)
{
_Logger.LogDebug(handler);
}
public static void Debug(string str)
{
_Logger.LogDebug((object)str);
}
public static void Debug(object data)
{
_Logger.LogDebug((object)Format(data));
}
public static void Error(BepInExErrorLogInterpolatedStringHandler handler)
{
_Logger.LogError(handler);
}
public static void Error(string str)
{
_Logger.LogError((object)str);
}
public static void Error(object data)
{
_Logger.LogError((object)Format(data));
}
public static void Fatal(BepInExFatalLogInterpolatedStringHandler handler)
{
_Logger.LogFatal(handler);
}
public static void Fatal(string str)
{
_Logger.LogFatal((object)str);
}
public static void Fatal(object data)
{
_Logger.LogFatal((object)Format(data));
}
public static void Warn(BepInExWarningLogInterpolatedStringHandler handler)
{
_Logger.LogWarning(handler);
}
public static void Warn(string str)
{
_Logger.LogWarning((object)str);
}
public static void Warn(object data)
{
_Logger.LogWarning((object)Format(data));
}
}
}
namespace AdditiveDatablockLoader.Handlers
{
internal class AdditiveBlockLoader
{
public static void TryAddDatablock<T>(T block) where T : GameDataBlockBase<T>
{
if (!GameDataBlockBase<T>.s_blockByID.ContainsKey(((GameDataBlockBase<T>)block).persistentID))
{
GameDataBlockBase<T>.AddBlock(block, -1);
}
else
{
Log.Error("Tried adding block that does not exist \nblock name: " + ((GameDataBlockBase<T>)block).name);
}
}
}
}
namespace AdditiveDatablockLoader.Constructors
{
internal static class Constructor
{
public static string ArchetypeDatablockTemplate = "{\r\n \"PublicName\": \"Template\",\r\n \"Description\": \"Template\",\r\n \"FireMode\": 0,\r\n \"RecoilDataID\": 12,\r\n \"DamageBoosterEffect\": 53,\r\n \"Damage\": 3.0,\r\n \"DamageFalloff\": {\r\n \"x\": 25.0,\r\n \"y\": 100.0\r\n },\r\n \"StaggerDamageMulti\": 2.0,\r\n \"PrecisionDamageMulti\": 1.0,\r\n \"DefaultClipSize\": 25,\r\n \"DefaultReloadTime\": 2.0,\r\n \"CostOfBullet\": 2.6,\r\n \"ShotDelay\": 0.12,\r\n \"ShellCasingSize\": 1.0,\r\n \"ShellCasingSpeedRange\": {\r\n \"x\": 3.0,\r\n \"y\": 5.0\r\n },\r\n \"PiercingBullets\": false,\r\n \"PiercingDamageCountLimit\": 5,\r\n \"HipFireSpread\": 1.0,\r\n \"AimSpread\": 0.0,\r\n \"EquipTransitionTime\": 0.35,\r\n \"EquipSequence\": [\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 0,\r\n \"StringData\": \"Front_Rifle_equip_weaponmovement\"\r\n },\r\n {\r\n \"TriggerTime\": 2.0,\r\n \"Type\": 7\r\n }\r\n ],\r\n \"AimTransitionTime\": 0.25,\r\n \"AimSequence\": [],\r\n \"BurstDelay\": 0.0,\r\n \"BurstShotCount\": 0,\r\n \"ShotgunBulletCount\": 0,\r\n \"ShotgunConeSize\": 0,\r\n \"ShotgunBulletSpread\": 0,\r\n \"SpecialChargetupTime\": 0.0,\r\n \"SpecialCooldownTime\": 0.0,\r\n \"SpecialSemiBurstCountTimeout\": 0.0,\r\n \"Sentry_StartFireDelay\": 1.0,\r\n \"Sentry_RotationSpeed\": 4.0,\r\n \"Sentry_DetectionMaxRange\": 25.0,\r\n \"Sentry_DetectionMaxAngle\": 30.0,\r\n \"Sentry_FireTowardsTargetInsteadOfForward\": false,\r\n \"Sentry_ForceAimTowardsBody\": false,\r\n \"Sentry_LongRangeThreshold\": 999.0,\r\n \"Sentry_ShortRangeThreshold\": 0.0,\r\n \"Sentry_LegacyEnemyDetection\": true,\r\n \"Sentry_FireTagOnly\": false,\r\n \"Sentry_PrioTag\": false,\r\n \"Sentry_StartFireDelayTagMulti\": 1.0,\r\n \"Sentry_RotationSpeedTagMulti\": 1.0,\r\n \"Sentry_DamageTagMulti\": 1.0,\r\n \"Sentry_StaggerDamageTagMulti\": 1.0,\r\n \"Sentry_CostOfBulletTagMulti\": 1.0,\r\n \"Sentry_ShotDelayTagMulti\": 1.0,\r\n \"name\": \"Archetype_Template\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 100001\r\n}";
public static string GearCategoryDatablockTemplate = "{\r\n \"PublicName\": 0,\r\n \"Description\": 0,\r\n \"BaseItem\": 108,\r\n \"HUDIcon\": \"\",\r\n \"IconRotationOffset\": 0.0,\r\n \"IconZoomOffset\": 0.0,\r\n \"FPSArmPoseName\": \"\",\r\n \"ThirdPersonFullbodyMovement\": 0,\r\n \"SemiArchetype\": 1,\r\n \"BurstArchetype\": 3,\r\n \"AutoArchetype\": 5,\r\n \"SemiBurstArchetype\": 16,\r\n \"MeleeArchetype\": 0,\r\n \"PartAlignPriority\": [],\r\n \"name\": \"Template\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 100001\r\n}";
public static string GearFlashlightDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Flashlights/Flashlight_A.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 70,\r\n \"BundleShard\": 7\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Flashlight_Template\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 100001\r\n}";
public static string GearFrontPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/Death_Sentence_II_Gear/Front/Front_M134.prefab\",\r\n \"Children\": [],\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 20,\r\n \"BundleShard\": 3\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 0,\r\n \"AlignName\": \"Front_M\"\r\n },\r\n {\r\n \"AlignType\": 1,\r\n \"AlignName\": \"Front_SE\"\r\n },\r\n {\r\n \"AlignType\": 5,\r\n \"AlignName\": \"Front_Flash\"\r\n },\r\n {\r\n \"AlignType\": 8,\r\n \"AlignName\": \"RightHand\"\r\n },\r\n {\r\n \"AlignType\": 7,\r\n \"AlignName\": \"LeftHand\"\r\n }\r\n ],\r\n \"FireSequence\": [\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 1,\r\n \"StringData\": \"Front_M134_01_Fire\"\r\n },\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 11\r\n },\r\n {\r\n \"TriggerTime\": 0.06,\r\n \"Type\": 7\r\n }\r\n ],\r\n \"ReloadSequence\": [\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 0,\r\n \"StringData\": \"Front_Precision_2_reload\"\r\n },\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 9,\r\n \"StringData\": \"Front_Precision_2_reload\"\r\n },\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 2,\r\n \"StringData\": \"Front_Precision_2_reload\"\r\n },\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 1,\r\n \"StringData\": \"Front_Precision_2_reload\"\r\n },\r\n {\r\n \"TriggerTime\": 0.0,\r\n \"Type\": 5,\r\n \"StringData\": \"cannon_reload_foley_move\"\r\n },\r\n {\r\n \"TriggerTime\": 0.1,\r\n \"Type\": 5,\r\n \"StringData\": \"generic_reload_foley_quick\"\r\n },\r\n {\r\n \"TriggerTime\": 0.4,\r\n \"Type\": 5,\r\n \"StringData\": \"cannon_reload_mag_out\"\r\n },\r\n {\r\n \"TriggerTime\": 0.7,\r\n \"Type\": 5,\r\n \"StringData\": \"cannon_reload_grab_mag\"\r\n },\r\n {\r\n \"TriggerTime\": 1.0,\r\n \"Type\": 5,\r\n \"StringData\": \"carbine_mag_bump\"\r\n },\r\n {\r\n \"TriggerTime\": 1.3,\r\n \"Type\": 5,\r\n \"StringData\": \"cannon_reload_mag_in\"\r\n },\r\n {\r\n \"TriggerTime\": 1.35,\r\n \"Type\": 6\r\n },\r\n {\r\n \"TriggerTime\": 1.8,\r\n \"Type\": 5,\r\n \"StringData\": \"carbine_reload_5_pull_slide\"\r\n },\r\n {\r\n \"TriggerTime\": 1.9,\r\n \"Type\": 5,\r\n \"StringData\": \"carbine_reload_5_release_slide\"\r\n },\r\n {\r\n \"TriggerTime\": 1.95,\r\n \"Type\": 5,\r\n \"StringData\": \"generic_reload_grab_heavy_weapon_soft\"\r\n },\r\n {\r\n \"TriggerTime\": 2.0,\r\n \"Type\": 7\r\n }\r\n ],\r\n \"name\": \"Front_M134\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 100001\r\n }";
public static string GearMagPartDatablockTemplate = "{\r\n \"ClipSizeMultiplier\": 1.0,\r\n \"ReloadTimeMultiplier\": 1.0,\r\n \"ReloadLeftHandGripAnim\": \"\",\r\n \"DropSoundType\": 1,\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Mags/Mag_9mm_20rdns_A.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 60,\r\n \"BundleShard\": 16\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Mag_9mm_20rdns_A\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 100001\r\n}";
public static string PlayerOfflineGearDataBlockTemplate = "{\r\n \"Type\": 1,\r\n \"GearJSON\": \"{\\\"Ver\\\":1,\\\"Name\\\":\\\"Shelling Nano\\\",\\\"Packet\\\":{\\\"Comps\\\":{\\\"Length\\\":15,\\\"a\\\":{\\\"c\\\":1,\\\"v\\\":1},\\\"b\\\":{\\\"c\\\":2,\\\"v\\\":8},\\\"c\\\":{\\\"c\\\":3,\\\"v\\\":108},\\\"d\\\":{\\\"c\\\":4,\\\"v\\\":8},\\\"e\\\":{\\\"c\\\":5,\\\"v\\\":1},\\\"f\\\":{\\\"c\\\":6,\\\"v\\\":1},\\\"g\\\":{\\\"c\\\":7,\\\"v\\\":1},\\\"h\\\":{\\\"c\\\":8,\\\"v\\\":16},\\\"i\\\":{\\\"c\\\":9,\\\"v\\\":15},\\\"j\\\":{\\\"c\\\":10,\\\"v\\\":27},\\\"k\\\":{\\\"c\\\":11,\\\"v\\\":27},\\\"l\\\":{\\\"c\\\":12,\\\"v\\\":45},\\\"m\\\":{\\\"c\\\":19,\\\"v\\\":22},\\\"n\\\":{\\\"c\\\":25,\\\"v\\\":3}},\\\"MatTrans\\\":{\\\"tDecalA\\\":{\\\"position\\\":{\\\"x\\\":-0.098,\\\"y\\\":-0.07,\\\"normalized\\\":{\\\"x\\\":-0.813733459,\\\"y\\\":-0.5812382,\\\"magnitude\\\":1.0,\\\"sqrMagnitude\\\":1.0},\\\"magnitude\\\":0.120432548,\\\"sqrMagnitude\\\":0.014504},\\\"scale\\\":0.05},\\\"tDecalB\\\":{\\\"position\\\":{\\\"x\\\":-0.098,\\\"y\\\":-0.07,\\\"normalized\\\":{\\\"x\\\":-0.813733459,\\\"y\\\":-0.5812382,\\\"magnitude\\\":1.0,\\\"sqrMagnitude\\\":1.0},\\\"magnitude\\\":0.120432548,\\\"sqrMagnitude\\\":0.014504},\\\"scale\\\":0.04},\\\"tPattern\\\":{\\\"position\\\":{\\\"x\\\":-0.09,\\\"y\\\":-0.03,\\\"normalized\\\":{\\\"x\\\":-0.9486833,\\\"y\\\":-0.316227764,\\\"magnitude\\\":1.0,\\\"sqrMagnitude\\\":1.0},\\\"magnitude\\\":0.09486833,\\\"sqrMagnitude\\\":0.009000001},\\\"angle\\\":-90.0,\\\"scale\\\":0.1}},\\\"publicName\\\":{\\\"data\\\":\\\"Pistol Burst\\\"}}}\",\r\n \"name\": \"PistolBurst\",\r\n \"internalEnabled\": false,\r\n \"persistentID\": 67\r\n }";
public static string ItemDatablockTemplate = "{\r\n \"publicName\": \"Collection Case\",\r\n \"LocalizedName\": 0,\r\n \"terminalItemShortName\": \"COLLECTION_CASE\",\r\n \"terminalItemLongName\": 2779390528,\r\n \"addSerialNumberToName\": false,\r\n \"registerInTerminalSystem\": true,\r\n \"DimensionWarpType\": 0,\r\n \"Shard\": 4,\r\n \"inventorySlot\": 8,\r\n \"FPSSettings\": 36,\r\n \"crosshair\": 0,\r\n \"HUDIcon\": \"\",\r\n \"ShowCrosshairWhenAiming\": false,\r\n \"GUIShowAmmoClip\": false,\r\n \"GUIShowAmmoPack\": false,\r\n \"GUIShowAmmoTotalRel\": false,\r\n \"GUIShowAmmoInfinite\": false,\r\n \"canMoveQuick\": false,\r\n \"BlockToolAmmoRefill\": false,\r\n \"ClassAmmoCostFactor\": 1.0,\r\n \"ConsumableAmmoMin\": 0,\r\n \"ConsumableAmmoMax\": 0,\r\n \"audioEventEquip\": \"\",\r\n \"FirstPersonPrefabs\": [\r\n \"Assets/AssetPrefabs/Items/MiscPickups/CarryItemGeneric_FirstPerson.prefab\",\r\n \"Assets/AssetPrefabs/Items/MiscPickups/Sedatives_Case_FirstPerson.prefab\"\r\n ],\r\n \"ThirdPersonPrefabs\": [\r\n \"Assets/AssetPrefabs/Items/MiscPickups/CarryItemGeneric_ThirdPerson.prefab\",\r\n \"Assets/AssetPrefabs/Items/MiscPickups/Sedatives_Case_ThirdPerson.prefab\"\r\n ],\r\n \"PickupPrefabs\": [\r\n \"Assets/AssetPrefabs/Items/MiscPickups/CarryItemGeneric_Pickup.prefab\",\r\n \"Assets/AssetPrefabs/Items/MiscPickups/Sedatives_Case_Pickup.prefab\"\r\n ],\r\n \"InstancePrefabs\": [],\r\n \"EquipTransitionTime\": 0.5,\r\n \"AimTransitionTime\": 0.5,\r\n \"FPSArmsAnim\": \"\",\r\n \"ThirdPersonFullbodyMovementSet\": 0,\r\n \"LeftHandGripAlign\": \"LeftHand\",\r\n \"LeftHandGripAnim\": \"Generator_Cell\",\r\n \"RightHandGripAlign\": \"RightHand\",\r\n \"RightHandGripAnim\": \"Generator_Cell\",\r\n \"SightLookAlign\": \"\",\r\n \"MuzzleAlign\": \"\",\r\n \"BackpackAlign\": \"\",\r\n \"name\": \"Carry_Sedatives_Case\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 173\r\n }";
public static string ItemFPSDatablockTemplate = "{\r\n \"localPosHip\": {\r\n \"x\": 0.08,\r\n \"y\": -0.1,\r\n \"z\": 0.31\r\n },\r\n \"localRotHip\": {\r\n \"x\": 0.0,\r\n \"y\": 0.0,\r\n \"z\": -2.59\r\n },\r\n \"SwayAmount\": 1.0,\r\n \"crouchTiltAngle\": -5.0,\r\n \"localPosRelaxed\": {\r\n \"x\": 0.048,\r\n \"y\": -0.13,\r\n \"z\": 0.4\r\n },\r\n \"localRotRelaxed\": {\r\n \"x\": 8.0,\r\n \"y\": -14.7,\r\n \"z\": -29.3\r\n },\r\n \"localPosZoom\": {\r\n \"x\": 0.0,\r\n \"y\": -0.154,\r\n \"z\": 0.35\r\n },\r\n \"localRotZoom\": {\r\n \"x\": 0.0,\r\n \"y\": 0.0,\r\n \"z\": 0.0\r\n },\r\n \"bodyOffsetLocal\": {\r\n \"x\": 0.0,\r\n \"y\": 0.1,\r\n \"z\": -0.1\r\n },\r\n \"bodyRotationOffsetLocal\": {\r\n \"x\": 0.0,\r\n \"y\": 18.0,\r\n \"z\": 0.0\r\n },\r\n \"ItemCameraFOVDefault\": 35,\r\n \"ItemCameraFOVZoom\": 15,\r\n \"LookCameraFOVZoom\": 53,\r\n \"canAim\": true,\r\n \"onlyStartAimOnPressed\": false,\r\n \"canRelax\": true,\r\n \"customDelayUntilRelax\": 0.0,\r\n \"allowRotToAimPos\": true,\r\n \"rotToAimPosMinDis\": 1.0,\r\n \"transitionToAim\": 1,\r\n \"RecoilAnimation\": 24,\r\n \"IdleAnimation\": 21,\r\n \"WalkAnimation\": 9,\r\n \"RunAnimation\": 15,\r\n \"JumpAnimation\": 7,\r\n \"LandAnimation\": 8,\r\n \"ChargeCancelAnimation\": 0,\r\n \"DofDefault\": {\r\n \"enabled\": true,\r\n \"focusDistance\": 1.0,\r\n \"aperture\": 1.0,\r\n \"focalLength\": 6.0\r\n },\r\n \"DofAim\": {\r\n \"enabled\": true,\r\n \"focusDistance\": 1.0,\r\n \"aperture\": 1.0,\r\n \"focalLength\": 7.6\r\n },\r\n \"name\": \"MachineGun\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 3\r\n }";
public static string RecoilDatablockTemplate = "{\r\n \"power\": {\r\n \"Min\": 0.275,\r\n \"Max\": 0.375\r\n },\r\n \"spring\": 3.5,\r\n \"dampening\": 15.0,\r\n \"hipFireCrosshairSizeDefault\": 60.0,\r\n \"hipFireCrosshairRecoilPop\": 20.0,\r\n \"hipFireCrosshairSizeMax\": 120.0,\r\n \"horizontalScale\": {\r\n \"Min\": 0.3,\r\n \"Max\": -0.6\r\n },\r\n \"verticalScale\": {\r\n \"Min\": 0.4,\r\n \"Max\": 0.5\r\n },\r\n \"directionalSimilarity\": 0.0,\r\n \"worldToViewSpaceBlendHorizontal\": 0.4,\r\n \"worldToViewSpaceBlendVertical\": 0.4,\r\n \"recoilPosImpulse\": {\r\n \"x\": 0.0,\r\n \"y\": 0.0,\r\n \"z\": -0.15\r\n },\r\n \"recoilPosShift\": {\r\n \"x\": 0.0,\r\n \"y\": 0.0,\r\n \"z\": -0.02\r\n },\r\n \"recoilPosShiftWeight\": 1.0,\r\n \"recoilPosStiffness\": 350.0,\r\n \"recoilPosDamping\": 30.0,\r\n \"recoilPosImpulseWeight\": 1.0,\r\n \"recoilCameraPosWeight\": 1.0,\r\n \"recoilAimingWeight\": 2.2,\r\n \"recoilRotImpulse\": {\r\n \"x\": 0.0,\r\n \"y\": 2.0,\r\n \"z\": 5.0\r\n },\r\n \"recoilRotStiffness\": 80.0,\r\n \"recoilRotDamping\": 8.0,\r\n \"recoilRotImpulseWeight\": 200.0,\r\n \"recoilCameraRotWeight\": 1.0,\r\n \"concussionIntensity\": 1.0,\r\n \"concussionFrequency\": 15.0,\r\n \"concussionDuration\": 0.2,\r\n \"name\": \"SMGAuto_v2\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 2\r\n }";
public static string GearReceiverPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Receivers/Receiver_SMG_2.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 30,\r\n \"BundleShard\": 14\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 4,\r\n \"AlignName\": \"Receiver_Sight\"\r\n }\r\n ],\r\n \"FireSequence\": [],\r\n \"name\": \"Receiver_SMG_2\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 6\r\n }";
public static string GearStockPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Stocks/Stock_SMG_1.prefab\",\r\n \"Children\": [],\r\n \"GearCategoryFilter\": 0,\r\n \"RightHandGripAnim\": \"SMG_Front_4_Idle\",\r\n \"AssetBundle\": 40,\r\n \"BundleShard\": 14\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 8,\r\n \"AlignName\": \"RightHand\"\r\n }\r\n ],\r\n \"FireSequence\": [],\r\n \"ReloadSequence\": [],\r\n \"name\": \"Stock_SMG_1\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 5\r\n }";
public static string GearFlashlightPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Flashlights/Flashlight_A.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 70,\r\n \"BundleShard\": 7\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Flashlight_A\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 2\r\n }";
public static string GearSightPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Sights/Sight_17.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 50,\r\n \"BundleShard\": 4\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 6,\r\n \"AlignName\": \"Sight_Align\"\r\n }\r\n ],\r\n \"SightProperties\": {\r\n \"GearFovZoom\": 20,\r\n \"WorldFovZoom\": 41,\r\n \"ZoomSensitivityModifier\": 1.0\r\n },\r\n \"name\": \"Sight_17\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 18\r\n }";
public static string GearToolMainPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Main/Main_Mine_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 80,\r\n \"BundleShard\": 3\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Main_Mine_1\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 12\r\n }";
public static string GearToolGripPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Grip/Grip_2.prefab\",\r\n \"Children\": [],\r\n \"GearCategoryFilter\": 0,\r\n \"LeftHandGripAnim\": \"Tool_Grip_2\",\r\n \"RightHandGripAnim\": \"Tool_Grip_2\",\r\n \"AssetBundle\": 90,\r\n \"BundleShard\": 5\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 7,\r\n \"AlignName\": \"LeftHand\"\r\n },\r\n {\r\n \"AlignType\": 8,\r\n \"AlignName\": \"RightHand\"\r\n }\r\n ],\r\n \"name\": \"Grip_2\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 3\r\n }";
public static string GearToolDelivaryPartDatablockTemplate = "{\r\n \"ModelDataPerType\": {\r\n \"DirectPlacement\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Delivery/Delivery_Bio_Tracker_1.prefab\",\r\n \"Children\": [\r\n \"Assets/Source/Graphics/Gear/ToolParts/delivery/Delivery_Bio_Tracker_1_GripAlign.FBX\"\r\n ],\r\n \"GearCategoryFilter\": 0,\r\n \"LeftHandGripAnim\": \"Delivery_Bio_Tracker_1\",\r\n \"AssetBundle\": 100,\r\n \"BundleShard\": 6\r\n }\r\n },\r\n \"GeneralDatas\": [\r\n {\r\n \"Type\": 0,\r\n \"Data\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Delivery/Delivery_Bio_Tracker_1.prefab\",\r\n \"Children\": [\r\n \"Assets/Source/Graphics/Gear/ToolParts/delivery/Delivery_Bio_Tracker_1_GripAlign.FBX\"\r\n ],\r\n \"GearCategoryFilter\": 0,\r\n \"LeftHandGripAnim\": \"Delivery_Bio_Tracker_1\",\r\n \"AssetBundle\": 100,\r\n \"BundleShard\": 6\r\n }\r\n }\r\n ],\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 15,\r\n \"AlignName\": \"Bio_Tracker_1_Targeting\"\r\n },\r\n {\r\n \"AlignType\": 16,\r\n \"AlignName\": \"Bio_Tracker_1_Screen\"\r\n },\r\n {\r\n \"AlignType\": 7,\r\n \"AlignName\": \"LeftHand\"\r\n }\r\n ],\r\n \"name\": \"Delivery_Bio_Tracker\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 3\r\n }";
public static string GearToolPayloadPartDatablockTemplate = "{\r\n \"ModelDataPerType\": {\r\n \"Glue\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Payload/Payload_Glue_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 110,\r\n \"BundleShard\": 0\r\n },\r\n \"Explosive\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Payload/Payload_Mine_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 110,\r\n \"BundleShard\": 0\r\n }\r\n },\r\n \"GeneralDatas\": [\r\n {\r\n \"Type\": 1,\r\n \"Data\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Payload/Payload_Glue_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 110,\r\n \"BundleShard\": 0\r\n }\r\n },\r\n {\r\n \"Type\": 0,\r\n \"Data\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Payload/Payload_Mine_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 110,\r\n \"BundleShard\": 0\r\n }\r\n }\r\n ],\r\n \"Aligns\": [],\r\n \"name\": \"Payload_a\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 2\r\n }";
public static string GearToolTargetingPartDatablockTemplate = "{\r\n \"ModelDataPerType\": {\r\n \"Alpha\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Targeting/Targeting_2.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 120,\r\n \"BundleShard\": 5\r\n }\r\n },\r\n \"GeneralDatas\": [\r\n {\r\n \"Type\": 0,\r\n \"Data\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Targeting/Targeting_2.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 120,\r\n \"BundleShard\": 5\r\n }\r\n }\r\n ],\r\n \"Aligns\": [],\r\n \"name\": \"Targeting_2\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 2\r\n }";
public static string GearToolScreenPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Tools/Screen/Screen_4.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 130,\r\n \"BundleShard\": 3\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Screen_4\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 6\r\n }";
public static string GearMeleeHeadPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Melee/Heads/Head_Bat_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 140,\r\n \"BundleShard\": 10\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Head_Bat_1\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 14\r\n }";
public static string GearMeleeNeckPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Melee/Necks/Neck_Hammer_10.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 150,\r\n \"BundleShard\": 1\r\n },\r\n \"Aligns\": [\r\n {\r\n \"AlignType\": 20,\r\n \"AlignName\": \"Head_align\"\r\n }\r\n ],\r\n \"name\": \"Neck_Hammer_10\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 4\r\n }";
public static string GearMeleeHandlePartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Melee/Handles/Handle_Hammer_6.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 160,\r\n \"BundleShard\": 15\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Handle_Hammer_6\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 9\r\n }";
public static string GearMeleePommelPartDatablockTemplate = "{\r\n \"General\": {\r\n \"Model\": \"Assets/AssetPrefabs/Items/Gear/Parts/Melee/Pommels/Pommel_Knife_1.prefab\",\r\n \"GearCategoryFilter\": 0,\r\n \"AssetBundle\": 170,\r\n \"BundleShard\": 19\r\n },\r\n \"Aligns\": [],\r\n \"name\": \"Pommel_Knife_1\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 10\r\n }";
public static string MeleeAnimationDatablockTemplate = "{\r\n \"HoldToChargeTime\": 0.2,\r\n \"MaxDamageChargeTime\": 1.8,\r\n \"AutoAttackTime\": 4.2,\r\n \"AutoAttackWarningTime\": 3.7,\r\n \"FPIdleAnim\": {\r\n \"Name\": \"sledgehammer_idle\"\r\n },\r\n \"FPSettleAnim\": {\r\n \"Name\": \"sledgehammer_settle\"\r\n },\r\n \"FPWalkAnim\": {\r\n \"Name\": \"sledgehammer_walk\"\r\n },\r\n \"FPRunAnim\": {\r\n \"Name\": \"sledgehammer_run\"\r\n },\r\n \"FPJumpAnim\": {\r\n \"Name\": \"sledgehammer_jump\"\r\n },\r\n \"FPLandAnim\": {\r\n \"Name\": \"sledgehammer_land\"\r\n },\r\n \"FPChargeCancelAnimRight\": {\r\n \"Name\": \"sledgehammer_chargeup_cancel\"\r\n },\r\n \"FPChargeCancelAnimLeft\": {\r\n \"Name\": \"sledgehammer_chargeup2_cancel\"\r\n },\r\n \"FPAttackMissRight\": {\r\n \"AttackLengthTime\": 1.0,\r\n \"AttackHitTime\": 0.333333343,\r\n \"DamageStartTime\": 0.333333343,\r\n \"DamageEndTime\": 0.766666651,\r\n \"AttackCamFwdHitTime\": 0.5,\r\n \"ComboEarlyTime\": 0.6666667,\r\n \"Side\": 1,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_miss\"\r\n },\r\n \"AnimBlendIn\": 0.2,\r\n \"AttackLengthFrameTime\": 30.0,\r\n \"AttackHitFrameTime\": 10.0,\r\n \"DamageStartFrameTime\": 10.0,\r\n \"DamageEndFrameTime\": 23.0,\r\n \"AttackCamFwdHitFrameTime\": 15.0,\r\n \"ComboEarlyFrameTime\": 20.0\r\n },\r\n \"FPAttackMissLeft\": {\r\n \"AttackLengthTime\": 1.0,\r\n \"AttackHitTime\": 0.333333343,\r\n \"DamageStartTime\": 0.333333343,\r\n \"DamageEndTime\": 0.766666651,\r\n \"AttackCamFwdHitTime\": 0.5,\r\n \"ComboEarlyTime\": 0.6666667,\r\n \"Side\": 2,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_miss2\"\r\n },\r\n \"AnimBlendIn\": 0.2,\r\n \"AttackLengthFrameTime\": 30.0,\r\n \"AttackHitFrameTime\": 10.0,\r\n \"DamageStartFrameTime\": 10.0,\r\n \"DamageEndFrameTime\": 23.0,\r\n \"AttackCamFwdHitFrameTime\": 15.0,\r\n \"ComboEarlyFrameTime\": 20.0\r\n },\r\n \"FPAttackHitRight\": {\r\n \"AttackLengthTime\": 0.5,\r\n \"AttackHitTime\": 0.5,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.4,\r\n \"Side\": 1,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_hit\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 15.0,\r\n \"AttackHitFrameTime\": 15.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 12.0\r\n },\r\n \"FPAttackHitLeft\": {\r\n \"AttackLengthTime\": 0.5,\r\n \"AttackHitTime\": 0.5,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.4,\r\n \"Side\": 2,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_hit2\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 15.0,\r\n \"AttackHitFrameTime\": 15.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 12.0\r\n },\r\n \"FPAttackPush\": {\r\n \"AttackLengthTime\": 0.6666667,\r\n \"AttackHitTime\": 0.0,\r\n \"DamageStartTime\": 0.13333334,\r\n \"DamageEndTime\": 0.266666681,\r\n \"AttackCamFwdHitTime\": 0.333333343,\r\n \"ComboEarlyTime\": 0.5,\r\n \"Side\": 3,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_push\"\r\n },\r\n \"AnimBlendIn\": 0.2,\r\n \"AttackLengthFrameTime\": 20.0,\r\n \"AttackHitFrameTime\": 0.0,\r\n \"DamageStartFrameTime\": 4.0,\r\n \"DamageEndFrameTime\": 8.0,\r\n \"AttackCamFwdHitFrameTime\": 10.0,\r\n \"ComboEarlyFrameTime\": 15.0\r\n },\r\n \"FPAttackChargeUpRight\": {\r\n \"AttackLengthTime\": 0.0,\r\n \"AttackHitTime\": 0.0,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.0,\r\n \"Side\": 1,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_chargeup\"\r\n },\r\n \"AnimBlendIn\": 0.23,\r\n \"AttackLengthFrameTime\": 0.0,\r\n \"AttackHitFrameTime\": 0.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 0.0\r\n },\r\n \"FPAttackChargeUpLeft\": {\r\n \"AttackLengthTime\": 0.0,\r\n \"AttackHitTime\": 0.0,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.0,\r\n \"Side\": 2,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_chargeup2\"\r\n },\r\n \"AnimBlendIn\": 0.3,\r\n \"AttackLengthFrameTime\": 0.0,\r\n \"AttackHitFrameTime\": 0.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 0.0\r\n },\r\n \"FPAttackChargeUpReleaseRight\": {\r\n \"AttackLengthTime\": 0.366666675,\r\n \"AttackHitTime\": 0.13333334,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.366666675,\r\n \"AttackCamFwdHitTime\": 0.13333334,\r\n \"ComboEarlyTime\": 0.3,\r\n \"Side\": 1,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_chargeup_release\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 11.0,\r\n \"AttackHitFrameTime\": 4.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 11.0,\r\n \"AttackCamFwdHitFrameTime\": 4.0,\r\n \"ComboEarlyFrameTime\": 9.0\r\n },\r\n \"FPAttackChargeUpReleaseLeft\": {\r\n \"AttackLengthTime\": 0.366666675,\r\n \"AttackHitTime\": 0.13333334,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.366666675,\r\n \"AttackCamFwdHitTime\": 0.13333334,\r\n \"ComboEarlyTime\": 0.3,\r\n \"Side\": 2,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_chargeup2_release\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 11.0,\r\n \"AttackHitFrameTime\": 4.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 11.0,\r\n \"AttackCamFwdHitFrameTime\": 4.0,\r\n \"ComboEarlyFrameTime\": 9.0\r\n },\r\n \"FPAttackChargeUpHitRight\": {\r\n \"AttackLengthTime\": 0.5,\r\n \"AttackHitTime\": 0.5,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.4,\r\n \"Side\": 1,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_hit\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 15.0,\r\n \"AttackHitFrameTime\": 15.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 12.0\r\n },\r\n \"FPAttackChargeUpHitLeft\": {\r\n \"AttackLengthTime\": 0.5,\r\n \"AttackHitTime\": 0.5,\r\n \"DamageStartTime\": 0.0,\r\n \"DamageEndTime\": 0.0,\r\n \"AttackCamFwdHitTime\": 0.0,\r\n \"ComboEarlyTime\": 0.4,\r\n \"Side\": 2,\r\n \"Anim\": {\r\n \"Name\": \"sledgehammer_hit2\"\r\n },\r\n \"AnimBlendIn\": 0.0,\r\n \"AttackLengthFrameTime\": 15.0,\r\n \"AttackHitFrameTime\": 15.0,\r\n \"DamageStartFrameTime\": 0.0,\r\n \"DamageEndFrameTime\": 0.0,\r\n \"AttackCamFwdHitFrameTime\": 0.0,\r\n \"ComboEarlyFrameTime\": 12.0\r\n },\r\n \"TPAnimHashIdle\": {\r\n \"Name\": \"Sledgehammer_Idle\"\r\n },\r\n \"TPAnimHashIdleCrouch\": {\r\n \"Name\": \"Sledgehammer_Idle_crouch\"\r\n },\r\n \"TPAnimHashAttackLeft\": {\r\n \"Name\": \"Sledgehammer_SwingLeft\"\r\n },\r\n \"TPAnimHashAttackLeftCrouch\": {\r\n \"Name\": \"Sledgehammer_SwingLeft_crouch\"\r\n },\r\n \"TPAnimHashAttackLeftCharge\": {\r\n \"Name\": \"Sledgehammer_Charge_Left_Start\"\r\n },\r\n \"TPAnimHashAttackLeftChargeCrouch\": {\r\n \"Name\": \"Sledgehammer_Charge_Left_Start_Crouch\"\r\n },\r\n \"TPAnimHashAttackLeftRelease\": {\r\n \"Name\": \"Sledgehammer_Charge_Left_Release\"\r\n },\r\n \"TPAnimHashAttackLeftReleaseCrouch\": {\r\n \"Name\": \"Sledgehammer_Charge_Left_Release_Crouch\"\r\n },\r\n \"name\": \"Hammer\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 1\r\n }";
public static string MeleeArchetypeDatablockTemplate = "{\r\n \"PublicName\": \"Hammer\",\r\n \"NoiseLevel\": 0,\r\n \"ChargedAttackDamage\": 20.0,\r\n \"LightAttackDamage\": 3.0,\r\n \"LightStaggerMulti\": 1.0,\r\n \"ChargedStaggerMulti\": 1.3,\r\n \"LightPrecisionMulti\": 1.0,\r\n \"ChargedPrecisionMulti\": 1.0,\r\n \"LightEnvironmentMulti\": 3.0,\r\n \"ChargedEnvironmentMulti\": 3.0,\r\n \"LightBackstabberMulti\": 1.0,\r\n \"ChargedBackstabberMulti\": 1.0,\r\n \"LightSleeperMulti\": 1.0,\r\n \"ChargedSleeperMulti\": 1.0,\r\n \"SkipLimbDestruction\": false,\r\n \"CameraDamageRayLength\": 1.8,\r\n \"AttackSphereRadius\": 0.3,\r\n \"PushDamageSphereRadius\": 1.0,\r\n \"CanHitMultipleEnemies\": false,\r\n \"EvaluateHoldBeforeAttack\": false,\r\n \"PlayImpactEffect\": true,\r\n \"AllowRunningWhenCharging\": true,\r\n \"PlayerRunSpeedMultiWhileCharging\": 1.0,\r\n \"MeleeAnimationSet\": 1,\r\n \"MeleeSFXSet\": 1,\r\n \"ChargedAttackStaminaCost\": {\r\n \"baseStaminaCostInCombat\": 0.05,\r\n \"baseStaminaCostOutOfCombat\": 0.05,\r\n \"resetRestingTimerInCombat\": true,\r\n \"resetRestingTimerOutOfCombat\": true\r\n },\r\n \"LightAttackStaminaCost\": {\r\n \"baseStaminaCostInCombat\": 0.0,\r\n \"baseStaminaCostOutOfCombat\": 0.0,\r\n \"resetRestingTimerInCombat\": false,\r\n \"resetRestingTimerOutOfCombat\": false\r\n },\r\n \"PushStaminaCost\": {\r\n \"baseStaminaCostInCombat\": 0.05,\r\n \"baseStaminaCostOutOfCombat\": 0.05,\r\n \"resetRestingTimerInCombat\": false,\r\n \"resetRestingTimerOutOfCombat\": false\r\n },\r\n \"name\": \"Hammer\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 1\r\n }";
public static string WeaponMuzzleFlashDatablockTemplate = "{\r\n \"muzzleFlashFPS\": \"Assets/AssetPrefabs/Effects/Weapon/MuzzleFlash/AssaultRifle_MuzzleFlash_FPS.prefab\",\r\n \"muzzleFlash3RD\": \"Assets/AssetPrefabs/Effects/Weapon/MuzzleFlash/AssaultRifle_MuzzleFlash_3RD.prefab\",\r\n \"AssetBundleName\": 5,\r\n \"AssetBundleShard\": 6,\r\n \"name\": \"GaussRifle\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 36\r\n }";
public static string WeaponShellCasingDatablockTemplate = "{\r\n \"ShellCasingType\": 3,\r\n \"name\": \"Shell_338\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 3\r\n }";
public static string WeaponAudioDatablockTemplate = "{\r\n \"eventOnSemiFire2D\": [\r\n \"PistolBodyB\",\r\n \"PistolNoiseB\",\r\n \"PistolMechB\",\r\n \"PistolReverb\",\r\n \"pistol_kick_semi_a\"\r\n ],\r\n \"eventOnBurstFire2D\": [\r\n \"PistolBodyA\",\r\n \"PistolNoiseA\",\r\n \"PistolMechA\",\r\n \"PistolReverb\",\r\n \"pistol_kick_semi_a\"\r\n ],\r\n \"eventOnAutoFireStart2D\": [\r\n \"PistolBodyBAuto\",\r\n \"PistolMechBAuto\",\r\n \"PistolNoiseBAuto\",\r\n \"PistolAutoWet\",\r\n \"pistol_kick_auto_a\"\r\n ],\r\n \"eventOnAutoFireEnd2D\": [\r\n \"PistolAutoEnd \"\r\n ],\r\n \"eventOnBurstFireOneShot2D\": [],\r\n \"eventOnChargeup2D\": [\r\n \"GaussPistolChargeUp\"\r\n ],\r\n \"eventOnCooldown2D\": [\r\n \"GaussPistolCooldown\"\r\n ],\r\n \"eventOnChargeupEnd2D\": \"GaussPistolChargeUpEnd\",\r\n \"eventOnCooldownEnd2D\": \"GaussPistolCooldownEnd\",\r\n \"eventOnSemiFire3D\": [\r\n \"PistolBodyB3D\",\r\n \"PistolNoiseB3D\",\r\n \"PistolMechB3D \",\r\n \"PistolReverb3D\"\r\n ],\r\n \"eventOnBurstFire3D\": [\r\n \"PistolBodyA3D\",\r\n \"PistolNoiseA3D\",\r\n \"PistolMechA3D \",\r\n \"PistolReverb3D\"\r\n ],\r\n \"eventOnAutoFireStart3D\": [\r\n \"PistolBodyBAuto3D\",\r\n \"PistolMechBAuto3D\",\r\n \"PistolNoiseBAuto3D\",\r\n \"PistolAutoWet3D\"\r\n ],\r\n \"eventOnAutoFireEnd3D\": [\r\n \"PistolAutoEnd3D\"\r\n ],\r\n \"eventOnChargeup3D\": [\r\n \"GaussPistolChargeUp\"\r\n ],\r\n \"eventOnCooldown3D\": [\r\n \"GaussPistolCooldown\"\r\n ],\r\n \"eventOnChargeupEnd3D\": \"GaussPistolChargeUpEnd\",\r\n \"eventOnCooldownEnd3D\": \"GaussPistolCooldownEnd\",\r\n \"eventOnSyncedBurstFirePerShot3D\": [\r\n \"PistolBodyB3D\",\r\n \"PistolMechB3D\",\r\n \"PistolNoiseB3D\",\r\n \"PistolReverb3D\"\r\n ],\r\n \"eventOnSyncedAutoFirePerShot3D\": [\r\n \"PistolBodyB3D\",\r\n \"PistolMechB3D\",\r\n \"PistolNoiseB3D\",\r\n \"PistolReverb3D\"\r\n ],\r\n \"eventClick\": \"PistolDryFire\",\r\n \"eventReload\": \"PistolReload\",\r\n \"TriggerBurstAudioForEachShot\": true,\r\n \"TriggerAutoAudioForEachShot\": false,\r\n \"eventEquip\": \"PistolEquip\",\r\n \"eventZoomIn\": \"PistolIronsightIn\",\r\n \"eventZoomOut\": \"PistolIronsightOut\",\r\n \"name\": \"Handgun\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 1\r\n }";
public static string MiningMarkerDatablockTemplate = "{\r\n \"CommonData\": {\r\n \"FunctionComponentLinks\": [\r\n [],\r\n [],\r\n [],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4,\r\n 0,\r\n 1,\r\n 7\r\n ],\r\n [],\r\n [\r\n 3,\r\n 0,\r\n 1,\r\n 2,\r\n 4,\r\n 5,\r\n 6\r\n ],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4\r\n ],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4,\r\n 0,\r\n 1,\r\n 7\r\n ],\r\n [\r\n 3,\r\n 0,\r\n 1,\r\n 2,\r\n 4,\r\n 5,\r\n 6,\r\n 7\r\n ],\r\n [],\r\n [\r\n 3,\r\n 0,\r\n 1,\r\n 2,\r\n 4,\r\n 5,\r\n 6,\r\n 7\r\n ],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4,\r\n 0,\r\n 1,\r\n 7\r\n ],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4,\r\n 0,\r\n 1,\r\n 7\r\n ],\r\n [],\r\n [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7\r\n ],\r\n [\r\n 5,\r\n 6,\r\n 2,\r\n 3,\r\n 4\r\n ],\r\n [],\r\n [\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 7\r\n ],\r\n [],\r\n [],\r\n [\r\n 0,\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7\r\n ],\r\n []\r\n ],\r\n \"Compositions\": [\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_a_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 4\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_b_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 1\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_c_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 2\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_d_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 3\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_e_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 4\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_f_gh.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 1\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_g.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 1\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Mining/Props/storage/storage_open_2500x2000x800/storage_open_2500x2000x800_h.prefab\",\r\n \"function\": 0,\r\n \"Shard\": 2\r\n }\r\n ],\r\n \"AssetBundleName\": 2,\r\n \"Group\": 2,\r\n \"FunctionPotential\": 20.0,\r\n \"RotationSnap\": 0,\r\n \"RotationNoise\": 0.0,\r\n \"EditorMesh\": \"Markerproducers/Mining/M_storage_open_2500x2000x800\",\r\n \"BoundingVolume\": 4000000.0\r\n },\r\n \"name\": \"mining_storage_open_2500x2000x800\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 37\r\n }";
public static string TechMarkerDatablockTemplate = "{\r\n \"CommonData\": {\r\n \"FunctionComponentLinks\": [\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n []\r\n ],\r\n \"Compositions\": [\r\n {\r\n \"weight\": 2.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Generic/Signs/sign_2x2_tech_wallflat.prefab\",\r\n \"function\": 9,\r\n \"Shard\": 19\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"function\": 0,\r\n \"Shard\": 19\r\n }\r\n ],\r\n \"AssetBundleName\": 3,\r\n \"Group\": 10,\r\n \"FunctionPotential\": 1.0,\r\n \"RotationSnap\": 0,\r\n \"RotationNoise\": 0.0,\r\n \"EditorMesh\": \"Markerproducers/Mining/M_mining_sign_200x50x200\",\r\n \"BoundingVolume\": 2000.0\r\n },\r\n \"name\": \"Tech_sign_200x50x200\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 9\r\n }";
public static string ServiceMarkerDatablockTemplate = "{\r\n \"CommonData\": {\r\n \"FunctionComponentLinks\": [\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n [],\r\n []\r\n ],\r\n \"Compositions\": [\r\n {\r\n \"weight\": 1.0,\r\n \"prefab\": \"Assets/AssetPrefabs/Complex/Generic/Signs/sign_2x2_service_textonly.prefab\",\r\n \"function\": 9,\r\n \"Shard\": 0\r\n },\r\n {\r\n \"weight\": 1.0,\r\n \"function\": 0,\r\n \"Shard\": 0\r\n }\r\n ],\r\n \"AssetBundleName\": 4,\r\n \"Group\": 12,\r\n \"FunctionPotential\": 1.0,\r\n \"RotationSnap\": 0,\r\n \"RotationNoise\": 0.0,\r\n \"EditorMesh\": \"Markerproducers/Mining/M_mining_sign_200x50x200\",\r\n \"BoundingVolume\": 2000.0\r\n },\r\n \"name\": \"service_sign_200x50x200\",\r\n \"internalEnabled\": true,\r\n \"persistentID\": 2\r\n }";
}
}