Beispiel #1
0
        /// <summary>
        /// Single Damage Operates like:
        /// 1 Attack : 1 Damage Dealt [Normal]
        ///  CharacterA hits CharacterB with Slash (Normal damage)
        /// </summary>
        /// <param name="param"></param>
        public void ReceiveSingleDamage(Parameters param)
        {
            if (param == null)
            {
                return;
            }

            //Get The only value the param has
            BareboneDamage singleDamage = new BareboneDamage();

            if (param.HasParameter("DamageType0"))
            {
                singleDamage = param.GetWithKeyParameterValue <BareboneDamage>("DamageType0", new BareboneDamage());
                Debug.Log(singleDamage.Name);
            }
            else
            {
                Debug.Log("DamageTypes are unavailable!");
            }
            // Characters are Optional, since there can be obstruction that can deal damage
            BareboneCharacter dealer;

            if (param.HasParameter("DamageDealer"))
            {
                dealer = param.GetWithKeyParameterValue <BareboneCharacter>("DamageDealer", new BareboneCharacter());
                Debug.Log("Owner is : " + dealer.name);
                CalculateDamage(singleDamage, dealer);
            }
            else
            {
                //Debug.Log("Calculating Damage! Min Dmg: " + singleDamage.MinimumDamage + " Max Dmg: " + singleDamage.MaximumDamage);
                CalculateDamage(singleDamage);
            }
        }
Beispiel #2
0
        /// <summary>
        /// CalculateDamage computes damage with the cooperation of characterStats
        /// </summary>
        public void CalculateDamage(BareboneDamage bareboneDamage, BareboneCharacter Damagedealer = null)
        {
            float dotExp              = 0;
            float randDmg             = UnityEngine.Random.Range(bareboneDamage.MinimumDamage, bareboneDamage.MaximumDamage);
            float resistanceReduction = 0;

            if (resistance.GetResistance(bareboneDamage.GetDamageType.ToString()) != null)
            {
                resistanceReduction = randDmg * 0.02f;
            }
            this.CurrentHealth -= randDmg - resistanceReduction;
            if (bareboneDamage.GetDamageProcess == BareboneDamage.Process.Overtime)
            {
                dotDamageDealers.Add(bareboneDamage);
                for (int i = 0; i < bareboneDamage.TickCount; i++)
                {
                    dotExp += bareboneDamage.Overtimedamage;
                }
            }
            Debug.Log("Improving Resistance!!");
            resistance.Addprogress(randDmg, bareboneDamage.GetDamageType.ToString());
            resistance.Addprogress(dotExp, bareboneDamage.GetDamageType.ToString());
        }