hedgewars/GSHandlers.inc
changeset 987 0fcd3fadda41
parent 984 dd5f16f69926
child 992 c16355b0c982
equal deleted inserted replaced
986:434b95f00211 987:0fcd3fadda41
  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