2074 doStepParachuteWork(Gear) |
2074 doStepParachuteWork(Gear) |
2075 end; |
2075 end; |
2076 |
2076 |
2077 //////////////////////////////////////////////////////////////////////////////// |
2077 //////////////////////////////////////////////////////////////////////////////// |
2078 procedure doStepAirAttackWork(Gear: PGear); |
2078 procedure doStepAirAttackWork(Gear: PGear); |
2079 var |
2079 //var |
2080 i: Longint; |
2080 // i: Longint; |
2081 begin |
2081 begin |
2082 AllInactive := false; |
2082 AllInactive := false; |
2083 Gear^.X := Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
2083 Gear^.X := Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
2084 |
2084 |
2085 if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
2085 if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
2088 case Gear^.State of |
2088 case Gear^.State of |
2089 0: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * |
2089 0: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * |
2090 Gear^.Tag, _0, 0); |
2090 Gear^.Tag, _0, 0); |
2091 1: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine, 0, cBombsSpeed * |
2091 1: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine, 0, cBombsSpeed * |
2092 Gear^.Tag, _0, 0); |
2092 Gear^.Tag, _0, 0); |
2093 2: for i:= -19 to 19 do |
2093 2: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtNapalmBomb, 0, cBombsSpeed * |
2094 FollowGear := AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, |
2094 Gear^.Tag, _0, 0); |
2095 _0_001 * i, _0, 0); |
2095 //2: for i:= -19 to 19 do |
|
2096 // FollowGear := AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, |
|
2097 // _0_001 * i, _0, 0); |
2096 3: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtDrill, gsttmpFlag, cBombsSpeed * |
2098 3: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtDrill, gsttmpFlag, cBombsSpeed * |
2097 Gear^.Tag, _0, 0); |
2099 Gear^.Tag, _0, 0); |
2098 //4: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtWaterMelon, 0, cBombsSpeed * |
2100 //4: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtWaterMelon, 0, cBombsSpeed * |
2099 // Gear^.Tag, _0, 5000); |
2101 // Gear^.Tag, _0, 5000); |
2100 end; |
2102 end; |
2123 end; |
2125 end; |
2124 |
2126 |
2125 Gear^.Y := int2hwFloat(topY-300); |
2127 Gear^.Y := int2hwFloat(topY-300); |
2126 Gear^.dX := int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); |
2128 Gear^.dX := int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); |
2127 |
2129 |
2128 if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) and (Gear^.State <> 2) then |
2130 if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then //and (Gear^.State <> 2) then |
2129 Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / |
2131 Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / |
2130 cGravity) * Gear^.Tag; |
2132 cGravity) * Gear^.Tag; |
2131 |
2133 |
2132 Gear^.Health := 6; |
2134 Gear^.Health := 6; |
2133 Gear^.doStep := @doStepAirAttackWork; |
2135 Gear^.doStep := @doStepAirAttackWork; |
4359 Gear^.doStep := @doStepIdle; |
4361 Gear^.doStep := @doStepIdle; |
4360 end |
4362 end |
4361 end; |
4363 end; |
4362 |
4364 |
4363 //////////////////////////////////////////////////////////////////////////////// |
4365 //////////////////////////////////////////////////////////////////////////////// |
4364 |
4366 procedure doStepNapalmBomb(Gear: PGear); |
|
4367 var |
|
4368 i, gX, gY: LongInt; |
|
4369 dX, dY: hwFloat; |
|
4370 begin |
|
4371 AllInactive := false; |
|
4372 doStepFallingGear(Gear); |
|
4373 if (Gear^.Timer > 0) and ((Gear^.State and gstCollision) <> 0) then |
|
4374 begin |
|
4375 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound); |
|
4376 gX := hwRound(Gear^.X); |
|
4377 gY := hwRound(Gear^.Y); |
|
4378 for i:= 0 to 10 do |
|
4379 begin |
|
4380 dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1); |
|
4381 dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1); |
|
4382 AddGear(gX, gY, gtFlame, 0, dX, dY, 0); |
|
4383 AddGear(gX, gY, gtFlame, 0, dX, -dY, 0); |
|
4384 AddGear(gX, gY, gtFlame, 0, -dX, dY, 0); |
|
4385 AddGear(gX, gY, gtFlame, 0, -dX, -dY, 0); |
|
4386 end; |
|
4387 DeleteGear(Gear); |
|
4388 exit |
|
4389 end; |
|
4390 if (Gear^.Timer = 0) then |
|
4391 begin |
|
4392 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound); |
|
4393 for i:= -19 to 19 do |
|
4394 FollowGear := AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0); |
|
4395 DeleteGear(Gear); |
|
4396 exit |
|
4397 end; |
|
4398 if (GameTicks and $3F) = 0 then |
|
4399 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
|
4400 dec(Gear^.Timer) |
|
4401 end; |
|
4402 |
|
4403 //////////////////////////////////////////////////////////////////////////////// |
|
4404 |