Esempio n. 1
0
    public override void Execute()
    {
        commandParams.GetTargets().ToList().ForEach(it => {
            new PlaySkillAnimationUseCase(it.unitId, commandParams.GetSkill().animationName).Execute();
        });
        SoundService.Instance.Play(skillSound);

        commandParams.GetTargets().ToList().ForEach(it =>
                                                    it.currentStatusEffect = it.currentStatusEffect.Where(status => status != StatusEffect.DEATH).ToArray()
                                                    );

        new HealUseCase(commandParams).Execute();
    }
Esempio n. 2
0
    public override void OnStateEnter()
    {
        string subject = commandParams.GetSubject()?.unitName;
        string targets = "all";

        if (commandParams.GetTargets().Length == 1)
        {
            targets = commandParams.GetTargets()[0].unitName;
        }
        string item  = commandParams.GetItem()?.itemName;
        string skill = commandParams.GetSkill()?.skillName;

        base.owner.UpdateDialogueText(subject + " performs " + skill + " to " + targets);
    }
Esempio n. 3
0
    public override void Execute(CommandParams commandParams)
    {
        StatusEffectChance[] chances = new StatusEffectChance[] {
            new StatusEffectChance(STUN, stun),
            new StatusEffectChance(POISON, poison),
            new StatusEffectChance(BURN, burn),
            new StatusEffectChance(FREEZE, freeze),
            new StatusEffectChance(CRYING, crying),
            new StatusEffectChance(HUNGRY, hungry),
            new StatusEffectChance(FORGET, forget),
        };
        commandParams.GetTargets().ToList().ForEach(target => {
            chances.ToList().ForEach(it => {
                float weakness = UnitUtil.GetWeakness(it.type, target);
                bool hit       = Random.Range(0f, 100f) <= it.chance + weakness;
                if (hit)
                {
                    UnitUtil.SetStatusEffect(target, it.type);
                }
                // Debug.Log(hit + "/" + it.type);
            });
        });

        new DamageFlatUseCase(commandParams).Execute();
    }
Esempio n. 4
0
 public override void Execute()
 {
     commandParams.GetTargets().ToList().ForEach(it => {
         new PlaySkillAnimationUseCase(it.unitId, commandParams.GetSkill().animationName).Execute();
     });
     SoundService.Instance.Play(skillSound);
     new HealUseCase(commandParams).Execute();
 }
Esempio n. 5
0
    public float Execute()
    {
        float total = 0;

        commandParams.GetTargets().ToList().ForEach(it => {
            total += DamageOne(commandParams.GetSubject(), it, commandParams.GetSkill());
        });

        return(total);
    }
Esempio n. 6
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);
    }
Esempio n. 7
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);
    }