equal
deleted
inserted
replaced
90 //////////////////////////////////////////////////////////////////////////////// |
90 //////////////////////////////////////////////////////////////////////////////// |
91 procedure doStepDrowningGear(Gear: PGear); |
91 procedure doStepDrowningGear(Gear: PGear); |
92 begin |
92 begin |
93 AllInactive:= false; |
93 AllInactive:= false; |
94 Gear^.Y:= Gear^.Y + cDrownSpeed; |
94 Gear^.Y:= Gear^.Y + cDrownSpeed; |
95 if hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater then DeleteGear(Gear) |
95 if hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater then DeleteGear(Gear); |
|
96 // Create some bubbles (0.5% might be better but causes too few bubbles sometimes) |
|
97 if Random(1000) < 10 then AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, vgtBubble); |
96 end; |
98 end; |
97 |
99 |
98 //////////////////////////////////////////////////////////////////////////////// |
100 //////////////////////////////////////////////////////////////////////////////// |
99 procedure doStepFallingGear(Gear: PGear); |
101 procedure doStepFallingGear(Gear: PGear); |
100 var isFalling: boolean; |
102 var isFalling: boolean; |
1205 Gear^.doStep:= @doStepIdle |
1207 Gear^.doStep:= @doStepIdle |
1206 end; |
1208 end; |
1207 |
1209 |
1208 //////////////////////////////////////////////////////////////////////////////// |
1210 //////////////////////////////////////////////////////////////////////////////// |
1209 procedure doStepFlame(Gear: PGear); |
1211 procedure doStepFlame(Gear: PGear); |
|
1212 var i: Integer; |
1210 begin |
1213 begin |
1211 AllInactive:= false; |
1214 AllInactive:= false; |
1212 |
1215 |
1213 if not TestCollisionYwithGear(Gear, 1) then |
1216 if not TestCollisionYwithGear(Gear, 1) then |
1214 begin |
1217 begin |
1219 if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995; |
1222 if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995; |
1220 |
1223 |
1221 Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640; |
1224 Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640; |
1222 Gear^.Y:= Gear^.Y + Gear^.dY; |
1225 Gear^.Y:= Gear^.Y + Gear^.dY; |
1223 |
1226 |
1224 if not (hwRound(Gear^.Y) < cWaterLine) then |
1227 if (hwRound(Gear^.Y) > cWaterLine) then |
1225 begin |
1228 begin |
|
1229 for i:= 0 to 3 do |
|
1230 begin |
|
1231 AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 16 + Random(16), vgtSteam); |
|
1232 PlaySound(sndVaporize, false, nil); |
|
1233 end; |
1226 DeleteGear(Gear); |
1234 DeleteGear(Gear); |
1227 exit |
1235 exit |
1228 end |
1236 end |
1229 end else begin |
1237 end else begin |
1230 if Gear^.Timer > 0 then dec(Gear^.Timer) |
1238 if Gear^.Timer > 0 then dec(Gear^.Timer) |