public void OnUnitModifierRemove(UnitModifier modifier) { if (acceptedTypes.Any(v => v.type.IsAssignableFrom(modifier.GetType()))) { RemoveItem(modifier); } }
protected void CreateItem(UnitModifier modifier) { var go = Instantiate(prefab, transform); dynamics.Add(modifier, go); SendValue(go, modifier); }
public void OnDealDamage(UnitModifier source, Unit target, float damage, DamageType damageType) { if (source is not HuntTheMarkAbility && target.health.current > 0 && !target.modifiers.Get <MarkOfPreyStatus>().Any()) { Create(target, markOfPrey); } }
protected void RemoveItem(UnitModifier modifier) { if (dynamics.TryGetValue(modifier, out var val)) { Destroy(val); dynamics.Remove(modifier); } }
virtual public void AddModifier(UnitModifier modifier) { modifier.Init(); if (!Modifiers.Contains(modifier)) { Modifiers.Add(modifier); ApplyModifier(modifier); modifier.OnEndCallback += RemoveModifier; } }
public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg) { return(new InstantAbilityHandler(msg, this, (ability) => { var target = Game.grid.tiles[msg.targets[0]]; var modifier = (ShrapnelModifier)UnitModifier.Create(master, shrapnelModifier); modifier.target = target; modifier.creator = this; modifier.aoe = base.GetAffectedArea(target).ToList(); modifier.calculatedDamage = damage.current; modifier.damageType = damageType; CalculateDamage(ref modifier.calculatedDamage, ref modifier.damageType); })); }
virtual public void UnapplyModifier(UnitModifier modifier) { switch (modifier.Type) { case UnitModifierType.AttackSpeedModifier: { RuntimeStats.AttackSpeed = Stats.AttackSpeed / modifier.Amount; break; } case UnitModifierType.StunModifier: { behaviourOwner.isStunned = false; break; } default: { break; } } }
public void GetValueForUnit_PullsFromBonusesOfOwner() { var civ = BuildCiv( BuildBonuses(), BuildBonuses(), BuildBonuses() ); var unit = BuildUnit(civ); var modifier = new UnitModifier <int>( new UnitModifier <int> .ExtractionData() { PolicyBonusesExtractor = bonuses => 1, Aggregator = (a, b) => a + b, UnitaryValue = 1 } ); Container.Inject(modifier); Assert.AreEqual(4, modifier.GetValueForUnit(unit)); }
public virtual void Hit(Damage damage, UnitModifier modifier) { }
public override void Hit(Damage damage, UnitModifier modifier) { RuntimeBehaviour.Hit(damage, modifier); }
virtual public void RemoveModifier(UnitModifier modifier) { modifier.OnEndCallback -= RemoveModifier; UnapplyModifier(modifier); Modifiers.Remove(modifier); }
virtual public void Hit(Damage damage, UnitModifier modifier) { Hit(damage); AddModifier(modifier); }