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(); }
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); }
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(); }
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(); }
public float Execute() { float total = 0; commandParams.GetTargets().ToList().ForEach(it => { total += DamageOne(commandParams.GetSubject(), it, commandParams.GetSkill()); }); return(total); }
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); }
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); }