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(); }
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 }
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); }
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); } }
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); } }
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); } ); }
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); } } }
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); } } } }
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); }
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)); } }
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); } }