Exemplo n.º 1
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            var center = Position + Vector2.UnitY * 5;
            var hitbox = Player.GetAABB();

            if (Game.IsEditorTest)
            {
                ScriptHelper.RunIn(() => Game.DrawCircle(center, InfectRadius, Color.Cyan), 3000);
            }

            foreach (var bot in BotManager.GetBots())
            {
                if (ScriptHelper.IntersectCircle(bot.Player.GetAABB(), center, InfectRadius))
                {
                    bot.Infect(InfectTeam);
                    Game.ShowChatMessage(bot.Player.Name + " is infected");
                }
            }

            Game.TriggerExplosion(Position);

            for (var i = 0; i < 5; i++)
            {
                Game.CreateObject(RandomHelper.GetItem(Giblets), RandomHelper.WithinArea(hitbox),
                                  RandomHelper.Between(0, MathHelper.TwoPI));
                Game.PlayEffect(EffectName.Gib, RandomHelper.WithinArea(hitbox));
            }
        }
Exemplo n.º 2
0
        public override void OnPlayerData(TerrariaPacket e)
        {
            TDMArena       arena      = ActiveArena as TDMArena;
            PlayerTeamArgs playerTeam = e as PlayerTeamArgs;

            if (playerTeam != null)
            {
                if (RedTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(1);
                }
                else if (BlueTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(3);
                }
            }

            PlayerDeathArgs playerDeath = e as PlayerDeathArgs;

            if (playerDeath != null)
            {
                if (RedTeam.Contains(e.Player))
                {
                    _blueScore++;
                    SendMessageToAllPlayers($"A member of Blue Team got a kill! {_scoreText}", Color.Turquoise);
                }
                else if (BlueTeam.Contains(e.Player))
                {
                    _redScore++;
                    SendMessageToAllPlayers($"A member of Red Team got a kill! {_scoreText}", Color.OrangeRed);
                }
            }
        }
Exemplo n.º 3
0
 public virtual void OnDeath(PlayerDeathArgs args)
 {
     if (args.Killed)
     {
         SayDeathLine();
     }
 }
Exemplo n.º 4
0
        private static void OnPlayerDeath(IPlayer player, PlayerDeathArgs args)
        {
            if (player == null)
            {
                return;
            }

            var bot = GetBot(player);

            if (bot == Bot.None)
            {
                return;
            }

            bot.OnDeath(args);

            if (args.Removed)
            {
                m_bots.Remove(bot.Player.UniqueID);
            }
            if (args.Killed)
            {
                AddInfectedCorpse(bot);
            }
        }
Exemplo n.º 5
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            foreach (var bodyguard in m_bodyguards)
            {
                bodyguard.Player.SetGuardTarget(null);
            }
        }
Exemplo n.º 6
0
 public override void OnDeath(PlayerDeathArgs args)
 {
     base.OnDeath(args);
     if (m_bouncer != null)
     {
         m_bouncer.SetGuardTarget(null);
         m_occupiedBouncerIDs.Remove(m_bouncer.UniqueID);
     }
 }
Exemplo n.º 7
0
        public void OnPlayerDeath(IPlayer player, PlayerDeathArgs args)
        {
            if (player.GetHitEffect() == PlayerHitEffect.Metal && args.Removed)
            {
                var deathPosition = player.GetWorldPosition();
                var effects       = new List <Tuple <string, int> >()
                {
                    Tuple.Create(EffectName.BulletHitMetal, 1),
                    Tuple.Create(EffectName.Steam, 2),
                    Tuple.Create(EffectName.Electric, 4),
                };

                foreach (var effect in effects)
                {
                    var effectName = effect.Item1;
                    var count      = effect.Item2;

                    for (var i = 0; i < count; i++)
                    {
                        var position = player.GetWorldPosition();
                        position.X += RandomHelper.Between(-10, 10);
                        position.Y += RandomHelper.Between(-10, 10);
                        Game.PlayEffect(effectName, position);
                    }
                }

                Game.TriggerExplosion(deathPosition);

                for (var i = 0; i < 4; i++)
                {
                    var debrisLinearVelocity = RandomHelper.Direction(15, 165) * 10;
                    var debris = Game.CreateObject(RandomHelper.GetItem(DebrisList),
                                                   deathPosition,
                                                   0f,
                                                   debrisLinearVelocity,
                                                   0f);
                    debris.SetMaxFire();

                    Game.CreateObject(RandomHelper.GetItem(DebrisList),
                                      deathPosition,
                                      0f,
                                      debrisLinearVelocity * -Vector2.UnitX,
                                      0f);

                    if (RandomHelper.Between(0, 100) < 50)
                    {
                        Game.CreateObject(RandomHelper.GetItem(WiringTubeList),
                                          deathPosition,
                                          0f,
                                          RandomHelper.Direction(0, 180) * 6,
                                          0f);
                    }
                }
            }
        }
Exemplo n.º 8
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            if (Player.CurrentPrimaryWeapon.WeaponItem == WeaponItem.FLAMETHROWER)
            {
                Game.SpawnFireNodes(Position, 20, 5f, FireNodeType.Flamethrower);
                Game.TriggerFireplosion(Position, 60f);
                Game.TriggerExplosion(Position);
            }
        }
Exemplo n.º 9
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            if (args.Removed)
            {
                foreach (var m in m_markers)
                {
                    m.Remove();
                }
            }
        }
Exemplo n.º 10
0
        private static void OnPlayerDeath(IPlayer player, PlayerDeathArgs args)
        {
            if (player == null)
            {
                return;
            }

            if (m_infectedPlayers.ContainsKey(player.UniqueID))
            {
                m_infectedCorpses.Add(new InfectedCorpse(player));
            }
        }
Exemplo n.º 11
0
 public void OnPlayerDeath(IPlayer player, PlayerDeathArgs args)
 {
     // player just died or was removed (or both if falling outside the map while alive or gibbed while alive).
     if (args.Killed)
     {
         Game.WriteToConsole(string.Format("Player {0} died", player.UniqueID));
     }
     if (args.Removed)
     {
         Game.WriteToConsole(string.Format("Player {0} removed", player.UniqueID));
     }
 }
Exemplo n.º 12
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            if (Player == null || m_useDoubleBody)
            {
                return;
            }

            if (args.Removed)
            {
                SelfDestruct();
            }
            else
            {
                if (RandomHelper.Boolean())
                {
                    SelfDestruct();
                }
            }

            if (!m_useDoubleBody && !m_destroyed)
            {
                m_useDoubleBody = true;
                var doubleBody = Game.CreatePlayer(Position);

                Decorate(doubleBody);
                var newMod = doubleBody.GetModifiers();
                newMod.CurrentHealth = newMod.MaxHealth;

                doubleBody.SetModifiers(newMod);
                doubleBody.SetValidBotEliminateTarget(false);
                doubleBody.SetStatusBarsVisible(false);
                doubleBody.SetNametagVisible(false);
                doubleBody.SetFaceDirection(Player.GetFaceDirection());

                BotManager.SetPlayer(this, doubleBody);
                Player.Remove();
                Player = doubleBody;

                StartDeathKneeling();
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Tick called when a player dies
        /// </summary>
        /// <param name="args"></param>
        public void Death(IPlayer deadPlayer, PlayerDeathArgs args)
        {
            Game.WriteToConsole("Death() deadPlayer: ", deadPlayer.Name);
            Game.WriteToConsole("Death() deadPlayer.IsRemoved: ", deadPlayer.IsRemoved);
            Game.WriteToConsole("Death() args.IsRemoved: ", args.Removed);

            if (deadPlayer == null || deadPlayer.IsRemoved || args.Removed)
            {
                return;
            }

            if (deadPlayer.GetTeam() == PlayerTeam.Team1)
            {
                Game.WriteToConsole("Blue player dead");
                _RedKillsCount++;
                RefreshKillCounter(_RedKillsCount, Teams.Red);
            }
            if (deadPlayer.GetTeam() == PlayerTeam.Team2)
            {
                Game.WriteToConsole("Red player dead");
                _BlueKillsCount++;
                RefreshKillCounter(_BlueKillsCount, Teams.Blue);
            }
            var user = deadPlayer.GetUser();

            if (user != null)
            {
                _DeadPlayers.Add(
                    new DeadPlayer()
                {
                    DeathTimeStamp = Game.TotalElapsedGameTime,
                    User           = user,
                    DeadBody       = deadPlayer,
                    Team           = deadPlayer.GetTeam(),
                    IsBot          = deadPlayer.IsBot
                });
                Game.WriteToConsole("Death() added senderPlayer to _DeadPlayers: ", deadPlayer.Name);
            }
        }
Exemplo n.º 14
0
        private static void OnPlayerDeath(IPlayer player, PlayerDeathArgs args)
        {
            if (args.Removed)
            {
                PlayerWeapon playerWpn;

                if (m_owners.TryGetValue(player.UniqueID, out playerWpn))
                {
                    playerWpn.Melee.Remove();
                    playerWpn.Primary.Remove();
                    playerWpn.Secondary.Remove();
                    playerWpn.Throwable.Remove();
                    playerWpn.Powerup.Remove();
                    m_owners.Remove(player.UniqueID);
                }

                if (m_queuedPowerups.ContainsKey(player.UniqueID))
                {
                    m_queuedPowerups.Remove(player.UniqueID);
                }
            }
        }
Exemplo n.º 15
0
        // called on player's death
        public void Death(IPlayer killedPlayer, PlayerDeathArgs args)
        {
            BlueRnd();
            RedRnd();

            // refresh death counter on the map
            if (killedPlayer != null && args.Removed == false)
            {
                if (killedPlayer.GetTeam() == PlayerTeam.Team1)
                {
                    vRedKills++;
                    RefreshCounter(vRedKills, "RedT");
                }
                if (killedPlayer.GetTeam() == PlayerTeam.Team2)
                {
                    vBluKills++;
                    RefreshCounter(vBluKills, "BlueT");
                }


                if (vRedKills < DEATH_LIMIT || vBluKills < DEATH_LIMIT)
                {
                    IUser user = killedPlayer.GetUser();
                    if (user == null)
                    {
                        Game.CreateDialogue(killedPlayer.Name + " not added to dead list because user is null.", killedPlayer);
                        return;
                    }

                    //store user to respawn and body to remove
                    m_deadPlayers.Add(new DeadPlayer(Game.TotalElapsedGameTime, user, killedPlayer, killedPlayer.GetTeam()));
                    Game.CreateDialogue(killedPlayer.Name + " added to dead list", killedPlayer);
                }
                else
                {
                    WhoWins();
                }
            }
        }
Exemplo n.º 16
0
        public override void OnDeath(PlayerDeathArgs args)
        {
            base.OnDeath(args);

            if (!args.Removed)
            {
                if (RandomHelper.Percentage(.75f))
                {
                    Game.PlaySound("CartoonScream", Position);
                }
            }

            if (m_offender == null || m_offender.IsDead)
            {
                m_offender = FindClosestTarget();
            }

            if (m_offender != null)
            {
                m_mommy.Enrage(m_offender);
            }
        }
Exemplo n.º 17
0
        public override void OnPlayerData(TerrariaPacket e)
        {
            if (GetGameState() != GameState.GameRunning)
            {
                return;
            }

            PlayerDeathArgs deathPacket = e as PlayerDeathArgs;

            if (deathPacket != null)
            {
                if (RedTeam.Contains(e.Player))
                {
                    PaintCircle((int)e.Player.TPlayer.Center.X, (int)e.Player.TPlayer.Center.Y, (int)(3 + deathPacket.Damage / 20f), _deepBluePaintID);
                }
                else if (BlueTeam.Contains(e.Player))
                {
                    PaintCircle((int)e.Player.TPlayer.Center.X, (int)e.Player.TPlayer.Center.Y, (int)(3 + deathPacket.Damage / 20f), _deepRedPaintID);
                }
            }

            ProjectileDestroyArgs projectileDied = e as ProjectileDestroyArgs;

            if (projectileDied != null)
            {
                if (projectileDied.ProjectileDestroyed.owner == projectileDied.Owner)
                {
                    if (RedTeam.Contains(e.Player))
                    {
                        PaintCircle((int)projectileDied.ProjectileX, (int)projectileDied.ProjectileY, 3 + projectileDied.ProjectileDestroyed.damage / 150, _deepRedPaintID);
                    }
                    else if (BlueTeam.Contains(e.Player))
                    {
                        PaintCircle((int)projectileDied.ProjectileX, (int)projectileDied.ProjectileY, 3 + projectileDied.ProjectileDestroyed.damage / 150, _deepBluePaintID);
                    }
                }
            }
        }
Exemplo n.º 18
0
 /// <summary>
 /// Method called when a player dies
 /// </summary>
 /// <param name="args"></param>
 public void Death(IPlayer deadPlayer, PlayerDeathArgs args)
 {
     Game.WriteToConsole("Death() deadPlayer: ", deadPlayer.Name);
     Game.WriteToConsole("Death() args.IsRemoved: ", args.Removed);
 }
Exemplo n.º 19
0
 public override void OnDeath(PlayerDeathArgs args)
 {
     base.OnDeath(args);
     StopOccupying();
 }
Exemplo n.º 20
0
        public override void OnPlayerData(TerrariaPacket e)
        {
            CTFArena       arena      = ActiveArena as CTFArena;
            PlayerTeamArgs playerTeam = e as PlayerTeamArgs;

            if (playerTeam != null)
            {
                if (RedTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(1);
                }
                else if (BlueTeam.Contains(e.Player))
                {
                    e.Player.SetTeam(3);
                }
            }

            PlayerUpdateArgs playerUpdate = e as PlayerUpdateArgs;

            if (playerUpdate != null)
            {
                // Picking up flags
                if (_redFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && BlueTeam.Contains(e.Player))
                {
                    _redFlagHolder = e.Player;
                    SendMessageToAllPlayers($"{_redFlagHolder.Name} has picked up the red flag!", Color.OrangeRed);
                }
                else if (_blueFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && RedTeam.Contains(e.Player))
                {
                    _blueFlagHolder = e.Player;
                    SendMessageToAllPlayers($"{_blueFlagHolder.Name} has picked up the blue flag!", Color.Turquoise);
                }

                // Placing flags at base flag
                if (_redFlagHolder != null && _redFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && BlueTeam.Contains(e.Player) && !e.Player.TPlayer.dead)
                {
                    SendMessageToAllPlayers($"{_redFlagHolder.Name} has scored for the blue team!", Color.Turquoise);
                    _redFlagHolder = null;
                    _blueScore    += 1;
                    SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan);
                }
                else if (_blueFlagHolder != null && _blueFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && RedTeam.Contains(e.Player) && !e.Player.TPlayer.dead)
                {
                    SendMessageToAllPlayers($"{_blueFlagHolder.Name} has scored for the red team!", Color.OrangeRed);
                    _blueFlagHolder = null;
                    _redScore      += 1;
                    SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan);
                }
            }

            PlayerDeathArgs playerDeath = e as PlayerDeathArgs;

            if (playerDeath != null)
            {
                if (e.Player == _redFlagHolder)
                {
                    _redFlagHolder = null;
                    SendMessageToAllPlayers($"{e.Player.Name} has dropped the red flag!", Color.OrangeRed);
                }

                if (e.Player == _blueFlagHolder)
                {
                    _blueFlagHolder = null;
                    SendMessageToAllPlayers($"{e.Player.Name} has dropped the blue flag!", Color.Turquoise);
                }
            }
        }