示例#1
0
    private void ApplySkillEffectOnTarget(PawnInstance _target, int _effectiveDamage)
    {
        Fighter curTargetFighter;

        if (_target.GetComponent <Mortal>() == null || _target.GetComponent <Mortal>().CurrentHp <= 0)
        {
            return;
        }

        curTargetFighter = _target.GetComponent <Fighter>();
        int curEffDmg = _effectiveDamage;

        curTargetFighter.IsWaitingForDmgFeedback       = true;
        curTargetFighter.IsWaitingForSkillPanelToClose = true;

        curTargetFighter.PendingDamage = ((isMeantToHeal) ? -curEffDmg : curEffDmg);
        if (boeufs != null)
        {
            for (int i = 0; i < boeufs.Length; i++)
            {
                bool    boeufMustBeAdded = true;
                Fighter tmpTargetFighter = (boeufs[i].BoeufTarget == BoeufTarget.SameAsAttack) ? curTargetFighter : skillUser.GetComponent <Fighter>();

                if (boeufs[i].Duration == 0 && boeufs[i].BoeufType == BoeufType.IncreaseStocks && boeufs[i].BoeufTarget == BoeufTarget.Self)
                {
                    int value;
                    if (boeufs[i].EffectValue == 0)
                    {
                        skillUser.ConsecutiveShots++;
                        value = skillUser.ConsecutiveShots;
                    }
                    else
                    {
                        value = boeufs[i].EffectValue;
                    }

                    skillUser.transform.gameObject.AddComponent <DieFeedback>();

                    for (int j = 0; j < boeufs[i].SymbolsAffected.Length; j++)
                    {
                        if (boeufs[i].SymbolsAffected[j] == FaceType.Physical)
                        {
                            skillUser.PhysicalSymbolStored += value;
                        }
                        if (boeufs[i].SymbolsAffected[j] == FaceType.Magical)
                        {
                            skillUser.MagicalSymbolStored += value;
                        }
                        if (boeufs[i].SymbolsAffected[j] == FaceType.Defensive)
                        {
                            skillUser.DefensiveSymbolStored += value;
                        }

                        skillUser.transform.GetComponent <DieFeedback>().PopFeedback(new Face(boeufs[i].SymbolsAffected[j], value), skillUser.GetComponent <PawnInstance>());
                    }
                    continue;
                }

                for (int j = 0; j < tmpTargetFighter.EffectiveBoeufs.Count; j++)
                {
                    if (boeufs[i].BoeufType == tmpTargetFighter.EffectiveBoeufs[j].BoeufType)
                    {
                        if ((boeufs[i].EffectValue > 0 && tmpTargetFighter.EffectiveBoeufs[j].EffectValue > 0 && boeufs[i].EffectValue <= tmpTargetFighter.EffectiveBoeufs[j].EffectValue) ||
                            (boeufs[i].EffectValue < 0 && tmpTargetFighter.EffectiveBoeufs[j].EffectValue < 0 && boeufs[i].EffectValue >= tmpTargetFighter.EffectiveBoeufs[j].EffectValue))
                        {
                            tmpTargetFighter.RemoveBoeuf(tmpTargetFighter.EffectiveBoeufs[j]);
                            break;
                        }
                        else
                        {
                            if ((boeufs[i].EffectValue > 0 && tmpTargetFighter.EffectiveBoeufs[j].EffectValue > 0) ||
                                (boeufs[i].EffectValue < 0 && tmpTargetFighter.EffectiveBoeufs[j].EffectValue < 0))
                            {
                                boeufMustBeAdded = false;
                                break;
                            }
                        }
                    }
                }
                if (boeufMustBeAdded)
                {
                    tmpTargetFighter.AddBoeuf(new BattleBoeuf(boeufs[i]));
                }
            }
        }
    }