コード例 #1
0
 public override void Update(GameTime gameTime)
 {
     // TBD: is just using one hitbox fine?
     if (Globals.Map.CollidesWithWall(WallCollisionHitbox))
     {
         if (Creator is Zerd)
         {
             ((Zerd)Creator).Stats.Missed();
         }
         Speed    = 0;
         Distance = 0; // Treat this missile as expired (gone past it's max distance)
         IsAlive  = false;
         HitWall  = true;
     }
     if (IsAlive)
     {
         CheckHit();
         if (Origin.DistanceBetween(Position) > Distance && IsAlive)
         {
             Speed  *= 0.75f;
             IsAlive = false;
             if (Creator is Zerd)
             {
                 ((Zerd)Creator).Stats.Missed();
             }
         }
     }
     base.Update(gameTime);
 }
コード例 #2
0
 public override void Update(GameTime gameTime)
 {
     if (IsAlive)
     {
         foreach (var enemy in Creator.Enemies().Where(e => e.IsAlive && !TargetsHit.Contains(e)))
         {
             if (enemy.Hitbox().Any(hitbox => Hitbox().Any(hitbox.Intersects)))
             {
                 OnHit(enemy);
             }
         }
     }
     if (Origin.DistanceBetween(Position) > Distance && IsAlive)
     {
         Speed  *= 0.75f;
         IsAlive = false;
         if (!TargetsHit.Any())
         {
             ((Zerd)Creator).Stats.Missed();
         }
         else
         {
             ((Zerd)Creator).Stats.IncreaseCombo();
         }
     }
     base.Update(gameTime);
 }
コード例 #3
0
        public override void OnHit(Being target)
        {
            var zerd = (Zerd)Creator;

            Damage.Damage += Origin.DistanceBetween(Position) * zerd.SkillValue(SkillType.Sniper, true) / 100f;
            Damage.DamageBeing(target);
            IsActive = false;
        }
コード例 #4
0
 public override Animation GetCurrentAnimation()
 {
     if (!_spawned)
     {
         return(Animations.Get(AnimationTypes.Spawn));
     }
     return(Animations.Get(Origin.DistanceBetween(Position) > Distance || HitWall ? AnimationTypes.Death : AnimationTypes.Move));
 }
コード例 #5
0
ファイル: CharmMissile.cs プロジェクト: zwand19/zerds
        public override void Update(GameTime gameTime)
        {
            if (Origin.DistanceBetween(Position) > Distance && IsAlive)
            {
                IsActive = false;
            }

            base.Update(gameTime);
        }
コード例 #6
0
        public override void OnHit(Being target)
        {
            if (TargetsHit.Contains(target))
            {
                return;
            }
            Distance -= AbilityConstants.LavaBlastDistanceLossPerHit;
            TargetsHit.Add(target);
            var oldDamage = Damage.Damage;

            Damage.Damage += Origin.DistanceBetween(Position) * ((Zerd)Creator).SkillValue(SkillType.Sniper, true) / 100f;
            Damage.DamageBeing(target);
            target.AddBuff(new BurnBuff(Creator, target, TimeSpan.FromMilliseconds(AbilityConstants.LavaBlastBurnLength), Damage.Damage * AbilityConstants.LavaBlastBurnDamagePercentage, AbilityTypes.LavaBlast));
            Damage.Damage = oldDamage;
        }
コード例 #7
0
        public override void OnHit(Being target)
        {
            var zerd = (Zerd)Creator;

            Damage.Damage += Origin.DistanceBetween(Position) * zerd.SkillValue(SkillType.Sniper, true) / 100f;
            Damage.DamageBeing(target);
            IsAlive = false;
            Speed  *= 0.15f;
            var burnDamage = Damage.Damage * AbilityConstants.FireballBurnDamagePercentage;

            target.AddBuff(new BurnBuff(Creator, target, AbilityConstants.FireballBurnLength, burnDamage, AbilityTypes.Fireball));
            if (zerd.SkillPoints(SkillType.FireballExplosion) > 0)
            {
                var explosionBurnLevel = zerd.SkillValue(SkillType.FireballExplosion, false) * burnDamage / 100f;
                Damage.Damage *= zerd.SkillValue(SkillType.FireballExplosion, false) / 100f;
                foreach (var e in
                         Creator.Enemies().Where(e => target.Position.DistanceBetween(e.Position) < AbilityConstants.FireballExplosionDistance && e != target))
                {
                    e.AddBuff(new BurnBuff(zerd, target, AbilityConstants.FireballBurnLength, explosionBurnLevel, AbilityTypes.Fireball));
                    Damage.DamageBeing(e);
                }
            }
        }
コード例 #8
0
ファイル: SkeletonKingMissile.cs プロジェクト: zwand19/zerds
 public override Animation GetCurrentAnimation()
 {
     return(!_spawned
         ? Animations.Get(AnimationTypes.Spawn)
         : Animations.Get(Origin.DistanceBetween(Position) > Distance || !IsAlive ? AnimationTypes.Death : AnimationTypes.Move));
 }