예제 #1
0
        public void ApplyAssignEffect()
        {
            PreProcess();
            if (Effect is DamageEffect damageEffect)
            {
            }
            if (Effect is AddStatusEffect addStatusEffect)
            {
                var statusConfig = addStatusEffect.AddStatus;
                if (statusConfig.CanStack == false)
                {
                    if (Target.HasStatus(statusConfig.ID))
                    {
                        var status          = Target.GetStatus(statusConfig.ID);
                        var statusLifeTimer = status.GetComponent <StatusLifeTimeComponent>().LifeTimer;
                        statusLifeTimer.MaxTime = addStatusEffect.Duration / 1000f;
                        statusLifeTimer.Reset();
                        return;
                    }
                }
                Status        = Target.AttachStatus <StatusAbility>(statusConfig);
                Status.Caster = Creator;
                Status.Level  = SourceAbility.Level;
                Status.AddComponent <StatusLifeTimeComponent>();
                Status.TryActivateAbility();
            }
            PostProcess();

            ApplyAction();
        }
예제 #2
0
 public void OnStatusRemove(StatusAbility statusAbilityEntity)
 {
     this.Publish(new StatusRemoveEvent()
     {
         CombatEntity = this, Status = statusAbilityEntity, StatusId = statusAbilityEntity.Id
     });
 }
예제 #3
0
 public void OnStatusRemove(StatusAbility statusAbility)
 {
     TypeIdStatuses[statusAbility.StatusConfigObject.ID].Remove(statusAbility);
     if (TypeIdStatuses[statusAbility.StatusConfigObject.ID].Count == 0)
     {
         TypeIdStatuses.Remove(statusAbility.StatusConfigObject.ID);
     }
     this.Publish(new RemoveStatusEvent()
     {
         CombatEntity = this, Status = statusAbility, StatusId = statusAbility.Id
     });
 }
예제 #4
0
 public void ApplyAssignEffect()
 {
     PreProcess();
     if (Effect is DamageEffect damageEffect)
     {
     }
     if (Effect is AddStatusEffect addStatusEffect)
     {
         Status        = Target.ReceiveStatus <StatusAbility>(addStatusEffect.AddStatus);
         Status.Caster = Creator;
         Status.AddComponent <StatusLifeTimeComponent>();
         Status.TryActivateAbility();
     }
     PostProcess();
 }