X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=a7afb5c9d17116a2ed8a5624ec881c62124056c7;hb=3e9b43c5a53e39e3651b946c11ec61387406b36c;hp=38bb86a299228cfdd06c61bf01973c1aad915da4;hpb=711b70131199a68f0dfd966bce5f66fb9caf149a;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 38bb86a..a7afb5c 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -573,7 +573,7 @@ type TTeamStat = Array [TEAM_RED..TEAM_BLUE] of record - Goals: SmallInt; + Score: SmallInt; end; var @@ -600,6 +600,10 @@ procedure g_Gibs_SetMax(Count: Word); function g_Gibs_GetMax(): Word; procedure g_Corpses_SetMax(Count: Word); function g_Corpses_GetMax(): Word; +procedure g_Force_Model_Set(Mode: Word); +function g_Force_Model_Get(): Word; +procedure g_Forced_Model_SetName(Model: String); +function g_Forced_Model_GetName(): String; procedure g_Shells_SetMax(Count: Word); function g_Shells_GetMax(): Word; @@ -729,6 +733,8 @@ var MaxGibs: Word = 150; MaxCorpses: Word = 20; MaxShells: Word = 300; + ForceModel: Word = 0; + ForcedModelName: String = STD_PLAYER_MODEL; CurrentGib: Integer = 0; CurrentShell: Integer = 0; BotNames: Array of String; @@ -796,6 +802,26 @@ begin Result := MaxCorpses; end; +procedure g_Force_Model_Set(Mode: Word); +begin + ForceModel := Mode; +end; + +function g_Force_Model_Get(): Word; +begin + Result := ForceModel; +end; + +procedure g_Forced_Model_SetName(Model: String); +begin + ForcedModelName := Model; +end; + +function g_Forced_Model_GetName(): String; +begin + Result := ForcedModelName; +end; + function g_Player_Create(ModelName: String; Color: TRGB; Team: Byte; Bot: Boolean): Word; var a: Integer; @@ -831,6 +857,8 @@ begin gPlayers[a].FActualModelName := ModelName; gPlayers[a].SetModel(ModelName); + if Bot and (g_Force_Model_Get() <> 0) then + gPlayers[a].SetModel(g_Forced_Model_GetName()); // Íåò ìîäåëè - ñîçäàíèå íå âîçìîæíî: if gPlayers[a].FModel = nil then @@ -899,7 +927,11 @@ begin // create entity and load state if Bot then - gPlayers[a] := TBot.Create() + begin + gPlayers[a] := TBot.Create(); + if (g_Force_Model_Get() <> 0) then + gPlayers[a].SetModel(g_Forced_Model_GetName()); + end else gPlayers[a] := TPlayer.Create(); gPlayers[a].FPhysics := True; // ??? @@ -1488,8 +1520,8 @@ procedure g_Player_ResetAll(Force, Silent: Boolean); var i: Integer; begin - gTeamStat[TEAM_RED].Goals := 0; - gTeamStat[TEAM_BLUE].Goals := 0; + gTeamStat[TEAM_RED].Score := 0; + gTeamStat[TEAM_BLUE].Score := 0; if gPlayers <> nil then for i := 0 to High(gPlayers) do @@ -2299,8 +2331,13 @@ begin end; if t = HIT_WATER then + begin g_GFX_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), FObj.Y+PLAYER_RECT.Y-4, value div 2, 8, 4); + if Random(2) = 0 + then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) + else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); + end; end; // Áóôåð óðîíà: @@ -2738,7 +2775,7 @@ begin SY := gPlayerScreenSize.Y; Y := 0; - if gShowGoals and (gGameSettings.GameMode in [GM_TDM, GM_CTF]) then + if gShowScore and (gGameSettings.GameMode in [GM_TDM, GM_CTF]) then begin if gGameSettings.GameMode = GM_CTF then a := 32 + 8 @@ -2755,7 +2792,7 @@ begin e_Draw(ID, X-16-32, 240-72-4, 0, True, False); end; - s := IntToStr(gTeamStat[TEAM_RED].Goals); + s := IntToStr(gTeamStat[TEAM_RED].Score); e_CharFont_GetSize(gMenuFont, s, tw, th); e_CharFont_PrintEx(gMenuFont, X-16-a-tw, 240-72-4, s, TEAMCOLOR[TEAM_RED]); @@ -2770,7 +2807,7 @@ begin e_Draw(ID, X-16-32, 240-32-4, 0, True, False); end; - s := IntToStr(gTeamStat[TEAM_BLUE].Goals); + s := IntToStr(gTeamStat[TEAM_BLUE].Score); e_CharFont_GetSize(gMenuFont, s, tw, th); e_CharFont_PrintEx(gMenuFont, X-16-a-tw, 240-32-4, s, TEAMCOLOR[TEAM_BLUE]); end; @@ -3479,7 +3516,7 @@ begin if Srv then begin if gGameSettings.GameMode = GM_TDM then - Dec(gTeamStat[FTeam].Goals); + Dec(gTeamStat[FTeam].Score); if DoFrags or (gGameSettings.GameMode = GM_TDM) then begin Dec(FFrags); @@ -3506,7 +3543,7 @@ begin end; if (gGameSettings.GameMode = GM_TDM) and DoFrags then - Inc(gTeamStat[KP.Team].Goals, + Inc(gTeamStat[KP.Team].Score, IfThen(SameTeam(FUID, SpawnerUID), -1, 1)); if netsrv then MH_SEND_PlayerStats(SpawnerUID); @@ -3667,7 +3704,7 @@ begin g_Game_Message(Format(_lc[I_MESSAGE_TLMS_WIN], [AnsiUpperCase(_lc[I_GAME_TEAM_RED])]), 144); if Netsrv then MH_SEND_GameEvent(NET_EV_TLMS_WIN, TEAM_RED); - Inc(gTeamStat[TEAM_RED].Goals); + Inc(gTeamStat[TEAM_RED].Score); gLMSRespawn := LMS_RESPAWN_FINAL; gLMSRespawnTime := gTime + 5000; end @@ -3677,7 +3714,7 @@ begin g_Game_Message(Format(_lc[I_MESSAGE_TLMS_WIN], [AnsiUpperCase(_lc[I_GAME_TEAM_BLUE])]), 144); if Netsrv then MH_SEND_GameEvent(NET_EV_TLMS_WIN, TEAM_BLUE); - Inc(gTeamStat[TEAM_BLUE].Goals); + Inc(gTeamStat[TEAM_BLUE].Score); gLMSRespawn := LMS_RESPAWN_FINAL; gLMSRespawnTime := gTime + 5000; end @@ -5373,10 +5410,9 @@ begin else if (FAir mod 31 = 0) and not blockmon then begin g_GFX_Bubbles(FObj.X+PLAYER_RECT.X+(PLAYER_RECT.Width div 2), FObj.Y+PLAYER_RECT.Y-4, 5+Random(6), 8, 4); - if Random(2) = 0 then - g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) - else - g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); + if Random(2) = 0 + then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) + else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); end; end else if FAir < AIR_DEF then FAir := AIR_DEF; @@ -5798,7 +5834,7 @@ begin if not sound_cap_flag[a].IsPlaying() then sound_cap_flag[a].Play(); - gTeamStat[FTeam].Goals := gTeamStat[FTeam].Goals + 1; + gTeamStat[FTeam].Score += 1; Result := True; if g_Game_IsNet then @@ -6477,10 +6513,9 @@ begin begin g_GFX_Bubbles(Obj.X+Obj.Rect.X+(Obj.Rect.Width div 2)+Random(3)-1, Obj.Y+Obj.Rect.Height+8, 1, 8, 4); - if Random(2) = 0 then - g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) - else - g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); + if Random(2) = 0 + then g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y) + else g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y); Exit; end;