Пример #1
0
    private Dictionary <ActorSpellType, Dictionary <ActorSpellName, ActorSpell> > LoadSpellsFromConfig()
    {
        Dictionary <ActorSpellType, Dictionary <ActorSpellName, ActorSpell> > dictionary = new Dictionary <ActorSpellType, Dictionary <ActorSpellName, ActorSpell> >();
        string spellStr;

        switch (this.ActorType)
        {
        case ActorType.Infantry:
        {
            spellStr = GlobalConfig.TerranActorInfantrySpell;
            break;
        }

        case ActorType.Supporter:
        {
            spellStr = GlobalConfig.TerranActorSupporterSpell;
            break;
        }

        case ActorType.Sniper:
        {
            spellStr = GlobalConfig.TerranActorSniperSpell;
            break;
        }

        case ActorType.Marksman:
        {
            spellStr = GlobalConfig.TerranActorMarksmanSpell;
            break;
        }

        case ActorType.HeavyGunner:
        {
            spellStr = GlobalConfig.TerranActorHeavyGunnerSpell;
            break;
        }

        case ActorType.MortarTeam:
        {
            spellStr = GlobalConfig.TerranActorMortarTeamSpell;
            break;
        }

        case ActorType.Warlock:
        {
            spellStr = GlobalConfig.TerranActorWarlockSpell;
            break;
        }

        case ActorType.GryphonRider:
        {
            spellStr = GlobalConfig.TerranActorGryphonRiderSpell;
            break;
        }

        case ActorType.SeniorGryphonRider:
        {
            spellStr = GlobalConfig.TerranActorSeniorGryphonRiderSpell;
            break;
        }

        case ActorType.Crusader:
        {
            spellStr = GlobalConfig.TerranActorCrusaderSpell;
            break;
        }

        case ActorType.TemplarWarrior:
        {
            spellStr = GlobalConfig.TerranActorTemplarWarriorSpell;
            break;
        }

        default:
        {
            spellStr = string.Empty;
            break;
        }
        }
        string[] spellArr = spellStr.Split('/');
        int      length   = spellArr.Length;

        for (int i = 0; i < length; i++)
        {
            ActorSpell actorSpell;
            string     spell = spellArr[i];
            switch (spell)
            {
            case "None":
                actorSpell = new ActorSpell(ActorSpellName.None, this.ActorType);
                break;

            case "Dodge":
                actorSpell = new ActorSpell(ActorSpellName.Dodge, this.ActorType);
                break;

            case "CirticalStrike":
                actorSpell = new ActorSpell(ActorSpellName.CirticalStrike, this.ActorType);
                break;

            case "HeadShot":
                actorSpell = new ActorSpell(ActorSpellName.HeadShot, this.ActorType);
                break;

            case "SplashDamage":
                actorSpell = new ActorSpell(ActorSpellName.SplashDamage, this.ActorType);
                break;

            case "MortarAttack":
                actorSpell = new ActorSpell(ActorSpellName.MortarAttack, this.ActorType);
                break;

            case "ArcaneExplosion":
                actorSpell = new ActorSpell(ActorSpellName.ArcaneExplosion, this.ActorType);
                break;

            case "Bash":
                actorSpell = new ActorSpell(ActorSpellName.Bash, this.ActorType);
                break;

            case "ChainLightning":
                actorSpell = new ActorSpell(ActorSpellName.ChainLightning, this.ActorType);
                break;

            case "GodBless":
                actorSpell = new ActorSpell(ActorSpellName.GodBless, this.ActorType);
                break;

            case "HolyLight":
                actorSpell = new ActorSpell(ActorSpellName.HolyLight, this.ActorType);
                break;

            default:
                actorSpell = new ActorSpell(ActorSpellName.None, this.ActorType);
                break;
            }
            if (!dictionary.ContainsKey(actorSpell.ActorSpellType))
            {
                dictionary.Add(actorSpell.ActorSpellType, new Dictionary <ActorSpellName, ActorSpell>());
            }
            dictionary[actorSpell.ActorSpellType].Add(actorSpell.ActorSpellName, actorSpell);
        }
        return(dictionary);
    }
Пример #2
0
    public void ReleaseActiveSpell(ActorController entityType, ActorSpell actorSpell)
    {
        switch (actorSpell.ActorSpellName)
        {
        case ActorSpellName.MortarAttack:
        {
            List <GameObject> enemies = entityType.SeekAndGetEnemiesInDistance(120);
            if (enemies != null && enemies.Count != 0)
            {
                Damage motarAttackDamage = new Damage();
                motarAttackDamage.DamageValue = 21;
                motarAttackDamage.ShowCrit    = true;
                enemies.ForEach(
                    enemy =>
                    {
                        GameObject maEffect =
                            (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect"));
                        maEffect.transform.parent        = enemy.transform;
                        maEffect.transform.localPosition = new Vector3(0, 0, 0);
                        tk2dSpriteAnimator animator      = maEffect.GetComponent <tk2dSpriteAnimator>();
                        animator.Play("Bombard");
                        animator.AnimationCompleted = delegate
                        {
                            if (enemy != null)
                            {
                                ActorController actorCtrl = enemy.GetComponent <ActorController>();
                                entityType.SendDamage(actorCtrl, motarAttackDamage);
                                Object.Destroy(maEffect);
                            }
                        };
                    });
            }
            break;
        }

        case ActorSpellName.ArcaneExplosion:
        {
            List <GameObject> enemies = entityType.SeekAndGetEnemiesInDistance(120);
            if (enemies != null && enemies.Count != 0)
            {
                Damage motarAttackDamage = new Damage();
                motarAttackDamage.DamageValue = 27;
                motarAttackDamage.ShowCrit    = true;
                enemies.ForEach(
                    enemy =>
                    {
                        GameObject aeEffect =
                            (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect"));
                        aeEffect.transform.parent        = enemy.transform;
                        aeEffect.transform.localPosition = new Vector3(0, 0, 0);
                        tk2dSpriteAnimator animator      = aeEffect.GetComponent <tk2dSpriteAnimator>();
                        animator.Play("ArcaneExplosion");
                        animator.AnimationCompleted = delegate
                        {
                            if (enemy != null)
                            {
                                ActorController actorCtrl = enemy.GetComponent <ActorController>();
                                entityType.SendDamage(actorCtrl, motarAttackDamage);
                                Object.Destroy(aeEffect);
                            }
                        };
                    });
            }
            break;
        }

        case ActorSpellName.HolyLight:
        {
            List <GameObject> myActors =
                ActorsManager.GetInstance().GetActorsOfFaction(entityType.MyActor.FactionType);
            if (myActors != null && myActors.Count != 0)
            {
                GameObject targetActor = myActors[Random.Range(0, myActors.Count)];
                Damage     zapDamage   = new Damage();
                zapDamage.DamageValue = -300;
                zapDamage.ShowCrit    = true;
                GameObject hlEffect =
                    (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect"));
                hlEffect.transform.parent        = targetActor.transform;
                hlEffect.transform.localPosition = new Vector3(11, 38, 0);
                tk2dSpriteAnimator animator = hlEffect.GetComponent <tk2dSpriteAnimator>();
                animator.Play("HolyLight");
                animator.AnimationCompleted = delegate
                {
                    if (targetActor != null)
                    {
                        ActorController actorCtrl = targetActor.GetComponent <ActorController>();
                        entityType.SendDamage(targetActor.GetComponent <ActorController>(), zapDamage);
                        Object.Destroy(hlEffect);
                    }
                };
            }
            break;
        }

        case ActorSpellName.ShamanBless:
        {
            List <GameObject> myActors =
                ActorsManager.GetInstance().GetActorsOfFaction(entityType.MyActor.FactionType);
            if (myActors != null && myActors.Count != 0)
            {
                GameObject      targetActor = myActors[Random.Range(0, myActors.Count)];
                ActorController actorCtrl   = targetActor.GetComponent <ActorController>();
                actorCtrl.IsShamanBlessing = true;
            }
            break;
        }

        case ActorSpellName.Ensnare:
        {
            List <GameObject> airForceActors =
                ActorsManager.GetInstance().GetEnemyAirForceActorsOfFactionInDistance(entityType, 70);
            if (airForceActors != null && airForceActors.Count != 0)
            {
                GameObject      targetActor    = airForceActors[Random.Range(0, airForceActors.Count)];
                ActorController actorCtrl      = targetActor.GetComponent <ActorController>();
                GameObject      ensnareEffectA =
                    (GameObject)Object.Instantiate(Resources.Load("GameScene/ActorSkillEffect"));
                ensnareEffectA.transform.localPosition = entityType.myTransform.position;
                float scale = Vector3.Distance(entityType.myTransform.position, targetActor.transform.position)
                              / 60f;
                ensnareEffectA.transform.localScale = new Vector3(scale, 1f, 1f);
                tk2dSpriteAnimator animator = ensnareEffectA.GetComponent <tk2dSpriteAnimator>();
                animator.Play("EnsnareA");
                animator.AnimationCompleted = delegate
                {
                    Object.Destroy(ensnareEffectA.gameObject);
                };
                actorCtrl.IsCaught = true;
            }
            break;
        }

        case ActorSpellName.GodBless:
        {
            List <GameObject> myActors =
                ActorsManager.GetInstance()
                .GetFriendlyActorsInDistance(
                    entityType.MyActor.FactionType,
                    entityType.myTransform.position,
                    actorSpell.AttackRange);
            if (myActors != null && myActors.Count != 0)
            {
                myActors.ForEach(
                    actor =>
                    {
                        ActorController actorCtrl = actor.GetComponent <ActorController>();
                        actorCtrl.MyActor.ActorArmor.ArmorAmount += actorSpell.IncreaseFriendlyForcesArmor;
                    });
            }
            break;
        }
        }
    }
Пример #3
0
    public override void Execute(ActorController entityType)
    {
        if (entityType.IsStun)
        {
            entityType.StunDuration -= Time.deltaTime;
            if (entityType.StunDuration <= 0)
            {
                entityType.IsStun       = false;
                entityType.StunDuration = 0;
            }
            return;
        }

        if (entityType.IsBleed)
        {
            entityType.BleedDuration -= Time.deltaTime;
            Damage bleedDamage = new Damage();
            bleedDamage.DamageValue = entityType.BleedDps * Time.deltaTime;
            entityType.TakeDamage(bleedDamage);
            if (entityType.BleedDuration <= 0)
            {
                entityType.IsBleed       = false;
                entityType.BleedDps      = 0;
                entityType.BleedDuration = 0;
            }
        }

        if (entityType.IsRaging)
        {
            entityType.RagingDuration -= Time.deltaTime;
            if (entityType.RagingDuration <= 0)
            {
                entityType.IsRaging       = false;
                entityType.RagingDuration = 0;
            }
        }

        if (entityType.IsShamanBlessing)
        {
            entityType.ShamanBlessingDuration -= Time.deltaTime;
            this.shamanBlessCounter           += Time.deltaTime;
            if (this.shamanBlessCounter >= 1)
            {
                Damage blessDamage = new Damage();
                blessDamage.DamageValue = -3;
                blessDamage.ShowCrit    = true;
                entityType.TakeDamage(blessDamage);
                this.shamanBlessCounter = 0f;
            }
            if (entityType.ShamanBlessingDuration <= 0)
            {
                entityType.IsShamanBlessing = false;
                this.shamanBlessCounter     = 0f;
            }
        }

        if (entityType.IsCaught)
        {
            entityType.CaughtDuration -= Time.deltaTime;
            if (entityType.CaughtDuration <= 0)
            {
                entityType.IsCaught = false;
            }
        }

        if (entityType.IsPoisioning)
        {
            this.poisionCounter += Time.deltaTime;
            if (this.poisionCounter >= 1f)
            {
                Damage poisionDamage = new Damage();
                poisionDamage.DamageValue = entityType.PoisionDps;
                poisionDamage.ShowCrit    = true;
                entityType.TakeDamage(poisionDamage);
                this.poisionCounter = 0f;
            }
        }

        if (entityType.IsBurningOilAttacked)
        {
            this.burningOilCounter += Time.deltaTime;
            if (this.burningOilCounter >= 1f)
            {
                Damage burningOilDamage = new Damage();
                burningOilDamage.DamageValue = entityType.BurningOilDps;
                burningOilDamage.ShowCrit    = true;
                entityType.TakeDamage(burningOilDamage);
                this.burningOilCounter = 0f;
            }
            entityType.BurningOilDuration -= Time.deltaTime;
            if (entityType.BurningOilDuration <= 0)
            {
                entityType.IsBurningOilAttacked = false;
                this.burningOilCounter          = 0f;
            }
        }

        if (this.releaseCounterDictionary != null && this.activeSpellDictionary != null)
        {
            //foreach (KeyValuePair<ActorSpellName, float> kv in this.releaseCounterDictionary)
            ActorSpellName[] actorSpellArray = new ActorSpellName[this.releaseCounterDictionary.Keys.Count];
            float[]          counterArray    = new float[this.releaseCounterDictionary.Keys.Count];
            this.releaseCounterDictionary.Keys.CopyTo(actorSpellArray, 0);
            this.releaseCounterDictionary.Values.CopyTo(counterArray, 0);
            for (int i = 0; i < counterArray.Length; i++)
            {
                float      temp  = counterArray[i] + Time.deltaTime;
                ActorSpell spell = this.activeSpellDictionary[actorSpellArray[i]];
                if (temp >= spell.ReleaseInterval)
                {
                    this.ReleaseActiveSpell(entityType, spell);
                    temp = 0f;
                }
                this.releaseCounterDictionary[actorSpellArray[i]] = temp;
            }
        }
    }
Пример #4
0
    public Damage CalculateCommonAttackDamage(BaseGameEntity targetEntity)
    {
        Damage damage = new Damage();

        damage.DamageValue = this.MyActor.ActorAttack.Dps / this.AttackInterval;
        //Debug.Log("Damage " + damage.DamageValue);
        damage.DamageValue *= this.AttackPlusRatio;
        //Debug.Log("After plus Ratio " + damage.DamageValue);
        if (!(targetEntity is ActorController))
        {
            return(damage);
        }

        ActorController targetActor = (ActorController)targetEntity;
        ActorSpell      dodgeSpell  = targetActor.MyActor.GetSpell(ActorSpellName.Dodge);

        if (dodgeSpell != null)
        {
            int randomIndex = Random.Range(1, 101);
            if (targetActor.MyActor.ActorType == ActorType.Supporter && randomIndex <= 15)
            {
                this.ShowTip("Miss");
                damage.DamageValue = 0;
                return(damage);
            }
        }

        Dictionary <ActorSpellName, ActorSpell> passiveSpellDictionary =
            this.MyActor.GetSpellsByType(ActorSpellType.PassiveSpell);

        if (passiveSpellDictionary != null)
        {
            foreach (KeyValuePair <ActorSpellName, ActorSpell> kv in passiveSpellDictionary)
            {
                switch (kv.Key)
                {
                case ActorSpellName.None:
                    break;

                case ActorSpellName.CirticalStrike:
                {
                    if (Random.Range(1, 101) <= 10)
                    {
                        //Debug.Log("致命一击");
                        damage.DamageValue   *= 1.5f;
                        damage.ShowCrit       = true;
                        damage.ActorSpellName = ActorSpellName.CirticalStrike;
                        //Debug.Log("After Cirtical Strike " + damage.DamageValue);
                    }
                    break;
                }

                case ActorSpellName.HeadShot:
                {
                    if (Random.Range(1, 101) <= 40)
                    {
                        damage.DamageValue   *= 3f;
                        damage.ShowCrit       = true;
                        damage.ActorSpellName = ActorSpellName.HeadShot;
                        //Debug.Log("After HeadShot" + damage.DamageValue);
                    }
                    break;
                }

                case ActorSpellName.SplashDamage:
                {
                    List <GameObject> enemies = targetActor.SeekAndGetFriendlyActorsInDistance(100);
                    if (enemies != null && enemies.Count != 0)
                    {
                        Damage splashDamage = new Damage();
                        splashDamage.DamageValue = 0.5f * damage.DamageValue;
                        //Debug.Log("splash Damage " + splashDamage.DamageValue);
                        enemies.ForEach(
                            enemy =>
                            {
                                if (enemy != null && enemy != targetActor.gameObject)
                                {
                                    ActorController actorCtrl = enemy.GetComponent <ActorController>();
                                    if (actorCtrl != null &&
                                        actorCtrl.gameObject != this.TargetEnemy.gameObject)
                                    {
                                        this.SendDamage(actorCtrl, splashDamage);
                                    }
                                }
                            });
                    }
                    break;
                }

                case ActorSpellName.Bleed:
                {
                    if (this.MyActor.ActorType == ActorType.GryphonRider)
                    {
                        if (Random.Range(1, 101) <= 25)
                        {
                            //Debug.Log("Bleed");
                            damage.Bleed         = true;
                            damage.BleedDuration = 3;
                            damage.BleedDps      = 15;
                        }
                    }
                    else if (this.MyActor.ActorType == ActorType.SeniorGryphonRider)
                    {
                        if (Random.Range(1, 101) <= 30)
                        {
                            damage.Bleed         = true;
                            damage.BleedDuration = 5;
                            damage.BleedDps      = 20;
                        }
                    }
                    break;
                }

                case ActorSpellName.Bash:
                {
                    if (this.MyActor.ActorType == ActorType.Crusader)
                    {
                        if (Random.Range(1, 101) <= 20)
                        {
                            //Debug.Log("重击");
                            damage.Stun         = true;
                            damage.StunDuration = 2;
                            damage.DamageValue += 25;
                            damage.ShowCrit     = true;
                        }
                    }
                    else if (this.MyActor.ActorType == ActorType.TemplarWarrior)
                    {
                        if (Random.Range(1, 101) <= 25)
                        {
                            //Debug.Log("重击");
                            damage.Stun         = true;
                            damage.StunDuration = 2;
                            damage.DamageValue += 30;
                            damage.ShowCrit     = true;
                        }
                    }
                    break;
                }

                case ActorSpellName.ChainLightning:
                {
                    if (this.MyActor.ActorType == ActorType.Sage)
                    {
                        if (Random.Range(1, 101) <= 25 && targetActor != null)
                        {
                            //Debug.Log("闪电链");
                            List <GameObject> enemies = this.SeekAndGetEnemiesInDistance(150);
                            if (enemies != null && enemies.Count != 0)
                            {
                                int attackCount = Mathf.Min(enemies.Count, 4);
                                for (int i = 0; i < attackCount; i++)
                                {
                                    GameObject enemy = enemies[i];
                                    if (enemy != null)
                                    {
                                        GameObject chainLightningEffectA =
                                            (GameObject)
                                            Instantiate(Resources.Load("GameScene/ActorSkillEffect"));
                                        chainLightningEffectA.name = "ChainLightningEffectA";
                                        chainLightningEffectA.transform.position = this.myTransform.position;
                                        this.SetRotation(chainLightningEffectA, enemy.transform.position);
                                        float scale = Vector3.Distance(
                                            this.myTransform.position,
                                            enemy.transform.position) / 32f;
                                        chainLightningEffectA.transform.localScale = new Vector3(scale, 1, 1);
                                        tk2dSpriteAnimator animator =
                                            chainLightningEffectA.GetComponent <tk2dSpriteAnimator>();
                                        animator.Play("ChainLightningA");
                                        animator.AnimationCompleted = delegate
                                        {
                                            Destroy(chainLightningEffectA);
                                            if (enemy != null)
                                            {
                                                Damage chainLightningDamage = new Damage();
                                                chainLightningDamage.DamageValue = 200;
                                                chainLightningDamage.ShowCrit    = true;
                                                this.SendDamage(enemy.GetComponent <ActorController>(), chainLightningDamage);
                                            }
                                        };
                                    }
                                }
                            }
                        }
                    }
                    break;
                }

                case ActorSpellName.FireBomb:
                {
                    //Debug.Log("燃烧弹 " + targetActor);
                    if (targetActor != null && !targetActor.FireBombAttacked)
                    {
                        if (this.MyActor.ActorType == ActorType.BatRider)
                        {
                            targetActor.AttackInterval *= 1.6f;
                            targetActor.MyActor.ActorArmor.ArmorAmount =
                                Mathf.Max(targetActor.MyActor.ActorArmor.ArmorAmount - 3, 0);
                            targetActor.FireBombAttacked = true;
                        }
                        else if (this.MyActor.ActorType == ActorType.SeniorBatRider)
                        {
                            targetActor.AttackInterval *= 1.6f;
                            targetActor.MyActor.ActorArmor.ArmorAmount =
                                Mathf.Max(targetActor.MyActor.ActorArmor.ArmorAmount - 6, 0);
                            targetActor.FireBombAttacked = true;
                        }
                    }
                    break;
                }

                case ActorSpellName.PoisonAttack:
                {
                    //Debug.Log("毒液攻击" + targetActor);
                    if (targetActor != null && !targetActor.IsPoisioning)
                    {
                        if (this.MyActor.ActorType == ActorType.Wyvern)
                        {
                            targetActor.PoisionDps   = 3;
                            targetActor.IsPoisioning = true;
                        }
                        else if (this.MyActor.ActorType == ActorType.WindRider)
                        {
                            targetActor.PoisionDps   = 5;
                            targetActor.IsPoisioning = true;
                        }
                    }
                    break;
                }

                case ActorSpellName.BurningOil:
                {
                    //Debug.Log("燃烧之油" + targetActor);
                    if (targetActor != null && !targetActor.isBurningOilAttacked)
                    {
                        if (this.MyActor.ActorType == ActorType.Catapult)
                        {
                            targetActor.BurningOilDps        = 48;
                            targetActor.BurningOilDuration   = 3;
                            targetActor.IsBurningOilAttacked = true;
                        }
                    }
                    break;
                }

                case ActorSpellName.Smash:
                {
                    //Debug.Log("粉碎 " + targetActor);
                    if (targetActor != null)
                    {
                        if (this.MyActor.ActorType == ActorType.Tauren && Random.Range(1, 101) <= 25)
                        {
                            List <GameObject> enemies = targetActor.SeekAndGetFriendlyActorsInDistance(120);
                            if (enemies != null && enemies.Count != 0)
                            {
                                Damage splashDamage = new Damage();
                                splashDamage.DamageValue = 0.6f * damage.DamageValue;
                                splashDamage.ShowCrit    = true;
                                //Debug.Log("splash Damage " + splashDamage.DamageValue);
                                enemies.ForEach(
                                    enemy =>
                                    {
                                        if (enemy != null && enemy != targetActor.gameObject)
                                        {
                                            ActorController actorCtrl =
                                                enemy.GetComponent <ActorController>();
                                            if (actorCtrl != null)
                                            {
                                                this.SendDamage(actorCtrl, splashDamage);
                                            }
                                        }
                                    });
                            }
                        }
                    }
                    break;
                }
                }
            }
        }

        ActorAttackType actorAttackType = this.MyActor.ActorAttack.ActorAttackType;

        switch (actorAttackType)
        {
        case ActorAttackType.Normal:
        {
            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 0.9f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 0.8f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 1;
            }
            break;
        }

        case ActorAttackType.Pierce:
        {
            ActorSpell parrySpell = targetActor.MyActor.GetSpell(ActorSpellName.Parry);
            if (parrySpell != null)
            {
                damage.DamageValue *= 0.7f;
            }

            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 2f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 0.35f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 0.5f;
            }
            break;
        }

        case ActorAttackType.Siege:
        {
            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 1f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 1.5f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 0.5f;
            }
            break;
        }

        case ActorAttackType.Magic:
        {
            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 1.25f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 2f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 0.35f;
            }
            break;
        }

        case ActorAttackType.Confuse:
        {
            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 1f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 1f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 1f;
            }
            break;
        }

        case ActorAttackType.HeroAttack:
        {
            if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.LightArmor)
            {
                damage.DamageValue *= 1.2f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeavyArmor)
            {
                damage.DamageValue *= 1.2f;
            }
            else if (targetActor.MyActor.ActorArmor.ActorArmorType == ActorArmorType.HeroArmor)
            {
                damage.DamageValue *= 1f;
            }
            break;
        }
        }
        //Debug.Log("After armor " + damage.DamageValue);
        return(damage);
    }