X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=caddc0d9e7612dfa230b9676b010a95373bb6cbb;hb=7cd1c130359bef86087eaefe317526775e8ad4f8;hp=28c28b15f9e118a74f9c3940d6da46da8bb42656;hpb=844441154d1220d6c83f75043300c2851ec87109;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 28c28b1..caddc0d 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -1,3 +1,19 @@ +(* Copyright (C) DooM 2D:Forever Developers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *) +{$MODE DELPHI} unit g_player; interface @@ -271,6 +287,7 @@ type procedure NetFire(Wpn: Byte; X, Y, AX, AY: Integer; WID: Integer = -1); procedure DoLerp(Level: Integer = 2); procedure SetLerp(XTo, YTo: Integer); + procedure ForceWeapon(Weapon: Byte); procedure JetpackOn; procedure JetpackOff; @@ -2160,6 +2177,7 @@ procedure TPlayer.Draw(); var ID: DWORD; w, h: Word; + dr: Boolean; begin if FLive then begin @@ -2179,7 +2197,16 @@ begin begin if (gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or ((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM))) then - FModel.Draw(FObj.X, FObj.Y, 200) + begin + if (FMegaRulez[MR_INVIS] - gTime) <= 2100 then + dr := not Odd((FMegaRulez[MR_INVIS] - gTime) div 300) + else + dr := True; + if dr then + FModel.Draw(FObj.X, FObj.Y, 200) + else + FModel.Draw(FObj.X, FObj.Y); + end else FModel.Draw(FObj.X, FObj.Y, 254); end @@ -3224,6 +3251,30 @@ begin 150, 0, 0); end; +procedure TPlayer.ForceWeapon(Weapon: Byte); +var + i: Byte; +begin + if g_Game_IsClient then Exit; + if Weapon > High(FWeapon) then Exit; + if FBFGFireCounter <> -1 then Exit; + + if FTime[T_SWITCH] > gTime then Exit; + + for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do + if FReloading[i] > 0 then Exit; + + if FWeapon[Weapon] then + begin + FCurrWeap := Weapon; + FTime[T_SWITCH] := gTime+156; + if FCurrWeap = WEAPON_SAW then + FSawSoundSelect.PlayAt(FObj.X, FObj.Y); + FModel.SetWeapon(FCurrWeap); + if g_Game_IsNet then MH_SEND_PlayerStats(FUID); + end; +end; + procedure TPlayer.NextWeapon(); var i: Byte; @@ -5652,8 +5703,9 @@ begin g_Player_CreateGibs(FObj.X+FObj.Rect.X+(FObj.Rect.Width div 2), FObj.Y+FObj.Rect.Y+(FObj.Rect.Height div 2), FModelName, FColor); + // Çâóê ìÿñà îò òðóïà: pm := g_PlayerModel_Get(FModelName); - pm.PlaySound(MODELSOUND_DIE, 3, FObj.X, FObj.Y); + pm.PlaySound(MODELSOUND_DIE, 5, FObj.X, FObj.Y); pm.Free; end; end