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); }
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); } }
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); }
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)); }
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); }
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); }
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); } }
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); } }
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); }
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); } }
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); } }
public AuraEffect(AttributeEffect attributeEffect, bool affectsTowers, bool affectsNpcs) { AttributeEffect = attributeEffect; AffectsNpcs = affectsNpcs; AffectsTowers = affectsTowers; }
public void Duplicate(AttributeEffect Original) { Flags = Original.Flags; FrameStart = Original.FrameStart; RateTime = Original.RateTime; }
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); }
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); }
protected void AddAttributeEffect(AttributeEffect effect) { _attributeEffects.Add(effect); }
public AttributeTileEffect(Tile tile, AttributeEffect effect) : base(tile) { _effect = effect; }