Exemplo n.º 1
0
    public float Execute()
    {
        Debug.Log("DamagePercentageUseCase");
        float damage = -target.finalMaxHP * percentage * RandomWrapper.Range(0.2f);

        new ModifyHPUseCase(target, damage).Execute();
        DamageLogger.Add(target.unitId, (int)damage);
        return(damage);
    }
Exemplo n.º 2
0
    public float Execute()
    {
        float total = 0;

        commandParams.GetTargets().ToList().ForEach(target => {
            if (target.currentStatusEffect.Contains(StatusEffect.DEATH))
            {
                return; // If is dead, do not heal or damage.
            }
            float power = GetPower(target);
            total      += power;
            new ModifyHPUseCase(target, power).Execute();
            DamageLogger.Add(target.unitId, (int)power);
        });
        return(total);
    }
Exemplo n.º 3
0
    private float DamageOne(UnitSO subject, UnitSO target, SkillSO skill)
    {
        // Modifier should take into account resistances/weaknesess
        float modifier        = 1;
        bool  containsElement = target.elementalWeakness.ContainsKey(skill.element);

        if (containsElement)
        {
            modifier = target.elementalWeakness[skill.element] / 100f;
        }
        float power = skill.power;
        // Decide between physical and magical attack+defense
        bool  isMagic = skill.isMagical;
        float attack  = isMagic? subject.finalMagicAttack : subject.finalAttack;
        float defense = isMagic? subject.finalMagicDefense : target.finalDefense;
        float level   = subject.level;

        float formulaRes = ((2 * level / 5 + 2) * (power / 50) * (attack / defense) + 2) * modifier * RandomWrapper.Range(0.2f);

        new ModifyHPUseCase(target, -formulaRes).Execute();
        DamageLogger.Add(target.unitId, (int)-formulaRes);
        return(formulaRes);
    }
Exemplo n.º 4
0
    public float Execute()
    {
        // Modifier should take into account resistances/weaknesess
        float modifier = 1;
        float power    = commandParams.GetSkill().power;
        // Decide between physical and magical attack+defense
        bool  isMagic = commandParams.GetSkill().isMagical;
        float attack  = isMagic? commandParams.GetSubject().finalMagicAttack : commandParams.GetSubject().finalAttack;
        float level   = commandParams.GetSubject().level;

        float formulaRes = ((2 * level / 5 + 2) * (power / 50) * (attack / 200) + 2) * modifier;

        commandParams.GetTargets().ToList().ForEach(it => {
            if (it.currentStatusEffect.Contains(StatusEffect.DEATH))
            {
                return; // If is dead, do not heal.
            }
            new ModifyHPUseCase(it, formulaRes).Execute();
            DamageLogger.Add(it.unitId, (int)formulaRes);
        });

        return(formulaRes);
    }