protected Attack HornAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.Elements.Add(Element.Emperor, 1.0); return(attack); }
private static Attack FlareAttack(Creature user, IEffectHolder target) { Attack attack = new Attack(user, target); attack.Elements.Add(Element.TheEnd, 1.0); return(attack); }
public EffectFlag(IEffectHolder holder, Stat flag, bool value, double priority) { Holder = holder; Flag = flag; Value = value; Priority = priority; }
public EffectFamily(IEffectHolder holder, Family family, bool value, double priority) { Holder = holder; Family = family; Value = value; Priority = priority; }
public static void ClearPosition(this IEffectHolder subject) { foreach (var position in subject.GetEffects <Effect>().Where(x => x is IPosition position && position.Subject == subject)) { position.Remove(); } }
public EffectStatLock(IEffectHolder holder, Stat stat, double min, double max) { Holder = holder; Stat = stat; MinValue = min; MaxValue = max; }
public static void ClearStatusEffects(this IEffectHolder holder, Func <StatusEffect, bool> match) { foreach (var effect in holder.GetEffects <EffectStatusEffect>().Where(effect => match(effect.StatusEffect))) { effect.Remove(); } }
public static void AddStatusEffect(this IEffectHolder holder, StatusEffect statusEffect) { statusEffect.Creature = holder; var statusEffects = holder.GetEffects <EffectStatusEffect>(); var combineable = statusEffects.Select(x => x.StatusEffect).Where(x => x.CanCombine(statusEffect)).ToList(); if (combineable.Any()) { var combined = combineable.SelectMany(x => x.Combine(statusEffect)).Distinct().ToList(); var added = combined.Except(combineable).ToList(); var removed = combineable.Except(combined).ToHashSet(); foreach (var effect in added) { effect.Apply(); } foreach (var effect in statusEffects.Where(x => removed.Contains(x.StatusEffect))) { effect.Remove(); } } else { statusEffect.Apply(); } }
public static void ClearStatusEffects(this IEffectHolder holder) { foreach (var effect in holder.GetEffects <EffectStatusEffect>()) { effect.Remove(); } }
public static JToken GetHolderID(IEffectHolder holder) { if (holder is MapTile mapTile) { return(WriteCoordinate("mapTile", mapTile.X, mapTile.Y)); } else if (holder is Tile tile) { if (tile == tile.Under) { return(WriteCoordinate("under", tile.X, tile.Y)); } else { return(WriteCoordinate("tile", tile.X, tile.Y)); } } else if (holder is IJsonSerializable jsonSerializable) { return(jsonSerializable.GlobalID.ToString()); } else { return(null); } }
public static void ClearEffects(this IEffectHolder holder) { foreach (var effect in GetEffects <Effect>(holder, false)) { effect.Remove(); } }
public Randomized(IEffectHolder holder, Stat stat, double lower, double upper) : base() { Holder = holder; Stat = stat; Lower = lower; Upper = upper; }
public override void ReadJson(JToken json, Context context) { Holder = Serializer.GetHolder <IEffectHolder>(json["holder"], context); Stat = Stat.GetStat(json["stat"].Value <string>()); MaxValue = json["max"].Value <double>(); MinValue = json["min"].Value <double>(); }
public override void ReadJson(JToken json, Context context) { Holder = Serializer.GetHolder <IEffectHolder>(json["holder"], context); Flag = Stat.GetStat(json["flag"].Value <string>()); Value = json["value"].Value <bool>(); Priority = json["priority"].Value <double>(); }
protected Attack ExplosionAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.Elements.Add(Element.Chaos, 1.0); return(attack); }
public void Add(IEffectHolder holder, Effect effect) { if (holder.ObjectID == ReusableID.Null) { return; } if (Has(holder)) { Effects[holder.ObjectID].Add(effect); } else { if (Effects.Capacity > holder.ObjectID && Effects[holder.ObjectID] != null) { var effects = Effects[holder.ObjectID]; for (int i = effects.Count; i >= 0; i--) { if (i < effects.Count) { effects[i].Remove(); } } } Effects[holder.ObjectID] = new EffectList(holder.ObjectID.Generation) { effect }; } Effects[holder.ObjectID].Persist = holder is IEffectHolderPersistent; }
private Attack AttackSlap(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.Elements.Add(Element.Bludgeon, 0.3); return(attack); }
private static Attack MeteorAttack(Creature user, IEffectHolder target) { Attack attack = new Attack(user, target); attack.SetParameters(user.GetStat(Stat.Defense), 0.25, 1); attack.Elements.Add(Element.Bludgeon, 1.0); return(attack); }
public Special(IEffectHolder holder, Stat stat, AmountDelegate amount, StatLineDelegate statLine, string tag) : base() { Holder = holder; Stat = stat; AmountFunc = amount; StatLineFunc = statLine; Tag = tag; }
private Attack BulletAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.Elements.Add(Element.Bludgeon, 1.0); attack.ExtraEffects.Add(new AttackSkill(this)); return(attack); }
public Attack ArcAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.SetParameters(20, 0, 1); attack.Elements.Add(Element.Thunder, 1.0); return(attack); }
public Color GetStatColor(IEffectHolder holder) { if (holder is Trait trait) { return(trait.Color); } return(Color.White); }
private Attack AttackQuake(Creature attacker, IEffectHolder defender, PopupHelper popupHelper) { Attack attack = new Attack(attacker, defender); attack.PopupHelper = popupHelper; attack.Elements.Add(Element.TheEnd, 1.0); return(attack); }
private static Attack LavaAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.SetParameters(50, 1, 1); attack.Elements.Add(Element.Fire, 1.0); return(attack); }
public static IEnumerable <Wait> PushEvent <T, V>(this IEffectHolder holder, T eventParam) where V : EffectEvent <T> { IEnumerable <V> enumerable = holder.GetEffects <V>().Distinct(); foreach (var effect in enumerable) { yield return(effect.Trigger(eventParam)); } }
private Attack ExplosionAttack(Creature attacker, IEffectHolder defender, PopupHelper popupHelper) { Attack attack = new Attack(attacker, defender); attack.Elements.Add(Element.Ice, 1.0); attack.Elements.Add(Element.Bludgeon, 1.0); attack.PopupHelper = popupHelper; return(attack); }
protected override Attack Attack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.ExtraEffects.Add(new AttackPhysical()); attack.Elements.Add(Element.Slash, 0.5); attack.Elements.Add(Element.TheEnd, 1.0); return(attack); }
private Attack ExplosionAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.Fault = this; attack.SetParameters(attacker.GetStat(Stat.HP) * 0.5, 0, 1); attack.Elements.Add(Element, 1.0); return(attack); }
public Attack ExplosionAttack(Creature attacker, IEffectHolder defender) { Attack attack = new Attack(attacker, defender); attack.SetParameters(400, 0, 1); attack.Elements.Add(Element.Thunder, 0.5); attack.Elements.Add(Element.Fire, 0.5); return(attack); }
private Attack SparkAttack(Creature attacker, IEffectHolder defender, double force) { Attack attack = new Attack(attacker, defender); attack.SetParameters(force, 0, 1); attack.Elements.Add(Element.Thunder, 1.0); attack.ReactionLevel = 1; return(attack); }