hedgewars/HHHandlers.inc
changeset 4301 4866cc130b8d
parent 4246 e5cb885492df
child 4365 4f2b1a152979
equal deleted inserted replaced
4299:d23f8a25fc3f 4301:4866cc130b8d
   660 if isFalling then
   660 if isFalling then
   661    begin
   661    begin
   662    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   662    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   663    Gear^.State:= Gear^.State or gstMoving;
   663    Gear^.State:= Gear^.State or gstMoving;
   664    if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2
   664    if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2
   665    else Gear^.dY:= Gear^.dY + cGravity
   665    else
       
   666        begin
       
   667        Gear^.dY:= Gear^.dY + cGravity;
       
   668 // this set of circumstances could be less complex if jumping was more clearly identified
       
   669        if ((GameFlags and gfMoreWind) <> 0) and 
       
   670           (Gear^.Damage <> 0) or
       
   671           ((CurAmmoGear <> nil) and
       
   672             ((CurAmmoGear^.AmmoType = amJetpack) or
       
   673             (CurAmmoGear^.AmmoType = amBirdy))) or
       
   674           ((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue)
       
   675           then Gear^.dX := Gear^.dX + cWindSpeed * _0_2
       
   676        end
   666    end 
   677    end 
   667 else
   678 else
   668    begin
   679    begin
   669    if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55)
   680    if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue)
   670       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   681       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   671 
   682 
   672    if not Gear^.dY.isNegative then
   683    if not Gear^.dY.isNegative then
   673       begin
   684       begin
   674       CheckHHDamage(Gear);
   685       CheckHHDamage(Gear);