Ejemplo n.º 1
0
 public static void Postfix(Pilot ___curPilot, SimGameState ___simState, List <SGBarracksSkillPip> pips, int originalSkill, int curSkill, int idx, bool isLocked)
 {
     if ((___curPilot.pilotDef.PilotTags.Contains("pilot_fatigued") && settings.FatigueReducesSkills) ||
         (settings.InjuriesHurt && (___curPilot.Injuries > 0 || ___curPilot.pilotDef.PilotTags.Contains("pilot_lightinjury"))))
     {
         SGBarracksSkillPip.PurchaseState purchaseState = SGBarracksSkillPip.PurchaseState.Unselected;
         if (originalSkill > idx)
         {
             purchaseState = SGBarracksSkillPip.PurchaseState.Purchased;
         }
         else if (curSkill > idx)
         {
             purchaseState = SGBarracksSkillPip.PurchaseState.Selected;
         }
         bool flag = false;
         if (isLocked && (idx + 1 == pips.Count || curSkill == idx + 1))
         {
             flag = true;
         }
         if (pips[idx].Ability != null)
         {
             bool flag2 = ___simState.CanPilotTakeAbility(___curPilot.pilotDef, pips[idx].Ability, pips[idx].SecondTierAbility);
             bool flag3 = ___curPilot.pilotDef.abilityDefNames.Contains(pips[idx].Ability.Description.Id);
             pips[idx].Set(purchaseState, (curSkill == idx || curSkill == idx + 1) && !isLocked, curSkill == idx, true, isLocked && flag);
             pips[idx].SetActiveAbilityVisible(flag2 || flag3);
         }
         pips[idx].Set(purchaseState, (curSkill == idx || curSkill == idx + 1) && !isLocked, curSkill == idx, true, isLocked && flag);
     }
 }
Ejemplo n.º 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));
                }
            }
Ejemplo n.º 3
0
            public static bool Prefix(SGBarracksAdvancementPanel __instance,
                                      List <SGBarracksSkillPip> pips, int originalSkill, int curSkill, int idx, bool needsXP, bool isLocked, Pilot ___curPilot)

            {
                var sim = UnityGameInstance.BattleTechGame.Simulation;

                SGBarracksSkillPip.PurchaseState purchaseState = SGBarracksSkillPip.PurchaseState.Unselected;
                if (originalSkill > idx)
                {
                    purchaseState = SGBarracksSkillPip.PurchaseState.Purchased;
                }
                else if (curSkill > idx)
                {
                    purchaseState = SGBarracksSkillPip.PurchaseState.Selected;
                }
                bool flag = false;

                if (isLocked && (idx + 1 == pips.Count || curSkill == idx + 1))
                {
                    flag = true;
                }
                if (pips[idx].Ability != null)
                {
                    bool flag2 = sim.CanPilotTakeAbility(___curPilot.pilotDef, pips[idx].Ability, pips[idx].SecondTierAbility);
                    bool flag3 = ___curPilot.pilotDef.abilityDefNames.Contains(pips[idx].Ability.Description.Id);

                    //this is the pertinent change, which checks if pilot has ANY ability of the correct type and level, and sets it to be visible if true
                    var type        = pips[idx].Ability.ReqSkill;
                    var abilityDefs = ___curPilot.pilotDef.AbilityDefs.Where(x => x.ReqSkill == type &&
                                                                             x.ReqSkillLevel == idx + 1 && x.IsPrimaryAbility);
                    bool flag4 = abilityDefs.Any();

                    pips[idx].Set(purchaseState, (curSkill == idx || curSkill == idx + 1) && !isLocked, curSkill == idx, needsXP, isLocked && flag);
                    pips[idx].SetActiveAbilityVisible(flag2 || flag3 || flag4);
                }
                pips[idx].Set(purchaseState, (curSkill == idx || curSkill == idx + 1) && !isLocked, curSkill == idx, needsXP, isLocked && flag);
                return(false);
            }