diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index 4fbede48721b20714b43ca74026b6d2683a21efc..0cca55387e1b518016faab9f0925fbc2b88c2b41 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
procedure g_Game_Announce_GoodShot(SpawnerUID: Word);
procedure g_Game_Announce_KillCombo(Param: Integer);
procedure g_Game_Announce_BodyKill(SpawnerUID: Word);
+procedure g_Game_Effect_Bubbles(fX, fY: Integer; count: Word; devX, devY: Byte; Silent: Boolean = False);
procedure g_Game_StartVote(Command, Initiator: string);
procedure g_Game_CheckVote;
procedure g_TakeScreenShot(Filename: string = '');
// saves a shitty CSV containing the game stats passed to it
procedure SaveGameStat(Stat: TEndCustomGameStat; Path: string);
-var
+var
s: TextFile;
dir, fname, map, mode, etime: String;
I: Integer;
// if it's a coop game: monsters killed, monsters total, secrets found, secrets total
// otherwise nothing
if Stat.GameMode in [GM_TDM, GM_CTF] then
- WriteLn(s,
+ WriteLn(s,
Format('red_score,blue_score' + LineEnding + '%d,%d', [Stat.TeamStat[TEAM_RED].Score, Stat.TeamStat[TEAM_BLUE].Score]))
else if Stat.GameMode in [GM_COOP, GM_SINGLE] then
WriteLn(s,
end;
end;
- g_Net_UnbanNonPermHosts();
+ g_Net_UnbanNonPerm();
end;
if gLastMap then
// if someone has a higher score, set it to that instead
gsScoreLimit := max(gsScoreLimit, b);
gGameSettings.ScoreLimit := gsScoreLimit;
-
+
if g_Game_IsNet then MH_SEND_GameSettings;
end;
end;
'p1_priority_kastet':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p2_priority_kastet':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
- end;
+ gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ end;
'p1_priority_saw':
begin
if (Length(P) = 2) then
'p1_priority_pistol':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p2_priority_pistol':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
- end;
+ gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ end;
'p1_priority_shotgun1':
begin
if (Length(P) = 2) then
begin
if (Length(P) = 2) then
gPlayer2Settings.WeaponPreferences[WEAPON_FLAMETHROWER] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
- end;
+ end;
'p1_priority_berserk':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WP_LAST+1] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WP_LAST+1] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p2_priority_berserk':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WP_LAST+1] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
- end;
+ gPlayer2Settings.WeaponPreferences[WP_LAST+1] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ end;
end;
end;
pl := g_Net_Client_ByName(P[1]);
if (pl <> nil) then
- begin
- s := g_Net_ClientName_ByID(pl^.ID);
- g_Net_BanHost(pl^.Peer^.address.host, False);
- g_Net_Host_Kick(pl^.ID, NET_DISC_TEMPBAN);
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end else
+ g_Net_Host_Ban(pl, False)
+ else
g_Console_Add(Format(_lc[I_NET_ERR_NAME404], [P[1]]));
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
a := StrToIntDef(P[1], 0);
if (NetClients <> nil) and (a <= High(NetClients)) then
if NetClients[a].Used and (NetClients[a].Peer <> nil) then
- begin
- s := g_Net_ClientName_ByID(NetClients[a].ID);
- g_Net_BanHost(NetClients[a].Peer^.address.host, False);
- g_Net_Host_Kick(NetClients[a].ID, NET_DISC_TEMPBAN);
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end;
+ g_Net_Host_Ban(pl, False);
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
end
a := StrToIntDef(P[1], 0);
pl := g_Net_Client_ByPlayer(a);
if (pl <> nil) and pl^.Used and (pl^.Peer <> nil) then
- begin
- s := g_Net_ClientName_ByID(pl^.ID);
- g_Net_BanHost(pl^.Peer^.address.host, False);
- g_Net_Host_Kick(pl^.ID, NET_DISC_TEMPBAN);
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end;
+ g_Net_Host_Ban(pl, False);
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
end
pl := g_Net_Client_ByName(P[1]);
if (pl <> nil) then
- begin
- s := g_Net_ClientName_ByID(pl^.ID);
- g_Net_BanHost(pl^.Peer^.address.host);
- g_Net_Host_Kick(pl^.ID, NET_DISC_BAN);
- g_Net_SaveBanList();
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end else
+ g_Net_Host_Ban(pl, True)
+ else
g_Console_Add(Format(_lc[I_NET_ERR_NAME404], [P[1]]));
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
a := StrToIntDef(P[1], 0);
if (NetClients <> nil) and (a <= High(NetClients)) then
if NetClients[a].Used and (NetClients[a].Peer <> nil) then
- begin
- s := g_Net_ClientName_ByID(NetClients[a].ID);
- g_Net_BanHost(NetClients[a].Peer^.address.host);
- g_Net_Host_Kick(NetClients[a].ID, NET_DISC_BAN);
- g_Net_SaveBanList();
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end;
+ g_Net_Host_Ban(@NetClients[a], True);
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
end
a := StrToIntDef(P[1], 0);
pl := g_Net_Client_ByPlayer(a);
if (pl <> nil) and pl^.Used and (pl^.Peer <> nil) then
- begin
- s := g_Net_ClientName_ByID(pl^.ID);
- g_Net_BanHost(pl^.Peer^.address.host);
- g_Net_Host_Kick(pl^.ID, NET_DISC_TEMPBAN);
- g_Net_SaveBanList();
- g_Console_Add(Format(_lc[I_PLAYER_BAN], [s]));
- MH_SEND_GameEvent(NET_EV_PLAYER_BAN, 0, s);
- g_Net_Slist_ServerPlayerLeaves();
- end;
+ g_Net_Host_Ban(pl, True);
end else
g_Console_Add(_lc[I_MSG_SERVERONLY]);
end
Exit;
end;
- g_Net_BanHost(P[1]);
+ g_Net_BanAddress(P[1]);
g_Net_SaveBanList();
g_Console_Add(Format(_lc[I_PLAYER_BAN], [P[1]]));
end else
Exit;
end;
- if g_Net_UnbanHost(P[1]) then
+ if g_Net_UnbanAddress(P[1]) then
begin
g_Console_Add(Format(_lc[I_MSG_UNBAN_OK], [P[1]]));
g_Net_SaveBanList();
else if (cmd = 'addbot') or
(cmd = 'bot_add') then
begin
- if Length(P) > 2 then
- g_Bot_Add(TEAM_NONE, StrToIntDef(P[1], 2), StrToIntDef(P[2], 100))
- else if Length(P) > 1 then
- g_Bot_Add(TEAM_NONE, StrToIntDef(P[1], 2))
+ case Length(P) of
+ 1: g_Bot_Add(TEAM_NONE, 2);
+ 2: g_Bot_Add(TEAM_NONE, StrToIntDef(P[1], 2));
else
- g_Bot_Add(TEAM_NONE, 2);
+ g_Bot_Add(TEAM_NONE, StrToIntDef(P[1], 2), StrToIntDef(P[2], 100));
+ end;
end
else if cmd = 'bot_addlist' then
begin
- if Length(P) > 1 then
- begin
- if Length(P) = 2 then
- g_Bot_AddList(TEAM_NONE, P[1], StrToIntDef(P[1], -1))
+ case Length(P) of
+ 1: g_Bot_AddList(TEAM_NONE, '');
+ 2: g_Bot_AddList(TEAM_NONE, P[1], StrToIntDef(P[1], -1));
+ else
+ if P[2] = 'red' then
+ t := TEAM_RED
+ else if P[2] = 'blue' then
+ t := TEAM_BLUE
else
- begin
- if P[2] = 'red' then
- t := TEAM_RED
- else if P[2] = 'blue' then
- t := TEAM_BLUE
- else
- t := TEAM_NONE;
+ t := TEAM_NONE;
- if Length(P) = 3
- then g_Bot_AddList(t, P[1], StrToIntDef(P[1], -1))
- else g_Bot_AddList(t, P[1], StrToIntDef(P[1], -1), StrToIntDef(P[3], 100));
- end;
+ if Length(P) = 3
+ then g_Bot_AddList(t, P[1], StrToIntDef(P[1], -1))
+ else g_Bot_AddList(t, P[1], StrToIntDef(P[1], -1), StrToIntDef(P[3], 100));
end;
end
else if cmd = 'bot_removeall' then
DateTimeToString(date, 'yyyy-mm-dd-hh-nn-ss', t);
Filename := 'screenshot-' + date;
end;
-
+
name := e_CatPath(dir, Filename + '.png');
s := createDiskFile(name);
try
hahasnd[Random(3)].Play();
end;
+procedure g_Game_Effect_Bubbles (fX, fY: Integer; count: Word; devX, devY: Byte; Silent: Boolean);
+begin
+ g_GFX_Bubbles(fX, fY, count, devX, devY);
+ if not Silent then if Random(2) = 0
+ then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', fX, fY)
+ else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', fX, fY);
+end;
+
procedure g_Game_StartVote(Command, Initiator: string);
var
Need: Integer;