diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index ef00f5d3796e5fc18c9e185d5e574bfb4d25d32a..854d8119b44c4f0b4fe27b264e7dd273dece20bc 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
PLAYER_AP_SOFT = 100;
PLAYER_AP_LIMIT = 200;
SUICIDE_DAMAGE = 112;
PLAYER_AP_SOFT = 100;
PLAYER_AP_LIMIT = 200;
SUICIDE_DAMAGE = 112;
+ WEAPON_DELAY = 5;
PLAYER1_DEF_COLOR: TRGB = (R:64; G:175; B:48);
PLAYER2_DEF_COLOR: TRGB = (R:96; G:96; B:96);
PLAYER1_DEF_COLOR: TRGB = (R:64; G:175; B:48);
PLAYER2_DEF_COLOR: TRGB = (R:96; G:96; B:96);
procedure BFGHit();
function GetFlag(Flag: Byte): Boolean;
procedure SetFlag(Flag: Byte);
procedure BFGHit();
function GetFlag(Flag: Byte): Boolean;
procedure SetFlag(Flag: Byte);
- function DropFlag(): Boolean;
+ function DropFlag(Silent: Boolean = True): Boolean;
procedure AllRulez(Health: Boolean);
procedure RestoreHealthArmor();
procedure FragCombo();
procedure AllRulez(Health: Boolean);
procedure RestoreHealthArmor();
procedure FragCombo();
end;
if (gChatBubble > 0) and (FKeys[KEY_CHAT].Pressed) and not FGhost then
end;
if (gChatBubble > 0) and (FKeys[KEY_CHAT].Pressed) and not FGhost then
- DrawBubble();
+ if (FMegaRulez[MR_INVIS] <= gTime) or ((gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or
+ ((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM)))) then
+ DrawBubble();
// e_DrawPoint(5, 335, 288, 255, 0, 0); // DL, UR, DL, UR
if gAimLine and alive and
((Self = gPlayer1) or (Self = gPlayer2)) then
// e_DrawPoint(5, 335, 288, 255, 0, 0); // DL, UR, DL, UR
if gAimLine and alive and
((Self = gPlayer1) or (Self = gPlayer2)) then
end;
// Âûáðîñ ôëàãà:
end;
// Âûáðîñ ôëàãà:
- DropFlag();
+ DropFlag(KillType = K_FALLKILL);
end;
g_Player_CreateCorpse(Self);
end;
g_Player_CreateCorpse(Self);
begin
//e_WriteLog(Format(' SWITCH: cur=%d; new=%d', [FCurrWeap, cwi]), MSG_WARNING);
result := Byte(cwi);
begin
//e_WriteLog(Format(' SWITCH: cur=%d; new=%d', [FCurrWeap, cwi]), MSG_WARNING);
result := Byte(cwi);
- FNextWeapDelay := 10;
+ FNextWeapDelay := WEAPON_DELAY;
exit;
end;
end;
exit;
end;
end;
// i found her!
result := Byte(i);
resetWeaponQueue();
// i found her!
result := Byte(i);
resetWeaponQueue();
- FNextWeapDelay := 10; // anyway, 'cause why not
+ FNextWeapDelay := WEAPON_DELAY; // anyway, 'cause why not
exit;
end;
end;
exit;
end;
end;
function TPlayer.GetFlag(Flag: Byte): Boolean;
var
s, ts: String;
function TPlayer.GetFlag(Flag: Byte): Boolean;
var
s, ts: String;
- evtype: Byte;
+ evtype, a: Byte;
begin
Result := False;
begin
Result := False;
g_Map_ResetFlag(FFlag);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_CAPTURE], [AnsiUpperCase(s)]), 144);
g_Map_ResetFlag(FFlag);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_CAPTURE], [AnsiUpperCase(s)]), 144);
+ if ((Self = gPlayer1) or (Self = gPlayer2)
+ or ((gPlayer1 <> nil) and (gPlayer1.Team = FTeam))
+ or ((gPlayer2 <> nil) and (gPlayer2.Team = FTeam))) then
+ a := 0
+ else
+ a := 1;
+
+ if not sound_cap_flag[a].IsPlaying() then
+ sound_cap_flag[a].Play();
+
gTeamStat[FTeam].Goals := gTeamStat[FTeam].Goals + 1;
Result := True;
gTeamStat[FTeam].Goals := gTeamStat[FTeam].Goals + 1;
Result := True;
g_Map_ResetFlag(Flag);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_RETURN], [AnsiUpperCase(s)]), 144);
g_Map_ResetFlag(Flag);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_RETURN], [AnsiUpperCase(s)]), 144);
+ if ((Self = gPlayer1) or (Self = gPlayer2)
+ or ((gPlayer1 <> nil) and (gPlayer1.Team = FTeam))
+ or ((gPlayer2 <> nil) and (gPlayer2.Team = FTeam))) then
+ a := 0
+ else
+ a := 1;
+
+ if not sound_ret_flag[a].IsPlaying() then
+ sound_ret_flag[a].Play();
+
Result := True;
if g_Game_IsNet then
begin
Result := True;
if g_Game_IsNet then
begin
gFlags[Flag].State := FLAG_STATE_CAPTURED;
gFlags[Flag].State := FLAG_STATE_CAPTURED;
+ if ((Self = gPlayer1) or (Self = gPlayer2)
+ or ((gPlayer1 <> nil) and (gPlayer1.Team = FTeam))
+ or ((gPlayer2 <> nil) and (gPlayer2.Team = FTeam))) then
+ a := 0
+ else
+ a := 1;
+
+ if not sound_get_flag[a].IsPlaying() then
+ sound_get_flag[a].Play();
+
Result := True;
if g_Game_IsNet then
begin
Result := True;
if g_Game_IsNet then
begin
FModel.SetFlag(FFlag);
end;
FModel.SetFlag(FFlag);
end;
-function TPlayer.DropFlag(): Boolean;
+function TPlayer.DropFlag(Silent: Boolean = True): Boolean;
var
s: String;
var
s: String;
+ a: Byte;
begin
Result := False;
if (not g_Game_IsServer) or (FFlag = FLAG_NONE) then
begin
Result := False;
if (not g_Game_IsServer) or (FFlag = FLAG_NONE) then
g_Console_Add(Format(_lc[I_PLAYER_FLAG_DROP], [FName, s]), True);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_DROP], [AnsiUpperCase(s)]), 144);
g_Console_Add(Format(_lc[I_PLAYER_FLAG_DROP], [FName, s]), True);
g_Game_Message(Format(_lc[I_MESSAGE_FLAG_DROP], [AnsiUpperCase(s)]), 144);
+ if ((Self = gPlayer1) or (Self = gPlayer2)
+ or ((gPlayer1 <> nil) and (gPlayer1.Team = FTeam))
+ or ((gPlayer2 <> nil) and (gPlayer2.Team = FTeam))) then
+ a := 0
+ else
+ a := 1;
+
+ if (not Silent) and (not sound_lost_flag[a].IsPlaying()) then
+ sound_lost_flag[a].Play();
+
if g_Game_IsNet then
MH_SEND_FlagEvent(FLAG_STATE_DROPPED, Flag, FUID, False);
end;
if g_Game_IsNet then
MH_SEND_FlagEvent(FLAG_STATE_DROPPED, Flag, FUID, False);
end;