hedgewars/GSHandlers.inc
changeset 1110 3660bbfc1cba
parent 1109 87c44c14fdd4
child 1111 25d0ca2e4a7d
equal deleted inserted replaced
1109:87c44c14fdd4 1110:3660bbfc1cba
  1481 Gear^.doStep:= @doStepKamikazeIdle
  1481 Gear^.doStep:= @doStepKamikazeIdle
  1482 end;
  1482 end;
  1483 
  1483 
  1484 ////////////////////////////////////////////////////////////////////////////////
  1484 ////////////////////////////////////////////////////////////////////////////////
  1485 const cakeh = 27;
  1485 const cakeh = 27;
       
  1486       cakeDmg = 75;
  1486 var CakePoints: array[0..Pred(cakeh)] of record x, y: hwFloat; end;
  1487 var CakePoints: array[0..Pred(cakeh)] of record x, y: hwFloat; end;
  1487 	CakeI: Longword;
  1488 	CakeI: Longword;
  1488 
  1489 
       
  1490 procedure doStepCakeExpl(Gear: PGear);
       
  1491 begin
       
  1492 inc(Gear^.Tag);
       
  1493 if Gear^.Tag < 2250 then exit;
       
  1494 
       
  1495 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, EXPLAutoSound);
       
  1496 AfterAttack;
       
  1497 DeleteGear(Gear)
       
  1498 end;
       
  1499 
  1489 procedure doStepCakeDown(Gear: PGear);
  1500 procedure doStepCakeDown(Gear: PGear);
  1490 var i: Longword;
  1501 var i: Longword;
       
  1502     gi: PGear;
       
  1503     dmg: LongInt;
  1491 begin
  1504 begin
  1492 AllInactive:= false;
  1505 AllInactive:= false;
  1493 
  1506 
  1494 inc(Gear^.Tag);
  1507 inc(Gear^.Tag);
  1495 if Gear^.Tag < 100 then exit;
  1508 if Gear^.Tag < 100 then exit;
  1496 Gear^.Tag:= 0;
  1509 Gear^.Tag:= 0;
  1497 
  1510 
  1498 if Gear^.Pos = 0 then
  1511 if Gear^.Pos = 0 then
  1499 	begin
  1512 	begin
  1500 	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
  1513 	gi:= GearsList;
  1501 	AfterAttack;
  1514 	while gi <> nil do
  1502 	DeleteGear(Gear)
  1515 		begin
       
  1516 		dmg:= cakeDmg * 2 - hwRound(Distance(gi^.X - Gear^.X, gi^.Y - Gear^.Y));
       
  1517 		if (dmg > 1) and (gi^.Kind = gtHedgehog) then
       
  1518 			gi^.State:= gi^.State or gstWinner;
       
  1519 		gi:= gi^.NextGear
       
  1520 		end;
       
  1521 	Gear^.doStep:= @doStepCakeExpl;
  1503 	end else dec(Gear^.Pos)
  1522 	end else dec(Gear^.Pos)
  1504 end;
  1523 end;
  1505 
  1524 
  1506 
  1525 
  1507 procedure doStepCakeWork(Gear: PGear);
  1526 procedure doStepCakeWork(Gear: PGear);