hedgewars/GSHandlers.inc
changeset 924 227f9fcdc2f4
parent 919 fadfefc2ae40
child 925 c20156328529
equal deleted inserted replaced
923:b3d097097b54 924:227f9fcdc2f4
    93       end else isFalling:= true;
    93       end else isFalling:= true;
    94 
    94 
    95 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
    95 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
    96    begin
    96    begin
    97    Gear^.dX:= - Gear^.dX * Gear^.Elasticity;
    97    Gear^.dX:= - Gear^.dX * Gear^.Elasticity;
       
    98    Gear^.dY:=   Gear^.dY * Gear^.Elasticity;
    98    Gear^.State:= Gear^.State or gstCollision
    99    Gear^.State:= Gear^.State or gstCollision
    99    end;
   100    end;
   100 
   101 
   101 if isFalling then Gear^.dY:= Gear^.dY + cGravity;
   102 if isFalling then Gear^.dY:= Gear^.dY + cGravity;
   102 
   103 
  1309      begin
  1310      begin
  1310      State:= State and not gstAttacking;
  1311      State:= State and not gstAttacking;
  1311      Message:= Message and not gm_Attack
  1312      Message:= Message and not gm_Attack
  1312      end
  1313      end
  1313 end;
  1314 end;
       
  1315 
       
  1316 ////////////////////////////////////////////////////////////////////////////////
       
  1317 procedure doStepMortar(Gear: PGear);
       
  1318 var dX, dY: hwFloat;
       
  1319     i: LongInt;
       
  1320 begin
       
  1321 AllInactive:= false;
       
  1322 doStepFallingGear(Gear);
       
  1323 if (Gear^.State and gstCollision) <> 0 then
       
  1324 	begin
       
  1325 	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
       
  1326 	
       
  1327 	for i:= 0 to 4 do
       
  1328 		begin
       
  1329 		dX:= - Gear^.dX + (GetRandom - _0_5) * _0_03;
       
  1330 		dY:= - Gear^.dY + (GetRandom - _0_5) * _0_03;
       
  1331 		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 0);
       
  1332 		end;
       
  1333 	
       
  1334 	DeleteGear(Gear);
       
  1335 	exit
       
  1336 	end;
       
  1337 if (GameTicks and $3F) = 0 then
       
  1338 	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
       
  1339 end;