author | unc0rr |
Sun, 07 Nov 2010 18:35:40 +0300 | |
changeset 4165 | dec8aafc6414 |
parent 4140 | 1563b216f243 |
child 4168 | 49ad7bea4a33 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
3236
4ab3917d7d44
Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents:
3196
diff
changeset
|
3 |
* Copyright (c) 2004-2010 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 02111-1307, 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 ? |
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
|
44 |
function ChangeAmmo(Gear: PGear): boolean; |
3943
9835060e5c01
Add per-hog 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 per-hog 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; |
783 | 49 |
slot:= Gear^.MsgParam; |
50 |
||
51 |
with PHedgehog(Gear^.Hedgehog)^ do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
52 |
begin |
3894 | 53 |
Gear^.Message:= Gear^.Message and not gmSlot; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
54 |
ammoidx:= 0; |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
55 |
if ((Gear^.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 |
4015
2897cf5730e7
This should only allow switching from portal gun and the like.
nemo
parents:
3991
diff
changeset
|
57 |
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) = 0)) or |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
58 |
((Gear^.State and gstHHDriven) = 0) then exit; |
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 |
|
3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset
|
63 |
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(PHedgehog(Gear^.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; |
3894 | 66 |
Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
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 per-hog 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 per-hog 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 per-hog 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 per-hog 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 |
||
97 |
procedure HHSetWeapon(Gear: PGear); |
|
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 |
103 |
weap:= TAmmoType(Gear^.MsgParam); |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
104 |
Hedgehog:= PHedgehog(Gear^.Hedgehog); |
941
b5222ddafe1f
- Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
931
diff
changeset
|
105 |
|
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
|
106 |
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
|
107 |
|
783 | 108 |
Gear^.MsgParam:= Ammoz[weap].Slot; |
109 |
||
110 |
t:= cMaxSlotAmmoIndex; |
|
111 |
||
3894 | 112 |
Gear^.Message:= Gear^.Message and not gmWeapon; |
783 | 113 |
|
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
|
114 |
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
|
115 |
while (CurAmmoType <> weap) and (t >= 0) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
116 |
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
|
117 |
s:= ChangeAmmo(Gear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
118 |
dec(t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
119 |
end; |
1710
cecb3cc93251
Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents:
1689
diff
changeset
|
120 |
|
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
|
121 |
if s then ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^) |
783 | 122 |
end; |
123 |
||
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
124 |
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
|
125 |
var CurWeapon: PAmmo; |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
126 |
begin |
3894 | 127 |
Gear^.Message:= Gear^.Message and not gmTimer; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
128 |
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
129 |
with PHedgehog(Gear^.Hedgehog)^ do |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
130 |
if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
131 |
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
|
132 |
CurWeapon^.Timer:= 1000 * Gear^.MsgParam; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
133 |
with CurrentTeam^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
134 |
ApplyAmmoChanges(Hedgehogs[CurrHedgehog]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
135 |
end; |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
136 |
end; |
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
137 |
|
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
138 |
|
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
139 |
procedure Attack(Gear: PGear); |
3483 | 140 |
var xx, yy, lx, ly: hwFloat; |
2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset
|
141 |
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
|
142 |
CurWeapon: PAmmo; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
143 |
begin |
2807 | 144 |
bShowFinger:= false; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
145 |
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
146 |
with Gear^, |
351 | 147 |
PHedgehog(Gear^.Hedgehog)^ do |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
148 |
begin |
95 | 149 |
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
|
150 |
((State and (gstAttacked or gstHHChooseTarget)) = 0) and |
2376 | 151 |
(((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
|
152 |
// 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
|
153 |
((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
|
154 |
((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
|
155 |
((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
|
156 |
begin |
95 | 157 |
State:= State or gstAttacking; |
3894 | 158 |
if Power = cMaxPower then Message:= Message and not gmAttack |
159 |
else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack |
|
95 | 160 |
else begin |
161 |
if Power = 0 then |
|
162 |
begin |
|
351 | 163 |
AttackBar:= CurrentTeam^.AttackBar; |
2745 | 164 |
PlaySound(sndThrowPowerUp) |
95 | 165 |
end; |
166 |
inc(Power) |
|
167 |
end; |
|
3894 | 168 |
if ((Message and gmAttack) <> 0) then exit; |
351 | 169 |
|
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
|
170 |
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
|
171 |
begin |
282 | 172 |
StopSound(sndThrowPowerUp); |
2745 | 173 |
PlaySound(sndThrowRelease); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
174 |
end; |
1922 | 175 |
|
519 | 176 |
xx:= SignAs(AngleSin(Angle), dX); |
900 | 177 |
yy:= -AngleCos(Angle); |
178 |
||
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
179 |
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
|
180 |
ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); |
3483 | 181 |
|
3469 | 182 |
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
|
183 |
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
|
184 |
PlaySound(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
185 |
case CurAmmoType of |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
186 |
amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtAmmo_Bomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); |
3483 | 187 |
amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
188 |
amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
189 |
amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); |
3483 | 190 |
amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtAmmo_Grenade, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
191 |
amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
192 |
amShotgun: begin |
2745 | 193 |
PlaySound(sndShotgunReload); |
3483 | 194 |
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
|
195 |
end; |
3483 | 196 |
amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0); |
866 | 197 |
amSkip: ParseCommand('/skip', true); |
3483 | 198 |
amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); |
199 |
amMine: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); |
|
3710 | 200 |
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
3483 | 201 |
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); |
202 |
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); |
|
203 |
amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0); |
|
2827 | 204 |
amSniperRifle: begin |
205 |
PlaySound(sndSniperReload); |
|
3483 | 206 |
CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); |
2827 | 207 |
end; |
3483 | 208 |
amDynamite: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); |
209 |
amFirePunch: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0); |
|
1712 | 210 |
amWhip: begin |
3483 | 211 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0); |
2745 | 212 |
PlaySound(sndWhipCrack) |
1712 | 213 |
end; |
3717 | 214 |
amHammer: begin |
215 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0); |
|
216 |
PlaySound(sndWhack) |
|
217 |
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
|
218 |
amBaseballBat: begin |
3483 | 219 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); |
2996 | 220 |
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
|
221 |
end; |
3851 | 222 |
amParachute: begin |
223 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0); |
|
224 |
PlaySound(sndParachute) |
|
225 |
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
|
226 |
// 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
|
227 |
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
|
228 |
amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0); |
3483 | 229 |
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
|
230 |
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
|
231 |
amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0); |
3483 | 232 |
amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0); |
2262 | 233 |
amMortar: begin |
3483 | 234 |
playSound(sndMortar); |
235 |
FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); |
|
236 |
end; |
|
1712 | 237 |
amRCPlane: begin |
3483 | 238 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); |
2745 | 239 |
CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil) |
1712 | 240 |
end; |
3483 | 241 |
amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); |
242 |
amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); |
|
243 |
amSeduction: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0); |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
244 |
amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, CurWeapon^.Timer); |
3483 | 245 |
amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
246 |
amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0); |
3483 | 247 |
amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
3484 | 248 |
amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); |
3483 | 249 |
amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0); |
3123 | 250 |
amBirdy: begin |
251 |
PlaySound(sndWhistle); |
|
3483 | 252 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0); |
3123 | 253 |
end; |
2908 | 254 |
amLowGravity: begin |
255 |
PlaySound(sndLowGravity); |
|
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3351
diff
changeset
|
256 |
cGravity:= cMaxWindSpeed |
2908 | 257 |
end; |
1849 | 258 |
amExtraDamage: cDamageModifier:= _1_5; |
259 |
amInvulnerable: Invulnerable:= true; |
|
260 |
amExtraTime: TurnTimeLeft:= TurnTimeLeft + 30000; |
|
1854 | 261 |
amLaserSight: cLaserSighting:= true; |
3483 | 262 |
amVampiric: begin |
263 |
PlaySound(sndOw1, Team^.voicepack); |
|
264 |
cVampiric:= true; |
|
265 |
end; |
|
3351 | 266 |
amPiano: begin |
3399 | 267 |
// Tuck the hedgehog away until the piano attack is completed |
268 |
Unplaced:= true; |
|
269 |
X:= _0; |
|
270 |
Y:= _0; |
|
3351 | 271 |
FollowGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0); |
272 |
PauseMusic |
|
273 |
end; |
|
3484 | 274 |
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@tobias-neumann.eu>
parents:
3970
diff
changeset
|
275 |
amResurrector: begin |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
276 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
277 |
gtResurrector, 0, _0, _0, 0); |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
278 |
CurAmmoGear^.SoundChannel := LoopSound(sndResurrector); |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
279 |
end; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
280 |
end; |
829 | 281 |
|
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
|
282 |
uStats.AmmoUsed(CurAmmoType); |
829 | 283 |
|
2017 | 284 |
if not (SpeechText = '') then |
285 |
begin |
|
2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset
|
286 |
tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble); |
2115 | 287 |
if tmpGear <> nil then |
288 |
begin |
|
289 |
tmpGear^.Text:= SpeechText; |
|
290 |
tmpGear^.Hedgehog:= Gear^.Hedgehog; |
|
291 |
tmpGear^.FrameTicks:= SpeechType; |
|
292 |
end; |
|
2017 | 293 |
SpeechText:= '' |
294 |
end; |
|
295 |
||
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
296 |
Power:= 0; |
930 | 297 |
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
|
298 |
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
|
299 |
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
|
300 |
CurAmmoGear^.AmmoType:= CurAmmoType; |
3894 | 301 |
Message:= Message or gmAttack; |
351 | 302 |
CurAmmoGear^.Message:= Message |
82 | 303 |
end else begin |
351 | 304 |
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
|
305 |
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a'); |
1849 | 306 |
AfterAttack; |
82 | 307 |
end |
3894 | 308 |
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
|
309 |
end |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
310 |
end; |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
311 |
|
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
312 |
procedure AfterAttack; |
2502 | 313 |
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
|
314 |
a: TAmmoType; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
315 |
begin |
602 | 316 |
with CurrentHedgehog^.Gear^, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
317 |
CurrentHedgehog^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
318 |
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
|
319 |
a:= CurAmmoType; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
320 |
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
|
321 |
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
|
322 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
323 |
Inc(MultiShootAttacks); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
324 |
|
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
|
325 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
326 |
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
|
327 |
s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
328 |
AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
329 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
330 |
|
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
|
331 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) or |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
332 |
((GameFlags and gfMultiWeapon) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
333 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
334 |
isInMultiShoot:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
335 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
336 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
337 |
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
|
338 |
OnUsedAmmo(CurrentHedgehog^); |
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
|
339 |
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEndHint) = 0) and ((GameFlags and gfInfAttack) = 0) then |
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
|
340 |
TurnTimeLeft:= Ammoz[a].TimeAfterTurn; |
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
|
341 |
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEndHint) = 0) then State:= State or gstAttacked; |
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
|
342 |
if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0 then ApplyAmmoChanges(CurrentHedgehog^) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
343 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
344 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
345 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
346 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
347 |
OnUsedAmmo(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
348 |
ApplyAmmoChanges(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
349 |
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
|
350 |
AttackBar:= 0 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
351 |
end |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
352 |
end; |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
353 |
|
42 | 354 |
//////////////////////////////////////////////////////////////////////////////// |
863 | 355 |
procedure doStepHedgehogDead(Gear: PGear); |
868 | 356 |
const frametime = 200; |
357 |
timertime = frametime * 6; |
|
863 | 358 |
begin |
2769
82bfcc006afb
Some handling of interaction between king mode and place hogs mode.
nemo
parents:
2762
diff
changeset
|
359 |
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; |
863 | 360 |
if Gear^.Timer > 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
361 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
362 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
363 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
364 |
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
|
365 |
end else |
863 | 366 |
if Gear^.Timer = 1 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 |
Gear^.State:= Gear^.State or gstNoDamage; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
369 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
370 |
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
|
371 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
372 |
SetAllToActive |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
373 |
end else // Gear^.Timer = 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
374 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
375 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
376 |
Gear^.Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
377 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
378 |
InsertGearToList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
379 |
PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
380 |
Gear^.Pos:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
381 |
Gear^.Timer:= timertime |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
382 |
end |
863 | 383 |
end; |
384 |
||
385 |
//////////////////////////////////////////////////////////////////////////////// |
|
3310 | 386 |
procedure doStepHedgehogGone(Gear: PGear); |
387 |
const frametime = 65; |
|
388 |
timertime = frametime * 11; |
|
389 |
begin |
|
390 |
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; |
|
391 |
if Gear^.Timer > 1 then |
|
392 |
begin |
|
393 |
AllInactive:= false; |
|
394 |
dec(Gear^.Timer); |
|
395 |
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) |
|
396 |
end else |
|
397 |
if Gear^.Timer = 1 then |
|
398 |
begin |
|
399 |
DeleteGear(Gear); |
|
400 |
SetAllToActive |
|
401 |
end else // Gear^.Timer = 0 |
|
402 |
begin |
|
403 |
AllInactive:= false; |
|
404 |
Gear^.Z:= cCurrHHZ; |
|
405 |
RemoveGearFromList(Gear); |
|
406 |
InsertGearToList(Gear); |
|
407 |
PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
|
408 |
PlaySound(sndWarp); |
|
409 |
Gear^.Pos:= 0; |
|
410 |
Gear^.Timer:= timertime |
|
411 |
end |
|
412 |
end; |
|
413 |
||
414 |
//////////////////////////////////////////////////////////////////////////////// |
|
42 | 415 |
procedure PickUp(HH, Gear: PGear); |
295 | 416 |
var s: shortstring; |
417 |
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
|
418 |
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
|
419 |
vga: PVisualGear; |
42 | 420 |
begin |
3894 | 421 |
Gear^.Message:= gmDestroy; |
2745 | 422 |
PlaySound(sndShotgunReload); |
351 | 423 |
case Gear^.Pos of |
1964 | 424 |
posCaseUtility, |
295 | 425 |
posCaseAmmo: begin |
351 | 426 |
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
|
427 |
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
|
428 |
// 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
|
429 |
// 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
|
430 |
if (not (PHedgehog(HH^.Hedgehog)^.Team^.ExtDriven |
1072 | 431 |
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
|
432 |
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
|
433 |
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
|
434 |
begin |
3196 | 435 |
s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; |
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
436 |
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
|
437 |
|
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
438 |
// 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
|
439 |
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
|
440 |
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
|
441 |
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
|
442 |
end; |
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
443 |
|
295 | 444 |
end; |
42 | 445 |
posCaseHealth: begin |
351 | 446 |
inc(HH^.Health, Gear^.Health); |
3112 | 447 |
PHedgehog(HH^.Hedgehog)^.Effects[hePoisoned] := false; |
351 | 448 |
str(Gear^.Health, s); |
295 | 449 |
s:= '+' + s; |
549 | 450 |
AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); |
351 | 451 |
RenderHealth(PHedgehog(HH^.Hedgehog)^); |
2428 | 452 |
RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team); |
453 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
454 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
455 |
while i < Gear^.Health do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
456 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
457 |
AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
458 |
inc(i, 5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
459 |
end; |
42 | 460 |
end; |
435 | 461 |
end |
42 | 462 |
end; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
463 |
|
4 | 464 |
const StepTicks: LongWord = 0; |
465 |
||
302 | 466 |
procedure HedgehogStep(Gear: PGear); |
371 | 467 |
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
|
468 |
CurWeapon: PAmmo; |
302 | 469 |
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
|
470 |
CurWeapon:= GetAmmoEntry(PHedgehog(Gear^.Hedgehog)^); |
542 | 471 |
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then |
4 | 472 |
begin |
408 | 473 |
if isCursorVisible then |
474 |
with PHedgehog(Gear^.Hedgehog)^ do |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
475 |
with CurWeapon^ do |
408 | 476 |
begin |
3894 | 477 |
if (Gear^.Message and gmLeft ) <> 0 then |
3407 | 478 |
Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount |
408 | 479 |
else |
3894 | 480 |
if (Gear^.Message and gmRight ) <> 0 then |
408 | 481 |
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount |
482 |
else exit; |
|
423 | 483 |
StepTicks:= 200; |
408 | 484 |
exit |
485 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
486 |
|
3894 | 487 |
if ((Gear^.Message and gmAnimate) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
488 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
489 |
Gear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
490 |
Gear^.State:= Gear^.State or gstAnimation; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
491 |
Gear^.Tag:= Gear^.MsgParam; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
492 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
493 |
Gear^.Pos:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
494 |
end; |
1033 | 495 |
|
3894 | 496 |
if ((Gear^.Message and gmLJump ) <> 0) then |
4 | 497 |
begin |
3894 | 498 |
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
|
499 |
DeleteCI(Gear); |
68 | 500 |
if not TestCollisionYwithGear(Gear, -1) then |
498 | 501 |
if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else |
502 |
if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1; |
|
351 | 503 |
if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) |
68 | 504 |
or TestCollisionYwithGear(Gear, -1)) then |
4 | 505 |
begin |
351 | 506 |
Gear^.dY:= -_0_15; |
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
507 |
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); |
542 | 508 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
2745 | 509 |
PlaySound(sndJump1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
4 | 510 |
exit |
511 |
end; |
|
512 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
513 |
|
3894 | 514 |
if ((Gear^.Message and gmHJump ) <> 0) then |
4 | 515 |
begin |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
516 |
DeleteCI(Gear); |
3894 | 517 |
Gear^.Message:= Gear^.Message and not gmHJump; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
518 |
|
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
519 |
Gear^.dY:= -_0_2; |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
520 |
SetLittle(Gear^.dX); |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
521 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
2745 | 522 |
PlaySound(sndJump3, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
523 |
exit |
4 | 524 |
end; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
525 |
|
351 | 526 |
PrevdX:= hwSign(Gear^.dX); |
3894 | 527 |
if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= -cLittle else |
528 |
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
|
529 |
|
3894 | 530 |
if (Gear^.Message and (gmLeft or gmRight)) <> 0 then |
2940 | 531 |
begin |
532 |
StepSoundTimer:= cHHStepTicks; |
|
533 |
end; |
|
534 |
||
74 | 535 |
StepTicks:= cHHStepTicks; |
610 | 536 |
if PrevdX <> hwSign(Gear^.dX) then |
537 |
begin |
|
538 |
FollowGear:= Gear; |
|
539 |
exit |
|
540 |
end; |
|
541 |
DeleteCI(Gear); // must be after exit!! (see previous line) |
|
838 | 542 |
|
351 | 543 |
PHedgehog(Gear^.Hedgehog)^.visStepPos:= (PHedgehog(Gear^.Hedgehog)^.visStepPos + 1) and 7; |
544 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
|
4 | 545 |
begin |
498 | 546 |
if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX)) |
547 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
548 |
if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX)) |
|
549 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
550 |
if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX)) |
|
551 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
552 |
if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) |
|
553 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
554 |
if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) |
|
555 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
556 |
if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) |
|
557 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
4 | 558 |
end; |
1528 | 559 |
|
3894 | 560 |
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
|
561 |
Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); |
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
562 |
|
62 | 563 |
SetAllHHToActive; |
37 | 564 |
|
68 | 565 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 566 |
begin |
498 | 567 |
Gear^.Y:= Gear^.Y + _1; |
68 | 568 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 569 |
begin |
498 | 570 |
Gear^.Y:= Gear^.Y + _1; |
68 | 571 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 572 |
begin |
498 | 573 |
Gear^.Y:= Gear^.Y + _1; |
68 | 574 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 575 |
begin |
498 | 576 |
Gear^.Y:= Gear^.Y + _1; |
68 | 577 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 578 |
begin |
498 | 579 |
Gear^.Y:= Gear^.Y + _1; |
68 | 580 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 581 |
begin |
498 | 582 |
Gear^.Y:= Gear^.Y + _1; |
68 | 583 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 584 |
begin |
498 | 585 |
Gear^.Y:= Gear^.Y - _6; |
586 |
Gear^.dY:= _0; |
|
542 | 587 |
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
|
588 |
exit |
4 | 589 |
end; |
590 |
end |
|
591 |
end |
|
592 |
end |
|
593 |
end |
|
594 |
end |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
595 |
end; |
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
596 |
AddGearCI(Gear) |
4 | 597 |
end |
598 |
end; |
|
599 |
||
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
600 |
procedure HedgehogChAngle(Gear: PGear); |
958 | 601 |
var da: LongWord; |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
602 |
begin |
958 | 603 |
with PHedgehog(Gear^.Hedgehog)^ do |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
604 |
if (CurAmmoType = amRope) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
605 |
and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1; |
958 | 606 |
|
3894 | 607 |
if (((Gear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then |
608 |
if ((Gear^.Message and gmUp) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
609 |
else |
3894 | 610 |
if ((Gear^.Message and gmDown) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da) |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
611 |
end; |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
612 |
|
302 | 613 |
procedure doStepHedgehog(Gear: PGear); forward; |
614 |
//////////////////////////////////////////////////////////////////////////////// |
|
538 | 615 |
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
|
616 |
var isFalling, isUnderwater: boolean; |
538 | 617 |
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
|
618 |
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
|
619 |
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
|
620 |
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
|
621 |
|
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
622 |
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
|
623 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
624 |
Gear^.dY:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
625 |
Gear^.dX:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
626 |
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
|
627 |
exit |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
628 |
end; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
629 |
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); |
542 | 630 |
if isFalling then |
538 | 631 |
begin |
632 |
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0; |
|
542 | 633 |
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
|
634 |
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2 |
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset
|
635 |
else Gear^.dY:= Gear^.dY + cGravity |
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset
|
636 |
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
|
637 |
else |
538 | 638 |
begin |
639 |
if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55) |
|
640 |
and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX); |
|
641 |
||
540 | 642 |
if not Gear^.dY.isNegative then |
643 |
begin |
|
644 |
CheckHHDamage(Gear); |
|
790
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset
|
645 |
|
2137 | 646 |
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
|
647 |
(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
|
648 |
|
542 | 649 |
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); |
540 | 650 |
Gear^.dY:= _0; |
651 |
end else Gear^.dY:= Gear^.dY + cGravity; |
|
538 | 652 |
|
653 |
if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction |
|
654 |
end; |
|
655 |
||
656 |
if (Gear^.State <> 0) then DeleteCI(Gear); |
|
783 | 657 |
|
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
|
658 |
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
|
659 |
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
|
660 |
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
|
661 |
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
|
662 |
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
|
663 |
|
538 | 664 |
if (Gear^.State and gstMoving) <> 0 then |
665 |
if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then |
|
542 | 666 |
if not isFalling then |
538 | 667 |
if hwAbs(Gear^.dX) > _0_01 then |
668 |
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 |
|
669 |
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 |
|
670 |
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 |
|
671 |
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 |
|
672 |
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 |
|
673 |
if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
674 |
else begin |
|
675 |
Gear^.State:= Gear^.State and not gstMoving; |
|
676 |
SetLittle(Gear^.dX) |
|
677 |
end |
|
678 |
else begin |
|
679 |
Gear^.State:= Gear^.State and not gstMoving; |
|
680 |
SetLittle(Gear^.dX) |
|
681 |
end |
|
1518 | 682 |
else if (hwAbs(Gear^.dX) > cLittle) |
683 |
and ((Gear^.State and gstHHJumping) = 0) |
|
684 |
then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
685 |
else SetLittle(Gear^.dX); |
|
538 | 686 |
|
542 | 687 |
if (not isFalling) and |
538 | 688 |
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then |
689 |
begin |
|
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset
|
690 |
Gear^.State:= Gear^.State and not gstWinner; |
538 | 691 |
Gear^.State:= Gear^.State and not gstMoving; |
692 |
SetLittle(Gear^.dX); |
|
693 |
Gear^.dY:= _0 |
|
694 |
end else Gear^.State:= Gear^.State or gstMoving; |
|
695 |
||
696 |
if (Gear^.State and gstMoving) <> 0 then |
|
697 |
begin |
|
698 |
Gear^.State:= Gear^.State and not gstAnimation; |
|
2017 | 699 |
// ARTILLERY but not being moved by explosions |
538 | 700 |
Gear^.X:= Gear^.X + Gear^.dX; |
701 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
702 |
if (not Gear^.dY.isNegative) and |
|
703 |
(not TestCollisionYKick(Gear, 1)) and |
|
704 |
TestCollisionYwithXYShift(Gear, 0, 1, 1) then |
|
705 |
begin |
|
706 |
CheckHHDamage(Gear); |
|
707 |
Gear^.dY:= _0; |
|
708 |
Gear^.Y:= Gear^.Y + _1 |
|
709 |
end; |
|
1658
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset
|
710 |
CheckGearDrowning(Gear); |
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset
|
711 |
if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false |
2428 | 712 |
end; |
713 |
||
3003 | 714 |
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then |
2428 | 715 |
begin |
716 |
inc(Gear^.FlightTime, 1); |
|
3174 | 717 |
if Gear^.FlightTime = 3000 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
718 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
719 |
AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
720 |
PlaySound(sndHomerun) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
721 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
722 |
end |
2428 | 723 |
else |
724 |
begin |
|
725 |
Gear^.FlightTime:= 0; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
726 |
end; |
2428 | 727 |
|
538 | 728 |
end; |
729 |
||
302 | 730 |
procedure doStepHedgehogDriven(Gear: PGear); |
731 |
var t: PGear; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
732 |
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
|
733 |
Hedgehog: PHedgehog; |
302 | 734 |
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
|
735 |
Hedgehog:= PHedgehog(Gear^.Hedgehog); |
558
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
736 |
if not isInMultiShoot then |
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
737 |
AllInactive:= false |
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
738 |
else |
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
739 |
Gear^.Message:= 0; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
740 |
|
1035 | 741 |
if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
742 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
743 |
TurnTimeLeft:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
744 |
isCursorVisible:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
745 |
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
|
746 |
AttackBar:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
747 |
if Gear^.Damage > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
748 |
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); |
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; |
1035 | 751 |
|
1033 | 752 |
if (Gear^.State and gstAnimation) <> 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 |
Gear^.Message:= 0; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
755 |
if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, Hedgehog^.Team^.voicepack); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
756 |
inc(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
757 |
if Gear^.Timer = Wavez[TWave(Gear^.Tag)].Interval then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
758 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
759 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
760 |
inc(Gear^.Pos); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
761 |
if Gear^.Pos = Wavez[TWave(Gear^.Tag)].FramesCount then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
762 |
Gear^.State:= Gear^.State and not gstAnimation |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
763 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
764 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
765 |
end; |
1033 | 766 |
|
836 | 767 |
if ((Gear^.State and gstMoving) <> 0) |
768 |
or (StepTicks = cHHStepTicks) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
769 |
or (CurAmmoGear <> nil) then // we are moving |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
770 |
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
|
771 |
with Hedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
772 |
if (CurAmmoGear = nil) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
773 |
and (Gear^.dY > _0_39) |
3894 | 774 |
and (CurAmmoType = amParachute) then Gear^.Message:= Gear^.Message or gmAttack; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
775 |
// check for case with ammo |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
776 |
t:= CheckGearNear(Gear, gtCase, 36, 36); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
777 |
if t <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
778 |
PickUp(Gear, t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
779 |
end; |
302 | 780 |
|
930 | 781 |
if (CurAmmoGear = nil) then |
3894 | 782 |
if (((Gear^.Message and gmAttack) <> 0) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
783 |
or ((Gear^.State and gstAttacking) <> 0)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
784 |
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
|
785 |
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
|
786 |
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
|
787 |
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
|
788 |
if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) |
3894 | 789 |
and ((Gear^.Message and gmLJump) <> 0) |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
790 |
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
|
791 |
begin |
3894 | 792 |
Gear^.Message:= Gear^.Message and not gmLJump; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
793 |
Attack(Gear) |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
794 |
end; |
930 | 795 |
|
796 |
if (CurAmmoGear = nil) |
|
3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset
|
797 |
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) |
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset
|
798 |
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
799 |
begin |
3894 | 800 |
if ((Gear^.Message and gmSlot) <> 0) then |
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
|
801 |
if ChangeAmmo(Gear) then ApplyAmmoChanges(Hedgehog^); |
930 | 802 |
|
3894 | 803 |
if ((Gear^.Message and gmWeapon) <> 0) then HHSetWeapon(Gear); |
930 | 804 |
|
3894 | 805 |
if ((Gear^.Message and gmTimer) <> 0) then HHSetTimer(Gear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
806 |
end; |
930 | 807 |
|
302 | 808 |
if CurAmmoGear <> nil then |
809 |
begin |
|
351 | 810 |
CurAmmoGear^.Message:= Gear^.Message; |
302 | 811 |
exit |
812 |
end; |
|
813 |
||
952 | 814 |
if not isInMultiShoot then |
815 |
HedgehogChAngle(Gear); |
|
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
816 |
|
542 | 817 |
if (Gear^.State and gstMoving) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
818 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
819 |
wasJumping:= ((Gear^.State and gstHHJumping) <> 0); |
2376 | 820 |
|
3894 | 821 |
if ((Gear^.Message and gmHJump) <> 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
822 |
wasJumping and |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
823 |
((Gear^.State and gstHHHJump) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
824 |
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
|
825 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
826 |
Gear^.State:= Gear^.State or gstHHHJump; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
827 |
Gear^.dY:= -_0_25; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
828 |
if not cArtillery then Gear^.dX:= -SignAs(_0_02, Gear^.dX); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
829 |
PlaySound(sndJump2, Hedgehog^.Team^.voicepack) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
830 |
end; |
2376 | 831 |
|
3894 | 832 |
Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump); |
538 | 833 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
834 |
if (not cArtillery) and wasJumping and |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
835 |
TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX); |
538 | 836 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
837 |
doStepHedgehogMoving(Gear); |
542 | 838 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
839 |
if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
840 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
841 |
AddGearCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
842 |
if wasJumping then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
843 |
StepTicks:= 410 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
844 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
845 |
StepTicks:= 95 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
846 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
847 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
848 |
end; |
302 | 849 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
850 |
if not isInMultiShoot then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
851 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
852 |
if StepTicks > 0 then dec(StepTicks); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
853 |
if (StepTicks = 0) then HedgehogStep(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
854 |
end |
302 | 855 |
end; |
856 |
||
4 | 857 |
//////////////////////////////////////////////////////////////////////////////// |
858 |
procedure doStepHedgehogFree(Gear: PGear); |
|
511 | 859 |
var prevState: Longword; |
4 | 860 |
begin |
511 | 861 |
prevState:= Gear^.State; |
4 | 862 |
|
538 | 863 |
doStepHedgehogMoving(Gear); |
4 | 864 |
|
1002 | 865 |
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
|
866 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
867 |
if Gear^.Damage > 0 then CalcRotationDirAngle(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
868 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
869 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
870 |
end; |
4 | 871 |
|
863 | 872 |
if (Gear^.Health = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
873 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
874 |
if PrvInactive then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
875 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
876 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
877 |
FollowGear:= Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
878 |
PrvInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
879 |
AllInactive:= false; |
2140 | 880 |
|
3310 | 881 |
if not PHedgehog(Gear^.Hedgehog)^.Team^.hasGone then |
882 |
begin |
|
4020 | 883 |
PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] := false; |
3768 | 884 |
if PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] then begin |
885 |
ResurrectHedgehog(Gear); |
|
886 |
end else begin |
|
887 |
Gear^.State:= Gear^.State or gstHHDeath; |
|
888 |
Gear^.doStep:= @doStepHedgehogDead; |
|
889 |
// Death message |
|
890 |
AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); |
|
891 |
end; |
|
3310 | 892 |
end |
893 |
else |
|
894 |
begin |
|
895 |
Gear^.State:= Gear^.State or gstHHGone; |
|
896 |
Gear^.doStep:= @doStepHedgehogGone; |
|
897 |
// Gone message |
|
898 |
AddCaption(Format(GetEventString(eidGone), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); |
|
899 |
end |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
900 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
901 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
902 |
end; |
4 | 903 |
|
1033 | 904 |
if ((Gear^.State and gstWait) = 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
905 |
(prevState <> Gear^.State) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
906 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
907 |
Gear^.State:= gstWait; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
908 |
Gear^.Timer:= 150 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
909 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
910 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
911 |
if Gear^.Timer = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
912 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
913 |
Gear^.State:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
914 |
Gear^.Active:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
915 |
AddGearCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
916 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
917 |
end else dec(Gear^.Timer) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
918 |
end; |
863 | 919 |
|
920 |
AllInactive:= false |
|
4 | 921 |
end; |
922 |
||
923 |
//////////////////////////////////////////////////////////////////////////////// |
|
924 |
procedure doStepHedgehog(Gear: PGear); |
|
925 |
begin |
|
3894 | 926 |
if (Gear^.Message and gmDestroy) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
927 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
928 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
929 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
930 |
end; |
1505 | 931 |
|
2040 | 932 |
if (Gear^.State and gstHHDriven) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
933 |
doStepHedgehogFree(Gear) |
2040 | 934 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
935 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
936 |
with PHedgehog(Gear^.Hedgehog)^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
937 |
if Team^.hasGone then TeamGoneEffect(Team^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
938 |
doStepHedgehogDriven(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
939 |
end; |
2585
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
940 |
end; |