equal
deleted
inserted
replaced
1385 end; |
1385 end; |
1386 |
1386 |
1387 //////////////////////////////////////////////////////////////////////////////// |
1387 //////////////////////////////////////////////////////////////////////////////// |
1388 procedure doStepKamikazeWork(Gear: PGear); |
1388 procedure doStepKamikazeWork(Gear: PGear); |
1389 const upd: Longword = 0; |
1389 const upd: Longword = 0; |
1390 var i, x, y: LongWord; |
1390 var i: LongWord; |
1391 oX, oY: hwFloat; |
|
1392 HHGear: PGear; |
1391 HHGear: PGear; |
1393 begin |
1392 begin |
1394 AllInactive:= false; |
1393 AllInactive:= false; |
1395 |
1394 |
1396 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
1395 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
1397 HHGear^.State:= HHGear^.State or gstNoDamage; |
1396 HHGear^.State:= HHGear^.State or gstNoDamage; |
1398 DeleteCI(HHGear); |
1397 DeleteCI(HHGear); |
1399 |
1398 |
1400 i:= 2; |
1399 i:= 2; |
1401 oX:= Gear^.X; |
|
1402 oY:= Gear^.Y; |
|
1403 repeat |
1400 repeat |
1404 Gear^.X:= Gear^.X + HHGear^.dX; |
1401 Gear^.X:= Gear^.X + HHGear^.dX; |
1405 Gear^.Y:= Gear^.Y + HHGear^.dY; |
1402 Gear^.Y:= Gear^.Y + HHGear^.dY; |
1406 HHGear^.X:= Gear^.X; |
1403 HHGear^.X:= Gear^.X; |
1407 HHGear^.Y:= Gear^.Y; |
1404 HHGear^.Y:= Gear^.Y; |
1416 addfilelog(inttostr(Gear^.Damage)); |
1413 addfilelog(inttostr(Gear^.Damage)); |
1417 |
1414 |
1418 inc(upd); |
1415 inc(upd); |
1419 if upd > 3 then |
1416 if upd > 3 then |
1420 begin |
1417 begin |
|
1418 if Gear^.Health < 1500 then Gear^.Pos:= 2; |
|
1419 |
1421 AmmoShove(Gear, 30, 40); |
1420 AmmoShove(Gear, 30, 40); |
1422 |
1421 |
1423 DrawTunnel(HHGear^.X - HHGear^.dX * 10, |
1422 DrawTunnel(HHGear^.X - HHGear^.dX * 10, |
1424 HHGear^.Y - _3 - HHGear^.dY * 10 + hwAbs(HHGear^.dY) * 5, |
1423 HHGear^.Y - _3 - HHGear^.dY * 10 + hwAbs(HHGear^.dY) * 5, |
1425 HHGear^.dX, |
1424 HHGear^.dX, |
1441 dec(Gear^.Health, Gear^.Damage); |
1440 dec(Gear^.Health, Gear^.Damage); |
1442 Gear^.Damage:= 0 |
1441 Gear^.Damage:= 0 |
1443 end |
1442 end |
1444 end; |
1443 end; |
1445 |
1444 |
|
1445 procedure doStepKamikazeIdle(Gear: PGear); |
|
1446 begin |
|
1447 AllInactive:= false; |
|
1448 dec(Gear^.Timer); |
|
1449 if Gear^.Timer = 0 then |
|
1450 begin |
|
1451 Gear^.Pos:= 1; |
|
1452 Gear^.doStep:= @doStepKamikazeWork |
|
1453 end |
|
1454 end; |
|
1455 |
1446 procedure doStepKamikaze(Gear: PGear); |
1456 procedure doStepKamikaze(Gear: PGear); |
1447 var HHGear: PGear; |
1457 var HHGear: PGear; |
1448 begin |
1458 begin |
1449 AllInactive:= false; |
1459 AllInactive:= false; |
1450 |
1460 |
1454 HHGear^.dY:= Gear^.dY; |
1464 HHGear^.dY:= Gear^.dY; |
1455 |
1465 |
1456 Gear^.dX:= SignAs(_0_45, Gear^.dX); |
1466 Gear^.dX:= SignAs(_0_45, Gear^.dX); |
1457 Gear^.dY:= - _0_9; |
1467 Gear^.dY:= - _0_9; |
1458 |
1468 |
1459 Gear^.doStep:= @doStepKamikazeWork |
1469 Gear^.Timer:= 550; |
1460 end; |
1470 |
1461 |
1471 Gear^.doStep:= @doStepKamikazeIdle |
|
1472 end; |
|
1473 |