DEADSOFTWARE

Game: Split bubbles effect code into a distinct function
[d2df-sdl.git] / src / game / g_monsters.pas
index 02e7ed589ae6fa4b69b7b686ebd50f69ee5752af..ad887adfdd29d7e102c3a36069630eb0734437af 100644 (file)
@@ -2577,19 +2577,14 @@ begin
     case FMonsterType of
       MONSTER_FISH:
         if Random(4) = 0 then
-          g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
-                        FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
+          g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
+                                FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
       MONSTER_ROBO, MONSTER_BARREL:
-        g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
-                      FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
-      else begin
-        g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width-4),
-                      FObj.Y+FObj.Rect.Y + Random(4), 5, 4, 4);
-        if Random(2) = 0 then
-          g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y)
-        else
-          g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y);
-      end;
+        g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
+                              FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
+      else
+        g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width-4),
+                              FObj.Y+FObj.Rect.Y + Random(4), 5, 4, 4);
     end;
 
 // Åñëè ïðîøåë ïåðâûé êàäð àíèìàöèè âçðûâà áî÷êè, òî âçðûâ:
@@ -2938,9 +2933,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;
           // Åñëè öåëü âûñîêî, òî, âîçìîæíî, ïðûãàåì:
@@ -3538,19 +3533,14 @@ begin
     case FMonsterType of
       MONSTER_FISH:
         if Random(4) = 0 then
-          g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
-                        FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
+          g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
+                                FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
       MONSTER_ROBO, MONSTER_BARREL:
-        g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
-                      FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
-      else begin
-        g_GFX_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width-4),
-                      FObj.Y+FObj.Rect.Y + Random(4), 5, 4, 4);
-        if Random(2) = 0 then
-          g_Sound_PlayExAt('SOUND_GAME_BUBBLE1', FObj.X, FObj.Y)
-        else
-          g_Sound_PlayExAt('SOUND_GAME_BUBBLE2', FObj.X, FObj.Y);
-      end;
+        g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width),
+                              FObj.Y+FObj.Rect.Y + Random(4), 1, 0, 0);
+      else
+        g_Game_Effect_Bubbles(FObj.X+FObj.Rect.X + Random(FObj.Rect.Width-4),
+                              FObj.Y+FObj.Rect.Y + Random(4), 5, 4, 4);
     end;
 
 // Åñëè ïðîøåë ïåðâûé êàäð àíèìàöèè âçðûâà áî÷êè, òî âçðûâ:
@@ -3788,9 +3778,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;
@@ -4663,6 +4653,8 @@ begin
       FAnim[i, TDirection.D_RIGHT].LoadState(st);
     end;
   end;
+  // update cache
+  self.positionChanged
 end;