diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index 0522063cc24e07670a0c095dc391e2fadc56b3b8..736d22e1623ce2d1291825a49386cc63a75963c9 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
implementation
uses
-{$IFDEF USE_NANOGL}
- nanoGL,
-{$ELSE}
- GL,
+{$INCLUDE ../nogl/noGLuses.inc}
+{$IFDEF ENABLE_HOLMES}
+ g_holmes,
{$ENDIF}
e_log, g_map, g_items, g_console, g_gfx, Math,
g_options, g_triggers, g_menu, g_game, g_grid,
wadreader, g_main, g_monsters, CONFIG, g_language,
- g_net, g_netmsg, g_window, g_holmes,
+ g_net, g_netmsg, g_window,
utils, xstreams;
const PLR_SAVE_VERSION = 0;
Mirror := TMirrorType.Horizontal;
if FPunchAnim <> nil then
+ begin
FPunchAnim.Draw(FObj.X+IfThen(Direction = TDirection.D_LEFT, 15-FObj.Rect.X, FObj.Rect.X-15),
FObj.Y+FObj.Rect.Y-11, Mirror);
+ if FPunchAnim.played then
+ begin
+ FPunchAnim.Free;
+ FPunchAnim := nil;
+ end;
+ end;
if (FMegaRulez[MR_INVUL] > gTime) and (gPlayerDrawn <> Self) then
if g_Texture_Get('TEXTURE_PLAYER_INVULPENTA', ID) then
var
ex, ey: Integer;
begin
+
+{$IFDEF ENABLE_HOLMES}
if isValidViewPort and (self = gPlayer1) then
begin
g_Holmes_plrLaser(ax0, ay0, ax1, ay1);
end;
+{$ENDIF}
e_DrawLine(sz, ax0, ay0, ax1, ay1, 255, 0, 0, 96);
if (g_Map_traceToNearestWall(ax0, ay0, ax1, ay1, @ex, @ey) <> nil) then
procedure TPlayer.DoPunch();
var
id: DWORD;
+ st: String;
begin
- if FPunchAnim = nil then begin
- g_Frames_Get(id, 'FRAMES_PUNCH');
- FPunchAnim := TAnimation.Create(id, False, 1);
- end else
+ if FPunchAnim <> nil then begin
FPunchAnim.reset();
+ FPunchAnim.Free;
+ FPunchAnim := nil;
+ end;
+ st := 'FRAMES_PUNCH';
+ if R_BERSERK in FRulez then
+ st := st + '_BERSERK';
+ if FKeys[KEY_UP].Pressed then
+ st := st + '_UP'
+ else if FKeys[KEY_DOWN].Pressed then
+ st := st + '_DN';
+ g_Frames_Get(id, st);
+ FPunchAnim := TAnimation.Create(id, False, 1);
end;
procedure TPlayer.Fire();
case FCurrWeap of
WEAPON_KASTET:
begin
+ DoPunch();
if R_BERSERK in FRulez then
begin
//g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID);
locobj.Accel.X := xd-wx;
locobj.Accel.y := yd-wy;
- DoPunch();
-
if g_Weapon_Hit(@locobj, 50, FUID, HIT_SOME) <> 0 then
g_Sound_PlayExAt('SOUND_WEAPON_HITBERSERK', FObj.X, FObj.Y)
else
Anim: TAnimation;
ID: DWORD;
begin
+ FIncCam := 0;
+ FBFGFireCounter := -1;
+ FShellTimer := -1;
+ FPain := 0;
+ FLastHit := 0;
+
if not g_Game_IsServer then
Exit;
if FDummy then
else
FAngle := 0;
- FIncCam := 0;
- FBFGFireCounter := -1;
- FShellTimer := -1;
- FPain := 0;
- FLastHit := 0;
-
SetAction(A_STAND, True);
FModel.Direction := FDirection;
case FCurrWeap of
WEAPON_KASTET:
begin
+ DoPunch();
if R_BERSERK in FRulez then
begin
//g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID);
locobj.Accel.X := xd-wx;
locobj.Accel.y := yd-wy;
- DoPunch();
-
if g_Weapon_Hit(@locobj, 50, FUID, HIT_SOME) <> 0 then
g_Sound_PlayExAt('SOUND_WEAPON_HITBERSERK', FObj.X, FObj.Y)
else