public void NotifyGameEnd(Nexus nexus)
        {
            var losingTeam = nexus.Team;

            foreach (var p in _playerManager.GetPlayers())
            {
                var coords = _game.Map.GetEndGameCameraPosition(losingTeam);
                var cam    = new MoveCamera(p.Item2.Champion, coords[0], coords[1], coords[2], 2);
                _game.PacketHandlerManager.sendPacket(p.Item2.Peer, cam, Channel.CHL_S2C);
                _game.PacketHandlerManager.sendPacket(p.Item2.Peer, new HideUi(), Channel.CHL_S2C);
            }
            _game.PacketHandlerManager.broadcastPacket(new ExplodeNexus(nexus), Channel.CHL_S2C);

            var timer = new System.Timers.Timer(5000);

            timer.AutoReset = false;
            timer.Elapsed  += (a, b) =>
            {
                var win = new GameEnd(true);
                _game.PacketHandlerManager.broadcastPacketTeam(CustomConvert.GetEnemyTeam(losingTeam), win, Channel.CHL_S2C);
                var lose = new GameEnd(false);
                _game.PacketHandlerManager.broadcastPacketTeam(losingTeam, lose, Channel.CHL_S2C);
            };
            timer.Start();
        }
Example #2
0
        public void OnStartCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            _owningSpell = spell;

            spell.AddProjectileTarget("KatarinaQ", target);

            if (!_listenerAdded)
            {
                ApiEventManager.OnHitUnit.AddListener(this, _owningChampion, OnProc);
                _listenerAdded = true;
            }

            foreach (var enemyTarget in GetUnitsInRange(target, 625, true))
            {
                if (enemyTarget != null && enemyTarget.Team == CustomConvert.GetEnemyTeam(owner.Team) && enemyTarget != target && enemyTarget != owner && target.GetDistanceTo(enemyTarget) < 100 && !UnitIsTurret((AttackableUnit)enemyTarget))
                {
                    CreateTimer(3.0f, () => {
                        if (!(enemyTarget.IsDead))
                        {
                            AddParticle(owner, "katarina_bouncingBlades_mis.troy", enemyTarget.X, enemyTarget.Y);
                        }
                        spell.AddProjectileTarget("KatarinaQMark", enemyTarget);
                    });
                }
            }

            //WE NEED A TIMER ON THE Q TO BE FIXED
        }
Example #3
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var armor  = owner.Stats.Armor.Total;
            var damage = spell.Level * 40 + armor * 0.2f;
            var reduce = spell.Level * 5 + armor * 0.05f;

            AddParticleTarget(owner, "Shatter_nova.troy", owner, 1);

            foreach (var enemy in GetUnitsInRange(owner, 375, true)
                     .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
            {
                var hasbuff = HasBuff((IObjAiBase)enemy, "TaricWDis");
                if (enemy is IObjAiBase)
                {
                    enemy.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL, false);
                    var p2 = AddParticleTarget(owner, "Shatter_tar.troy", enemy, 1);
                    AddBuff("TaricWDis", 4.0f, 1, spell, (IObjAiBase)enemy, owner);

                    if (hasbuff == true)
                    {
                        return;
                    }
                    if (hasbuff == false)
                    {
                        enemy.Stats.Armor.FlatBonus -= reduce;
                    }

                    CreateTimer(4f, () =>
                    {
                        enemy.Stats.Armor.FlatBonus += reduce;
                        RemoveParticle(p2);
                    });
                }
            }
        }
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            IGameObject m             = AddParticle(owner, "Karthus_Base_Q_Explosion.troy", spell.X, spell.Y);
            var         affectedUnits = GetUnitsInRange(m, 150, true);
            var         ap            = owner.Stats.AbilityPower.Total;
            var         damage        = 20f + spell.Level * 20f + ap * 0.3f;

            if (affectedUnits.Count == 0)
            {
                AddParticle(owner, "Karthus_Base_Q_Hit_Miss.troy", spell.X, spell.Y);
            }
            foreach (var unit in affectedUnits
                     .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
            {
                if (unit is IChampion || unit is IMinion)
                {
                    if (affectedUnits.Count == 1)
                    {
                        damage *= 2;
                        AddParticle(owner, "Karthus_Base_Q_Hit_Single.troy", spell.X, spell.Y);
                        unit.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL, true);
                    }
                    if (affectedUnits.Count > 1)
                    {
                        AddParticle(owner, "Karthus_Base_Q_Hit_Many.troy", spell.X, spell.Y);
                        unit.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL, false);
                    }
                }
            }
            m.SetToRemove();
            AddParticle(owner, "Karthus_Base_Q_Explosion_Sound.troy", spell.X, spell.Y);
        }
Example #5
0
 public void OnStartCasting(IChampion owner, ISpell spell, IAttackableUnit target)
 {
     foreach (var enemyTarget in GetChampionsInRange(owner, 20000, true)
              .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
     {
         AddParticleTarget(owner, "KarthusFallenOne", enemyTarget);
     }
 }
Example #6
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var ap     = owner.Stats.AbilityPower.Total;
            var damage = 100 + spell.Level * 150 + ap * 0.6f;

            foreach (var enemyTarget in GetChampionsInRange(owner, 20000, true)
                     .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
            {
                enemyTarget.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL,
                                       false);
            }
        }
Example #7
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var p1      = AddParticleTarget(owner, "TaricHammerSmash_nova.troy", owner);
            var p2      = AddParticleTarget(owner, "TaricHammerSmash_shatter.troy", owner);
            var hasbuff = owner.HasBuff("Radiance");
            var ap      = owner.Stats.AbilityPower.Total * 0.5f;
            var damage  = 50 + spell.Level * 100 + ap;

            foreach (var enemyTarget in GetUnitsInRange(owner, 375, true)
                     .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
            {
                if (enemyTarget is IAttackableUnit)
                {
                    enemyTarget.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL, false);
                    var ep1 = AddParticleTarget(owner, "Taric_GemStorm_Tar.troy", enemyTarget, 1.25f);
                    var ep2 = AddParticleTarget(owner, "Taric_GemStorm_Aura.troy", enemyTarget, 1.25f);
                    var ep3 = AddParticleTarget(owner, "Taric_ShoulderFlare.troy", enemyTarget, 1.25f);
                    CreateTimer(1f, () =>
                    {
                        RemoveParticle(ep1);
                        RemoveParticle(ep2);
                        RemoveParticle(ep3);
                    });
                }
            }

            foreach (var allyTarget in GetUnitsInRange(owner, 1100, true)
                     .Where(x => x.Team != CustomConvert.GetEnemyTeam(owner.Team)))
            {
                if (allyTarget is IObjAiBase && owner != allyTarget && hasbuff == false)
                {
                    AddBuff("Radiance_ally", 10.0f, 1, spell, (IObjAiBase)allyTarget, owner);
                }
            }
            if (owner == target && hasbuff == false)
            {
                var p3 = AddParticleTarget(owner, "taricgemstorm.troy", owner);
                AddBuff("Radiance", 10.0f, 1, spell, owner, owner);
                CreateTimer(10.0f, () =>
                {
                    RemoveParticle(p3);
                });
            }

            CreateTimer(10.0f, () =>
            {
                RemoveParticle(p1);
                RemoveParticle(p2);
            }
                        );
        }
Example #8
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var ap     = owner.Stats.AbilityPower.Total * 0.3f;
            var ad     = owner.Stats.AttackDamage.Total * 0.6f;
            var damage = 40 + spell.Level * 30 + ap + ad;

            foreach (var enemyTarget in GetUnitsInRange(owner, 300, true)
                     .Where(x => x.Team == CustomConvert.GetEnemyTeam(owner.Team)))
            {
                enemyTarget.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL,
                                       false);
                if (target.IsDead)
                {
                    spell.LowerCooldown(spell.CurrentCooldown * 0.6f);
                }
            }
        }
Example #9
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var damage = new[] { 60, 85, 110, 135, 160 }[spell.Level - 1] +owner.Stats.AbilityPower.Total * 0.45f;

            foreach (var enemyTarget in GetUnitsInRange(target, 625, true))
            {
                if (enemyTarget != null && enemyTarget.Team == CustomConvert.GetEnemyTeam(owner.Team) && enemyTarget != owner && !UnitIsTurret((AttackableUnit)enemyTarget))
                {
                    enemyTarget.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_SPELL, false);

                    if (!enemyTarget.IsDead || !UnitIsChampion((AttackableUnit)enemyTarget))
                    {
                        _markTarget.Add(enemyTarget);
                        _mark = AddParticleTarget(owner, "katarina_daggered.troy", enemyTarget);
                    }
                }
            }
        }
Example #10
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var hasbuff = owner.HasBuff("GangplankE");

            if (hasbuff == false)
            {
                AddBuff("GangplankE", 7.0f, 1, spell, owner, owner);
            }

            foreach (var allyTarget in GetUnitsInRange(owner, 1000, true)
                     .Where(x => x.Team != CustomConvert.GetEnemyTeam(owner.Team)))
            {
                if (allyTarget is IAttackableUnit && owner != allyTarget && hasbuff == false)
                {
                    AddBuff("GangplankE", 7.0f, 1, spell, (IObjAiBase)allyTarget, owner);
                }
            }
        }
        public void notifySpawn(Unit u)
        {
            var m = u as Minion;

            if (m != null)
            {
                notifyMinionSpawned(m, CustomConvert.GetEnemyTeam(m.Team));
            }

            var c = u as Champion;

            if (c != null)
            {
                notifyChampionSpawned(c, CustomConvert.GetEnemyTeam(c.Team));
            }

            var monster = u as Monster;

            if (monster != null)
            {
                notifyMonsterSpawned(monster);
            }

            var placeable = u as Placeable;

            if (placeable != null)
            {
                NotifyPlaceableSpawned(placeable);
            }

            var azirTurret = u as AzirTurret;

            if (azirTurret != null)
            {
                NotifyAzirTurretSpawned(azirTurret);
            }

            notifySetHealth(u);
        }
Example #12
0
        public bool HandlePacket(Peer peer, byte[] data)
        {
            var message = new ChatMessage(data);

            Console.WriteLine("PlayerID: " + message.playerId);
            var split = message.msg.Split(' ');

            if (split.Length > 1)
            {
                int x, y = 0;
                if (int.TryParse(split[0], out x))
                {
                    if (int.TryParse(split[1], out y))
                    {
                        var response = new AttentionPingAns(
                            _playerManager.GetPeerInfo(peer),
                            new AttentionPing {
                            x = x, y = y, targetNetId = 0, type = 0
                        }
                            );
                        _game.PacketHandlerManager.broadcastPacketTeam(
                            _playerManager.GetPeerInfo(peer).Team, response, Channel.CHL_S2C
                            );
                    }
                }
            }

            #region Commands
            // Execute commands
            var CommandStarterCharacter = _chatCommandManager.CommandStarterCharacter;
            if (message.msg.StartsWith(CommandStarterCharacter))
            {
                message.msg = message.msg.Remove(0, 1);
                split       = message.msg.ToLower().Split(' ');

                ChatCommand command = _chatCommandManager.GetCommand(split[0]);
                if (command != null)
                {
                    try
                    {
                        command.Execute(peer, true, message.msg);
                    }
                    catch
                    {
                        _logger.LogCoreWarning(command + " sent an exception.");
                        var dm = new DebugMessage("Something went wrong...Did you wrote the command well ? ");
                        _game.PacketHandlerManager.sendPacket(peer, dm, Channel.CHL_S2C);
                    }
                    return(true);
                }
                else
                {
                    _chatCommandManager.SendDebugMsgFormatted(DebugMsgType.ERROR, "<font color =\"#E175FF\"><b>" + _chatCommandManager.CommandStarterCharacter + split[0] + "</b><font color =\"#AFBF00\"> is not a valid command.");
                    _chatCommandManager.SendDebugMsgFormatted(DebugMsgType.INFO, "Type <font color =\"#E175FF\"><b>" + _chatCommandManager.CommandStarterCharacter + "help</b><font color =\"#AFBF00\"> for a list of available commands");
                    return(true);
                }
            }
            #endregion

            var debugMessage = string.Format("{0} ({1}): </font><font color=\"#FFFFFF\">{2}",
                                             _playerManager.GetPeerInfo(peer).Name,
                                             _playerManager.GetPeerInfo(peer).Champion.Model,
                                             message.msg);
            var teamChatColor  = "<font color=\"#00FF00\">";
            var enemyChatColor = "<font color=\"#FF0000\">";
            var dmTeam         = new DebugMessage(teamChatColor + "[All] " + debugMessage);
            var dmEnemy        = new DebugMessage(enemyChatColor + "[All] " + debugMessage);
            var ownTeam        = _playerManager.GetPeerInfo(peer).Team;
            var enemyTeam      = CustomConvert.GetEnemyTeam(ownTeam);

            if (_game.Config.ChatCheatsEnabled)
            {
                _game.PacketHandlerManager.broadcastPacketTeam(ownTeam, dmTeam, Channel.CHL_S2C);
                _game.PacketHandlerManager.broadcastPacketTeam(enemyTeam, dmEnemy, Channel.CHL_S2C);
                return(true);
            }

            switch (message.type)
            {
            case ChatType.CHAT_ALL:
                _game.PacketHandlerManager.broadcastPacketTeam(ownTeam, dmTeam, Channel.CHL_S2C);
                _game.PacketHandlerManager.broadcastPacketTeam(enemyTeam, dmEnemy, Channel.CHL_S2C);
                return(true);

            case ChatType.CHAT_TEAM:
                dmTeam = new DebugMessage(teamChatColor + debugMessage);
                _game.PacketHandlerManager.broadcastPacketTeam(ownTeam, dmTeam, Channel.CHL_S2C);
                return(true);

            default:
                //Logging.errorLine("Unknown ChatMessageType");
                return(_game.PacketHandlerManager.sendPacket(peer, data, Channel.CHL_COMMUNICATION));
            }
        }
Example #13
0
        public override bool HandlePacket(int userId, ChatMessageRequest req)
        {
            var split = req.Message.Split(' ');

            if (split.Length > 1)
            {
                if (int.TryParse(split[0], out var x))
                {
                    if (int.TryParse(split[1], out var y))
                    {
                        var client = _playerManager.GetPeerInfo(userId);
                        _game.PacketNotifier.NotifyPing(client, new Vector2(x, y), 0, Pings.PING_DEFAULT);
                    }
                }
            }

            // Execute commands
            var commandStarterCharacter = _chatCommandManager.CommandStarterCharacter;

            if (req.Message.StartsWith(commandStarterCharacter))
            {
                var msg = req.Message.Remove(0, 1);
                split = msg.ToLower().Split(' ');

                var command = _chatCommandManager.GetCommand(split[0]);
                if (command != null)
                {
                    try
                    {
                        command.Execute(userId, true, msg);
                    }
                    catch
                    {
                        _logger.Warn(command + " sent an exception.");
                        _game.PacketNotifier.NotifyDebugMessage(userId, "Something went wrong...Did you wrote the command well ? ");
                    }
                    return(true);
                }

                _chatCommandManager.SendDebugMsgFormatted(DebugMsgType.ERROR, "<font color =\"#E175FF\"><b>"
                                                          + _chatCommandManager.CommandStarterCharacter + split[0] + "</b><font color =\"#AFBF00\"> " +
                                                          "is not a valid command.");
                _chatCommandManager.SendDebugMsgFormatted(DebugMsgType.INFO, "Type <font color =\"#E175FF\"><b>"
                                                          + _chatCommandManager.CommandStarterCharacter + "help</b><font color =\"#AFBF00\"> " +
                                                          "for a list of available commands");
                return(true);
            }

            var debugMessage =
                $"{_playerManager.GetPeerInfo(userId).Name} ({_playerManager.GetPeerInfo(userId).Champion.Model}): </font><font color=\"#FFFFFF\">{req.Message}";
            var teamChatColor  = "<font color=\"#00FF00\">";
            var enemyChatColor = "<font color=\"#FF0000\">";
            var dmTeam         = teamChatColor + "[All] " + debugMessage;
            var dmEnemy        = enemyChatColor + "[All] " + debugMessage;
            var ownTeam        = _playerManager.GetPeerInfo(userId).Team;
            var enemyTeam      = CustomConvert.GetEnemyTeam(ownTeam);

            if (_game.Config.ChatCheatsEnabled)
            {
                _game.PacketNotifier.NotifyDebugMessage(ownTeam, dmTeam);
                _game.PacketNotifier.NotifyDebugMessage(enemyTeam, dmEnemy);
                return(true);
            }

            switch (req.Type)
            {
            case ChatType.CHAT_ALL:
                _game.PacketNotifier.NotifyDebugMessage(ownTeam, dmTeam);
                _game.PacketNotifier.NotifyDebugMessage(enemyTeam, dmEnemy);
                return(true);

            case ChatType.CHAT_TEAM:
                _game.PacketNotifier.NotifyDebugMessage(ownTeam, dmTeam);
                return(true);

            default:
                _logger.Error("Unknown ChatMessageType:" + req.Type.ToString());
                return(false);
            }
        }