diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 2cf72c1bcc17dc8ceb2cb1b7f2ef140a2500a803..a2dacb982a9ee91a1127e1b18e74c3082fca9b39 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_TEAMABSORBDAMAGE = 1024;
STATE_NONE = 0;
STATE_MENU = 1;
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;
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);
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
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;