示例#1
0
        public static (bool success, string description) ImproveSkill(Hero hero, int amount, SkillsEnum skills, bool auto)
        {
            var skill = GetSkill(hero, skills, auto, so
                                 => BLTAdoptAHeroModule.CommonConfig.UseRawXP && hero.GetSkillValue(so) < BLTAdoptAHeroModule.CommonConfig.RawXPSkillCap ||
                                 hero.HeroDeveloper.GetFocusFactor(so) > 0);

            if (skill == null)
            {
                return(false, $"Couldn't find a skill to improve");
            }
            float prevSkill = hero.HeroDeveloper.GetPropertyValue(skill);
            int   prevLevel = hero.GetSkillValue(skill);

            hero.HeroDeveloper.AddSkillXp(skill, amount,
                                          isAffectedByFocusFactor: !BLTAdoptAHeroModule.CommonConfig.UseRawXP);
            // Force this immediately instead of waiting for the daily campaign tick
            #if e159 || e1510
            CharacterDevelopmentCampaignBehaivor.DevelopCharacterStats(hero);
            #else
            Campaign.Current?.GetCampaignBehavior <CharacterDevelopmentCampaignBehavior>()?.DevelopCharacterStats(hero);
            #endif

            float newXp        = hero.HeroDeveloper.GetPropertyValue(skill);
            float realGainedXp = newXp - prevSkill;
            int   newLevel     = hero.GetSkillValue(skill);
            int   gainedLevels = newLevel - prevLevel;
            return(realGainedXp < 1f
                ? (false, $"{skill.Name} capped, get more focus points")
                : gainedLevels > 0
                    ? (true, $"{Naming.Inc}{gainedLevels} lvl {GetShortSkillName(skill)}{Naming.To}{newLevel}")
                    : (true,
                       $"{Naming.Inc}{realGainedXp:0} xp {GetShortSkillName(skill)}{Naming.To}{newXp}"));
        }
示例#2
0
 static bool Prefix(Hero hero)
 {
     if ((hero.HeroDeveloper.UnspentFocusPoints > 0 && hero.HeroDeveloper.NumberOfOpenedPerks > 0 ||
          hero.HeroDeveloper.UnspentAttributePoints > 0) &&
         hero.Clan != Clan.PlayerClan && hero.IsNoble && !hero.IsChild)
     {
         CharacterDevelopmentCampaignBehaivor.DevelopCharacterStats(hero);
     }
     return(false);
 }