コード例 #1
0
ファイル: Arotas.cs プロジェクト: Apoc-/TowerDefense
        private void MorphToPhoenix(Attribute attribute)
        {
            _isEgg = false;
            Heal();

            var burstEffect = new AttributeEffect(2f, AttributeName.MovementSpeed, AttributeEffectType.PercentMul, this, 1.5f);

            Attributes[AttributeName.MovementSpeed].AddAttributeEffect(burstEffect);
        }
コード例 #2
0
        protected override void ApplyEffect(Tower source, Npc target)
        {
            if (source.HasAttribute(AttributeName.AttackSpeed))
            {
                var attr   = source.GetAttribute(AttributeName.AttackSpeed);
                var effect = new AttributeEffect(0.1f, AttributeName.AttackSpeed, AttributeEffectType.PercentAdd, this, 3);

                attr.AddAttributeEffect(effect);
            }
        }
コード例 #3
0
            public override bool Equals(System.Object Target)
            {
                if ((null == Target) || (GetType() != Target.GetType()))
                {
                    return(false);
                }

                AttributeEffect TargetData = (AttributeEffect)Target;

                return(((Flags == TargetData.Flags) && (FrameStart == TargetData.FrameStart) && (RateTime == TargetData.RateTime)) ? true : false);
            }
コード例 #4
0
ファイル: FrostMage.cs プロジェクト: Apoc-/TowerDefense
        protected override void InitNpcData()
        {
            Name            = "Frost Mage";
            ModelPrefab     = Resources.Load <GameObject>("Prefabs/Npcs/Elves/FrostMage");
            HealthBarOffset = 0.4f;

            Rarity  = Rarities.Rare;
            Faction = FactionNames.Elves;

            var auraAttrEffect = new AttributeEffect(-0.25f, AttributeName.AttackSpeed, AttributeEffectType.PercentMul, this);

            AuraEffects.Add(new AuraEffect(auraAttrEffect, true, false));
        }
コード例 #5
0
        public void Stun(float duration, IAttributeEffectSource source)
        {
            if (HasAttribute(AttributeName.AttackSpeed))
            {
                var attr = GetAttribute(AttributeName.AttackSpeed);
                if (attr.Value > 0)
                {
                    var effect = new AttributeEffect(0.0f, AttributeName.AttackSpeed, AttributeEffectType.SetValue, source, duration);
                    attr.AddAttributeEffect(effect);
                }
            }

            PlayParticleEffectAboveTower("StunEffect", duration);
        }
コード例 #6
0
        protected override void InitNpcData()
        {
            Name            = "Dwarf Tax Collector";
            ModelPrefab     = Resources.Load <GameObject>("Prefabs/Npcs/Dwarfs/DwarfTaxCollector");
            HealthBarOffset = 0.4f;

            Rarity  = Rarities.Rare;
            Faction = FactionNames.Dwarfs;

            var effect    = new AttributeEffect(0.5f, AttributeName.MovementSpeed, AttributeEffectType.PercentAdd, this);
            var speedAura = new AuraEffect(effect, false, true);

            AuraEffects.Add(speedAura);
        }
コード例 #7
0
        public void EnforceNearbyTower(int goldAmount)
        {
            var range  = GetAttributeValue(AttributeName.AuraRange);
            var towers = TargetingHelper.GetTowersInRadius(transform.position, range);

            towers.Add(this);

            var tower = towers[_rng.Next(towers.Count)];

            if (tower.HasAttribute(AttributeName.AttackDamage))
            {
                var effect = new AttributeEffect(0.5f, AttributeName.AttackDamage, AttributeEffectType.Flat, this);
                tower.Attributes[AttributeName.AttackDamage].AddAttributeEffect(effect);
            }
        }
コード例 #8
0
        protected override void ApplyEffect(Tower source, Npc target)
        {
            if (target.HasAttribute(AttributeName.MovementSpeed))
            {
                var movementSpeed = target.GetAttribute(AttributeName.MovementSpeed);

                var slowEffect = new AttributeEffect(
                    value: -slowAmount,
                    affectedAttributeName: AttributeName.MovementSpeed,
                    effectType: AttributeEffectType.PercentMul,
                    effectSource: this,
                    duration: 3);

                movementSpeed.AddAttributeEffect(slowEffect);
            }
        }
コード例 #9
0
ファイル: GoldCoin.cs プロジェクト: Apoc-/TowerDefense
        protected override void InitAttributes()
        {
            base.InitAttributes();

            AddAttribute(new Attribute(
                             AttributeName.MaxHealth,
                             GameSettings.BaselineNpcHp[Rarities.Rare],
                             GameSettings.BaselineNpcHpInc[Rarities.Rare]));

            AddAttribute(new Attribute(AttributeName.MovementSpeed, GameSettings.BaseLineNpcMovementspeed));

            var goldEffect = new AttributeEffect(1, AttributeName.GoldReward, AttributeEffectType.SetValue, this);
            var xpEffect   = new AttributeEffect(0, AttributeName.XPReward, AttributeEffectType.SetValue, this);

            GetAttribute(AttributeName.GoldReward).AddAttributeEffect(goldEffect);
            GetAttribute(AttributeName.XPReward).AddAttributeEffect(xpEffect);
        }
コード例 #10
0
        protected override void ApplyEffect(Tower source, Npc target)
        {
            if (target.HasAttribute(AttributeName.MovementSpeed))
            {
                var movementSpeed = target.GetAttribute(AttributeName.MovementSpeed);

                var slowEffect = new AttributeEffect(
                    0.0f,
                    AttributeName.MovementSpeed,
                    AttributeEffectType.SetValue,
                    this,
                    _stunDuration);

                movementSpeed.AddAttributeEffect(slowEffect);

                var effect = new ParticleEffectData("StunEffect", target.gameObject, _stunDuration);
                GameManager.Instance.SpecialEffectManager.PlayParticleEffect(effect);
            }
        }
コード例 #11
0
        public override void Die(bool silent = false)
        {
            if (_isChest == false)
            {
                ModelPrefab = Resources.Load <GameObject>("Prefabs/Npcs/Dwarfs/TreasureChest");
                ReloadNpcModel();

                var effect = new AttributeEffect(2.0f, AttributeName.MaxHealth, AttributeEffectType.PercentMul, this);
                GetAttribute(AttributeName.MaxHealth).AddAttributeEffect(effect);

                Heal();
                ShouldDie = false;

                _target = transform.position;
                transform.Translate(Vector3.up * 3f);

                _isChest = true;
            }
            else
            {
                base.Die(silent: true);
            }
        }
コード例 #12
0
 public AuraEffect(AttributeEffect attributeEffect, bool affectsTowers, bool affectsNpcs)
 {
     AttributeEffect = attributeEffect;
     AffectsNpcs     = affectsNpcs;
     AffectsTowers   = affectsTowers;
 }
コード例 #13
0
 public void Duplicate(AttributeEffect Original)
 {
     Flags      = Original.Flags;
     FrameStart = Original.FrameStart;
     RateTime   = Original.RateTime;
 }
コード例 #14
0
        private void SlowDown(Npc npc, NpcHitData hitData)
        {
            var effect = new AttributeEffect(-0.75f, AttributeName.MovementSpeed, AttributeEffectType.PercentMul, this, 0.5f);

            Attributes[AttributeName.MovementSpeed].AddAttributeEffect(effect);
        }
コード例 #15
0
        protected void SpeedBurst(Npc npc, NpcHitData hitData)
        {
            var effect = new AttributeEffect(0.5f, AttributeName.MovementSpeed, AttributeEffectType.Flat, this, 0.5f);

            Attributes[AttributeName.MovementSpeed].AddAttributeEffect(effect);
        }
コード例 #16
0
ファイル: Item.cs プロジェクト: Apoc-/TowerDefense
 protected void AddAttributeEffect(AttributeEffect effect)
 {
     _attributeEffects.Add(effect);
 }
コード例 #17
0
 public AttributeTileEffect(Tile tile, AttributeEffect effect) : base(tile)
 {
     _effect = effect;
 }