private void evolve(SpecializationType type)
        {
            foreach (GameObject bee in EntityManager.Instance.Bees)
            {
                if (bee.tag == "WorkerBee" && bee.GetComponent <Selectable>().IsSelected)
                {
                    var spec = bee.GetComponent <Stats>();
                    if (spec.Spec.Type != SpecializationType.None)
                    {
                        continue;
                    }

                    if (UIController.Instance.resourceManager.RequireResources(Costs.Get("Spec" + type)))
                    {
                        spec.Specialize(type);
                        UIController.Instance.resourceManager.RemoveResources(Costs.Get("Spec" + type));
                        UIController.Instance.SetBeeLoadText(bee);
                    }
                    else
                    {
                        TextController.Instance.Add("Not enough resource to evolve into " + type + "!");
                    }
                    UIController.Instance.SetBottomPanel(UIController.BPType.Text);
                }
            }
        }
예제 #2
0
 public SpecializeMission(string title, string description, SpecializationType specialization, int times) :
     base(title, description)
 {
     targetSpecialization = specialization;
     targetTimes          = times;
     count = 0;
 }
예제 #3
0
        public static Specialization GetSpecialization(SpecializationType type)
        {
            if (specializations[(int)type] == null)
            {
                switch (type)
                {
                case SpecializationType.None:
                    specializations[(int)type] = new None();
                    break;

                case SpecializationType.Forager:
                    specializations[(int)type] = new Forager();
                    break;

                case SpecializationType.Guard:
                    specializations[(int)type] = new Guard();
                    break;

                case SpecializationType.Inkeeper:
                    specializations[(int)type] = new Inkeeper();
                    break;

                case SpecializationType.Scout:
                    specializations[(int)type] = new Scout();
                    break;

                default:
                    break;
                }
            }
            return(specializations[(int)type]);
        }
예제 #4
0
 public SpecializeMission(string title, string description, SpecializationType specialization, int times)
     : base(title, description)
 {
     targetSpecialization = specialization;
     targetTimes = times;
     count = 0;
 }
예제 #5
0
        //private string _longText;
        //public string LongText
        //{
        //    get { return _longText; }
        //    set
        //    {
        //        _longText = value;
        //        OnPropertyChanged();
        //    }
        //}

        public SpecializationType GetPanelType()
        {
            var newType = new SpecializationType();

            //newType.LongName = LongText;
            newType.Str = ShortText;
            return(newType);
        }
예제 #6
0
    public static void UpdateSpecializationAmountAndUi(SpecializationType specializationType, int amountIncreased = 1)
    {
        if (User.Instance.CurrentHero is not null)
        {
            User.Instance.CurrentHero.Specializations.SpecializationAmounts[specializationType] += amountIncreased;

            InterfaceHelper.UpdateSingleSpecializationInterface(specializationType);
        }
    }
예제 #7
0
        public List <GameObject> GetRandomBees(int n, SpecializationType type = SpecializationType.None)
        {
            switch (type)
            {
            case SpecializationType.Guard:
                return(getRandom(GuardBees, n));

            case SpecializationType.Forager:
                return(getRandom(ForagerBees, n));

            case SpecializationType.Inkeeper:
                return(getRandom(InkeeperBees, n));
            }
            return(getRandom(Bees, n));
        }
예제 #8
0
 public static VMSpecializationType GetVMSpecializationType(this SpecializationType spec)
 {
     return(spec.LuaType switch
     {
         SpecializationLuaType.Bool => VMSpecializationType.Bool,
         SpecializationLuaType.Int32 => VMSpecializationType.Int,
         SpecializationLuaType.Double => VMSpecializationType.Double,
         SpecializationLuaType.String => VMSpecializationType.String,
         SpecializationLuaType.CLRDelegate => VMSpecializationType.NClosure,
         SpecializationLuaType.Nil => VMSpecializationType.Nil,
         SpecializationLuaType.Table => VMSpecializationType.Table,
         SpecializationLuaType.Thread => VMSpecializationType.Polymorphic, //No support for thread type in VM.
         SpecializationLuaType.UserData => VMSpecializationType.UserData,
         SpecializationLuaType.Unspecified => VMSpecializationType.Polymorphic,
         SpecializationLuaType.Polymorphic => VMSpecializationType.Polymorphic,
         _ => VMSpecializationType.Polymorphic,
     });
예제 #9
0
    private void GenerateSingleSpecializationToolTip(SpecializationType specializationType)
    {
        var nextUpgrade = User.Instance.CurrentHero.Specializations.SpecializationAmounts[specializationType];

        while (nextUpgrade >= User.Instance.CurrentHero.Specializations.SpecializationThresholds[specializationType])
        {
            nextUpgrade -= User.Instance.CurrentHero.Specializations.SpecializationThresholds[specializationType];
        }

        nextUpgrade = User.Instance.CurrentHero.Specializations.SpecializationThresholds[specializationType] - nextUpgrade;

        var toolTip = HeroStatsToolTipHelper.GenerateSpecializationToolTip(specializationType, nextUpgrade);

        var buffBlock = (TextBlock)LogicalTreeHelper.FindLogicalNode(this, "Spec" + specializationType + "Buff");

        buffBlock.ToolTip = toolTip;
    }
예제 #10
0
        public void Specialize(SpecializationType type)
        {
            if (type != SpecializationType.None)
            {
                //This should be changed
                if (type == SpecializationType.Inkeeper)
                {
                    gameObject.GetComponent <Controllable>().canInkeep = true;
                }

                spec = SpecializationFactory.GetSpecialization(type);
                GetComponent <Animator>().SetInteger("Specialization", (int)type);
                if (BeeSpecialized != null)
                {
                    BeeSpecialized(gameObject);
                }
            }
        }
        private void evolve(SpecializationType type)
        {
            foreach (GameObject bee in EntityManager.Instance.Bees) {
            if (bee.tag == "WorkerBee" && bee.GetComponent<Selectable>().IsSelected) {
                var spec = bee.GetComponent<Stats>();
                if (spec.Spec.Type != SpecializationType.None)
                    continue;

                if (UIController.Instance.resourceManager.RequireResources(Costs.Get("Spec" + type))) {
                    spec.Specialize(type);
                    UIController.Instance.resourceManager.RemoveResources(Costs.Get("Spec" + type));
                    UIController.Instance.SetBeeLoadText(bee);
                } else
                    TextController.Instance.Add("Not enough resource to evolve into " + type + "!");
                UIController.Instance.SetBottomPanel(UIController.BPType.Text);
            }
            }
        }
예제 #12
0
    public static void UpdateSingleSpecializationInterface(SpecializationType specializationType)
    {
        try
        {
            dynamic p = GameAssets.CurrentPage;

            HeroStatsPage statsPage = p.StatsFrame.Content;
            statsPage.UpdateSingleSpecializationInterface(specializationType);
        }
        catch (RuntimeBinderException)
        {
            // No stats frame on this page!
            // Best solution according to:
            // https://stackoverflow.com/a/5768449/14770235
        }
        catch (NullReferenceException)
        {
            // This might be necessary instead of the above with the new approach.
        }
    }
예제 #13
0
 protected Specialization(
     SpecializationType type,
     float speedMultiplier,
     float visualRadiusMultiplier,
     float damageMultiplier,
     float attackRangeMultiplier,
     float cooldownTimeMultiplier,
     float loadSizeMultiplier,
     float loadTimeMultiplier,
     float reactionTimeMultiplier)
 {
     Type = type;
     SpeedMultiplier = speedMultiplier;
     VisualRadiusMultiplier = visualRadiusMultiplier;
     DamageMultiplier = damageMultiplier;
     AttackRangeMultiplier = attackRangeMultiplier;
     CooldownTimeMultiplier = cooldownTimeMultiplier;
     LoadSizeMultiplier = loadSizeMultiplier;
     LoadTimeMultiplier = loadTimeMultiplier;
     ReactionTimeMultiplier = reactionTimeMultiplier;
 }
예제 #14
0
 protected Specialization(
     SpecializationType type,
     float speedMultiplier,
     float visualRadiusMultiplier,
     float damageMultiplier,
     float attackRangeMultiplier,
     float cooldownTimeMultiplier,
     float loadSizeMultiplier,
     float loadTimeMultiplier,
     float reactionTimeMultiplier)
 {
     Type                   = type;
     SpeedMultiplier        = speedMultiplier;
     VisualRadiusMultiplier = visualRadiusMultiplier;
     DamageMultiplier       = damageMultiplier;
     AttackRangeMultiplier  = attackRangeMultiplier;
     CooldownTimeMultiplier = cooldownTimeMultiplier;
     LoadSizeMultiplier     = loadSizeMultiplier;
     LoadTimeMultiplier     = loadTimeMultiplier;
     ReactionTimeMultiplier = reactionTimeMultiplier;
 }
예제 #15
0
 public override int GetHashCode()
 {
     return(SpecializationType.GetHashCode());
 }
예제 #16
0
 public List<GameObject> GetRandomBees(int n, SpecializationType type = SpecializationType.None)
 {
     switch (type) {
     case SpecializationType.Guard:
     return getRandom(GuardBees, n);
     case SpecializationType.Forager:
     return getRandom(ForagerBees, n);
     case SpecializationType.Inkeeper:
     return getRandom(InkeeperBees, n);
     }
     return getRandom(Bees, n);
 }
예제 #17
0
    public void UpdateSingleSpecializationInterface(SpecializationType specializationType)
    {
        var buffBlockName = "Spec" + specializationType + "Buff";

        var buffBlock = SpecializationsGrid.Children.Cast <TextBlock>().FirstOrDefault(textBlock => textBlock.Name == buffBlockName);

        // Find the existing control in SpecializationsGrid.

        if (buffBlock != null)
        {
            buffBlock.Inlines.Clear();

            var fontFamilyRegularBold = (FontFamily)FindResource("FontRegularBold");

            switch (specializationType)
            {
            case SpecializationType.Blessing:
                buffBlock.Inlines.Add(new Run("Blessing duration +"));
                buffBlock.Inlines.Add(new Run(User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Blessing] + "s")
                {
                    FontFamily = fontFamilyRegularBold
                });
                break;

            case SpecializationType.Clicking:
                buffBlock.Inlines.Add(new Run("On-hit damage "));
                buffBlock.Inlines.Add(new Run("+" + User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Clicking])
                {
                    Foreground = (SolidColorBrush)FindResource("BrushDamageTypeOnHit"),
                    FontFamily = fontFamilyRegularBold
                });
                break;

            case SpecializationType.Crafting:
                buffBlock.Inlines.Add("Can craft ");
                buffBlock.Inlines.Add(new Run(User.Instance.CurrentHero.Specializations.SpecCraftingText)
                {
                    Foreground = ColorsHelper.GetRarityColor((Rarity)User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Crafting]),
                    FontFamily = fontFamilyRegularBold
                });
                buffBlock.Inlines.Add(" artifacts");
                break;

            case SpecializationType.Trading:
                buffBlock.Inlines.Add(new Run("Shop size & ratio "));
                buffBlock.Inlines.Add(new Run("+" + User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Trading])
                {
                    FontFamily = fontFamilyRegularBold
                });
                break;

            case SpecializationType.Melting:
                buffBlock.Inlines.Add(new Run("Extra ingots "));
                buffBlock.Inlines.Add(new Run("+" + User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Melting] + "%")
                {
                    FontFamily = fontFamilyRegularBold
                });
                break;

            case SpecializationType.Questing:
                buffBlock.Inlines.Add(new Run("Quest time "));
                buffBlock.Inlines.Add(new Run("-" + User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Questing] + "%")
                {
                    FontFamily = fontFamilyRegularBold
                });
                break;

            case SpecializationType.Dungeon:
                buffBlock.Inlines.Add(new Run("Bossfight timer "));
                buffBlock.Inlines.Add(new Run("+" + User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Dungeon] + "s")
                {
                    FontFamily = fontFamilyRegularBold
                });
                break;
            }

            GenerateSingleSpecializationToolTip(specializationType);
        }
    }
예제 #18
0
 public Skill(SkillType type, AttributeType governingAttribute, SpecializationType specialization) : base(type)
 {
     GoverningAttribute = governingAttribute;
     Specialization     = specialization;
 }
예제 #19
0
파일: Stats.cs 프로젝트: silverweed/colony
        public void Specialize(SpecializationType type)
        {
            if (type != SpecializationType.None)
            {
                //This should be changed
                if (type == SpecializationType.Inkeeper)
                {
                    gameObject.GetComponent<Controllable>().canInkeep = true;
                }

                spec = SpecializationFactory.GetSpecialization(type);
                GetComponent<Animator>().SetInteger("Specialization", (int)type);
                if (BeeSpecialized != null)
                {
                    BeeSpecialized(gameObject);
                }
            }
        }
    public static ToolTip GenerateSpecializationToolTip(SpecializationType typeOfGeneratedSpecialization, int nextUpgrade)
    {
        var fontSizeToolTipName          = (double)Application.Current.FindResource("FontSizeToolTipName");
        var fontFamilyRegularItalic      = (FontFamily)Application.Current.FindResource("FontRegularItalic");
        var fontFamilyRegularBlackItalic = (FontFamily)Application.Current.FindResource("FontRegularBlackItalic");

        var specToolTip = new ToolTip();

        var toolTipBlock = new TextBlock
        {
            Style = (Style)Application.Current.FindResource("ToolTipTextBlockBase")
        };

        switch (typeOfGeneratedSpecialization)
        {
        case SpecializationType.Blessing:
        {
            toolTipBlock.Inlines.Add(new Run("Prayer")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Increases blessing duration by "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero?.Specializations.SpecializationBuffs[SpecializationType.Blessing]}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run(" seconds"));

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Prayer by buying blessings in Priest")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });

            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecBlessingBuffBonus}s duration) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("bought blessings")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Clicking:
        {
            toolTipBlock.Inlines.Add(new Run("Clicker")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Your clicks deal a bonus "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero?.Specializations.SpecializationBuffs[SpecializationType.Clicking]}")
                {
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushDamageTypeOnHit"),
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run(" on-hit damage")
                {
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushDamageTypeOnHit")
                });

            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("On-hit damage from this specialization is applied after other effects eg. crit")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray5")
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Clicker by clicking on monsters and bosses")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecClickingBuffBonus} on-hit damage) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("clicks")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Crafting:
        {
            toolTipBlock.Inlines.Add(new Run("Craftsman")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Increases crafting rarity limit (current limit is "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero?.Specializations.SpecCraftingText}")
                {
                    FontFamily = fontFamilyRegularBlackItalic,
                    Foreground = ColorsHelper.GetRarityColor((Rarity)User.Instance.CurrentHero?.Specializations.SpecializationBuffs[SpecializationType.Crafting])
                });
            toolTipBlock.Inlines.Add(new Run(" rarity)"));

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Craftsman by crafting artifacts in Blacksmith")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });

            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Next rarity limit upgrade in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("crafted artifacts")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Trading:
        {
            toolTipBlock.Inlines.Add(new Run("Tradesman")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Increases shop offer size (current size is "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Trading]}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("),"));
            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(new Run("and materials selling ratio (current bonus ratio is "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Trading]}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("%)"));

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Tradesman by buying recipes or selling materials in shop")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecTradingBuffBonus} shop offer size and +{Specializations.SpecTradingBuffBonus}% materials selling ratio) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("bought recipes or sold materials")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Melting:
        {
            toolTipBlock.Inlines.Add(new Run("Melter")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Increases % chance to get a bonus "));
            toolTipBlock.Inlines.Add(new Run($"{Material.BaseMeltingIngotBonus}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run(" ingots when melting materials"));
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Each 100% guarantees additional {Material.BaseMeltingIngotBonus} ingots")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray5")
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Melter by melting materials in Blacksmith")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecMeltingBuffBonus}% chance) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("melted materials")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Questing:
        {
            toolTipBlock.Inlines.Add(new Run("Adventurer")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Reduces % time to complete quests (current bonus is "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero.Specializations.SpecializationBuffs[SpecializationType.Questing]}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("%)"));
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run($"Maximum reduction value is {Specializations.SpecQuestingBuffLimit}%")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray5")
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Adventurer by completing quests")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecQuestingBuffBonus}% reduced time) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("completed quests")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;

        case SpecializationType.Dungeon:
        {
            toolTipBlock.Inlines.Add(new Run("Daredevil")
                {
                    FontSize = fontSizeToolTipName
                });

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("Increases the amount of time to defeat bosses (current bonus time is "));
            toolTipBlock.Inlines.Add(new Run($"{User.Instance.CurrentHero?.Specializations.SpecializationBuffs[SpecializationType.Dungeon]}")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("s)"));

            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(GenerateTextSeparator());
            toolTipBlock.Inlines.Add(new LineBreak());

            toolTipBlock.Inlines.Add(new Run("You can master Daredevil by trading recipes in shop")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new LineBreak());
            toolTipBlock.Inlines.Add(new Run($"Next upgrade (+{Specializations.SpecDungeonBuffBonus} second) in")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
            toolTipBlock.Inlines.Add(new Run($" {nextUpgrade} ")
                {
                    FontFamily = fontFamilyRegularBlackItalic
                });
            toolTipBlock.Inlines.Add(new Run("finished dungeons")
                {
                    FontFamily = fontFamilyRegularItalic,
                    Foreground = (SolidColorBrush)Application.Current.FindResource("BrushGray3")
                });
        }
        break;
        }

        specToolTip.Content = toolTipBlock;

        return(specToolTip);
    }