From 52c1edc4aba4aa850742200a391845a91f3451ef Mon Sep 17 00:00:00 2001 From: Stas'M Date: Sun, 15 Mar 2020 21:34:28 +0300 Subject: [PATCH] Player: Propagate valid SpawnerUID for corpse kills Addendum to e24864c. --- src/game/g_game.pas | 3 +-- src/game/g_monsters.pas | 8 ++++---- src/game/g_player.pas | 6 +++--- src/game/g_weapons.pas | 8 ++++---- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 16dd284..7da95bf 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -7662,8 +7662,7 @@ begin case gAnnouncer of ANNOUNCE_NONE: Exit; - ANNOUNCE_ME, - ANNOUNCE_MEPLUS: + ANNOUNCE_ME: if not g_Game_IsWatchedPlayer(SpawnerUID) then Exit; end; diff --git a/src/game/g_monsters.pas b/src/game/g_monsters.pas index 02e7ed5..a6e39d1 100644 --- a/src/game/g_monsters.pas +++ b/src/game/g_monsters.pas @@ -2938,9 +2938,9 @@ begin FObj.Rect.Width, 8, @co) and (Random(3) = 0) then // Ïèíàåì òðóïû if FObj.Vel.X < 0 then - gCorpses[a].Damage(b*2, -b, Random(7)) // íàëåâî + gCorpses[a].Damage(b*2, FUID, -b, Random(7)) // íàëåâî else - gCorpses[a].Damage(b*2, b, Random(7)); // íàïðàâî + gCorpses[a].Damage(b*2, FUID, b, Random(7)); // íàïðàâî end; end; // Åñëè öåëü âûñîêî, òî, âîçìîæíî, ïðûãàåì: @@ -3788,9 +3788,9 @@ begin FObj.Rect.Width, 8, @co) and (Random(3) = 0) then // Ïèíàåì òðóïû if FObj.Vel.X < 0 then - gCorpses[a].Damage(b*2, -b, Random(7)) // íàëåâî + gCorpses[a].Damage(b*2, FUID, -b, Random(7)) // íàëåâî else - gCorpses[a].Damage(b*2, b, Random(7)); // íàïðàâî + gCorpses[a].Damage(b*2, FUID, b, Random(7)); // íàïðàâî end; end; end; diff --git a/src/game/g_player.pas b/src/game/g_player.pas index dd5378b..a66b064 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -533,7 +533,7 @@ type public constructor Create(X, Y: Integer; ModelName: String; aMess: Boolean); destructor Destroy(); override; - procedure Damage(Value: Word; vx, vy: Integer); + procedure Damage(Value: Word; SpawnerUID: Word; vx, vy: Integer); procedure Update(); procedure Draw(); procedure SaveState (st: TStream); @@ -6617,7 +6617,7 @@ begin end; -procedure TCorpse.Damage(Value: Word; vx, vy: Integer); +procedure TCorpse.Damage(Value: Word; SpawnerUID: Word; vx, vy: Integer); var pm: TPlayerModel; Blood: TModelBlood; @@ -6648,7 +6648,7 @@ begin if (gBodyKillEvent <> -1) and gDelayedEvents[gBodyKillEvent].Pending then gDelayedEvents[gBodyKillEvent].Pending := False; - gBodyKillEvent := g_Game_DelayEvent(DE_BODYKILL, 1050, 0); + gBodyKillEvent := g_Game_DelayEvent(DE_BODYKILL, 1050, SpawnerUID); end; end else diff --git a/src/game/g_weapons.pas b/src/game/g_weapons.pas index bb17a41..79f6f25 100644 --- a/src/game/g_weapons.pas +++ b/src/game/g_weapons.pas @@ -527,7 +527,7 @@ begin g_TraceVector(X, Y, Obj.X+Obj.Rect.X+(Obj.Rect.Width div 2), Obj.Y+Obj.Rect.Y+(Obj.Rect.Height div 2)) then begin - Damage(50, 0, 0); + Damage(50, SpawnerUID, 0, 0); g_Weapon_BFGHit(Obj.X+Obj.Rect.X+(Obj.Rect.Width div 2), Obj.Y+Obj.Rect.Y+(Obj.Rect.Height div 2)); end; @@ -876,8 +876,8 @@ begin g_Obj_Collide(obj, @gCorpses[i].Obj) then begin // Ðàñïèëèâàåì òðóï: - gCorpses[i].Damage(d, (obj^.Vel.X+obj^.Accel.X) div 4, - (obj^.Vel.Y+obj^.Accel.Y) div 4); + gCorpses[i].Damage(d, SpawnerUID, (obj^.Vel.X+obj^.Accel.X) div 4, + (obj^.Vel.Y+obj^.Accel.Y) div 4); Result := 1; end; end; @@ -1050,7 +1050,7 @@ begin mm := Max(abs(dx), abs(dy)); if mm = 0 then mm := 1; - Damage(Round(100*(rad-m)/rad), (dx*10) div mm, (dy*10) div mm); + Damage(Round(100*(rad-m)/rad), SpawnerUID, (dx*10) div mm, (dy*10) div mm); end; end; -- 2.29.2