231 procedure doStepDrowningGear(Gear: PGear); |
231 procedure doStepDrowningGear(Gear: PGear); |
232 begin |
232 begin |
233 AllInactive := false; |
233 AllInactive := false; |
234 Gear^.Y := Gear^.Y + cDrownSpeed; |
234 Gear^.Y := Gear^.Y + cDrownSpeed; |
235 Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed; |
235 Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed; |
236 if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then |
236 if (not SuddenDeathDmg and (cWaterOpacity > $FE)) or (SuddenDeathDmg and (cSDWaterOpacity > $FE)) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then |
237 DeleteGear(Gear); |
237 DeleteGear(Gear); |
238 // Create some bubbles (0.5% might be better but causes too few bubbles sometimes) |
238 // Create some bubbles (0.5% might be better but causes too few bubbles sometimes) |
239 if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then |
239 if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) and ((GameTicks and $1F) = 0) then |
240 if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then |
240 if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then |
241 AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, |
241 AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, |
242 vgtBubble) |
242 vgtBubble) |
243 else if Random(12) = 0 then |
243 else if Random(12) = 0 then |
244 AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, |
244 AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, |
890 begin |
890 begin |
891 DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 82 - i, 1); |
891 DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 82 - i, 1); |
892 dec(Gear^.Health, Gear^.Damage); |
892 dec(Gear^.Health, Gear^.Damage); |
893 Gear^.Damage := 0 |
893 Gear^.Damage := 0 |
894 end; |
894 end; |
895 if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then |
895 if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) then |
896 begin |
896 begin |
897 for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do |
897 for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do |
898 begin |
898 begin |
899 if Random(6) = 0 then |
899 if Random(6) = 0 then |
900 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble); |
900 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble); |