DEADSOFTWARE

game: add g_max_bots
[d2df-sdl.git] / src / game / g_console.pas
index 3dd754c56b0e24a2860d1bc4ecb3d494eb904b27..64b08642029b320c93a0377ae8a56526b94eb821 100644 (file)
@@ -74,7 +74,11 @@ function conGetBoolArg (p: SSArray; idx: Integer): Integer;
 function conParseFloat (var res: Single; const s: AnsiString): Boolean;
 
 const
-  defaultConfigScript = 'dfconfig.cfg';
+  {$IFDEF HEADLESS}
+    defaultConfigScript = 'dfserver.cfg';
+  {$ELSE}
+    defaultConfigScript = 'dfconfig.cfg';
+  {$ENDIF}
 
 var
   gConsoleShow: Boolean = false; // True - êîíñîëü îòêðûòà èëè îòêðûâàåòñÿ
@@ -91,7 +95,7 @@ implementation
 uses
   g_textures, g_main, e_graphics, e_input, g_game, g_gfx, g_player, g_items,
   SysUtils, g_basic, g_options, Math, g_touch, e_res,
-  g_menu, g_gui, g_language, g_net, g_netmsg, e_log, conbuf;
+  g_menu, g_gui, g_language, g_net, g_netmsg, e_log, conbuf, g_weapons;
 
 const
   autoexecScript = 'autoexec.cfg';
@@ -1032,6 +1036,36 @@ begin
   AddCommand('p2_model', PlayerSettingsCVars);
   AddCommand('p1_team', PlayerSettingsCVars);
   AddCommand('p2_team', PlayerSettingsCVars);
+  AddCommand('p1_autoswitch', PlayerSettingsCVars);
+  AddCommand('p2_autoswitch', PlayerSettingsCVars);
+  AddCommand('p1_switch_empty', PlayerSettingsCVars);
+  AddCommand('p2_switch_empty', PlayerSettingsCVars);
+  AddCommand('p1_skip_fist', PlayerSettingsCVars);
+  AddCommand('p2_skip_fist', PlayerSettingsCVars);
+  AddCommand('p1_priority_kastet', PlayerSettingsCVars);
+  AddCommand('p2_priority_kastet', PlayerSettingsCVars);
+  AddCommand('p1_priority_saw', PlayerSettingsCVars);
+  AddCommand('p2_priority_saw', PlayerSettingsCVars);
+  AddCommand('p1_priority_pistol', PlayerSettingsCVars);
+  AddCommand('p2_priority_pistol', PlayerSettingsCVars);  
+  AddCommand('p1_priority_shotgun1', PlayerSettingsCVars);
+  AddCommand('p2_priority_shotgun1', PlayerSettingsCVars);
+  AddCommand('p1_priority_shotgun2', PlayerSettingsCVars);
+  AddCommand('p2_priority_shotgun2', PlayerSettingsCVars);
+  AddCommand('p1_priority_chaingun', PlayerSettingsCVars);
+  AddCommand('p2_priority_chaingun', PlayerSettingsCVars);
+  AddCommand('p1_priority_rocketlauncher', PlayerSettingsCVars);
+  AddCommand('p2_priority_rocketlauncher', PlayerSettingsCVars);
+  AddCommand('p1_priority_plasma', PlayerSettingsCVars);
+  AddCommand('p2_priority_plasma', PlayerSettingsCVars);
+  AddCommand('p1_priority_bfg', PlayerSettingsCVars);
+  AddCommand('p2_priority_bfg', PlayerSettingsCVars);
+  AddCommand('p1_priority_super', PlayerSettingsCVars);
+  AddCommand('p2_priority_super', PlayerSettingsCVars);
+  AddCommand('p1_priority_flamethrower', PlayerSettingsCVars);
+  AddCommand('p2_priority_flamethrower', PlayerSettingsCVars);
+  AddCommand('p1_priority_berserk', PlayerSettingsCVars);
+  AddCommand('p2_priority_berserk', PlayerSettingsCVars);  
 
   AddCommand('g_max_particles', GameCVars);
   AddCommand('g_max_shells', GameCVars);
@@ -1046,8 +1080,11 @@ begin
   AddCommand('g_allow_exit', GameCVars);
   AddCommand('g_dm_keys', GameCVars);
   AddCommand('g_allow_monsters', GameCVars);
+  AddCommand('g_allow_dropflag', GameCVars);
+  AddCommand('g_throw_flag', GameCVars);
   AddCommand('g_bot_vsmonsters', GameCVars);
   AddCommand('g_bot_vsplayers', GameCVars);
+  AddCommand('g_max_bots', GameCVars); // intentionally not whitelisted
   AddCommand('g_scorelimit', GameCVars);
   AddCommand('g_timelimit', GameCVars);
   AddCommand('g_maxlives', GameCVars);
@@ -1073,6 +1110,8 @@ begin
   AddCommand('bot_removeall', GameCommands);
   AddCommand('chat', GameCommands);
   AddCommand('teamchat', GameCommands);
+  AddCommand('announce', GameCommands);
+  AddCommand('an', GameCommands);
   AddCommand('game', GameCommands);
   AddCommand('host', GameCommands);
   AddCommand('map', GameCommands);
@@ -1110,12 +1149,17 @@ begin
   AddCommand('weapnext', GameCommands);
   AddCommand('weapprev', GameCommands);
   AddCommand('weapon', GameCommands);
+  AddCommand('dropflag', GameCommands);
   AddCommand('p1_weapnext', GameCommands);
   AddCommand('p1_weapprev', GameCommands);
   AddCommand('p1_weapon', GameCommands);
+  AddCommand('p1_weapbest', GameCommands);
+  AddCommand('p1_dropflag', GameCommands);
   AddCommand('p2_weapnext', GameCommands);
   AddCommand('p2_weapprev', GameCommands);
   AddCommand('p2_weapon', GameCommands);
+  AddCommand('p2_weapbest', GameCommands);
+  AddCommand('p2_dropflag', GameCommands);
 
   AddCommand('god', GameCheats);
   AddCommand('notarget', GameCheats);
@@ -1990,6 +2034,7 @@ begin
   g_Console_BindKey(IK_ALT, '+p1_strafe', '-p1_strafe');
   g_Console_BindKey(IK_E, 'p1_weapnext', '', True);
   g_Console_BindKey(IK_Q, 'p1_weapprev', '', True);
+  g_Console_BindKey(IK_R, 'p1_dropflag', '');
   g_Console_BindKey(IK_1, 'p1_weapon 1');
   g_Console_BindKey(IK_2, 'p1_weapon 2');
   g_Console_BindKey(IK_3, 'p1_weapon 3');
@@ -2154,6 +2199,8 @@ begin
   WriteFlag('g_friendly_hit_projectile ', GAME_OPTION_TEAMHITPROJECTILE);
   WriteFlag('g_allow_exit ', GAME_OPTION_ALLOWEXIT);
   WriteFlag('g_allow_monsters ', GAME_OPTION_MONSTERS);
+  WriteFlag('g_allow_dropflag ', GAME_OPTION_ALLOWDROPFLAG);
+  WriteFlag('g_throw_flag ', GAME_OPTION_THROWFLAG);
   WriteFlag('g_dm_keys ', GAME_OPTION_DMKEYS);
   WriteFlag('g_weaponstay ', GAME_OPTION_WEAPONSTAY);
   WriteFlag('g_bot_vsmonsters ', GAME_OPTION_BOTVSMONSTER);
@@ -2166,6 +2213,21 @@ begin
     WriteLn(f, 'p1_color ', Color.R, ' ', Color.G, ' ', Color.B);
     WriteLn(f, 'p1_model ', QuoteStr(Model));
     WriteLn(f, 'p1_team ', FormatTeam(Team));
+    WriteLn(f, 'p1_autoswitch ', WeaponSwitch);
+    WriteLn(f, 'p1_switch_empty ', SwitchToEmpty);
+    WriteLn(f, 'p1_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+    WriteLn(f, 'p1_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
+    WriteLn(f, 'p1_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
+    WriteLn(f, 'p1_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));    
+    WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2] ));
+    WriteLn(f, 'p1_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));    
+    WriteLn(f, 'p1_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));    
+    WriteLn(f, 'p1_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));    
+    WriteLn(f, 'p1_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
+    WriteLn(f, 'p1_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));                         
+    WriteLn(f, 'p1_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
+    WriteLn(f, 'p1_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));    
+    //
   end;
   with gPlayer2Settings do
   begin
@@ -2173,6 +2235,20 @@ begin
     WriteLn(f, 'p2_color ', Color.R, ' ', Color.G, ' ', Color.B);
     WriteLn(f, 'p2_model ', QuoteStr(Model));
     WriteLn(f, 'p2_team ', FormatTeam(Team));
+    WriteLn(f, 'p2_autoswitch ', WeaponSwitch);
+    WriteLn(f, 'p2_switch_empty ', SwitchToEmpty);
+    WriteLn(f, 'p2_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+    WriteLn(f, 'p2_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
+    WriteLn(f, 'p2_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
+    WriteLn(f, 'p2_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+    WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+    WriteLn(f, 'p2_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));
+    WriteLn(f, 'p2_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));
+    WriteLn(f, 'p2_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));
+    WriteLn(f, 'p2_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
+    WriteLn(f, 'p2_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));
+    WriteLn(f, 'p2_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
+    WriteLn(f, 'p2_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));       
   end;
 
   // all cvars