Exemple #1
0
 public void OnUnitModifierRemove(UnitModifier modifier)
 {
     if (acceptedTypes.Any(v => v.type.IsAssignableFrom(modifier.GetType())))
     {
         RemoveItem(modifier);
     }
 }
Exemple #2
0
    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);
     }
 }
Exemple #4
0
 protected void RemoveItem(UnitModifier modifier)
 {
     if (dynamics.TryGetValue(modifier, out var val))
     {
         Destroy(val);
         dynamics.Remove(modifier);
     }
 }
Exemple #5
0
 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);
        }));
    }
Exemple #7
0
    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));
        }
Exemple #9
0
 public virtual void Hit(Damage damage, UnitModifier modifier)
 {
 }
Exemple #10
0
 public override void Hit(Damage damage, UnitModifier modifier)
 {
     RuntimeBehaviour.Hit(damage, modifier);
 }
Exemple #11
0
 virtual public void RemoveModifier(UnitModifier modifier)
 {
     modifier.OnEndCallback -= RemoveModifier;
     UnapplyModifier(modifier);
     Modifiers.Remove(modifier);
 }
Exemple #12
0
 virtual public void Hit(Damage damage, UnitModifier modifier)
 {
     Hit(damage);
     AddModifier(modifier);
 }