author | sheepluva |
Tue, 01 Feb 2011 19:49:10 +0100 | |
changeset 4901 | d1e2d82d9ccc |
parent 4881 | 35e6269227b6 |
child 4976 | 088d40d8aba2 |
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 ? |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
44 |
function ChangeAmmo(HHGear: PGear): boolean; |
3943
9835060e5c01
Add 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; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
49 |
slot:= HHGear^.MsgParam; |
783 | 50 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
51 |
with HHGear^.Hedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
52 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
53 |
HHGear^.Message:= HHGear^.Message and not gmSlot; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
54 |
ammoidx:= 0; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
55 |
if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or |
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
56 |
(TargetPoint.X <> NoPointX) or |
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset
|
57 |
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
58 |
((HHGear^.State and gstHHDriven) = 0) then exit; |
4135
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset
|
59 |
ChangeAmmo:= true; |
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset
|
60 |
|
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset
|
61 |
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); |
783 | 62 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
63 |
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^); |
3430 | 64 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
65 |
MultiShootAttacks:= 0; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
66 |
HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
67 |
|
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
68 |
if Ammoz[CurAmmoType].Slot = slot then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
69 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
70 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
71 |
repeat |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
72 |
inc(ammoidx); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
73 |
if (ammoidx > cMaxSlotAmmoIndex) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
74 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
75 |
inc(i); |
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset
|
76 |
CurAmmoType:= amNothing; |
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset
|
77 |
ammoidx:= -1; |
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset
|
78 |
//TryDo(i < 2, 'Engine bug: no ammo in current slot', true) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
79 |
end; |
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset
|
80 |
until ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) or (i = 1) |
3943
9835060e5c01
Add 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 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
97 |
procedure HHSetWeapon(HHGear: PGear); |
783 | 98 |
var t: LongInt; |
99 |
weap: TAmmoType; |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
100 |
Hedgehog: PHedgehog; |
4135
5be798ecafdc
This should make bee and other targetted things behave more reliably in infinite attack mode. Blocks switching of weps if a target point is active.
nemo
parents:
4020
diff
changeset
|
101 |
s: boolean; |
783 | 102 |
begin |
4827
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset
|
103 |
s:= false; |
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset
|
104 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
105 |
weap:= TAmmoType(HHGear^.MsgParam); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
106 |
Hedgehog:= HHGear^.Hedgehog; |
941
b5222ddafe1f
- Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
931
diff
changeset
|
107 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
108 |
if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet |
941
b5222ddafe1f
- Fix bug with picking up ammos from cases, when total ammo count may become more than AMMO_INFINITE
unc0rr
parents:
931
diff
changeset
|
109 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
110 |
HHGear^.MsgParam:= Ammoz[weap].Slot; |
783 | 111 |
|
112 |
t:= cMaxSlotAmmoIndex; |
|
113 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
114 |
HHGear^.Message:= HHGear^.Message and not gmWeapon; |
783 | 115 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
116 |
with Hedgehog^ do |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
117 |
while (CurAmmoType <> weap) and (t >= 0) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
118 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
119 |
s:= ChangeAmmo(HHGear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
120 |
dec(t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
121 |
end; |
1710
cecb3cc93251
Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents:
1689
diff
changeset
|
122 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
123 |
if s then ApplyAmmoChanges(HHGear^.Hedgehog^) |
783 | 124 |
end; |
125 |
||
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
126 |
procedure HHSetTimer(Gear: PGear); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
127 |
var CurWeapon: PAmmo; |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
128 |
begin |
3894 | 129 |
Gear^.Message:= Gear^.Message and not gmTimer; |
4365 | 130 |
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); |
131 |
with Gear^.Hedgehog^ do |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
132 |
if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
133 |
begin |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
134 |
CurWeapon^.Timer:= 1000 * Gear^.MsgParam; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
135 |
with CurrentTeam^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
136 |
ApplyAmmoChanges(Hedgehogs[CurrHedgehog]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
137 |
end; |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
138 |
end; |
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
139 |
|
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
140 |
|
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
141 |
procedure Attack(Gear: PGear); |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
142 |
var xx, yy, newDx, newDy, lx, ly: hwFloat; |
2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset
|
143 |
tmpGear: PVisualGear; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
144 |
CurWeapon: PAmmo; |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
145 |
altUse: boolean; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
146 |
begin |
2807 | 147 |
bShowFinger:= false; |
4365 | 148 |
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
149 |
with Gear^, |
4365 | 150 |
Gear^.Hedgehog^ do |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
151 |
begin |
95 | 152 |
if ((State and gstHHDriven) <> 0)and |
2223
e009fee03c96
allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents:
2221
diff
changeset
|
153 |
((State and (gstAttacked or gstHHChooseTarget)) = 0) and |
2376 | 154 |
(((State and gstMoving) = 0) or |
2223
e009fee03c96
allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents:
2221
diff
changeset
|
155 |
// Allow attacks while moving on ammo with AltAttack |
3302
0973c5af5141
Add reference to ammo at time of gear creation to allow switching to work on jetpack/parachute
nemo
parents:
3236
diff
changeset
|
156 |
((CurAmmoGear <> nil) and ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)) or |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
157 |
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AttackInMove) <> 0)) and |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
158 |
((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) = 0)) then |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
159 |
begin |
95 | 160 |
State:= State or gstAttacking; |
3894 | 161 |
if Power = cMaxPower then Message:= Message and not gmAttack |
162 |
else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack |
|
95 | 163 |
else begin |
164 |
if Power = 0 then |
|
165 |
begin |
|
351 | 166 |
AttackBar:= CurrentTeam^.AttackBar; |
2745 | 167 |
PlaySound(sndThrowPowerUp) |
95 | 168 |
end; |
169 |
inc(Power) |
|
170 |
end; |
|
3894 | 171 |
if ((Message and gmAttack) <> 0) then exit; |
351 | 172 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
173 |
if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0 then |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
174 |
begin |
282 | 175 |
StopSound(sndThrowPowerUp); |
2745 | 176 |
PlaySound(sndThrowRelease); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
177 |
end; |
1922 | 178 |
|
519 | 179 |
xx:= SignAs(AngleSin(Angle), dX); |
900 | 180 |
yy:= -AngleCos(Angle); |
181 |
||
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
182 |
lx:= X + int2hwfloat(round(GetLaunchX(CurAmmoType, hwSign(dX), Angle))); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
183 |
ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); |
3483 | 184 |
|
3469 | 185 |
if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then xx:= - xx; |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
186 |
if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
187 |
PlaySound(Ammoz[CurAmmoType].Ammo.AttackVoice, CurrentTeam^.voicepack); |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
188 |
|
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
189 |
// Initiating alt attack |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
190 |
if (CurAmmoGear <> nil) and |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
191 |
((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) and |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
192 |
((Gear^.Message and gmLJump) <> 0) and |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
193 |
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
194 |
begin |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
195 |
newDx:= dX / _2; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
196 |
newDy:= dY / _2; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
197 |
altUse:= true; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
198 |
end |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
199 |
else |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
200 |
begin |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
201 |
newDx:= xx*Power/cPowerDivisor; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
202 |
newDy:= yy*Power/cPowerDivisor; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
203 |
altUse:= false |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
204 |
end; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
205 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
206 |
case CurAmmoType of |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
207 |
amGrenade: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBomb, 0, newDx, newDy, CurWeapon^.Timer); |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
208 |
amMolotov: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov, 0, newDx, newDy, 0); |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
209 |
amClusterBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, newDx, newDy, CurWeapon^.Timer); |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
210 |
amGasBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, newDx, newDy, CurWeapon^.Timer); |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
211 |
amBazooka: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtShell, 0, newDx, newDy, 0); |
4578 | 212 |
amSnowball: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball, 0, newDx, newDy, 0); |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
213 |
amBee: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtBee, 0, newDx, newDy, 0); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
214 |
amShotgun: begin |
2745 | 215 |
PlaySound(sndShotgunReload); |
3483 | 216 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtShotgunShot, 0, xx * _0_5, yy * _0_5, 0); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
217 |
end; |
3483 | 218 |
amPickHammer: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0); |
866 | 219 |
amSkip: ParseCommand('/skip', true); |
3483 | 220 |
amRope: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRope, 0, xx, yy, 0); |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
221 |
amMine: if altUse then |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
222 |
AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000) |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
223 |
else |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
224 |
AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); |
3710 | 225 |
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
3483 | 226 |
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); |
227 |
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); |
|
4790 | 228 |
amPortalGun: begin |
229 |
AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, |
|
230 |
// set selected color |
|
231 |
CurWeapon^.Pos); |
|
232 |
end; |
|
2827 | 233 |
amSniperRifle: begin |
234 |
PlaySound(sndSniperReload); |
|
3483 | 235 |
CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); |
2827 | 236 |
end; |
3483 | 237 |
amDynamite: AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); |
238 |
amFirePunch: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0); |
|
1712 | 239 |
amWhip: begin |
3483 | 240 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0); |
2745 | 241 |
PlaySound(sndWhipCrack) |
1712 | 242 |
end; |
3717 | 243 |
amHammer: begin |
244 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0); |
|
245 |
PlaySound(sndWhack) |
|
246 |
end; |
|
2143
ad05f6b2d1c0
New baseball bat sound, steam when fire lands on water (needs new hiss sound), bubbles when hedgehog drowns, more messages on
nemo
parents:
2142
diff
changeset
|
247 |
amBaseballBat: begin |
3483 | 248 |
CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); |
2996 | 249 |
PlaySound(sndBaseballBat) // TODO: Only play if something is hit? |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
250 |
end; |
3851 | 251 |
amParachute: begin |
252 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0); |
|
253 |
PlaySound(sndParachute) |
|
254 |
end; |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
255 |
// we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear. |
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
256 |
amAirAttack: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0); |
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
257 |
amMineStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0); |
3483 | 258 |
amBlowTorch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
259 |
amGirder: CurAmmoGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0); |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
260 |
amTeleport: CurAmmoGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0); |
3483 | 261 |
amSwitch: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0); |
2262 | 262 |
amMortar: begin |
3483 | 263 |
playSound(sndMortar); |
264 |
FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); |
|
265 |
end; |
|
1712 | 266 |
amRCPlane: begin |
3483 | 267 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); |
2745 | 268 |
CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil) |
1712 | 269 |
end; |
3483 | 270 |
amKamikaze: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); |
271 |
amCake: CurAmmoGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); |
|
272 |
amSeduction: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius * 2), hwRound(ly + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_4, yy * _0_4, 0); |
|
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
273 |
amWatermelon: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, newDx, newDy, CurWeapon^.Timer); |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
274 |
amHellishBomb: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, newDx, newDy, 0); |
4140
1563b216f243
revert attempts to block switching weapon while targetting in infinite attack mode. just getting too messy.
nemo
parents:
4138
diff
changeset
|
275 |
amNapalm: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0); |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
276 |
amDrill: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0); |
3484 | 277 |
amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); |
3483 | 278 |
amJetpack: CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0); |
3123 | 279 |
amBirdy: begin |
280 |
PlaySound(sndWhistle); |
|
3483 | 281 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0); |
3123 | 282 |
end; |
2908 | 283 |
amLowGravity: begin |
284 |
PlaySound(sndLowGravity); |
|
4623 | 285 |
cGravity:= cMaxWindSpeed; |
286 |
cGravityf:= 0.00025 |
|
2908 | 287 |
end; |
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
288 |
amExtraDamage:begin |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
289 |
PlaySound(sndHellishImpact4); |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
290 |
cDamageModifier:= _1_5 |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
291 |
end; |
1849 | 292 |
amInvulnerable: Invulnerable:= true; |
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
293 |
amExtraTime: begin |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
294 |
PlaySound(sndSwitchHog); |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
295 |
TurnTimeLeft:= TurnTimeLeft + 30000 |
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
296 |
end; |
1854 | 297 |
amLaserSight: cLaserSighting:= true; |
3483 | 298 |
amVampiric: begin |
299 |
PlaySound(sndOw1, Team^.voicepack); |
|
300 |
cVampiric:= true; |
|
301 |
end; |
|
3351 | 302 |
amPiano: begin |
3399 | 303 |
// Tuck the hedgehog away until the piano attack is completed |
304 |
Unplaced:= true; |
|
305 |
X:= _0; |
|
306 |
Y:= _0; |
|
3351 | 307 |
FollowGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0); |
308 |
PauseMusic |
|
309 |
end; |
|
3484 | 310 |
amFlamethrower: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower, 0, xx * _0_5, yy * _0_5, 0); |
3991
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
311 |
amResurrector: begin |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
312 |
CurAmmoGear:= AddGear(hwRound(lx), hwRound(ly), |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
313 |
gtResurrector, 0, _0, _0, 0); |
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
314 |
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
|
315 |
end; |
4867
e604ee83e34f
let players set timer of drill strike. yes. drill strike :3 the timer starts to tick on first impact
sheepluva
parents:
4837
diff
changeset
|
316 |
amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer); |
4246
e5cb885492df
drillstrike! might require the drill patch to improve behavior
koda
parents:
4241
diff
changeset
|
317 |
//amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0); |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
318 |
amStructure: begin |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
319 |
FollowGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, 0, SignAs(_0_03, dX), _0, 0); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
320 |
FollowGear^.Hedgehog:= Gear^.Hedgehog; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
321 |
end; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
322 |
end; |
829 | 323 |
|
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
|
324 |
uStats.AmmoUsed(CurAmmoType); |
829 | 325 |
|
2017 | 326 |
if not (SpeechText = '') then |
327 |
begin |
|
2042
905c554d62e6
Move Speech to visual gears. This checkin CRASHES on deletion of visual gear outside the doStep
nemo
parents:
2041
diff
changeset
|
328 |
tmpGear:= AddVisualGear(0, 0, vgtSpeechBubble); |
2115 | 329 |
if tmpGear <> nil then |
330 |
begin |
|
331 |
tmpGear^.Text:= SpeechText; |
|
332 |
tmpGear^.Hedgehog:= Gear^.Hedgehog; |
|
333 |
tmpGear^.FrameTicks:= SpeechType; |
|
334 |
end; |
|
2017 | 335 |
SpeechText:= '' |
336 |
end; |
|
337 |
||
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
338 |
Power:= 0; |
930 | 339 |
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
|
340 |
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
|
341 |
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
|
342 |
CurAmmoGear^.AmmoType:= CurAmmoType; |
3894 | 343 |
Message:= Message or gmAttack; |
351 | 344 |
CurAmmoGear^.Message:= Message |
82 | 345 |
end else begin |
351 | 346 |
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
|
347 |
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a'); |
1849 | 348 |
AfterAttack; |
82 | 349 |
end |
3894 | 350 |
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
|
351 |
end |
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 |
|
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
354 |
procedure AfterAttack; |
2502 | 355 |
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
|
356 |
a: TAmmoType; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
357 |
begin |
602 | 358 |
with CurrentHedgehog^.Gear^, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
359 |
CurrentHedgehog^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
360 |
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
|
361 |
a:= CurAmmoType; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
362 |
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
|
363 |
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
|
364 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
365 |
Inc(MultiShootAttacks); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
366 |
|
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
|
367 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
368 |
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
|
369 |
s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
370 |
AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
371 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
372 |
|
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
|
373 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) or |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
374 |
((GameFlags and gfMultiWeapon) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
375 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
376 |
isInMultiShoot:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
377 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
378 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
379 |
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
|
380 |
OnUsedAmmo(CurrentHedgehog^); |
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset
|
381 |
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and ((GameFlags and gfInfAttack) = 0) then |
3970
0f6e3219c108
set CurAmmoType to a temp var so I don't have to worry about it switching inside the routine so that I can actually put OnUsedAmmo where it belongs.
nemo
parents:
3965
diff
changeset
|
382 |
TurnTimeLeft:= Ammoz[a].TimeAfterTurn; |
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset
|
383 |
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) then State:= State or gstAttacked; |
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset
|
384 |
if (Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then ApplyAmmoChanges(CurrentHedgehog^) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
385 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
386 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
387 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
388 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
389 |
OnUsedAmmo(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
390 |
ApplyAmmoChanges(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
391 |
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
|
392 |
AttackBar:= 0 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
393 |
end |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
394 |
end; |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
395 |
|
42 | 396 |
//////////////////////////////////////////////////////////////////////////////// |
863 | 397 |
procedure doStepHedgehogDead(Gear: PGear); |
868 | 398 |
const frametime = 200; |
399 |
timertime = frametime * 6; |
|
863 | 400 |
begin |
4365 | 401 |
if Gear^.Hedgehog^.Unplaced then exit; |
863 | 402 |
if Gear^.Timer > 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
403 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
404 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
405 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
406 |
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
|
407 |
end else |
863 | 408 |
if Gear^.Timer = 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
409 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
410 |
Gear^.State:= Gear^.State or gstNoDamage; |
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4827
diff
changeset
|
411 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
412 |
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
|
413 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
414 |
SetAllToActive |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
415 |
end else // Gear^.Timer = 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
416 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
417 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
418 |
Gear^.Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
419 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
420 |
InsertGearToList(Gear); |
4365 | 421 |
PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
422 |
Gear^.Pos:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
423 |
Gear^.Timer:= timertime |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
424 |
end |
863 | 425 |
end; |
426 |
||
427 |
//////////////////////////////////////////////////////////////////////////////// |
|
3310 | 428 |
procedure doStepHedgehogGone(Gear: PGear); |
429 |
const frametime = 65; |
|
430 |
timertime = frametime * 11; |
|
431 |
begin |
|
4365 | 432 |
if Gear^.Hedgehog^.Unplaced then exit; |
3310 | 433 |
if Gear^.Timer > 1 then |
434 |
begin |
|
435 |
AllInactive:= false; |
|
436 |
dec(Gear^.Timer); |
|
437 |
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) |
|
438 |
end else |
|
439 |
if Gear^.Timer = 1 then |
|
440 |
begin |
|
441 |
DeleteGear(Gear); |
|
442 |
SetAllToActive |
|
443 |
end else // Gear^.Timer = 0 |
|
444 |
begin |
|
445 |
AllInactive:= false; |
|
446 |
Gear^.Z:= cCurrHHZ; |
|
447 |
RemoveGearFromList(Gear); |
|
448 |
InsertGearToList(Gear); |
|
4365 | 449 |
PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); |
3310 | 450 |
PlaySound(sndWarp); |
451 |
Gear^.Pos:= 0; |
|
452 |
Gear^.Timer:= timertime |
|
453 |
end |
|
454 |
end; |
|
455 |
||
456 |
//////////////////////////////////////////////////////////////////////////////// |
|
42 | 457 |
procedure PickUp(HH, Gear: PGear); |
295 | 458 |
var s: shortstring; |
459 |
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
|
460 |
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
|
461 |
vga: PVisualGear; |
42 | 462 |
begin |
3894 | 463 |
Gear^.Message:= gmDestroy; |
2745 | 464 |
PlaySound(sndShotgunReload); |
351 | 465 |
case Gear^.Pos of |
1964 | 466 |
posCaseUtility, |
295 | 467 |
posCaseAmmo: begin |
4238
6f1631765ebd
Fix a long-standing bug with ammo due to gstMoving being set on gears generically, causing an incorrect ammo type to be set. This caused crashes and incorrect ammo types.
nemo
parents:
4233
diff
changeset
|
468 |
a:= Gear^.AmmoType; |
4372 | 469 |
AddAmmo(HH^.Hedgehog^, a); |
2853
953a6d71396f
Restore shared clan ammo (still needs flag), add ammo info message if the person who picked up the ammo was a member of your clan
nemo
parents:
2827
diff
changeset
|
470 |
// 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
|
471 |
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up |
4372 | 472 |
if (not (HH^.Hedgehog^.Team^.ExtDriven |
473 |
or (HH^.Hedgehog^.BotLevel > 0))) |
|
474 |
or (HH^.Hedgehog^.Team^.Clan^.ClanIndex = LocalClan) |
|
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
475 |
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
|
476 |
begin |
3196 | 477 |
s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; |
4372 | 478 |
AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); |
2972
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
479 |
|
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
480 |
// 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
|
481 |
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
|
482 |
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
|
483 |
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
|
484 |
end; |
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
485 |
|
295 | 486 |
end; |
42 | 487 |
posCaseHealth: begin |
351 | 488 |
inc(HH^.Health, Gear^.Health); |
4372 | 489 |
HH^.Hedgehog^.Effects[hePoisoned] := false; |
351 | 490 |
str(Gear^.Health, s); |
295 | 491 |
s:= '+' + s; |
4372 | 492 |
AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); |
493 |
RenderHealth(HH^.Hedgehog^); |
|
494 |
RecountTeamHealth(HH^.Hedgehog^.Team); |
|
2428 | 495 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
496 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
497 |
while i < Gear^.Health do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
498 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
499 |
AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
500 |
inc(i, 5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
501 |
end; |
42 | 502 |
end; |
435 | 503 |
end |
42 | 504 |
end; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
505 |
|
4 | 506 |
const StepTicks: LongWord = 0; |
507 |
||
302 | 508 |
procedure HedgehogStep(Gear: PGear); |
371 | 509 |
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
|
510 |
CurWeapon: PAmmo; |
302 | 511 |
begin |
4365 | 512 |
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); |
542 | 513 |
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then |
4 | 514 |
begin |
408 | 515 |
if isCursorVisible then |
4365 | 516 |
with Gear^.Hedgehog^ do |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
517 |
with CurWeapon^ do |
408 | 518 |
begin |
3894 | 519 |
if (Gear^.Message and gmLeft ) <> 0 then |
3407 | 520 |
Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount |
408 | 521 |
else |
3894 | 522 |
if (Gear^.Message and gmRight ) <> 0 then |
408 | 523 |
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount |
524 |
else exit; |
|
423 | 525 |
StepTicks:= 200; |
408 | 526 |
exit |
527 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
528 |
|
3894 | 529 |
if ((Gear^.Message and gmAnimate) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
530 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
531 |
Gear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
532 |
Gear^.State:= Gear^.State or gstAnimation; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
533 |
Gear^.Tag:= Gear^.MsgParam; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
534 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
535 |
Gear^.Pos:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
536 |
end; |
1033 | 537 |
|
3894 | 538 |
if ((Gear^.Message and gmLJump ) <> 0) then |
4 | 539 |
begin |
3894 | 540 |
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
|
541 |
DeleteCI(Gear); |
68 | 542 |
if not TestCollisionYwithGear(Gear, -1) then |
498 | 543 |
if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else |
544 |
if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1; |
|
351 | 545 |
if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) |
68 | 546 |
or TestCollisionYwithGear(Gear, -1)) then |
4 | 547 |
begin |
351 | 548 |
Gear^.dY:= -_0_15; |
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
549 |
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); |
542 | 550 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
4365 | 551 |
PlaySound(sndJump1, Gear^.Hedgehog^.Team^.voicepack); |
4 | 552 |
exit |
553 |
end; |
|
554 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
555 |
|
3894 | 556 |
if ((Gear^.Message and gmHJump ) <> 0) then |
4 | 557 |
begin |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
558 |
DeleteCI(Gear); |
3894 | 559 |
Gear^.Message:= Gear^.Message and not gmHJump; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
560 |
|
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
561 |
Gear^.dY:= -_0_2; |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
562 |
SetLittle(Gear^.dX); |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
563 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
4365 | 564 |
PlaySound(sndJump3, Gear^.Hedgehog^.Team^.voicepack); |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
565 |
exit |
4 | 566 |
end; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
567 |
|
351 | 568 |
PrevdX:= hwSign(Gear^.dX); |
3894 | 569 |
if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= -cLittle else |
570 |
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
|
571 |
|
3894 | 572 |
if (Gear^.Message and (gmLeft or gmRight)) <> 0 then |
2940 | 573 |
begin |
574 |
StepSoundTimer:= cHHStepTicks; |
|
575 |
end; |
|
576 |
||
74 | 577 |
StepTicks:= cHHStepTicks; |
610 | 578 |
if PrevdX <> hwSign(Gear^.dX) then |
579 |
begin |
|
580 |
FollowGear:= Gear; |
|
581 |
exit |
|
582 |
end; |
|
583 |
DeleteCI(Gear); // must be after exit!! (see previous line) |
|
838 | 584 |
|
4365 | 585 |
Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; |
351 | 586 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
4 | 587 |
begin |
498 | 588 |
if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX)) |
589 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
590 |
if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX)) |
|
591 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
592 |
if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX)) |
|
593 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
594 |
if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) |
|
595 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
596 |
if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) |
|
597 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
598 |
if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) |
|
599 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
|
4 | 600 |
end; |
1528 | 601 |
|
3894 | 602 |
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
|
603 |
Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); |
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
604 |
|
62 | 605 |
SetAllHHToActive; |
37 | 606 |
|
68 | 607 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 608 |
begin |
498 | 609 |
Gear^.Y:= Gear^.Y + _1; |
68 | 610 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 611 |
begin |
498 | 612 |
Gear^.Y:= Gear^.Y + _1; |
68 | 613 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 614 |
begin |
498 | 615 |
Gear^.Y:= Gear^.Y + _1; |
68 | 616 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 617 |
begin |
498 | 618 |
Gear^.Y:= Gear^.Y + _1; |
68 | 619 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 620 |
begin |
498 | 621 |
Gear^.Y:= Gear^.Y + _1; |
68 | 622 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 623 |
begin |
498 | 624 |
Gear^.Y:= Gear^.Y + _1; |
68 | 625 |
if not TestCollisionYwithGear(Gear, 1) then |
4 | 626 |
begin |
498 | 627 |
Gear^.Y:= Gear^.Y - _6; |
628 |
Gear^.dY:= _0; |
|
542 | 629 |
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
|
630 |
exit |
4 | 631 |
end; |
632 |
end |
|
633 |
end |
|
634 |
end |
|
635 |
end |
|
636 |
end |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
637 |
end; |
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
638 |
AddGearCI(Gear) |
4 | 639 |
end |
640 |
end; |
|
641 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
642 |
procedure HedgehogChAngle(HHGear: PGear); |
958 | 643 |
var da: LongWord; |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
644 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
645 |
with HHGear^.Hedgehog^ do |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
646 |
if (CurAmmoType = amRope) |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
647 |
and ((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1; |
958 | 648 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
649 |
if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
650 |
if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then dec(HHGear^.Angle, da) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
651 |
else |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
652 |
if ((HHGear^.Message and gmDown) <> 0) and (HHGear^.Angle + da <= CurMaxAngle) then inc(HHGear^.Angle, da) |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
653 |
end; |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
654 |
|
302 | 655 |
procedure doStepHedgehog(Gear: PGear); forward; |
656 |
//////////////////////////////////////////////////////////////////////////////// |
|
538 | 657 |
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
|
658 |
var isFalling, isUnderwater: boolean; |
538 | 659 |
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
|
660 |
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
|
661 |
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
|
662 |
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
|
663 |
|
4365 | 664 |
if Gear^.Hedgehog^.Unplaced then |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
665 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
666 |
Gear^.dY:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
667 |
Gear^.dX:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
668 |
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
|
669 |
exit |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
670 |
end; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
671 |
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); |
542 | 672 |
if isFalling then |
538 | 673 |
begin |
674 |
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0; |
|
542 | 675 |
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
|
676 |
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2 |
4301 | 677 |
else |
678 |
begin |
|
679 |
Gear^.dY:= Gear^.dY + cGravity; |
|
680 |
// this set of circumstances could be less complex if jumping was more clearly identified |
|
681 |
if ((GameFlags and gfMoreWind) <> 0) and |
|
4633 | 682 |
(((Gear^.Damage <> 0) or |
4301 | 683 |
((CurAmmoGear <> nil) and |
684 |
((CurAmmoGear^.AmmoType = amJetpack) or |
|
685 |
(CurAmmoGear^.AmmoType = amBirdy))) or |
|
4633 | 686 |
((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue))) |
4641 | 687 |
then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density |
4301 | 688 |
end |
3909
4ba25a3d15af
remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents:
3907
diff
changeset
|
689 |
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
|
690 |
else |
538 | 691 |
begin |
4301 | 692 |
if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) |
538 | 693 |
and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX); |
694 |
||
540 | 695 |
if not Gear^.dY.isNegative then |
696 |
begin |
|
697 |
CheckHHDamage(Gear); |
|
790
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset
|
698 |
|
2137 | 699 |
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
|
700 |
(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
|
701 |
|
542 | 702 |
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); |
540 | 703 |
Gear^.dY:= _0; |
704 |
end else Gear^.dY:= Gear^.dY + cGravity; |
|
538 | 705 |
|
706 |
if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction |
|
707 |
end; |
|
708 |
||
709 |
if (Gear^.State <> 0) then DeleteCI(Gear); |
|
783 | 710 |
|
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
|
711 |
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
|
712 |
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
|
713 |
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
|
714 |
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
|
715 |
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
|
716 |
|
538 | 717 |
if (Gear^.State and gstMoving) <> 0 then |
718 |
if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then |
|
542 | 719 |
if not isFalling then |
538 | 720 |
if hwAbs(Gear^.dX) > _0_01 then |
721 |
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 |
|
722 |
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 |
|
723 |
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 |
|
724 |
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 |
|
725 |
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 |
|
726 |
if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
727 |
else begin |
|
728 |
Gear^.State:= Gear^.State and not gstMoving; |
|
729 |
SetLittle(Gear^.dX) |
|
730 |
end |
|
731 |
else begin |
|
732 |
Gear^.State:= Gear^.State and not gstMoving; |
|
733 |
SetLittle(Gear^.dX) |
|
734 |
end |
|
1518 | 735 |
else if (hwAbs(Gear^.dX) > cLittle) |
736 |
and ((Gear^.State and gstHHJumping) = 0) |
|
737 |
then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
738 |
else SetLittle(Gear^.dX); |
|
538 | 739 |
|
542 | 740 |
if (not isFalling) and |
538 | 741 |
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then |
742 |
begin |
|
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset
|
743 |
Gear^.State:= Gear^.State and not gstWinner; |
538 | 744 |
Gear^.State:= Gear^.State and not gstMoving; |
745 |
SetLittle(Gear^.dX); |
|
746 |
Gear^.dY:= _0 |
|
747 |
end else Gear^.State:= Gear^.State or gstMoving; |
|
748 |
||
749 |
if (Gear^.State and gstMoving) <> 0 then |
|
750 |
begin |
|
751 |
Gear^.State:= Gear^.State and not gstAnimation; |
|
2017 | 752 |
// ARTILLERY but not being moved by explosions |
538 | 753 |
Gear^.X:= Gear^.X + Gear^.dX; |
754 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
755 |
if (not Gear^.dY.isNegative) and |
|
756 |
(not TestCollisionYKick(Gear, 1)) and |
|
757 |
TestCollisionYwithXYShift(Gear, 0, 1, 1) then |
|
758 |
begin |
|
759 |
CheckHHDamage(Gear); |
|
760 |
Gear^.dY:= _0; |
|
761 |
Gear^.Y:= Gear^.Y + _1 |
|
762 |
end; |
|
1658
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset
|
763 |
CheckGearDrowning(Gear); |
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset
|
764 |
if (Gear^.State and gstDrowning) <> 0 then isCursorVisible:= false |
2428 | 765 |
end; |
766 |
||
3003 | 767 |
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then |
2428 | 768 |
begin |
769 |
inc(Gear^.FlightTime, 1); |
|
3174 | 770 |
if Gear^.FlightTime = 3000 then |
2948
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 |
AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
773 |
PlaySound(sndHomerun) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
774 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
775 |
end |
2428 | 776 |
else |
777 |
begin |
|
778 |
Gear^.FlightTime:= 0; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
779 |
end; |
2428 | 780 |
|
538 | 781 |
end; |
782 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
783 |
procedure doStepHedgehogDriven(HHGear: PGear); |
302 | 784 |
var t: PGear; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
785 |
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
|
786 |
Hedgehog: PHedgehog; |
302 | 787 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
788 |
Hedgehog:= HHGear^.Hedgehog; |
558
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
789 |
if not isInMultiShoot then |
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
790 |
AllInactive:= false |
b2b840eeb10a
Fix bug when hedgehog moves not right after it is kicked
unc0rr
parents:
553
diff
changeset
|
791 |
else |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
792 |
HHGear^.Message:= 0; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
793 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
794 |
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
795 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
796 |
TurnTimeLeft:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
797 |
isCursorVisible:= false; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
798 |
HHGear^.State:= HHGear^.State and not (gstHHDriven or gstAnimation or gstAttacking); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
799 |
AttackBar:= 0; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
800 |
if HHGear^.Damage > 0 then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
801 |
HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
802 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
803 |
end; |
1035 | 804 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
805 |
if (HHGear^.State and gstAnimation) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
806 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
807 |
HHGear^.Message:= 0; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
808 |
if (HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].VoiceDelay) and (HHGear^.Timer = 0) then PlaySound(Wavez[TWave(HHGear^.Tag)].Voice, Hedgehog^.Team^.voicepack); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
809 |
inc(HHGear^.Timer); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
810 |
if HHGear^.Timer = Wavez[TWave(HHGear^.Tag)].Interval then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
811 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
812 |
HHGear^.Timer:= 0; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
813 |
inc(HHGear^.Pos); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
814 |
if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
815 |
HHGear^.State:= HHGear^.State and not gstAnimation |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
816 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
817 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
818 |
end; |
1033 | 819 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
820 |
if ((HHGear^.State and gstMoving) <> 0) |
836 | 821 |
or (StepTicks = cHHStepTicks) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
822 |
or (CurAmmoGear <> nil) then // we are moving |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
823 |
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
|
824 |
with Hedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
825 |
if (CurAmmoGear = nil) |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
826 |
and (HHGear^.dY > _0_39) |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
827 |
and (CurAmmoType = amParachute) then HHGear^.Message:= HHGear^.Message or gmAttack; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
828 |
// check for case with ammo |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
829 |
t:= CheckGearNear(HHGear, gtCase, 36, 36); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
830 |
if t <> nil then |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
831 |
PickUp(HHGear, t) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
832 |
end; |
302 | 833 |
|
930 | 834 |
if (CurAmmoGear = nil) then |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
835 |
if (((HHGear^.Message and gmAttack) <> 0) |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
836 |
or ((HHGear^.State and gstAttacking) <> 0)) then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
837 |
Attack(HHGear) // should be before others to avoid desync with '/put' msg and changing weapon msgs |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
838 |
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
|
839 |
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
|
840 |
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
|
841 |
if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
842 |
and ((HHGear^.Message and gmLJump) <> 0) |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
843 |
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
|
844 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
845 |
Attack(HHGear); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
846 |
HHGear^.Message:= HHGear^.Message and not gmLJump |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
847 |
end; |
930 | 848 |
|
849 |
if (CurAmmoGear = nil) |
|
3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset
|
850 |
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) |
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4238
diff
changeset
|
851 |
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
852 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
853 |
if ((HHGear^.Message and gmSlot) <> 0) then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
854 |
if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^); |
930 | 855 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
856 |
if ((HHGear^.Message and gmWeapon) <> 0) then HHSetWeapon(HHGear); |
930 | 857 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
858 |
if ((HHGear^.Message and gmTimer) <> 0) then HHSetTimer(HHGear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
859 |
end; |
930 | 860 |
|
302 | 861 |
if CurAmmoGear <> nil then |
862 |
begin |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
863 |
CurAmmoGear^.Message:= HHGear^.Message; |
302 | 864 |
exit |
865 |
end; |
|
866 |
||
952 | 867 |
if not isInMultiShoot then |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
868 |
HedgehogChAngle(HHGear); |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
869 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
870 |
if (HHGear^.State and gstMoving) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
871 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
872 |
wasJumping:= ((HHGear^.State and gstHHJumping) <> 0); |
2376 | 873 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
874 |
if ((HHGear^.Message and gmHJump) <> 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
875 |
wasJumping and |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
876 |
((HHGear^.State and gstHHHJump) = 0) then |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
877 |
if (not (hwAbs(HHGear^.dX) > cLittle)) and (HHGear^.dY < -_0_02) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
878 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
879 |
HHGear^.State:= HHGear^.State or gstHHHJump; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
880 |
HHGear^.dY:= -_0_25; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
881 |
if not cArtillery then HHGear^.dX:= -SignAs(_0_02, HHGear^.dX); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
882 |
PlaySound(sndJump2, Hedgehog^.Team^.voicepack) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
883 |
end; |
2376 | 884 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
885 |
HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump); |
538 | 886 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
887 |
if (not cArtillery) and wasJumping and |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
888 |
TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX); |
538 | 889 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
890 |
if Hedgehog^.Gear <> nil then doStepHedgehogMoving(HHGear); |
542 | 891 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
892 |
if ((HHGear^.State and (gstMoving or gstDrowning)) = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
893 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
894 |
AddGearCI(HHGear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
895 |
if wasJumping then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
896 |
StepTicks:= 410 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
897 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
898 |
StepTicks:= 95 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
899 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
900 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
901 |
end; |
302 | 902 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
903 |
if not isInMultiShoot and (Hedgehog^.Gear <> nil) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
904 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
905 |
if StepTicks > 0 then dec(StepTicks); |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
906 |
if (StepTicks = 0) then HedgehogStep(HHGear) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
907 |
end |
302 | 908 |
end; |
909 |
||
4 | 910 |
//////////////////////////////////////////////////////////////////////////////// |
911 |
procedure doStepHedgehogFree(Gear: PGear); |
|
511 | 912 |
var prevState: Longword; |
4 | 913 |
begin |
511 | 914 |
prevState:= Gear^.State; |
4 | 915 |
|
538 | 916 |
doStepHedgehogMoving(Gear); |
4 | 917 |
|
1002 | 918 |
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
|
919 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
920 |
if Gear^.Damage > 0 then CalcRotationDirAngle(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
921 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
922 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
923 |
end; |
4 | 924 |
|
863 | 925 |
if (Gear^.Health = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
926 |
begin |
4224
99c6d87df131
No point in leaving hogs at 0, since shotgun triggers death anyway. Also, add some audio cues to extra damage / time
nemo
parents:
4168
diff
changeset
|
927 |
if PrvInactive or ((GameFlags and gfInfAttack) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
928 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
929 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
930 |
FollowGear:= Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
931 |
PrvInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
932 |
AllInactive:= false; |
2140 | 933 |
|
4365 | 934 |
if not Gear^.Hedgehog^.Team^.hasGone then |
3310 | 935 |
begin |
4365 | 936 |
Gear^.Hedgehog^.Effects[hePoisoned] := false; |
937 |
if Gear^.Hedgehog^.Effects[heResurrectable] then begin |
|
3768 | 938 |
ResurrectHedgehog(Gear); |
939 |
end else begin |
|
940 |
Gear^.State:= Gear^.State or gstHHDeath; |
|
941 |
Gear^.doStep:= @doStepHedgehogDead; |
|
942 |
// Death message |
|
4365 | 943 |
AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); |
3768 | 944 |
end; |
3310 | 945 |
end |
946 |
else |
|
947 |
begin |
|
948 |
Gear^.State:= Gear^.State or gstHHGone; |
|
949 |
Gear^.doStep:= @doStepHedgehogGone; |
|
950 |
// Gone message |
|
4365 | 951 |
AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); |
3310 | 952 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
953 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
954 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
955 |
end; |
4 | 956 |
|
1033 | 957 |
if ((Gear^.State and gstWait) = 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
958 |
(prevState <> Gear^.State) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
959 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
960 |
Gear^.State:= gstWait; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
961 |
Gear^.Timer:= 150 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
962 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
963 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
964 |
if Gear^.Timer = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
965 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
966 |
Gear^.State:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
967 |
Gear^.Active:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
968 |
AddGearCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
969 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
970 |
end else dec(Gear^.Timer) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
971 |
end; |
863 | 972 |
|
973 |
AllInactive:= false |
|
4 | 974 |
end; |
975 |
||
976 |
//////////////////////////////////////////////////////////////////////////////// |
|
977 |
procedure doStepHedgehog(Gear: PGear); |
|
978 |
begin |
|
3894 | 979 |
if (Gear^.Message and gmDestroy) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
980 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
981 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
982 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
983 |
end; |
1505 | 984 |
|
2040 | 985 |
if (Gear^.State and gstHHDriven) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
986 |
doStepHedgehogFree(Gear) |
2040 | 987 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
988 |
begin |
4365 | 989 |
with Gear^.Hedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
990 |
if Team^.hasGone then TeamGoneEffect(Team^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
991 |
doStepHedgehogDriven(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
992 |
end; |
2585
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
993 |
end; |