/// <summary> /// Launched when attack is used /// </summary> /// <param name="effect"></param> public void DirectAttack(Effect effect) { NetIdeable target = effect.GetTarget(); bool isBlocked = CalculateEffectBlocked(effect); if (!isBlocked) { if (effect.HitOnDirectAttack) { UseEffect(effect); } else { AttachEffect(effect);//if it is a dot only, add it to attached } } }
public bool CalculateEffectBlocked(Effect effect) { NetIdeable target = effect.GetTarget(); bool isblocked = false; foreach (Effect eff in target.AttachedEffects) { if (eff.GetType() == typeof(BlockEffects)) { BlockEffects block = (BlockEffects)eff; if (block.listEffectsToBlock.Exists((x) => x.GetType() == effect.GetType()) && block.numberToBlock > 0) { block.numberToBlock--; isblocked = true; } } } effect.GetTarget().AttachedEffects.RemoveAll((x) => x.GetType() == typeof(BlockEffects) && ((BlockEffects)x).numberToBlock <= 0); return(isblocked); }
public void StartTurnUseEffect(Effect effect) { NetIdeable target = effect.GetTarget(); bool isBlocked = CalculateEffectBlocked(effect); if (!isBlocked) { if (!effect.TriggerAtOneOnly || effect.TriggerAtOneOnly && effect.TurnActiveEffect == 1) { UseEffect(effect); } else { effect.TurnActiveEffect--; } } else//deletes the DOT { effect.GetTarget().AttachedEffects.RemoveAll((x) => x.GetType() == typeof(Effect)); } }
public void TargetAndInvokeEffectManager(NetIdeable placeable) { }