author  smxx 
Tue, 30 Mar 2010 13:35:26 +0000  
changeset 3174  17e2602dfdc5 
parent 3169  c8c6ac44f51b 
child 3196  336d6fc3325c 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
1689  3 
* Copyright (c) 20042009 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 
//////////////////////////////////////////////////////////////////////////////// 
783  20 
procedure ChangeAmmo(Gear: PGear); 
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

21 
var slot, i: Longword; 
783  22 
begin 
23 
slot:= Gear^.MsgParam; 

24 

25 
with PHedgehog(Gear^.Hedgehog)^ do 

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

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

27 
Gear^.Message:= Gear^.Message and not gm_Slot; 
2376  28 

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

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

30 
or (MultiShootAttacks > 0) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

31 
or ((Gear^.State and gstHHDriven) = 0) then exit; 
783  32 

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

33 
Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump); 
783  34 

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

35 
if CurSlot = slot then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

39 
inc(CurAmmo); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

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

46 
until (Ammo^[slot, CurAmmo].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, CurAmmo].AmmoType].SkipTurns) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

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

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

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

55 
if i <= cMaxSlotAmmoIndex then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

57 
CurSlot:= slot; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

61 
end 
783  62 
end; 
63 

64 
procedure HHSetWeapon(Gear: PGear); 

65 
var t: LongInt; 

66 
weap: TAmmoType; 

67 
begin 

68 
weap:= TAmmoType(Gear^.MsgParam); 

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

69 

2434  70 
if PHedgehog(Gear^.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

71 

783  72 
Gear^.MsgParam:= Ammoz[weap].Slot; 
73 

74 
t:= cMaxSlotAmmoIndex; 

75 

76 
Gear^.Message:= Gear^.Message and not gm_Weapon; 

77 

78 
with PHedgehog(Gear^.Hedgehog)^ do 

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

79 
while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

84 

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

85 
ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^) 
783  86 
end; 
87 

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

88 
procedure HHSetTimer(Gear: PGear); 
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

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

90 
Gear^.Message:= Gear^.Message and not gm_Timer; 
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset

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

92 
if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

94 
Ammo^[CurSlot, CurAmmo].Timer:= 1000 * Gear^.MsgParam; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

99 

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

100 

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

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

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

104 
begin 
2807  105 
bShowFinger:= false; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

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

108 
begin 
95  109 
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

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

112 
// Allow attacks while moving on ammo with AltAttack 
2376  113 
((CurAmmoGear <> nil) and ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0)) or 
2238  114 
((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_AttackInMove) <> 0)) and 
836  115 
((TargetPoint.X <> NoPointX) or ((Ammo^[CurSlot, CurAmmo].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

116 
begin 
95  117 
State:= State or gstAttacking; 
118 
if Power = cMaxPower then Message:= Message and not gm_Attack 

351  119 
else if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) = 0 then Message:= Message and not gm_Attack 
95  120 
else begin 
121 
if Power = 0 then 

122 
begin 

351  123 
AttackBar:= CurrentTeam^.AttackBar; 
2745  124 
PlaySound(sndThrowPowerUp) 
95  125 
end; 
126 
inc(Power) 

127 
end; 

128 
if ((Message and gm_Attack) <> 0) then exit; 

351  129 

130 
if (Ammo^[CurSlot, CurAmmo].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

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

134 
end; 
1922  135 

519  136 
xx:= SignAs(AngleSin(Angle), dX); 
900  137 
yy:= AngleCos(Angle); 
138 

139 
if ((Gear^.State and gstHHHJump) <> 0) then xx:=  xx; 

2647  140 
if Ammo^[CurSlot, CurAmmo].AttackVoice <> sndNone then 
2745  141 
PlaySound(Ammo^[CurSlot, CurAmmo].AttackVoice, CurrentTeam^.voicepack); 
351  142 
case Ammo^[CurSlot, CurAmmo].AmmoType of 
143 
amGrenade: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtAmmo_Bomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer); 

2470  144 
amMolotov: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMolotov, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
351  145 
amClusterBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtClusterBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer); 
146 
amBazooka: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtAmmo_Grenade, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 

3080  147 
amBee: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtBee, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

148 
amShotgun: begin 
2745  149 
PlaySound(sndShotgunReload); 
351  150 
CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), 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

151 
end; 
498  152 
amPickHammer: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, gtPickHammer, 0, _0, _0, 0); 
866  153 
amSkip: ParseCommand('/skip', true); 
351  154 
amRope: CurAmmoGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtRope, 0, xx, yy, 0); 
2882  155 
amMine: AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); 
876  156 
amDEagle: CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); 
2827  157 
amSniperRifle: begin 
158 
PlaySound(sndSniperReload); 

159 
CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius), hwRound(Y + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); 

160 
end; 

2647  161 
amDynamite: AddGear(hwRound(X) + hwSign(dX) * 7, hwRound(Y), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); 
979
edb8f208c1d9
Fix firepunch direction when attacking from high jump
unc0rr
parents:
958
diff
changeset

162 
amFirePunch: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtFirePunch, 0, xx, _0, 0); 
1712  163 
amWhip: begin 
164 
CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtWhip, 0, SignAs(_1, dX),  _0_8, 0); 

2745  165 
PlaySound(sndWhipCrack) 
1712  166 
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

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

168 
CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); 
2996  169 
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

170 
end; 
498  171 
amParachute: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtParachute, 0, _0, _0, 0); 
172 
amAirAttack: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 0, _0, _0, 0); 

173 
amMineStrike: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 1, _0, _0, 0); 

174 
amBlowTorch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0); 

175 
amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, Ammo^[CurSlot, CurAmmo].Pos, _0, _0, 0); 

520  176 
amTeleport: CurAmmoGear:= AddGear(0, 0, gtTeleport, 0, _0, _0, 0); 
534  177 
amSwitch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtSwitcher, 0, _0, _0, 0); 
2262  178 
amMortar: begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

179 
playSound(sndMortar); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

180 
FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

181 
end; 
1712  182 
amRCPlane: begin 
183 
CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); 

2745  184 
CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil) 
1712  185 
end; 
984  186 
amKamikaze: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); 
2647  187 
amCake: CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 3, hwRound(Y), gtCake, 0, xx, _0, 0); 
1286  188 
amSeduction: CurAmmoGear:= AddGear(hwRound(X + xx * cHHRadius * 2), hwRound(Y + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0); 
1261  189 
amWatermelon: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtWatermelon, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer); 
2302  190 
amHellishBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtHellishBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
1507  191 
amNapalm: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 2, _0, _0, 0); 
1573  192 
amDrill: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); 
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset

193 
amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); 
3066
5c0efa437728
Enable birdy. Has egg bombing. Eggs should possibly have a dX component. No poison yet, no egg sprite.
nemo
parents:
3065
diff
changeset

194 
amJetpack: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtJetpack, 0, _0, _0, 0); 
3123  195 
amBirdy: begin 
196 
PlaySound(sndWhistle); 

3161  197 
CurAmmoGear:= AddGear(hwRound(X), hwRound(Y)  32, gtBirdy, 0, _0, _0, 0); 
3123  198 
end; 
2908  199 
amLowGravity: begin 
200 
PlaySound(sndLowGravity); 

201 
cGravity:= cMaxWindSpeed / 2 

202 
end; 

1849  203 
amExtraDamage: cDamageModifier:= _1_5; 
204 
amInvulnerable: Invulnerable:= true; 

205 
amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000; 

1854  206 
amLaserSight: cLaserSighting:= true; 
2017  207 
amVampiric: cVampiric:= true; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

208 
end; 
829  209 

210 
uStats.AmmoUsed(Ammo^[CurSlot, CurAmmo].AmmoType); 

211 

2017  212 
if not (SpeechText = '') then 
213 
begin 

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

214 
tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble); 
2115  215 
if tmpGear <> nil then 
216 
begin 

217 
tmpGear^.Text:= SpeechText; 

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

219 
tmpGear^.FrameTicks:= SpeechType; 

220 
end; 

2017  221 
SpeechText:= '' 
222 
end; 

223 

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

224 
Power:= 0; 
930  225 
if (CurAmmoGear <> nil) 
226 
and (((Ammo^[CurSlot, CurAmmo].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

227 
begin 
930  228 
CurAmmoGear^.Ammo:= @(Ammo^[CurSlot, CurAmmo]); 
82  229 
Message:= Message or gm_Attack; 
351  230 
CurAmmoGear^.Message:= Message 
82  231 
end else begin 
351  232 
if not CurrentTeam^.ExtDriven and 
233 
((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Power) <> 0) then SendIPC('a'); 

1849  234 
AfterAttack; 
82  235 
end 
1849  236 
end else Message:= Message and not gm_Attack; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset

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

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

239 

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

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

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

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

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

246 
State:= State and not gstAttacking; 
3037
ab6e949eb5cb
Rename current things called utilities to Effects (since they impact game state / flags w/o using a gear) and add a bunch of things that don't cause damage and are just used to move to Utility crate.
nemo
parents:
3003
diff
changeset

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

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

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

250 

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

251 
if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

253 
s:= inttostr(Ammo^[CurSlot, CurAmmo].NumPerTurn + 1  MultiShootAttacks); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

256 

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

257 
if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) or 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

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

264 
TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

265 
State:= State or gstAttacked; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

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

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

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

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

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

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

277 

42  278 
//////////////////////////////////////////////////////////////////////////////// 
863  279 
procedure doStepHedgehogDead(Gear: PGear); 
868  280 
const frametime = 200; 
281 
timertime = frametime * 6; 

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

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

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

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

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

288 
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

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

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

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

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

294 
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

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

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

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

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

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

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

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

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

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

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

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

306 
end 
863  307 
end; 
308 

309 
//////////////////////////////////////////////////////////////////////////////// 

42  310 
procedure PickUp(HH, Gear: PGear); 
295  311 
var s: shortstring; 
312 
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

313 
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

314 
vga: PVisualGear; 
42  315 
begin 
351  316 
Gear^.Message:= gm_Destroy; 
2745  317 
PlaySound(sndShotgunReload); 
351  318 
case Gear^.Pos of 
1964  319 
posCaseUtility, 
295  320 
posCaseAmmo: begin 
351  321 
a:= TAmmoType(Gear^.State); 
553
5478386d935f
 Switch to bazooka (or whatever) after use of some weapon (fixes problem with bots)
unc0rr
parents:
549
diff
changeset

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

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

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

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

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

328 
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

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

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

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

332 

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

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

334 
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

335 
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

336 
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

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

338 

295  339 
end; 
42  340 
posCaseHealth: begin 
351  341 
inc(HH^.Health, Gear^.Health); 
3112  342 
PHedgehog(HH^.Hedgehog)^.Effects[hePoisoned] := false; 
351  343 
str(Gear^.Health, s); 
295  344 
s:= '+' + s; 
549  345 
AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); 
351  346 
RenderHealth(PHedgehog(HH^.Hedgehog)^); 
2428  347 
RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team); 
348 

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

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

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

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

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

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

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

358 

4  359 
const StepTicks: LongWord = 0; 
360 

302  361 
procedure HedgehogStep(Gear: PGear); 
371  362 
var PrevdX: LongInt; 
302  363 
begin 
542  364 
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then 
4  365 
begin 
408  366 
if isCursorVisible then 
367 
with PHedgehog(Gear^.Hedgehog)^ do 

368 
with Ammo^[CurSlot, CurAmmo] do 

369 
begin 

542  370 
if (Gear^.Message and gm_Left ) <> 0 then 
408  371 
Pos:= (Pos + Ammoz[AmmoType].PosCount  1) mod Ammoz[AmmoType].PosCount 
372 
else 

542  373 
if (Gear^.Message and gm_Right ) <> 0 then 
408  374 
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount 
375 
else exit; 

423  376 
StepTicks:= 200; 
408  377 
exit 
378 
end; 

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

379 

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

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

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

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

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

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

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

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

387 
end; 
1033  388 

351  389 
if ((Gear^.Message and gm_LJump ) <> 0) then 
4  390 
begin 
542  391 
Gear^.Message:= Gear^.Message and not gm_LJump; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset

392 
DeleteCI(Gear); 
68  393 
if not TestCollisionYwithGear(Gear, 1) then 
498  394 
if not TestCollisionXwithXYShift(Gear, _0, 2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _2 else 
395 
if not TestCollisionXwithXYShift(Gear, _0, 1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y  _1; 

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

400 
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); 
542  401 
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; 
2745  402 
PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); 
4  403 
exit 
404 
end; 

405 
end; 

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

406 

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

409 
DeleteCI(Gear); 
542  410 
Gear^.Message:= Gear^.Message and not gm_HJump; 
855
8842c71d16bf
 Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset

411 

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

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

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

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

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

418 

351  419 
PrevdX:= hwSign(Gear^.dX); 
2603  420 
if (Gear^.Message and gm_Left )<>0 then Gear^.dX:= cLittle else 
421 
if (Gear^.Message and gm_Right )<>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

422 

2940  423 
if (Gear^.Message and (gm_Left or gm_Right)) <> 0 then 
424 
begin 

425 
StepSoundTimer:= cHHStepTicks; 

426 
end; 

427 

74  428 
StepTicks:= cHHStepTicks; 
610  429 
if PrevdX <> hwSign(Gear^.dX) then 
430 
begin 

431 
FollowGear:= Gear; 

432 
exit 

433 
end; 

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

838  435 

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

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

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

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

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

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

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

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

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

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

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

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

4  451 
end; 
1528  452 

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

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

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

455 

62  456 
SetAllHHToActive; 
37  457 

68  458 
if not TestCollisionYwithGear(Gear, 1) then 
4  459 
begin 
498  460 
Gear^.Y:= Gear^.Y + _1; 
68  461 
if not TestCollisionYwithGear(Gear, 1) then 
4  462 
begin 
498  463 
Gear^.Y:= Gear^.Y + _1; 
68  464 
if not TestCollisionYwithGear(Gear, 1) then 
4  465 
begin 
498  466 
Gear^.Y:= Gear^.Y + _1; 
68  467 
if not TestCollisionYwithGear(Gear, 1) then 
4  468 
begin 
498  469 
Gear^.Y:= Gear^.Y + _1; 
68  470 
if not TestCollisionYwithGear(Gear, 1) then 
4  471 
begin 
498  472 
Gear^.Y:= Gear^.Y + _1; 
68  473 
if not TestCollisionYwithGear(Gear, 1) then 
4  474 
begin 
498  475 
Gear^.Y:= Gear^.Y + _1; 
68  476 
if not TestCollisionYwithGear(Gear, 1) then 
4  477 
begin 
498  478 
Gear^.Y:= Gear^.Y  _6; 
479 
Gear^.dY:= _0; 

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

481 
exit 
4  482 
end; 
483 
end 

484 
end 

485 
end 

486 
end 

487 
end 

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

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

489 
AddGearCI(Gear) 
4  490 
end 
491 
end; 

492 

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

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

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

497 
if (Ammo^[CurSlot, CurAmmo].AmmoType = amRope) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

1639  500 
if (((Gear^.Message and gm_Precise) = 0) or ((GameTicks mod 5) = 1)) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

505 

302  506 
procedure doStepHedgehog(Gear: PGear); forward; 
507 
//////////////////////////////////////////////////////////////////////////////// 

538  508 
procedure doStepHedgehogMoving(Gear: PGear); 
545  509 
var isFalling: boolean; 
538  510 
begin 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset

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

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

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

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

515 
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

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

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

518 
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); 
542  519 
if isFalling then 
538  520 
begin 
521 
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, 1) then Gear^.dY:= _0; 

542  522 
Gear^.State:= Gear^.State or gstMoving; 
538  523 
Gear^.dY:= Gear^.dY + cGravity 
524 
end else 

525 
begin 

526 
if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55) 

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

528 

540  529 
if not Gear^.dY.isNegative then 
530 
begin 

531 
CheckHHDamage(Gear); 

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

532 

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

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

535 

542  536 
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); 
540  537 
Gear^.dY:= _0; 
538 
end else Gear^.dY:= Gear^.dY + cGravity; 

538  539 

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

541 
end; 

542 

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

783  544 

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

542  547 
if not isFalling then 
538  548 
if hwAbs(Gear^.dX) > _0_01 then 
549 
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 

550 
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 

551 
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 

552 
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 

553 
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 

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

555 
else begin 

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

557 
SetLittle(Gear^.dX) 

558 
end 

559 
else begin 

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

561 
SetLittle(Gear^.dX) 

562 
end 

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

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

566 
else SetLittle(Gear^.dX); 

538  567 

542  568 
if (not isFalling) and 
538  569 
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then 
570 
begin 

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

571 
Gear^.State:= Gear^.State and not gstWinner; 
538  572 
Gear^.State:= Gear^.State and not gstMoving; 
573 
SetLittle(Gear^.dX); 

574 
Gear^.dY:= _0 

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

576 

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

578 
begin 

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

2017  580 
// ARTILLERY but not being moved by explosions 
538  581 
Gear^.X:= Gear^.X + Gear^.dX; 
582 
Gear^.Y:= Gear^.Y + Gear^.dY; 

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

584 
(not TestCollisionYKick(Gear, 1)) and 

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

586 
begin 

587 
CheckHHDamage(Gear); 

588 
Gear^.dY:= _0; 

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

590 
end; 

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

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

592 
if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false 
2428  593 
end; 
594 

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

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

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

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

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

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

603 
end 
2428  604 
else 
605 
begin 

606 
Gear^.FlightTime:= 0; 

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

607 
end; 
2428  608 

538  609 
end; 
610 

302  611 
procedure doStepHedgehogDriven(Gear: PGear); 
612 
var t: PGear; 

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

613 
wasJumping: boolean; 
302  614 
begin 
558
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset

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

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

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

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

619 

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

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

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

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

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

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

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

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

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

629 
end; 
1035  630 

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

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

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

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

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

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

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

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

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

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

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

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

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

644 
end; 
1033  645 

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

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

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

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

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

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

652 
and (Gear^.dY > _0_39) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

653 
and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

658 
end; 
302  659 

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

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

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

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

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

666 
if ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

668 
and (((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_AltUse) <> 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

672 
end; 
930  673 

674 
if (CurAmmoGear = nil) 

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

675 
or ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

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

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

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

681 
end; 
930  682 

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

683 
if ((Gear^.Message and gm_Weapon) <> 0) then HHSetWeapon(Gear); 
930  684 

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

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

686 
end; 
930  687 

302  688 
if CurAmmoGear <> nil then 
689 
begin 

351  690 
CurAmmoGear^.Message:= Gear^.Message; 
302  691 
exit 
692 
end; 

693 

952  694 
if not isInMultiShoot then 
695 
HedgehogChAngle(Gear); 

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

696 

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

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

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

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

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

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

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

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

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

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

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

708 
if not cArtillery then Gear^.dX:= SignAs(_0_02, Gear^.dX); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

710 
end; 
2376  711 

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

712 
Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump); 
538  713 

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

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

715 
TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX); 
538  716 

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

717 
doStepHedgehogMoving(Gear); 
542  718 

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

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

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

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

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

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

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

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

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

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

728 
end; 
302  729 

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

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

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

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

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

734 
end 
302  735 
end; 
736 

4  737 
//////////////////////////////////////////////////////////////////////////////// 
738 
procedure doStepHedgehogFree(Gear: PGear); 

511  739 
var prevState: Longword; 
4  740 
begin 
511  741 
prevState:= Gear^.State; 
4  742 

538  743 
doStepHedgehogMoving(Gear); 
4  744 

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

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

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

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

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

750 
end; 
4  751 

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

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

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

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

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

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

758 
Gear^.doStep:= @doStepHedgehogDead; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

761 
AllInactive:= false; 
2140  762 

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

763 
// Death message 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

764 
AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2940
diff
changeset

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

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

767 
end; 
4  768 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

783 
end; 
863  784 

785 
AllInactive:= false 

4  786 
end; 
787 

788 
//////////////////////////////////////////////////////////////////////////////// 

789 
procedure doStepHedgehog(Gear: PGear); 

790 
begin 

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

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

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

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

795 
end; 
1505  796 

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

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

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

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

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

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

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

805 
end; 