Exemplo n.º 1
0
        private static float HandleDamageIndicator(Obj_AI_Base unit)
        {
            if (!Settings.Drawings.DrawInfo)
            {
                return(0);
            }

            var enemy = (AIHeroClient)unit;

            if (enemy == null)
            {
                return(0);
            }

            if (MenuManager.IsCacheEnabled && Damages.Exist(unit.NetworkId))
            {
                return(Damages.Get(unit.NetworkId));
            }

            var damage = 0f;

            if (!IsCastingR)
            {
                if (R.IsReady() && unit.IsValidTargetCached(R.Range))
                {
                    damage += GetCurrentShootsRCount == 1
                        ? Damage.GetRDamage(unit, true)
                        : Damage.GetRDamage(unit) * (GetCurrentShootsRCount - 1) + Damage.GetRDamage(unit, true);
                }
                if (Q.IsReady() && unit.IsValidTarget(Q.Range))
                {
                    damage += Damage.GetQDamage(unit);
                }
                if (W.IsReady() && unit.IsValidTarget(W.Range))
                {
                    damage += Damage.GetWDamage(unit);
                }
            }
            else
            {
                if (IsInsideRRange(unit))
                {
                    damage += GetCurrentShootsRCount == 1 ? Damage.GetRDamage(unit, true) : Damage.GetRDamage(unit);
                }
            }

            if (unit.IsValidTargetCached(Player.Instance.GetAutoAttackRange()))
            {
                damage += HasAttackBuff ? Damage.Get4ThShootDamage(unit) : Player.Instance.GetAutoAttackDamage(unit);
            }

            if (MenuManager.IsCacheEnabled)
            {
                Damages.Add(unit.NetworkId, damage);
            }

            return(damage);
        }
Exemplo n.º 2
0
 public void AddMove(Command move, HitPos hitPosition, int damage,
                     CrushProp crushProperty            = CrushProp.None,
                     PositionProp positionProperty      = PositionProp.Stand,
                     PositionProp enemyPositionProperty = PositionProp.Stand)
 {
     Commands.Add(move);
     HitPositions.Add(hitPosition);
     Damages.Add(damage);
     CrushProperties.Add(crushProperty);
     PositionProperties.Add(positionProperty);
 }
Exemplo n.º 3
0
        private void ExecuteAddDamage()
        {
            AddDamageWindowViewModel addDamageWindowViewModel = new AddDamageWindowViewModel();

            Model.Damage damage = addDamageWindowViewModel.GetDamage();
            if (damage != null)
            {
                DamageViewModel damageViewModel = new DamageViewModel {
                    Damage = damage
                };
                Damages.Add(damageViewModel);
            }
        }
Exemplo n.º 4
0
 public void ReadXML(XmlNode xmlNode)
 {
     try
     {
         foreach (XmlNode childNode in xmlNode.ChildNodes)
         {
             if (childNode.Name == "Name")
             {
                 Name = childNode.InnerText;
             }
             else if (childNode.Name == "Modifier")
             {
                 Modifier = Convert.ToInt32(childNode.InnerText);
             }
             else if (childNode.Name == "Type")
             {
                 Type = Methods.GetAttackTypeFromString(childNode.InnerText);
             }
             else if (childNode.Name == "Ability")
             {
                 Ability = Methods.GetAbilityFromString(childNode.InnerText);
             }
             else if (childNode.Name == "Damages")
             {
                 foreach (XmlNode damageNode in childNode.ChildNodes)
                 {
                     if (damageNode.Name == "Damage")
                     {
                         Damages.Add(new Damage(damageNode));
                     }
                 }
             }
             else if (childNode.Name == "ThreatRangeMin")
             {
                 ThreatRangeMin = Convert.ToInt32(childNode.InnerText);
             }
             else if (childNode.Name == "CritMultiplier")
             {
                 CritMultiplier = Convert.ToInt32(childNode.InnerText);
             }
             else if (childNode.Name == "TwoHanded")
             {
                 TwoHanded = Convert.ToBoolean(childNode.InnerText);
             }
         }
     }
     catch (XmlException e)
     {
         MessageBox.Show(e.ToString());
     }
 }
Exemplo n.º 5
0
        public void AddDamage(DamageTypeName damageType, float amount, float min = 0, float max = 0)
        {
            var existing = Damages.Find(x => x.DamageType == damageType);

            if (existing != null)
            {
                existing.Min    += min;
                existing.Max    += max;
                existing.Amount += amount;
            }
            else
            {
                Damages.Add(new Damage()
                {
                    DamageType = damageType,
                    Amount     = amount,
                    Min        = min,
                    Max        = max
                });
            }
        }
Exemplo n.º 6
0
        public bool giveDamage(Character f****r, int amount)
        {
            if (HP == 0)
            {
                return(false);
            }
            if (!Damages.ContainsKey(f****r.ID))
            {
                Damages.Add(f****r.ID, 0);
            }
            Damages[f****r.ID] += (ulong)amount;

            if (HP < amount)
            {
                HP = 0;
            }
            else
            {
                HP -= amount;
            }

            return(true);
        }
Exemplo n.º 7
0
 private static void OnObjAiBaseProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (!Enabled)
     {
         return;
     }
     try
     {
         if (args.Target != null && args.Target.IsEnemy)
         {
             var target = args.Target as Obj_AI_Hero;
             if (target != null)
             {
                 if (!(sender is Obj_AI_Hero) || args.SData.IsAutoAttack())
                 {
                     Damages.Add(
                         target.NetworkId,
                         target.ServerPosition.Distance(sender.ServerPosition) / args.SData.MissileSpeed +
                         Game.Time, (float)sender.GetAutoAttackDamage(target));
                 }
                 else
                 {
                     var slot = target.GetSpellSlot(args.SData.Name);
                     if (slot != SpellSlot.Unknown && slot == target.GetSpellSlot("SummonerDot"))
                     {
                         Damages.Add(
                             target.NetworkId, Game.Time + 2,
                             (float)target.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite));
                     }
                 }
             }
         }
         var hero = sender as Obj_AI_Hero;
         if (hero != null && hero.IsAlly)
         {
             var slot = hero.GetSpellSlot(args.SData.Name);
             if (slot != SpellSlot.Unknown)
             {
                 if (slot == SpellSlot.Q || slot == SpellSlot.W || slot == SpellSlot.E || slot == SpellSlot.R)
                 {
                     if (args.Target != null && args.Target.IsEnemy)
                     {
                         Damages.Add(
                             args.Target.NetworkId, Game.Time + 1,
                             (float)hero.GetSpellDamage(args.Target as Obj_AI_Hero, slot));
                     }
                     else if (args.Target == null)
                     {
                         foreach (var enemy in
                                  GameObjects.EnemyHeroes.Where(
                                      e => e.IsValidTarget() && e.Distance(args.Start) < 300))
                         {
                             var length = (int)args.Start.Distance(args.End);
                             for (int i = 0, l = length > 300 ? 300 : length; i < l; i = i + 50)
                             {
                                 var pos = args.Start.Extend(args.End, i);
                                 if (enemy.Distance(pos) <= 50)
                                 {
                                     Damages.Add(
                                         enemy.NetworkId, Game.Time + 1, (float)hero.GetSpellDamage(enemy, slot));
                                     break;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
Exemplo n.º 8
0
 public void AddDamage(Guid name, int t)
 {
     Damages.Add(name, t);
     IsUpdate = true;
 }
Exemplo n.º 9
0
        void UpdateDamage()
        {
            foreach (var item in Objects.Where(obj => obj is IDamageControler))
            {
                switch (item)
                {
                case Player player:
                    player.Damage = null;
                    break;

                case MapObject mapObject:
                    mapObject.Damage = null;
                    break;

                default:
                    Logger.Error("Invalid Type");
                    break;
                }
            }

            foreach (IDamageControler item in Objects.Where(obj => obj is IDamageControler))
            {
                while (item.DamageRequests.Count > 0)
                {
                    Damages.Add(item.DamageRequests.Dequeue());
                }

                while (item.DirectDamageRequests.Count > 0)
                {
                    var damage = item.DirectDamageRequests.Dequeue();
                    if (item.Damage == null)
                    {
                        if (item is Player player)
                        {
                            player.Damage = new DamageInfo(damage.Damage, damage.KnockBack, damage.TakeDown, damage.Priority);
                        }
                        else if (item is MapObject mapObject)
                        {
                            mapObject.Damage = new DamageInfo(damage.Damage, damage.KnockBack, damage.TakeDown, damage.Priority);
                        }
                    }
                    else if (Player.Damage is DamageInfo info)
                    {
                        info.RecieveDamage += damage.Damage;
                        info.KnockBack      = info.KnockBack < damage.KnockBack ? damage.KnockBack : info.KnockBack;
                        info.TakeDown       = info.TakeDown < damage.TakeDown ? damage.TakeDown : info.TakeDown;
                        info.Priority       = info.Priority < damage.Priority ? damage.Priority : info.Priority;
                    }
                }
            }

            List <DamageRect> removeRect = new List <DamageRect>();

            if (Player != null)
            {
                foreach (var item in Damages.Where(obj => obj.Group != Player.DamageGroup))
                {
                    if (Player.CollisionShape.GetIsCollidedWith(item))
                    {
                        if (Player.Damage == null)
                        {
                            Player.Damage = new DamageInfo(item.Damage, item.KnockBack, item.TakeDown, item.Priority);
                        }
                        else if (Player.Damage is DamageInfo info)
                        {
                            info.RecieveDamage += item.Damage;
                            info.KnockBack      = info.KnockBack < item.KnockBack ? item.KnockBack : info.KnockBack;
                            info.TakeDown       = info.TakeDown < item.TakeDown ? item.TakeDown : info.TakeDown;
                            info.Priority       = info.Priority < item.Priority ? item.Priority : info.Priority;
                        }

                        if (!item.Sastainable)
                        {
                            removeRect.Add(item);
                        }
                    }
                }

                foreach (var item in Damages.Where(obj => obj.Group == Player.DamageGroup))
                {
                    foreach (IDamageControler item2 in Objects.Where(obj =>
                                                                     obj is IDamageControler damageControler &&
                                                                     damageControler.IsReceiveDamage &&
                                                                     damageControler.DamageGroup != Player.DamageGroup &&
                                                                     damageControler.CollisionShape.GetIsCollidedWith(item)))
                    {
                        if (item2 is MapObject mapObject && mapObject.Damage == null)
                        {
                            mapObject.Damage = new DamageInfo(item.Damage, item.KnockBack, item.TakeDown, item.Priority);
                        }
                        else if (item2 is MapObject mapObject2 && mapObject2.Damage is DamageInfo info)
                        {
                            info.RecieveDamage += item.Damage;
                            info.KnockBack      = info.KnockBack < item.KnockBack ? item.KnockBack : info.KnockBack;
                            info.TakeDown       = info.TakeDown < item.TakeDown ? item.TakeDown : info.TakeDown;
                            info.Priority       = info.Priority < item.Priority ? item.Priority : info.Priority;
                        }

                        if (!item.Sastainable)
                        {
                            removeRect.Add(item);
                        }
                    }