static void Postfix(FireStarterItem __instance) { if (__instance.name == "GEAR_Torch") { __instance.m_ConditionDegradeOnUse = 100; __instance.m_ConsumeOnUse = true; __instance.m_FireStartSkillModifier = 15; } }
public static void Configure(GameObject prefab) { ModAccelerantComponent modAccelerantComponent = ComponentUtils.GetComponent <ModAccelerantComponent>(prefab); if (modAccelerantComponent is null) { return; } FireStarterItem fireStarterItem = ComponentUtils.GetOrCreateComponent <FireStarterItem>(modAccelerantComponent); fireStarterItem.m_IsAccelerant = true; fireStarterItem.m_FireStartDurationModifier = modAccelerantComponent.DurationOffset; fireStarterItem.m_FireStartSkillModifier = modAccelerantComponent.SuccessModifier; fireStarterItem.m_ConsumeOnUse = modAccelerantComponent.DestroyedOnUse; }
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 SaveLastUsedFireRessources(Panel_FireStart instance) { FireStarterItem fireStarter = instance.GetSelectedFireStarter(); FuelSourceItem tinder = instance.GetSelectedTinder(); FuelSourceItem fuel = instance.GetSelectedFuelSource(); FireStarterItem accelerant = instance.GetSelectedAccelerant(); if (fireStarter) { var fireStarterGi = fireStarter.GetComponent <GearItem>(); if (!fireStarterGi.m_TorchItem && !fireStarterGi.m_FlareItem) { LastFireStarterID = fireStarterGi.m_InstanceID; LastFireStarterName = fireStarterGi.m_GearName; } } else { LastFireStarterID = -1; LastFireStarterName = ""; } if (tinder) { LastTinderName = tinder.GetComponent <GearItem>().m_GearName; } else { LastTinderName = ""; } if (fuel) { LastFuelName = fuel.GetComponent <GearItem>().m_GearName; } else { LastFuelName = ""; } if (accelerant) { LastAccelerantName = accelerant.GetComponent <GearItem>().m_GearName; } else { LastAccelerantName = ""; } }
// COPY of CalclateFireStartSuccess with tinder added public static float CalculateFireStartSuccess(FireStarterItem starter, FuelSourceItem tinder, FuelSourceItem fuel, FireStarterItem accelerant) { if (starter == null || fuel == null) { return(0f); } float successChance = GameManager.GetSkillFireStarting().GetBaseChanceSuccess(); successChance += starter.m_FireStartSkillModifier; // successChance += tinder.m_FireStartSkillModifier; // old values successChance += GetModifiedFireStartSkillModifier(tinder); successChance += fuel.m_FireStartSkillModifier; if (accelerant) { successChance += accelerant.m_FireStartSkillModifier; } return(Mathf.Clamp(successChance, 0f, 100f)); }
private static int CompareFireStarters(GearItem item1, GearItem item2) { if (item1.m_TorchItem?.IsBurning() == true && item2.m_TorchItem?.IsBurning() != true) { return(-1); } if (item1.m_TorchItem?.IsBurning() != true && item2.m_TorchItem?.IsBurning() == true) { return(1); } if (item1.m_FlareItem?.IsBurning() == true && item2.m_FlareItem?.IsBurning() != true) { return(-1); } if (item1.m_FlareItem?.IsBurning() != true && item2.m_FlareItem?.IsBurning() == true) { return(1); } FireStarterItem fireStarter1 = item1.m_FireStarterItem; FireStarterItem fireStarter2 = item2.m_FireStarterItem; if (!fireStarter1.m_RequiresSunLight && fireStarter2.m_RequiresSunLight) { return(-1); } if (fireStarter1.m_RequiresSunLight && !fireStarter2.m_RequiresSunLight) { return(1); } int chanceComparison = fireStarter1.m_FireStartSkillModifier.CompareTo(fireStarter2.m_FireStartSkillModifier); if (chanceComparison != 0) { return(-chanceComparison); } return(item1.m_DisplayName.CompareTo(item2.m_DisplayName)); }
internal static void Postfix(FireStarterItem starter, bool __result) { if (!__result) { return; } ModFireStarterComponent modFireStarterComponent = ModComponentUtils.ComponentUtils.GetComponent <ModFireStarterComponent>(starter); if (modFireStarterComponent is null || !modFireStarterComponent.RuinedAfterUse) { return; } GearItem gearItem = starter.GetComponent <GearItem>(); if (gearItem != null) { gearItem.BreakOnUse(); } }
internal static void Configure(ModComponent modComponent) { ModFireStarterComponent modFireStarterComponent = ModComponentUtils.ComponentUtils.GetComponent <ModFireStarterComponent>(modComponent); if (modFireStarterComponent is null) { return; } FireStarterItem fireStarterItem = ModComponentUtils.ComponentUtils.GetOrCreateComponent <FireStarterItem>(modFireStarterComponent); fireStarterItem.m_SecondsToIgniteTinder = modFireStarterComponent.SecondsToIgniteTinder; fireStarterItem.m_SecondsToIgniteTorch = modFireStarterComponent.SecondsToIgniteTorch; fireStarterItem.m_FireStartSkillModifier = modFireStarterComponent.SuccessModifier; fireStarterItem.m_ConditionDegradeOnUse = Mapper.GetDecayPerStep(modFireStarterComponent.NumberOfUses, modComponent.MaxHP); fireStarterItem.m_ConsumeOnUse = modFireStarterComponent.DestroyedOnUse; fireStarterItem.m_RequiresSunLight = modFireStarterComponent.RequiresSunLight; fireStarterItem.m_OnUseSoundEvent = modFireStarterComponent.OnUseSoundEvent; }
public static int CompareFireStartersIgniteChance(GearItem g1, GearItem g2) { FireStarterItem fireStarterItem1 = g1.GetComponent <FireStarterItem>(); FireStarterItem fireStarterItem2 = g2.GetComponent <FireStarterItem>(); if (fireStarterItem1.m_RequiresSunLight && !InterfaceManager.m_Panel_FireStart.HasDirectSunlight()) { return(1); //g1 to the back } if (fireStarterItem2.m_RequiresSunLight && !InterfaceManager.m_Panel_FireStart.HasDirectSunlight()) { return(-1); //g1 to the front } if (fireStarterItem1.m_FireStartSkillModifier < fireStarterItem2.m_FireStartSkillModifier) { return(1); //g1 to the back } else if (fireStarterItem1.m_FireStartSkillModifier > fireStarterItem2.m_FireStartSkillModifier) { return(-1); //g1 to the front } return(0); }
static bool Prefix(Panel_FireStart __instance, Campfire ___m_CampFireInstance, FireStarterItem ___m_KeroseneAccelerant, FireManager ___m_FireManager, bool skipResearchItemCheck = false) { var traverseInstance = Traverse.Create(__instance); traverseInstance.Field("m_FireManager").SetValue(GameManager.GetFireManagerComponent()); var selectedFireStarter = traverseInstance.Method("GetSelectedFireStarter").GetValue <FireStarterItem>(); var selectedTinder = traverseInstance.Method("GetSelectedTinder").GetValue <FuelSourceItem>(); var selectedFuelSource = traverseInstance.Method("GetSelectedFuelSource").GetValue <FuelSourceItem>(); var selectedAccelerant = traverseInstance.Method("GetSelectedAccelerant").GetValue <FireStarterItem>(); if (___m_CampFireInstance && ___m_CampFireInstance.TooWindyToStart()) { GameAudioManager.PlayGUIError(); HUDMessage.AddMessage(Localization.Get("GAMEPLAY_Itstoowindytostartafirethere"), false); return(false); } if (selectedFireStarter == null || (GameManager.GetSkillFireStarting().TinderRequired() && selectedTinder == null) || selectedFuelSource == null) { GameAudioManager.PlayGUIError(); HUDMessage.AddMessage(Localization.Get("GAMEPLAY_Insufficientmaterialstocreatefire"), false); return(false); } if (selectedFireStarter.m_RequiresSunLight && !traverseInstance.Method("HasDirectSunlight").GetValue <bool>()) { GameAudioManager.PlayGUIError(); HUDMessage.AddMessage(Localization.Get("GAMEPLAY_Magnifyinglensrequiresdirectsunlight"), false); return(false); } if (!skipResearchItemCheck) { ResearchItem component = selectedFuelSource.GetComponent <ResearchItem>(); if (component != null && !component.IsResearchComplete()) { Panel_Confirmation.CallbackDelegate forceBurnResearchItem = () => traverseInstance.Method("ForceBurnResearchItem").GetValue(); InterfaceManager.m_Panel_Confirmation.ShowBurnResearchNotification(forceBurnResearchItem); return(false); } } if (selectedAccelerant != null && selectedAccelerant == ___m_KeroseneAccelerant) { GameManager.GetPlayerManagerComponent().DeductLiquidFromInventory(GameManager.GetFireManagerComponent().m_KeroseneLitersAccelerant, GearLiquidTypeEnum.Kerosene); } float percentChanceSuccess = TinderHelper.CalculateFireStartSuccess(selectedFireStarter, selectedTinder, selectedFuelSource, selectedAccelerant); ___m_FireManager.PlayerStartFire(___m_CampFireInstance, selectedFireStarter, selectedTinder, selectedFuelSource, selectedAccelerant, percentChanceSuccess); __instance.Enable(false); GameAudioManager.PlayGuiConfirm(); return(false); }