--- a/hedgewars/uGearsHedgehog.pas Sun Jan 19 00:18:28 2014 +0400
+++ b/hedgewars/uGearsHedgehog.pas Tue Jan 21 22:38:13 2014 +0100
@@ -20,7 +20,7 @@
unit uGearsHedgehog;
interface
-uses uTypes, uGearsHandlersMess;
+uses uTypes, uGearsHandlersMess;
procedure doStepHedgehog(Gear: PGear);
procedure AfterAttack;
@@ -126,7 +126,7 @@
LoadHedgehogHat(HHGear^.Hedgehog^, Hat);
end;
// Try again in the next slot
- if (CurAmmoType = prevAmmo) and (slot < cMaxSlotIndex) then
+ if (CurAmmoType = prevAmmo) and (slot < cMaxSlotIndex) then
begin
inc(slot);
HHGear^.MsgParam:= slot;
@@ -416,7 +416,7 @@
amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 0);
amIceGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtIceGun, 0, _0, _0, 0);
end;
- if altUse and (newGear <> nil) and
+ if altUse and (newGear <> nil) and
((CurAmmoGear = nil) or (CurAmmoGear^.AmmoType <> amJetpack) or (Gear^.Message and gmPrecise = 0)) then
begin
newGear^.dX:= newDx / newGear^.Density;
@@ -470,15 +470,15 @@
begin
elastic:= int2hwfloat(CurWeapon^.Bounciness) / _1000;
- if elastic < _1 then
- newGear^.Elasticity:= newGear^.Elasticity * elastic
- else if elastic > _1 then
- newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic);
- (* Experimented with friction modifier. Didn't seem helpful
- fric:= int2hwfloat(CurWeapon^.Bounciness) / _250;
- if fric < _1 then newGear^.Friction:= newGear^.Friction * fric
- else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*)
- end;
+ if elastic < _1 then
+ newGear^.Elasticity:= newGear^.Elasticity * elastic
+ else if elastic > _1 then
+ newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic);
+(* Experimented with friction modifier. Didn't seem helpful
+ fric:= int2hwfloat(CurWeapon^.Bounciness) / _250;
+ if fric < _1 then newGear^.Friction:= newGear^.Friction * fric
+ else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*)
+ end;
uStats.AmmoUsed(CurAmmoType);
@@ -496,16 +496,15 @@
end;
Power:= 0;
- if (CurAmmoGear <> nil)
- and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
+ if (CurAmmoGear <> nil) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then
begin
- if CurAmmoType in [amRope,amResurrector] then Message:= Message or gmAttack;
+ if CurAmmoType in [amRope,amResurrector] then
+ Message:= Message or gmAttack;
CurAmmoGear^.Message:= Message
end
else
begin
- if not CurrentTeam^.ExtDriven
- and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then
+ if (not CurrentTeam^.ExtDriven) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then
SendIPC(_S'a');
AfterAttack;
end
@@ -831,7 +830,7 @@
var da: LongWord;
begin
with HHGear^.Hedgehog^ do
- if (((CurAmmoType = amRope) or ((CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amRope))) and
+ if (((CurAmmoType = amRope) or ((CurAmmoGear <> nil) and (CurAmmoGear^.AmmoType = amRope))) and
((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving))
or ((CurAmmoType = amPortalGun) and ((HHGear^.State and gstMoving) <> 0)) then
da:= 2
@@ -878,7 +877,7 @@
end;
if (land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0) then
Gear^.dY:= _0;
- Gear^.State:= Gear^.State and not gstCollision
+ Gear^.State:= Gear^.State and (not gstCollision)
end;
Gear^.State:= Gear^.State or gstMoving;
if (Gear^.State and gstHHDriven <> 0) and
@@ -904,8 +903,8 @@
else
begin
land:= TestCollisionYwithGear(Gear, 1);
- if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
- and ((land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0))
+ if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
+ and ((land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0))
and ((Gear^.State and gstHHJumping) <> 0) then
SetLittle(Gear^.dX);
@@ -933,7 +932,7 @@
if (land and lfBouncy = 0) or (Gear^.dX.QWordValue < _0_02.QWordValue) then
Gear^.dY:= _0
end;
- Gear^.State:= Gear^.State and not gstCollision
+ Gear^.State:= Gear^.State and (not gstCollision)
end
else
Gear^.dY:= Gear^.dY + cGravity;
@@ -1058,7 +1057,7 @@
Gear^.dY:= _0;
Gear^.Y:= Gear^.Y + _1
end;
- Gear^.State:= Gear^.State and not gstCollision
+ Gear^.State:= Gear^.State and (not gstCollision)
end;
// could become nil if ai's hog fails to respawn in ai survival
@@ -1097,6 +1096,11 @@
else if Hedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle] then
HHGear^.Message:= 0;
+if ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Utility) <> 0) and isInMultiShoot then
+ AllInactive:= true
+else if not isInMultiShoot then
+ AllInactive:= false;
+
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then
begin
if (Hedgehog^.CurAmmoType = amKnife) then
@@ -1344,7 +1348,7 @@
tX:= Gear^.X;
if WorldWrap(Gear) then
begin
- if (WorldEdge <> weBounce) and (Gear = CurrentHedgehog^.Gear) and
+ if (WorldEdge <> weBounce) and (Gear = CurrentHedgehog^.Gear) and
(CurAmmoGear <> nil) and (CurAmmoGear^.Kind =gtRope) and (CurAmmoGear^.Elasticity <> _0) then
CurAmmoGear^.PortalCounter:= 1;
if (WorldEdge = weWrap) and ((TestCollisionXwithGear(Gear, 1) <> 0) or (TestCollisionXwithGear(Gear, -1) <> 0)) then