X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_monsters.pas;h=d8adad853402974c802ba9bfbd3f58761809835e;hb=48b4e4111d5f86af9a0f968f5ef7cf76b3ce538b;hp=a6e39d1f07215ddf0ac526be15ad345df66bd787;hpb=52c1edc4aba4aa850742200a391845a91f3451ef;p=d2df-sdl.git diff --git a/src/game/g_monsters.pas b/src/game/g_monsters.pas index a6e39d1..d8adad8 100644 --- a/src/game/g_monsters.pas +++ b/src/game/g_monsters.pas @@ -2468,7 +2468,7 @@ var a, b, sx, sy, wx, wy, oldvelx: Integer; st: Word; o, co: TObj; - fall: Boolean; + fall, bubbles: Boolean; mon: TMonster; mit: PMonster; it: TMonsterGrid.Iter; @@ -2476,6 +2476,7 @@ label _end; begin fall := True; + bubbles := True; // Ìîíñòð ñòàòè÷åí ïîêà èäåò warmup if (gLMSRespawn > LMS_RESPAWN_NONE) then exit; @@ -2574,23 +2575,23 @@ begin // Âîçìîæíî, ñîçäàåì ïóçûðüêè â âîäå: if WordBool(st and MOVE_INWATER) and (Random(32) = 0) then + begin case FMonsterType of MONSTER_FISH: - if Random(4) = 0 then + if Random(4) <> 0 then bubbles := False else g_GFX_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 + else 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; end; + if bubbles then 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; // Åñëè ïðîøåë ïåðâûé êàäð àíèìàöèè âçðûâà áî÷êè, òî âçðûâ: if FMonsterType = MONSTER_BARREL then @@ -3462,13 +3463,14 @@ var a, b, sx, sy, oldvelx: Integer; st: Word; o, co: TObj; - fall: Boolean; + fall, bubbles: Boolean; label _end; begin sx := 0; // SHUT UP COMPILER sy := 0; fall := True; + bubbles := True; // Ìîíñòð ñòàòè÷åí ïîêà èäåò warmup if (gLMSRespawn > LMS_RESPAWN_NONE) then exit; @@ -3535,23 +3537,23 @@ begin // Âîçìîæíî, ñîçäàåì ïóçûðüêè â âîäå: if WordBool(st and MOVE_INWATER) and (Random(32) = 0) then + begin case FMonsterType of MONSTER_FISH: - if Random(4) = 0 then + if Random(4) <> 0 then bubbles := False else g_GFX_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 + else 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; end; + if bubbles then 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; // Åñëè ïðîøåë ïåðâûé êàäð àíèìàöèè âçðûâà áî÷êè, òî âçðûâ: if FMonsterType = MONSTER_BARREL then @@ -4663,6 +4665,8 @@ begin FAnim[i, TDirection.D_RIGHT].LoadState(st); end; end; + // update cache + self.positionChanged end;