Example #1
0
        public static void Postfix(SGBarracksSkillPip __instance, string type, int index, bool hasPassives, AbilityDef ability)
        {
            if (!hasPassives)
            {
                return;
            }

            var simGame = LazySingletonBehavior <UnityGameInstance> .Instance.Game.Simulation;

            if (simGame == null)
            {
                return;
            }

            // get the abilities that are not primary
            var abilities = simGame.GetAbilityDefFromTree(type, index).Where(x => !x.IsPrimaryAbility).ToList();

            // gets the first ability that has a tooltip
            var passiveAbility = abilities.Find(x => !(string.IsNullOrEmpty(x.Description.Name) || string.IsNullOrEmpty(x.Description.Details)));

            // clear the dot on tooltip-less dots
            if (passiveAbility == null)
            {
                Traverse.Create(__instance).Field("skillPassiveTraitDot").GetValue <SVGImage>().gameObject.SetActive(false);
            }

            if (passiveAbility != null)
            {
                __instance.gameObject.FindFirstChildNamed("obj-pip").GetComponent <HBSTooltip>()
                .SetDefaultStateData(TooltipUtilities.GetStateDataFromObject(passiveAbility.Description));
            }
        }
Example #2
0
            public static void Postfix(SGBarracksSkillPip __instance, SGBarracksSkillPip.PurchaseState purchaseState,
                                       bool canClick, bool showXP, bool needXP, bool isLocked, int ___idx, string ___type, HBSTooltip ___AbilityTooltip)
            {
                if (purchaseState == SGBarracksSkillPip.PurchaseState.Unselected)
                {
                    var sim = UnityGameInstance.BattleTechGame.Simulation;
                    var abilityDictionaries = sim.AbilityTree.Select(x => x.Value).ToList();

                    var abilityDefs = new List <AbilityDef>();
                    foreach (var abilityDictionary in abilityDictionaries)
                    {
                        abilityDefs.AddRange(abilityDictionary[___idx].Where(x => x.ReqSkill.ToString() == ___type));
                    }

                    var title = $"{___type}: Level {___idx+1} Ability Options";

                    var desc = "";


                    foreach (var ability in abilityDefs)
                    {
                        var abilityFilter = modSettings.abilityReqs.Values.SelectMany(x => x).ToList();

                        List <AbilityDef> abilitiesWithReqs = abilityDefs.Where(x => abilityFilter.Any(y => y.Equals(x.Id))).ToList();

                        if (abilitiesWithReqs.Contains(ability))
                        {
                            var reqAbilityName = modSettings.abilityReqs.FirstOrDefault(x => x.Value.Contains(ability.Description.Id)).Key;
                            var allAbilities   = new List <AbilityDef>();

                            allAbilities = sim.AbilityTree[___type].SelectMany(x => x.Value).ToList();

                            var reqAbility = allAbilities.Find(x => x.Id == reqAbilityName);
                            //

                            desc += "<b><u>" + ability.Description.Name + "</b></u> - Requires: " + reqAbility.Description.Name + "\n\n" + ability.Description.Details + "\n\n\n";
                        }
                        else
                        {
                            desc += "<b><u>" + ability.Description.Name + "</b></u>\n\n" + ability.Description.Details + "\n\n\n";
                        }
                    }

                    var descDef = new BaseDescriptionDef("PilotSpecs", title, desc, null);
                    ___AbilityTooltip.SetDefaultStateData(TooltipUtilities.GetStateDataFromObject(descDef));
                }
            }