diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 2cf72c1bcc17dc8ceb2cb1b7f2ef140a2500a803..6f70992fef7a5f5a48e3bad1e50d77e9722b1f86 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
GAME_OPTION_DMKEYS = 128;
GAME_OPTION_TEAMHITTRACE = 256;
GAME_OPTION_TEAMHITPROJECTILE = 512;
GAME_OPTION_DMKEYS = 128;
GAME_OPTION_TEAMHITTRACE = 256;
GAME_OPTION_TEAMHITPROJECTILE = 512;
+ GAME_OPTION_TEAMABSORBDAMAGE = 1024;
STATE_NONE = 0;
STATE_MENU = 1;
STATE_NONE = 0;
STATE_MENU = 1;
g_holmes,
{$ENDIF}
e_texture, e_res, g_textures, g_window, g_menu,
g_holmes,
{$ENDIF}
e_texture, e_res, g_textures, g_window, g_menu,
- e_input, e_log, g_console, g_items, g_map, g_panel,
+ e_input, e_log, g_console, r_console, g_items, g_map, g_panel,
g_playermodel, g_gfx, g_options, Math,
g_triggers, g_monsters, e_sound, CONFIG,
g_language, g_net, g_main, g_phys,
g_playermodel, g_gfx, g_options, Math,
g_triggers, g_monsters, e_sound, CONFIG,
g_language, g_net, g_main, g_phys,
g_Game_SetLoadingText('', 0, False);
g_Game_SetLoadingText(_lc[I_LOAD_CONSOLE], 0, False);
g_Game_SetLoadingText('', 0, False);
g_Game_SetLoadingText(_lc[I_LOAD_CONSOLE], 0, False);
+ r_Console_Init;
g_Console_Init();
g_Game_SetLoadingText(_lc[I_LOAD_MODELS], 0, False);
g_Console_Init();
g_Game_SetLoadingText(_lc[I_LOAD_MODELS], 0, False);
// no need to, as we'll do it in event handler
// Îáíîâëÿåì êîíñîëü (äâèæåíèå è ñîîáùåíèÿ):
// no need to, as we'll do it in event handler
// Îáíîâëÿåì êîíñîëü (äâèæåíèå è ñîîáùåíèÿ):
+ r_Console_Update;
g_Console_Update();
if (NetMode = NET_NONE) and (g_Game_IsNet) and (gGameOn or (gState in [STATE_FOLD, STATE_INTERCUSTOM])) then
g_Console_Update();
if (NetMode = NET_NONE) and (g_Game_IsNet) and (gGameOn or (gState in [STATE_FOLD, STATE_INTERCUSTOM])) then
end;
{$IFNDEF HEADLESS}
end;
{$IFNDEF HEADLESS}
- g_Console_Draw();
+ r_Console_Draw();
{$ENDIF}
if g_debug_Sounds and gGameOn then
{$ENDIF}
if g_debug_Sounds and gGameOn then
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ALLOWEXIT;
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_MONSTERS;
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_BOTVSMONSTER;
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ALLOWEXIT;
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_MONSTERS;
gGameSettings.Options := gGameSettings.Options + GAME_OPTION_BOTVSMONSTER;
+ gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITPROJECTILE;
+ gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITTRACE;
gSwitchGameMode := GM_SINGLE;
gLMSRespawn := LMS_RESPAWN_NONE;
gSwitchGameMode := GM_SINGLE;
gLMSRespawn := LMS_RESPAWN_NONE;
begin
ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
end
begin
ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
end
+ else if cmd = 'g_friendly_absorb_damage' then
+ begin
+ ParseGameFlag(GAME_OPTION_TEAMABSORBDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
+ end
else if cmd = 'g_friendly_hit_trace' then
begin
ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
else if cmd = 'g_friendly_hit_trace' then
begin
ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
procedure PlayerSettingsCVars(P: SSArray);
var
cmd: string;
procedure PlayerSettingsCVars(P: SSArray);
var
cmd: string;
+ team: Byte;
+
+ function ParseTeam(s: string): Byte;
+ begin
+ result := 0;
+ case s of
+ 'red', '1': result := TEAM_RED;
+ 'blue', '2': result := TEAM_BLUE;
+ else result := TEAM_NONE;
+ end;
+ end;
begin
cmd := LowerCase(P[0]);
case cmd of
begin
cmd := LowerCase(P[0]);
case cmd of
end;
end;
end;
end;
end;
end;
+ 'p1_team':
+ begin
+ // TODO: switch teams if in game or store this separately
+ if (Length(P) > 1) then
+ begin
+ team := ParseTeam(P[1]);
+ if team = TEAM_NONE then
+ g_Console_Add('expected ''red'', ''blue'', 1 or 2')
+ else if not gGameOn and not g_Game_IsNet then
+ gPlayer1Settings.Team := team
+ else
+ g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
+ end;
+ end;
+ 'p2_team':
+ begin
+ // TODO: switch teams if in game or store this separately
+ if (Length(P) > 1) then
+ begin
+ team := ParseTeam(P[1]);
+ if team = TEAM_NONE then
+ g_Console_Add('expected ''red'', ''blue'', 1 or 2')
+ else if not gGameOn and not g_Game_IsNet then
+ gPlayer2Settings.Team := team
+ else
+ g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
+ end;
+ end;
end;
end;
end;
end;