equal
deleted
inserted
replaced
6364 |
6364 |
6365 // Duck falls (Pos = 0) |
6365 // Duck falls (Pos = 0) |
6366 if Gear^.Pos = 0 then |
6366 if Gear^.Pos = 0 then |
6367 begin |
6367 begin |
6368 doStepFallingGear(Gear); |
6368 doStepFallingGear(Gear); |
6369 // Karma is distance from water |
6369 (* Check if duck is near water surface |
|
6370 (Karma is distance from water) *) |
6370 if cWaterLine <= hwRound(Gear^.Y) + Gear^.Karma then |
6371 if cWaterLine <= hwRound(Gear^.Y) + Gear^.Karma then |
6371 begin |
6372 begin |
|
6373 PlaySound(sndDroplet2); |
|
6374 if Gear^.dY > _0_4 then |
|
6375 PlaySound(sndDuckWater); |
6372 Gear^.Pos:= 1; |
6376 Gear^.Pos:= 1; |
6373 Gear^.Timer:= Gear^.WDTimer; |
6377 Gear^.Timer:= Gear^.WDTimer; |
6374 Gear^.dY:= _0; |
6378 Gear^.dY:= _0; |
6375 Gear^.State:= Gear^.State or gstNoGravity; |
6379 Gear^.State:= Gear^.State or gstNoGravity; |
6376 end; |
6380 end; |
6394 if WorldEdge = weSea then |
6398 if WorldEdge = weSea then |
6395 begin |
6399 begin |
6396 // Left edge |
6400 // Left edge |
6397 if (LeftX >= hwRound(Gear^.X) - Gear^.Karma) and (Gear^.Pos < 3) then |
6401 if (LeftX >= hwRound(Gear^.X) - Gear^.Karma) and (Gear^.Pos < 3) then |
6398 begin |
6402 begin |
|
6403 PlaySound(sndDuckWater); |
6399 Gear^.Pos:= 3; |
6404 Gear^.Pos:= 3; |
6400 if Gear^.Tag = 1 then |
6405 if Gear^.Tag = 1 then |
6401 Gear^.Angle:= 90 |
6406 Gear^.Angle:= 90 |
6402 else |
6407 else |
6403 Gear^.Angle:= 270; |
6408 Gear^.Angle:= 270; |
6405 Gear^.dX:= _0; |
6410 Gear^.dX:= _0; |
6406 end |
6411 end |
6407 // Right edge |
6412 // Right edge |
6408 else if (RightX <= hwRound(Gear^.X) + Gear^.Karma) and (Gear^.Pos < 3) then |
6413 else if (RightX <= hwRound(Gear^.X) + Gear^.Karma) and (Gear^.Pos < 3) then |
6409 begin |
6414 begin |
|
6415 PlaySound(sndDuckWater); |
6410 Gear^.Pos:= 4; |
6416 Gear^.Pos:= 4; |
6411 if Gear^.Tag = 1 then |
6417 if Gear^.Tag = 1 then |
6412 Gear^.Angle:= 270 |
6418 Gear^.Angle:= 270 |
6413 else |
6419 else |
6414 Gear^.Angle:= 90; |
6420 Gear^.Angle:= 90; |
6415 Gear^.dY:= -Gear^.dX; |
6421 Gear^.dY:= -Gear^.dX; |
6416 Gear^.dX:= _0; |
6422 Gear^.dX:= _0; |
6420 // Explode duck |
6426 // Explode duck |
6421 CheckCollision(Gear); |
6427 CheckCollision(Gear); |
6422 if (Gear^.Timer = 0) or ((Gear^.State and gstCollision) <> 0) then |
6428 if (Gear^.Timer = 0) or ((Gear^.State and gstCollision) <> 0) then |
6423 begin |
6429 begin |
6424 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Boom, Gear^.Hedgehog, EXPLAutoSound); |
6430 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Boom, Gear^.Hedgehog, EXPLAutoSound); |
|
6431 PlaySound(sndDuckDie); |
6425 DeleteGear(Gear); |
6432 DeleteGear(Gear); |
6426 exit; |
6433 exit; |
6427 end; |
6434 end; |
6428 |
6435 |
6429 dec(Gear^.Timer); |
6436 dec(Gear^.Timer); |