public float GetPower(UnitSO target) { float power = 0f; if (commandParams.GetSkill() != null) { if (commandParams.GetSkill().targeting.Equals(SkillTarget.SINGLE_ALLY) || commandParams.GetSkill().targeting.Equals(SkillTarget.MULTIPLE_ALLIES)) { power = commandParams.GetSkill().power; } else { power = -commandParams.GetSkill().power; } } else if (commandParams.GetItem().GetType() == typeof(ItemHealingSO)) { power = ((ItemHealingSO)commandParams.GetItem()).power; } else if (commandParams.GetItem().GetType() == typeof(ItemOffensiveSO)) { var item = (ItemOffensiveSO)commandParams.GetItem(); float modifier = target.elementalWeakness[item.element]; power = -item.power; } return(power); }
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 override void OnStateEnter() { bool offensive = false; if (commandParams.GetItem() != null) { offensive = commandParams.GetItem().targeting.Equals(SINGLE_OPPONENT) || commandParams.GetItem().targeting.Equals(MULTIPLE_OPPONENTS); } else if (commandParams.GetSkill() != null) { offensive = commandParams.GetSkill().targeting.Equals(SINGLE_OPPONENT) || commandParams.GetSkill().targeting.Equals(MULTIPLE_OPPONENTS); } else { throw new System.Exception("SelectOneTargetState couldn't infer offensive intention of skill/item."); } targetSelector.Show(UnitUtil.GetUnitsFor(commandParams.GetSubject(), base.owner.allUnits, offensive)); targetSelector.OnTargetClicked += Next; base.owner.UpdateDialogueText("Choose a target."); }
public override void Tick() { if (timer.Progress()) { if (commandParams.GetSkill() != null) { ExecuteSkill(); // Consume mana/energy UnitUtil.SubstractMana(commandParams.GetSubject(), commandParams.GetSkill()); } else if (commandParams.GetItem() != null) { ExecuteItem(); // Consume item UnitUtil.ConsumeItem(owner.GetInventory(), commandParams.GetItem()); } owner.ChangeState(new ApplyBurnState(base.owner)); } }
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 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); }