diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index a0496da85e63e8314c938bcea0aa18bd7a957495..eea3f5db57e4b85c0ced6448b4d64eb642f41a86 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
FXTo, FYTo: Integer;
FSpectatePlayer: Integer;
FFirePainTime: Integer;
+ FFireAttacker: Word;
FSavedState: TPlayerSavedState;
procedure RealizeCurrentWeapon();
procedure JetpackOn;
procedure JetpackOff;
- procedure CatchFire();
+ procedure CatchFire(Attacker: Word);
property Name: String read FName write FName;
property Model: TPlayerModel read FModel;
// WEAPON_CHAINGUN, WEAPON_SHOTGUN1, WEAPON_SAW,
// WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_KASTET);
WEAPON_RELOAD: Array [WP_FIRST..WP_LAST] of Byte =
- (5, 2, 6, 18, 36, 2, 12, 2, 14, 2, 0);
+ (5, 2, 6, 18, 36, 2, 12, 2, 14, 2, 2);
PLAYER_SIGNATURE = $52594C50; // 'PLYR'
CORPSE_SIGNATURE = $50524F43; // 'CORP'
FShellTimer := -1;
FFireTime := 0;
FFirePainTime := 0;
+ FFireAttacker := 0;
FActualModelName := 'doomer';
FJetSoundOff.PlayAt(FObj.X, FObj.Y);
end;
-procedure TPlayer.CatchFire();
+procedure TPlayer.CatchFire(Attacker: Word);
begin
- FFireTime := 360;
+ FFireTime := 100;
+ FFireAttacker := Attacker;
if g_Game_IsNet and g_Game_IsServer then
MH_SEND_PlayerStats(FUID);
end;
IncMax(FHealth, 10, PLAYER_HP_SOFT);
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
IncMax(FHealth, 25, PLAYER_HP_SOFT);
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
IncMax(FHealth, 100, PLAYER_HP_LIMIT);
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
FArmor := PLAYER_AP_LIMIT;
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
FMegaRulez[MR_SUIT] := gTime+PLAYER_SUIT_TIME;
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
FBerserk := gTime+30000;
Result := True;
remove := True;
+ FFireTime := 0;
end;
if FHealth < PLAYER_HP_SOFT then
begin
FBerserk := gTime+30000;
Result := True;
remove := True;
+ FFireTime := 0;
end;
end;
IncMax(FHealth, 4, PLAYER_HP_LIMIT);
Result := True;
remove := True;
+ FFireTime := 0;
if gFlash = 2 then Inc(FPickup, 5);
end;
FDamageBuffer := 0;
FJetpack := False;
FCanJetpack := False;
+ FFireTime := 0;
+ FFirePainTime := 0;
+ FFireAttacker := 0;
// Àíèìàöèÿ âîçðîæäåíèÿ:
if (not gLoadGameMode) and (not Silent) then
FFireTime := 0;
FFirePainTime := 0;
end
+ else if FMegaRulez[MR_SUIT] >= gTime then
+ begin
+ if FMegaRulez[MR_SUIT] = gTime then
+ FFireTime := 1;
+ FFirePainTime := 0;
+ end
else
begin
OnFireFlame(1);
if FFirePainTime <= 0 then
begin
if g_Game_IsServer then
- Damage(5, 0, 0, 0, HIT_FLAME);
+ Damage(5, FFireAttacker, 0, 0, HIT_FLAME);
FFirePainTime := 18;
end;
FFirePainTime := FFirePainTime - 1;