internal static void Configure(ModComponent modComponent) { ModToolComponent modToolComponent = modComponent as ModToolComponent; if (modToolComponent == null) { return; } ToolsItem toolsItem = ModUtils.GetOrCreateComponent <ToolsItem>(modToolComponent); toolsItem.m_ToolType = ModUtils.TranslateEnumValue <ToolsItem.ToolType, Usage>(modToolComponent.Usage); toolsItem.m_CuttingToolType = ModUtils.TranslateEnumValue <ToolsItem.CuttingToolType, ToolType>(modToolComponent.ToolType); toolsItem.m_CraftingAndRepairSkillModifier = modToolComponent.SkillBonus; toolsItem.m_CraftingAndRepairTimeModifier = modToolComponent.CraftingTimeMultiplier; toolsItem.m_DegradePerHourCrafting = modToolComponent.DegradePerHourCrafting; toolsItem.m_CanOnlyCraftAndRepairClothes = true; toolsItem.m_AppearInStoryOnly = false; ConfigureBodyHarvest(modToolComponent); ConfigureBreakDown(modToolComponent); ConfigureDegradeOnUse(modToolComponent); ConfigureForceLock(modToolComponent); ConfigureIceFishingHole(modToolComponent); ConfigureStruggleBonus(modToolComponent); }
private static void ConfigureBreakDown(ModToolComponent modToolComponent) { BreakDownItem breakDownItem = ModUtils.GetOrCreateComponent <BreakDownItem>(modToolComponent); breakDownItem.m_BreakDownTimeModifier = modToolComponent.BreakDownTimeMultiplier; string templateName = GetTemplateToolName(modToolComponent); if (templateName != null) { AddAlternativeTool(modToolComponent, templateName); } }
private static void ConfigureIceFishingHole(ModToolComponent modToolComponent) { if (!modToolComponent.IceFishingHole) { return; } IceFishingHoleClearItem iceFishingHoleClearItem = ModUtils.GetOrCreateComponent <IceFishingHoleClearItem>(modToolComponent); iceFishingHoleClearItem.m_BreakIceAudio = ModUtils.DefaultIfEmpty(modToolComponent.IceFishingHoleAudio, "Play_IceBreakingChopping"); iceFishingHoleClearItem.m_HPDecreaseToClear = modToolComponent.IceFishingHoleDegradeOnUse; iceFishingHoleClearItem.m_NumGameMinutesToClear = modToolComponent.IceFishingHoleMinutes; }
private static void ConfigureBodyHarvest(ModToolComponent modToolComponent) { if (!modToolComponent.CarcassHarvesting) { return; } BodyHarvestItem bodyHarvestItem = ModUtils.GetOrCreateComponent <BodyHarvestItem>(modToolComponent); bodyHarvestItem.m_HarvestMeatMinutesPerKG = modToolComponent.MinutesPerKgMeat; bodyHarvestItem.m_HarvestFrozenMeatMinutesPerKG = modToolComponent.MinutesPerKgFrozenMeat; bodyHarvestItem.m_HarvestGutMinutesPerUnit = modToolComponent.MinutesPerGut; bodyHarvestItem.m_HarvestHideMinutesPerUnit = modToolComponent.MinutesPerHide; bodyHarvestItem.m_HPDecreasePerHourUse = modToolComponent.DegradePerHourHarvesting; }
private static void ConfigureStruggleBonus(ModToolComponent modToolComponent) { if (!modToolComponent.StruggleBonus) { return; } StruggleBonus struggleBonus = ModUtils.GetOrCreateComponent <StruggleBonus>(modToolComponent); struggleBonus.m_BleedoutMinutesScale = modToolComponent.BleedoutMultiplier; struggleBonus.m_CanPuncture = modToolComponent.CanPuncture; struggleBonus.m_DamageScalePercent = modToolComponent.DamageMultiplier; struggleBonus.m_FleeChanceScale = modToolComponent.FleeChanceMultiplier; struggleBonus.m_TapIncrementScale = modToolComponent.TapMultiplier; struggleBonus.m_StruggleWeaponType = GetStruggleWeaponType(modToolComponent); }
private static void ConfigureForceLock(ModToolComponent modToolComponent) { if (!modToolComponent.ForceLocks) { return; } ForceLockItem forceLockItem = ModUtils.GetOrCreateComponent <ForceLockItem>(modToolComponent); forceLockItem.m_ForceLockAudio = ModUtils.DefaultIfEmpty(modToolComponent.ForceLockAudio, "PLAY_LOCKERPRYOPEN1"); forceLockItem.m_LocalizedProgressText = new LocalizedString() { m_LocalizationID = "GAMEPLAY_Forcing" }; AddAlternativeTool(modToolComponent, "GEAR_Prybar"); }
private static StruggleBonus.StruggleWeaponType GetStruggleWeaponType(ModToolComponent modToolComponent) { switch (modToolComponent.ToolType) { case ToolType.Hatchet: return(StruggleBonus.StruggleWeaponType.Hatchet); case ToolType.Hammer: return(StruggleBonus.StruggleWeaponType.Hammer); case ToolType.Knife: return(StruggleBonus.StruggleWeaponType.Knife); default: return(StruggleBonus.StruggleWeaponType.BareHands); } }
private static void AddAlternativeTool(ModToolComponent modToolComponent, string templateName) { GameObject original = Resources.Load(templateName).Cast <GameObject>(); if (original is null) { return; } AlternateTools alternateTools = ModComponentUtils.ComponentUtils.GetOrCreateComponent <AlternateTools>(original); List <GameObject> list = new List <GameObject>(); if (alternateTools.m_AlternateToolsList != null) { list.AddRange(alternateTools.m_AlternateToolsList); } list.Add(modToolComponent.gameObject); alternateTools.m_AlternateToolsList = list.ToArray(); }
private static string GetTemplateToolName(ModToolComponent modToolComponent) { switch (modToolComponent.ToolType) { case ToolType.HackSaw: return("GEAR_Hacksaw"); case ToolType.Hatchet: return("GEAR_Hatchet"); case ToolType.Hammer: return("GEAR_Hammer"); case ToolType.Knife: return("GEAR_Knife"); default: return(null); } }
private static void InitializeToolComponent(ModToolComponent modTool, ProxyObject dict, string className = "ModToolComponent") { InitializeEquippableComponent(modTool, dict, className); modTool.ToolType = EnumUtils.ParseEnum <ToolType>(dict[className]["ToolType"]); modTool.DegradeOnUse = dict[className]["DegradeOnUse"]; modTool.Usage = EnumUtils.ParseEnum <Usage>(dict[className]["Usage"]); modTool.SkillBonus = dict[className]["SkillBonus"]; modTool.CraftingTimeMultiplier = dict[className]["CraftingTimeMultiplier"]; modTool.DegradePerHourCrafting = dict[className]["DegradePerHourCrafting"]; modTool.BreakDown = dict[className]["BreakDown"]; modTool.BreakDownTimeMultiplier = dict[className]["BreakDownTimeMultiplier"]; modTool.ForceLocks = dict[className]["ForceLocks"]; modTool.ForceLockAudio = dict[className]["ForceLockAudio"]; modTool.IceFishingHole = dict[className]["IceFishingHole"]; modTool.IceFishingHoleDegradeOnUse = dict[className]["IceFishingHoleDegradeOnUse"]; modTool.IceFishingHoleMinutes = dict[className]["IceFishingHoleMinutes"]; modTool.IceFishingHoleAudio = dict[className]["IceFishingHoleAudio"]; modTool.CarcassHarvesting = dict[className]["CarcassHarvesting"]; modTool.MinutesPerKgMeat = dict[className]["MinutesPerKgMeat"]; modTool.MinutesPerKgFrozenMeat = dict[className]["MinutesPerKgFrozenMeat"]; modTool.MinutesPerHide = dict[className]["MinutesPerHide"]; modTool.MinutesPerGut = dict[className]["MinutesPerGut"]; modTool.DegradePerHourHarvesting = dict[className]["DegradePerHourHarvesting"]; modTool.StruggleBonus = dict[className]["StruggleBonus"]; modTool.DamageMultiplier = dict[className]["DamageMultiplier"]; modTool.FleeChanceMultiplier = dict[className]["FleeChanceMultiplier"]; modTool.TapMultiplier = dict[className]["TapMultiplier"]; modTool.CanPuncture = dict[className]["CanPuncture"]; modTool.BleedoutMultiplier = dict[className]["BleedoutMultiplier"]; }
internal static void AddToList(ModToolComponent alternateTool, string templateName) { toolList.Add(alternateTool); templateNameList.Add(templateName); }
public static void InitializeComponents(ref GameObject prefab, ProxyObject dict) { if (ComponentUtils.GetModComponent(prefab) != null || dict is null) { return; } #region Mod Components if (JsonUtils.ContainsKey(dict, "ModBedComponent")) { ModBedComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBedComponent>(prefab); InitializeBedComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModBodyHarvestComponent")) { ModBodyHarvestComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBodyHarvestComponent>(prefab); InitializeBodyHarvestComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModCharcoalComponent")) { ModCharcoalComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCharcoalComponent>(prefab); InitializeCharcoalComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModClothingComponent")) { ModClothingComponent newComponent = ComponentUtils.GetOrCreateComponent <ModClothingComponent>(prefab); InitializeClothingComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModCollectibleComponent")) { ModCollectibleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCollectibleComponent>(prefab); InitializeCollectibleComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModCookableComponent")) { ModCookableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookableComponent>(prefab); InitializeCookableComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModCookingPotComponent")) { ModCookingPotComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCookingPotComponent>(prefab); InitializeCookingPotComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModExplosiveComponent")) { ModExplosiveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModExplosiveComponent>(prefab); InitializeExplosiveComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModFirstAidComponent")) { ModFirstAidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFirstAidComponent>(prefab); InitializeFirstAidComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModFoodComponent")) { ModFoodComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFoodComponent>(prefab); InitializeFoodComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModGenericComponent")) { ModGenericComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericComponent>(prefab); InitializeGenericComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModGenericEquippableComponent")) { ModGenericEquippableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModGenericEquippableComponent>(prefab); InitializeGenericEquippableComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModLiquidComponent")) { ModLiquidComponent newComponent = ComponentUtils.GetOrCreateComponent <ModLiquidComponent>(prefab); InitializeLiquidComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModPowderComponent")) { ModPowderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPowderComponent>(prefab); InitializePowderComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModPurificationComponent")) { ModPurificationComponent newComponent = ComponentUtils.GetOrCreateComponent <ModPurificationComponent>(prefab); InitializePurificationComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModRandomItemComponent")) { ModRandomItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomItemComponent>(prefab); InitializeRandomItemComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModRandomWeightedItemComponent")) { ModRandomWeightedItemComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRandomWeightedItemComponent>(prefab); InitializeRandomWeightedItemComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModResearchComponent")) { ModResearchComponent newComponent = ComponentUtils.GetOrCreateComponent <ModResearchComponent>(prefab); InitializeResearchComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModRifleComponent")) { ModRifleComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRifleComponent>(prefab); InitializeRifleComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModToolComponent")) { ModToolComponent newComponent = ComponentUtils.GetOrCreateComponent <ModToolComponent>(prefab); InitializeToolComponent(newComponent, dict); } #endregion #region Behaviour Components if (JsonUtils.ContainsKey(dict, "ModAccelerantComponent")) { ModAccelerantComponent newComponent = ComponentUtils.GetOrCreateComponent <ModAccelerantComponent>(prefab); InitializeAccelerantComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModBurnableComponent")) { ModBurnableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModBurnableComponent>(prefab); InitializeBurnableComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModFireStarterComponent")) { ModFireStarterComponent newComponent = ComponentUtils.GetOrCreateComponent <ModFireStarterComponent>(prefab); InitializeFireStarterComponent(newComponent, dict); } else if (JsonUtils.ContainsKey(dict, "ModTinderComponent")) { ModTinderComponent newComponent = ComponentUtils.GetOrCreateComponent <ModTinderComponent>(prefab); InitializeTinderComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModCarryingCapacityComponent")) { ModCarryingCapacityComponent newComponent = ComponentUtils.GetOrCreateComponent <ModCarryingCapacityComponent>(prefab); InitializeCarryingCapacityComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModEvolveComponent")) { ModEvolveComponent newComponent = ComponentUtils.GetOrCreateComponent <ModEvolveComponent>(prefab); InitializeEvolveComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModHarvestableComponent")) { ModHarvestableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModHarvestableComponent>(prefab); InitializeHarvestableComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModMillableComponent")) { ModMillableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModMillableComponent>(prefab); InitializeMillableComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModRepairableComponent")) { ModRepairableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModRepairableComponent>(prefab); InitializeRepairableComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModScentComponent")) { ModScentComponent newComponent = ComponentUtils.GetOrCreateComponent <ModScentComponent>(prefab); InitializeScentComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModSharpenableComponent")) { ModSharpenableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModSharpenableComponent>(prefab); InitializeSharpenableComponent(newComponent, dict); } if (JsonUtils.ContainsKey(dict, "ModStackableComponent")) { ModStackableComponent newComponent = ComponentUtils.GetOrCreateComponent <ModStackableComponent>(prefab); InitializeStackableComponent(newComponent, dict); } #endregion #region Modifications if (JsonUtils.ContainsKey(dict, "ChangeLayer")) { ChangeLayer newComponent = ComponentUtils.GetOrCreateComponent <ChangeLayer>(prefab); InitializeChangeLayer(newComponent, dict); } #endregion }
private static void ConfigureDegradeOnUse(ModToolComponent modToolComponent) { DegradeOnUse degradeOnUse = ModUtils.GetOrCreateComponent <DegradeOnUse>(modToolComponent); degradeOnUse.m_DegradeHP = Mathf.Max(degradeOnUse.m_DegradeHP, modToolComponent.DegradeOnUse); }