Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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");
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
0
        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"];
        }
Exemplo n.º 11
0
 internal static void AddToList(ModToolComponent alternateTool, string templateName)
 {
     toolList.Add(alternateTool);
     templateNameList.Add(templateName);
 }
Exemplo n.º 12
0
        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
        }
Exemplo n.º 13
0
        private static void ConfigureDegradeOnUse(ModToolComponent modToolComponent)
        {
            DegradeOnUse degradeOnUse = ModUtils.GetOrCreateComponent <DegradeOnUse>(modToolComponent);

            degradeOnUse.m_DegradeHP = Mathf.Max(degradeOnUse.m_DegradeHP, modToolComponent.DegradeOnUse);
        }