-Fri May 26 07:23:54 CEST 2017
+Sun Jun 4 07:23:50 CEST 2017
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
// }}}
// {{{ #21: Heavy Machine Gun
set g_balance_hmg_ammo 1
-set g_balance_hmg_damage 10
-set g_balance_hmg_force 5
+set g_balance_hmg_damage 30
+set g_balance_hmg_force 10
set g_balance_hmg_refire 0.05
set g_balance_hmg_reload_ammo 120
set g_balance_hmg_reload_time 1
set g_balance_hmg_solidpenetration 32
-set g_balance_hmg_spread_add 0.01
-set g_balance_hmg_spread_max 0.05
-set g_balance_hmg_spread_min 0.02
+set g_balance_hmg_spread_add 0.005
+set g_balance_hmg_spread_max 0.06
+set g_balance_hmg_spread_min 0.01
set g_balance_hmg_switchdelay_drop 0.2
set g_balance_hmg_switchdelay_raise 0.2
set g_balance_hmg_weaponreplace ""
set g_balance_rpc_refire 1
set g_balance_rpc_reload_ammo 10
set g_balance_rpc_reload_time 1
-set g_balance_rpc_speed 1250
+set g_balance_rpc_speed 2500
set g_balance_rpc_speedaccel 5000
set g_balance_rpc_switchdelay_drop 0.2
set g_balance_rpc_switchdelay_raise 0.2
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-30 07:23+0200\n"
-"PO-Revision-Date: 2017-05-16 11:11+0000\n"
+"PO-Revision-Date: 2017-06-01 21:16+0000\n"
"Last-Translator: GunChleoc\n"
"Language-Team: Gaelic, Scottish (http://www.transifex.com/team-xonotic/"
"xonotic/language/gd/)\n"
#: qcsrc/client/hud/panel/scoreboard.qc:1600
#, c-format
msgid "Spectators"
-msgstr ""
+msgstr "Amhairc"
#: qcsrc/client/hud/panel/scoreboard.qc:1615
#, c-format
msgid "playing ^3%s^7 on ^2%s^7"
-msgstr ""
+msgstr "a' cluich ^3%s^7 air ^2%s^7"
#: qcsrc/client/hud/panel/scoreboard.qc:1622
#: qcsrc/client/hud/panel/scoreboard.qc:1627
#, c-format
msgid " for up to ^1%1.0f minutes^7"
-msgstr ""
+msgstr " fad suas ri ^1%1.0f mionaid(ean)^7"
#: qcsrc/client/hud/panel/scoreboard.qc:1631
#: qcsrc/client/hud/panel/scoreboard.qc:1650
msgid " or"
-msgstr ""
+msgstr "no"
#: qcsrc/client/hud/panel/scoreboard.qc:1634
#: qcsrc/client/hud/panel/scoreboard.qc:1641
#, c-format
msgid " until ^3%s %s^7"
-msgstr ""
+msgstr " gu ruige ^3%s %s^7"
#: qcsrc/client/hud/panel/scoreboard.qc:1635
#: qcsrc/client/hud/panel/scoreboard.qc:1642
#: qcsrc/client/hud/panel/scoreboard.qc:1654
#: qcsrc/client/hud/panel/scoreboard.qc:1661
msgid "SCO^points"
-msgstr ""
+msgstr "puingean"
#: qcsrc/client/hud/panel/scoreboard.qc:1636
#: qcsrc/client/hud/panel/scoreboard.qc:1643
#: qcsrc/client/hud/panel/weapons.qc:530
msgid "Out of ammo"
-msgstr ""
+msgstr "Dh'fhalbh an connadh ort"
#: qcsrc/client/hud/panel/weapons.qc:534
msgid "Don't have"
#: qcsrc/client/mapvoting.qc:49
msgid " (1 vote)"
-msgstr ""
+msgstr " (Bhòtaichean: 1)"
#: qcsrc/client/mapvoting.qc:51
#, c-format
msgid " (%d votes)"
-msgstr ""
+msgstr " (Bhòtaichean: %d)"
#: qcsrc/client/mapvoting.qc:271
msgid "Don't care"
#: qcsrc/common/minigames/cl_minigames_hud.qc:331
#: qcsrc/menu/xonotic/dialog_quit.qh:6
msgid "Quit"
-msgstr ""
+msgstr "Fàg an-seo"
#: qcsrc/common/minigames/cl_minigames_hud.qc:336
msgid "Invite"
-msgstr ""
+msgstr "Thoir cuireadh"
#: qcsrc/common/minigames/cl_minigames_hud.qc:378
msgid "Current Game"
-msgstr ""
+msgstr "An geama làithreach"
#: qcsrc/common/minigames/cl_minigames_hud.qc:403
msgid "Exit Menu"
#: qcsrc/common/minigames/cl_minigames_hud.qc:415
#: qcsrc/menu/xonotic/dialog_multiplayer.qc:16
msgid "Create"
-msgstr ""
+msgstr "Cruthaich"
#: qcsrc/common/minigames/cl_minigames_hud.qc:418
msgid "Join"
-msgstr ""
+msgstr "Gabh pàirt ann"
#: qcsrc/common/minigames/cl_minigames_hud.qc:489
msgid "Minigames"
-msgstr ""
+msgstr "Meanbh-gheamannan"
#: qcsrc/common/minigames/minigame/bd.qc:1168
msgid "Better luck next time!"
-msgstr ""
+msgstr "Gun rachadh nas fhearr leat an t-ath-thuras!"
#: qcsrc/common/minigames/minigame/bd.qc:1172
msgid "Tubular! Press \"Next Level\" to continue!"
#: qcsrc/common/minigames/minigame/bd.qc:1404
msgid "Next Level"
-msgstr ""
+msgstr "An t-ath-leibheil"
#: qcsrc/common/minigames/minigame/bd.qc:1405
msgid "Restart"
-msgstr ""
+msgstr "Ath-thòisich"
#: qcsrc/common/minigames/minigame/bd.qc:1406
msgid "Editor"
-msgstr ""
+msgstr "Deasaiche"
#: qcsrc/common/minigames/minigame/bd.qc:1407
#: qcsrc/menu/xonotic/dialog_settings_input_userbind.qc:37
msgid "Save"
-msgstr ""
+msgstr "Sàbhail"
#: qcsrc/common/minigames/minigame/c4.qc:373
#: qcsrc/common/minigames/minigame/pp.qc:438
#: qcsrc/common/minigames/minigame/ttt.qc:319
msgid "Draw"
-msgstr ""
+msgstr "Co-ionnann"
#: qcsrc/common/minigames/minigame/c4.qc:378
#: qcsrc/common/minigames/minigame/nmm.qc:601
msgid "You lost the game!"
-msgstr ""
+msgstr "Chaill thu an geama!"
#: qcsrc/common/minigames/minigame/c4.qc:379
#: qcsrc/common/minigames/minigame/nmm.qc:602
msgid "You win!"
-msgstr ""
+msgstr "Bhuannaich thu!"
#: qcsrc/common/minigames/minigame/c4.qc:383
#: qcsrc/common/minigames/minigame/nmm.qc:606
#: qcsrc/common/minigames/minigame/pp.qc:455
#: qcsrc/common/minigames/minigame/ttt.qc:336
msgid "Wait for your opponent to make their move"
-msgstr ""
+msgstr "Fuirich gus an gluais an nàmhaid"
#: qcsrc/common/minigames/minigame/c4.qc:386
#: qcsrc/common/minigames/minigame/nmm.qc:608
#: qcsrc/common/minigames/minigame/pp.qc:458
#: qcsrc/common/minigames/minigame/ttt.qc:339
msgid "Click on the game board to place your piece"
-msgstr ""
+msgstr "Briog air bòrd a' gheama gus am fear agad a chur ann"
#: qcsrc/common/minigames/minigame/nmm.qc:610
msgid ""
"You can select one of your pieces to move it in one of the surrounding places"
msgstr ""
+"'S urrainn dhut fear a thaghadh gus a ghluasad sna h-ionadan timcheall air"
#: qcsrc/common/minigames/minigame/nmm.qc:612
msgid "You can select one of your pieces to move it anywhere on the board"
msgstr ""
+"'S urrainn dhut fear a thaghadh gus a ghluasad àite sam bith air a' bhòrd"
#: qcsrc/common/minigames/minigame/nmm.qc:614
msgid "You can take one of the opponent's pieces"
-msgstr ""
+msgstr "'S urrainn dhut fear an nàmhad a ghabhail"
#: qcsrc/common/minigames/minigame/pong.qc:570
#: qcsrc/common/minigames/minigame/ttt.qc:299
msgid "AI"
-msgstr ""
+msgstr "IF"
#: qcsrc/common/minigames/minigame/pong.qc:587
msgid "Press ^1Start Match^7 to start the match with the current players"
msgstr ""
+"Brùth air ^1Tòisich maidse^7 gus a' mhaidse a thòiseachadh leis na "
+"cluicheadairean làithreach"
#: qcsrc/common/minigames/minigame/pong.qc:651
msgid "Start Match"
-msgstr ""
+msgstr "Tòisich maidse"
#: qcsrc/common/minigames/minigame/pong.qc:652
msgid "Add AI player"
-msgstr ""
+msgstr "Cuir cluicheadair IF ris"
#: qcsrc/common/minigames/minigame/pong.qc:653
msgid "Remove AI player"
-msgstr ""
+msgstr "Thoir cluicheadair IF air falbh"
#: qcsrc/common/minigames/minigame/pp.qc:443
#: qcsrc/common/minigames/minigame/ttt.qc:324
#: qcsrc/common/minigames/minigame/ps.qc:478
#, c-format
msgid "Pieces left: %s"
-msgstr ""
+msgstr "Fir air am fàgail: %s"
#: qcsrc/common/minigames/minigame/ps.qc:488
msgid "No more valid moves"
-msgstr ""
+msgstr "Chan eil gluasad dligheach ann tuilleadh"
#: qcsrc/common/minigames/minigame/ps.qc:491
msgid "Well done, you win!"
-msgstr ""
+msgstr "Sin thu fhèin, bhuannaich thu!"
#: qcsrc/common/minigames/minigame/ps.qc:494
msgid "Jump a piece over another to capture it"
-msgstr ""
+msgstr "Gearr leum le fear thar fir eile gus a ghabhail"
#: qcsrc/common/minigames/minigame/ttt.qc:666
msgid "Single Player"
-msgstr ""
+msgstr "Aon-chluicheadair"
#: qcsrc/common/monsters/monster/mage.qh:17
#: qcsrc/menu/xonotic/dialog_monstertools.qc:18
#: qcsrc/common/mutators/mutator/buffs/all.inc:15
msgid "Ammo"
-msgstr ""
+msgstr "Connadh"
#: qcsrc/common/mutators/mutator/buffs/all.inc:24
msgid "Resistance"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:6
msgid "DANGER"
-msgstr ""
+msgstr "CUNNART"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:8
msgid "Frozen!"
-msgstr ""
+msgstr "Reòite!"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:10
msgid "Item"
-msgstr ""
+msgstr "Nì"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:12
msgid "Checkpoint"
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-30 07:23+0200\n"
-"PO-Revision-Date: 2017-03-31 17:53+0000\n"
+"PO-Revision-Date: 2017-06-04 00:29+0000\n"
"Last-Translator: Antonio <piuntn@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/team-xonotic/xonotic/"
"language/it/)\n"
#: qcsrc/client/hud/panel/quickmenu.qc:804
msgid "QMCMD^killed flagcarrier (l:%y^7)"
-msgstr "ucciso portatore bandiera (l:%y^7)"
+msgstr "ucciso portabandiera (l:%y^7)"
#: qcsrc/client/hud/panel/quickmenu.qc:805
#, c-format
#: qcsrc/client/hud/panel/scoreboard.qc:319
msgid "^3fckills^7 Number of flag carrier kills\n"
-msgstr ""
-"^3fckills^7 Numero di uccisioni dei portatori di bandiera\n"
+msgstr "^3fckills^7 Numero di uccisioni dei portabandiera\n"
#: qcsrc/client/hud/panel/scoreboard.qc:320
msgid "^3returns^7 Number of flag returns\n"
#: qcsrc/client/hud/panel/scoreboard.qc:326
msgid "^3kckills^7 Number of keys carrier kills\n"
-msgstr ""
-"^3kckills^7 Numero di uccisioni di portatori di chiavi\n"
+msgstr "^3kckills^7 Numero di uccisioni di portachiavi\n"
#: qcsrc/client/hud/panel/scoreboard.qc:327
msgid "^3losses^7 Number of times a key was lost\n"
#: qcsrc/client/hud/panel/scoreboard.qc:333
msgid "^3bckills^7 Number of ball carrier kills\n"
-msgstr ""
-"^3bckills^7 Numbero di uccisioni di portatori di palla\n"
+msgstr "^3bckills^7 Numbero di uccisioni di portapalla\n"
#: qcsrc/client/hud/panel/scoreboard.qc:334
msgid ""
#: qcsrc/common/mutators/mutator/waypoints/all.inc:21
msgid "Flag carrier"
-msgstr "Portatore bandiera"
+msgstr "Portabandiera"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:22
msgid "Enemy carrier"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:23
msgid "Dropped flag"
-msgstr "Bandiera persa"
+msgstr "Bandiera lasciata"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:24
msgid "White base"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:42
#: qcsrc/common/mutators/mutator/waypoints/all.inc:43
msgid "Key carrier"
-msgstr "Portatore chiave"
+msgstr "Portchiave"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:39
msgid "Run here"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:46
msgid "Ball carrier"
-msgstr "Portatore palla"
+msgstr "Portapalla"
#: qcsrc/common/mutators/mutator/waypoints/all.inc:49
msgid "Goal"
#: qcsrc/common/notifications/all.inc:692
#, c-format
msgid "^BGYou dropped the %s^BG buff!"
-msgstr "^BGHai abbandonato il colpetto %s^BG!"
+msgstr "^BGHai lasciato il colpetto %s^BG!"
#: qcsrc/common/notifications/all.inc:380
#: qcsrc/common/notifications/all.inc:693
#: qcsrc/common/notifications/all.inc:586
msgid "^BGStalemate! Flag carriers can now be seen by enemies on radar!"
msgstr ""
-"^BGStallo! I portatori di bandiera ora possono essere visti dai nemici nel "
-"radar!"
+"^BGStallo! I portabandiera ora possono essere visti dai nemici nel radar!"
#: qcsrc/common/notifications/all.inc:590
#, c-format
"Help the key carriers to meet!"
msgstr ""
"^BGTutte le chiavi sono in mano alla tua squadra!\n"
-"Aiuta i portatori di chiavi a incontrarsi!"
+"Aiuta i portachiavi a incontrarsi!"
#: qcsrc/common/notifications/all.inc:712
msgid ""
"Meet the other key carriers ^F4NOW^BG!"
msgstr ""
"^BGTutte le chiavi sono in mano alla tua squadra!\n"
-"Incxontra gli altri portatori di chiavi ^F4ORA^BG!"
+"Incxontra gli altri portachiavi ^F4ORA^BG!"
#: qcsrc/common/notifications/all.inc:714
msgid "^F4Round will start in ^COUNT"
# alex progger <tiprogrammierer.alex@gmail.com>, 2015
# Amadeusz Sławiński <amade@asmblr.net>, 2015-2017
# Artur Motyka <slashcraftpl@gmail.com>, 2016
-# Jakub Pędziszewski <pedziszewski@gmail.com>, 2015
+# Jakub P. <pedziszewski@gmail.com>, 2015
+# Jakub P. <pedziszewski@gmail.com>, 2015
# John Smith <myrangd@gmail.com>, 2016
# Kriss Chr <kriss7475@gmail.com>, 2017
# Piotr Kozica <koza91@gmail.com>, 2016
"Project-Id-Version: Xonotic\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-30 07:23+0200\n"
-"PO-Revision-Date: 2017-04-04 15:40+0000\n"
+"PO-Revision-Date: 2017-05-31 03:15+0000\n"
"Last-Translator: Jean Trindade Pereira <jean_trindade2@hotmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.com/team-xonotic/xonotic/"
"language/pt/)\n"
#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:145
msgid "Country"
-msgstr "País"
+msgstr "Idioma"
#: qcsrc/menu/xonotic/dialog_multiplayer_profile.qc:159
msgid "Gender:"
#: qcsrc/menu/xonotic/dialog_singleplayer.qc:135
msgid "Start Singleplayer!"
-msgstr "Iniciar Um Jogador!"
+msgstr "Iniciar Campanha!"
#: qcsrc/menu/xonotic/dialog_singleplayer.qh:6
msgid "Singleplayer"
vector autocvar_sv_player_crouch_mins = '-16 -16 -24';
vector autocvar_sv_player_crouch_viewoffset = '0 0 20';
//vector autocvar_sv_player_headsize = '24 24 12';
+
+// temporary array used to dump weapon and turret settings
+const int MAX_CONFIG_SETTINGS = 256;
+string config_queue[MAX_CONFIG_SETTINGS];
+
#endif
{
l.islinked = false;
l.isshielded = true;
- int i;
- for(i = 0; i < 17; ++i) { l.isgenneighbor[i] = false; l.iscpneighbor[i] = false; }
+ l.aregensneighbor = 0;
+ l.arecpsneighbor = 0;
LOG_DEBUG(etos(l), " (point) belongs to team ", ftos(l.team));
l.sprite.SendFlags |= 16;
}
l.enemy.isshielded = false;
}
if(l.goalentity.classname == "onslaught_generator")
- l.enemy.isgenneighbor[l.goalentity.team] = true;
+ l.enemy.aregensneighbor |= BIT(l.goalentity.team);
else
- l.enemy.iscpneighbor[l.goalentity.team] = true;
+ l.enemy.arecpsneighbor |= BIT(l.goalentity.team);
}
if (l.enemy.islinked)
{
l.goalentity.isshielded = false;
}
if(l.enemy.classname == "onslaught_generator")
- l.goalentity.isgenneighbor[l.enemy.team] = true;
+ l.goalentity.aregensneighbor |= BIT(l.enemy.team);
else
- l.goalentity.iscpneighbor[l.enemy.team] = true;
+ l.goalentity.arecpsneighbor |= BIT(l.enemy.team);
}
}
// now update the generators
int ons_ControlPoint_CanBeLinked(entity cp, int teamnumber)
{
- if(cp.isgenneighbor[teamnumber]) { return 2; }
- if(cp.iscpneighbor[teamnumber]) { return 1; }
+ if(cp.aregensneighbor & BIT(teamnumber)) return 2;
+ if(cp.arecpsneighbor & BIT(teamnumber)) return 1;
return 0;
}
continue;
// Ignore owned controlpoints
- if(!(cp2.isgenneighbor[this.team] || cp2.iscpneighbor[this.team]))
+ if(!((cp2.aregensneighbor & BIT(this.team)) || (cp2.arecpsneighbor & BIT(this.team))))
continue;
// Count team mates interested in this control point
.float teleport_antispam;
-.bool isgenneighbor[17];
-.bool iscpneighbor[17];
+.int aregensneighbor;
+.int arecpsneighbor;
float ons_notification_time[17];
.float ons_overtime_damagedelay;
ARG_CASE(ARG_CS, "f1secs", count_seconds(f1)) \
ARG_CASE(ARG_CS, "f1points", (f1 == 1 ? _("point") : _("points"))) \
ARG_CASE(ARG_CS_SV, "f1ord", count_ordinal(f1)) \
- ARG_CASE(ARG_CS, "f1time", process_time(2, f1)) \
+ ARG_CASE(ARG_CS_SV, "f1time", process_time(2, f1)) \
ARG_CASE(ARG_CS_SV_HA, "f1race_time", mmssss(f1)) \
ARG_CASE(ARG_CS_SV_HA, "f2race_time", mmssss(f2)) \
ARG_CASE(ARG_CS_SV_HA, "f3race_time", mmssss(f3)) \
void T_Config_Queue_Swap(float root, float child, entity pass)
{
- string oldroot = tur_config_queue[root];
- tur_config_queue[root] = tur_config_queue[child];
- tur_config_queue[child] = oldroot;
+ string oldroot = config_queue[root];
+ config_queue[root] = config_queue[child];
+ config_queue[child] = oldroot;
}
float T_Config_Queue_Compare(float root, float child, entity pass)
for(i = 1; i <= 100; ++i)
{
- r = str2chr(tur_config_queue[root], i);
- c = str2chr(tur_config_queue[child], i);
+ r = str2chr(config_queue[root], i);
+ c = str2chr(config_queue[child], i);
if(r == c) { continue; }
else if(c > r) { return -1; }
else { return 1; }
FOREACH(Turrets, it != TUR_Null, {
// step 1: clear the queue
TUR_CONFIG_COUNT = 0;
- for(int j = 0; j <= MAX_TUR_CONFIG; ++j)
- { tur_config_queue[j] = string_null; }
+ for(int j = 0; j <= MAX_CONFIG_SETTINGS; ++j)
+ config_queue[j] = string_null;
// step 2: build new queue
it.tr_config(it);
// step 4: write queue
TUR_CONFIG_WRITETOFILE(sprintf("// {{{ #%d: %s\n", i, it.turret_name))
for(int j = 0; j <= TUR_CONFIG_COUNT; ++j)
- { TUR_CONFIG_WRITETOFILE(tur_config_queue[j]) }
+ TUR_CONFIG_WRITETOFILE(config_queue[j])
TUR_CONFIG_WRITETOFILE("// }}}\n")
// step 5: debug info
// clear queue now that we're finished
TUR_CONFIG_COUNT = 0;
- for(int j = 0; j <= MAX_TUR_CONFIG; ++j)
- { tur_config_queue[j] = string_null; }
+ for(int j = 0; j <= MAX_CONFIG_SETTINGS; ++j)
+ config_queue[j] = string_null;
// extra information
LOG_INFO(sprintf("Totals: %d turrets, %d settings\n", (Turrets_COUNT - 1), totalsettings));
float tur_config_file;
float tur_config_alsoprint;
-const int MAX_TUR_CONFIG = 256;
float TUR_CONFIG_COUNT;
-string tur_config_queue[MAX_TUR_CONFIG];
-
#define TUR_CONFIG_WRITETOFILE(a) { \
fputs(tur_config_file, a); \
if(tur_config_alsoprint) { LOG_INFO(a); } }
#undef TRY
}
+void turret_findtarget(entity this)
+{
+ entity e = find(NULL, classname, "turret_manager");
+ if(!e)
+ {
+ e = new(turret_manager);
+ setthink(e, turrets_manager_think);
+ e.nextthink = time + 2;
+ }
+
+ entity targ = find(NULL, targetname, this.target);
+ if(targ.classname == "turret_checkpoint")
+ return; // turrets don't defend checkpoints?
+
+ if (!targ)
+ {
+ this.target = "";
+ LOG_TRACE("Turret has invalid defendpoint!");
+ }
+
+ this.tur_defend = targ;
+ this.idle_aim = this.tur_head.angles + angleofs(this.tur_head, targ);
+}
+
bool turret_initialize(entity this, Turret tur)
{
if(!autocvar_g_turrets)
IL_PUSH(g_bot_targets, this);
}
- entity e = find(NULL, classname, "turret_manager");
- if(!e)
- {
- e = new(turret_manager);
- setthink(e, turrets_manager_think);
- e.nextthink = time + 2;
- }
-
if(!(this.spawnflags & TSF_SUSPENDED))
droptofloor(this);
this.takedamage = DAMAGE_AIM;
set_movetype(this, MOVETYPE_NOCLIP);
this.view_ofs = '0 0 0';
+ this.idle_aim = '0 0 0';
this.turret_firecheckfunc = turret_firecheck;
this.event_damage = turret_damage;
this.use = turret_use;
this.weaponentities[0] = this; // lol
- if(!this.tur_defend)
- if(this.target != "")
- {
- this.tur_defend = find(NULL, targetname, this.target);
- if (this.tur_defend == NULL)
- {
- this.target = "";
- LOG_TRACE("Turret has invalid defendpoint!");
- }
- }
-
- if (this.tur_defend)
- this.idle_aim = this.tur_head.angles + angleofs(this.tur_head, this.tur_defend);
- else
- this.idle_aim = '0 0 0';
+ if(!this.tur_defend && this.target != "")
+ InitializeEntity(this, turret_findtarget, INITPRIO_FINDTARGET);
#ifdef TURRET_DEBUG
this.tur_debug_start = this.nextthink;
movelib_brake_simple(this, (autocvar_g_turrets_unit_ewheel_speed_stop));
}
+void ewheel_findtarget(entity this)
+{
+ entity e = find(NULL, targetname, this.target);
+ if (!e)
+ {
+ LOG_TRACE("Initital waypoint for ewheel does NOT exist, fix your map!");
+ this.target = "";
+ }
+
+ if (e.classname != "turret_checkpoint")
+ LOG_TRACE("Warning: not a turret path");
+ else
+ {
+
+#ifdef EWHEEL_FANCYPATH
+ this.pathcurrent = pathlib_astar(this, this.origin, e.origin);
+ this.pathgoal = e;
+#else
+ this.pathcurrent = e;
+#endif
+ }
+}
+
spawnfunc(turret_ewheel) { if(!turret_initialize(this, TUR_EWHEEL)) delete(this); }
METHOD(EWheel, tr_think, void(EWheel thistur, entity it))
METHOD(EWheel, tr_setup, void(EWheel this, entity it))
{
- entity e;
-
if(it.move_movetype == MOVETYPE_WALK)
{
it.velocity = '0 0 0';
setorigin(it, it.pos1);
if (it.target != "")
- {
- e = find(NULL, targetname, it.target);
- if (!e)
- {
- LOG_TRACE("Initital waypoint for ewheel does NOT exist, fix your map!");
- it.target = "";
- }
-
- if (e.classname != "turret_checkpoint")
- LOG_TRACE("Warning: not a turret path");
- else
- {
-
-#ifdef EWHEEL_FANCYPATH
- it.pathcurrent = pathlib_astar(it, it.origin, e.origin);
- it.pathgoal = e;
-#else
- it.pathcurrent = e;
-#endif
- }
- }
+ InitializeEntity(it, ewheel_findtarget, INITPRIO_FINDTARGET);
}
it.iscreature = true;
.float animflag;
.float idletime;
-#define WALKER_PATH(this, s, e) pathlib_astar(this, s, e)
-
bool walker_firecheck(entity this)
{
if (this.animflag == ANIM_MELEE)
if (this.pathgoal.enemy)
{
- this.pathcurrent = WALKER_PATH(this, this.pathgoal.origin, this.pathgoal.enemy.origin);
+ this.pathcurrent = pathlib_astar(this, this.pathgoal.origin, this.pathgoal.enemy.origin);
this.pathgoal = this.pathgoal.enemy;
}
}
#endif
}
+void walker_findtarget(entity this)
+{
+ entity e = find(NULL, targetname, this.target);
+ if (!e)
+ {
+ LOG_TRACE("Initital waypoint for walker does NOT exist, fix your map!");
+ this.target = "";
+ }
+
+ if (e.classname != "turret_checkpoint")
+ LOG_TRACE("Warning: not a turrret path");
+ else
+ {
+#ifdef WALKER_FANCYPATHING
+ this.pathcurrent = pathlib_astar(this, this.origin, e.origin);
+ this.pathgoal = e;
+#else
+ this.pathcurrent = e;
+#endif
+ }
+
+ // TODO: this doesn't reset target, so tur_defend will be the checkpoint too!
+}
+
spawnfunc(turret_walker) { if(!turret_initialize(this, TUR_WALKER)) delete(this); }
METHOD(WalkerTurret, tr_think, void(WalkerTurret thistur, entity it))
{
it.ticrate = 0.05;
- entity e;
-
// Respawn is called & first spawn to, to set team. need to make sure we do not move the initial spawn.
if(it.move_movetype == MOVETYPE_WALK)
{
it.turret_firecheckfunc = walker_firecheck;
if (it.target != "")
- {
- e = find(NULL, targetname, it.target);
- if (!e)
- {
- LOG_TRACE("Initital waypoint for walker does NOT exsist, fix your map!");
- it.target = "";
- }
-
- if (e.classname != "turret_checkpoint")
- LOG_TRACE("Warning: not a turrret path");
- else
- {
-#ifdef WALKER_FANCYPATHING
- it.pathcurrent = WALKER_PATH(it, it.origin, e.origin);
- it.pathgoal = e;
-#else
- it.pathcurrent = e;
-#endif
- }
- }
+ InitializeEntity(it, walker_findtarget, INITPRIO_FINDTARGET);
}
#endif // SVQC
void W_Config_Queue_Swap(int root, int child, entity pass)
{
- string oldroot = wep_config_queue[root];
- wep_config_queue[root] = wep_config_queue[child];
- wep_config_queue[child] = oldroot;
+ string oldroot = config_queue[root];
+ config_queue[root] = config_queue[child];
+ config_queue[child] = oldroot;
}
float W_Config_Queue_Compare(int root, int child, entity pass)
{
- return strcmp(wep_config_queue[root], wep_config_queue[child]);
+ return strcmp(config_queue[root], config_queue[child]);
}
void Dump_Weapon_Settings()
FOREACH(Weapons, it != WEP_Null, {
// step 1: clear the queue
WEP_CONFIG_COUNT = 0;
- for (int x = 0; x <= MAX_WEP_CONFIG; ++x)
- { wep_config_queue[x] = string_null; }
+ for (int x = 0; x <= MAX_CONFIG_SETTINGS; ++x)
+ config_queue[x] = string_null;
// step 2: build new queue
it.wr_config(it);
it.m_name,
((it.spawnflags & WEP_FLAG_MUTATORBLOCKED) ? " (MUTATOR WEAPON)" : "")
));
- for (int x = 0; x <= WEP_CONFIG_COUNT; ++x) { WEP_CONFIG_WRITETOFILE(wep_config_queue[x]); }
+ for (int x = 0; x <= WEP_CONFIG_COUNT; ++x) { WEP_CONFIG_WRITETOFILE(config_queue[x]); }
WEP_CONFIG_WRITETOFILE("// }}}\n");
// step 5: debug info
// clear queue now that we're finished
WEP_CONFIG_COUNT = 0;
- for(int x = 0; x <= MAX_WEP_CONFIG; ++x)
- { wep_config_queue[x] = string_null; }
+ for(int x = 0; x <= MAX_CONFIG_SETTINGS; ++x)
+ config_queue[x] = string_null;
// extra information
LOG_INFO(sprintf("Totals: %d weapons, %d settings\n", totalweapons, totalsettings));
int wep_config_file;
bool wep_config_alsoprint;
-const int MAX_WEP_CONFIG = 256;
int WEP_CONFIG_COUNT;
-string wep_config_queue[MAX_WEP_CONFIG];
-
#define WEP_CONFIG_QUEUE(a) { \
- wep_config_queue[WEP_CONFIG_COUNT] = a; \
+ config_queue[WEP_CONFIG_COUNT] = a; \
++WEP_CONFIG_COUNT; }
#define WEP_CONFIG_WRITETOFILE(a) MACRO_BEGIN { \
+#ifdef RADARMAP
+
#include "radarmap.qh"
#include <common/command/_mod.qh>
#include "radarmap.qh"
}
}
-float RadarMap_Make(float argc)
+bool RadarMap_Make(float argc)
{
float i;
return false;
}
+#endif
#pragma once
+#ifndef RADARMAP
+bool RadarMap_Make(float argc) { LOG_INFO("radarmap is disabled, compile with -DRADARMAP to enable it.\n"); return true; }
+#else
// ===========================================
// Declarations for radarmap generation code
// FF is contained twice, to map 256 to FF too
// removes the need to bound()
-float RadarMap_Make(float argc);
+bool RadarMap_Make(float argc);
+
+#endif
{
WeaponStats_LogDamage(awep.m_id, abot, this.(weaponentity).m_weapon.m_id, vbot, dh + da);
}
- if (damage)
- {
- MUTATOR_CALLHOOK(PlayerDamaged, attacker, this, dh, da, hitloc, deathtype, damage);
- }
+
+ MUTATOR_CALLHOOK(PlayerDamaged, attacker, this, dh, da, hitloc, deathtype, damage);
if (this.health < 1)
{
});
}
-void dumpsurface(entity e)
-{
- float n, si, ni;
- vector norm, vec;
- LOG_INFO("Surfaces of ", etos(e), ":\n");
-
- LOG_INFO("TEST = ", ftos(getsurfacenearpoint(e, '0 0 0')), "\n");
-
- for(si = 0; ; ++si)
- {
- n = getsurfacenumpoints(e, si);
- if(n <= 0)
- break;
- LOG_INFO(" Surface ", ftos(si), ":\n");
- norm = getsurfacenormal(e, si);
- LOG_INFO(" Normal = ", vtos(norm), "\n");
- for(ni = 0; ni < n; ++ni)
- {
- vec = getsurfacepoint(e, si, ni);
- LOG_INFO(" Point ", ftos(ni), " = ", vtos(vec), " (", ftos(norm * vec), ")\n");
- }
- }
-}
-
void checkpoint_passed(entity this, entity player)
{
if(player.personal && autocvar_g_allow_checkpoints)
LOG_WARN("Adding score to unknown player!");
return 0;
}
- if(score)
- if(scores_label(scorefield) != "")
- s.SendFlags |= (2 ** (scorefield.m_id % 16));
+ if(!score)
+ {
+ return s.(scores(scorefield));
+ }
+ if(scores_label(scorefield) != "")
+ s.SendFlags |= (2 ** (scorefield.m_id % 16));
if(!warmup_stage)
PS_GR_P_ADDVAL(s.owner, strcat(PLAYERSTATS_TOTAL, scores_label(scorefield)), score);
return (s.(scores(scorefield)) += score);
*/
float PlayerScore_Add(entity player, PlayerScoreField scorefield, float score);
+/**
+ * \brief Returns the player's score.
+ * \param[in] player Player to inspect.
+ * \param[in] scorefield Field of the score.
+ * \return Player's score.
+ */
+#define PlayerScore_Get(player, scorefield) PlayerScore_Add(player, scorefield, 0)
+
/**
* Initialize the score of this player if needed.
* Does nothing in teamplay.