Merge remote-tracking branch 'origin/master' into fruitiex/animations
authorFruitieX <fruitiex@gmail.com>
Thu, 9 Jun 2011 11:47:22 +0000 (14:47 +0300)
committerFruitieX <fruitiex@gmail.com>
Thu, 9 Jun 2011 11:47:22 +0000 (14:47 +0300)
Conflicts:
defaultXonotic.cfg
qcsrc/server/cl_weaponsystem.qc

82 files changed:
csprogs.dat.it.po [new file with mode: 0644]
defaultXonotic.cfg
input-demoseeking.cfg [new file with mode: 0644]
models/player/erebus.iqm
models/player/erebus_lod1.iqm
models/player/erebus_lod2.iqm
models/player/gak.iqm
models/player/gak_lod1.iqm
models/player/gak_lod2.iqm
models/player/gakarmored.iqm
models/player/gakarmored_lod1.iqm
models/player/gakarmored_lod2.iqm
models/player/gakmasked.iqm
models/player/gakmasked_lod1.iqm
models/player/gakmasked_lod2.iqm
models/player/ignis.iqm
models/player/ignis_lod1.iqm
models/player/ignis_lod2.iqm
models/player/ignishalfmasked.iqm
models/player/ignishalfmasked_lod1.iqm
models/player/ignishalfmasked_lod2.iqm
models/player/ignismasked.iqm
models/player/ignismasked_lod1.iqm
models/player/ignismasked_lod2.iqm
models/player/megaerebus.iqm
models/player/megaerebus_lod1.iqm
models/player/megaerebus_lod2.iqm
models/player/nyx.iqm
models/player/nyx_lod1.iqm
models/player/nyx_lod2.iqm
models/player/pyria.iqm
models/player/pyria_lod1.iqm
models/player/pyria_lod2.iqm
models/player/seraphina.iqm
models/player/seraphina_lod1.iqm
models/player/seraphina_lod2.iqm
models/player/seraphinamasked.iqm
models/player/seraphinamasked_lod1.iqm
models/player/seraphinamasked_lod2.iqm
models/player/umbra.iqm
models/player/umbra_lod1.iqm
models/player/umbra_lod2.iqm
models/weapons/h_campingrifle.iqm
models/weapons/h_crylink.iqm
models/weapons/h_electro.iqm
models/weapons/h_fireball.iqm
models/weapons/h_gl.iqm
models/weapons/h_hagar.iqm
models/weapons/h_hlac.iqm
models/weapons/h_hookgun.iqm
models/weapons/h_laser.iqm
models/weapons/h_minelayer.iqm
models/weapons/h_minstanex.iqm
models/weapons/h_nex.iqm
models/weapons/h_porto.iqm
models/weapons/h_rl.iqm
models/weapons/h_seeker.iqm
models/weapons/h_shotgun.iqm
models/weapons/h_tuba.iqm
models/weapons/h_uzi.iqm
qcsrc/client/Main.qc
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/client/hud.qc
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/util.qc
qcsrc/server/arena.qc
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_weaponsystem.qc
qcsrc/server/clientcommands.qc
qcsrc/server/defs.qh
qcsrc/server/g_subs.qc
qcsrc/server/g_triggers.qc
qcsrc/server/g_world.qc
qcsrc/server/gamecommand.qc
qcsrc/server/vote.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_minelayer.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/warpzonelib/client.qc
qcsrc/warpzonelib/client.qh

diff --git a/csprogs.dat.it.po b/csprogs.dat.it.po
new file mode 100644 (file)
index 0000000..8b6a9c2
--- /dev/null
@@ -0,0 +1,1774 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-04-30 10:07+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Felice Sallustio <fel.sallustio@gmail.com>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Italian\n"
+
+#: qcsrc/client/mapvoting.qc:28
+msgid " (1 vote)"
+msgstr "(1 voto)"
+
+#: qcsrc/client/mapvoting.qc:30
+#, c-format
+msgid " (%d votes)"
+msgstr "(%d voti)"
+
+#: qcsrc/client/mapvoting.qc:113
+msgid "Don't care"
+msgstr "Non t'importa"
+
+#: qcsrc/client/mapvoting.qc:194
+msgid "Vote for a map"
+msgstr "Vota per uan mappa"
+
+#: qcsrc/client/mapvoting.qc:199
+#, c-format
+msgid "%d seconds left"
+msgstr "%d secondi rimanenti"
+
+#: qcsrc/client/mapvoting.qc:263
+msgid "mv_mapdownload: ^3You're not supposed to use this command on your own!\n"
+msgstr "mv_mapdownload: ^3Non avrai creduto di poter usare questo comando!\n"
+
+#: qcsrc/client/mapvoting.qc:273
+msgid "^1Error:^7 Couldn't find pak index.\n"
+msgstr "^1Errore:^7 Impossibile trovare il pak index.\n"
+
+#: qcsrc/client/mapvoting.qc:282
+msgid "Requesting preview...\n"
+msgstr "Richiedendo anteprima...\n"
+
+#: qcsrc/client/Main.qc:30
+msgid "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!"
+msgstr "ERRORE - IL MENU E' VISIBILE MA NESSUN MENO E' STATO DEFINITO!"
+
+#: qcsrc/client/Main.qc:56
+msgid ""
+"^3Your engine build is outdated\n"
+"^3This Server uses a newer QC VM. Please update!\n"
+msgstr ""
+"^3La tua build del motore è vecchia\n"
+"^3Questo server usa un nuovo QC VM. Per favore aggiorna!\n"
+
+#: qcsrc/client/Main.qc:66
+#, c-format
+msgid "^4CSQC Build information: ^1%s\n"
+msgstr "^4Informazioni sulla build CSQC: ^1%s\n"
+
+#: qcsrc/client/Main.qc:232
+#: qcsrc/client/Main.qc:248
+#, c-format
+msgid "trying to switch to unsupported team %d\n"
+msgstr "tentando di passare al team non supporato %d\n"
+
+#: qcsrc/client/Main.qc:364
+#: qcsrc/client/scoreboard.qc:241
+msgid "Usage:\n"
+msgstr "Uso:\n"
+
+#: qcsrc/client/Main.qc:365
+msgid "hud_save configname   (saves to hud_skinname_configname.cfg)\n"
+msgstr "hud_save configname   (salva in hud_skinname_configname.cfg)\n"
+
+#: qcsrc/client/Main.qc:512
+msgid "Usage: cl_cmd COMMAND..., where possible commands are:\n"
+msgstr "Uso: cl_cmd COMMAND..., dove possibile i comandi sono:\n"
+
+#: qcsrc/client/Main.qc:513
+msgid "  settemp cvar value\n"
+msgstr "  settemp cvar value\n"
+
+#: qcsrc/client/Main.qc:514
+msgid "  scoreboard_columns_set ...\n"
+msgstr "  scoreboard_columns_set ...\n"
+
+#: qcsrc/client/Main.qc:515
+msgid "  scoreboard_columns_help\n"
+msgstr "  scoreboard_columns_help\n"
+
+#: qcsrc/client/Main.qc:720
+msgid "A CSQC entity changed its owner!\n"
+msgstr ""
+
+#: qcsrc/client/Main.qc:934
+msgid "A CSQC entity changed its type!\n"
+msgstr "Una entity CSQC ha cambiato il suo tipo!\n"
+
+#: qcsrc/client/Main.qc:972
+#, c-format
+msgid "unknown entity type in CSQC_Ent_Update: %d\n"
+msgstr "entity type sconosciuto in CSQC_Ent_Update: %d\n"
+
+#: qcsrc/client/Main.qc:1444
+#, c-format
+msgid "%s (not bound)"
+msgstr ""
+
+#: qcsrc/client/Main.qc:1449
+#: qcsrc/client/hud.qc:407
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: qcsrc/client/target_music.qc:93
+#: qcsrc/client/target_music.qc:181
+#, c-format
+msgid "Cannot initialize sound %s\n"
+msgstr "Impossibile inizializzare suono %s\n"
+
+#: qcsrc/client/hud.qc:337
+msgid "1st"
+msgstr "1°"
+
+#: qcsrc/client/hud.qc:339
+msgid "2nd"
+msgstr "2°"
+
+#: qcsrc/client/hud.qc:341
+msgid "3rd"
+msgstr "3°"
+
+#: qcsrc/client/hud.qc:343
+#, c-format
+msgid "%dth"
+msgstr "%d°"
+
+#: qcsrc/client/hud.qc:375
+#, c-format
+msgid " (-%dL)"
+msgstr " (-%dG)"
+
+#: qcsrc/client/hud.qc:380
+#, c-format
+msgid " (+%dL)"
+msgstr " (+%dG)"
+
+#: qcsrc/client/hud.qc:396
+msgid "Start line"
+msgstr "Linea di partenza"
+
+#: qcsrc/client/hud.qc:398
+#: qcsrc/client/hud.qc:402
+msgid "Finish line"
+msgstr "Linea d'arrivo"
+
+#: qcsrc/client/hud.qc:400
+#, c-format
+msgid "Intermediate %d"
+msgstr "Intermedio %d"
+
+#: qcsrc/client/hud.qc:409
+#, c-format
+msgid "%s (%s %s)"
+msgstr "%s (%s %s)"
+
+#: qcsrc/client/hud.qc:553
+#, c-format
+msgid "^2Successfully exported to %s! (Note: It's saved in data/data/)\n"
+msgstr "^2Esportato con successo in %s (nota: E' salvato in data/data/)\n"
+
+#: qcsrc/client/hud.qc:557
+#, c-format
+msgid "^1Couldn't write to %s\n"
+msgstr "^1Impossibile scrivere in %s\n"
+
+#: qcsrc/client/hud.qc:1837
+msgid "Out of ammo"
+msgstr "Senza munizioni"
+
+#: qcsrc/client/hud.qc:1841
+msgid "Don't have"
+msgstr "Non a disposizione"
+
+#: qcsrc/client/hud.qc:1845
+msgid "Unavailable"
+msgstr "Non disponibili"
+
+#: qcsrc/client/hud.qc:2696
+#, c-format
+msgid "^1%s^1 couldn't take it anymore\n"
+msgstr "^1%s^1 non ce l'ha più fatta\n"
+
+#: qcsrc/client/hud.qc:2700
+#: qcsrc/client/hud.qc:2992
+#, c-format
+msgid "^1%s^1 died\n"
+msgstr "^1%s^1 è morto\n"
+
+#: qcsrc/client/hud.qc:2704
+#, c-format
+msgid "^7%s^7 committed suicide. What's the point of living without ammo?\n"
+msgstr "^7%s^7 ha commesso il suicidio. Qual'è il motivo di vivere senza munizioni?\n"
+
+#: qcsrc/client/hud.qc:2708
+#, c-format
+msgid "^1%s^1 thought they found a nice camping ground\n"
+msgstr "^1%s^1 pensavano di trovare un bel campeggio\n"
+
+#: qcsrc/client/hud.qc:2712
+#, c-format
+msgid "^1%s^1 didn't become friends with the Lord of Teamplay\n"
+msgstr "^1%s^1 non sono diventato amici con il Signore del Teamplay\n"
+
+#: qcsrc/client/hud.qc:2716
+#, c-format
+msgid "^1%s^1 unfairly eliminated themself\n"
+msgstr "^1%s^1 ingiustamente si sono eliminati\n"
+
+#: qcsrc/client/hud.qc:2720
+#, c-format
+msgid "^1%s^1 burned to death\n"
+msgstr "^1%s^1 è stato bruciato alla morte\n"
+
+#: qcsrc/client/hud.qc:2724
+#, c-format
+msgid "^1%s^1 couldn't resist the urge to self-destruct\n"
+msgstr "^1%s^1 non ha resistito alla tentazione di autodistruggersi\n"
+
+#: qcsrc/client/hud.qc:2728
+#, c-format
+msgid "^1%s^1 ended it all after a %d kill spree\n"
+msgstr "^1%s^1 ha fatto in modo di concludere la serie di %d uccisioni\n"
+
+#: qcsrc/client/hud.qc:2745
+#, c-format
+msgid "^1%s^1 took action against a team mate\n"
+msgstr "^1%s^1 ha agito contro un compagno di squadra\n"
+
+#: qcsrc/client/hud.qc:2747
+#, c-format
+msgid "^1%s^1 mows down a team mate\n"
+msgstr "^1%s^1 è stato falciato da un compagno di squadra\n"
+
+#: qcsrc/client/hud.qc:2752
+#, c-format
+msgid "^1%s^1 ended a %d scoring spree by going against a team mate\n"
+msgstr "^1%s^1 ha concluso una serie di %d punti per esser andato contro un compagno di squadra\n"
+
+#: qcsrc/client/hud.qc:2754
+#, c-format
+msgid "^1%s^1 ended a %d kill spree by killing a team mate\n"
+msgstr "^1%s^1 ha concluso una serie di %d uccisioni per aver ammazzato un compagno di squadra\n"
+
+#: qcsrc/client/hud.qc:2758
+#, c-format
+msgid "^1%s^1's %s scoring spree was ended by a team mate!\n"
+msgstr "^1La serie di %s^1 di %s^1 punti è stata conclusa da un compagno di squadra!\n"
+
+#: qcsrc/client/hud.qc:2760
+#, c-format
+msgid "^1%s^1's %s kill spree was ended by a team mate!\n"
+msgstr "^1La serie di %s ^1di %s^1uccisioni è stata conclusa da un compagno di squadra!\n"
+
+#: qcsrc/client/hud.qc:2764
+#, c-format
+msgid "^1%s^1 drew first blood\n"
+msgstr "^1%s^1 ha tratto la prima uccisione\n"
+
+#: qcsrc/client/hud.qc:2768
+#, c-format
+msgid "^1%s^1 tried to occupy %s^1's teleport destination space\n"
+msgstr "^1%s^1 ha provato a occupare lo spazio del teletrasporto di %s\n"
+
+#: qcsrc/client/hud.qc:2770
+#, c-format
+msgid "^1%s^1 was telefragged by %s\n"
+msgstr "^1%s^1 è stato telefraggato da %s\n"
+
+#: qcsrc/client/hud.qc:2775
+#, c-format
+msgid "^1%s^1 was drowned by %s\n"
+msgstr "^1%s^1 è stato annegato da %s\n"
+
+#: qcsrc/client/hud.qc:2780
+#, c-format
+msgid "^1%s^1 was slimed by %s\n"
+msgstr "^1%s^1 è stato coperto di melma da %s\n"
+
+#: qcsrc/client/hud.qc:2785
+#, c-format
+msgid "^1%s^1 was cooked by %s\n"
+msgstr "^1%s^1 è stato cucinato da %s\n"
+
+#: qcsrc/client/hud.qc:2790
+#, c-format
+msgid "^1%s^1 was grounded by %s\n"
+msgstr "^1%s^1 è stato messo a terra da %s\n"
+
+#: qcsrc/client/hud.qc:2795
+#, c-format
+msgid "^1%s^1 was shot into space by %s\n"
+msgstr "^1%s^1 è stato buttato nello spazio da %s\n"
+
+#: qcsrc/client/hud.qc:2800
+#, c-format
+msgid "^1%s^1 was conserved by %s\n"
+msgstr "^1%s^1 è stato conservato da %s\n"
+
+#: qcsrc/client/hud.qc:2806
+#, c-format
+msgid "^1%s^1 was thrown into a world of hurt by %s\n"
+msgstr "^1%s^1 è stato lanciato in un mondo di dolore da %s\n"
+
+#: qcsrc/client/hud.qc:2810
+#, c-format
+msgid "^1%s^1 was crushed by %s\n"
+msgstr "^1%s^1 è stato schiacciato da %s\n"
+
+#: qcsrc/client/hud.qc:2814
+#, c-format
+msgid "^1%s^1 got shredded by %s\n"
+msgstr "^1%s^1 è stato triturato da %s\n"
+
+#: qcsrc/client/hud.qc:2818
+#, c-format
+msgid "^1%s^1 was blasted to bits by %s\n"
+msgstr "^1%s^1 è stato disintegrato da %s\n"
+
+#: qcsrc/client/hud.qc:2822
+#, c-format
+msgid "^1%s^1 got caught in the destruction of %s^1's vehicle\n"
+msgstr "^1%s^1 è caduto nella distruzione del veicolo di %s\n"
+
+#: qcsrc/client/hud.qc:2826
+#, c-format
+msgid "^1%s^1 was bolted down by %s\n"
+msgstr "^1%s^1 è stato bullonato giù da %s\n"
+
+#: qcsrc/client/hud.qc:2830
+#, c-format
+msgid "^1%s^1 could find no shelter from %s^1's rockets\n"
+msgstr "^1%s^1 non ha trovato riparo dai razzi di %s\n"
+
+#: qcsrc/client/hud.qc:2834
+#, c-format
+msgid "^1%s^1 dies when %s^1's wakizashi dies.\n"
+msgstr "^1%s^1 muore mentre il wakizashi di %s^1 muore.\n"
+
+#: qcsrc/client/hud.qc:2838
+#, c-format
+msgid "^1%s^1 was pushed into the line of fire by %s\n"
+msgstr "^1%s^1 è stato spinto in una linea di fuoco da %s\n"
+
+#: qcsrc/client/hud.qc:2842
+#, c-format
+msgid "^1%s^1 was pushed into an accident by %s\n"
+msgstr "^1%s^1 è stato spinto in un incidente da %s\n"
+
+#: qcsrc/client/hud.qc:2846
+#, c-format
+msgid "^1%s^1 was unfairly eliminated by %s\n"
+msgstr "^1%s^1 è stato ingiustamente eliminato da %s\n"
+
+#: qcsrc/client/hud.qc:2850
+#, c-format
+msgid "^1%s^1 was burnt to death by %s\n"
+msgstr "^1%s^1 è stato bruciato alla morte da %s\n"
+
+#: qcsrc/client/hud.qc:2862
+#, c-format
+msgid "^1%s^1 was fragged by %s\n"
+msgstr "^1%s^1 è stato fraggato da %s\n"
+
+#: qcsrc/client/hud.qc:2867
+#, c-format
+msgid "^1%s^1's %s scoring spree was ended by %s\n"
+msgstr "^1La serie di %s ^1 di ^%s^1 punti è stata conclusa da %s\n"
+
+#: qcsrc/client/hud.qc:2869
+#, c-format
+msgid "^1%s^1's %s kill spree was ended by %s\n"
+msgstr "^1La serie di %s ^1 di ^%s^1 uccisioni è stata conclusa da %s\n"
+
+#: qcsrc/client/hud.qc:2872
+#, c-format
+msgid "^1%s^1 made %s scores in a row\n"
+msgstr "^1%s^1 ha fatto %s punti di fila\n"
+
+#: qcsrc/client/hud.qc:2874
+#, c-format
+msgid "^1%s^1 has %s frags in a row\n"
+msgstr "^1%s^1 ha fatto %s frag di fila\n"
+
+#: qcsrc/client/hud.qc:2877
+#, c-format
+msgid "%s^7 made a ^1TRIPLE SCORE\n"
+msgstr "%s^7 ha realizzato un ^1TRIPLO PUNTO\n"
+
+#: qcsrc/client/hud.qc:2879
+#, c-format
+msgid "%s^7 made a ^1TRIPLE FRAG\n"
+msgstr "%s^7 ha realizzato un ^1FRAG TRIPLO\n"
+
+#: qcsrc/client/hud.qc:2882
+#, c-format
+msgid "%s^7 unleashes ^1SCORING RAGE\n"
+msgstr "%s^7 scatena una ^1FURIA DI PUNTI\n"
+
+#: qcsrc/client/hud.qc:2884
+#, c-format
+msgid "%s^7 unleashes ^1RAGE\n"
+msgstr "%s^7 scatena la propria ^1FURIA\n"
+
+#: qcsrc/client/hud.qc:2887
+#, c-format
+msgid "%s^7 made ^1TEN SCORES IN A ROW!\n"
+msgstr "%s^7 ha realizzato ^1DIECI PUNTI DI FILA!\n"
+
+#: qcsrc/client/hud.qc:2889
+#, c-format
+msgid "%s^7 starts the ^1MASSACRE!\n"
+msgstr "%s^7 ha iniziato il ^1MASSACRO!\n"
+
+#: qcsrc/client/hud.qc:2892
+#, c-format
+msgid "%s^7 made ^1FIFTEEN SCORES IN A ROW!\n"
+msgstr "%s^7 ha realizzato ^QUINDICI PUNTI DI FILA!\n"
+
+#: qcsrc/client/hud.qc:2894
+#, c-format
+msgid "%s^7 executes ^1MAYHEM!\n"
+msgstr "%s^7 ha eseguito un ^1MAYHEM!\n"
+
+#: qcsrc/client/hud.qc:2897
+#, c-format
+msgid "%s^7 made ^1TWENTY SCORES IN A ROW!\n"
+msgstr "%s^7 ha realizzato ^1VENTI PUNTI DI FILA!\n"
+
+#: qcsrc/client/hud.qc:2899
+#, c-format
+msgid "%s^7 is a ^1BERSERKER!\n"
+msgstr "%s^7 è un ^1FEROCE GUERRIERO!\n"
+
+#: qcsrc/client/hud.qc:2902
+#, c-format
+msgid "%s^7 made ^1TWENTY FIVE SCORES IN A ROW!\n"
+msgstr "%s^7 ha realizzato ^1VENTICINQUE PUNTI DI FILA!\n"
+
+#: qcsrc/client/hud.qc:2904
+#, c-format
+msgid "%s^7 inflicts ^1CARNAGE!\n"
+msgstr "%s^7 ha inflitto una ^1STRAGE!\n"
+
+#: qcsrc/client/hud.qc:2907
+#, c-format
+msgid "%s^7 made ^1THIRTY SCORES IN A ROW!\n"
+msgstr "%s^7 ha realizzato ^1TRENTA PUNTI DI FILA!\n"
+
+#: qcsrc/client/hud.qc:2909
+#, c-format
+msgid "%s^7 unleashes ^1ARMAGEDDON!\n"
+msgstr "%s^7 scatena un ^1ARMAGEDDON!\n"
+
+#: qcsrc/client/hud.qc:2917
+#, c-format
+msgid "^1%s^1 was in the water for too long\n"
+msgstr "^1%s^1 è stato nell'acqua per troppo tempo\n"
+
+#: qcsrc/client/hud.qc:2919
+#, c-format
+msgid "^1%s^1 drowned\n"
+msgstr "^1%s^1 è affogato\n"
+
+#: qcsrc/client/hud.qc:2924
+#, c-format
+msgid "^1%s^1 was slimed\n"
+msgstr "^1%s^1 è stato coperto di melma\n"
+
+#: qcsrc/client/hud.qc:2930
+#, c-format
+msgid "^1%s^1 found a hot place\n"
+msgstr "^1%s^1 ha trovato un posto caldo\n"
+
+#: qcsrc/client/hud.qc:2932
+#, c-format
+msgid "^1%s^1 turned into hot slag\n"
+msgstr "^1%s^1 è finito dentro la lava bollente\n"
+
+#: qcsrc/client/hud.qc:2939
+#, c-format
+msgid "^1%s^1 tested gravity (and it worked)\n"
+msgstr "^1%s^1 ha testato la gravità (e ha funzionato)\n"
+
+#: qcsrc/client/hud.qc:2941
+#, c-format
+msgid "^1%s^1 hit the ground with a crunch\n"
+msgstr "^1%s^1 ha fatto scricchilare il terreno\n"
+
+#: qcsrc/client/hud.qc:2946
+#, c-format
+msgid "^1%s^1 became a shooting star\n"
+msgstr "^1%s^1 è diventato una stella cadente\n"
+
+#: qcsrc/client/hud.qc:2952
+#, c-format
+msgid "^1%s^1 discovered a swamp\n"
+msgstr "^1%s^1 ha scoperto una palude\n"
+
+#: qcsrc/client/hud.qc:2954
+#, c-format
+msgid "^1%s^1 is now conserved for centuries to come\n"
+msgstr "^1%s^1 è ora conservato per i secoli a venire\n"
+
+#: qcsrc/client/hud.qc:2959
+#, c-format
+msgid "^1%s^1 was mowed down by a turret \n"
+msgstr "^1%s^1 è stato buttato giù da una torretta \n"
+
+#: qcsrc/client/hud.qc:2971
+#, c-format
+msgid "^1%s^1 died in an accident\n"
+msgstr "^1%s^1 è morto in un incidente\n"
+
+#: qcsrc/client/hud.qc:2975
+#, c-format
+msgid "^1%s^1 was unfairly eliminated\n"
+msgstr "^1%s^1 è stato ingiustamente eliminato\n"
+
+#: qcsrc/client/hud.qc:2981
+#, c-format
+msgid "^1%s^1 felt a little hot\n"
+msgstr "^1%s^1 aveva un pò caldo\n"
+
+#: qcsrc/client/hud.qc:2983
+#, c-format
+msgid "^1%s^1 burnt to death\n"
+msgstr "^1%s^1 è bruciato alla morte\n"
+
+#: qcsrc/client/hud.qc:2990
+#, c-format
+msgid "^1%s^1 needs a restart\n"
+msgstr "^1%s^1 ha bisogno di una ripresa\n"
+
+#: qcsrc/client/hud.qc:2997
+#, c-format
+msgid "^1%s^1 needs a restart after a %d scoring spree\n"
+msgstr "^1%s^1 ha bisogno di una ripresa dopo una serie di %d punti\n"
+
+#: qcsrc/client/hud.qc:2999
+#, c-format
+msgid "^1%s^1 died with a %d kill spree\n"
+msgstr "^1%s^1 è morto dopo una serie di %d uccisioni\n"
+
+#: qcsrc/client/hud.qc:3003
+#, c-format
+msgid "%s^7 got the %s\n"
+msgstr "%s^7 ha preso la %s\n"
+
+#: qcsrc/client/hud.qc:3006
+#, c-format
+msgid "%s^7 lost the %s\n"
+msgstr "%s^7 ha perso la %s\n"
+
+#: qcsrc/client/hud.qc:3009
+#, c-format
+msgid "%s^7 picked up the %s\n"
+msgstr "%s^7 ha raccolto il %s\n"
+
+#: qcsrc/client/hud.qc:3012
+#, c-format
+msgid "%s^7 returned the %s\n"
+msgstr "%s^7 ha restituito il %s\n"
+
+#: qcsrc/client/hud.qc:3015
+#, c-format
+msgid "%s^7 captured the %s%s\n"
+msgstr "%s^7 ha catturato la %s%s\n"
+
+#: qcsrc/client/hud.qc:3034
+#, c-format
+msgid "%s^7 has picked up the ball!\n"
+msgstr "%s^7 ha raccolto la palla!\n"
+
+#: qcsrc/client/hud.qc:3039
+#, c-format
+msgid "%s^7 has dropped the ball!\n"
+msgstr "%s^7 ha rilasciato la palla!\n"
+
+#: qcsrc/client/hud.qc:3052
+#, c-format
+msgid "You are now on: %s"
+msgstr "Sei ora in: %s"
+
+#: qcsrc/client/hud.qc:3054
+#, c-format
+msgid ""
+"You have been moved into a different team to improve team balance\n"
+"You are now on: %s"
+msgstr ""
+"Sei stato spostato in una squadra differente per aumentare il bilanciamento delle squadre\n"
+"Sei ora in: %s"
+
+#: qcsrc/client/hud.qc:3057
+msgid "^1Reconsider your tactics, camper!"
+msgstr "^1Riconsidera le tue tattiche, camper!"
+
+#: qcsrc/client/hud.qc:3059
+msgid "^1Die camper!"
+msgstr "^1Muori camper!"
+
+#: qcsrc/client/hud.qc:3062
+msgid "^1You are reinserted into the game for running out of ammo..."
+msgstr "^1Ti sei reinserito nel gioco per mancanza di munizioni..."
+
+#: qcsrc/client/hud.qc:3064
+msgid "^1You were killed for running out of ammo..."
+msgstr "^1Sei stato ucciso per mancanza di munizioni..."
+
+#: qcsrc/client/hud.qc:3067
+msgid "^1You need to preserve your health"
+msgstr "^1Hai bisogno di preservare la tua vita"
+
+#: qcsrc/client/hud.qc:3069
+msgid "^1You grew too old without taking your medicine"
+msgstr "^1Sei diventato troppo vecchio senza prendere le due medicine"
+
+#: qcsrc/client/hud.qc:3072
+msgid "^1Don't go against team mates!"
+msgstr "^1Non andare contro i tuoi compagni di squadra!"
+
+#: qcsrc/client/hud.qc:3074
+msgid "^1Don't shoot your team mates!"
+msgstr "^1Non sparare ai tuoi compagni di squadra!"
+
+#: qcsrc/client/hud.qc:3079
+msgid "^1You need to be more careful!"
+msgstr "^1Hai bisogno di essere più prudente!"
+
+#: qcsrc/client/hud.qc:3081
+msgid "^1You killed your own dumb self!"
+msgstr "^1Ti sei ammazzato da solo!"
+
+#: qcsrc/client/hud.qc:3086
+#, c-format
+msgid "^1Moron! You went against %s, a team mate!"
+msgstr "^1Idiota! Sei andato contro %s, un compagno di squadra!"
+
+#: qcsrc/client/hud.qc:3088
+#, c-format
+msgid "^1Moron! You fragged %s, a team mate!"
+msgstr "^1Idiota! Hai fraggato %s, un compagno di squadra!"
+
+#: qcsrc/client/hud.qc:3092
+msgid "^1First score"
+msgstr "^1Primo punto"
+
+#: qcsrc/client/hud.qc:3094
+msgid "^1First blood"
+msgstr "^1Primo ferito"
+
+#: qcsrc/client/hud.qc:3098
+msgid "^1First casualty"
+msgstr "^1Prima vittima"
+
+#: qcsrc/client/hud.qc:3100
+msgid "^1First victim"
+msgstr "^1Prima vittima"
+
+#: qcsrc/client/hud.qc:3104
+#, c-format
+msgid "^1You scored against ^7%s^1 who was typing!"
+msgstr "^1Hai segnato contro ^7%s^1 che stava scrivendo!"
+
+#: qcsrc/client/hud.qc:3106
+#, c-format
+msgid "^1You typefragged ^7%s"
+msgstr "^1Hai telefraggato ^7%s"
+
+#: qcsrc/client/hud.qc:3110
+#, c-format
+msgid "^1You were scored against by ^7%s^1 while you were typing!"
+msgstr "^1Sei stato segnato da ^7%s^1 mentre tu stavi scrivendo!"
+
+#: qcsrc/client/hud.qc:3112
+#, c-format
+msgid "^1You were typefragged by ^7%s"
+msgstr "^1Sei stato \"typefraggato\" da ^7%s"
+
+#: qcsrc/client/hud.qc:3116
+#, c-format
+msgid "^4You scored against ^7%s"
+msgstr "^4Hai segnato contro ^7%s"
+
+#: qcsrc/client/hud.qc:3118
+#, c-format
+msgid "^4You fragged ^7%s"
+msgstr "^4Hai fraggato ^7%s"
+
+#: qcsrc/client/hud.qc:3122
+#, c-format
+msgid "^1You were scored against by ^7%s"
+msgstr "^1Sei stato segnato da ^7%s"
+
+#: qcsrc/client/hud.qc:3124
+#, c-format
+msgid "^1You were fragged by ^7%s"
+msgstr "^1Sei stato fraggato da ^7%s"
+
+#: qcsrc/client/hud.qc:3129
+msgid "^1Watch your step!"
+msgstr "^1Attendo a dove metti i piedi!"
+
+#: qcsrc/client/hud.qc:3194
+#: qcsrc/client/hud.qc:3195
+#, c-format
+msgid "Player %d"
+msgstr "Giocatore %d"
+
+#: qcsrc/client/hud.qc:3791
+msgid "^1Intermediate 1 (+15.42)"
+msgstr "^1Intermedio 1 (+15.42)"
+
+#: qcsrc/client/hud.qc:3793
+#: qcsrc/client/hud.qc:3835
+#: qcsrc/client/hud.qc:3876
+#, c-format
+msgid "^1PENALTY: %.1f (%s)"
+msgstr "^1PENALITÀ: %.1f (%s)"
+
+#: qcsrc/client/hud.qc:3878
+#, c-format
+msgid "^2PENALTY: %.1f (%s)"
+msgstr "^2PENALITÀ: %.1f (%s)"
+
+#: qcsrc/client/hud.qc:3903
+msgid "^2Name ^7instead of \"^1Unregistered player^7\" in stats"
+msgstr "^2Nome ^7invece di \"^1Giocatore non registrato^7\" in stato"
+
+#: qcsrc/client/hud.qc:3985
+msgid "A vote has been called for:"
+msgstr "Un voto è stato chiamato per:"
+
+#: qcsrc/client/hud.qc:3987
+msgid "Allow servers to store and display your name?"
+msgstr "Permetti ai server di salvare e visualizzare il tuo nome?"
+
+#: qcsrc/client/hud.qc:3991
+msgid "^1Configure the HUD"
+msgstr "^1Configura il pannello HUD"
+
+#: qcsrc/client/hud.qc:3995
+#, c-format
+msgid "Yes (%s): %d"
+msgstr "Sì (%s): %d"
+
+#: qcsrc/client/hud.qc:3997
+#, c-format
+msgid "No (%s): %d"
+msgstr "No (%s): %d"
+
+#: qcsrc/client/hud.qc:4510
+#: qcsrc/client/hud.qc:4513
+#: qcsrc/client/hud.qc:4515
+msgid "Personal best"
+msgstr "Miglior personale"
+
+#: qcsrc/client/hud.qc:4528
+#: qcsrc/client/hud.qc:4531
+#: qcsrc/client/hud.qc:4533
+msgid "Server best"
+msgstr "Migliori del server"
+
+#: qcsrc/client/hud.qc:4765
+msgid "^3Player^7: This is the chat area."
+msgstr "^3Giocatore^7: Questa è un'area per la chat."
+
+#: qcsrc/client/hud.qc:4828
+#, c-format
+msgid "FPS: %.*f"
+msgstr "FPS: %.*f"
+
+#: qcsrc/client/hud.qc:4893
+msgid "^1Observing"
+msgstr "^1Modalità spettatore"
+
+#: qcsrc/client/hud.qc:4895
+#, c-format
+msgid "^1Spectating: ^7%s"
+msgstr "^1Assistendo: ^7%s"
+
+#: qcsrc/client/hud.qc:4899
+#, c-format
+msgid "^1Press ^3%s^1 to spectate"
+msgstr "^1Premere ^3%s^1 per assistere"
+
+#: qcsrc/client/hud.qc:4901
+#, c-format
+msgid "^1Press ^3%s^1 for another player"
+msgstr "^1Premere ^3%s^1 per un altro giocatore"
+
+#: qcsrc/client/hud.qc:4905
+#, c-format
+msgid "^1Use ^3%s^1 or ^3%s^1 to change the speed"
+msgstr "^1Usa ^3%s^1 o ^3%s^1 per cambiare velocità"
+
+#: qcsrc/client/hud.qc:4907
+#, c-format
+msgid "^1Press ^3%s^1 to observe"
+msgstr "^1Premere ^3%s^1 per osservare"
+
+#: qcsrc/client/hud.qc:4910
+#, c-format
+msgid "^1Press ^3%s^1 for gamemode info"
+msgstr "^1Premere ^3%s^1 per le informazioni sulla modalità di gioco"
+
+#: qcsrc/client/hud.qc:4914
+msgid "^1Wait for your turn to join"
+msgstr "^1Attendi il tuo turno per entrare"
+
+#: qcsrc/client/hud.qc:4920
+msgid "^1Match has already begun"
+msgstr "^1La partita è già iniziata"
+
+#: qcsrc/client/hud.qc:4922
+msgid "^1You have no more lives left"
+msgstr "^1Non hai più vite a disposizione"
+
+#: qcsrc/client/hud.qc:4924
+#: qcsrc/client/hud.qc:4927
+#, c-format
+msgid "^1Press ^3%s^1 to join"
+msgstr "^1Premi ^3%s^1 per entrare"
+
+#: qcsrc/client/hud.qc:4935
+#, c-format
+msgid "^1Game starts in ^3%d^1 seconds"
+msgstr "^1La partita inizia tra ^3%d^1 secondi"
+
+#: qcsrc/client/hud.qc:4942
+msgid "^2Currently in ^1warmup^2 stage!"
+msgstr "^2Attualmente in ^1warmup^2!"
+
+#: qcsrc/client/hud.qc:4957
+#, c-format
+msgid "%sPress ^3%s%s to end warmup"
+msgstr "%sPremi ^3%s%s per terminare il warmup"
+
+#: qcsrc/client/hud.qc:4959
+#, c-format
+msgid "%sPress ^3%s%s once you are ready"
+msgstr "%sPremi ^3%s%s una volta che sei pronto"
+
+#: qcsrc/client/hud.qc:4964
+msgid "^2Waiting for others to ready up to end warmup..."
+msgstr "^2Attendendo che gli altri siano pronti per terminare il warmup..."
+
+#: qcsrc/client/hud.qc:4966
+msgid "^2Waiting for others to ready up..."
+msgstr "^2Attendendo che gli altri siano pronti..."
+
+#: qcsrc/client/hud.qc:4972
+#, c-format
+msgid "^2Press ^3%s^2 to end warmup"
+msgstr "^2Premi ^3%s^2 per terminare il warmup"
+
+#: qcsrc/client/hud.qc:4993
+msgid "Teamnumbers are unbalanced!"
+msgstr "Il numero di giocatori per squadra è sbilanciato!"
+
+#: qcsrc/client/hud.qc:4998
+#, c-format
+msgid " Press ^3%s%s to adjust"
+msgstr " Premi ^3%s%s per aggiustare"
+
+#: qcsrc/client/hud.qc:5006
+msgid "^7Press ^3ESC ^7to show HUD options."
+msgstr "^7Premi ^3ESC ^7per mostrare le opzioni dello HUD"
+
+#: qcsrc/client/hud.qc:5008
+msgid "^3Doubleclick ^7a panel for panel-specific options."
+msgstr "^3Fai doppio-click ^7su un pannello per le sue specifiche opzioni "
+
+#: qcsrc/client/hud.qc:5010
+msgid "^3CTRL ^7to disable collision testing, ^3SHIFT ^7and"
+msgstr "^3CTRL ^7per disabilitare il test di collisione, ^3SHIFT ^7e"
+
+#: qcsrc/client/hud.qc:5012
+msgid "^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments."
+msgstr "^3ALT ^7+ ^3ARROW KEYS ^7per fini aggiustamenti"
+
+#: qcsrc/client/hud.qc:5037
+msgid " qu/s"
+msgstr " qu/s"
+
+#: qcsrc/client/hud.qc:5041
+msgid " m/s"
+msgstr " m/s"
+
+#: qcsrc/client/hud.qc:5045
+msgid " km/h"
+msgstr " km/h"
+
+#: qcsrc/client/hud.qc:5049
+msgid " mph"
+msgstr " mph"
+
+#: qcsrc/client/hud.qc:5053
+msgid " knots"
+msgstr "nodi"
+
+#: qcsrc/client/scoreboard.qc:19
+msgid "SCO^bckills"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:20
+msgid "SCO^bctime"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:21
+msgid "SCO^caps"
+msgstr "SCO^catture"
+
+#: qcsrc/client/scoreboard.qc:22
+msgid "SCO^deaths"
+msgstr "SCO^morti"
+
+#: qcsrc/client/scoreboard.qc:23
+msgid "SCO^destroyed"
+msgstr "SCO^distrutte"
+
+#: qcsrc/client/scoreboard.qc:24
+msgid "SCO^drops"
+msgstr "SCO^cadute"
+
+#: qcsrc/client/scoreboard.qc:25
+msgid "SCO^faults"
+msgstr "SCO^falli"
+
+#: qcsrc/client/scoreboard.qc:26
+msgid "SCO^fckills"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:27
+msgid "SCO^goals"
+msgstr "SCO^gol"
+
+#: qcsrc/client/scoreboard.qc:28
+msgid "SCO^kckills"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:29
+msgid "SCO^kdratio"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:30
+msgid "SCO^k/d"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:31
+msgid "SCO^kd"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:32
+msgid "SCO^kdr"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:33
+msgid "SCO^kills"
+msgstr "SCO^uccisioni"
+
+#: qcsrc/client/scoreboard.qc:34
+msgid "SCO^laps"
+msgstr "SCO^giri"
+
+#: qcsrc/client/scoreboard.qc:35
+msgid "SCO^lives"
+msgstr "SCO^vite"
+
+#: qcsrc/client/scoreboard.qc:36
+msgid "SCO^losses"
+msgstr "SCO^perdute"
+
+#: qcsrc/client/scoreboard.qc:37
+msgid "SCO^name"
+msgstr "SCO^nome"
+
+#: qcsrc/client/scoreboard.qc:38
+msgid "SCO^nick"
+msgstr "SCO^nick"
+
+#: qcsrc/client/scoreboard.qc:39
+msgid "SCO^objectives"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:40
+msgid "SCO^pickups"
+msgstr "SCO^raccolti"
+
+#: qcsrc/client/scoreboard.qc:41
+msgid "SCO^ping"
+msgstr "SCO^ping"
+
+#: qcsrc/client/scoreboard.qc:42
+msgid "SCO^pl"
+msgstr "SCO^pl"
+
+#: qcsrc/client/scoreboard.qc:43
+msgid "SCO^pushes"
+msgstr "SCO^buttati"
+
+#: qcsrc/client/scoreboard.qc:44
+msgid "SCO^rank"
+msgstr "SCO^posizione"
+
+#: qcsrc/client/scoreboard.qc:45
+msgid "SCO^returns"
+msgstr "SCO^ritorni"
+
+#: qcsrc/client/scoreboard.qc:46
+msgid "SCO^revivals"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:47
+msgid "SCO^score"
+msgstr "SCO^punti"
+
+#: qcsrc/client/scoreboard.qc:48
+msgid "SCO^suicides"
+msgstr "SCO^suicidi"
+
+#: qcsrc/client/scoreboard.qc:49
+msgid "SCO^takes"
+msgstr "SCO^presi"
+
+#: qcsrc/client/scoreboard.qc:50
+msgid "SCO^ticks"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:239
+msgid "You can modify the scoreboard using the ^2scoreboard_columns_set command.\n"
+msgstr "Puoi modificare lo scoreboard usando il comando ^2scoreboard_columns_set.\n"
+
+#: qcsrc/client/scoreboard.qc:240
+msgid "^3|---------------------------------------------------------------|\n"
+msgstr "^3|---------------------------------------------------------------|\n"
+
+#: qcsrc/client/scoreboard.qc:242
+msgid "^2scoreboard_columns_set default\n"
+msgstr "^2scoreboard_columns_set prefedinito\n"
+
+#: qcsrc/client/scoreboard.qc:243
+msgid "^2scoreboard_columns_set ^7filed1 field2 ...\n"
+msgstr "^2scoreboard_columns_set ^7campo1 campo2...\n"
+
+#: qcsrc/client/scoreboard.qc:244
+msgid "The following field names are recognized (case insensitive):\n"
+msgstr "I seguenti campi dei nomi sono riconosciuti (non case-sensitive):\n"
+
+#: qcsrc/client/scoreboard.qc:245
+msgid ""
+"You can use a ^3|^7 to start the right-aligned fields.\n"
+"\n"
+msgstr ""
+"Puoi usare un ^3|^7 per iniziare i campi allineati a destra.\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:247
+msgid "^3name^7 or ^3nick^7         Name of a player\n"
+msgstr "^3nome^7 o ^3nick^7         Nome di un giocatore\n"
+
+#: qcsrc/client/scoreboard.qc:248
+msgid "^3ping^7                     Ping time\n"
+msgstr "^3ping^7                     Tempo di ping\n"
+
+#: qcsrc/client/scoreboard.qc:249
+msgid "^3pl^7                       Packet loss\n"
+msgstr "^3pl^7                       Pacchetti persi\n"
+
+#: qcsrc/client/scoreboard.qc:250
+msgid "^3kills^7                    Number of kills\n"
+msgstr "^3uccisioni^7                    Number of kills\n"
+
+#: qcsrc/client/scoreboard.qc:251
+msgid "^3deaths^7                   Number of deaths\n"
+msgstr "^3morti^7                   Numero di morti\n"
+
+#: qcsrc/client/scoreboard.qc:252
+msgid "^3suicides^7                 Number of suicides\n"
+msgstr "^3suicidi^7                 Numero di suicidi\n"
+
+#: qcsrc/client/scoreboard.qc:253
+msgid "^3frags^7                    kills - suicides\n"
+msgstr "^3frag^7                    uccisioni - suicidi\n"
+
+#: qcsrc/client/scoreboard.qc:254
+msgid "^3kd^7                       The kill-death ratio\n"
+msgstr "^3kd^7                       Rapporto uccisioni-morti\n"
+
+#: qcsrc/client/scoreboard.qc:255
+msgid "^3caps^7                     How often a flag (CTF) or a key (KeyHunt) was captured\n"
+msgstr "^3caps^7                     Per quante volte una bandiera (CTF) o una chiave (KeyHunt) è stata catturata\n"
+
+#: qcsrc/client/scoreboard.qc:256
+msgid "^3pickups^7                  How often a flag (CTF) or a key (KeyHunt) or a ball (Keepaway) was picked up\n"
+msgstr "^3raccolti^7                  Per quante volte una bandiera (CTF) o una chiave (KeyHunt) o una palla (Keepaway) viene raccolta\n"
+
+#: qcsrc/client/scoreboard.qc:257
+msgid "^3fckills^7                  Number of flag carrier kills\n"
+msgstr "^3fckills^7                  Numero di uccisioni dei portatori di bandiere\n"
+
+#: qcsrc/client/scoreboard.qc:258
+msgid "^3returns^7                  Number of flag returns\n"
+msgstr "^3ritorni^7                  Numbero di ritorni della bandiera\n"
+
+#: qcsrc/client/scoreboard.qc:259
+msgid "^3drops^7                    Number of flag drops\n"
+msgstr "^3cadute^7                    Numero di bandiere cadute\n"
+
+#: qcsrc/client/scoreboard.qc:260
+msgid "^3lives^7                    Number of lives (LMS)\n"
+msgstr "^3vite^7                    Numero di vite (LMS)\n"
+
+#: qcsrc/client/scoreboard.qc:261
+msgid "^3rank^7                     Player rank\n"
+msgstr "^3posizione^7                     Posizione del giocatore\n"
+
+#: qcsrc/client/scoreboard.qc:262
+msgid "^3pushes^7                   Number of players pushed into void\n"
+msgstr "^3buttati^7                  Numero di giocatori buttati giù nel nulla\n"
+
+#: qcsrc/client/scoreboard.qc:263
+msgid "^3destroyed^7                Number of keys destroyed by pushing them into void\n"
+msgstr "^3distrutte^7                  Numero di chiavi distrutte buttandole giù nel nulla\n"
+
+#: qcsrc/client/scoreboard.qc:264
+msgid "^3kckills^7                  Number of keys carrier kills\n"
+msgstr "^3kckills^7                  Numero di uccisioni dei portatori di chiavi\n"
+
+#: qcsrc/client/scoreboard.qc:265
+msgid "^3losses^7                   Number of times a key was lost\n"
+msgstr "^3perdute^7                  Numero di volte che una chiave s'è persa\n"
+
+#: qcsrc/client/scoreboard.qc:266
+msgid "^3laps^7                     Number of laps finished (race/cts)\n"
+msgstr "^3giri^7                     Numero di giri completati (corsa/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:267
+msgid "^3time^7                     Total time raced (race/cts)\n"
+msgstr "^3tempo^7                     Tempo totale (corsa/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:268
+msgid "^3fastest^7                  Time of fastest lap (race/cts)\n"
+msgstr "^3giro più veloce^7                  Tempo del giro più veloce (corsa/cts)\n"
+
+#: qcsrc/client/scoreboard.qc:269
+msgid "^3ticks^7                    Number of ticks (DOM)\n"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:270
+msgid "^3takes^7                    Number of domination points taken (DOM)\n"
+msgstr "^3presi^7                    Numero di punti di dominio presi (DOM)\n"
+
+#: qcsrc/client/scoreboard.qc:271
+msgid "^3bckills^7                  Number of ball carrier kills\n"
+msgstr "^3bckills^7                  Numbero di uccisioni dei portatori di palle\n"
+
+#: qcsrc/client/scoreboard.qc:272
+msgid "^3bctime^7                   Total amount of time holding the ball in Keepaway\n"
+msgstr "^3bctime^7                   Totale ammontare del tempo in possesso della palla nel Keepaway\n"
+
+#: qcsrc/client/scoreboard.qc:273
+msgid ""
+"^3score^7                    Total score\n"
+"\n"
+msgstr ""
+"^3punti^7                    Punteggio totale\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:275
+msgid ""
+"Before a field you can put a + or - sign, then a comma separated list\n"
+"of game types, then a slash, to make the field show up only in these\n"
+"or in all but these game types. You can also specify 'all' as a\n"
+"field to show all fields available for the current game mode.\n"
+"\n"
+msgstr ""
+
+#: qcsrc/client/scoreboard.qc:280
+msgid ""
+"The special game type names 'teams' and 'noteams' can be used to\n"
+"include/exclude ALL teams/noteams game modes.\n"
+"\n"
+msgstr ""
+"I nomi speciali per il tipo di gioco 'teams' e 'noteams' possono essere usati\n"
+"per includere/escludere TUTTE le modalità con team/senza team.\n"
+"\n"
+
+#: qcsrc/client/scoreboard.qc:283
+msgid "Example: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"
+msgstr "Esempio: scoreboard_columns_set name ping pl | +ctf/field3 -dm/field4\n"
+
+#: qcsrc/client/scoreboard.qc:284
+msgid ""
+"will display name, ping and pl aligned to the left, and the fields\n"
+"right of the vertical bar aligned to the right.\n"
+msgstr ""
+"farà visualizzare nome, ping e pl allineati a sinistra, e i campi\n"
+"a destra della barra verticale allineata a destra.\n"
+
+#: qcsrc/client/scoreboard.qc:286
+msgid ""
+"'field3' will only be shown in CTF, and 'field4' will be shown in all\n"
+"other gamemodes except DM.\n"
+msgstr ""
+"'field3' sarà mostrato solo in CTF, e 'field4' sarà mostrato in tutte\n"
+"le altre modalità di gioco eccetto DM.\n"
+
+#: qcsrc/client/scoreboard.qc:432
+#: qcsrc/client/scoreboard.qc:447
+#: qcsrc/client/scoreboard.qc:457
+#: qcsrc/client/scoreboard.qc:466
+#: qcsrc/client/scoreboard.qc:475
+#, c-format
+msgid "fixed missing field '%s'\n"
+msgstr "riparato campo mancante '%s'\n"
+
+#: qcsrc/client/scoreboard.qc:515
+#: qcsrc/client/scoreboard.qc:522
+msgid "N/A"
+msgstr "N/A"
+
+#: qcsrc/client/scoreboard.qc:951
+#, c-format
+msgid "Accuracy stats (average %d%%)"
+msgstr "Stato precisione (media %d%%)"
+
+#: qcsrc/client/scoreboard.qc:1016
+#, c-format
+msgid "%d%%"
+msgstr "%d%%"
+
+#: qcsrc/client/scoreboard.qc:1076
+msgid "Rankings"
+msgstr "Posizioni"
+
+#: qcsrc/client/scoreboard.qc:1167
+#: qcsrc/client/scoreboard.qc:1169
+msgid "Scoreboard"
+msgstr "Scoreboard"
+
+#: qcsrc/client/scoreboard.qc:1210
+#, c-format
+msgid "Speed award: %d ^7(%s^7)"
+msgstr "Speed award: %d ^7(%s^7)"
+
+#: qcsrc/client/scoreboard.qc:1214
+#, c-format
+msgid "All-time fastest: %d ^7(%s^7)"
+msgstr "Tempo più veloce in assoluto: %d ^7(%s^7)"
+
+#: qcsrc/client/scoreboard.qc:1241
+#: qcsrc/client/teamplay.qc:55
+msgid "Spectators"
+msgstr "Spettatori"
+
+#: qcsrc/client/scoreboard.qc:1248
+#, c-format
+msgid "playing on ^2%s^7"
+msgstr "giocando in ^2%s^7"
+
+#: qcsrc/client/scoreboard.qc:1255
+#: qcsrc/client/scoreboard.qc:1260
+#, c-format
+msgid " for up to ^1%1.0f minutes^7"
+msgstr " fino a ^1%1.0f minuti^7"
+
+#: qcsrc/client/scoreboard.qc:1264
+#: qcsrc/client/scoreboard.qc:1283
+msgid " or"
+msgstr " o"
+
+#: qcsrc/client/scoreboard.qc:1267
+#: qcsrc/client/scoreboard.qc:1274
+#, c-format
+msgid " until ^3%s %s^7"
+msgstr " fino a ^3%s %s^7"
+
+#: qcsrc/client/scoreboard.qc:1268
+#: qcsrc/client/scoreboard.qc:1275
+#: qcsrc/client/scoreboard.qc:1287
+#: qcsrc/client/scoreboard.qc:1294
+msgid "SCO^points"
+msgstr "SCO^punti"
+
+#: qcsrc/client/scoreboard.qc:1269
+#: qcsrc/client/scoreboard.qc:1276
+#: qcsrc/client/scoreboard.qc:1288
+#: qcsrc/client/scoreboard.qc:1295
+msgid "SCO^is beaten"
+msgstr "SCO^è battuto"
+
+#: qcsrc/client/scoreboard.qc:1286
+#: qcsrc/client/scoreboard.qc:1293
+#, c-format
+msgid " until a lead of ^3%s %s^7"
+msgstr " fino a ^3%s %s^7"
+
+#: qcsrc/client/miscfunctions.qc:23
+msgid "^1Begin!"
+msgstr "^1Inizia!"
+
+#: qcsrc/client/miscfunctions.qc:34
+#, c-format
+msgid "^1Game starts in %d seconds"
+msgstr "^1Il gioco inizia tra %d secondi"
+
+#: qcsrc/client/miscfunctions.qc:113
+msgid "^1RED^7 flag"
+msgstr "^7Bandiera ^1ROSSA"
+
+#: qcsrc/client/miscfunctions.qc:118
+msgid "^4BLUE^7 flag"
+msgstr "^7Bandiera ^4BLU"
+
+#: qcsrc/client/miscfunctions.qc:126
+#, c-format
+msgid "You picked up the %s!"
+msgstr "Hai raccolto la %s!"
+
+#: qcsrc/client/miscfunctions.qc:130
+#, c-format
+msgid "You got the %s!"
+msgstr "Hai preso la %s!"
+
+#: qcsrc/client/miscfunctions.qc:283
+msgid "Trying to remove a team which is not in the teamlist!"
+msgstr "Tentando di rimuovere una squadra che non è nella lista!"
+
+#: qcsrc/client/ctf.qc:35
+msgid "----- Order Menu -----"
+msgstr "----- Ordine del menu -----"
+
+#: qcsrc/client/ctf.qc:36
+#, c-format
+msgid "Order: %s"
+msgstr "Ordine: %s"
+
+#: qcsrc/client/ctf.qc:37
+msgid "1) ^3previous page"
+msgstr "1) ^3pagina precedente"
+
+#: qcsrc/client/ctf.qc:38
+msgid "2) ^3next page"
+msgstr "2) ^3pagina successiva"
+
+#: qcsrc/client/ctf.qc:55
+#: qcsrc/client/ctf.qc:161
+msgid "ESC) Exit Menu"
+msgstr "ESC) Esci dal menu"
+
+#: qcsrc/client/ctf.qc:126
+#, c-format
+msgid "Couldn't find player %d\n"
+msgstr "Impossibile trovarre giocatore %d\n"
+
+#: qcsrc/client/ctf.qc:154
+msgid "----- Command Menu -----"
+msgstr "----- Menu dei comandi -----"
+
+#: qcsrc/client/ctf.qc:155
+msgid "Issue orders:"
+msgstr ""
+
+#: qcsrc/client/ctf.qc:156
+msgid " 1) Attack"
+msgstr " 1) Attacca"
+
+#: qcsrc/client/ctf.qc:158
+msgid " 2) Defend"
+msgstr " 2) Difendi"
+
+#: qcsrc/client/ctf.qc:160
+msgid "3) Resign from command."
+msgstr ""
+
+#: qcsrc/client/ctf.qc:212
+msgid "You're commander!"
+msgstr "Sei il comandante!"
+
+#: qcsrc/client/ctf.qc:215
+msgid "Awaiting orders..."
+msgstr "Attendendo ordini..."
+
+#: qcsrc/client/teamplay.qc:56
+msgid "Red Team"
+msgstr "Team Rosso"
+
+#: qcsrc/client/teamplay.qc:57
+msgid "Blue Team"
+msgstr "Team Blu"
+
+#: qcsrc/client/teamplay.qc:58
+msgid "Yellow Team"
+msgstr "Team Giallo"
+
+#: qcsrc/client/teamplay.qc:59
+msgid "Pink Team"
+msgstr "Team Rosa"
+
+#: qcsrc/server/w_fireball.qc:2
+msgid "Fireball"
+msgstr ""
+
+#: qcsrc/server/w_fireball.qc:417
+#, c-format
+msgid "%s forgot about some firemine"
+msgstr "%s s'è dimenticato di alcune mine infuocate"
+
+#: qcsrc/server/w_fireball.qc:419
+#: qcsrc/server/w_hlac.qc:240
+#, c-format
+msgid "%s should have used a smaller gun"
+msgstr "%s avrebbe dovuto usare un'arma più piccola"
+
+#: qcsrc/server/w_fireball.qc:426
+#, c-format
+msgid "%s tried to catch %s's firemine"
+msgstr "%s ha provato a catturare la mina infuocata di %s"
+
+#: qcsrc/server/w_fireball.qc:428
+#, c-format
+msgid "%s fatefully ignored %s's firemine"
+msgstr "%s ha fatalmente ignorato la mina infuocata di %s"
+
+#: qcsrc/server/w_fireball.qc:435
+#, c-format
+msgid "%s could not hide from %s's fireball"
+msgstr "%s non è riuscito a nascondersi dalla fireball di %s"
+
+#: qcsrc/server/w_fireball.qc:437
+#, c-format
+msgid "%s saw the pretty lights of %s's fireball"
+msgstr "%s ha visto le belle luci della fireball di %s"
+
+#: qcsrc/server/w_fireball.qc:440
+#, c-format
+msgid "%s got too close to %s's fireball"
+msgstr "%s s'è avvicinato troppo alla fireball di %s"
+
+#: qcsrc/server/w_fireball.qc:442
+#, c-format
+msgid "%s tasted %s's fireball"
+msgstr "%s ha assaggiato la fireball di %s"
+
+#: qcsrc/server/w_nex.qc:2
+msgid "Nex"
+msgstr "Nex"
+
+#: qcsrc/server/w_nex.qc:267
+#: qcsrc/server/w_shotgun.qc:203
+#: qcsrc/server/w_uzi.qc:317
+#: qcsrc/server/w_minstanex.qc:290
+#: qcsrc/server/w_porto.qc:296
+#: qcsrc/server/w_hook.qc:266
+#, c-format
+msgid "%s did the impossible"
+msgstr "%s fa l'impossibile"
+
+#: qcsrc/server/w_nex.qc:269
+#: qcsrc/server/w_minstanex.qc:292
+#, c-format
+msgid "%s has been vaporized by %s"
+msgstr "%s è stato vaporizzato da %s"
+
+#: qcsrc/server/w_laser.qc:2
+msgid "Laser"
+msgstr "Laser"
+
+#: qcsrc/server/w_laser.qc:305
+#, c-format
+msgid "%s lasered themself to hell"
+msgstr "%s si è \"laserato\" all'inferno"
+
+#: qcsrc/server/w_laser.qc:309
+#, c-format
+msgid "%s was cut in half by %s's gauntlet"
+msgstr "%s è stato tagliato a metà dal guanto di %s"
+
+#: qcsrc/server/w_laser.qc:311
+#, c-format
+msgid "%s was lasered to death by %s"
+msgstr "%s è stato \"laserato\" alla morte da %s"
+
+#: qcsrc/server/w_shotgun.qc:2
+msgid "Shotgun"
+msgstr ""
+
+#: qcsrc/server/w_shotgun.qc:207
+#, c-format
+msgid "%2$s ^7slapped %1$s ^7around a bit with a large ^2shotgun"
+msgstr "%2$s ^7ha schiaffeggiato %1$s ^7un pò con un grosso ^2shotgun"
+
+#: qcsrc/server/w_shotgun.qc:209
+#, c-format
+msgid "%s was gunned by %s"
+msgstr "%s è stato sparato da %s"
+
+#: qcsrc/server/w_uzi.qc:2
+msgid "Machine Gun"
+msgstr ""
+
+#: qcsrc/server/w_uzi.qc:321
+#: qcsrc/server/w_rifle.qc:254
+#, c-format
+msgid "%s was sniped by %s"
+msgstr "%s è stato fucilato da %s"
+
+#: qcsrc/server/w_uzi.qc:323
+#, c-format
+msgid "%s was riddled full of holes by %s"
+msgstr "%s è stato riempito di buchi da %s"
+
+#: qcsrc/server/w_rifle.qc:2
+msgid "Sniper Rifle"
+msgstr ""
+
+#: qcsrc/server/w_rifle.qc:229
+#, c-format
+msgid "%s shot themself automatically"
+msgstr "%s si è sparato da solo automaticamente"
+
+#: qcsrc/server/w_rifle.qc:231
+#, c-format
+msgid "%s sniped themself somehow"
+msgstr "%s si è fucilato da solo in qualche modo"
+
+#: qcsrc/server/w_rifle.qc:238
+#, c-format
+msgid "%s failed to hide from %s's bullet hail"
+msgstr "%s non è riuscito a nascondersi dalla raffica di proiettili di %s"
+
+#: qcsrc/server/w_rifle.qc:240
+#, c-format
+msgid "%s died in %s's bullet hail"
+msgstr "%s è morto nella raffica di proiettili di %s"
+
+#: qcsrc/server/w_rifle.qc:247
+#, c-format
+msgid "%s failed to hide from %s's rifle"
+msgstr "%s non è riuscito a nascondersi dal fucile di %s"
+
+#: qcsrc/server/w_rifle.qc:252
+#, c-format
+msgid "%s got hit in the head by %s"
+msgstr "%s ha preso un colpo in testa da %s"
+
+#: qcsrc/server/w_minstanex.qc:2
+msgid "MinstaNex"
+msgstr ""
+
+#: qcsrc/server/w_electro.qc:2
+msgid "Electro"
+msgstr ""
+
+#: qcsrc/server/w_electro.qc:571
+#, c-format
+msgid "%s could not remember where they put plasma"
+msgstr "%s non s'è ricordato dove loro avevano posto del plasma"
+
+#: qcsrc/server/w_electro.qc:573
+#, c-format
+msgid "%s played with plasma"
+msgstr "%s ha giocato col plasma"
+
+#: qcsrc/server/w_electro.qc:580
+#, c-format
+msgid "%s just noticed %s's blue ball"
+msgstr "%s ha appena notato la palla blu di %s"
+
+#: qcsrc/server/w_electro.qc:582
+#, c-format
+msgid "%s got in touch with %s's blue ball"
+msgstr "%s è entrato in contatto con la palla blu di %s"
+
+#: qcsrc/server/w_electro.qc:587
+#, c-format
+msgid "%s felt the electrifying air of %s's combo"
+msgstr "%s ha sentito l'aria elettrificata della combo di %s"
+
+#: qcsrc/server/w_electro.qc:589
+#, c-format
+msgid "%s got too close to %s's blue beam"
+msgstr "%s s'è avvicinato troppo al raggio blu di %s"
+
+#: qcsrc/server/w_electro.qc:591
+#, c-format
+msgid "%s was blasted by %s's blue beam"
+msgstr "%s è stato fatto saltare in aria dal raggio blu di %s"
+
+#: qcsrc/server/w_tuba.qc:2
+#, c-format
+msgid "@!#%'n Tuba"
+msgstr "@!#%'n Tuba"
+
+#: qcsrc/server/w_tuba.qc:263
+#, c-format
+msgid "%s hurt his own ears with the @!#%%'n Tuba"
+msgstr "%s s'è fatto male alle orecchie con la @!#%%'n Tuba"
+
+#: qcsrc/server/w_tuba.qc:267
+#, c-format
+msgid "%s died of %s's great playing on the @!#%%'n Tuba"
+msgstr "%s è morto nella gran esibizione di %s con la @!#%%'n Tuba"
+
+#: qcsrc/server/w_porto.qc:2
+msgid "Port-O-Launch"
+msgstr ""
+
+#: qcsrc/server/w_porto.qc:298
+#, c-format
+msgid "%s felt %s doing the impossible to him"
+msgstr "%s ha sentito %s fargli l'impossibile"
+
+#: qcsrc/server/w_hagar.qc:2
+msgid "Hagar"
+msgstr ""
+
+#: qcsrc/server/w_hagar.qc:209
+#: qcsrc/server/w_seeker.qc:655
+#, c-format
+msgid "%s played with tiny rockets"
+msgstr "%s ha giocato con piccoli razzi"
+
+#: qcsrc/server/w_hagar.qc:213
+#, c-format
+msgid "%s hoped %s's missiles wouldn't bounce"
+msgstr "%s ha sperato che il missile di %s non rimbalzasse"
+
+#: qcsrc/server/w_hagar.qc:215
+#: qcsrc/server/w_seeker.qc:661
+#, c-format
+msgid "%s was pummeled by %s"
+msgstr "%s è stato preso a pugni da %s"
+
+#: qcsrc/server/w_crylink.qc:2
+msgid "Crylink"
+msgstr "Crylink"
+
+#: qcsrc/server/w_crylink.qc:664
+#, c-format
+msgid "%s succeeded at self-destructing themself with the Crylink"
+msgstr "%s è riuscito ad autodistruggersi col Crylink"
+
+#: qcsrc/server/w_crylink.qc:669
+#, c-format
+msgid "%s could not hide from %s's Crylink"
+msgstr "%s non s'è potuto nascondere dal Crylink di %s"
+
+#: qcsrc/server/w_crylink.qc:671
+#, c-format
+msgid "%s was too close to %s's Crylink"
+msgstr "%s era troppo vicino al Crylink di %s"
+
+#: qcsrc/server/w_crylink.qc:673
+#, c-format
+msgid "%s took a close look at %s's Crylink"
+msgstr "%s ha visto da vicino il Crylink di %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:2
+msgid "Rocket Launcher"
+msgstr "Rocket Launcher"
+
+#: qcsrc/server/w_rocketlauncher.qc:500
+#: qcsrc/server/w_minelayer.qc:495
+#, c-format
+msgid "%s exploded"
+msgstr "%s è esploso"
+
+#: qcsrc/server/w_rocketlauncher.qc:504
+#, c-format
+msgid "%s got too close to %s's rocket"
+msgstr "%s s'è avvicinato troppo al razzo di %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:506
+#, c-format
+msgid "%s almost dodged %s's rocket"
+msgstr "%s ha quasi schivato il razzo di %s"
+
+#: qcsrc/server/w_rocketlauncher.qc:508
+#, c-format
+msgid "%s ate %s's rocket"
+msgstr "%s ha mangiato il razzo di %s"
+
+#: qcsrc/server/w_hook.qc:2
+msgid "Grappling Hook"
+msgstr ""
+
+#: qcsrc/server/w_hook.qc:268
+#, c-format
+msgid "%s has run into %s's gravity bomb"
+msgstr "%s è corso nella bomba di gravità di %s"
+
+#: qcsrc/server/w_minelayer.qc:2
+msgid "Mine Layer"
+msgstr ""
+
+#: qcsrc/server/w_minelayer.qc:499
+#, c-format
+msgid "%s got too close to %s's mine"
+msgstr "%s s'è avvicinato troppo alla mina di %s"
+
+#: qcsrc/server/w_minelayer.qc:501
+#, c-format
+msgid "%s almost dodged %s's mine"
+msgstr "%s ha quasi schivato la mina di %s"
+
+#: qcsrc/server/w_minelayer.qc:503
+#, c-format
+msgid "%s stepped on %s's mine"
+msgstr "%s è passato sopra la mina di %s"
+
+#: qcsrc/server/w_seeker.qc:2
+msgid "T.A.G. Seeker"
+msgstr ""
+
+#: qcsrc/server/w_seeker.qc:659
+#, c-format
+msgid "%s was tagged by %s"
+msgstr "%s è stato contrassegnato da %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:2
+msgid "Mortar"
+msgstr ""
+
+#: qcsrc/server/w_grenadelauncher.qc:378
+#, c-format
+msgid "%s tried out his own grenade"
+msgstr "%s ha provato da solo la propria granata"
+
+#: qcsrc/server/w_grenadelauncher.qc:380
+#, c-format
+msgid "%s detonated"
+msgstr "%s è detonato"
+
+#: qcsrc/server/w_grenadelauncher.qc:386
+#, c-format
+msgid "%s didn't see %s's grenade"
+msgstr "%s non ha visto la granata di %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:388
+#, c-format
+msgid "%s almost dodged %s's grenade"
+msgstr "%s ha quasi schivato la granata di %s"
+
+#: qcsrc/server/w_grenadelauncher.qc:390
+#, c-format
+msgid "%s ate %s's grenade"
+msgstr "%s ha mangiato la granata di %s"
+
+#: qcsrc/server/w_hlac.qc:2
+msgid "Heavy Laser Assault Cannon"
+msgstr ""
+
+#: qcsrc/server/w_hlac.qc:242
+#, c-format
+msgid "%s was cut down by %s"
+msgstr "%s è stato abbattuto da %s"
+
index 7672b15..edfa00f 100644 (file)
@@ -2038,8 +2038,8 @@ scr_conforcewhiledisconnected 0
 scr_infobar_height 12
 
 // DP cannot properly detect this, so rather turn off the detection
-r_texture_dds_load_dxt1_noalpha 1
-r_texture_dds_load_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it
+r_texture_dds_load_alphamode 2
+r_texture_dds_swdecode 1 // SW decode to quarter res if we want to load DDS but don't support the extension for it
 r_texture_dds_load_logfailure 0 // this engine feature SUCKS
 set vid_netwmfullscreen 0 // doesn't support non-native res
 
diff --git a/input-demoseeking.cfg b/input-demoseeking.cfg
new file mode 100644 (file)
index 0000000..87b4233
--- /dev/null
@@ -0,0 +1,32 @@
+alias playdemo "set _demo_name \"$1\""
+set _demo_name ""
+set _demo_seeking 0
+set _demo_good 0
+set _demo_time_increasing 0
+set _demo_time 0
+set _demo_time_step 0
+alias seekdemo "_seekdemo_1_$_demo_seeking $1"
+alias _seekdemo_1_0 "cl_cmd rpn time dup        \"$1\" add dup /_demo_time exch def le /_demo_time_increasing exch def; _seekdemo_2"
+alias _seekdemo_1_1 "cl_cmd rpn time _demo_time \"$1\" add dup /_demo_time exch def le /_demo_time_increasing exch def; _seekdemo_2"
+alias _seekdemo_2 "_demo_seeking 1; r_render 0; snd_startnonloopingsounds 0; _seekdemo_3_$_demo_time_increasing"
+alias _seekdemo_3_0 "playdemo \"$_demo_name\"; _seekdemo_4; defer 2 _seekdemo_9_2"
+alias _seekdemo_3_1 "_seekdemo_7"
+alias _seekdemo_4 "set _demo_good 0; cl_cmd rpn /_demo_good 1 def; _seekdemo_5"
+alias _seekdemo_5 "_seekdemo_6_$_demo_good"
+alias _seekdemo_6_0 "defer 0.001 _seekdemo_4"
+alias _seekdemo_6_1 "defer clear; _seekdemo_7"
+alias _seekdemo_7 "set _demo_time_step 2; cl_cmd rpn _demo_time time gt /_demo_time_step exch def; _seekdemo_8"
+alias _seekdemo_8 "_seekdemo_9_$_demo_time_step"
+alias _seekdemo_9_0 "slowmo 1; set _demo_seeking 0; r_render 1; snd_startnonloopingsounds 1"
+alias _seekdemo_9_1 "cl_cmd rpn _demo_time time sub 10 mul 1 add /slowmo exch def; defer 0.001 _seekdemo_7"
+alias _seekdemo_9_2 "slowmo 1; set _demo_seeking 0; r_render 1; snd_startnonloopingsounds 1; echo SEEK FAILED"
+bind , "seekdemo -5"
+bind . "seekdemo +5"
+bind m "seekdemo -30"
+bind - "seekdemo +30"
+bind / "seekdemo +30"
+
+// Usage:
+//   start a demo
+//   use ,. keys to seek -5/+5 seconds
+//   use m/ keys (left/right of ,.) to seek -30/+30 seconds
index 1016329..fbf8db8 100644 (file)
Binary files a/models/player/erebus.iqm and b/models/player/erebus.iqm differ
index 495b73d..b856898 100644 (file)
Binary files a/models/player/erebus_lod1.iqm and b/models/player/erebus_lod1.iqm differ
index 539ddfd..68cadb3 100644 (file)
Binary files a/models/player/erebus_lod2.iqm and b/models/player/erebus_lod2.iqm differ
index 4e2835a..533df54 100644 (file)
Binary files a/models/player/gak.iqm and b/models/player/gak.iqm differ
index 7fc4655..b1f48c3 100644 (file)
Binary files a/models/player/gak_lod1.iqm and b/models/player/gak_lod1.iqm differ
index 8c35e2c..001e2a0 100644 (file)
Binary files a/models/player/gak_lod2.iqm and b/models/player/gak_lod2.iqm differ
index 168f798..b77766e 100644 (file)
Binary files a/models/player/gakarmored.iqm and b/models/player/gakarmored.iqm differ
index 5d6d716..6e7c684 100644 (file)
Binary files a/models/player/gakarmored_lod1.iqm and b/models/player/gakarmored_lod1.iqm differ
index 36b6ed9..e259d14 100644 (file)
Binary files a/models/player/gakarmored_lod2.iqm and b/models/player/gakarmored_lod2.iqm differ
index 01864ca..5573243 100644 (file)
Binary files a/models/player/gakmasked.iqm and b/models/player/gakmasked.iqm differ
index e8355c0..07d81d9 100644 (file)
Binary files a/models/player/gakmasked_lod1.iqm and b/models/player/gakmasked_lod1.iqm differ
index 9ea8fd1..ebe8b41 100644 (file)
Binary files a/models/player/gakmasked_lod2.iqm and b/models/player/gakmasked_lod2.iqm differ
index 1486383..d0e40a4 100644 (file)
Binary files a/models/player/ignis.iqm and b/models/player/ignis.iqm differ
index 4217c35..c1a1c01 100644 (file)
Binary files a/models/player/ignis_lod1.iqm and b/models/player/ignis_lod1.iqm differ
index 7470df4..5e15baf 100644 (file)
Binary files a/models/player/ignis_lod2.iqm and b/models/player/ignis_lod2.iqm differ
index 81559e3..d412189 100644 (file)
Binary files a/models/player/ignishalfmasked.iqm and b/models/player/ignishalfmasked.iqm differ
index c3cd504..4e0063e 100644 (file)
Binary files a/models/player/ignishalfmasked_lod1.iqm and b/models/player/ignishalfmasked_lod1.iqm differ
index 13f23c3..2338dca 100644 (file)
Binary files a/models/player/ignishalfmasked_lod2.iqm and b/models/player/ignishalfmasked_lod2.iqm differ
index 1275313..5bebaa5 100644 (file)
Binary files a/models/player/ignismasked.iqm and b/models/player/ignismasked.iqm differ
index 848a369..1a852dd 100644 (file)
Binary files a/models/player/ignismasked_lod1.iqm and b/models/player/ignismasked_lod1.iqm differ
index ef4d93b..5ccc07b 100644 (file)
Binary files a/models/player/ignismasked_lod2.iqm and b/models/player/ignismasked_lod2.iqm differ
index 9d8d644..3052db5 100644 (file)
Binary files a/models/player/megaerebus.iqm and b/models/player/megaerebus.iqm differ
index 13b5f89..42fa19c 100644 (file)
Binary files a/models/player/megaerebus_lod1.iqm and b/models/player/megaerebus_lod1.iqm differ
index f732731..b4d4457 100644 (file)
Binary files a/models/player/megaerebus_lod2.iqm and b/models/player/megaerebus_lod2.iqm differ
index 88f2a7d..43546c1 100644 (file)
Binary files a/models/player/nyx.iqm and b/models/player/nyx.iqm differ
index a60e8b2..ccbc45a 100644 (file)
Binary files a/models/player/nyx_lod1.iqm and b/models/player/nyx_lod1.iqm differ
index 57b1773..e5f55cc 100644 (file)
Binary files a/models/player/nyx_lod2.iqm and b/models/player/nyx_lod2.iqm differ
index d3b7b2d..763a5f0 100644 (file)
Binary files a/models/player/pyria.iqm and b/models/player/pyria.iqm differ
index dbbeef8..367522f 100644 (file)
Binary files a/models/player/pyria_lod1.iqm and b/models/player/pyria_lod1.iqm differ
index 99fcc86..8e7a85c 100644 (file)
Binary files a/models/player/pyria_lod2.iqm and b/models/player/pyria_lod2.iqm differ
index 17f700e..3d43a8c 100644 (file)
Binary files a/models/player/seraphina.iqm and b/models/player/seraphina.iqm differ
index 692d24b..cb10ac8 100644 (file)
Binary files a/models/player/seraphina_lod1.iqm and b/models/player/seraphina_lod1.iqm differ
index 9624f0c..ad2aca8 100644 (file)
Binary files a/models/player/seraphina_lod2.iqm and b/models/player/seraphina_lod2.iqm differ
index 418aeb7..0c3751d 100644 (file)
Binary files a/models/player/seraphinamasked.iqm and b/models/player/seraphinamasked.iqm differ
index 11b115c..fd9c7f7 100644 (file)
Binary files a/models/player/seraphinamasked_lod1.iqm and b/models/player/seraphinamasked_lod1.iqm differ
index f4805a5..220de90 100644 (file)
Binary files a/models/player/seraphinamasked_lod2.iqm and b/models/player/seraphinamasked_lod2.iqm differ
index f876a03..9eb6f9c 100644 (file)
Binary files a/models/player/umbra.iqm and b/models/player/umbra.iqm differ
index e32fa7b..0686a73 100644 (file)
Binary files a/models/player/umbra_lod1.iqm and b/models/player/umbra_lod1.iqm differ
index e283e9c..fecc35b 100644 (file)
Binary files a/models/player/umbra_lod2.iqm and b/models/player/umbra_lod2.iqm differ
index c7da48e..6ab7548 100644 (file)
Binary files a/models/weapons/h_campingrifle.iqm and b/models/weapons/h_campingrifle.iqm differ
index 2aadd39..d8de464 100644 (file)
Binary files a/models/weapons/h_crylink.iqm and b/models/weapons/h_crylink.iqm differ
index 8ae8898..a726b33 100644 (file)
Binary files a/models/weapons/h_electro.iqm and b/models/weapons/h_electro.iqm differ
index 9fb4af5..40a6b06 100644 (file)
Binary files a/models/weapons/h_fireball.iqm and b/models/weapons/h_fireball.iqm differ
index 33fab12..5ddc278 100644 (file)
Binary files a/models/weapons/h_gl.iqm and b/models/weapons/h_gl.iqm differ
index e3a4d57..a51c6c4 100644 (file)
Binary files a/models/weapons/h_hagar.iqm and b/models/weapons/h_hagar.iqm differ
index 157a56b..3d73557 100644 (file)
Binary files a/models/weapons/h_hlac.iqm and b/models/weapons/h_hlac.iqm differ
index 0492d0a..003ebad 100644 (file)
Binary files a/models/weapons/h_hookgun.iqm and b/models/weapons/h_hookgun.iqm differ
index 0ca28e9..25fefca 100644 (file)
Binary files a/models/weapons/h_laser.iqm and b/models/weapons/h_laser.iqm differ
index 0c6ed41..0246e23 100644 (file)
Binary files a/models/weapons/h_minelayer.iqm and b/models/weapons/h_minelayer.iqm differ
index 77d6775..60d9af6 100644 (file)
Binary files a/models/weapons/h_minstanex.iqm and b/models/weapons/h_minstanex.iqm differ
index 8b52897..39857cf 100644 (file)
Binary files a/models/weapons/h_nex.iqm and b/models/weapons/h_nex.iqm differ
index 0c6ed41..0246e23 100644 (file)
Binary files a/models/weapons/h_porto.iqm and b/models/weapons/h_porto.iqm differ
index 21b7225..ffcb1a6 100644 (file)
Binary files a/models/weapons/h_rl.iqm and b/models/weapons/h_rl.iqm differ
index 9fb4af5..40a6b06 100644 (file)
Binary files a/models/weapons/h_seeker.iqm and b/models/weapons/h_seeker.iqm differ
index 89b121b..9c4a29d 100644 (file)
Binary files a/models/weapons/h_shotgun.iqm and b/models/weapons/h_shotgun.iqm differ
index 523bbb1..523ef99 100644 (file)
Binary files a/models/weapons/h_tuba.iqm and b/models/weapons/h_tuba.iqm differ
index 523bbb1..523ef99 100644 (file)
Binary files a/models/weapons/h_uzi.iqm and b/models/weapons/h_uzi.iqm differ
index 0cc1563..c9fbc87 100644 (file)
@@ -848,6 +848,13 @@ void Ent_Nagger()
 
        nags = ReadByte();
 
+       if(!(nags & 4))
+       {
+               if(vote_called_vote)
+                       strunzone(vote_called_vote);
+               vote_called_vote = string_null;
+       }
+
        if(nags & 128)
        {
                if(vote_called_vote)
index c39daf2..8c7f87c 100644 (file)
@@ -342,14 +342,13 @@ void CSQC_common_hud(void);
 void PostInit(void);
 void CSQC_Demo_Camera();
 float HUD_WouldDrawScoreboard();
-float view_set;
 float camera_mode;
 float reticle_type;
 string NextFrameCommand;
 void CSQC_SPIDER_HUD();
 void CSQC_RAPTOR_HUD();
 
-vector freeze_pmove_org, freeze_input_angles;
+vector freeze_org, freeze_ang;
 entity nightvision_noise, nightvision_noise2;
 
 float pickup_crosshair_time, pickup_crosshair_size;
@@ -408,29 +407,21 @@ void CSQC_UpdateView(float w, float h)
        ticrate = getstatf(STAT_MOVEVARS_TICRATE) * getstatf(STAT_MOVEVARS_TIMESCALE);
        vo = '0 0 1' * getstati(STAT_VIEWHEIGHT);
 
-       warpzone_fixview_origin = pmove_org + vo;
-       warpzone_fixview_cl_viewangles = input_angles;
-       warpzone_fixview_angles = view_angles;
-       WarpZone_FixView();
-       pmove_org = warpzone_fixview_origin - vo;
-       input_angles = warpzone_fixview_cl_viewangles;
-       view_angles = warpzone_fixview_angles;
-
        if(autocvar_cl_lockview || (autocvar__hud_configure && spectatee_status <= 0) || intermission > 1)
        {
-               pmove_org = freeze_pmove_org;
-               input_angles = view_angles = freeze_input_angles;
-               R_SetView(VF_ORIGIN, pmove_org + vo);
-               R_SetView(VF_ANGLES, view_angles);
-               //R_SetView(VF_CL_VIEWANGLES, input_angles);
+               R_SetView(VF_ORIGIN, freeze_org);
+               R_SetView(VF_ANGLES, freeze_ang);
+       }
+       else
+       {
+               freeze_org = R_SetView3fv(VF_ORIGIN);
+               freeze_ang = R_SetView3fv(VF_ANGLES);
        }
-       freeze_pmove_org = pmove_org;
-       freeze_input_angles = input_angles;
 
        // event chase camera
        if(autocvar_chase_active <= 0) // greater than 0 means it's enabled manually, and this code is skipped
        {
-               if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || (autocvar_cl_eventchase_intermission && intermission))
+               if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || intermission)
                {
                        // We must enable chase_active to get a third person view (weapon viewmodel hidden and own player model showing).
                        // Ideally, there should be another way to enable third person cameras, such as through R_SetView()
@@ -446,15 +437,16 @@ void CSQC_UpdateView(float w, float h)
                        vector eventchase_target_origin;
                        makevectors(view_angles);
                        // pass 1, used to check where the camera would go and obtain the trace_fraction
-                       eventchase_target_origin = pmove_org - v_forward * eventchase_current_distance;
+                       eventchase_target_origin = freeze_org - v_forward * eventchase_current_distance;
 
-                       traceline(pmove_org, eventchase_target_origin, MOVE_WORLDONLY, self);
+                       WarpZone_TraceLine(freeze_org, eventchase_target_origin, MOVE_WORLDONLY, self);
                        // pass 2, also multiplying view_forward with trace_fraction, to prevent the camera from going through walls
                        // The 0.1 subtraction is to not limit the camera precisely at the wall surface, as that allows the view to poke through
-                       eventchase_target_origin = pmove_org - v_forward * eventchase_current_distance * (trace_fraction - 0.1);
+                       eventchase_target_origin = freeze_org - v_forward * eventchase_current_distance * (trace_fraction - 0.1);
+                       WarpZone_TraceLine(freeze_org, eventchase_target_origin, MOVE_WORLDONLY, self);
 
-                       R_SetView(VF_ORIGIN, eventchase_target_origin);
-                       R_SetView(VF_ANGLES, view_angles);
+                       R_SetView(VF_ORIGIN, trace_endpos);
+                       R_SetView(VF_ANGLES, WarpZone_TransformVAngles(WarpZone_trace_transform, view_angles));
                }
                else if(autocvar_chase_active < 0) // time to disable chase_active if it was set by this code
                {
@@ -463,17 +455,16 @@ void CSQC_UpdateView(float w, float h)
                }
        }
 
+       WarpZone_FixView();
+       //WarpZone_FixPMove();
+
        // Render the Scene
-       if(!intermission || !view_set || (intermission && autocvar_cl_eventchase_intermission))
-       {
-               view_origin = pmove_org + vo;
-               view_angles = input_angles;
-               makevectors(view_angles);
-               view_forward = v_forward;
-               view_right = v_right;
-               view_up = v_up;
-               view_set = 1;
-       }
+       view_origin = R_SetView3fv(VF_ORIGIN);
+       view_angles = R_SetView3fv(VF_ANGLES);
+       makevectors(view_angles);
+       view_forward = v_forward;
+       view_right = v_right;
+       view_up = v_up;
 
 #ifdef BLURTEST
        if(time > blurtest_time0 && time < blurtest_time1)
@@ -497,7 +488,10 @@ void CSQC_UpdateView(float w, float h)
        TargetMusic_Advance();
        Fog_Force();
 
-       drawframetime = max(0.000001, time - drawtime);
+       if(drawtime == 0)
+               drawframetime = 0.01666667; // when we don't know fps yet, we assume 60fps
+       else
+               drawframetime = bound(0.000001, time - drawtime, 1);
        drawtime = time;
 
        // watch for gametype changes here...
@@ -558,6 +552,8 @@ void CSQC_UpdateView(float w, float h)
 
        // ALWAYS Clear Current Scene First
        R_ClearScene();
+       R_SetView(VF_ORIGIN, view_origin);
+       R_SetView(VF_ANGLES, view_angles);
 
        // FIXME engine bug? VF_SIZE and VF_MIN are not restored to sensible values by this
        R_SetView(VF_SIZE, vf_size);
@@ -773,7 +769,7 @@ void CSQC_UpdateView(float w, float h)
                        drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, liquidcolor_prev, contentavgalpha * liquidalpha_prev, DRAWFLAG_NORMAL);
        }
        
-       if(autocvar_hud_damage)
+       if(autocvar_hud_damage && !autocvar_chase_active)
        {
                splash_size_x = max(vid_conwidth, vid_conheight);
                splash_size_y = max(vid_conwidth, vid_conheight);
@@ -839,14 +835,6 @@ void CSQC_UpdateView(float w, float h)
                        drawpic(splash_pos, "gfx/blood", splash_size, stov(autocvar_hud_damage_color), bound(0, myhealth_flash_temp, 1) * autocvar_hud_damage, DRAWFLAG_NORMAL);
        }
 
-       // Draw the mouse cursor
-       // NOTE: drawpic must happen after R_RenderScene for some reason
-       //drawpic(getmousepos(), "gfx/cursor.tga", '11 14 0', '1 1 1', 1, 0);
-       //drawstring('50 50', ftos(game), '10 10 0', '1 1 1', 1, 0);
-       //self = edict_num(player_localnum);
-       //drawstring('0 0', vtos(pmove_org), '8 8 0', '1 1 1', 1, 0);
-       //drawstring('0 8', strcat("ORG: ", vtos(self.origin), " state: ", ftos(self.ctf_state), " HP: ", ftos(self.health)), '8 8 0', '1 1 1', 1, 0);
-       // as long as the ctf part isn't in, this is useless
        if(menu_visible)
                menu_show();
 
index b2a1602..bf9924a 100644 (file)
@@ -331,6 +331,5 @@ float autocvar_crosshair_color_by_health;
 float autocvar_cl_hitsound;
 float autocvar_cl_hitsound_antispam_time;
 var float autocvar_cl_eventchase_death = 1;
-var float autocvar_cl_eventchase_intermission = 1;
 var float autocvar_cl_eventchase_distance = 140;
 var float autocvar_cl_eventchase_speed = 1.3;
index 65fe92c..a737c82 100644 (file)
@@ -2034,9 +2034,9 @@ void HUD_Centerprint(string s1, string s2, float type, float msg)
        } else if(msg == MSG_KILL) {
                if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) {
                        if(gentle) {
-                               centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You went against %s, a team mate!"), s1)));
+                               centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1)));
                        } else {
-                               centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You fragged %s, a team mate!"), s1)));
+                               centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1)));
                        }
                } else if (type == KILL_FIRST_BLOOD) {
                        if(gentle) {
index 53903aa..fd252a5 100644 (file)
@@ -132,8 +132,8 @@ void XonoticEffectsSettingsTab_fill(entity me)
        me.TD(me, 1, 1.2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
        me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
                setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
-       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss")));
-               setDependentAND3(e, "vid_gl20", 1, 1, "r_glsl_deluxemapping", 1, 2, "mod_q3bsp_nolightmaps", 0, 0);
+       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); // FIXME move this box elsewhere, it has nothing to do with Q3BSP lightmaps
+               setDependent(e, "vid_gl20", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
                        setDependent(e, "vid_gl20", 1, 1);
index 8544276..0bcee6a 100644 (file)
@@ -469,8 +469,8 @@ float updateCompression()
        float have_dds, have_jpg, have_tga;
        float can_dds;
        have_dds = (fexists("dds/particles/particlefont.dds"));
-       have_dds = (fexists("particles/particlefont.jpg"));
-       have_dds = (fexists("particles/particlefont.tga"));
+       have_jpg = (fexists("particles/particlefont.jpg"));
+       have_tga = (fexists("particles/particlefont.tga"));
        can_dds = GL_Have_TextureCompression();
        if(have_dds && (have_jpg || have_tga))
        {
@@ -478,8 +478,12 @@ float updateCompression()
                // but ONLY if we actually support it!
                if(can_dds)
                {
+                       // these builds are meant to have GOOD quality, so let's not compress non-skinframes
                        cvar_set("gl_texturecompression", "0");
                        return 1;
+
+                       //cvar_set("gl_texturecompression", cvar_string("r_texture_dds_load"));
+                       //return 2;
                }
                else
                {
index a58ccb2..1e9b837 100644 (file)
@@ -257,7 +257,6 @@ void Arena_Warmup()
                        self.velocity = '0 0 0';
                        self.avelocity = '0 0 0';
                        self.movement = '0 0 0';
-                       //self.fixangle = TRUE;
                }
        }
 
index 18ec6f9..d942784 100644 (file)
@@ -2674,6 +2674,7 @@ void PlayerPreThink (void)
 
                //don't allow the player to turn around while game is paused!
                if(timeoutStatus == 2) {
+                       // FIXME turn this into CSQC stuff
                        self.v_angle = self.lastV_angle;
                        self.angles = self.lastV_angle;
                        self.fixangle = TRUE;
index ebfbc92..d2203c2 100644 (file)
@@ -780,7 +780,7 @@ void SV_PlayerPhysics()
                        self.angles_x = random() * 360;
                        self.angles_y = random() * 360;
                        // at least I'm not forcing retardedview by also assigning to angles_z
-                       self.fixangle = 1;
+                       self.fixangle = TRUE;
                }
        }
 
index 78c81c8..b18e1c8 100644 (file)
@@ -828,33 +828,36 @@ void CL_ExteriorWeaponentity_Think()
        else
                self.alpha = 1;
 
-       ang_x = bound(sv_pitch_min, self.owner.v_angle_x, sv_pitch_max);
-       ang_y = 0;
-       ang_z = 0;
-
-       if(sv_pitch_fixyaw) // workaround for stupid player models that don't aim forward
-       {
-               ang_y = self.owner.v_angle_y;
-               makevectors(ang);
-               var vector v = v_forward;
-               var float t = self.tag_entity.frame1time;
-               var float f = self.tag_entity.frame;
-               self.tag_entity.frame1time = time;
-               self.tag_entity.frame = self.tag_entity.anim_idle_x;
-               gettaginfo(self.tag_entity, self.tag_index);
-               self.tag_entity.frame1time = t;
-               self.tag_entity.frame = f;
-               // untransform v according to this coordinate space
-               vector w;
-               w_x = v_forward * v;
-               w_y = -v_right * v;
-               w_z = v_up * v;
-               self.angles = vectoangles(w);
-       }
-       else
+       if (!intermission_running)
        {
-               ang_x = -/* don't ask */ang_x;
-               self.angles = ang;
+               ang_x = bound(sv_pitch_min, self.owner.v_angle_x, sv_pitch_max);
+               ang_y = 0;
+               ang_z = 0;
+
+               if(sv_pitch_fixyaw) // workaround for stupid player models that don't aim forward
+               {
+                       ang_y = self.owner.v_angle_y;
+                       makevectors(ang);
+                       var vector v = v_forward;
+                       var float t = self.tag_entity.frame1time;
+                       var float f = self.tag_entity.frame;
+                       self.tag_entity.frame1time = time;
+                       self.tag_entity.frame = self.tag_entity.anim_idle_x;
+                       gettaginfo(self.tag_entity, self.tag_index);
+                       self.tag_entity.frame1time = t;
+                       self.tag_entity.frame = f;
+                       // untransform v according to this coordinate space
+                       vector w;
+                       w_x = v_forward * v;
+                       w_y = -v_right * v;
+                       w_z = v_up * v;
+                       self.angles = vectoangles(w);
+               }
+               else
+               {
+                       ang_x = -/* don't ask */ang_x;
+                       self.angles = ang;
+               }
        }
 
        self.glowmod = self.owner.weaponentity_glowmod;
@@ -1257,11 +1260,13 @@ void weapon_thinkf(float fr, float t, void() func)
        self.weapon_think = func;
        //dprint("next ", ftos(self.weapon_nextthink), "\n");
 
+       // The shoot animation looks TERRIBLE without animation blending! Yay for moonwalking while shooting!
+       //anim = self.anim_shoot;
        if (restartanim)
        if (t)
        if (!self.crouch) // shoot anim stands up, this looks bad
        {
-               local vector anim;
+               vector anim;
                if(self.weapon == WEP_SHOTGUN && self.BUTTON_ATCK2)
                {
                        anim = self.anim_melee;
index 40e0fcd..f61fecf 100644 (file)
@@ -25,6 +25,9 @@ float Nagger_SendEntity(entity to, float sendflags)
        if(sendflags & 128)
                nags |= 128;
 
+       if(!(nags & 4)) // no vote called? send no string
+               nags &~= 128;
+
        WriteByte(MSG_ENTITY, nags);
 
        if(nags & 128)
index d1e237d..147e88f 100644 (file)
@@ -546,6 +546,7 @@ void target_voicescript_clear(entity pl);
 .string target2;
 .string target3;
 .string target4;
+.float target_random;
 .float trigger_reverse;
 
 // Nexball 
index 22c8931..c311f37 100644 (file)
@@ -16,6 +16,9 @@ void spawnfunc_info_null (void)
 
 void setanim(entity e, vector anim, float looping, float override, float restart)
 {
+       if (!anim)
+               return; // no animation was given to us! We can't use this. 
+               
        if (anim_x == e.animstate_startframe)
        if (anim_y == e.animstate_numframes)
        if (anim_z == e.animstate_framerate)
index 6c0921b..3ad43b0 100644 (file)
@@ -88,6 +88,9 @@ void SUB_UseTargets()
        stemp = self;
        otemp = other;
 
+       if(stemp.target_random)
+               RandomSelection_Init();
+
        for(i = 0; i < 4; ++i)
        {
                switch(i)
@@ -103,15 +106,29 @@ void SUB_UseTargets()
                        for(t = world; (t = find(t, targetname, s)); )
                        if(t.use)
                        {
-                               //print(stemp.classname, " ", stemp.targetname, " -> ", t.classname, " ", t.targetname, "\n");
-                               self = t;
-                               other = stemp;
-                               activator = act;
-                               self.use();
+                               if(stemp.target_random)
+                               {
+                                       RandomSelection_Add(t, 0, string_null, 1, 0);
+                               }
+                               else
+                               {
+                                       self = t;
+                                       other = stemp;
+                                       activator = act;
+                                       self.use();
+                               }
                        }
                }
        }
 
+       if(stemp.target_random && RandomSelection_chosen_ent)
+       {
+               self = RandomSelection_chosen_ent;
+               other = stemp;
+               activator = act;
+               self.use();
+       }
+
        activator = act;
        self = stemp;
        other = otemp;
index 6ee4e11..12a15f4 100644 (file)
@@ -1529,8 +1529,6 @@ void FixIntermissionClient(entity e)
        string s;
        if(!e.autoscreenshot) // initial call
        {
-               e.angles = e.v_angle;
-               e.angles_x = -e.angles_x;
                e.autoscreenshot = time + 0.8;  // used for autoscreenshot
                e.health = -2342;
                // first intermission phase; voting phase has positive health (used to decide whether to send SVC_FINALE or not)
@@ -1553,11 +1551,6 @@ void FixIntermissionClient(entity e)
                        WriteByte(MSG_ONE, SVC_INTERMISSION);
                }
        }
-
-       //e.velocity = '0 0 0';
-       //e.fixangle = TRUE;
-
-       // TODO halt weapon animation
 }
 
 
index daec875..e3f9f3d 100644 (file)
@@ -665,7 +665,7 @@ void changematchtime(float delta, float mi, float ma)
                        return;
        }
 
-       cvar_set("timelimit", ftos(new));
+       cvar_set("timelimit", ftos(new / 60));
 }
 
 void GameCommand(string command)
index fbc8032..bad3eaf 100644 (file)
@@ -478,6 +478,8 @@ void VoteReset() {
        votecalled = FALSE;
        votecalledmaster = FALSE;
        votefinished = 0;
+       votecalledvote = string_null;
+       votecalledvote_display = string_null;
 }
 
 void VoteAccept() {
index 017a41a..02ba362 100644 (file)
@@ -30,8 +30,9 @@ void W_Grenade_Explode2 (void)
        if(other.takedamage == DAMAGE_AIM)
                if(other.classname == "player")
                        if(IsDifferentTeam(self.owner, other))
-                               if(IsFlying(other))
-                                       AnnounceTo(self.owner, "airshot");
+                               if(other.deadflag == DEAD_NO)
+                                       if(IsFlying(other))
+                                               AnnounceTo(self.owner, "airshot");
 
        self.event_damage = SUB_Null;
        self.takedamage = DAMAGE_NO;
index 14c6506..22d43e1 100644 (file)
@@ -30,6 +30,8 @@ void W_Mine_Stick ()
        setmodel(newmine, "models/mine.md3");
        newmine.angles = vectoangles(-trace_plane_normal); // face against the surface
 
+       newmine.oldvelocity = self.velocity;
+
        newmine.takedamage = self.takedamage;
        newmine.damageforcescale = self.damageforcescale;
        newmine.health = self.health;
@@ -56,8 +58,9 @@ void W_Mine_Explode ()
        if(other.takedamage == DAMAGE_AIM)
                if(other.classname == "player")
                        if(IsDifferentTeam(self.owner, other))
-                               if(IsFlying(other))
-                                       AnnounceTo(self.owner, "airshot");
+                               if(other.deadflag == DEAD_NO)
+                                       if(IsFlying(other))
+                                               AnnounceTo(self.owner, "airshot");
 
        self.event_damage = SUB_Null;
        self.takedamage = DAMAGE_NO;
@@ -86,6 +89,9 @@ void W_Mine_DoRemoteExplode ()
        self.event_damage = SUB_Null;
        self.takedamage = DAMAGE_NO;
 
+       if(self.movetype == MOVETYPE_NONE)
+               self.velocity = self.oldvelocity;
+
        RadiusDamage (self, self.owner, autocvar_g_balance_minelayer_remote_damage, autocvar_g_balance_minelayer_remote_edgedamage, autocvar_g_balance_minelayer_remote_radius, world, autocvar_g_balance_minelayer_remote_force, self.projectiledeathtype | HITTYPE_BOUNCE, world);
 
        if (self.owner.weapon == WEP_MINE_LAYER)
index dfd2c3f..23ebee6 100644 (file)
@@ -21,8 +21,9 @@ void W_Rocket_Explode ()
        if(other.takedamage == DAMAGE_AIM)
                if(other.classname == "player")
                        if(IsDifferentTeam(self.owner, other))
-                               if(IsFlying(other))
-                                       AnnounceTo(self.owner, "airshot");
+                               if(other.deadflag == DEAD_NO)
+                                       if(IsFlying(other))
+                                               AnnounceTo(self.owner, "airshot");
 
        self.event_damage = SUB_Null;
        self.takedamage = DAMAGE_NO;
index 4b36b46..d0e7974 100644 (file)
@@ -1,7 +1,11 @@
 void WarpZone_Fade_PreDraw()
 {
        if(self.warpzone_fadestart)
-               self.alpha = bound(0, (self.warpzone_fadeend - vlen(view_origin - self.origin - 0.5 * (self.mins + self.maxs))) / (self.warpzone_fadeend - self.warpzone_fadestart), 1);
+       {
+               vector org;
+               org = R_SetView3fv(VF_ORIGIN);
+               self.alpha = bound(0, (self.warpzone_fadeend - vlen(org - self.origin - 0.5 * (self.mins + self.maxs))) / (self.warpzone_fadeend - self.warpzone_fadestart), 1);
+       }
        else
                self.alpha = 1;
        //print(sprintf("%v <-> %v\n", view_origin, self.origin + 0.5 * (self.mins + self.maxs)));
@@ -160,29 +164,28 @@ void WarpZone_Teleported_Read(float isnew)
 
 float warpzone_fixingview;
 float warpzone_fixingview_drawexteriormodel;
-//float warpzone_fixingview_sidespeed;
-//float warpzone_fixingview_forwardspeed;
-void WarpZone_Inside()
-{
-       if(warpzone_fixingview)
-               return;
-       warpzone_fixingview = 1;
-       warpzone_fixingview_drawexteriormodel = cvar("r_drawexteriormodel");
-       //warpzone_fixingview_sidespeed = cvar("cl_sidespeed");
-       //warpzone_fixingview_forwardspeed = cvar("cl_forwardspeed");
-       cvar_set("r_drawexteriormodel", "0");
-       //cvar_set("cl_sidespeed", ftos(warpzone_fixingview_sidespeed / 100)); // just keep a bit of it in case player gets stuck
-       //cvar_set("cl_forwardspeed", ftos(warpzone_fixingview_forwardspeed / 100)); // just keep a bit of it in case player gets stuck
-}
+float autocvar_chase_active;
 
-void WarpZone_Outside()
+void WarpZone_View_Outside()
 {
        if(!warpzone_fixingview)
                return;
        warpzone_fixingview = 0;
        cvar_set("r_drawexteriormodel", ftos(warpzone_fixingview_drawexteriormodel));
-       //cvar_set("cl_sidespeed", ftos(warpzone_fixingview_sidespeed));
-       //cvar_set("cl_forwardspeed", ftos(warpzone_fixingview_forwardspeed));
+}
+
+void WarpZone_View_Inside()
+{
+       if(autocvar_chase_active)
+       {
+               WarpZone_View_Outside();
+               return;
+       }
+       if(warpzone_fixingview)
+               return;
+       warpzone_fixingview = 1;
+       warpzone_fixingview_drawexteriormodel = cvar("r_drawexteriormodel");
+       cvar_set("r_drawexteriormodel", "0");
 }
 
 vector WarpZone_FixNearClip(vector o, vector c0, vector c1, vector c2, vector c3)
@@ -217,88 +220,64 @@ vector WarpZone_FixNearClip(vector o, vector c0, vector c1, vector c2, vector c3
        return '0 0 0';
 }
 
-float warpzone_saved;
-vector warpzone_saved_origin;
-vector warpzone_saved_angles;
-vector warpzone_saved_cl_viewangles;
+void WarpZone_FixPMove()
+{
+       entity e;
+       e = WarpZone_Find(pmove_org, pmove_org);
+       if(e)
+       {
+               pmove_org = WarpZone_TransformOrigin(e, pmove_org);
+               input_angles = WarpZone_TransformVAngles(e, input_angles);
+       }
+}
+
 #ifndef KEEP_ROLL
 var float autocvar_cl_rollkillspeed = 10;
 #endif
 void WarpZone_FixView()
 {
-       float f;
-       vector o;
        entity e;
-       vector corner0, corner1, corner2, corner3, nearclip;
-
-       warpzone_saved = 0;
-       warpzone_saved_origin = warpzone_fixview_origin;
-       warpzone_saved_angles = warpzone_fixview_angles;
-       warpzone_saved_cl_viewangles = warpzone_fixview_cl_viewangles;
-
-       nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
-       corner0 = cs_unproject('0 0 0' + nearclip);
-       corner1 = cs_unproject('1 0 0' * cvar("vid_conwidth") + nearclip);
-       corner2 = cs_unproject('0 1 0' * cvar("vid_conheight") + nearclip);
-       corner3 = cs_unproject('1 0 0' * cvar("vid_conwidth") + '0 1 0' * cvar("vid_conheight") + nearclip);
+       vector org, ang, nearclip, corner0, corner1, corner2, corner3, o;
+       float f;
 
-#ifndef KEEP_ROLL
-       if(warpzone_fixview_angles_z != 0 || warpzone_fixview_cl_viewangles_z != 0)
-       {
-               if(autocvar_cl_rollkillspeed)
-                       f = max(0, (1 - frametime * autocvar_cl_rollkillspeed));
-               else
-                       f = 0;
-               warpzone_fixview_angles_z *= f;
-               warpzone_fixview_cl_viewangles_z *= f;
-               warpzone_saved_angles_z *= f; // PERMANENTLY apply that change!
-               warpzone_saved_cl_viewangles_z *= f; // PERMANENTLY apply that change!
-               warpzone_saved = 2;
-               R_SetView(VF_CL_VIEWANGLES_Z, warpzone_fixview_angles_z);
-       }
-#endif
+       org = R_SetView3fv(VF_ORIGIN);
+       ang = R_SetView3fv(VF_ANGLES);
 
-       e = WarpZone_Find(warpzone_fixview_origin, warpzone_fixview_origin);
+       e = WarpZone_Find(org, org);
        if(e)
        {
-               warpzone_saved = 1;
-               warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin);
-               corner0 = WarpZone_TransformOrigin(e, corner0);
-               corner1 = WarpZone_TransformOrigin(e, corner1);
-               corner2 = WarpZone_TransformOrigin(e, corner2);
-               corner3 = WarpZone_TransformOrigin(e, corner3);
-               warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles);
-               warpzone_fixview_cl_viewangles = WarpZone_TransformVAngles(e, warpzone_fixview_cl_viewangles);
-               WarpZone_Inside();
+               org = WarpZone_TransformOrigin(e, org);
+               ang = WarpZone_TransformVAngles(e, ang);
+               WarpZone_View_Inside();
        }
        else
-               WarpZone_Outside();
+               WarpZone_View_Outside();
 
-       // if we are near any warpzone planes - MOVE AWAY (work around nearclip)
-       o = WarpZone_FixNearClip(warpzone_fixview_origin, corner0, corner1, corner2, corner3);
-       if(o != '0 0 0')
-       {
-               warpzone_saved = 1;
-               warpzone_fixview_origin += o;
-       }
+#ifndef KEEP_ROLL
+       float rick;
+       if(autocvar_cl_rollkillspeed)
+               f = max(0, (1 - frametime * autocvar_cl_rollkillspeed));
+       else
+               f = 0;
 
-       if(warpzone_saved == 1)
-       {
-               R_SetView(VF_ORIGIN, warpzone_fixview_origin);
-               R_SetView(VF_ANGLES, warpzone_fixview_cl_viewangles);
-       }
-}
-void WarpZone_UnFixView()
-{
-       if(warpzone_saved)
-       {
-               warpzone_fixview_origin = warpzone_saved_origin;
-               warpzone_fixview_angles = warpzone_saved_angles;
-               warpzone_fixview_cl_viewangles = warpzone_saved_cl_viewangles;
-               R_SetView(VF_ORIGIN, warpzone_fixview_origin);
-               R_SetView(VF_ANGLES, warpzone_fixview_angles);
-               R_SetView(VF_CL_VIEWANGLES, warpzone_fixview_cl_viewangles);
-       }
+       rick = R_SetView(VF_CL_VIEWANGLES_Z);
+       rick *= f;
+       R_SetView(VF_CL_VIEWANGLES_Z, rick);
+
+       ang_z *= f;
+#endif
+
+       R_SetView(VF_ORIGIN, org);
+       R_SetView(VF_ANGLES, ang);
+
+       nearclip = '0 0 1' * (cvar("r_nearclip") * 1.125);
+       corner0 = cs_unproject('0 0 0' + nearclip);
+       corner1 = cs_unproject('1 0 0' * cvar("vid_conwidth") + nearclip);
+       corner2 = cs_unproject('0 1 0' * cvar("vid_conheight") + nearclip);
+       corner3 = cs_unproject('1 0 0' * cvar("vid_conwidth") + '0 1 0' * cvar("vid_conheight") + nearclip);
+       o = WarpZone_FixNearClip(org, corner0, corner1, corner2, corner3);
+       if(o != '0 0 0')
+               R_SetView(VF_ORIGIN, org + o);
 }
 
 void WarpZone_Init()
@@ -307,5 +286,5 @@ void WarpZone_Init()
 
 void WarpZone_Shutdown()
 {
-       WarpZone_Outside();
+       WarpZone_View_Outside();
 }
index d5b3ac2..446c917 100644 (file)
@@ -2,11 +2,8 @@ void WarpZone_Read(float bIsNewEntity);
 void WarpZone_Camera_Read(float bIsNewEntity);
 void WarpZone_Teleported_Read(float bIsNewEntity);
 
-vector warpzone_fixview_origin;
-vector warpzone_fixview_angles;
-vector warpzone_fixview_cl_viewangles;
-void WarpZone_FixView(); // this saves the previous values
-void WarpZone_UnFixView(); // and restores them
+void WarpZone_FixPMove();
+void WarpZone_FixView();
 
 void WarpZone_Init();
 void WarpZone_Shutdown();