public IReadOnlyDictionary <TriggerEventType, TriggerEvent> GetTriggerEvent(IModifierEffectHolder target) { var result = new Dictionary <TriggerEventType, TriggerEvent>(); if (!_core.Scope.TryGetValue(target.TypeName, out var scope)) { return(result); } foreach (var kv in scope.TriggerEvent) { if (!Enum.TryParse(kv.Key, out TriggerEventType type)) { Logger.Log(LogType.Warning, Name, $"{kv.Key} is not a valid TriggerEvent type, so it will be ignored."); continue; } if (type == TriggerEventType.OnAdded || type == TriggerEventType.OnRemoved) { continue; } var priority = scope.TriggerEventPriority.TryGetValue(kv.Key, out var value) ? value : 0; result[type] = new TriggerEvent(Name, type, kv.Value, target, AdderObjectId, priority); } return(result); }
public void OnAdded(IModifierEffectHolder target, int adderObjectId) { if (!Scope.TryGetValue(target.TypeName, out var scope)) { return; } if (!scope.TriggerEvent.TryGetValue("OnAdded", out var onAdded)) { return; } onAdded.TryInvoke($"Scope.{target.TypeName}.OnAdded", Name, target, Game.Instance.GetObject(adderObjectId)); }
public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target) => _core.GetEffects(target, AdderObjectId);
public void OnRemoved(IModifierEffectHolder target) => _core.OnRemoved(target, AdderObjectId);
public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target, int adderObjectId) => _getEffect == null || !_getEffect.TryInvoke($"Scope.{TargetTypeName}.GetEffect", _modifierName, out var result, target, adderObjectId)
public IReadOnlyList <ModifierEffect> GetEffects(IModifierEffectHolder target, int adderObjectId) => Scope.TryGetValue(target.TypeName, out var scope) ? scope.GetEffects(target, adderObjectId) : new List <ModifierEffect>();