Beispiel #1
0
        /// <summary>
        /// Use a skill.
        /// </summary>
        /// <param name="skillIndex">The index of the skill to use.</param>
        /// <param name="targets">The fighters that this skill should target.</param>
        public void UseSkill(int skillIndex, Fighter[] targets)
        {
            if (!CanUseSkill(skillIndex))
            {
                return;
            }

            Skill skill = Skills[skillIndex];
            int   previousSkillPoints = CurrentSkillPoints;

            CurrentSkillPoints -= skill.Cost;
            skill.Use(this, targets);

            PointEventArgs args = new PointEventArgs(previousSkillPoints, CurrentSkillPoints);

            OnSkillPointsChange?.Invoke(this, args);
        }
Beispiel #2
0
        public void RestoreSkillPoints(int skillAmount)
        {
            if (!IsAlive)
            {
                return;
            }

            int previousSkillPoints = CurrentSkillPoints;

            CurrentSkillPoints += skillAmount;

            // Clamp skill points
            if (CurrentSkillPoints > MaxSkillPoints)
            {
                CurrentSkillPoints = MaxSkillPoints;
            }

            PointEventArgs args = new PointEventArgs(previousSkillPoints, CurrentSkillPoints);

            OnSkillPointsChange?.Invoke(this, args);
        }