equal
deleted
inserted
replaced
91 PlaySoundV(sndOops, gi^.Hedgehog^.Team^.voicepack) |
91 PlaySoundV(sndOops, gi^.Hedgehog^.Team^.voicepack) |
92 |
92 |
93 else |
93 else |
94 begin |
94 begin |
95 if (gi^.State and gstMoving) = 0 then |
95 if (gi^.State and gstMoving) = 0 then |
|
96 begin |
|
97 gi^.dX.isNegative:= X<gi^.X; |
96 gi^.State := gi^.State or gstLoser; |
98 gi^.State := gi^.State or gstLoser; |
|
99 end; |
97 |
100 |
98 if d > r div 2 then |
101 if d > r div 2 then |
99 PlaySoundV(sndNooo, gi^.Hedgehog^.Team^.voicepack) |
102 PlaySoundV(sndNooo, gi^.Hedgehog^.Team^.voicepack) |
100 else |
103 else |
101 PlaySoundV(sndUhOh, gi^.Hedgehog^.Team^.voicepack); |
104 PlaySoundV(sndUhOh, gi^.Hedgehog^.Team^.voicepack); |
193 tdX := Gear^.dX; |
196 tdX := Gear^.dX; |
194 tdY := Gear^.dY; |
197 tdY := Gear^.dY; |
195 |
198 |
196 |
199 |
197 // might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips) |
200 // might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips) |
198 if (hwRound(Gear^.X) < LAND_WIDTH div -2) |
201 if (hwRound(Gear^.X) < min(LAND_WIDTH div -2, -2048)) |
199 or (hwRound(Gear^.X) > LAND_WIDTH * 3 div 2) then |
202 or (hwRound(Gear^.X) > max(LAND_WIDTH * 3 div 2, 6144)) then |
200 Gear^.State := Gear^.State or gstCollision; |
203 Gear^.State := Gear^.State or gstCollision; |
201 |
204 |
202 if Gear^.dY.isNegative then |
205 if Gear^.dY.isNegative then |
203 begin |
206 begin |
204 isFalling := true; |
207 isFalling := true; |
984 if (hwRound(Bullet^.X) and LAND_WIDTH_MASK <> 0) |
987 if (hwRound(Bullet^.X) and LAND_WIDTH_MASK <> 0) |
985 or (hwRound(Bullet^.Y) and LAND_HEIGHT_MASK <> 0) then |
988 or (hwRound(Bullet^.Y) and LAND_HEIGHT_MASK <> 0) then |
986 // only extend if not under water |
989 // only extend if not under water |
987 if hwRound(Bullet^.Y) < cWaterLine then |
990 if hwRound(Bullet^.Y) < cWaterLine then |
988 begin |
991 begin |
989 VGear^.dX := VGear^.dX + LAND_WIDTH * (VGear^.dX - VGear^.X); |
992 VGear^.dX := VGear^.dX + max(LAND_WIDTH,4096) * (VGear^.dX - VGear^.X); |
990 VGear^.dY := VGear^.dY + LAND_WIDTH * (VGear^.dY - VGear^.Y); |
993 VGear^.dY := VGear^.dY + max(LAND_WIDTH,4096) * (VGear^.dY - VGear^.Y); |
991 end; |
994 end; |
992 |
995 |
993 VGear^.Timer := 200; |
996 VGear^.Timer := 200; |
994 end; |
997 end; |
995 end; |
998 end; |
2168 end; |
2171 end; |
2169 |
2172 |
2170 if (GameTicks and $3F) = 0 then |
2173 if (GameTicks and $3F) = 0 then |
2171 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
2174 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
2172 |
2175 |
2173 if (hwRound(Gear^.X) > (LAND_WIDTH+2048)) or (hwRound(Gear^.X) < -2048) then |
2176 if (hwRound(Gear^.X) > (max(LAND_WIDTH,4096)+2048)) or (hwRound(Gear^.X) < -2048) then |
2174 begin |
2177 begin |
2175 // avoid to play forever (is this necessary?) |
2178 // avoid to play forever (is this necessary?) |
2176 StopSoundChan(Gear^.SoundChannel); |
2179 StopSoundChan(Gear^.SoundChannel); |
2177 DeleteGear(Gear) |
2180 DeleteGear(Gear) |
2178 end; |
2181 end; |
2188 Gear^.X := -_2048; |
2191 Gear^.X := -_2048; |
2189 end |
2192 end |
2190 else |
2193 else |
2191 begin |
2194 begin |
2192 Gear^.Tag := -1; |
2195 Gear^.Tag := -1; |
2193 Gear^.X := int2hwFloat(LAND_WIDTH + 2048); |
2196 Gear^.X := int2hwFloat(max(LAND_WIDTH,4096) + 2048); |
2194 end; |
2197 end; |
2195 |
2198 |
2196 Gear^.Y := int2hwFloat(topY-300); |
2199 Gear^.Y := int2hwFloat(topY-300); |
2197 Gear^.dX := int2hwFloat(Gear^.Target.X - 5 * Gear^.Tag * 15); |
2200 Gear^.dX := int2hwFloat(Gear^.Target.X - 5 * Gear^.Tag * 15); |
2198 |
2201 |
3967 else |
3970 else |
3968 loadNewPortalBall(Gear, true); |
3971 loadNewPortalBall(Gear, true); |
3969 end |
3972 end |
3970 |
3973 |
3971 else if (y > cWaterLine) |
3974 else if (y > cWaterLine) |
3972 or (y < -LAND_WIDTH) |
3975 or (y < -max(LAND_WIDTH,4096)) |
3973 or (x > 2*LAND_WIDTH) |
3976 or (x > 2*max(LAND_WIDTH,4096)) |
3974 or (x < -LAND_WIDTH) then |
3977 or (x < -max(LAND_WIDTH,4096)) then |
3975 loadNewPortalBall(Gear, true); |
3978 loadNewPortalBall(Gear, true); |
3976 end; |
3979 end; |
3977 |
3980 |
3978 procedure doStepMovingPortal(Gear: PGear); |
3981 procedure doStepMovingPortal(Gear: PGear); |
3979 begin |
3982 begin |
5109 Target.X:= gX; |
5112 Target.X:= gX; |
5110 Target.Y:= gY; |
5113 Target.Y:= gY; |
5111 X:= HHGear^.X; |
5114 X:= HHGear^.X; |
5112 Y:= HHGear^.Y |
5115 Y:= HHGear^.Y |
5113 end; |
5116 end; |
5114 if (gX > LAND_WIDTH*2) or |
5117 if (gX > max(LAND_WIDTH,4096)*2) or |
5115 (gX < -LAND_WIDTH) or |
5118 (gX < -max(LAND_WIDTH,4096)) or |
5116 (gY < -LAND_HEIGHT) or |
5119 (gY < -max(LAND_HEIGHT,4096)) or |
5117 (gY > LAND_HEIGHT+512) then |
5120 (gY > max(LAND_HEIGHT,4096)+512) then |
5118 begin |
5121 begin |
5119 X:= HHGear^.X; |
5122 X:= HHGear^.X; |
5120 Y:= HHGear^.Y |
5123 Y:= HHGear^.Y |
5121 end |
5124 end |
5122 end |
5125 end |