Esempio n. 1
0
    /// <summary>
    /// Use every time before sent result of skill.
    /// </summary>
    public List <EffectReceiver> SetEffectOwnerIdAndDamage(Poring poring)
    {
        List <EffectReceiver> resultList = new List <EffectReceiver>();

        EffectsReceiver.ForEach(fx =>
        {
            float d = 0;
            if (fx.Damage == -1)
            {
                d  = ((DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk);
                d *= poring.GetBlessingBuff();
                EffectReceiver maximizePower = poring.GetStatus(SkillStatus.MaximizePower);
                d *= (maximizePower != null) ? maximizePower.Damage : 1;
                d *= DamageMultiple;
            }

            else
            {
                d = fx.Damage;
            }
            EffectReceiver result = new EffectReceiver()
            {
                OwnerId        = PrototypeGameMode.Instance.GetPoringIndexByPoring(poring),
                Damage         = d,
                EffectDuration = fx.EffectDuration,
                Status         = fx.Status,
                Particle       = fx.Particle
            };
            resultList.Add(result);
        });

        return(resultList);
    }
Esempio n. 2
0
    public override OnDefenseSkillResult OnDefense(Poring attacker, Poring poring, FaceDice faceDice)
    {
        if (faceDice == ActiveOnType && CurrentCD <= 0)
        {
            // Debug.LogError($"{poring.name} : {this.name}!!");
            float damage = 0;
            switch (DefenseType)
            {
            case DefenseTypeResult.None:
                damage = 0;
                break;

            case DefenseTypeResult.Counter:
                damage  = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;
                damage *= poring.GetBlessingBuff();
                EffectReceiver maximizePower = poring.GetStatus(SkillStatus.MaximizePower);
                damage *= (maximizePower != null) ? maximizePower.Damage : 1;
                if (attacker.Node != poring.Node)
                {
                    DefenseType = DefenseTypeResult.None;
                    damage      = 0;
                }
                if (poring.CheckHasStatus(SkillStatus.Blind))
                {
                    damage = 0;
                }
                break;

            case DefenseTypeResult.Dodge:
                damage = 0;
                break;
            }

            return(new OnDefenseSkillResult()
            {
                Type = DefenseType,
                DamageType = DamageType,
                EffectStatusResults = SetEffectOwnerIdAndDamage(poring),
                DamageResult = damage,
                EffectOnSelf = EffectOnSelf,
                EffectOnTarget = EffectOnHit,
            });
        }
        else
        {
            return(new OnDefenseSkillResult()
            {
                Type = DefenseTypeResult.None,
                DamageType = DamageType,
                EffectStatusResults = new List <EffectReceiver>(),
                DamageResult = 0
            });
        }
    }
Esempio n. 3
0
    private void SkillEffectActivate(Poring poring, Poring targetPoring = null, Node targetNode = null)
    {
        float damageResult = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;

        damageResult *= poring.GetBlessingBuff();
        EffectReceiver maximizePower = poring.GetStatus(SkillStatus.MaximizePower);

        damageResult *= (maximizePower != null) ? maximizePower.Damage : 1;
        damageResult *= DamageMultiple;

        if (poring.CheckHasStatus(SkillStatus.Blind) && targetNode == null)
        {
            damageResult = 0;
        }

        PrototypeGameMode.Instance.StartCoroutine(WaitForAnimation(poring, damageResult, targetPoring, targetNode));
    }
Esempio n. 4
0
    public void SetDetail(BaseSkill baseSkill, Poring poring)
    {
        float d = (baseSkill.DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;

        d *= poring.GetBlessingBuff();
        EffectReceiver maximizePower = poring.GetStatus(SkillStatus.MaximizePower);

        d *= (maximizePower != null) ? maximizePower.Damage : 1;

        Damage        = (int)((baseSkill.SkillMode == SkillMode.Activate) ? (baseSkill.DamageType == DamageType.PAtk) ? baseSkill.DamageMultiple * poring.Property.CurrentPAtk : baseSkill.DamageMultiple * poring.Property.CurrentMAtk : (baseSkill.DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk);
        DamageType    = baseSkill.DamageType;
        TargetTypestr = (baseSkill.TargetType == TargetType.Another) ? "Poring" : baseSkill.TargetType.ToString();
        MoveToTarget  = baseSkill.MoveToTarget;
        AOE           = baseSkill.AOEValue;
        Range         = $"{baseSkill.MinRangeValue} - {baseSkill.MaxRangeValue}";
        CD            = baseSkill.TurnCD;
        Description   = baseSkill.Description;
    }
Esempio n. 5
0
    public override OnAttackSkillResult OnAttack(Poring poring, FaceDice faceDice)
    {
        EffectReceiver maximizePowerDef;

        if (faceDice == ActiveOnType && CurrentCD <= 0)
        {
            CurrentCD = TurnCD;
            float damage = 0;
            switch (AttackType)
            {
            case AttackTypeResult.None:
                damage = 0;
                break;

            case AttackTypeResult.Double:
                damage           = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;
                damage          *= poring.GetBlessingBuff();
                maximizePowerDef = poring.GetStatus(SkillStatus.MaximizePower);
                damage          *= (maximizePowerDef != null) ? maximizePowerDef.Damage : 1;
                break;

            case AttackTypeResult.PowerUp:
                damage  = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;
                damage *= poring.GetBlessingBuff();
                damage *= 2;

                maximizePowerDef = poring.GetStatus(SkillStatus.MaximizePower);
                damage          *= (maximizePowerDef != null) ? maximizePowerDef.Damage : 1;
                break;

            case AttackTypeResult.Enchant:
                damage           = (DamageType == DamageType.PAtk) ? poring.Property.CurrentPAtk : poring.Property.CurrentMAtk;
                damage          *= poring.GetBlessingBuff();
                maximizePowerDef = poring.GetStatus(SkillStatus.MaximizePower);
                damage          *= (maximizePowerDef != null) ? maximizePowerDef.Damage : 1;
                break;
            }

            if (poring.CheckHasStatus(SkillStatus.Blind))
            {
                damage = 0;
            }

            return(new OnAttackSkillResult()
            {
                Type = AttackType,
                DamageType = DamageType,
                EffectStatusResults = SetEffectOwnerIdAndDamage(poring),
                DamageResult = damage,
                EffectOnSelf = EffectOnSelf,
                EffectOnTarget = EffectOnHit,
            });
        }
        else
        {
            return(new OnAttackSkillResult()
            {
                Type = AttackTypeResult.None,
                DamageType = DamageType,
                EffectStatusResults = new List <EffectReceiver>(),
                DamageResult = 0
            });
        }
    }