Example #1
0
        public override void OnPlayerKilled(ServerMPPlayer killer, NetworkPlayer killerNetPlayer,
                                            ServerMPPlayer assistant, NetworkPlayer assistantNetPlayer,
                                            ServerMPPlayer killed, NetworkPlayer killedNetPlayer, string item)
        {
            // Update scores
            if (killer == null)
            {
                // Update killed score
                killedNetPlayer.Score += SCORE_SUICIDE_PENALTY;
            }
            else
            {
                // Update killer score
                if (killer.Team == killed.Team)
                {
                    killerNetPlayer.Score += SCORE_TEAMKILL_PENALTY;
                }
                else
                {
                    killerNetPlayer.Score += SCORE_KILL;
                }

                // Update assistant score
                if (assistant != null)
                {
                    if (assistant.Team == killed.Team)
                    {
                        assistantNetPlayer.Score += SCORE_ASSIST_TEAMKILL_PENALTY;
                    }
                    else
                    {
                        assistantNetPlayer.Score += SCORE_ASSIST;
                    }
                }

                // Update team scores
                if (killer.Team != killed.Team)
                {
                    if (killer.Team == Team.A)
                    {
                        teamAScore++;
                    }
                    else if (killer.Team == Team.B)
                    {
                        teamBScore++;
                    }
                }

                // Announce score change
                NetChannel.FireEventForAllConnections("Client_UpdateScores", RemoteFlag.None,
                                                      NetDeliveryMethod.ReliableOrdered, (short)teamAScore, (short)teamBScore);
            }

            base.OnPlayerKilled(killer, killerNetPlayer, assistant, assistantNetPlayer,
                                killed, killedNetPlayer, item);

            // Add player to the respawn list
            AddRespawn(killed.StateInfo.Owner, RESPAWN_TIME);
        }
Example #2
0
        void CaptureIntel(ServerMPPlayer player, Intel intel)
        {
            intel.Return();

            string team = intel.Team == Team.A ? "Red" : "Blue";

            Screen.Chat(string.Format("The {0} intel has been captured!", team));

            if (player != null)
            {
                player.DropIntel();

                NetworkPlayer netPlayer;
                if (NetPlayerComponent.TryGetPlayer(player.StateInfo.Owner, out netPlayer))
                {
                    netPlayer.Score += SCORE_CAPTURE;

                    Screen.AddFeedItem(netPlayer.Name, "", World.GetTeamColor(player.Team),
                                       "Captured", "Intel", World.GetTeamColor(player.Team == Team.A ? Team.B : Team.A));
                }
            }
            else
            {
                Screen.AddFeedItem("?", null, World.GetTeamColor(intel.Team == Team.A ? Team.B : Team.A),
                                   "Captured", "Intel", World.GetTeamColor(intel.Team));
            }

            if (intel.Team == Team.B)
            {
                teamAScore++;
            }
            else
            {
                teamBScore++;
            }

            if (teamAScore < SCORE_CAP && teamBScore < SCORE_CAP)
            {
                NetChannel.FireEventForAllConnections("Client_IntelCaptured", (byte)intel.Team);
            }

            NetChannel.FireEventForAllConnections("Client_UpdateScores",
                                                  (short)teamAScore, (short)teamBScore);
        }
Example #3
0
        private void Intel_OnDropped(object sender, Player _player)
        {
            Intel          intel  = (Intel)sender;
            ServerMPPlayer player = (ServerMPPlayer)_player;

            string team = intel.Team == Team.A ? "Red" : "Blue";

            Screen.Chat(string.Format("The {0} intel has been dropped!", team));

            NetworkPlayer netPlayer;

            if (NetPlayerComponent.TryGetPlayer(player.StateInfo.Owner, out netPlayer))
            {
                Screen.AddFeedItem(netPlayer.Name, "", World.GetTeamColor(player.Team),
                                   "Dropped", "Intel", World.GetTeamColor(intel.Team));
            }

            NetChannel.FireEventForAllConnections("Client_IntelDropped", (byte)intel.Team);
        }
Example #4
0
        protected override void OnStarted()
        {
            Server.OnUserDisconnected += Server_OnUserDisconnected;

            // Send gamemode info
            NetChannel.FireEventForAllConnections("Client_GamemodeInfo", (ushort)SCORE_CAP);

            var commandposts = World.Description.GetObjectsByTag("CommandPost");

            if (commandposts.Count == 2)
            {
                // Load command posts
                foreach (WorldObjectDescription ob in commandposts)
                {
                    Vector3 position = ob.GetVector3("Position");
                    Team    team     = (Team)(ob.GetField <byte>("Team") ?? 0);

                    CommandPost post = new CommandPost(position, team);
                    if (team == Team.A)
                    {
                        redPost = post;
                    }
                    else
                    {
                        bluePost = post;
                    }

                    post.PhysicsBody.OnCollision += Post_OnCollision;

                    objectComponent.NetworkInstantiate(post, "Client_CreateCommandPost", null,
                                                       position.X, position.Y, position.Z, (byte)team);
                }
            }
            else
            {
                DashCMD.WriteWarning("[TDMGamemode] Current world does not have a proper gameobject setup! Falling back to default.");
                LoadFallbackGameObjects();
            }

            base.OnStarted();
        }