Пример #1
0
    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();
        }
    }
Пример #2
0
    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>();
 }
Пример #5
0
 public AttachmentEffectCommand(IDamageHandlerComponent damageHandler, DamageDetails damageDetails)
 {
     _damageHandler = damageHandler;
     _damageDetails = damageDetails;
 }
Пример #6
0
 public Target(IDamageHandlerComponent damageHandler, GameObject go)
 {
     damageHandlerComponent = damageHandler;
     gameObject             = go;
 }