author  nemo 
Tue, 08 Mar 2011 15:50:42 0500  
changeset 4994  2d9a52d6ea24 
parent 4976  088d40d8aba2 
child 5013  04789ba3f200 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
4976  3 
* Copyright (c) 20042011 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 ? 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

44 
function ChangeAmmo(HHGear: PGear): boolean; 
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 
4135
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset

48 
ChangeAmmo:= false; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

49 
slot:= HHGear^.MsgParam; 
783  50 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

52 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

53 
HHGear^.Message:= HHGear^.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

54 
ammoidx:= 0; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

55 
if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or 
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset

56 
(TargetPoint.X <> NoPointX) or 
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset

57 
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

58 
((HHGear^.State and gstHHDriven) = 0) then exit; 
4135
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset

59 
ChangeAmmo:= true; 
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset

60 

5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset

61 
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); 
783  62 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

63 
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^); 
3430  64 

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

65 
MultiShootAttacks:= 0; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

66 
HHGear^.Message:= HHGear^.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

67 

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

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

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

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

71 
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

72 
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

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

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

75 
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

76 
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

77 
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

78 
//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

79 
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

80 
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

81 
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

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

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

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

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

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

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

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

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

90 
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

91 
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

92 
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

93 
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

94 
end 
783  95 
end; 
96 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

97 
procedure HHSetWeapon(HHGear: PGear); 
783  98 
var t: LongInt; 
99 
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

100 
Hedgehog: PHedgehog; 
4135
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset

101 
s: boolean; 
783  102 
begin 
4827
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset

103 
s:= false; 
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset

104 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

105 
weap:= TAmmoType(HHGear^.MsgParam); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

106 
Hedgehog:= HHGear^.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

107 

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

108 
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

109 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

110 
HHGear^.MsgParam:= Ammoz[weap].Slot; 
783  111 

112 
t:= cMaxSlotAmmoIndex; 

113 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

114 
HHGear^.Message:= HHGear^.Message and not gmWeapon; 
783  115 

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

116 
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

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

118 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

119 
s:= ChangeAmmo(HHGear); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

122 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

123 
if s then ApplyAmmoChanges(HHGear^.Hedgehog^) 
783  124 
end; 
125 

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

126 
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

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

128 
begin 
3894  129 
Gear^.Message:= Gear^.Message and not gmTimer; 
4365  130 
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); 
131 
with 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

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

133 
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

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

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

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

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

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

139 

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

140 

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

141 
procedure Attack(Gear: PGear); 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

142 
var xx, yy, newDx, newDy, 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

143 
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

144 
CurWeapon: PAmmo; 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

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

146 
begin 
2807  147 
bShowFinger:= false; 
4365  148 
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

149 
with Gear^, 
4365  150 
Gear^.Hedgehog^ do 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

151 
begin 
95  152 
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

153 
((State and (gstAttacked or gstHHChooseTarget)) = 0) and 
2376  154 
(((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

155 
// 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

156 
((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

157 
((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

158 
((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

159 
begin 
95  160 
State:= State or gstAttacking; 
3894  161 
if Power = cMaxPower then Message:= Message and not gmAttack 
162 
else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack 

95  163 
else begin 
164 
if Power = 0 then 

165 
begin 

351  166 
AttackBar:= CurrentTeam^.AttackBar; 
2745  167 
PlaySound(sndThrowPowerUp) 
95  168 
end; 
169 
inc(Power) 

170 
end; 

3894  171 
if ((Message and gmAttack) <> 0) then exit; 
351  172 

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

173 
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

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

177 
end; 
1922  178 

519  179 
xx:= SignAs(AngleSin(Angle), dX); 
900  180 
yy:= AngleCos(Angle); 
181 

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

182 
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

183 
ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); 
3483  184 

3469  185 
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

186 
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

187 
PlaySound(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack); 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

188 

b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

189 
// Initiating alt attack 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

190 
if (CurAmmoGear <> nil) and 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

191 
((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) and 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

192 
((Gear^.Message and gmLJump) <> 0) and 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

193 
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

194 
begin 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

195 
newDx:= dX / _2; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

196 
newDy:= dY / _2; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

197 
altUse:= true; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

198 
end 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

199 
else 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

200 
begin 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

201 
newDx:= xx*Power/cPowerDivisor; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

202 
newDy:= yy*Power/cPowerDivisor; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

203 
altUse:= false 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

204 
end; 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

205 

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

206 
case CurAmmoType of 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

207 
amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBomb, 0, newDx, newDy, CurWeapon^.Timer); 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

208 
amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov, 0, newDx, newDy, 0); 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

209 
amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, newDx, newDy, CurWeapon^.Timer); 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

210 
amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, newDx, newDy, CurWeapon^.Timer); 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

211 
amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtShell, 0, newDx, newDy, 0); 
4578  212 
amSnowball: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball, 0, newDx, newDy, 0); 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

213 
amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee, 0, newDx, newDy, 0); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

214 
amShotgun: begin 
2745  215 
PlaySound(sndShotgunReload); 
3483  216 
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

217 
end; 
3483  218 
amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0); 
866  219 
amSkip: ParseCommand('/skip', true); 
3483  220 
amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

221 
amMine: if altUse then 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

222 
AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000) 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

223 
else 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

224 
AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); 
3710  225 
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
3483  226 
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); 
227 
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); 

4790  228 
amPortalGun: begin 
229 
AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 

230 
// set selected color 

231 
CurWeapon^.Pos); 

232 
end; 

2827  233 
amSniperRifle: begin 
234 
PlaySound(sndSniperReload); 

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

1712  239 
amWhip: begin 
3483  240 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX),  _0_8, 0); 
2745  241 
PlaySound(sndWhipCrack) 
1712  242 
end; 
3717  243 
amHammer: begin 
244 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX),  _0_8, 0); 

245 
PlaySound(sndWhack) 

246 
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

247 
amBaseballBat: begin 
3483  248 
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); 
2996  249 
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

250 
end; 
3851  251 
amParachute: begin 
252 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0); 

253 
PlaySound(sndParachute) 

254 
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

255 
// we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear. 
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset

256 
amAirAttack: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0); 
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset

257 
amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0); 
3483  258 
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

259 
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

260 
amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0); 
3483  261 
amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0); 
2262  262 
amMortar: begin 
3483  263 
playSound(sndMortar); 
264 
FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); 

265 
end; 

1712  266 
amRCPlane: begin 
3483  267 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); 
2745  268 
CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil) 
1712  269 
end; 
3483  270 
amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); 
271 
amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); 

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

4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

273 
amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, newDx, newDy, CurWeapon^.Timer); 
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

274 
amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, newDx, newDy, 0); 
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset

275 
amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0); 
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset

276 
amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0); 
3484  277 
amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); 
3483  278 
amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0); 
3123  279 
amBirdy: begin 
280 
PlaySound(sndWhistle); 

3483  281 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly)  32, gtBirdy, 0, _0, _0, 0); 
3123  282 
end; 
2908  283 
amLowGravity: begin 
284 
PlaySound(sndLowGravity); 

4623  285 
cGravity:= cMaxWindSpeed; 
286 
cGravityf:= 0.00025 

2908  287 
end; 
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

288 
amExtraDamage:begin 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

289 
PlaySound(sndHellishImpact4); 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

290 
cDamageModifier:= _1_5 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

291 
end; 
1849  292 
amInvulnerable: Invulnerable:= true; 
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

293 
amExtraTime: begin 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

294 
PlaySound(sndSwitchHog); 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

295 
TurnTimeLeft:= TurnTimeLeft + 30000 
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

296 
end; 
1854  297 
amLaserSight: cLaserSighting:= true; 
3483  298 
amVampiric: begin 
299 
PlaySound(sndOw1, Team^.voicepack); 

300 
cVampiric:= true; 

301 
end; 

3351  302 
amPiano: begin 
3399  303 
// Tuck the hedgehog away until the piano attack is completed 
304 
Unplaced:= true; 

305 
X:= _0; 

306 
Y:= _0; 

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

309 
end; 

3484  310 
amFlamethrower: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower, 0, xx * _0_5, yy * _0_5, 0); 
3991
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3970
diff
changeset

311 
amResurrector: begin 
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3970
diff
changeset

312 
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), 
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3970
diff
changeset

313 
gtResurrector, 0, _0, _0, 0); 
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3970
diff
changeset

314 
CurAmmoGear^.SoundChannel := LoopSound(sndResurrector); 
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3970
diff
changeset

315 
end; 
4867
e604ee83e34f
let players set timer of drill strike. yes. drill strike :3 the timer starts to tick on first impact
sheepluva
parents:
4837
diff
changeset

316 
amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer); 
4246
e5cb885492df
drillstrike! might require the drill patch to improve behavior
koda
parents:
4241
diff
changeset

317 
//amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0); 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

318 
amStructure: begin 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

319 
FollowGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, 0, SignAs(_0_03, dX), _0, 0); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

320 
FollowGear^.Hedgehog:= Gear^.Hedgehog; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

322 
end; 
829  323 

4994  324 
// Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement 
325 
if altUse then FollowGear:= nil; 

326 

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

327 
uStats.AmmoUsed(CurAmmoType); 
829  328 

2017  329 
if not (SpeechText = '') then 
330 
begin 

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

331 
tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble); 
2115  332 
if tmpGear <> nil then 
333 
begin 

334 
tmpGear^.Text:= SpeechText; 

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

336 
tmpGear^.FrameTicks:= SpeechType; 

337 
end; 

2017  338 
SpeechText:= '' 
339 
end; 

340 

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

341 
Power:= 0; 
930  342 
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

343 
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

344 
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

345 
CurAmmoGear^.AmmoType:= CurAmmoType; 
3894  346 
Message:= Message or gmAttack; 
351  347 
CurAmmoGear^.Message:= Message 
82  348 
end else begin 
351  349 
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

350 
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a'); 
1849  351 
AfterAttack; 
82  352 
end 
3894  353 
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

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

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

356 

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

357 
procedure AfterAttack; 
2502  358 
var s: shortstring; 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

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

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

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

363 
begin 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

364 
a:= CurAmmoType; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

365 
State:= State and not gstAttacking; 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

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

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

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

369 

3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

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

371 
begin 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

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

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

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

375 

3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

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

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

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

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

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

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

382 
begin 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

383 
OnUsedAmmo(CurrentHedgehog^); 
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset

384 
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and ((GameFlags and gfInfAttack) = 0) then 
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset

385 
TurnTimeLeft:= Ammoz[a].TimeAfterTurn; 
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset

386 
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) then State:= State or gstAttacked; 
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset

387 
if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then ApplyAmmoChanges(CurrentHedgehog^) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

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

394 
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

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

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

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

398 

42  399 
//////////////////////////////////////////////////////////////////////////////// 
863  400 
procedure doStepHedgehogDead(Gear: PGear); 
868  401 
const frametime = 200; 
402 
timertime = frametime * 6; 

863  403 
begin 
4365  404 
if Gear^.Hedgehog^.Unplaced then exit; 
863  405 
if Gear^.Timer > 1 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

409 
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

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

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

413 
Gear^.State:= Gear^.State or gstNoDamage; 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4827
diff
changeset

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

415 
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

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

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

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

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

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

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

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

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

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

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

427 
end 
863  428 
end; 
429 

430 
//////////////////////////////////////////////////////////////////////////////// 

3310  431 
procedure doStepHedgehogGone(Gear: PGear); 
432 
const frametime = 65; 

433 
timertime = frametime * 11; 

434 
begin 

4365  435 
if Gear^.Hedgehog^.Unplaced then exit; 
3310  436 
if Gear^.Timer > 1 then 
437 
begin 

438 
AllInactive:= false; 

439 
dec(Gear^.Timer); 

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

441 
end else 

442 
if Gear^.Timer = 1 then 

443 
begin 

444 
DeleteGear(Gear); 

445 
SetAllToActive 

446 
end else // Gear^.Timer = 0 

447 
begin 

448 
AllInactive:= false; 

449 
Gear^.Z:= cCurrHHZ; 

450 
RemoveGearFromList(Gear); 

451 
InsertGearToList(Gear); 

4365  452 
PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); 
3310  453 
PlaySound(sndWarp); 
454 
Gear^.Pos:= 0; 

455 
Gear^.Timer:= timertime 

456 
end 

457 
end; 

458 

459 
//////////////////////////////////////////////////////////////////////////////// 

42  460 
procedure PickUp(HH, Gear: PGear); 
295  461 
var s: shortstring; 
462 
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

463 
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

464 
vga: PVisualGear; 
42  465 
begin 
3894  466 
Gear^.Message:= gmDestroy; 
2745  467 
PlaySound(sndShotgunReload); 
351  468 
case Gear^.Pos of 
1964  469 
posCaseUtility, 
295  470 
posCaseAmmo: begin 
4238
6f1631765ebd
Fix a longstanding bug with ammo due to gstMoving being set on gears generically, causing an incorrect ammo type to be set. This caused crashes and incorrect ammo types.
nemo
parents:
4233
diff
changeset

471 
a:= Gear^.AmmoType; 
4372  472 
AddAmmo(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

473 
// 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

474 
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up 
4372  475 
if (not (HH^.Hedgehog^.Team^.ExtDriven 
476 
or (HH^.Hedgehog^.BotLevel > 0))) 

477 
or (HH^.Hedgehog^.Team^.Clan^.ClanIndex = LocalClan) 

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

478 
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

479 
begin 
3196  480 
s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; 
4372  481 
AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); 
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset

482 

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

483 
// 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

484 
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

485 
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

486 
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

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

488 

295  489 
end; 
42  490 
posCaseHealth: begin 
351  491 
inc(HH^.Health, Gear^.Health); 
4372  492 
HH^.Hedgehog^.Effects[hePoisoned] := false; 
351  493 
str(Gear^.Health, s); 
295  494 
s:= '+' + s; 
4372  495 
AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); 
496 
RenderHealth(HH^.Hedgehog^); 

497 
RecountTeamHealth(HH^.Hedgehog^.Team); 

2428  498 

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

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

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

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

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

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

504 
end; 
42  505 
end; 
435  506 
end 
42  507 
end; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

508 

4  509 
const StepTicks: LongWord = 0; 
510 

302  511 
procedure HedgehogStep(Gear: PGear); 
371  512 
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

513 
CurWeapon: PAmmo; 
302  514 
begin 
4365  515 
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); 
542  516 
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then 
4  517 
begin 
408  518 
if isCursorVisible then 
4365  519 
with 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

520 
with CurWeapon^ do 
408  521 
begin 
3894  522 
if (Gear^.Message and gmLeft ) <> 0 then 
3407  523 
Pos:= (Pos  1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount 
408  524 
else 
3894  525 
if (Gear^.Message and gmRight ) <> 0 then 
408  526 
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount 
527 
else exit; 

423  528 
StepTicks:= 200; 
408  529 
exit 
530 
end; 

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

531 

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

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

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

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

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

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

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

539 
end; 
1033  540 

3894  541 
if ((Gear^.Message and gmLJump ) <> 0) then 
4  542 
begin 
3894  543 
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

544 
DeleteCI(Gear); 
68  545 
if not TestCollisionYwithGear(Gear, 1) then 
498  546 
if not TestCollisionXwithXYShift(Gear, _0, 2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _2 else 
547 
if not TestCollisionXwithXYShift(Gear, _0, 1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _1; 

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

552 
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); 
542  553 
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; 
4365  554 
PlaySound(sndJump1, Gear^.Hedgehog^.Team^.voicepack); 
4  555 
exit 
556 
end; 

557 
end; 

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

558 

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

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

563 

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

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

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

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

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

570 

351  571 
PrevdX:= hwSign(Gear^.dX); 
3894  572 
if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= cLittle else 
573 
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

574 

3894  575 
if (Gear^.Message and (gmLeft or gmRight)) <> 0 then 
2940  576 
begin 
577 
StepSoundTimer:= cHHStepTicks; 

578 
end; 

579 

74  580 
StepTicks:= cHHStepTicks; 
610  581 
if PrevdX <> hwSign(Gear^.dX) then 
582 
begin 

583 
FollowGear:= Gear; 

584 
exit 

585 
end; 

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

838  587 

4365  588 
Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; 
351  589 
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then 
4  590 
begin 
498  591 
if not (TestCollisionXwithXYShift(Gear, _0, 6, hwSign(Gear^.dX)) 
592 
or TestCollisionYwithGear(Gear, 1)) then Gear^.Y:= Gear^.Y  _1; 

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

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

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

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

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

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

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

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

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

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

4  603 
end; 
1528  604 

3894  605 
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

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

607 

62  608 
SetAllHHToActive; 
37  609 

68  610 
if not TestCollisionYwithGear(Gear, 1) then 
4  611 
begin 
498  612 
Gear^.Y:= Gear^.Y + _1; 
68  613 
if not TestCollisionYwithGear(Gear, 1) then 
4  614 
begin 
498  615 
Gear^.Y:= Gear^.Y + _1; 
68  616 
if not TestCollisionYwithGear(Gear, 1) then 
4  617 
begin 
498  618 
Gear^.Y:= Gear^.Y + _1; 
68  619 
if not TestCollisionYwithGear(Gear, 1) then 
4  620 
begin 
498  621 
Gear^.Y:= Gear^.Y + _1; 
68  622 
if not TestCollisionYwithGear(Gear, 1) then 
4  623 
begin 
498  624 
Gear^.Y:= Gear^.Y + _1; 
68  625 
if not TestCollisionYwithGear(Gear, 1) then 
4  626 
begin 
498  627 
Gear^.Y:= Gear^.Y + _1; 
68  628 
if not TestCollisionYwithGear(Gear, 1) then 
4  629 
begin 
498  630 
Gear^.Y:= Gear^.Y  _6; 
631 
Gear^.dY:= _0; 

542  632 
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

633 
exit 
4  634 
end; 
635 
end 

636 
end 

637 
end 

638 
end 

639 
end 

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

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

641 
AddGearCI(Gear) 
4  642 
end 
643 
end; 

644 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

647 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

648 
with HHGear^.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

649 
if (CurAmmoType = amRope) 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

650 
and ((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1; 
958  651 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

652 
if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

653 
if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then dec(HHGear^.Angle, da) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

654 
else 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

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

657 

302  658 
procedure doStepHedgehog(Gear: PGear); forward; 
659 
//////////////////////////////////////////////////////////////////////////////// 

538  660 
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

661 
var isFalling, isUnderwater: boolean; 
538  662 
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

663 
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

664 
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

665 
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

666 

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

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

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

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

671 
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

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

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

674 
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); 
542  675 
if isFalling then 
538  676 
begin 
677 
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, 1) then Gear^.dY:= _0; 

542  678 
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

679 
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2 
4301  680 
else 
681 
begin 

682 
Gear^.dY:= Gear^.dY + cGravity; 

683 
// this set of circumstances could be less complex if jumping was more clearly identified 

684 
if ((GameFlags and gfMoreWind) <> 0) and 

4633  685 
(((Gear^.Damage <> 0) or 
4301  686 
((CurAmmoGear <> nil) and 
687 
((CurAmmoGear^.AmmoType = amJetpack) or 

688 
(CurAmmoGear^.AmmoType = amBirdy))) or 

4633  689 
((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue))) 
4641  690 
then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density 
4301  691 
end 
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

692 
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

693 
else 
538  694 
begin 
4301  695 
if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) 
538  696 
and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX); 
697 

540  698 
if not Gear^.dY.isNegative then 
699 
begin 

700 
CheckHHDamage(Gear); 

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

701 

2137  702 
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

703 
(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

704 

542  705 
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); 
540  706 
Gear^.dY:= _0; 
707 
end else Gear^.dY:= Gear^.dY + cGravity; 

538  708 

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

710 
end; 

711 

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

783  713 

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

714 
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

715 
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

716 
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

717 
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

718 
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

719 

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

542  722 
if not isFalling then 
538  723 
if hwAbs(Gear^.dX) > _0_01 then 
724 
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 

725 
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 

726 
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 

727 
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 

728 
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 

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

730 
else begin 

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

732 
SetLittle(Gear^.dX) 

733 
end 

734 
else begin 

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

736 
SetLittle(Gear^.dX) 

737 
end 

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

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

741 
else SetLittle(Gear^.dX); 

538  742 

542  743 
if (not isFalling) and 
538  744 
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then 
745 
begin 

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

746 
Gear^.State:= Gear^.State and not gstWinner; 
538  747 
Gear^.State:= Gear^.State and not gstMoving; 
748 
SetLittle(Gear^.dX); 

749 
Gear^.dY:= _0 

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

751 

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

753 
begin 

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

2017  755 
// ARTILLERY but not being moved by explosions 
538  756 
Gear^.X:= Gear^.X + Gear^.dX; 
757 
Gear^.Y:= Gear^.Y + Gear^.dY; 

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

759 
(not TestCollisionYKick(Gear, 1)) and 

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

761 
begin 

762 
CheckHHDamage(Gear); 

763 
Gear^.dY:= _0; 

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

765 
end; 

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

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

767 
if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false 
2428  768 
end; 
769 

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

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

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

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

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

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

778 
end 
2428  779 
else 
780 
begin 

781 
Gear^.FlightTime:= 0; 

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

782 
end; 
2428  783 

538  784 
end; 
785 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

786 
procedure doStepHedgehogDriven(HHGear: PGear); 
302  787 
var t: PGear; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

788 
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

789 
Hedgehog: PHedgehog; 
302  790 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

791 
Hedgehog:= HHGear^.Hedgehog; 
558
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

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

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

794 
else 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

796 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

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

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

800 
isCursorVisible:= false; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

802 
AttackBar:= 0; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

803 
if HHGear^.Damage > 0 then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

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

806 
end; 
1035  807 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

809 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

810 
HHGear^.Message:= 0; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

811 
if (HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].VoiceDelay) and (HHGear^.Timer = 0) then PlaySound(Wavez[TWave(HHGear^.Tag)].Voice, Hedgehog^.Team^.voicepack); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

812 
inc(HHGear^.Timer); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

814 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

815 
HHGear^.Timer:= 0; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

816 
inc(HHGear^.Pos); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

817 
if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

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

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

821 
end; 
1033  822 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

823 
if ((HHGear^.State and gstMoving) <> 0) 
836  824 
or (StepTicks = cHHStepTicks) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

826 
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

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

828 
if (CurAmmoGear = nil) 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

829 
and (HHGear^.dY > _0_39) 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

830 
and (CurAmmoType = amParachute) then HHGear^.Message:= HHGear^.Message or gmAttack; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

831 
// check for case with ammo 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

833 
if t <> nil then 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

835 
end; 
302  836 

930  837 
if (CurAmmoGear = nil) then 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

838 
if (((HHGear^.Message and gmAttack) <> 0) 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

839 
or ((HHGear^.State and gstAttacking) <> 0)) then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

841 
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

842 
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

843 
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

844 
if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

845 
and ((HHGear^.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

846 
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

847 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

848 
Attack(HHGear); 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

849 
HHGear^.Message:= HHGear^.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

850 
end; 
930  851 

852 
if (CurAmmoGear = nil) 

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

853 
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) 
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset

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

855 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

856 
if ((HHGear^.Message and gmSlot) <> 0) then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

857 
if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^); 
930  858 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

859 
if ((HHGear^.Message and gmWeapon) <> 0) then HHSetWeapon(HHGear); 
930  860 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

862 
end; 
930  863 

302  864 
if CurAmmoGear <> nil then 
865 
begin 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

866 
CurAmmoGear^.Message:= HHGear^.Message; 
302  867 
exit 
868 
end; 

869 

952  870 
if not isInMultiShoot then 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

872 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

874 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

875 
wasJumping:= ((HHGear^.State and gstHHJumping) <> 0); 
2376  876 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

878 
wasJumping and 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

879 
((HHGear^.State and gstHHHJump) = 0) then 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

881 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

882 
HHGear^.State:= HHGear^.State or gstHHHJump; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

883 
HHGear^.dY:= _0_25; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

884 
if not cArtillery then HHGear^.dX:= SignAs(_0_02, HHGear^.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

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

886 
end; 
2376  887 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

888 
HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump); 
538  889 

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

890 
if (not cArtillery) and wasJumping and 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

891 
TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX); 
538  892 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

893 
if Hedgehog^.Gear <> nil then doStepHedgehogMoving(HHGear); 
542  894 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

896 
begin 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

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

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

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

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

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

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

904 
end; 
302  905 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

906 
if not isInMultiShoot and (Hedgehog^.Gear <> nil) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

908 
if StepTicks > 0 then dec(StepTicks); 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

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

910 
end 
302  911 
end; 
912 

4  913 
//////////////////////////////////////////////////////////////////////////////// 
914 
procedure doStepHedgehogFree(Gear: PGear); 

511  915 
var prevState: Longword; 
4  916 
begin 
511  917 
prevState:= Gear^.State; 
4  918 

538  919 
doStepHedgehogMoving(Gear); 
4  920 

1002  921 
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

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

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

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

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

926 
end; 
4  927 

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

929 
begin 
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset

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

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

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

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

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

935 
AllInactive:= false; 
2140  936 

4365  937 
if not Gear^.Hedgehog^.Team^.hasGone then 
3310  938 
begin 
4365  939 
Gear^.Hedgehog^.Effects[hePoisoned] := false; 
940 
if Gear^.Hedgehog^.Effects[heResurrectable] then begin 

3768  941 
ResurrectHedgehog(Gear); 
942 
end else begin 

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

944 
Gear^.doStep:= @doStepHedgehogDead; 

945 
// Death message 

4365  946 
AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); 
3768  947 
end; 
3310  948 
end 
949 
else 

950 
begin 

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

952 
Gear^.doStep:= @doStepHedgehogGone; 

953 
// Gone message 

4365  954 
AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); 
3310  955 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

958 
end; 
4  959 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

974 
end; 
863  975 

976 
AllInactive:= false 

4  977 
end; 
978 

979 
//////////////////////////////////////////////////////////////////////////////// 

980 
procedure doStepHedgehog(Gear: PGear); 

981 
begin 

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

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

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

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

986 
end; 
1505  987 

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

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

991 
begin 
4365  992 
with Gear^.Hedgehog^ do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

996 
end; 