Esempio n. 1
0
 private bool Prompted(IJunimoAbility ability)
 {
     if (ability.AbilityName() == "ClearDeadCrops")
     {
         return(ProgData.ClearDeadCropsPrompted);
     }
     if (ability.AbilityName() == "Fertilize")
     {
         return(ProgData.FertilizePrompted);
     }
     if (ability.AbilityName() == "HarvestBushes")
     {
         return(ProgData.HarvestBushesPrompted);
     }
     if (ability.AbilityName() == "HarvestForageCrops")
     {
         return(ProgData.HarvestForageCropsPrompted);
     }
     if (ability.AbilityName() == "PlantCrops")
     {
         return(ProgData.PlantCropsPrompted);
     }
     if (ability.AbilityName() == "Water")
     {
         return(ProgData.WaterPrompted);
     }
     if (ability.AbilityName() == "HarvestCrops")
     {
         return(true);
     }
     Monitor.Log($"Prompted: progression checked for {ability.AbilityName()} but not implemented", LogLevel.Debug);
     return(true);
 }
Esempio n. 2
0
        /*
         * Add an IJunimoAbility to the list of possible actions if allowed
         */
        public void RegisterJunimoAbility(IJunimoAbility junimoAbility)
        {
            string name = junimoAbility.AbilityName();

            if (!EnabledAbilities.ContainsKey(name))
            {
                EnabledAbilities.Add(name, true);
            }
            if (EnabledAbilities[name])
            {
                JunimoCapabilities.Add(junimoAbility);
            }
        }
Esempio n. 3
0
        public void PromptForAbility(IJunimoAbility ability)
        {
            if (Unlocked(ability) || Prompted(ability))
            {
                return;
            }
            string an = ability.AbilityName();

            switch (an)
            {
            case "ClearDeadCrops":
                Util.SendMessage(GetPromptText(an, Config.Progression.ClearDeadCrops.Item, Config.Progression.ClearDeadCrops.Stack));
                ProgData.ClearDeadCropsPrompted = true;
                break;

            case "Fertilize":
                Util.SendMessage(GetPromptText(an, Config.Progression.Fertilize.Item, Config.Progression.Fertilize.Stack));
                ProgData.FertilizePrompted = true;
                break;

            case "HarvestBushes":
                Util.SendMessage(GetPromptText(an, Config.Progression.HarvestBushes.Item, Config.Progression.HarvestBushes.Stack));
                ProgData.HarvestBushesPrompted = true;
                break;

            case "HarvestForageCrops":
                Util.SendMessage(GetPromptText(an, Config.Progression.HarvestForageCrops.Item, Config.Progression.HarvestForageCrops.Stack));
                ProgData.HarvestForageCropsPrompted = true;
                break;

            case "PlantCrops":
                Util.SendMessage(GetPromptText(an, Config.Progression.PlantCrops.Item, Config.Progression.PlantCrops.Stack));
                ProgData.PlantCropsPrompted = true;
                break;

            case "Water":
                Util.SendMessage(GetPromptText(an, Config.Progression.Water.Item, Config.Progression.Water.Stack));
                ProgData.WaterPrompted = true;
                break;

            default:
                Monitor.Log($"PromptForAbility: progression prompt check needed for {an} but not implemented", LogLevel.Debug);
                break;
            }
        }
Esempio n. 4
0
        public bool CanUseAbility(IJunimoAbility ability)
        {
            if (!BetterJunimos.Config.Progression.Enabled)
            {
                return(true);
            }

            var an = ability.AbilityName();

            if (Unlocked(an))
            {
                return(true);
            }
            if (Prompted(an))
            {
                return(false);
            }

            // _monitor.Log($"CanUseAbility: prompting for {an} due CanUseAbility request", LogLevel.Debug);
            DisplayPromptFor(an);
            return(false);
        }
Esempio n. 5
0
        public static bool Prefix(JunimoHarvester __instance, ref int ___harvestTimer, ref NetGuid ___netHome)
        {
            Guid    id  = ___netHome.Value;
            Vector2 pos = __instance.getTileLocation();

            int            time;
            IJunimoAbility junimoAbility = Util.Abilities.IdentifyJunimoAbility(pos, id);

            if (junimoAbility != null)
            {
                // Use the update() harvesting
                if (junimoAbility.AbilityName() == "HarvestCrops")
                {
                    time = 2000;
                }
                else if (!Util.Abilities.PerformAction(junimoAbility, id, pos, __instance))
                {
                    // didn't succeed, move on
                    time = 0;
                }
                else
                {
                    // succeeded, shake
                    time = Util.Config.JunimoImprovements.WorkFaster ? 300 : 998;
                }
            }
            else
            {
                // nothing to do, wait a moment
                time = Util.Config.JunimoImprovements.WorkFaster ? 5 : 200;
                __instance.pokeToHarvest();
            }
            ___harvestTimer = time;

            return(false);
        }