private void ApplyEffect(IDamageHandlerComponent target) { bool hasCrit = CalculateAndReturnCrit(); bool targetHasEvaded = target.HasEvaded(); Aura aura = null; if (_auraType != null) { aura = _auraFactory.Create(_auraType); } DamageType type = _isHealing ? DamageType.Healing : DamageType.Standard; DamageDetails details = new DamageDetails(CalculateAndReturnDamage(hasCrit), type, hasCrit, targetHasEvaded, aura); AttachmentEffectCommand weaponEffectCommand = new AttachmentEffectCommand(target, details); if (_vfx != null) { _vfx.Activate(weaponEffectCommand, _ownerTr, target.EntityTransform, targetHasEvaded); } else { weaponEffectCommand.Execute(); } }
public bool TryAddTarget(GameObject target, out bool allTargetsAcquired) { allTargetsAcquired = false; IDamageHandlerComponent targetDamageHandler = target.GetComponent <IDamageHandlerComponent>(); if (targetDamageHandler != null) { if (targets.Count >= _maximumTargets && targets.Count > 0) { _targetRemovedEvent.TriggerEvent(0, targets[0].gameObject); targets.RemoveAt(0); } targets.Add(new Target(targetDamageHandler, target)); _targetAddedEvent.TriggerEvent(0, target); return(true); } return(false); }
public override void OnRemove() { _targetDamageHandler = null; }
public override void OnApply() { _targetDamageHandler = _target.GetComponent<IDamageHandlerComponent>(); }
public AttachmentEffectCommand(IDamageHandlerComponent damageHandler, DamageDetails damageDetails) { _damageHandler = damageHandler; _damageDetails = damageDetails; }
public Target(IDamageHandlerComponent damageHandler, GameObject go) { damageHandlerComponent = damageHandler; gameObject = go; }