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)); } }
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)); } }