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; }
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; }
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; }
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; }
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); }
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); } }
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); }
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); }
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); }
private static void MapModComponent(GameObject prefab) { ModComponent modComponent = ModUtils.GetModComponent(prefab); if (modComponent == null) { return; } Mapper.Map(prefab); }
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; }
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); }
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); } }
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); } }
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"; } }
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; } }
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; }
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)); }
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); }
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; } }
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"; } }
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); }
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; }
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; }
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; }
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); }
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; }
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; }