391 amSniperRifle: begin |
391 amSniperRifle: begin |
392 PlaySound(sndSniperReload); |
392 PlaySound(sndSniperReload); |
393 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); |
393 newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); |
394 end; |
394 end; |
395 amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); |
395 amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); |
396 amDuck: begin |
396 amCreeper: begin |
397 // Does duck spawn inside water? |
397 // TODO: Implement proper creeper spawning code. This is still the old rubber duck code. |
|
398 |
|
399 // Does it spawn inside water? |
398 if (LeftX > hwRound(Gear^.X) - Gear^.Karma) or (RightX < hwRound(Gear^.X) + Gear^.Karma) or (cWaterLine < hwRound(Gear^.Y) + Gear^.Karma) then |
400 if (LeftX > hwRound(Gear^.X) - Gear^.Karma) or (RightX < hwRound(Gear^.X) + Gear^.Karma) or (cWaterLine < hwRound(Gear^.Y) + Gear^.Karma) then |
399 PlaySound(sndDroplet2) |
401 PlaySound(sndDroplet2) |
400 else |
402 else |
401 // Duck spawned in air, normal drop sound |
403 // spawned in air, normal drop sound |
402 PlaySound(sndDuckDrop); |
404 PlaySound(sndCreeperDrop); |
403 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDuck, 0, SignAs(_0_03, dX), _0, 0); |
405 newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtCreeper, 0, SignAs(_0_03, dX), _0, 0); |
404 if not ((not dX.isNegative) xor ((State and gstHHHJump) <> 0)) then |
406 if not ((not dX.isNegative) xor ((State and gstHHHJump) <> 0)) then |
405 newGear^.Tag:= -1 |
407 newGear^.Tag:= -1 |
406 else |
408 else |
407 newGear^.Tag:= 1; |
409 newGear^.Tag:= 1; |
408 end; |
410 end; |