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(); }
public void OnStatusRemove(StatusAbility statusAbilityEntity) { this.Publish(new StatusRemoveEvent() { CombatEntity = this, Status = statusAbilityEntity, StatusId = statusAbilityEntity.Id }); }
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 }); }
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(); }