X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=f2a98ff8aedc6f6f86c10b39ed904677955781fc;hb=2a785940b8e595cffcc9e9d652c2ae9248c989ee;hp=6ffbe28dfc882c3fff794a6f788895c414ce5985;hpb=9e32c83666ba5c1f617f47f8b8f3ecb357b69653;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 6ffbe28..f2a98ff 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 @@ -243,6 +259,7 @@ type procedure SetFlag(Flag: Byte); function DropFlag(): Boolean; procedure AllRulez(Health: Boolean); + procedure RestoreHealthArmor(); procedure FragCombo(); procedure GiveItem(ItemType: Byte); procedure Damage(value: Word; SpawnerUID: Word; vx, vy: Integer; t: Byte); virtual; @@ -470,7 +487,7 @@ implementation uses e_log, g_map, g_items, g_console, SysUtils, g_gfx, Math, g_options, g_triggers, g_menu, MAPDEF, g_game, - WADEDITOR, g_main, g_monsters, CONFIG, g_language, g_net, g_netmsg; + wadreader, g_main, g_monsters, CONFIG, g_language, g_net, g_netmsg; type TBotProfile = record @@ -2159,6 +2176,7 @@ procedure TPlayer.Draw(); var ID: DWORD; w, h: Word; + dr: Boolean; begin if FLive then begin @@ -2178,7 +2196,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 @@ -5464,6 +5491,12 @@ begin FRulez := FRulez+[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; end; +procedure TPlayer.RestoreHealthArmor(); +begin + FHealth := PLAYER_HP_LIMIT; + FArmor := PLAYER_AP_LIMIT; +end; + procedure TPlayer.FragCombo(); var Param: Integer; @@ -5645,8 +5678,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