2164 vgt^.dy:= 0; |
2164 vgt^.dy:= 0; |
2165 vgt^.FrameTicks:= 1800 div (Gear^.Tag mod 3 + 2); |
2165 vgt^.FrameTicks:= 1800 div (Gear^.Tag mod 3 + 2); |
2166 end; |
2166 end; |
2167 end; |
2167 end; |
2168 |
2168 |
2169 |
2169 if (Gear^.dX.QWordValue > _2.QWordValue) |
2170 if Gear^.dX.QWordValue > _0_01.QWordValue then |
2170 or (Gear^.dY.QWordValue > _2.QWordValue) |
2171 Gear^.dX := Gear^.dX * _0_995; |
2171 then |
2172 |
2172 begin |
2173 Gear^.dY := Gear^.dY + cGravity; |
2173 // norm speed vector to length of 2 for fire particles to keep flying in the same direction |
2174 // if sticky then Gear^.dY := Gear^.dY + cGravity; |
2174 f:= _2 / Distance(Gear^.dX, Gear^.dY); |
2175 |
2175 Gear^.dX:= Gear^.dX * f; |
2176 if Gear^.dY.QWordValue > _0_2.QWordValue then |
2176 Gear^.dY:= Gear^.dY * f; |
2177 Gear^.dY := Gear^.dY * _0_995; |
2177 end |
2178 |
2178 else begin |
2179 //if sticky then Gear^.X := Gear^.X + Gear^.dX else |
2179 if Gear^.dX.QWordValue > _0_01.QWordValue then |
2180 Gear^.X := Gear^.X + Gear^.dX + cWindSpeed * 640; |
2180 if Gear^.dX.QWordValue > _2.QWordValue then |
2181 Gear^.Y := Gear^.Y + Gear^.dY; |
2181 Gear^.dX := Gear^.dX * _0_995; |
|
2182 |
|
2183 Gear^.dY := Gear^.dY + cGravity; |
|
2184 // if sticky then Gear^.dY := Gear^.dY + cGravity; |
|
2185 |
|
2186 if Gear^.dY.QWordValue > _0_2.QWordValue then |
|
2187 Gear^.dY := Gear^.dY * _0_995; |
|
2188 |
|
2189 //if sticky then Gear^.X := Gear^.X + Gear^.dX else |
|
2190 Gear^.X := Gear^.X + Gear^.dX + cWindSpeed * 640; |
|
2191 Gear^.Y := Gear^.Y + Gear^.dY; |
|
2192 end; |
2182 |
2193 |
2183 gX := hwRound(Gear^.X); |
2194 gX := hwRound(Gear^.X); |
2184 gY := hwRound(Gear^.Y); |
2195 gY := hwRound(Gear^.Y); |
2185 |
2196 |
2186 if CheckCoordInWater(gX, gY) then |
2197 if CheckCoordInWater(gX, gY) then |