Exemplo n.º 1
0
        internal static float GetModifiedFireStartSkillModifier(FuelSourceItem fs)
        {
            if (fs.name.Contains("GEAR_NewsprintRoll"))
            {
                return(Settings.options.tinderBonusNewsprintRoll);
            }
            if (fs.name.Contains("GEAR_PaperStack"))
            {
                return(Settings.options.tinderBonusPaper);
            }
            if (fs.name.Contains("GEAR_Newsprint"))
            {
                return(Settings.options.tinderBonusNewsprint);
            }
            if (fs.name.Contains("GEAR_CashBundle"))
            {
                return(Settings.options.tinderBonusCash);
            }
            if (fs.name.Contains("GEAR_BarkTinder"))
            {
                return(Settings.options.tinderBonusBark);
            }
            if (fs.name.Contains("GEAR_Tinder"))
            {
                return(Settings.options.tinderBonusPlug);
            }
            if (fs.name.Contains("GEAR_CattailTinder"))
            {
                return(Settings.options.tinderBonusCattail);
            }

            MelonLogger.LogWarning("MISSING TINDER " + fs.name);
            return(0);
        }
Exemplo n.º 2
0
 private static void Prefix(FuelSourceItem tinder, ref float percentChanceSuccess)
 {
     if (Settings.options.tinderMatters && tinder)
     {
         percentChanceSuccess += FireAddons.GetModifiedFireStartSkillModifier(tinder);
         percentChanceSuccess  = Mathf.Clamp(percentChanceSuccess, 0f, 100f);
     }
 }
Exemplo n.º 3
0
        private static bool Prefix(FuelSourceItem __instance, float normalizedCondition, ref float __result)
        {
            GearItem component = __instance.GetComponent <GearItem>();

            if (!component)
            {
                return(false);
            }
            __result = Fire_RV.getModifiedDuration(component);
            return(false);
        }
Exemplo n.º 4
0
 private static void Postfix(Panel_FireStart __instance)
 {
     if (Settings.options.tinderMatters)
     {
         __instance.m_FireManager = GameManager.GetFireManagerComponent();
         FuelSourceItem tinder = __instance.GetSelectedTinder();
         if (tinder)
         {
             float num = float.Parse(__instance.m_Label_ChanceSuccess.text.Replace("%", ""));
             num += FireAddons.GetModifiedFireStartSkillModifier(tinder);
             num  = Mathf.Clamp(num, 0f, 100f);
             __instance.m_Label_ChanceSuccess.text = num.ToString("F0") + "%";
         }
     }
 }
Exemplo n.º 5
0
        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 = "";
            }
        }
Exemplo n.º 6
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;
        }
Exemplo n.º 7
0
        // 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));
        }
Exemplo n.º 8
0
            private static void Postfix(Panel_FeedFire __instance)
            {
                Inventory inventoryComponent = GameManager.GetInventoryComponent();

                foreach (GearItemObject item in inventoryComponent.m_Items)
                {
                    GearItem gearItem = item;
                    if ((bool)gearItem)
                    {
                        FuelSourceItem fuelSourceItem = gearItem.m_FuelSourceItem;
                        if ((bool)fuelSourceItem)
                        {
                            if (FireAddons.IsNamedTinder(gearItem))
                            {
                                gearItem.m_FuelSourceItem.m_IsTinder = true;
                            }
                        }
                    }
                }
            }
Exemplo n.º 9
0
            private static void Prefix(Panel_FeedFire __instance)
            {
                Inventory inventoryComponent = GameManager.GetInventoryComponent();

                foreach (GearItemObject item in inventoryComponent.m_Items)
                {
                    GearItem gearItem = item;
                    if ((bool)gearItem)
                    {
                        FuelSourceItem fuelSourceItem = gearItem.m_FuelSourceItem;
                        if ((bool)fuelSourceItem)
                        {
                            if (Settings.options.embersSystem && (gearItem.name.ToLower().Contains("recycledcan") || gearItem.name.ToLower().Contains("cookingpot")))
                            {
                                FireAddons.ModifyWater(gearItem, false);
                            }
                        }
                    }
                }
            }
Exemplo n.º 10
0
        public static float GetModifiedFireStartSkillModifier(FuelSourceItem __instance)
        {
            var settings = TinderMattersSettings.Instance;

            if (__instance == null) // No tinder at all (level 3+)
            {
                return(settings.ModifierNoTinder);
            }
            if (__instance.name == "GEAR_NewsprintRoll")
            {
                return(settings.ModifierNewsprintRoll);
            }
            if (__instance.name == "GEAR_PaperStack")
            {
                return(settings.ModifierPaperStack);
            }
            if (__instance.name == "GEAR_Newsprint")
            {
                return(settings.ModifierNewsprint);
            }
            if (__instance.name == "GEAR_CashBundle")
            {
                return(settings.ModifierCashBundle);
            }
            if (__instance.name == "GEAR_BarkTinder")
            {
                return(settings.ModifierBirchBark);
            }
            if (__instance.name == "GEAR_Tinder")
            {
                return(settings.ModifierTinderPlug);
            }
            if (__instance.name == "GEAR_CattailTinder")
            {
                return(settings.ModifierCattailHead);
            }

            Debug.LogWarning("[TinderMatters] MISSING TINDER " + __instance.name);
            return(0);
        }
Exemplo n.º 11
0
        public static void Configure(GameObject prefab)
        {
            ModTinderComponent modBurnableComponent = ComponentUtils.GetComponent <ModTinderComponent>(prefab);

            if (modBurnableComponent is null)
            {
                return;
            }

            FuelSourceItem fuelSourceItem = ComponentUtils.GetOrCreateComponent <FuelSourceItem>(modBurnableComponent);

            fuelSourceItem.m_BurnDurationHours          = 0.02f;
            fuelSourceItem.m_FireAgeMinutesBeforeAdding = 0;
            fuelSourceItem.m_FireStartSkillModifier     = modBurnableComponent.SuccessModifier;
            fuelSourceItem.m_HeatIncrease              = 5;
            fuelSourceItem.m_HeatInnerRadius           = 2.5f;
            fuelSourceItem.m_HeatOuterRadius           = 6f;
            fuelSourceItem.m_FireStartDurationModifier = modBurnableComponent.DurationOffset;
            fuelSourceItem.m_IsWet                = false;
            fuelSourceItem.m_IsTinder             = true;
            fuelSourceItem.m_IsBurntInFireTracked = false;
        }
Exemplo n.º 12
0
        private static bool Prefix(Fire __instance, FuelSourceItem fuel, bool maskTempIncrease, ref float ___m_FuelHeatIncrease, ref float ___m_ElapsedOnTODSeconds, ref float ___m_ElapsedOnTODSecondsUnmodified, ref float ___m_MaxOnTODSeconds, FireState ___m_FireState)
        {
            GearItem component = fuel.GetComponent <GearItem>();

            if (!component)
            {
                return(false);
            }
            //Fire_RV.PrintHierarchy(__instance.gameObject);



            __instance.m_HeatSource.TurnOn();
            __instance.m_HeatSource.m_MaskTempIncrease           = maskTempIncrease;
            __instance.m_HeatSource.m_MaxTempIncrease           += Fire_RV.getModifiedHeatIncrease(component);
            __instance.m_HeatSource.m_MaxTempIncreaseInnerRadius = fuel.m_HeatInnerRadius;

            float         outradscale = (float)AccessTools.Method(typeof(Fire), "GetFireOuterRadiusScale").Invoke(__instance, null);
            HeatReservoir reservoir   = Fire_RV.GetHeatReservoir(Utils.GetGuidFromGameObject(__instance.gameObject));

            if (reservoir == null)
            {
                __instance.m_HeatSource.m_MaxTempIncreaseOuterRadius = fuel.m_HeatOuterRadius * outradscale;
            }
            else
            {
                __instance.m_HeatSource.m_MaxTempIncreaseOuterRadius = fuel.m_HeatOuterRadius * outradscale + reservoir.heatingsize;
            }
            if (__instance.m_FX)
            {
                __instance.m_FX.TriggerStage(___m_FireState, true, true);
            }
            ___m_FuelHeatIncrease              = __instance.m_HeatSource.m_MaxTempIncrease;
            ___m_ElapsedOnTODSeconds           = 0f;
            ___m_ElapsedOnTODSecondsUnmodified = 0f;
            ___m_MaxOnTODSeconds = Fire_RV.getStoveDurationModifier(__instance.gameObject) * Fire_RV.getModifiedDuration(component) * 60f * 60f;
            return(false);
        }
Exemplo n.º 13
0
        private static void Postfix(Panel_FeedFire __instance, ref List <GearItem> ___m_FuelSourcesList)
        {
            Inventory inventoryComponent = GameManager.GetInventoryComponent();

            foreach (GearItemObject item in inventoryComponent.m_Items)
            {
                GearItem gearItem = item;
                if ((bool)gearItem)
                {
                    FuelSourceItem fuelSourceItem = gearItem.m_FuelSourceItem;
                    if ((bool)fuelSourceItem)
                    {
                        foreach (string tinder in Lists.tinderitems)
                        {
                            if (gearItem.name == tinder)
                            {
                                gearItem.m_FuelSourceItem.m_IsTinder = true;
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 14
0
        private static bool Prefix(Panel_FeedFire __instance, Fire ___m_Fire, GameObject ___m_FireContainer, GearItem ___m_ResearchItemToBurn)
        {
            if ((bool)AccessTools.Method(typeof(Panel_FeedFire), "ProgressBarIsActive").Invoke(__instance, null))
            {
                GameAudioManager.PlayGUIError();
                return(false);
            }
            GearItem selectedFuelSource = (GearItem)AccessTools.Method(typeof(Panel_FeedFire), "GetSelectedFuelSource").Invoke(__instance, null);

            if (selectedFuelSource == null)
            {
                GameAudioManager.PlayGUIError();
                return(false);
            }
            FuelSourceItem fuelSourceItem = selectedFuelSource.m_FuelSourceItem;

            if (fuelSourceItem == null)
            {
                GameAudioManager.PlayGUIError();
                return(false);
            }
            if (!___m_FireContainer)
            {
                GameAudioManager.PlayGUIError();
                return(false);
            }
            if (!___m_Fire)
            {
                return(false);
            }
            if (___m_Fire.FireShouldBlowOutFromWind())
            {
                HUDMessage.AddMessage(Localization.Get("GAMEPLAY_TooWindyToAddFuel"), false);
                GameAudioManager.PlayGUIError();
                return(false);
            }
            bool flag = true;

            if ((bool)AccessTools.Method(typeof(Panel_FeedFire), "FireInForge").Invoke(__instance, null) && fuelSourceItem.m_FireAgeMinutesBeforeAdding > 0f)
            {
                flag = false;
            }
            flag = false; //allow any duration of fire
            if (flag)
            {
                float num  = fuelSourceItem.GetModifiedBurnDurationHours(selectedFuelSource.GetNormalizedCondition()) * 60f;
                float num2 = ___m_Fire.GetRemainingLifeTimeSeconds() / 60f;
                float num3 = (num + num2) / 60f;
                if (num3 > GameManager.GetFireManagerComponent().m_MaxDurationHoursOfFire)
                {
                    GameAudioManager.PlayGUIError();
                    HUDMessage.AddMessage(Localization.Get("GAMEPLAY_CannotAddMoreFuel"), false);
                    return(false);
                }
            }
            int num4 = Mathf.RoundToInt(fuelSourceItem.m_FireAgeMinutesBeforeAdding - ___m_Fire.GetUnmodifiedMinutesBurning() - 10);

            if (num4 >= 1)
            {
                string text = Localization.Get("GAMEPLAY_BurnTimeNeededForCoal");
                text = text.Replace("{minutes}", num4.ToString());
                HUDMessage.AddMessage(text, false);
                GameAudioManager.PlayGUIError();
                return(false);
            }
            if (selectedFuelSource.m_ResearchItem && !selectedFuelSource.m_ResearchItem.IsResearchComplete())
            {
                ___m_ResearchItemToBurn = selectedFuelSource;
                InterfaceManager.m_Panel_Confirmation.ShowBurnResearchNotification(() => { AccessTools.Method(typeof(Panel_FeedFire), "ForceBurnResearchItem", null, null).Invoke(__instance, null); });
                return(false);
            }
            if (selectedFuelSource == GameManager.GetPlayerManagerComponent().m_ItemInHands)
            {
                GameManager.GetPlayerManagerComponent().UnequipItemInHandsSkipAnimation();
            }
            if (selectedFuelSource == GameManager.GetPlayerManagerComponent().m_PickupGearItem)
            {
                GameManager.GetPlayerManagerComponent().ResetPickup();
            }
            GameAudioManager.PlaySound(__instance.m_FeedFireAudio, InterfaceManager.GetSoundEmitter());
            ___m_Fire.AddFuel(selectedFuelSource, (bool)AccessTools.Method(typeof(Panel_FeedFire), "FireInForge").Invoke(__instance, null));
            GameManager.GetPlayerManagerComponent().ConsumeUnitFromInventory(fuelSourceItem.gameObject);
            return(false);
        }