z411's Xonotic changes

This is an explanation of the Xonotic's gamecode changes made by z411 for the BaI Xonotic server. Most of these are features ported from Quake 3/Quake Live and some might be undesirable for some Xonotic players so I display them here only in case Xonotic players want any of them in the main game.

Note: All of these features are live in the BaI server (address: xonotic.bienvenidoainternet.org - port 26000 votable, port 26001 duel) if you want to test them.

Features:
  1. New Duel scoreboard
  2. Misc scoreboard changes
  3. Spectator HUD (teamplay)
  4. Medals
  5. Item pickup display
  6. Attacker name display
  7. Team colorized player names in kill feed
  8. Tags in chat
  9. Countdown title
  10. New teamplay score panel
  11. Ready alert in chat
  12. Timer sub text
  13. Announcer queue
  14. Lead announcing
  15. Relative announcing in CTF
  16. Improved timeout functionality (WIP)

New Duel scoreboard

This is a new special scoreboard made for duels. It displays the following:

  1. Player names, scores and ping
  2. Stats per weapon: hits, total fired shots, accuracy, damage done, kills
  3. Medals earned
  4. Special items taken (mega health, armor, etc.) to judge item control

Misc scoreboard changes

  1. Moved gametype to the left
  2. Server name display, colorized
  3. Custom server logo
  4. Bigger, clearer team score
  5. Custom team names (set by either admin or vote)
  6. Team's average ping
  7. Good ping is shown as green
  8. Country flags (can be disabled)
  9. Player's medal count

Spectator HUD (teamplay)

Special HUD for spectators in teamplay games.

  1. Bigger, clearer team names (can be custom!) and scores
  2. Weapon being currently in use by each player
  3. Player names, health and armor
  4. Clear display of dead players
  5. Bigger, clear display of the player name you're spectating

Medals

Medals that can be earned by doing certain feats in battle (impressives, airshots, humiliation, electro combo, telefrag, defense, assist, etc.). You get a visual cue and announcer sound when you get them and the total is shown below the scoreboard.

Item pickup display

When you pick up an item the time, icon and name of the item is displayed in the left bottom corner (time can be disabled).

Attacker name display

Whenever you get hit by an enemy, their name will appear in the top right corner.

Team colorized player names in kill feed

Tags in chat

For easier recognition spectators get a (s) tag, dead players get a (DEAD) tag (ie Clan Arena), team chat gets a (Team) tag, etc.

Countdown title

The countdown for game start now has a title that shows the game type. In Duel it shows the players who are about to duel.

New teamplay score panel

In team play, a new clearer panel displaying only the team names (can be custom!), team score and alive players (in CA/FT) replaces the regular score panel.

Place display when fragging

(Deathmatch) Frag message displays your current place.

Ready alert in chat

(Warmup) When a player is ready to start it displays an audible and visible alert in the chat.

Timer sub text

Timer now has a small subtext that displays the current game phase (warmup, intermission, timeout, overtime #, sudden death).

Announcer queue

Currently if two or more announcer notifications are received, the announcer sounds will play simultaneously, making the speech unintelligible. I developed a queue that waits until one announcer sound ends before playing the next one.

Lead announcing

Now you get an announcer notification if you took or lost the lead (deathmatch/duel) or your team took or lost the lead (teamplay).

Relative announcing in CTF

Now the announcer announces in relation to your team in CTF (Your team took the flag/The enemy took the flag instead of Red flag taken/Blue flag taken).

Improved timeout functionality (WIP)

Currently the timeout feature works by slowing down the game to a very low number (0.001). Sadly this breaks some things like ping/pl display and changing teams. I've changed the timeout code to stop all physics and timers instead, while keeping the game running at normal speed.