
// Copyright (c) Strange Loop Games. All rights reserved.
// See LICENSE file in the project root for full license information.
// <auto-generated from BenefitTemplate.tt/>

namespace Eco.Mods.TechTree
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using Eco.Gameplay.Components;
    using Eco.Gameplay.Items;
    using Eco.Gameplay.Players;
    using Eco.Gameplay.Skills;
    using Eco.Mods.TechTree;
    using Eco.Shared.Items;
    using Eco.Shared.Localization;
    using Eco.Shared.Serialization;
    using Eco.Shared.Utils;
    using Eco.Shared.View;

    /// <summary>
    /// <para>Server side talent definition for "ToolStrength".</para>
    /// <para>More information about Talent objects can be found at https://docs.play.eco/api/server/eco.gameplay/Eco.Gameplay.Skills.Talent.html</para>
    /// <remarks>
    /// This is an auto-generated class. Don't modify it! All your changes will be wiped with next update! Use Mods* partial methods instead for customization. 
    /// If you wish to modify this class, please create a new partial class or follow the instructions in the "UserCode" folder to override the entire file.
    /// </remarks>
    /// </summary>
    public partial class ToolStrengthTalent : Talent
    {
        public override bool Base => true;
    }

    /// <summary>
    /// <para>Server side talent group definition for "ToolStrength".</para>
    /// <para>More information about TalentGroup objects can be found at https://docs.play.eco/api/server/eco.gameplay/Eco.Gameplay.Skills.TalentGroup.html</para>
    /// </summary>
    [Serialized]
    [LocDisplayName("Tool Strength: Logging")]
    [LocDescription("Increases the damage of related tools by 1.")]
    public partial class LoggingToolStrengthTalentGroup : TalentGroup
    {
        public LoggingToolStrengthTalentGroup()
        {
            Talents = new Type[]
            {
                typeof(LoggingToolStrengthTalent),
            };
            this.OwningSkill = typeof(LoggingSkill);
            this.Level = 3;
        }
    }

    [Serialized]
    public partial class LoggingToolStrengthTalent : ToolStrengthTalent
    {
        public override bool Base { get { return false; } }
        public override Type TalentGroupType { get { return typeof(LoggingToolStrengthTalentGroup); } }
        public LoggingToolStrengthTalent()
        {
            this.Value = 1;
        }
    }

    /// <summary>
    /// <para>Server side talent group definition for "ToolStrength".</para>
    /// <para>More information about TalentGroup objects can be found at https://docs.play.eco/api/server/eco.gameplay/Eco.Gameplay.Skills.TalentGroup.html</para>
    /// </summary>
    [Serialized]
    [LocDisplayName("Tool Strength: Mining")]
    [LocDescription("Increases the damage of related tools by 1.")]
    public partial class MiningToolStrengthTalentGroup : TalentGroup
    {
        public MiningToolStrengthTalentGroup()
        {
            Talents = new Type[]
            {
                typeof(MiningToolStrengthTalent),
            };
            this.OwningSkill = typeof(MiningSkill);
            this.Level = 3;
        }
    }

    [Serialized]
    public partial class MiningToolStrengthTalent : ToolStrengthTalent
    {
        public override bool Base { get { return false; } }
        public override Type TalentGroupType { get { return typeof(MiningToolStrengthTalentGroup); } }
        public MiningToolStrengthTalent()
        {
            this.Value = 1;
        }
    }

    /// <summary>
    /// <para>Server side talent group definition for "ToolStrength".</para>
    /// <para>More information about TalentGroup objects can be found at https://docs.play.eco/api/server/eco.gameplay/Eco.Gameplay.Skills.TalentGroup.html</para>
    /// </summary>
    [Serialized]
    [LocDisplayName("Tool Strength: Gathering")]
    [LocDescription("Increases the damage of related tools by 1.")]
    public partial class GatheringToolStrengthTalentGroup : TalentGroup
    {
        public GatheringToolStrengthTalentGroup()
        {
            Talents = new Type[]
            {
                typeof(GatheringToolStrengthTalent),
            };
            this.OwningSkill = typeof(GatheringSkill);
            this.Level = 3;
        }
    }

    [Serialized]
    public partial class GatheringToolStrengthTalent : ToolStrengthTalent
    {
        public override bool Base { get { return false; } }
        public override Type TalentGroupType { get { return typeof(GatheringToolStrengthTalentGroup); } }
        public GatheringToolStrengthTalent()
        {
            this.Value = 1;
        }
    }
}
