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); }
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); }
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); }
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); }