author  nemo 
Sun, 10 Oct 2010 23:41:24 0400  
changeset 3957  25b0a62e08de 
parent 3953  fd7ced2071a1 
child 3963  6090d2a2472e 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
3236
4ab3917d7d44
Update (c) lines to 2010 as unc0rr requested  they all had varying values so I just took the first year mentioned, then tacked on 2010
nemo
parents:
3196
diff
changeset

3 
* Copyright (c) 20042010 Andrey Korotaev <unC0Rr@gmail.com> 
4  4 
* 
183  5 
* This program is free software; you can redistribute it and/or modify 
6 
* it under the terms of the GNU General Public License as published by 

7 
* the Free Software Foundation; version 2 of the License 

4  8 
* 
183  9 
* This program is distributed in the hope that it will be useful, 
10 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 

11 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12 
* GNU General Public License for more details. 

4  13 
* 
183  14 
* You should have received a copy of the GNU General Public License 
15 
* along with this program; if not, write to the Free Software 

16 
* Foundation, Inc., 59 Temple Place  Suite 330, Boston, MA 021111307, USA 

4  17 
*) 
18 

37  19 
//////////////////////////////////////////////////////////////////////////////// 
3682  20 

21 
procedure HHHurt(Hedgehog: PHedgehog; Source: TDamageSource); 

22 
begin 

23 
if (Source = dsFall) or (Source = dsExplosion) then 

24 
case random(3) of 

25 
0: PlaySound(sndOoff1, Hedgehog^.Team^.voicepack); 

26 
1: PlaySound(sndOoff2, Hedgehog^.Team^.voicepack); 

27 
2: PlaySound(sndOoff3, Hedgehog^.Team^.voicepack); 

28 
end 

29 
else if (Source = dsPoison) then 

30 
case random(2) of 

31 
0: PlaySound(sndPoisonCough, Hedgehog^.Team^.voicepack); 

32 
1: PlaySound(sndPoisonMoan, Hedgehog^.Team^.voicepack); 

33 
end 

34 
else 

35 
case random(4) of 

36 
0: PlaySound(sndOw1, Hedgehog^.Team^.voicepack); 

37 
1: PlaySound(sndOw2, Hedgehog^.Team^.voicepack); 

38 
2: PlaySound(sndOw3, Hedgehog^.Team^.voicepack); 

39 
3: PlaySound(sndOw4, Hedgehog^.Team^.voicepack); 

40 
end 

41 
end; 

42 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

43 
// Shouldn't more of this ammo switching stuff be moved to uAmmos ? 
783  44 
procedure ChangeAmmo(Gear: PGear); 
3943
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

45 
var slot, i: Longword; 
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

46 
ammoidx: LongInt; 
783  47 
begin 
48 
slot:= Gear^.MsgParam; 

49 

50 
with PHedgehog(Gear^.Hedgehog)^ do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

51 
begin 
3894  52 
Gear^.Message:= Gear^.Message and not gmSlot; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

53 
ammoidx:= 0; 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

54 
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); 
2376  55 

3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset

56 
if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or 
3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset

57 
((MultiShootAttacks > 0) and (CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) = 0)) or 
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset

58 
((Gear^.State and gstHHDriven) = 0) then exit; 
783  59 

3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset

60 
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(PHedgehog(Gear^.Hedgehog)^); 
3430  61 

3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset

62 
MultiShootAttacks:= 0; 
3894  63 
Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

64 

833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

65 
if Ammoz[CurAmmoType].Slot = slot then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

66 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

67 
i:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

68 
repeat 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

69 
inc(ammoidx); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

70 
if (ammoidx > cMaxSlotAmmoIndex) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

71 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

72 
inc(i); 
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset

73 
CurAmmoType:= amNothing; 
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset

74 
ammoidx:= 1; 
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset

75 
//TryDo(i < 2, 'Engine bug: no ammo in current slot', true) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

76 
end; 
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset

77 
until ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) or (i = 1) 
3943
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

78 
end 
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

79 
else 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

80 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

81 
i:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

82 
// check whether there is ammo in slot 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

83 
while (i <= cMaxSlotAmmoIndex) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

84 
and ((Ammo^[slot, i].Count = 0) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

85 
or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i); 
2376  86 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

87 
if i <= cMaxSlotAmmoIndex then ammoidx:= i 
3943
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

88 
else ammoidx:= 1 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

89 
end; 
3943
9835060e5c01
Add perhog ammo option, initial stubs for infinite attack and weapon reset, fix a bug in ammo switching
nemo
parents:
3915
diff
changeset

90 
if ammoidx >= 0 then CurAmmoType:= Ammo^[slot, ammoidx].AmmoType; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

91 
end 
783  92 
end; 
93 

94 
procedure HHSetWeapon(Gear: PGear); 

95 
var t: LongInt; 

96 
weap: TAmmoType; 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

97 
Hedgehog: PHedgehog; 
783  98 
begin 
99 
weap:= TAmmoType(Gear^.MsgParam); 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

100 
Hedgehog:= PHedgehog(Gear^.Hedgehog); 
941
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
931
diff
changeset

101 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

102 
if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet 
941
b5222ddafe1f
 Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
931
diff
changeset

103 

783  104 
Gear^.MsgParam:= Ammoz[weap].Slot; 
105 

106 
t:= cMaxSlotAmmoIndex; 

107 

3894  108 
Gear^.Message:= Gear^.Message and not gmWeapon; 
783  109 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

110 
with Hedgehog^ do 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

111 
while (CurAmmoType <> weap) and (t >= 0) do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

112 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

113 
ChangeAmmo(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

114 
dec(t) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

115 
end; 
1710
cecb3cc93251
Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents:
1689
diff
changeset

116 

cecb3cc93251
Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents:
1689
diff
changeset

117 
ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^) 
783  118 
end; 
119 

926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

120 
procedure HHSetTimer(Gear: PGear); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

121 
var CurWeapon: PAmmo; 
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

122 
begin 
3894  123 
Gear^.Message:= Gear^.Message and not gmTimer; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

124 
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); 
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

125 
with PHedgehog(Gear^.Hedgehog)^ do 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

126 
if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

127 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

128 
CurWeapon^.Timer:= 1000 * Gear^.MsgParam; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

129 
with CurrentTeam^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

130 
ApplyAmmoChanges(Hedgehogs[CurrHedgehog]); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

131 
end; 
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

132 
end; 
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

133 

d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

134 

32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

135 
procedure Attack(Gear: PGear); 
3483  136 
var xx, yy, lx, ly: hwFloat; 
2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset

137 
tmpGear: PVisualGear; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

138 
CurWeapon: PAmmo; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

139 
begin 
2807  140 
bShowFinger:= false; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

141 
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

142 
with Gear^, 
351  143 
PHedgehog(Gear^.Hedgehog)^ do 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

144 
begin 
95  145 
if ((State and gstHHDriven) <> 0)and 
2223
e009fee03c96
allow attacks while moving on ammo with alt attack (parachute/rope/jetpack)  needs testing.
nemo
parents:
2221
diff
changeset

146 
((State and (gstAttacked or gstHHChooseTarget)) = 0) and 
2376  147 
(((State and gstMoving) = 0) or 
2223
e009fee03c96
allow attacks while moving on ammo with alt attack (parachute/rope/jetpack)  needs testing.
nemo
parents:
2221
diff
changeset

148 
// Allow attacks while moving on ammo with AltAttack 
3302
0973c5af5141
Add reference to ammo at time of gear creation to allow switching to work on jetpack/parachute
nemo
parents:
3236
diff
changeset

149 
((CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)) or 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

150 
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackInMove) <> 0)) and 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

151 
((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) = 0)) then 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

152 
begin 
95  153 
State:= State or gstAttacking; 
3894  154 
if Power = cMaxPower then Message:= Message and not gmAttack 
155 
else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack 

95  156 
else begin 
157 
if Power = 0 then 

158 
begin 

351  159 
AttackBar:= CurrentTeam^.AttackBar; 
2745  160 
PlaySound(sndThrowPowerUp) 
95  161 
end; 
162 
inc(Power) 

163 
end; 

3894  164 
if ((Message and gmAttack) <> 0) then exit; 
351  165 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

166 
if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0 then 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

167 
begin 
282  168 
StopSound(sndThrowPowerUp); 
2745  169 
PlaySound(sndThrowRelease); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

170 
end; 
1922  171 

519  172 
xx:= SignAs(AngleSin(Angle), dX); 
900  173 
yy:= AngleCos(Angle); 
174 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

175 
lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle))); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

176 
ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); 
3483  177 

3469  178 
if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then xx:=  xx; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

179 
if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

180 
PlaySound(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

181 
case CurAmmoType of 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

182 
amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtAmmo_Bomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); 
3483  183 
amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

184 
amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

185 
amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); 
3483  186 
amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtAmmo_Grenade, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
187 
amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 

32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

188 
amShotgun: begin 
2745  189 
PlaySound(sndShotgunReload); 
3483  190 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot, 0, xx * _0_5, yy * _0_5, 0); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

191 
end; 
3483  192 
amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0); 
866  193 
amSkip: ParseCommand('/skip', true); 
3483  194 
amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); 
195 
amMine: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); 

3710  196 
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
3483  197 
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); 
198 
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); 

199 
amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0); 

2827  200 
amSniperRifle: begin 
201 
PlaySound(sndSniperReload); 

3483  202 
CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); 
2827  203 
end; 
3483  204 
amDynamite: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); 
205 
amFirePunch: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0); 

1712  206 
amWhip: begin 
3483  207 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX),  _0_8, 0); 
2745  208 
PlaySound(sndWhipCrack) 
1712  209 
end; 
3717  210 
amHammer: begin 
211 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX),  _0_8, 0); 

212 
PlaySound(sndWhack) 

213 
end; 

2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
2142
diff
changeset

214 
amBaseballBat: begin 
3483  215 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); 
2996  216 
PlaySound(sndBaseballBat) // TODO: Only play if something is hit? 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

217 
end; 
3851  218 
amParachute: begin 
219 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0); 

220 
PlaySound(sndParachute) 

221 
end; 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

222 
// we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear. 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

223 
amAirAttack: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

224 
amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0); 
3483  225 
amBlowTorch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

226 
amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0); 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

227 
amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0); 
3483  228 
amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0); 
2262  229 
amMortar: begin 
3483  230 
playSound(sndMortar); 
231 
FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); 

232 
end; 

1712  233 
amRCPlane: begin 
3483  234 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); 
2745  235 
CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil) 
1712  236 
end; 
3483  237 
amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); 
238 
amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); 

239 
amSeduction: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0); 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

240 
amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); 
3483  241 
amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

242 
amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0); 
3483  243 
amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
3484  244 
amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); 
3483  245 
amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0); 
3123  246 
amBirdy: begin 
247 
PlaySound(sndWhistle); 

3483  248 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly)  32, gtBirdy, 0, _0, _0, 0); 
3123  249 
end; 
2908  250 
amLowGravity: begin 
251 
PlaySound(sndLowGravity); 

3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.01.0 while in fact is in the 0.00.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3351
diff
changeset

252 
cGravity:= cMaxWindSpeed 
2908  253 
end; 
1849  254 
amExtraDamage: cDamageModifier:= _1_5; 
255 
amInvulnerable: Invulnerable:= true; 

256 
amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000; 

1854  257 
amLaserSight: cLaserSighting:= true; 
3483  258 
amVampiric: begin 
259 
PlaySound(sndOw1, Team^.voicepack); 

260 
cVampiric:= true; 

261 
end; 

3351  262 
amPiano: begin 
3399  263 
// Tuck the hedgehog away until the piano attack is completed 
264 
Unplaced:= true; 

265 
X:= _0; 

266 
Y:= _0; 

3351  267 
FollowGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0); 
268 
PauseMusic 

269 
end; 

3484  270 
amFlamethrower: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower, 0, xx * _0_5, yy * _0_5, 0); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

271 
end; 
829  272 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

273 
uStats.AmmoUsed(CurAmmoType); 
829  274 

2017  275 
if not (SpeechText = '') then 
276 
begin 

2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset

277 
tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble); 
2115  278 
if tmpGear <> nil then 
279 
begin 

280 
tmpGear^.Text:= SpeechText; 

281 
tmpGear^.Hedgehog:= Gear^.Hedgehog; 

282 
tmpGear^.FrameTicks:= SpeechType; 

283 
end; 

2017  284 
SpeechText:= '' 
285 
end; 

286 

32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

287 
Power:= 0; 
930  288 
if (CurAmmoGear <> nil) 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

289 
and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) = 0){check for dropping ammo from rope} then 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

290 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

291 
CurAmmoGear^.AmmoType:= CurAmmoType; 
3894  292 
Message:= Message or gmAttack; 
351  293 
CurAmmoGear^.Message:= Message 
82  294 
end else begin 
351  295 
if not CurrentTeam^.ExtDriven and 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

296 
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a'); 
1849  297 
AfterAttack; 
82  298 
end 
3894  299 
end else Message:= Message and not gmAttack; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

300 
end 
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

301 
end; 
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

302 

78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

303 
procedure AfterAttack; 
2502  304 
var s: shortstring; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

305 
begin 
602  306 
with CurrentHedgehog^.Gear^, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

307 
CurrentHedgehog^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

308 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

309 
State:= State and not gstAttacking; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

310 
if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Effect) = 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

311 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

312 
Inc(MultiShootAttacks); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

313 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

314 
if (Ammoz[CurAmmoType].Ammo.NumPerTurn >= MultiShootAttacks) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

315 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

316 
s:= inttostr(Ammoz[CurAmmoType].Ammo.NumPerTurn  MultiShootAttacks + 1); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

317 
AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

318 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

319 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

320 
if (Ammoz[CurAmmoType].Ammo.NumPerTurn >= MultiShootAttacks) or 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

321 
((GameFlags and gfMultiWeapon) <> 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

322 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

323 
isInMultiShoot:= true 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

324 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

325 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

326 
begin 
3945
c3d5eace0a32
Check on an infinite attacks mode, still many problems in actual weapons
nemo
parents:
3943
diff
changeset

327 
OnUsedAmmo(CurrentHedgehog^); 
c3d5eace0a32
Check on an infinite attacks mode, still many problems in actual weapons
nemo
parents:
3943
diff
changeset

328 
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) = 0) and ((GameFlags and gfInfAttack) = 0) then 
3957  329 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

330 
TurnTimeLeft:= Ammoz[CurAmmoType].TimeAfterTurn; 
3957  331 
State:= State or gstAttacked 
332 
end; 

3953
fd7ced2071a1
Hopefully fix bee/air attacks w/o screwing anything else up. Set mines to trigger immediately in infinite attack mode (better not use 0s mines)
nemo
parents:
3951
diff
changeset

333 
if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0 then ApplyAmmoChanges(CurrentHedgehog^); 
fd7ced2071a1
Hopefully fix bee/air attacks w/o screwing anything else up. Set mines to trigger immediately in infinite attack mode (better not use 0s mines)
nemo
parents:
3951
diff
changeset

334 
if (GameFlags and gfInfAttack) <> 0 then State:= State or gstAttacked 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

335 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

336 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

337 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

338 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

339 
OnUsedAmmo(CurrentHedgehog^); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

340 
ApplyAmmoChanges(CurrentHedgehog^); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

341 
end; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

342 
AttackBar:= 0 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

343 
end 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

344 
end; 
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

345 

42  346 
//////////////////////////////////////////////////////////////////////////////// 
863  347 
procedure doStepHedgehogDead(Gear: PGear); 
868  348 
const frametime = 200; 
349 
timertime = frametime * 6; 

863  350 
begin 
2769
82bfcc006afb
Some handling of interaction between king mode and place hogs mode.
nemo
parents:
2762
diff
changeset

351 
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; 
863  352 
if Gear^.Timer > 1 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

353 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

354 
AllInactive:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

355 
dec(Gear^.Timer); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

356 
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

357 
end else 
863  358 
if Gear^.Timer = 1 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

359 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

360 
Gear^.State:= Gear^.State or gstNoDamage; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

361 
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

362 
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

363 
DeleteGear(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

364 
SetAllToActive 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

365 
end else // Gear^.Timer = 0 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

366 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

367 
AllInactive:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

368 
Gear^.Z:= cCurrHHZ; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

369 
RemoveGearFromList(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

370 
InsertGearToList(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

371 
PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

372 
Gear^.Pos:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

373 
Gear^.Timer:= timertime 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

374 
end 
863  375 
end; 
376 

377 
//////////////////////////////////////////////////////////////////////////////// 

3310  378 
procedure doStepHedgehogGone(Gear: PGear); 
379 
const frametime = 65; 

380 
timertime = frametime * 11; 

381 
begin 

382 
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; 

383 
if Gear^.Timer > 1 then 

384 
begin 

385 
AllInactive:= false; 

386 
dec(Gear^.Timer); 

387 
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) 

388 
end else 

389 
if Gear^.Timer = 1 then 

390 
begin 

391 
DeleteGear(Gear); 

392 
SetAllToActive 

393 
end else // Gear^.Timer = 0 

394 
begin 

395 
AllInactive:= false; 

396 
Gear^.Z:= cCurrHHZ; 

397 
RemoveGearFromList(Gear); 

398 
InsertGearToList(Gear); 

399 
PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); 

400 
PlaySound(sndWarp); 

401 
Gear^.Pos:= 0; 

402 
Gear^.Timer:= timertime 

403 
end 

404 
end; 

405 

406 
//////////////////////////////////////////////////////////////////////////////// 

42  407 
procedure PickUp(HH, Gear: PGear); 
295  408 
var s: shortstring; 
409 
a: TAmmoType; 

3169
c8c6ac44f51b
prophylactic removal of some Integer references, raise a few of the template islands up a bit so they work inverted without triggering border
nemo
parents:
3161
diff
changeset

410 
i: LongInt; 
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

411 
vga: PVisualGear; 
42  412 
begin 
3894  413 
Gear^.Message:= gmDestroy; 
2745  414 
PlaySound(sndShotgunReload); 
351  415 
case Gear^.Pos of 
1964  416 
posCaseUtility, 
295  417 
posCaseAmmo: begin 
351  418 
a:= TAmmoType(Gear^.State); 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
549
diff
changeset

419 
AddAmmo(PHedgehog(HH^.Hedgehog)^, a); 
2853
953a6d71396f
Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents:
2827
diff
changeset

420 
// Possibly needs to check shared clan ammo game flag once added. 
953a6d71396f
Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents:
2827
diff
changeset

421 
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up 
953a6d71396f
Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents:
2827
diff
changeset

422 
if (not (PHedgehog(HH^.Hedgehog)^.Team^.ExtDriven 
1072  423 
or (PHedgehog(HH^.Hedgehog)^.BotLevel > 0))) 
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

424 
or (PHedgehog(HH^.Hedgehog)^.Team^.Clan^.ClanIndex = LocalClan) 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

425 
or (GameType = gmtDemo) then 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

426 
begin 
3196  427 
s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; 
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

428 
AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

429 

82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

430 
// show ammo icon 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

431 
vga:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtAmmo); 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

432 
if vga <> nil then 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

433 
vga^.Frame:= Longword(a); 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

434 
end; 
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

435 

295  436 
end; 
42  437 
posCaseHealth: begin 
351  438 
inc(HH^.Health, Gear^.Health); 
3112  439 
PHedgehog(HH^.Hedgehog)^.Effects[hePoisoned] := false; 
351  440 
str(Gear^.Health, s); 
295  441 
s:= '+' + s; 
549  442 
AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); 
351  443 
RenderHealth(PHedgehog(HH^.Hedgehog)^); 
2428  444 
RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team); 
445 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

446 
i:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

447 
while i < Gear^.Health do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

448 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

449 
AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

450 
inc(i, 5); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

451 
end; 
42  452 
end; 
435  453 
end 
42  454 
end; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

455 

4  456 
const StepTicks: LongWord = 0; 
457 

302  458 
procedure HedgehogStep(Gear: PGear); 
371  459 
var PrevdX: LongInt; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

460 
CurWeapon: PAmmo; 
302  461 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

462 
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); 
542  463 
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then 
4  464 
begin 
408  465 
if isCursorVisible then 
466 
with PHedgehog(Gear^.Hedgehog)^ do 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

467 
with CurWeapon^ do 
408  468 
begin 
3894  469 
if (Gear^.Message and gmLeft ) <> 0 then 
3407  470 
Pos:= (Pos  1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount 
408  471 
else 
3894  472 
if (Gear^.Message and gmRight ) <> 0 then 
408  473 
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount 
474 
else exit; 

423  475 
StepTicks:= 200; 
408  476 
exit 
477 
end; 

505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

478 

3894  479 
if ((Gear^.Message and gmAnimate) <> 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

480 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

481 
Gear^.Message:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

482 
Gear^.State:= Gear^.State or gstAnimation; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

483 
Gear^.Tag:= Gear^.MsgParam; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

484 
Gear^.Timer:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

485 
Gear^.Pos:= 0 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

486 
end; 
1033  487 

3894  488 
if ((Gear^.Message and gmLJump ) <> 0) then 
4  489 
begin 
3894  490 
Gear^.Message:= Gear^.Message and not gmLJump; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

491 
DeleteCI(Gear); 
68  492 
if not TestCollisionYwithGear(Gear, 1) then 
498  493 
if not TestCollisionXwithXYShift(Gear, _0, 2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _2 else 
494 
if not TestCollisionXwithXYShift(Gear, _0, 1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _1; 

351  495 
if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) 
68  496 
or TestCollisionYwithGear(Gear, 1)) then 
4  497 
begin 
351  498 
Gear^.dY:= _0_15; 
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset

499 
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); 
542  500 
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; 
2745  501 
PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); 
4  502 
exit 
503 
end; 

504 
end; 

505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

505 

3894  506 
if ((Gear^.Message and gmHJump ) <> 0) then 
4  507 
begin 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

508 
DeleteCI(Gear); 
3894  509 
Gear^.Message:= Gear^.Message and not gmHJump; 
855
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

510 

8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

511 
Gear^.dY:= _0_2; 
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

512 
SetLittle(Gear^.dX); 
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

513 
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; 
2745  514 
PlaySound(sndJump3, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); 
855
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

515 
exit 
4  516 
end; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

517 

351  518 
PrevdX:= hwSign(Gear^.dX); 
3894  519 
if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= cLittle else 
520 
if (Gear^.Message and gmRight )<>0 then Gear^.dX:= cLittle else exit; 

505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

521 

3894  522 
if (Gear^.Message and (gmLeft or gmRight)) <> 0 then 
2940  523 
begin 
524 
StepSoundTimer:= cHHStepTicks; 

525 
end; 

526 

74  527 
StepTicks:= cHHStepTicks; 
610  528 
if PrevdX <> hwSign(Gear^.dX) then 
529 
begin 

530 
FollowGear:= Gear; 

531 
exit 

532 
end; 

533 
DeleteCI(Gear); // must be after exit!! (see previous line) 

838  534 

351  535 
PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7; 
536 
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then 

4  537 
begin 
498  538 
if not (TestCollisionXwithXYShift(Gear, _0, 6, hwSign(Gear^.dX)) 
539 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

540 
if not (TestCollisionXwithXYShift(Gear, _0, 5, hwSign(Gear^.dX)) 

541 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

542 
if not (TestCollisionXwithXYShift(Gear, _0, 4, hwSign(Gear^.dX)) 

543 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

544 
if not (TestCollisionXwithXYShift(Gear, _0, 3, hwSign(Gear^.dX)) 

545 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

546 
if not (TestCollisionXwithXYShift(Gear, _0, 2, hwSign(Gear^.dX)) 

547 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

548 
if not (TestCollisionXwithXYShift(Gear, _0, 1, hwSign(Gear^.dX)) 

549 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

4  550 
end; 
1528  551 

3894  552 
if (not cArtillery) and ((Gear^.Message and gmPrecise) = 0) and (not TestCollisionXwithGear(Gear, hwSign(Gear^.dX))) then 
2585
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset

553 
Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); 
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset

554 

62  555 
SetAllHHToActive; 
37  556 

68  557 
if not TestCollisionYwithGear(Gear, 1) then 
4  558 
begin 
498  559 
Gear^.Y:= Gear^.Y + _1; 
68  560 
if not TestCollisionYwithGear(Gear, 1) then 
4  561 
begin 
498  562 
Gear^.Y:= Gear^.Y + _1; 
68  563 
if not TestCollisionYwithGear(Gear, 1) then 
4  564 
begin 
498  565 
Gear^.Y:= Gear^.Y + _1; 
68  566 
if not TestCollisionYwithGear(Gear, 1) then 
4  567 
begin 
498  568 
Gear^.Y:= Gear^.Y + _1; 
68  569 
if not TestCollisionYwithGear(Gear, 1) then 
4  570 
begin 
498  571 
Gear^.Y:= Gear^.Y + _1; 
68  572 
if not TestCollisionYwithGear(Gear, 1) then 
4  573 
begin 
498  574 
Gear^.Y:= Gear^.Y + _1; 
68  575 
if not TestCollisionYwithGear(Gear, 1) then 
4  576 
begin 
498  577 
Gear^.Y:= Gear^.Y  _6; 
578 
Gear^.dY:= _0; 

542  579 
Gear^.State:= Gear^.State or gstMoving; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

580 
exit 
4  581 
end; 
582 
end 

583 
end 

584 
end 

585 
end 

586 
end 

505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

587 
end; 
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

588 
AddGearCI(Gear) 
4  589 
end 
590 
end; 

591 

303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset

592 
procedure HedgehogChAngle(Gear: PGear); 
958  593 
var da: LongWord; 
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset

594 
begin 
958  595 
with PHedgehog(Gear^.Hedgehog)^ do 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

596 
if (CurAmmoType = amRope) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

597 
and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1; 
958  598 

3894  599 
if (((Gear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then 
600 
if ((Gear^.Message and gmUp) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da) 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

601 
else 
3894  602 
if ((Gear^.Message and gmDown) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da) 
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset

603 
end; 
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset

604 

302  605 
procedure doStepHedgehog(Gear: PGear); forward; 
606 
//////////////////////////////////////////////////////////////////////////////// 

538  607 
procedure doStepHedgehogMoving(Gear: PGear); 
3907
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

608 
var isFalling, isUnderwater: boolean; 
538  609 
begin 
3907
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

610 
isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius; 
3915
c05855146440
Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and 
nemo
parents:
3909
diff
changeset

611 
if Gear^.dX.QWordValue > 8160437862 then Gear^.dX.QWordValue:= 8160437862; 
c05855146440
Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and 
nemo
parents:
3909
diff
changeset

612 
if Gear^.dY.QWordValue > 8160437862 then Gear^.dY.QWordValue:= 8160437862; 
c05855146440
Correct bug in flight ceiling for birdy as well, increase clip on velocity to 1.9 (shouldn't cause problems with most collision checks still), apply clip to both + and 
nemo
parents:
3909
diff
changeset

613 

2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

614 
if PHedgehog(Gear^.Hedgehog)^.Unplaced then 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

615 
begin 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

616 
Gear^.dY:= _0; 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

617 
Gear^.dX:= _0; 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

618 
Gear^.State:= Gear^.State and not gstMoving; 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

619 
exit 
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

620 
end; 
855
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

621 
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); 
542  622 
if isFalling then 
538  623 
begin 
624 
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, 1) then Gear^.dY:= _0; 

542  625 
Gear^.State:= Gear^.State or gstMoving; 
3909
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset

626 
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2 
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset

627 
else Gear^.dY:= Gear^.dY + cGravity 
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset

628 
end 
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset

629 
else 
538  630 
begin 
631 
if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55) 

632 
and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX); 

633 

540  634 
if not Gear^.dY.isNegative then 
635 
begin 

636 
CheckHHDamage(Gear); 

790
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset

637 

2137  638 
if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) and 
790
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset

639 
(Gear^.dX.QWordValue < _0_02.QWordValue) then Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump 
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset

640 

542  641 
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); 
540  642 
Gear^.dY:= _0; 
643 
end else Gear^.dY:= Gear^.dY + cGravity; 

538  644 

645 
if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction 

646 
end; 

647 

648 
if (Gear^.State <> 0) then DeleteCI(Gear); 

783  649 

3907
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

650 
if isUnderwater then 
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

651 
begin 
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

652 
Gear^.dY:= Gear^.dY * _0_999; 
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

653 
Gear^.dX:= Gear^.dX * _0_999; 
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

654 
end; 
5b516f0d9957
Allow UFO to go underwater. Keep UFO active if it runs out of fuel in the air/water, just disable controls.
nemo
parents:
3894
diff
changeset

655 

538  656 
if (Gear^.State and gstMoving) <> 0 then 
657 
if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then 

542  658 
if not isFalling then 
538  659 
if hwAbs(Gear^.dX) > _0_01 then 
660 
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX))  Gear^.dX, 1, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_96; Gear^.Y:= Gear^.Y  _1 end else 

661 
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX))  Gear^.dX, 2, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_93; Gear^.Y:= Gear^.Y  _2 end else 

662 
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX))  Gear^.dX, 3, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_9 ; Gear^.Y:= Gear^.Y  _3 end else 

663 
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX))  Gear^.dX, 4, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_87; Gear^.Y:= Gear^.Y  _4 end else 

664 
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX))  Gear^.dX, 5, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_84; Gear^.Y:= Gear^.Y  _5 end else 

665 
if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= Gear^.Elasticity * Gear^.dX 

666 
else begin 

667 
Gear^.State:= Gear^.State and not gstMoving; 

668 
SetLittle(Gear^.dX) 

669 
end 

670 
else begin 

671 
Gear^.State:= Gear^.State and not gstMoving; 

672 
SetLittle(Gear^.dX) 

673 
end 

1518  674 
else if (hwAbs(Gear^.dX) > cLittle) 
675 
and ((Gear^.State and gstHHJumping) = 0) 

676 
then Gear^.dX:= Gear^.Elasticity * Gear^.dX 

677 
else SetLittle(Gear^.dX); 

538  678 

542  679 
if (not isFalling) and 
538  680 
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then 
681 
begin 

1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset

682 
Gear^.State:= Gear^.State and not gstWinner; 
538  683 
Gear^.State:= Gear^.State and not gstMoving; 
684 
SetLittle(Gear^.dX); 

685 
Gear^.dY:= _0 

686 
end else Gear^.State:= Gear^.State or gstMoving; 

687 

688 
if (Gear^.State and gstMoving) <> 0 then 

689 
begin 

690 
Gear^.State:= Gear^.State and not gstAnimation; 

2017  691 
// ARTILLERY but not being moved by explosions 
538  692 
Gear^.X:= Gear^.X + Gear^.dX; 
693 
Gear^.Y:= Gear^.Y + Gear^.dY; 

694 
if (not Gear^.dY.isNegative) and 

695 
(not TestCollisionYKick(Gear, 1)) and 

696 
TestCollisionYwithXYShift(Gear, 0, 1, 1) then 

697 
begin 

698 
CheckHHDamage(Gear); 

699 
Gear^.dY:= _0; 

700 
Gear^.Y:= Gear^.Y + _1 

701 
end; 

1658
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset

702 
CheckGearDrowning(Gear); 
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset

703 
if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false 
2428  704 
end; 
705 

3003  706 
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then 
2428  707 
begin 
708 
inc(Gear^.FlightTime, 1); 

3174  709 
if Gear^.FlightTime = 3000 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

710 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

711 
AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

712 
PlaySound(sndHomerun) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

713 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

714 
end 
2428  715 
else 
716 
begin 

717 
Gear^.FlightTime:= 0; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

718 
end; 
2428  719 

538  720 
end; 
721 

302  722 
procedure doStepHedgehogDriven(Gear: PGear); 
723 
var t: PGear; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

724 
wasJumping: boolean; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

725 
Hedgehog: PHedgehog; 
302  726 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

727 
Hedgehog:= PHedgehog(Gear^.Hedgehog); 
558
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

728 
if not isInMultiShoot then 
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

729 
AllInactive:= false 
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

730 
else 
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

731 
Gear^.Message:= 0; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

732 

1035  733 
if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

734 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

735 
TurnTimeLeft:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

736 
isCursorVisible:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

737 
Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation or gstAttacking); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

738 
AttackBar:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

739 
if Gear^.Damage > 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

740 
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

741 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

742 
end; 
1035  743 

1033  744 
if (Gear^.State and gstAnimation) <> 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

745 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

746 
Gear^.Message:= 0; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

747 
if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, Hedgehog^.Team^.voicepack); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

748 
inc(Gear^.Timer); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

749 
if Gear^.Timer = Wavez[TWave(Gear^.Tag)].Interval then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

750 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

751 
Gear^.Timer:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

752 
inc(Gear^.Pos); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

753 
if Gear^.Pos = Wavez[TWave(Gear^.Tag)].FramesCount then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

754 
Gear^.State:= Gear^.State and not gstAnimation 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

755 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

756 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

757 
end; 
1033  758 

836  759 
if ((Gear^.State and gstMoving) <> 0) 
760 
or (StepTicks = cHHStepTicks) 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

761 
or (CurAmmoGear <> nil) then // we are moving 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

762 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

763 
with Hedgehog^ do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

764 
if (CurAmmoGear = nil) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

765 
and (Gear^.dY > _0_39) 
3894  766 
and (CurAmmoType = amParachute) then Gear^.Message:= Gear^.Message or gmAttack; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

767 
// check for case with ammo 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

768 
t:= CheckGearNear(Gear, gtCase, 36, 36); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

769 
if t <> nil then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

770 
PickUp(Gear, t) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

771 
end; 
302  772 

930  773 
if (CurAmmoGear = nil) then 
3894  774 
if (((Gear^.Message and gmAttack) <> 0) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

775 
or ((Gear^.State and gstAttacking) <> 0)) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

776 
Attack(Gear) // should be before others to avoid desync with '/put' msg and changing weapon msgs 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

777 
else 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

778 
else 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

779 
with Hedgehog^ do 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

780 
if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
3894  781 
and ((Gear^.Message and gmLJump) <> 0) 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

782 
and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

783 
begin 
3894  784 
Gear^.Message:= Gear^.Message and not gmLJump; 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

785 
Attack(Gear) 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

786 
end; 
930  787 

788 
if (CurAmmoGear = nil) 

3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset

789 
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset

790 
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

791 
begin 
3894  792 
if ((Gear^.Message and gmSlot) <> 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

793 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

794 
ChangeAmmo(Gear); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

795 
ApplyAmmoChanges(Hedgehog^) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

796 
end; 
930  797 

3894  798 
if ((Gear^.Message and gmWeapon) <> 0) then HHSetWeapon(Gear); 
930  799 

3894  800 
if ((Gear^.Message and gmTimer) <> 0) then HHSetTimer(Gear); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

801 
end; 
930  802 

302  803 
if CurAmmoGear <> nil then 
804 
begin 

351  805 
CurAmmoGear^.Message:= Gear^.Message; 
302  806 
exit 
807 
end; 

808 

952  809 
if not isInMultiShoot then 
810 
HedgehogChAngle(Gear); 

926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

811 

542  812 
if (Gear^.State and gstMoving) <> 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

813 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

814 
wasJumping:= ((Gear^.State and gstHHJumping) <> 0); 
2376  815 

3894  816 
if ((Gear^.Message and gmHJump) <> 0) and 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

817 
wasJumping and 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

818 
((Gear^.State and gstHHHJump) = 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

819 
if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.dY < _0_02) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

820 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

821 
Gear^.State:= Gear^.State or gstHHHJump; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

822 
Gear^.dY:= _0_25; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

823 
if not cArtillery then Gear^.dX:= SignAs(_0_02, Gear^.dX); 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset

824 
PlaySound(sndJump2, Hedgehog^.Team^.voicepack) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

825 
end; 
2376  826 

3894  827 
Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump); 
538  828 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

829 
if (not cArtillery) and wasJumping and 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

830 
TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX); 
538  831 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

832 
doStepHedgehogMoving(Gear); 
542  833 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

834 
if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

835 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

836 
AddGearCI(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

837 
if wasJumping then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

838 
StepTicks:= 410 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

839 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

840 
StepTicks:= 95 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

841 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

842 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

843 
end; 
302  844 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

845 
if not isInMultiShoot then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

846 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

847 
if StepTicks > 0 then dec(StepTicks); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

848 
if (StepTicks = 0) then HedgehogStep(Gear) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

849 
end 
302  850 
end; 
851 

4  852 
//////////////////////////////////////////////////////////////////////////////// 
853 
procedure doStepHedgehogFree(Gear: PGear); 

511  854 
var prevState: Longword; 
4  855 
begin 
511  856 
prevState:= Gear^.State; 
4  857 

538  858 
doStepHedgehogMoving(Gear); 
4  859 

1002  860 
if (Gear^.State and (gstMoving or gstDrowning)) <> 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

861 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

862 
if Gear^.Damage > 0 then CalcRotationDirAngle(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

863 
AllInactive:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

864 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

865 
end; 
4  866 

863  867 
if (Gear^.Health = 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

868 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

869 
if PrvInactive then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

870 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

871 
Gear^.Timer:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

872 
FollowGear:= Gear; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

873 
PrvInactive:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

874 
AllInactive:= false; 
2140  875 

3310  876 
if not PHedgehog(Gear^.Hedgehog)^.Team^.hasGone then 
877 
begin 

3768  878 
if PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] then begin 
879 
ResurrectHedgehog(Gear); 

880 
end else begin 

881 
Gear^.State:= Gear^.State or gstHHDeath; 

882 
Gear^.doStep:= @doStepHedgehogDead; 

883 
// Death message 

884 
AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); 

885 
end; 

3310  886 
end 
887 
else 

888 
begin 

889 
Gear^.State:= Gear^.State or gstHHGone; 

890 
Gear^.doStep:= @doStepHedgehogGone; 

891 
// Gone message 

892 
AddCaption(Format(GetEventString(eidGone), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); 

893 
end 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

894 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

895 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

896 
end; 
4  897 

1033  898 
if ((Gear^.State and gstWait) = 0) and 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

899 
(prevState <> Gear^.State) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

900 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

901 
Gear^.State:= gstWait; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

902 
Gear^.Timer:= 150 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

903 
end else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

904 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

905 
if Gear^.Timer = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

906 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

907 
Gear^.State:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

908 
Gear^.Active:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

909 
AddGearCI(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

910 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

911 
end else dec(Gear^.Timer) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

912 
end; 
863  913 

914 
AllInactive:= false 

4  915 
end; 
916 

917 
//////////////////////////////////////////////////////////////////////////////// 

918 
procedure doStepHedgehog(Gear: PGear); 

919 
begin 

3894  920 
if (Gear^.Message and gmDestroy) <> 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

921 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

922 
DeleteGear(Gear); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

923 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

924 
end; 
1505  925 

2040  926 
if (Gear^.State and gstHHDriven) = 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

927 
doStepHedgehogFree(Gear) 
2040  928 
else 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

929 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

930 
with PHedgehog(Gear^.Hedgehog)^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

931 
if Team^.hasGone then TeamGoneEffect(Team^); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

932 
doStepHedgehogDriven(Gear) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

933 
end; 
2585
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset

934 
end; 