Esempio n. 1
0
        internal static void Configure(ModComponent modComponent)
        {
            ModRepairableComponent modRepairableComponent = modComponent.GetComponent <ModRepairableComponent>();

            if (modRepairableComponent == null)
            {
                return;
            }

            Repairable repairable = ModUtils.GetOrCreateComponent <Repairable>(modRepairableComponent);

            repairable.m_RepairAudio       = modRepairableComponent.Audio;
            repairable.m_DurationMinutes   = modRepairableComponent.Minutes;
            repairable.m_ConditionIncrease = modRepairableComponent.Condition;

            if (modRepairableComponent.MaterialNames.Length != modRepairableComponent.MaterialCounts.Length)
            {
                throw new ArgumentException("MaterialNames and MaterialCounts do not have the same length on gear item '" + modRepairableComponent.name + "'.");
            }

            repairable.m_RequiredGear      = ModUtils.GetItems <GearItem>(modRepairableComponent.MaterialNames, modRepairableComponent.name);
            repairable.m_RequiredGearUnits = modRepairableComponent.MaterialCounts;

            repairable.m_RepairToolChoices    = ModUtils.GetItems <ToolsItem>(modRepairableComponent.RequiredTools, modRepairableComponent.name);
            repairable.m_RequiresToolToRepair = repairable.m_RepairToolChoices.Length > 0;
        }
Esempio n. 2
0
        private static void ConfigureClothing(ModComponent modComponent)
        {
            ModClothingComponent modClothingItem = modComponent as ModClothingComponent;

            if (modClothingItem == null)
            {
                return;
            }

            ClothingItem clothingItem = ModUtils.GetOrCreateComponent <ClothingItem>(modClothingItem);

            clothingItem.m_DailyHPDecayWhenWornInside  = GetDecayPerStep(modClothingItem.DaysToDecayWornInside, modClothingItem.MaxHP);
            clothingItem.m_DailyHPDecayWhenWornOutside = GetDecayPerStep(modClothingItem.DaysToDecayWornOutside, modClothingItem.MaxHP);
            clothingItem.m_DryBonusWhenNotWorn         = 1.5f;
            clothingItem.m_DryPercentPerHour           = 100f / modClothingItem.HoursToDryNearFire;
            clothingItem.m_DryPercentPerHourNoFire     = 100f / modClothingItem.HoursToDryWithoutFire;
            clothingItem.m_FreezePercentPerHour        = 100f / modClothingItem.HoursToFreeze;

            clothingItem.m_Region       = ModUtils.TranslateEnumValue <ClothingRegion, Region>(modClothingItem.Region);
            clothingItem.m_MaxLayer     = ModUtils.TranslateEnumValue <ClothingLayer, Layer>(modClothingItem.MaxLayer);
            clothingItem.m_MinLayer     = ModUtils.TranslateEnumValue <ClothingLayer, Layer>(modClothingItem.MinLayer);
            clothingItem.m_FootwearType = ModUtils.TranslateEnumValue <FootwearType, Footwear>(modClothingItem.Footwear);
            clothingItem.m_WornMovementSoundCategory = ModUtils.TranslateEnumValue <ClothingMovementSound, MovementSound>(modClothingItem.MovementSound);

            clothingItem.m_PaperDollTextureName  = modClothingItem.MainTexture;
            clothingItem.m_PaperDollBlendmapName = modClothingItem.BlendTexture;

            clothingItem.m_Warmth                    = modClothingItem.Warmth;
            clothingItem.m_WarmthWhenWet             = modClothingItem.WarmthWhenWet;
            clothingItem.m_Waterproofness            = modClothingItem.Waterproofness / 100f;
            clothingItem.m_Windproof                 = modClothingItem.Windproof;
            clothingItem.m_SprintBarReductionPercent = modClothingItem.SprintBarReduction;
            clothingItem.m_Toughness                 = modClothingItem.Toughness;
        }
Esempio n. 3
0
        public static void Configure(ModComponent modComponent)
        {
            ModStackableComponent modStackableComponent = ModComponentUtils.ComponentUtils.GetComponent <ModStackableComponent>(modComponent);

            if (modStackableComponent is null)
            {
                return;
            }

            StackableItem stackableItem = ModComponentUtils.ComponentUtils.GetOrCreateComponent <StackableItem>(modStackableComponent);

            stackableItem.m_LocalizedMultipleUnitText = new LocalizedString {
                m_LocalizationID = modStackableComponent.MultipleUnitTextID
            };

            if (string.IsNullOrWhiteSpace(modStackableComponent.SingleUnitTextID))
            {
                stackableItem.m_LocalizedSingleUnitText = new LocalizedString {
                    m_LocalizationID = modComponent.DisplayNameLocalizationId
                };
            }
            else
            {
                stackableItem.m_LocalizedSingleUnitText = new LocalizedString {
                    m_LocalizationID = modStackableComponent.SingleUnitTextID
                };
            }

            stackableItem.m_StackSpriteName = modStackableComponent.StackSprite;

            stackableItem.m_ShareStackWithGear = new StackableItem[0];
            stackableItem.m_Units        = modStackableComponent.UnitsPerItem;
            stackableItem.m_UnitsPerItem = modStackableComponent.UnitsPerItem;
        }
Esempio n. 4
0
        internal static void Configure(ModComponent modComponent)
        {
            ModBedComponent modBedComponent = modComponent as ModBedComponent;

            if (modBedComponent == null)
            {
                return;
            }

            Bed bed = ModUtils.GetOrCreateComponent <Bed>(modBedComponent);

            bed.m_ConditionPercentGainPerHour        = modBedComponent.ConditionGainPerHour;
            bed.m_UinterruptedRestPercentGainPerHour = modBedComponent.AdditionalConditionGainPerHour;
            bed.m_WarmthBonusCelsius = modBedComponent.WarmthBonusCelsius;

            bed.m_PercentChanceReduceBearAttackWhenSleeping = modBedComponent.BearAttackModifier;
            bed.m_PercentChanceReduceWolfAttackWhenSleeping = modBedComponent.WolfAttackModifier;

            bed.m_OpenAudio  = ModUtils.DefaultIfEmpty(modBedComponent.OpenAudio, "PLAY_SNDGENSLEEPINGBAGCLOSE");
            bed.m_CloseAudio = ModUtils.DefaultIfEmpty(modBedComponent.CloseAudio, "PLAY_SNDGENSLEEPINGBAGOPEN");

            bed.m_BedRollMesh             = modBedComponent.PackedMesh ?? modBedComponent.gameObject;
            bed.m_BedRollMesh.layer       = vp_Layer.Gear;
            bed.m_BedRollPlacedMesh       = modBedComponent.UsableMesh ?? modBedComponent.gameObject;
            bed.m_BedRollPlacedMesh.layer = vp_Layer.Gear;
            bed.SetState(BedRollState.Rolled);

            DegradeOnUse degradeOnUse = ModUtils.GetOrCreateComponent <DegradeOnUse>(modBedComponent);

            degradeOnUse.m_DegradeHP = Mathf.Max(degradeOnUse.m_DegradeHP, modBedComponent.DegradePerHour);

            PlaceableItem placeableItem = ModUtils.GetOrCreateComponent <PlaceableItem>(modBedComponent);

            placeableItem.m_Range = 4;
        }
Esempio n. 5
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);
        }
Esempio n. 6
0
        internal static float GetScentIntensity(ModComponent modComponent)
        {
            Scent scent = ModUtils.GetComponent <Scent>(modComponent);

            if (scent == null)
            {
                return(0f);
            }

            switch (scent.m_ScentCategory)
            {
            case ScentRangeCategory.COOKED_MEAT:
                return(5f);

            case ScentRangeCategory.COOKED_FISH:
                return(5f);

            case ScentRangeCategory.GUTS:
                return(20f);

            case ScentRangeCategory.QUARTER:
                return(50f);

            case ScentRangeCategory.RAW_MEAT:
                return(15f);

            case ScentRangeCategory.RAW_FISH:
                return(15f);

            default:
                return(0f);
            }
        }
Esempio n. 7
0
        private static GearTypeEnum GetGearType(ModComponent modComponent)
        {
            if (modComponent.InventoryCategory != InventoryCategory.Auto)
            {
                return(EnumUtils.TranslateEnumValue <GearTypeEnum, InventoryCategory>(modComponent.InventoryCategory));
            }

            if (modComponent is ModToolComponent)
            {
                return(GearTypeEnum.Tool);
            }

            if (modComponent is ModFoodComponent || modComponent is ModCookableComponent || (modComponent as ModLiquidComponent)?.LiquidType == LiquidType.Water)
            {
                return(GearTypeEnum.Food);
            }

            if (modComponent is ModClothingComponent)
            {
                return(GearTypeEnum.Clothing);
            }

            if (ComponentUtils.GetComponent <ModFireMakingComponent>(modComponent) != null || ComponentUtils.GetComponent <ModBurnableComponent>(modComponent) != null)
            {
                return(GearTypeEnum.Firestarting);
            }

            return(GearTypeEnum.Other);
        }
Esempio n. 8
0
        private static void PostProcess(ModComponent modComponent)
        {
            modComponent.gameObject.layer = vp_Layer.Gear;

            GearItem gearItem = modComponent.GetComponent <GearItem>();

            gearItem.m_SkinnedMeshRenderers = ModUtils.NotNull <SkinnedMeshRenderer>(gearItem.m_SkinnedMeshRenderers);

            GameObject   template     = Resources.Load <GameObject>("GEAR_CoffeeCup");
            MeshRenderer meshRenderer = template.GetComponentInChildren <MeshRenderer>();

            foreach (var eachMeshRenderer in gearItem.m_MeshRenderers)
            {
                foreach (var eachMaterial in eachMeshRenderer.materials)
                {
                    if (eachMaterial.shader.name == "Standard")
                    {
                        eachMaterial.shader         = meshRenderer.material.shader;
                        eachMaterial.shaderKeywords = meshRenderer.material.shaderKeywords;

                        if (eachMaterial.GetTexture("_dmg_texture") is null)
                        {
                            eachMaterial.SetTexture("_dmg_texture", eachMaterial.GetTexture("_MainTex"));
                        }
                    }
                }
            }

            ConsoleWaitlist.MaybeRegisterConsoleGearName(modComponent.GetEffectiveConsoleName(), modComponent.name);

            UnityEngine.Object.DontDestroyOnLoad(modComponent.gameObject);
        }
Esempio n. 9
0
        private static void PostProcess(ModComponent modComponent)
        {
            modComponent.gameObject.layer = vp_Layer.Gear;

            GearItem gearItem = modComponent.GetComponent <GearItem>();

            gearItem.m_SkinnedMeshRenderers = ModUtils.NotNull(gearItem.m_SkinnedMeshRenderers);

            GameObject   template     = Resources.Load <GameObject>("GEAR_CoffeeCup");
            MeshRenderer meshRenderer = template.GetComponentInChildren <MeshRenderer>();

            foreach (var eachMeshRenderer in gearItem.m_MeshRenderers)
            {
                foreach (var eachMaterial in eachMeshRenderer.materials)
                {
                    if (eachMaterial.shader.name == "Standard")
                    {
                        Debug.Log("Updating shader of " + modComponent.name);
                        eachMaterial.shader         = meshRenderer.material.shader;
                        eachMaterial.shaderKeywords = meshRenderer.material.shaderKeywords;
                    }
                }
            }

            ModUtils.RegisterConsoleGearName(modComponent.GetEffectiveConsoleName(), modComponent.name);

            if (modComponent.Radial != Radial.None)
            {
                RadialConfigurator.RegisterGear(modComponent.Radial, modComponent.name);
            }

            UnityEngine.Object.DontDestroyOnLoad(modComponent.gameObject);
        }
Esempio n. 10
0
        private static void MapModComponent(GameObject prefab)
        {
            ModComponent modComponent = ModUtils.GetModComponent(prefab);

            if (modComponent == null)
            {
                return;
            }

            Mapper.Map(prefab);
        }
Esempio n. 11
0
        private static void ConfigureCookingPot(ModComponent modComponent)
        {
            ModCookingPotComponent modCookingPotComponent = modComponent as ModCookingPotComponent;

            if (modCookingPotComponent == null)
            {
                return;
            }

            CookingPotItem cookingPotItem = ModUtils.GetOrCreateComponent <CookingPotItem>(modComponent);

            cookingPotItem.m_WaterCapacityLiters = modCookingPotComponent.Capacity;
            cookingPotItem.m_CanCookGrub         = modCookingPotComponent.CanCookGrub;
            cookingPotItem.m_CanCookLiquid       = modCookingPotComponent.CanCookLiquid;
            cookingPotItem.m_CanCookMeat         = modCookingPotComponent.CanCookMeat;
            cookingPotItem.m_CanOnlyWarmUpFood   = false;

            CookingPotItem template = ModUtils.GetItem <CookingPotItem>(modCookingPotComponent.Template, modComponent.name);

            cookingPotItem.m_BoilingTimeMultiplier                 = template.m_BoilingTimeMultiplier;
            cookingPotItem.m_BoilWaterPotMaterialsList             = template.m_BoilWaterPotMaterialsList;
            cookingPotItem.m_BoilWaterReadyMaterialsList           = template.m_BoilWaterReadyMaterialsList;
            cookingPotItem.m_ConditionPercentDamageFromBoilingDry  = template.m_ConditionPercentDamageFromBoilingDry;
            cookingPotItem.m_ConditionPercentDamageFromBurningFood = template.m_ConditionPercentDamageFromBurningFood;
            cookingPotItem.m_CookedCalorieMultiplier               = template.m_CookedCalorieMultiplier;
            cookingPotItem.m_CookingTimeMultiplier                 = template.m_CookingTimeMultiplier;
            cookingPotItem.m_GrubMeshType          = template.m_GrubMeshType;
            cookingPotItem.m_LampOilMultiplier     = template.m_LampOilMultiplier;
            cookingPotItem.m_MeltSnowMaterialsList = template.m_MeltSnowMaterialsList;
            cookingPotItem.m_NearFireWarmUpCookingTimeMultiplier = template.m_NearFireWarmUpCookingTimeMultiplier;
            cookingPotItem.m_NearFireWarmUpReadyTimeMultiplier   = template.m_NearFireWarmUpReadyTimeMultiplier;
            cookingPotItem.m_ParticlesItemCooking    = template.m_ParticlesItemCooking;
            cookingPotItem.m_ParticlesItemReady      = template.m_ParticlesItemReady;
            cookingPotItem.m_ParticlesItemRuined     = template.m_ParticlesItemRuined;
            cookingPotItem.m_ParticlesSnowMelting    = template.m_ParticlesSnowMelting;
            cookingPotItem.m_ParticlesWaterBoiling   = template.m_ParticlesWaterBoiling;
            cookingPotItem.m_ParticlesWaterReady     = template.m_ParticlesWaterReady;
            cookingPotItem.m_ParticlesWaterRuined    = template.m_ParticlesWaterRuined;
            cookingPotItem.m_ReadyTimeMultiplier     = template.m_ReadyTimeMultiplier;
            cookingPotItem.m_RuinedFoodMaterialsList = template.m_RuinedFoodMaterialsList;
            cookingPotItem.m_SnowMesh  = modCookingPotComponent.SnowMesh;
            cookingPotItem.m_WaterMesh = modCookingPotComponent.WaterMesh;

            GameObject grubMesh = UnityEngine.Object.Instantiate(template.m_GrubMeshFilter.gameObject, cookingPotItem.transform);

            cookingPotItem.m_GrubMeshFilter   = grubMesh.GetComponent <MeshFilter>();
            cookingPotItem.m_GrubMeshRenderer = grubMesh.GetComponent <MeshRenderer>();

            PlaceableItem placeableItem = ModUtils.GetOrCreateComponent <PlaceableItem>(modComponent);

            placeableItem.m_Range = template.GetComponent <PlaceableItem>()?.m_Range ?? 3;
        }
Esempio n. 12
0
        internal static void Configure(ModComponent modComponent)
        {
            ModScentComponent modScentComponent = ModUtils.GetComponent <ModScentComponent>(modComponent);

            if (modScentComponent == null)
            {
                return;
            }

            Scent scent = ModUtils.GetOrCreateComponent <Scent>(modScentComponent);

            scent.m_ScentCategory = ModUtils.TranslateEnumValue <ScentRangeCategory, ScentCategory>(modScentComponent.scentCategory);
        }
Esempio n. 13
0
        public static void Map(GameObject prefab)
        {
            if (prefab is null)
            {
                throw new ArgumentException("The prefab was NULL.");
            }

            ModComponent modComponent = ComponentUtils.GetModComponent(prefab);

            if (modComponent is null)
            {
                throw new ArgumentException("Prefab " + prefab.name + " does not contain a ModComponent.");
            }

            bool hasModPlaceHolder = !(ComponentUtils.GetComponent <ModPlaceHolderComponent>(prefab) is null);

            if (prefab.GetComponent <GearItem>() is null || hasModPlaceHolder)
            {
                ConfigureBehaviours(modComponent);

                EquippableMapper.Configure(modComponent);
                LiquidMapper.Configure(modComponent);
                PowderMapper.Configure(modComponent);
                FoodMapper.Configure(modComponent);
                CookableMapper.Configure(modComponent);
                CookingPotMapper.Configure(modComponent);
                RifleMapper.Configure(modComponent);
                ClothingMapper.Configure(modComponent);
                CollectibleMapper.Configure(modComponent);
                CharcoalMapper.Configure(modComponent);
                PurificationMapper.Configure(modComponent);
                ResearchMapper.Configure(modComponent);
                FirstAidMapper.Configure(modComponent);
                ToolMapper.Configure(modComponent);
                GenericEquippableMapper.Configure(modComponent);
                BedMapper.Configure(modComponent);
                BodyHarvestMapper.Configure(modComponent);

                if (hasModPlaceHolder)
                {
                    return;
                }

                InspectMapper.Configure(modComponent);
                ConfigureGearItem(modComponent);

                mappedItems.Add(modComponent);

                PostProcess(modComponent);
            }
        }
Esempio n. 14
0
        internal static void Configure(ModComponent modComponent)
        {
            ModCookableComponent modCookableComponent = modComponent.TryCast <ModCookableComponent>();

            if (modCookableComponent is null || !modCookableComponent.Cooking)
            {
                return;
            }

            Cookable cookable = ModComponentUtils.ComponentUtils.GetOrCreateComponent <Cookable>(modCookableComponent);

            cookable.m_CookableType               = ModComponentUtils.EnumUtils.TranslateEnumValue <Cookable.CookableType, CookableType>(modCookableComponent.type);
            cookable.m_CookTimeMinutes            = modCookableComponent.CookingMinutes;
            cookable.m_ReadyTimeMinutes           = modCookableComponent.BurntMinutes;
            cookable.m_NumUnitsRequired           = modCookableComponent.CookingUnitsRequired;
            cookable.m_PotableWaterRequiredLiters = modCookableComponent.CookingWaterRequired;
            cookable.m_WarmUpNearFireRange        = 1.5f;

            cookable.m_CookAudio     = ModComponentUtils.ModUtils.DefaultIfEmpty(modCookableComponent.CookingAudio, GetDefaultCookAudio(modCookableComponent));
            cookable.m_PutInPotAudio = ModComponentUtils.ModUtils.DefaultIfEmpty(modCookableComponent.StartCookingAudio, GetDefaultStartCookingAudio(modCookableComponent));

            Cookable template = ModComponentUtils.ComponentUtils.GetComponent <Cookable>(Resources.Load <GameObject>("GEAR_PinnacleCanPeaches"));

            cookable.m_MeshPotStyle       = template?.m_MeshPotStyle;
            cookable.m_MeshCanStyle       = template?.m_MeshCanStyle;
            cookable.m_LiquidMeshRenderer = template?.m_LiquidMeshRenderer;

            // either just heat or convert, but not both
            if (modCookableComponent.CookingResult is null)
            {
                // no conversion, just heating
                FoodItem foodItem = ModComponentUtils.ComponentUtils.GetComponent <FoodItem>(modCookableComponent);
                if (foodItem != null)
                {
                    foodItem.m_HeatedWhenCooked = true;
                }
            }
            else
            {
                // no heating, but instead convert the item when cooking completes
                GearItem cookedGearItem = modCookableComponent.CookingResult.GetComponent <GearItem>();
                if (cookedGearItem is null)
                {
                    // not mapped yet, do it now
                    AutoMapper.MapModComponent(modCookableComponent.CookingResult);
                    cookedGearItem = modCookableComponent.CookingResult.GetComponent <GearItem>();
                }

                cookable.m_CookedPrefab = cookedGearItem ?? throw new ArgumentException("CookingResult does not map to GearItem for prefab " + modCookableComponent.name);
            }
        }
Esempio n. 15
0
        private static void ConfigureEquippable(ModComponent modComponent)
        {
            EquippableModComponent equippableModComponent = modComponent as EquippableModComponent;

            if (equippableModComponent == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(equippableModComponent.InventoryActionLocalizationId) && !string.IsNullOrEmpty(equippableModComponent.ImplementationType))
            {
                equippableModComponent.InventoryActionLocalizationId = "GAMEPLAY_Equip";
            }
        }
Esempio n. 16
0
        public static void Postfix(GearItem gi, ref string __result)
        {
            if (__result != string.Empty)
            {
                return;
            }

            ModComponent modComponent = ModUtils.GetModComponent(gi);

            if (modComponent != null)
            {
                __result = modComponent.InventoryActionLocalizationId;
            }
        }
Esempio n. 17
0
        private static void ConfigureInspect(ModComponent modComponent)
        {
            if (!modComponent.InspectOnPickup)
            {
                return;
            }

            Inspect inspect = ModUtils.GetOrCreateComponent <Inspect>(modComponent);

            inspect.m_DistanceFromCamera = modComponent.InspectDistance;
            inspect.m_Scale  = modComponent.InspectScale;
            inspect.m_Angles = modComponent.InspectAngles;
            inspect.m_Offset = modComponent.InspectOffset;
        }
Esempio n. 18
0
        public static MappedItem Map(GameObject prefab)
        {
            if (prefab == null)
            {
                throw new ArgumentException("The prefab was NULL.");
            }

            ModComponent modComponent = ModUtils.GetModComponent(prefab);

            if (modComponent == null)
            {
                throw new ArgumentException("Prefab " + prefab.name + " does not contain a ModComponent.");
            }

            if (prefab.GetComponent <GearItem>() == null)
            {
                Implementation.Log("Mapping {0}", prefab.name);

                InspectMapper.Configure(modComponent);
                HarvestableMapper.Configure(modComponent);
                RepairableMapper.Configure(modComponent);
                FireStarterMapper.Configure(modComponent);
                ConfigureAccelerant(modComponent);
                ConfigureStackable(modComponent);
                ConfigureBurnable(modComponent);
                ScentMapper.Configure(modComponent);
                SharpenableMapper.Configure(modComponent);
                EvolveMapper.Configure(modComponent);

                ConfigureEquippable(modComponent);
                ConfigureLiquidItem(modComponent);
                ConfigureFood(modComponent);
                CookableMapper.Configure(modComponent);
                ConfigureCookingPot(modComponent);
                ConfigureRifle(modComponent);
                ClothingMapper.ConfigureClothing(modComponent);
                FirstAidMapper.Configure(modComponent);
                ToolMapper.Configure(modComponent);
                BedMapper.Configure(modComponent);

                ConfigureGearItem(modComponent);

                mappedItems.Add(modComponent);

                PostProcess(modComponent);
            }

            return(new MappedItem(prefab));
        }
Esempio n. 19
0
 internal static void ConfigureBehaviours(ModComponent modComponent)
 {
     AccelerantMapper.Configure(modComponent);
     BurnableMapper.Configure(modComponent);
     FireStarterMapper.Configure(modComponent);
     TinderMapper.Configure(modComponent);
     CarryingCapacityMapper.Configure(modComponent);
     EvolveMapper.Configure(modComponent);
     HarvestableMapper.Configure(modComponent);
     MillableMapper.Configure(modComponent);
     RepairableMapper.Configure(modComponent);
     ScentMapper.Configure(modComponent);
     SharpenableMapper.Configure(modComponent);
     StackableMapper.Configure(modComponent);
 }
Esempio n. 20
0
        internal static void Configure(ModComponent modComponent)
        {
            ModPowderComponent modPowderComponent = modComponent.TryCast <ModPowderComponent>();

            if (modPowderComponent is null)
            {
                return;
            }

            PowderItem powderItem = ModComponentUtils.ComponentUtils.GetOrCreateComponent <PowderItem>(modComponent);

            powderItem.m_Type          = ModComponentUtils.EnumUtils.TranslateEnumValue <GearPowderType, PowderType>(modPowderComponent.PowderType);
            powderItem.m_WeightLimitKG = modPowderComponent.CapacityKG;
            powderItem.m_WeightKG      = modPowderComponent.CapacityKG;
        }
        public static void Postfix(GearItem gi, ref string __result)
        {
            if (__result != string.Empty)
            {
                return;
            }

            ModComponent modComponent = ModComponentUtils.ComponentUtils.GetModComponent(gi);

            if (modComponent != null)
            {
                //Strangely, this is what allows items to be equipped
                __result = modComponent.InventoryActionLocalizationId;
            }
        }
Esempio n. 22
0
        internal static void Configure(ModComponent modComponent)
        {
            EquippableModComponent equippableModComponent = modComponent.TryCast <EquippableModComponent>();

            if (equippableModComponent is null)
            {
                return;
            }

            if (string.IsNullOrEmpty(equippableModComponent.InventoryActionLocalizationId) &&
                !string.IsNullOrEmpty(equippableModComponent.ImplementationType) &&
                !string.IsNullOrEmpty(equippableModComponent.EquippedModelPrefabName))
            {
                equippableModComponent.InventoryActionLocalizationId = "GAMEPLAY_Equip";
            }
        }
Esempio n. 23
0
        internal static void ConfigureBehaviours(GameObject prefab)
        {
            if (prefab is null)
            {
                throw new ArgumentException("The prefab was NULL.");
            }

            ModComponent modComponent = ComponentUtils.GetModComponent(prefab);

            if (modComponent is null)
            {
                throw new ArgumentException("Prefab " + prefab.name + " does not contain a ModComponent.");
            }

            ConfigureBehaviours(modComponent);
        }
Esempio n. 24
0
        internal static void Configure(ModComponent modComponent)
        {
            ModCharcoalComponent modCharcoal = modComponent.TryCast <ModCharcoalComponent>();

            if (modCharcoal is null)
            {
                return;
            }

            CharcoalItem charcoalItem = ModComponentUtils.ComponentUtils.GetOrCreateComponent <CharcoalItem>(modCharcoal);

            charcoalItem.m_SurveyGameMinutes        = modCharcoal.SurveyGameMinutes;
            charcoalItem.m_SurveyLoopAudio          = modCharcoal.SurveyLoopAudio;
            charcoalItem.m_SurveyRealSeconds        = modCharcoal.SurveyRealSeconds;
            charcoalItem.m_SurveySkillExtendedHours = modCharcoal.SurveySkillExtendedHours;
        }
Esempio n. 25
0
        private static void ConfigureAccelerant(ModComponent modComponent)
        {
            ModAccelerantComponent modAccelerantComponent = ModUtils.GetComponent <ModAccelerantComponent>(modComponent);

            if (modAccelerantComponent == null)
            {
                return;
            }

            FireStarterItem fireStarterItem = ModUtils.GetOrCreateComponent <FireStarterItem>(modAccelerantComponent);

            fireStarterItem.m_IsAccelerant = true;
            fireStarterItem.m_FireStartDurationModifier = modAccelerantComponent.DurationOffset;
            fireStarterItem.m_FireStartSkillModifier    = modAccelerantComponent.SuccessModifier;
            fireStarterItem.m_ConsumeOnUse = modAccelerantComponent.DestroyedOnUse;
        }
Esempio n. 26
0
        internal static void Configure(ModComponent modComponent)
        {
            ModResearchComponent modResearch = modComponent.TryCast <ModResearchComponent>();

            if (modResearch is null)
            {
                return;
            }

            ResearchItem researchItem = ModComponentUtils.ComponentUtils.GetOrCreateComponent <ResearchItem>(modResearch);

            researchItem.m_ReadAudio             = modResearch.ReadAudio;
            researchItem.m_SkillPoints           = modResearch.SkillPoints;
            researchItem.m_NoBenefitAtSkillLevel = modResearch.NoBenefitAtSkillLevel;
            researchItem.m_SkillType             = ModComponentUtils.EnumUtils.TranslateEnumValue <SkillType, ModComponentAPI.SkillType>(modResearch.SkillType);
            researchItem.m_TimeRequirementHours  = modResearch.TimeRequirementHours;
        }
Esempio n. 27
0
        private static void ConfigureRifle(ModComponent modComponent)
        {
            ModRifleComponent modRifleComponent = modComponent as ModRifleComponent;

            if (modRifleComponent == null)
            {
                return;
            }

            GunItem gunItem = ModUtils.GetOrCreateComponent <GunItem>(modRifleComponent);

            gunItem.m_GunType        = GunType.Rifle;
            gunItem.m_AmmoPrefab     = (GameObject)Resources.Load("GEAR_RifleAmmoSingle");
            gunItem.m_AmmoSpriteName = "ico_units_ammo";

            gunItem.m_AccuracyRange          = modRifleComponent.Range;
            gunItem.m_ClipSize               = modRifleComponent.ClipSize;
            gunItem.m_DamageHP               = modRifleComponent.DamagePerShot;
            gunItem.m_FiringRateSeconds      = modRifleComponent.FiringDelay;
            gunItem.m_MuzzleFlash_FlashDelay = modRifleComponent.MuzzleFlashDelay;
            gunItem.m_MuzzleFlash_SmokeDelay = modRifleComponent.MuzzleSmokeDelay;
            gunItem.m_ReloadCoolDownSeconds  = modRifleComponent.ReloadDelay;

            gunItem.m_DryFireAudio = "Play_RifleDryFire";
            gunItem.m_ImpactAudio  = "Play_BulletImpacts";

            gunItem.m_SwayIncreasePerSecond = modRifleComponent.SwayIncrement;
            gunItem.m_SwayValueZeroFatigue  = modRifleComponent.MinSway;
            gunItem.m_SwayValueMaxFatigue   = modRifleComponent.MaxSway;

            Cleanable cleanable = ModUtils.GetOrCreateComponent <Cleanable>(modRifleComponent);

            cleanable.m_ConditionIncreaseMin = 2;
            cleanable.m_ConditionIncreaseMin = 5;
            cleanable.m_DurationMinutesMin   = 15;
            cleanable.m_DurationMinutesMax   = 5;
            cleanable.m_CleanAudio           = "Play_RifleCleaning";
            cleanable.m_RequiresToolToClean  = true;
            cleanable.m_CleanToolChoices     = new ToolsItem[] { Resources.Load <GameObject>("GEAR_RifleCleaningKit").GetComponent <ToolsItem>() };

            FirstPersonItem firstPersonItem = ConfiguredRifleFirstPersonItem(modRifleComponent);

            ModAnimationStateMachine animation = ModUtils.GetOrCreateComponent <ModAnimationStateMachine>(modRifleComponent);

            animation.SetTransitions(firstPersonItem.m_PlayerStateTransitions);
        }
        internal static void Configure(ModComponent modComponent)
        {
            ModEvolveComponent modEvolveComponent = ModUtils.GetComponent <ModEvolveComponent>(modComponent);

            if (modEvolveComponent == null)
            {
                return;
            }

            EvolveItem evolveItem = ModUtils.GetOrCreateComponent <EvolveItem>(modEvolveComponent);

            evolveItem.m_ForceNoAutoEvolve    = false;
            evolveItem.m_GearItemToBecome     = GetTargetItem(modEvolveComponent.TargetItemName, modEvolveComponent.name);
            evolveItem.m_RequireIndoors       = modEvolveComponent.IndoorsOnly;
            evolveItem.m_StartEvolvePercent   = 0;
            evolveItem.m_TimeToEvolveGameDays = Mathf.Clamp(modEvolveComponent.EvolveHours / 24f, 0.01f, 1000);
        }
Esempio n. 29
0
        private static void ConfigureLiquidItem(ModComponent modComponent)
        {
            ModLiquidItemComponent modLiquidItemComponent = modComponent as ModLiquidItemComponent;

            if (modLiquidItemComponent == null)
            {
                return;
            }

            LiquidItem liquidItem = ModUtils.GetOrCreateComponent <LiquidItem>(modComponent);

            liquidItem.m_LiquidCapacityLiters = modLiquidItemComponent.MaxLiters;
            liquidItem.m_LiquidType           = ModUtils.TranslateEnumValue <GearLiquidTypeEnum, LiquidType>(modLiquidItemComponent.LiquidType);
            liquidItem.m_RandomizeQuantity    = false;
            liquidItem.m_LiquidLiters         = 0;
            liquidItem.m_DrinkingAudio        = "Play_DrinkWater";
            liquidItem.m_TimeToDrinkSeconds   = 4;
        }
Esempio n. 30
0
        private static void ConfigureBurnable(ModComponent modComponent)
        {
            ModBurnableComponent modBurnableComponent = ModUtils.GetComponent <ModBurnableComponent>(modComponent);

            if (modBurnableComponent == null)
            {
                return;
            }

            FuelSourceItem fuelSourceItem = ModUtils.GetOrCreateComponent <FuelSourceItem>(modComponent);

            fuelSourceItem.m_BurnDurationHours          = modBurnableComponent.BurningMinutes / 60f;
            fuelSourceItem.m_FireAgeMinutesBeforeAdding = modBurnableComponent.BurningMinutesBeforeAllowedToAdd;
            fuelSourceItem.m_FireStartSkillModifier     = modBurnableComponent.SuccessModifier;
            fuelSourceItem.m_HeatIncrease    = modBurnableComponent.TempIncrease;
            fuelSourceItem.m_HeatInnerRadius = 2.5f;
            fuelSourceItem.m_HeatOuterRadius = 6f;
        }