Exemple #1
0
 public void ResetSelection()
 {
     State = ActingState.Cooldown;
     SkillSelected = new SkillData() { Name = "" };
     PossibleTargets = new List<Entity>();
     Targets = new List<Entity>();
     CanTargetGroup = false;
 }
Exemple #2
0
 public static void UseSkill(Entity user, SkillData skillData, List<Entity> targets)
 {
     foreach(Entity target in targets)
     {
         if (target.GetComponent<BattleStats>() != null)
         {
             if (skillData.IsTargetingDead == target.GetComponent<BattleStats>().IsDead)
             {
                 Act(user, skillData, target, targets.Count > 1);
             }
         }
     }
 }
Exemple #3
0
        private static void Act(Entity user, SkillData skill, Entity target, bool multiTargets)
        {
            BattleStats userStats = user.GetComponent<BattleStats>();
            BattleStats targetStats = target.GetComponent<BattleStats>();

            if (skill.IsAttack)
            {
                if (skill.IsDamaging)
                {
                    double attack = 2 * userStats.Attributes[skill.Att1] + userStats.Attributes[skill.Att2] + skill.AttackModifier;
                    double defense = 2 * targetStats.Attributes[skill.Def1] + targetStats.Attributes[skill.Def2];
                    double hitCoefficient = CoefficientPrecision(attack - defense + RNG.GetDouble(-2, 2));
                    double damage = skill.Damage * hitCoefficient;

                    if (skill.CanDefend)
                    {

                        damage *= (skill.IsMagical ? userStats.Attributes[AttributeType.MWeapon] - targetStats.Attributes[AttributeType.MArmor] : userStats.Attributes[AttributeType.PWeapon] - targetStats.Attributes[AttributeType.PArmor]) / 10.0;
                    }
                    DamageTarget(user, target, (int)Math.Ceiling(damage), hitCoefficient);
                    if (skill.HasEffect && hitCoefficient > 0)
                    {
                        EntityCreator.CreateEffect(target, skill.Effect.Type, skill.Effect.Amount, skill.Effect.Duration * ActingSystem.TurnDuration);
                    }
                }
            }
            else
            {
                if (skill.IsDamaging)
                {
                    double power = Math.Pow(1.03, 2 * userStats.Attributes[skill.Pow1] + userStats.Attributes[skill.Pow2] + skill.PowerModifier) * 10;
                    int heal = (int)(power * RNG.GetDouble(0.75, 1.25));
                    HealTarget(user, target, heal);
                    if (skill.HasEffect)
                    {
                        EntityCreator.CreateEffect(target, skill.Effect.Type, skill.Effect.Amount, skill.Effect.Duration * ActingSystem.TurnDuration);
                    }
                }
            }
        }