author | nemo |
Sun, 13 Nov 2011 11:06:07 -0500 | |
changeset 6351 | 8c2479443073 |
parent 6335 | f753b290d966 |
child 6402 | 4670f003f91b |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2004-2011 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 |
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
|
56 |
((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
|
57 |
((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
|
58 |
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
|
59 |
|
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 |
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx); |
783 | 61 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
62 |
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^); |
3430 | 63 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
64 |
MultiShootAttacks:= 0; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
65 |
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
|
66 |
|
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 |
if Ammoz[CurAmmoType].Slot = slot then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
68 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
69 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
70 |
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
|
71 |
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
|
72 |
if (ammoidx > cMaxSlotAmmoIndex) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
73 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
74 |
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
|
75 |
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
|
76 |
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
|
77 |
//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
|
78 |
end; |
5439 | 79 |
until (i = 1) or ((Ammo^[slot, ammoidx].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, ammoidx].AmmoType].SkipTurns)) |
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
|
80 |
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
|
81 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
82 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
83 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
84 |
// check whether there is ammo in slot |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
85 |
while (i <= cMaxSlotAmmoIndex) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
86 |
and ((Ammo^[slot, i].Count = 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
87 |
or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i); |
2376 | 88 |
|
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3768
diff
changeset
|
89 |
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
|
90 |
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
|
91 |
end; |
5136
948da1e50205
Fix a few crosshair bugs. Disable ShowCrosshair and just decide when drawing.
nemo
parents:
5038
diff
changeset
|
92 |
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
|
93 |
end |
783 | 94 |
end; |
95 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
96 |
procedure HHSetWeapon(HHGear: PGear); |
783 | 97 |
var t: LongInt; |
98 |
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
|
99 |
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
|
100 |
s: boolean; |
783 | 101 |
begin |
4827
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset
|
102 |
s:= false; |
7895de87636b
Initialize flag. Fixes weapon changing animation between shots when AI uses shotgun.
unc0rr
parents:
4824
diff
changeset
|
103 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
104 |
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
|
105 |
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
|
106 |
|
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
|
107 |
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
|
108 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
109 |
HHGear^.MsgParam:= Ammoz[weap].Slot; |
783 | 110 |
|
111 |
t:= cMaxSlotAmmoIndex; |
|
112 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
113 |
HHGear^.Message:= HHGear^.Message and not gmWeapon; |
783 | 114 |
|
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
|
115 |
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
|
116 |
while (CurAmmoType <> weap) and (t >= 0) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
117 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
118 |
s:= ChangeAmmo(HHGear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
119 |
dec(t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
120 |
end; |
1710
cecb3cc93251
Fix angle restriction applying to rc plane when choosing via ammomenu
unc0rr
parents:
1689
diff
changeset
|
121 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
122 |
if s then ApplyAmmoChanges(HHGear^.Hedgehog^) |
783 | 123 |
end; |
124 |
||
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
125 |
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
|
126 |
var CurWeapon: PAmmo; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
127 |
color: LongWord; |
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 |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
132 |
if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
133 |
begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
134 |
color:= Gear^.Hedgehog^.Team^.Clan^.Color; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
135 |
case Gear^.MsgParam of |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
136 |
1: begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
137 |
AddCaption(format(trmsg[sidBounce], trmsg[sidBounce1]), color, capgrpAmmostate); |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
138 |
CurWeapon^.Bounciness:= 350; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
139 |
end; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
140 |
2: begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
141 |
AddCaption(format(trmsg[sidBounce], trmsg[sidBounce2]), color, capgrpAmmostate); |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
142 |
CurWeapon^.Bounciness:= 700; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
143 |
end; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
144 |
3: begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
145 |
AddCaption(format(trmsg[sidBounce], trmsg[sidBounce3]), color, capgrpAmmostate); |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
146 |
CurWeapon^.Bounciness:= 1000; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
147 |
end; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
148 |
4: begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
149 |
AddCaption(format(trmsg[sidBounce], trmsg[sidBounce4]), color, capgrpAmmostate); |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
150 |
CurWeapon^.Bounciness:= 2000; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
151 |
end; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
152 |
5: begin |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
153 |
AddCaption(format(trmsg[sidBounce], trmsg[sidBounce5]), color, capgrpAmmostate); |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
154 |
CurWeapon^.Bounciness:= 4000; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
155 |
end |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
156 |
end |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
157 |
end |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
158 |
else if (CurWeapon^.Propz and ammoprop_Timerable) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
159 |
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
|
160 |
CurWeapon^.Timer:= 1000 * Gear^.MsgParam; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
161 |
with CurrentTeam^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
162 |
ApplyAmmoChanges(Hedgehogs[CurrHedgehog]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
163 |
end; |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
164 |
end; |
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
165 |
|
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
166 |
|
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
167 |
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
|
168 |
var xx, yy, newDx, newDy, lx, ly: hwFloat; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
169 |
speech: PVisualGear; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
170 |
newGear: 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
|
171 |
CurWeapon: PAmmo; |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
172 |
altUse: boolean; |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
173 |
elastic: hwFloat; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
174 |
begin |
5322
1bcc12a30d5d
add missing nil check, increase despeckling of background too
nemo
parents:
5319
diff
changeset
|
175 |
newGear:= nil; |
2807 | 176 |
bShowFinger:= false; |
4365 | 177 |
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
178 |
with Gear^, |
4365 | 179 |
Gear^.Hedgehog^ do |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
180 |
begin |
95 | 181 |
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
|
182 |
((State and (gstAttacked or gstHHChooseTarget)) = 0) and |
2376 | 183 |
(((State and gstMoving) = 0) or |
6244
23801d8b83d5
don't let forced hog movement (with no damage) suspend/halt shot charging
sheepluva
parents:
6131
diff
changeset
|
184 |
(Power > 0) or |
5513
79dd457193e6
make a special case for teleport instead. also allows teleporting off of a parachute
nemo
parents:
5511
diff
changeset
|
185 |
(CurAmmoType = amTeleport) or |
2223
e009fee03c96
allow attacks while moving on ammo with alt attack (parachute/rope/jetpack) - needs testing.
nemo
parents:
2221
diff
changeset
|
186 |
// 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
|
187 |
((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
|
188 |
((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
|
189 |
((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
|
190 |
begin |
95 | 191 |
State:= State or gstAttacking; |
3894 | 192 |
if Power = cMaxPower then Message:= Message and not gmAttack |
193 |
else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack |
|
95 | 194 |
else begin |
195 |
if Power = 0 then |
|
196 |
begin |
|
351 | 197 |
AttackBar:= CurrentTeam^.AttackBar; |
2745 | 198 |
PlaySound(sndThrowPowerUp) |
95 | 199 |
end; |
200 |
inc(Power) |
|
201 |
end; |
|
3894 | 202 |
if ((Message and gmAttack) <> 0) then exit; |
351 | 203 |
|
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
|
204 |
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
|
205 |
begin |
282 | 206 |
StopSound(sndThrowPowerUp); |
2745 | 207 |
PlaySound(sndThrowRelease); |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
208 |
end; |
1922 | 209 |
|
519 | 210 |
xx:= SignAs(AngleSin(Angle), dX); |
900 | 211 |
yy:= -AngleCos(Angle); |
212 |
||
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
|
213 |
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
|
214 |
ly:= Y + int2hwfloat(round(GetLaunchY(CurAmmoType, Angle))); |
3483 | 215 |
|
3469 | 216 |
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
|
217 |
if Ammoz[CurAmmoType].Ammo.AttackVoice <> sndNone then |
5638
e35ba2a400d8
Try to avoid overlapping voices for major statements (not things like byebye or oof)
nemo
parents:
5612
diff
changeset
|
218 |
AddVoice(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
|
219 |
|
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
220 |
// Initiating alt attack |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
221 |
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
|
222 |
((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
|
223 |
((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
|
224 |
((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
|
225 |
begin |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
226 |
newDx:= dX / _2; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
227 |
newDy:= dY / _2; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
228 |
altUse:= true; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
229 |
end |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
230 |
else |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
231 |
begin |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
232 |
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
|
233 |
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
|
234 |
altUse:= false |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
235 |
end; |
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
236 |
|
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
|
237 |
case CurAmmoType of |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
238 |
amGrenade: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGrenade, 0, newDx, newDy, CurWeapon^.Timer); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
239 |
amMolotov: newGear:= AddGear(hwRound(lx), hwRound(ly), gtMolotov, 0, newDx, newDy, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
240 |
amClusterBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtClusterBomb, 0, newDx, newDy, CurWeapon^.Timer); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
241 |
amGasBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtGasBomb, 0, newDx, newDy, CurWeapon^.Timer); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
242 |
amBazooka: newGear:= AddGear(hwRound(lx), hwRound(ly), gtShell, 0, newDx, newDy, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
243 |
amSnowball: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSnowball, 0, newDx, newDy, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
244 |
amBee: newGear:= 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
|
245 |
amShotgun: begin |
2745 | 246 |
PlaySound(sndShotgunReload); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
247 |
newGear:= 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
|
248 |
end; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
249 |
amPickHammer: newGear:= AddGear(hwRound(lx), hwRound(ly) + cHHRadius, gtPickHammer, 0, _0, _0, 0); |
866 | 250 |
amSkip: ParseCommand('/skip', true); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
251 |
amRope: newGear:= 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
|
252 |
amMine: if altUse then |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
253 |
newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, newDx, newDy, 3000) |
4233
b4ad20bfe310
make weapons on rope/parachute/UFO inherit momentum of the hog. needs testing of course
nemo
parents:
4224
diff
changeset
|
254 |
else |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
255 |
newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtMine, gstWait, SignAs(_0_02, dX), _0, 3000); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
256 |
amSMine: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
257 |
amDEagle: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
258 |
amSineGun: newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0); |
4790 | 259 |
amPortalGun: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
260 |
newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, |
4790 | 261 |
// set selected color |
262 |
CurWeapon^.Pos); |
|
263 |
end; |
|
2827 | 264 |
amSniperRifle: begin |
265 |
PlaySound(sndSniperReload); |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
266 |
newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); |
2827 | 267 |
end; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
268 |
amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
269 |
amFirePunch: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0); |
1712 | 270 |
amWhip: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
271 |
newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0); |
2745 | 272 |
PlaySound(sndWhipCrack) |
1712 | 273 |
end; |
3717 | 274 |
amHammer: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
275 |
newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtHammer, 0, SignAs(_1, dX), - _0_8, 0); |
3717 | 276 |
PlaySound(sndWhack) |
277 |
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
|
278 |
amBaseballBat: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
279 |
newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0); |
2996 | 280 |
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
|
281 |
end; |
3851 | 282 |
amParachute: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
283 |
newGear:= AddGear(hwRound(lx), hwRound(ly), gtParachute, 0, _0, _0, 0); |
3851 | 284 |
PlaySound(sndParachute) |
285 |
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
|
286 |
// we save CurWeapon^.Pos (in this case: cursor direction) by using it as (otherwise irrelevant) X value of the new gear. |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
287 |
amAirAttack: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 0, _0, _0, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
288 |
amMineStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 1, _0, _0, 0); |
5372
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5343
diff
changeset
|
289 |
amDrillStrike: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer); |
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5343
diff
changeset
|
290 |
amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
291 |
amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
292 |
amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
293 |
amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
294 |
amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0); |
2262 | 295 |
amMortar: begin |
3483 | 296 |
playSound(sndMortar); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
297 |
newGear:= AddGear(hwRound(lx), hwRound(ly), gtMortar, 0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0); |
3483 | 298 |
end; |
1712 | 299 |
amRCPlane: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
300 |
newGear:= AddGear(hwRound(lx), hwRound(ly), gtRCPlane, 0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
301 |
newGear^.SoundChannel:= LoopSound(sndRCPlane, nil) |
1712 | 302 |
end; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
303 |
amKamikaze: newGear:= AddGear(hwRound(lx), hwRound(ly), gtKamikaze, 0, xx * _0_5, yy * _0_5, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
304 |
amCake: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 3, hwRound(ly), gtCake, 0, xx, _0, 0); |
5526 | 305 |
amSeduction: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSeduction, 0, _0, _0, 0); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
306 |
amWatermelon: newGear:= AddGear(hwRound(lx), hwRound(ly), gtWatermelon, 0, newDx, newDy, CurWeapon^.Timer); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
307 |
amHellishBomb: newGear:= AddGear(hwRound(lx), hwRound(ly), gtHellishBomb, 0, newDx, newDy, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
308 |
amDrill: newGear:= AddGear(hwRound(lx), hwRound(ly), gtDrill, 0, newDx, newDy, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
309 |
amBallgun: newGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
310 |
amJetpack: newGear:= AddGear(hwRound(lx), hwRound(ly), gtJetpack, 0, _0, _0, 0); |
3123 | 311 |
amBirdy: begin |
312 |
PlaySound(sndWhistle); |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
313 |
newGear:= AddGear(hwRound(lx), hwRound(ly) - 32, gtBirdy, 0, _0, _0, 0); |
3123 | 314 |
end; |
2908 | 315 |
amLowGravity: begin |
316 |
PlaySound(sndLowGravity); |
|
4623 | 317 |
cGravity:= cMaxWindSpeed; |
318 |
cGravityf:= 0.00025 |
|
2908 | 319 |
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
|
320 |
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
|
321 |
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
|
322 |
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
|
323 |
end; |
1849 | 324 |
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
|
325 |
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
|
326 |
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
|
327 |
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
|
328 |
end; |
1854 | 329 |
amLaserSight: cLaserSighting:= true; |
3483 | 330 |
amVampiric: begin |
331 |
PlaySound(sndOw1, Team^.voicepack); |
|
332 |
cVampiric:= true; |
|
333 |
end; |
|
3351 | 334 |
amPiano: begin |
3399 | 335 |
// Tuck the hedgehog away until the piano attack is completed |
336 |
Unplaced:= true; |
|
337 |
X:= _0; |
|
338 |
Y:= _0; |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
339 |
newGear:= AddGear(TargetPoint.X, 0, gtPiano, 0, _0, _0, 0); |
3351 | 340 |
PauseMusic |
341 |
end; |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
342 |
amFlamethrower: newGear:= AddGear(hwRound(X), hwRound(Y), gtFlamethrower, 0, xx * _0_5, yy * _0_5, 0); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
343 |
amLandGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtLandGun, 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
|
344 |
amResurrector: begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
345 |
newGear:= AddGear(hwRound(lx), hwRound(ly), |
3991
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
346 |
gtResurrector, 0, _0, _0, 0); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
347 |
newGear^.SoundChannel := LoopSound(sndResurrector); |
3991
82e4a5ef18f7
Resurrector Weapon: Add ammo icon, sound, hedgehog picture (from Tiy).
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3970
diff
changeset
|
348 |
end; |
4246
e5cb885492df
drillstrike! might require the drill patch to improve behavior
koda
parents:
4241
diff
changeset
|
349 |
//amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0); |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
350 |
amStructure: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
351 |
amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
352 |
end; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
353 |
case CurAmmoType of |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
354 |
amGrenade, amMolotov, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
355 |
amClusterBomb, amGasBomb, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
356 |
amBazooka, amSnowball, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
357 |
amBee, amSMine, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
358 |
amMortar, amWatermelon, |
6304
3036c242b19d
Set CurrentAmmoGear on piano (should fix notes again). Also disable focus on current hog if unplaced.
nemo
parents:
6295
diff
changeset
|
359 |
amHellishBomb, amDrill: FollowGear:= newGear; |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
360 |
|
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
361 |
amShotgun, amPickHammer, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
362 |
amRope, amDEagle, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
363 |
amSineGun, amSniperRifle, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
364 |
amFirePunch, amWhip, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
365 |
amHammer, amBaseballBat, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
366 |
amParachute, amBlowTorch, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
367 |
amGirder, amTeleport, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
368 |
amSwitch, amRCPlane, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
369 |
amKamikaze, amCake, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
370 |
amSeduction, amBallgun, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
371 |
amJetpack, amBirdy, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
372 |
amFlamethrower, amLandGun, |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
373 |
amResurrector, amStructure, |
6304
3036c242b19d
Set CurrentAmmoGear on piano (should fix notes again). Also disable focus on current hog if unplaced.
nemo
parents:
6295
diff
changeset
|
374 |
amTardis, amPiano: CurAmmoGear:= newGear; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
375 |
end; |
6122 | 376 |
if (CurAmmoType = amMine) or (CurAmmoType = amSMine) and (GameFlags and gfInfAttack <> 0) then newGear^.FlightTime:= GameTicks + 1000; |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5439
diff
changeset
|
377 |
if Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0 then |
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5439
diff
changeset
|
378 |
begin |
5612
2638dec1b323
This really should have been a TPoint for consistency
nemo
parents:
5584
diff
changeset
|
379 |
newGear^.Target.X:= TargetPoint.X; |
2638dec1b323
This really should have been a TPoint for consistency
nemo
parents:
5584
diff
changeset
|
380 |
newGear^.Target.Y:= TargetPoint.Y |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5439
diff
changeset
|
381 |
end; |
829 | 382 |
|
4994 | 383 |
// Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement |
384 |
if altUse then FollowGear:= nil; |
|
385 |
||
5322
1bcc12a30d5d
add missing nil check, increase despeckling of background too
nemo
parents:
5319
diff
changeset
|
386 |
if (newGear <> nil) and ((Ammoz[newGear^.AmmoType].Ammo.Propz and ammoprop_SetBounce) <> 0) then |
5319
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
387 |
begin |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
388 |
elastic:= int2hwfloat(CurWeapon^.Bounciness) / _1000; |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
389 |
|
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
390 |
if elastic < _1 then newGear^.Elasticity:= newGear^.Elasticity * elastic |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
391 |
else if elastic > _1 then newGear^.Elasticity:= _1 - ((_1-newGear^.Elasticity) / elastic); |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
392 |
(* Experimented with friction modifier. Didn't seem helpful |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
393 |
fric:= int2hwfloat(CurWeapon^.Bounciness) / _250; |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
394 |
if fric < _1 then newGear^.Friction:= newGear^.Friction * fric |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
395 |
else if fric > _1 then newGear^.Friction:= _1 - ((_1-newGear^.Friction) / fric)*) |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
396 |
end; |
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
397 |
|
51d8e4747876
bounce. tweak of values, remove friction modifier, move to weapon, to match timer behaviour
nemo
parents:
5316
diff
changeset
|
398 |
|
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
|
399 |
uStats.AmmoUsed(CurAmmoType); |
829 | 400 |
|
2017 | 401 |
if not (SpeechText = '') then |
402 |
begin |
|
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
403 |
speech:= AddVisualGear(0, 0, vgtSpeechBubble); |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
404 |
if speech <> nil then |
2115 | 405 |
begin |
5316
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
406 |
speech^.Text:= SpeechText; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
407 |
speech^.Hedgehog:= Gear^.Hedgehog; |
191cd6c06203
Allow control of grenade bounce. Not sure if this is a good idea, but has been requested a lot, so...
nemo
parents:
5313
diff
changeset
|
408 |
speech^.FrameTicks:= SpeechType; |
2115 | 409 |
end; |
2017 | 410 |
SpeechText:= '' |
411 |
end; |
|
412 |
||
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
413 |
Power:= 0; |
930 | 414 |
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
|
415 |
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
|
416 |
begin |
3894 | 417 |
Message:= Message or gmAttack; |
351 | 418 |
CurAmmoGear^.Message:= Message |
82 | 419 |
end else begin |
351 | 420 |
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
|
421 |
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a'); |
1849 | 422 |
AfterAttack; |
82 | 423 |
end |
3894 | 424 |
end else Message:= Message and not gmAttack; |
5511
13a222b00a9d
prevent attempting to teleport in mid-air during inf attack
nemo
parents:
5507
diff
changeset
|
425 |
end; |
5720 | 426 |
TargetPoint.X := NoPointX; |
427 |
ScriptCall('onHogAttack'); |
|
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
428 |
end; |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
429 |
|
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
430 |
procedure AfterAttack; |
2502 | 431 |
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
|
432 |
a: TAmmoType; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
433 |
begin |
602 | 434 |
with CurrentHedgehog^.Gear^, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
435 |
CurrentHedgehog^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
436 |
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
|
437 |
a:= CurAmmoType; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
438 |
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
|
439 |
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
|
440 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
441 |
Inc(MultiShootAttacks); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
442 |
|
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
|
443 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
444 |
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
|
445 |
s:= inttostr(Ammoz[a].Ammo.NumPerTurn - MultiShootAttacks + 1); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
446 |
AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
447 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
448 |
|
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
|
449 |
if (Ammoz[a].Ammo.NumPerTurn >= MultiShootAttacks) or |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
450 |
((GameFlags and gfMultiWeapon) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
451 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
452 |
isInMultiShoot:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
453 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
454 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
455 |
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
|
456 |
OnUsedAmmo(CurrentHedgehog^); |
5287
ffc1475a4afd
fixed gfInfAttack preventing ending of turn while placing hedgehogs
Henek
parents:
5279
diff
changeset
|
457 |
if ((Ammoz[a].Ammo.Propz and ammoprop_NoRoundEnd) = 0) and (((GameFlags and gfInfAttack) = 0) or PlacingHogs) then |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
5013
diff
changeset
|
458 |
begin |
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
5013
diff
changeset
|
459 |
if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft; |
5035 | 460 |
TurnTimeLeft:=(Ammoz[a].TimeAfterTurn * cGetAwayTime) div 100; |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
5013
diff
changeset
|
461 |
end; |
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
|
462 |
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
|
463 |
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
|
464 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
465 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
466 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
467 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
468 |
OnUsedAmmo(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
469 |
ApplyAmmoChanges(CurrentHedgehog^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
470 |
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
|
471 |
AttackBar:= 0 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
472 |
end |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
473 |
end; |
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
474 |
|
42 | 475 |
//////////////////////////////////////////////////////////////////////////////// |
863 | 476 |
procedure doStepHedgehogDead(Gear: PGear); |
868 | 477 |
const frametime = 200; |
478 |
timertime = frametime * 6; |
|
863 | 479 |
begin |
4365 | 480 |
if Gear^.Hedgehog^.Unplaced then exit; |
863 | 481 |
if Gear^.Timer > 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
482 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
483 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
484 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
485 |
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) |
5972
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
486 |
end |
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
487 |
else if Gear^.Timer = 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
488 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
489 |
Gear^.State:= Gear^.State or gstNoDamage; |
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4827
diff
changeset
|
490 |
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
|
491 |
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
|
492 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
493 |
SetAllToActive |
5972
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
494 |
end |
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
495 |
else // Gear^.Timer = 0 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
496 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
497 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
498 |
Gear^.Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
499 |
RemoveGearFromList(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
500 |
InsertGearToList(Gear); |
4365 | 501 |
PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
502 |
Gear^.Pos:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
503 |
Gear^.Timer:= timertime |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
504 |
end |
863 | 505 |
end; |
506 |
||
507 |
//////////////////////////////////////////////////////////////////////////////// |
|
3310 | 508 |
procedure doStepHedgehogGone(Gear: PGear); |
509 |
const frametime = 65; |
|
510 |
timertime = frametime * 11; |
|
511 |
begin |
|
4365 | 512 |
if Gear^.Hedgehog^.Unplaced then exit; |
3310 | 513 |
if Gear^.Timer > 1 then |
514 |
begin |
|
515 |
AllInactive:= false; |
|
516 |
dec(Gear^.Timer); |
|
517 |
if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) |
|
518 |
end else |
|
519 |
if Gear^.Timer = 1 then |
|
520 |
begin |
|
521 |
DeleteGear(Gear); |
|
522 |
SetAllToActive |
|
523 |
end else // Gear^.Timer = 0 |
|
524 |
begin |
|
525 |
AllInactive:= false; |
|
526 |
Gear^.Z:= cCurrHHZ; |
|
527 |
RemoveGearFromList(Gear); |
|
528 |
InsertGearToList(Gear); |
|
4365 | 529 |
PlaySound(sndByeBye, Gear^.Hedgehog^.Team^.voicepack); |
3310 | 530 |
PlaySound(sndWarp); |
531 |
Gear^.Pos:= 0; |
|
532 |
Gear^.Timer:= timertime |
|
533 |
end |
|
534 |
end; |
|
535 |
||
536 |
//////////////////////////////////////////////////////////////////////////////// |
|
42 | 537 |
procedure PickUp(HH, Gear: PGear); |
295 | 538 |
var s: shortstring; |
539 |
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
|
540 |
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
|
541 |
vga: PVisualGear; |
42 | 542 |
begin |
3894 | 543 |
Gear^.Message:= gmDestroy; |
2745 | 544 |
PlaySound(sndShotgunReload); |
5343 | 545 |
if (Gear^.Pos and posCaseExplode) <> 0 then |
546 |
if (Gear^.Pos and posCasePoison) <> 0 then |
|
547 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned) |
|
548 |
else |
|
549 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound) |
|
550 |
else if (Gear^.Pos and posCasePoison) <> 0 then |
|
551 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned + EXPLNoDamage) |
|
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5287
diff
changeset
|
552 |
else |
351 | 553 |
case Gear^.Pos of |
1964 | 554 |
posCaseUtility, |
295 | 555 |
posCaseAmmo: begin |
5584
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
556 |
if Gear^.AmmoType <> amNothing then a:= Gear^.AmmoType |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
557 |
else |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
558 |
begin |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
559 |
for i:= 0 to GameTicks and $7F do GetRandom(2); // Burn some random numbers |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
560 |
if Gear^.Pos = posCaseUtility then a:= GetUtility |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
561 |
else a:= GetAmmo |
e0b9722bd653
Make it a lot harder to cheat with typical random crates. This also means that crates will vary even if map has the same seed (hog positions of course will be unchanged).
nemo
parents:
5564
diff
changeset
|
562 |
end; |
4372 | 563 |
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
|
564 |
// 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
|
565 |
// On the other hand, no obvious reason that clan members shouldn't know what ammo another clan member picked up |
4372 | 566 |
if (not (HH^.Hedgehog^.Team^.ExtDriven |
567 |
or (HH^.Hedgehog^.BotLevel > 0))) |
|
568 |
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
|
569 |
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
|
570 |
begin |
3196 | 571 |
s:= trammo[Ammoz[a].NameId] + ' (+' + IntToStr(Ammoz[a].NumberInCase) + ')'; |
4372 | 572 |
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
|
573 |
|
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
574 |
// 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
|
575 |
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
|
576 |
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
|
577 |
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
|
578 |
end; |
82828fd23dea
Patch by soreau (polished by me): show floating away ammo icon when you pick up a crate
unc0rr
parents:
2948
diff
changeset
|
579 |
|
295 | 580 |
end; |
42 | 581 |
posCaseHealth: begin |
351 | 582 |
inc(HH^.Health, Gear^.Health); |
4372 | 583 |
HH^.Hedgehog^.Effects[hePoisoned] := false; |
351 | 584 |
str(Gear^.Health, s); |
295 | 585 |
s:= '+' + s; |
4372 | 586 |
AddCaption(s, HH^.Hedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); |
587 |
RenderHealth(HH^.Hedgehog^); |
|
588 |
RecountTeamHealth(HH^.Hedgehog^.Team); |
|
2428 | 589 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
590 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
591 |
while i < Gear^.Health do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
592 |
begin |
5563 | 593 |
vga:= AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtStraightShot); |
594 |
if vga <> nil then |
|
595 |
with vga^ do |
|
596 |
begin |
|
597 |
Tint:= $00FF00FF; |
|
5564
4f42009237df
For mikade's sake, use old dx/dy/frametick as default, so health crosses move the same
nemo
parents:
5563
diff
changeset
|
598 |
State:= ord(sprHealth) |
5563 | 599 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
600 |
inc(i, 5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
601 |
end; |
42 | 602 |
end; |
435 | 603 |
end |
42 | 604 |
end; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
16
diff
changeset
|
605 |
|
4 | 606 |
const StepTicks: LongWord = 0; |
607 |
||
302 | 608 |
procedure HedgehogStep(Gear: PGear); |
371 | 609 |
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
|
610 |
CurWeapon: PAmmo; |
302 | 611 |
begin |
4365 | 612 |
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^); |
542 | 613 |
if ((Gear^.State and (gstAttacking or gstMoving)) = 0) then |
4 | 614 |
begin |
408 | 615 |
if isCursorVisible then |
4365 | 616 |
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
|
617 |
with CurWeapon^ do |
408 | 618 |
begin |
3894 | 619 |
if (Gear^.Message and gmLeft ) <> 0 then |
3407 | 620 |
Pos:= (Pos - 1 + Ammoz[AmmoType].PosCount) mod Ammoz[AmmoType].PosCount |
408 | 621 |
else |
3894 | 622 |
if (Gear^.Message and gmRight ) <> 0 then |
408 | 623 |
Pos:= (Pos + 1) mod Ammoz[AmmoType].PosCount |
624 |
else exit; |
|
423 | 625 |
StepTicks:= 200; |
408 | 626 |
exit |
627 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
628 |
|
3894 | 629 |
if ((Gear^.Message and gmAnimate) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
630 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
631 |
Gear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
632 |
Gear^.State:= Gear^.State or gstAnimation; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
633 |
Gear^.Tag:= Gear^.MsgParam; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
634 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
635 |
Gear^.Pos:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
636 |
end; |
1033 | 637 |
|
3894 | 638 |
if ((Gear^.Message and gmLJump ) <> 0) then |
4 | 639 |
begin |
3894 | 640 |
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
|
641 |
DeleteCI(Gear); |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
642 |
if TestCollisionYwithGear(Gear, -1) = 0 then |
498 | 643 |
if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else |
644 |
if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _1; |
|
351 | 645 |
if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
646 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then |
4 | 647 |
begin |
351 | 648 |
Gear^.dY:= -_0_15; |
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
649 |
if not cArtillery then Gear^.dX:= SignAs(_0_15, Gear^.dX); |
542 | 650 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
4365 | 651 |
PlaySound(sndJump1, Gear^.Hedgehog^.Team^.voicepack); |
4 | 652 |
exit |
653 |
end; |
|
654 |
end; |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
655 |
|
3894 | 656 |
if ((Gear^.Message and gmHJump ) <> 0) then |
4 | 657 |
begin |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
658 |
DeleteCI(Gear); |
3894 | 659 |
Gear^.Message:= Gear^.Message and not gmHJump; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
660 |
|
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
661 |
Gear^.dY:= -_0_2; |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
662 |
SetLittle(Gear^.dX); |
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
663 |
Gear^.State:= Gear^.State or gstMoving or gstHHJumping; |
4365 | 664 |
PlaySound(sndJump3, Gear^.Hedgehog^.Team^.voicepack); |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
665 |
exit |
4 | 666 |
end; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
667 |
|
351 | 668 |
PrevdX:= hwSign(Gear^.dX); |
3894 | 669 |
if (Gear^.Message and gmLeft )<>0 then Gear^.dX:= -cLittle else |
670 |
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
|
671 |
|
3894 | 672 |
if (Gear^.Message and (gmLeft or gmRight)) <> 0 then |
2940 | 673 |
begin |
674 |
StepSoundTimer:= cHHStepTicks; |
|
675 |
end; |
|
676 |
||
74 | 677 |
StepTicks:= cHHStepTicks; |
610 | 678 |
if PrevdX <> hwSign(Gear^.dX) then |
679 |
begin |
|
680 |
FollowGear:= Gear; |
|
681 |
exit |
|
682 |
end; |
|
683 |
DeleteCI(Gear); // must be after exit!! (see previous line) |
|
838 | 684 |
|
4365 | 685 |
Gear^.Hedgehog^.visStepPos:= (Gear^.Hedgehog^.visStepPos + 1) and 7; |
351 | 686 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
4 | 687 |
begin |
498 | 688 |
if not (TestCollisionXwithXYShift(Gear, _0, -6, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
689 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
498 | 690 |
if not (TestCollisionXwithXYShift(Gear, _0, -5, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
691 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
498 | 692 |
if not (TestCollisionXwithXYShift(Gear, _0, -4, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
693 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
498 | 694 |
if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
695 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
498 | 696 |
if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
697 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
498 | 698 |
if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
699 |
or (TestCollisionYwithGear(Gear, -1) <> 0)) then Gear^.Y:= Gear^.Y - _1; |
4 | 700 |
end; |
1528 | 701 |
|
3894 | 702 |
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
|
703 |
Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX); |
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
704 |
|
62 | 705 |
SetAllHHToActive; |
37 | 706 |
|
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
707 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 708 |
begin |
498 | 709 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
710 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 711 |
begin |
498 | 712 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
713 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 714 |
begin |
498 | 715 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
716 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 717 |
begin |
498 | 718 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
719 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 720 |
begin |
498 | 721 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
722 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 723 |
begin |
498 | 724 |
Gear^.Y:= Gear^.Y + _1; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
725 |
if TestCollisionYwithGear(Gear, 1) = 0 then |
4 | 726 |
begin |
498 | 727 |
Gear^.Y:= Gear^.Y - _6; |
728 |
Gear^.dY:= _0; |
|
542 | 729 |
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
|
730 |
exit |
4 | 731 |
end; |
732 |
end |
|
733 |
end |
|
734 |
end |
|
735 |
end |
|
736 |
end |
|
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
737 |
end; |
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
738 |
AddGearCI(Gear) |
4 | 739 |
end |
740 |
end; |
|
741 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
742 |
procedure HedgehogChAngle(HHGear: PGear); |
958 | 743 |
var da: LongWord; |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
744 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
745 |
with HHGear^.Hedgehog^ do |
5640
07676ee23aff
make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents:
5638
diff
changeset
|
746 |
if ((CurAmmoType = amRope) and |
07676ee23aff
make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents:
5638
diff
changeset
|
747 |
((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving)) or |
07676ee23aff
make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents:
5638
diff
changeset
|
748 |
((CurAmmoType = amPortalGun) and |
07676ee23aff
make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents:
5638
diff
changeset
|
749 |
((HHGear^.State and gstMoving) <> 0)) then da:= 2 |
07676ee23aff
make it easier to do portal shoppa, ensure structure doesn't show up by accident in a weaponset
nemo
parents:
5638
diff
changeset
|
750 |
else da:= 1; |
958 | 751 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
752 |
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
|
753 |
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
|
754 |
else |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
755 |
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
|
756 |
end; |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
757 |
|
302 | 758 |
procedure doStepHedgehog(Gear: PGear); forward; |
759 |
//////////////////////////////////////////////////////////////////////////////// |
|
538 | 760 |
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
|
761 |
var isFalling, isUnderwater: boolean; |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
762 |
land: Word; |
538 | 763 |
begin |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
764 |
land:= 0; |
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
|
765 |
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
|
766 |
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
|
767 |
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
|
768 |
|
4365 | 769 |
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
|
770 |
begin |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
771 |
Gear^.dY:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
772 |
Gear^.dX:= _0; |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
773 |
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
|
774 |
exit |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2745
diff
changeset
|
775 |
end; |
855
8842c71d16bf
- Fix too long delay between shotgun and deagle shots
unc0rr
parents:
854
diff
changeset
|
776 |
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1); |
542 | 777 |
if isFalling then |
538 | 778 |
begin |
779 |
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0; |
|
542 | 780 |
Gear^.State:= Gear^.State or gstMoving; |
5851
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5838
diff
changeset
|
781 |
if (CurrentHedgehog^.Gear = Gear) |
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5838
diff
changeset
|
782 |
and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then |
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5838
diff
changeset
|
783 |
begin |
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5838
diff
changeset
|
784 |
FollowGear:= Gear; |
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5838
diff
changeset
|
785 |
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
|
786 |
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2 |
4301 | 787 |
else |
788 |
begin |
|
789 |
Gear^.dY:= Gear^.dY + cGravity; |
|
790 |
// this set of circumstances could be less complex if jumping was more clearly identified |
|
791 |
if ((GameFlags and gfMoreWind) <> 0) and |
|
4633 | 792 |
(((Gear^.Damage <> 0) or |
4301 | 793 |
((CurAmmoGear <> nil) and |
794 |
((CurAmmoGear^.AmmoType = amJetpack) or |
|
795 |
(CurAmmoGear^.AmmoType = amBirdy))) or |
|
4633 | 796 |
((Gear^.dY.QWordValue + Gear^.dX.QWordValue) > _0_55.QWordValue))) |
4641 | 797 |
then Gear^.dX := Gear^.dX + cWindSpeed / Gear^.Density |
4301 | 798 |
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
|
799 |
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
|
800 |
else |
538 | 801 |
begin |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
802 |
land:= TestCollisionYwithGear(Gear, 1); |
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
803 |
if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0) |
538 | 804 |
and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX); |
805 |
||
540 | 806 |
if not Gear^.dY.isNegative then |
807 |
begin |
|
808 |
CheckHHDamage(Gear); |
|
790
a6f442173822
Make high jump behaviour like in worms (back somersault)
unc0rr
parents:
783
diff
changeset
|
809 |
|
2137 | 810 |
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
|
811 |
(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
|
812 |
|
542 | 813 |
Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump); |
540 | 814 |
Gear^.dY:= _0; |
815 |
end else Gear^.dY:= Gear^.dY + cGravity; |
|
538 | 816 |
|
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
817 |
if ((Gear^.State and gstMoving) <> 0) then |
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
818 |
begin |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
819 |
if land and lfIce <> 0 then |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
820 |
begin |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
821 |
Gear^.dX:= Gear^.dX * (_1 - (_1 - Gear^.Friction) / _2) |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
822 |
end |
6081
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
823 |
else Gear^.dX:= Gear^.dX * Gear^.Friction; |
537bbd5c1a62
Basic test implementation of an ice flag. Allows for slick parts of terrain. Intended for ice gun, or "ice" mask on portions of land objects.
nemo
parents:
6014
diff
changeset
|
824 |
end |
538 | 825 |
end; |
826 |
||
827 |
if (Gear^.State <> 0) then DeleteCI(Gear); |
|
783 | 828 |
|
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
|
829 |
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
|
830 |
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
|
831 |
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
|
832 |
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
|
833 |
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
|
834 |
|
538 | 835 |
if (Gear^.State and gstMoving) <> 0 then |
836 |
if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then |
|
542 | 837 |
if not isFalling then |
538 | 838 |
if hwAbs(Gear^.dX) > _0_01 then |
839 |
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 |
|
840 |
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 |
|
841 |
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 |
|
842 |
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 |
|
843 |
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 |
|
844 |
if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
845 |
else begin |
|
846 |
Gear^.State:= Gear^.State and not gstMoving; |
|
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
847 |
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1; |
538 | 848 |
SetLittle(Gear^.dX) |
849 |
end |
|
850 |
else begin |
|
851 |
Gear^.State:= Gear^.State and not gstMoving; |
|
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
852 |
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1; |
538 | 853 |
SetLittle(Gear^.dX) |
854 |
end |
|
1518 | 855 |
else if (hwAbs(Gear^.dX) > cLittle) |
856 |
and ((Gear^.State and gstHHJumping) = 0) |
|
857 |
then Gear^.dX:= -Gear^.Elasticity * Gear^.dX |
|
858 |
else SetLittle(Gear^.dX); |
|
538 | 859 |
|
542 | 860 |
if (not isFalling) and |
538 | 861 |
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then |
862 |
begin |
|
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset
|
863 |
Gear^.State:= Gear^.State and not gstWinner; |
538 | 864 |
Gear^.State:= Gear^.State and not gstMoving; |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
865 |
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1; |
538 | 866 |
SetLittle(Gear^.dX); |
867 |
Gear^.dY:= _0 |
|
868 |
end else Gear^.State:= Gear^.State or gstMoving; |
|
869 |
||
870 |
if (Gear^.State and gstMoving) <> 0 then |
|
871 |
begin |
|
872 |
Gear^.State:= Gear^.State and not gstAnimation; |
|
2017 | 873 |
// ARTILLERY but not being moved by explosions |
538 | 874 |
Gear^.X:= Gear^.X + Gear^.dX; |
875 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
876 |
if (not Gear^.dY.isNegative) and |
|
877 |
(not TestCollisionYKick(Gear, 1)) and |
|
878 |
TestCollisionYwithXYShift(Gear, 0, 1, 1) then |
|
879 |
begin |
|
880 |
CheckHHDamage(Gear); |
|
881 |
Gear^.dY:= _0; |
|
882 |
Gear^.Y:= Gear^.Y + _1 |
|
883 |
end; |
|
1658
208a3258afdf
Fix a bug with visible cursor when hedgehog is dead
unc0rr
parents:
1645
diff
changeset
|
884 |
CheckGearDrowning(Gear); |
6248
103bc8fd4f1b
don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents:
6244
diff
changeset
|
885 |
// hide target cursor if current hog is drowning |
103bc8fd4f1b
don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents:
6244
diff
changeset
|
886 |
if (Gear^.State and gstDrowning) <> 0 then |
103bc8fd4f1b
don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents:
6244
diff
changeset
|
887 |
if (CurrentHedgehog^.Gear = Gear) then |
103bc8fd4f1b
don't hide target cursor if a hedgehog (other than current) is drowning, thanks to mikade for pointing this out
sheepluva
parents:
6244
diff
changeset
|
888 |
isCursorVisible:= false |
2428 | 889 |
end; |
890 |
||
3003 | 891 |
if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) and ((GameFlags and gfLowGravity) = 0) then |
2428 | 892 |
begin |
6014 | 893 |
inc(Gear^.FlightTime); |
3174 | 894 |
if Gear^.FlightTime = 3000 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
895 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
896 |
AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
897 |
PlaySound(sndHomerun) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
898 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
899 |
end |
2428 | 900 |
else |
901 |
begin |
|
6014 | 902 |
uStats.hedgehogFlight(Gear, Gear^.FlightTime); |
2428 | 903 |
Gear^.FlightTime:= 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
904 |
end; |
2428 | 905 |
|
538 | 906 |
end; |
907 |
||
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
908 |
procedure doStepHedgehogDriven(HHGear: PGear); |
302 | 909 |
var t: PGear; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
910 |
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
|
911 |
Hedgehog: PHedgehog; |
302 | 912 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
913 |
Hedgehog:= HHGear^.Hedgehog; |
6092
fd602b5838ab
This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents:
6081
diff
changeset
|
914 |
if isInMultiShoot then |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
915 |
HHGear^.Message:= 0; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
498
diff
changeset
|
916 |
|
6092
fd602b5838ab
This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents:
6081
diff
changeset
|
917 |
if ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_Utility) <> 0) and isInMultiShoot then |
fd602b5838ab
This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents:
6081
diff
changeset
|
918 |
AllInactive:= true |
fd602b5838ab
This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents:
6081
diff
changeset
|
919 |
else if not isInMultiShoot then AllInactive:= false; |
fd602b5838ab
This should allow hedgehogs to still move freely after trapping other hedgehogs in a portal loop.
nemo
parents:
6081
diff
changeset
|
920 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
921 |
if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
922 |
begin |
5016
9347d82a26cc
added game mode Tag Team, mostly untested, please test :)
Henek
parents:
5013
diff
changeset
|
923 |
if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
924 |
TurnTimeLeft:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
925 |
isCursorVisible:= false; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
926 |
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
|
927 |
AttackBar:= 0; |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
928 |
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
|
929 |
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
|
930 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
931 |
end; |
1035 | 932 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
933 |
if (HHGear^.State and gstAnimation) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
934 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
935 |
HHGear^.Message:= 0; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
936 |
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
|
937 |
inc(HHGear^.Timer); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
938 |
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
|
939 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
940 |
HHGear^.Timer:= 0; |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
941 |
inc(HHGear^.Pos); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
942 |
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
|
943 |
HHGear^.State:= HHGear^.State and not gstAnimation |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
944 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
945 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
946 |
end; |
1033 | 947 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
948 |
if ((HHGear^.State and gstMoving) <> 0) |
836 | 949 |
or (StepTicks = cHHStepTicks) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
950 |
or (CurAmmoGear <> nil) then // we are moving |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
951 |
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
|
952 |
with Hedgehog^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
953 |
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
|
954 |
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
|
955 |
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
|
956 |
// 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
|
957 |
t:= CheckGearNear(HHGear, gtCase, 36, 36); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
958 |
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
|
959 |
PickUp(HHGear, t) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
960 |
end; |
302 | 961 |
|
930 | 962 |
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
|
963 |
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
|
964 |
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
|
965 |
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
|
966 |
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
|
967 |
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
|
968 |
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
|
969 |
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
|
970 |
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
|
971 |
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
|
972 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
973 |
Attack(HHGear); |
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
974 |
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
|
975 |
end; |
930 | 976 |
|
977 |
if (CurAmmoGear = nil) |
|
3842
fc94291ca1d9
Trying to adjust behaviour of multishoot w/ portal gun so switching weapons works correctly.
nemo
parents:
3837
diff
changeset
|
978 |
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
|
979 |
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
|
980 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
981 |
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
|
982 |
if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^); |
930 | 983 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
984 |
if ((HHGear^.Message and gmWeapon) <> 0) then HHSetWeapon(HHGear); |
930 | 985 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
986 |
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
|
987 |
end; |
930 | 988 |
|
302 | 989 |
if CurAmmoGear <> nil then |
990 |
begin |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
991 |
CurAmmoGear^.Message:= HHGear^.Message; |
302 | 992 |
exit |
993 |
end; |
|
994 |
||
952 | 995 |
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
|
996 |
HedgehogChAngle(HHGear); |
926
d231e007452a
Timer as hedgehog message (avoid possible desync in very rare cases)
unc0rr
parents:
925
diff
changeset
|
997 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
998 |
if (HHGear^.State and gstMoving) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
999 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1000 |
wasJumping:= ((HHGear^.State and gstHHJumping) <> 0); |
2376 | 1001 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1002 |
if ((HHGear^.Message and gmHJump) <> 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1003 |
wasJumping and |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1004 |
((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
|
1005 |
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
|
1006 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1007 |
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
|
1008 |
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
|
1009 |
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
|
1010 |
PlaySound(sndJump2, Hedgehog^.Team^.voicepack) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1011 |
end; |
2376 | 1012 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1013 |
HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump); |
538 | 1014 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1015 |
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
|
1016 |
TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX); |
538 | 1017 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1018 |
if Hedgehog^.Gear <> nil then doStepHedgehogMoving(HHGear); |
542 | 1019 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1020 |
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
|
1021 |
begin |
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1022 |
AddGearCI(HHGear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1023 |
if wasJumping then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1024 |
StepTicks:= 410 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1025 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1026 |
StepTicks:= 95 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1027 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1028 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1029 |
end; |
302 | 1030 |
|
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset
|
1031 |
if not isInMultiShoot and (Hedgehog^.Gear <> nil) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1032 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1033 |
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
|
1034 |
if (StepTicks = 0) then HedgehogStep(HHGear) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1035 |
end |
302 | 1036 |
end; |
1037 |
||
4 | 1038 |
//////////////////////////////////////////////////////////////////////////////// |
1039 |
procedure doStepHedgehogFree(Gear: PGear); |
|
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5991
diff
changeset
|
1040 |
var prevState: Longword; |
4 | 1041 |
begin |
511 | 1042 |
prevState:= Gear^.State; |
4 | 1043 |
|
538 | 1044 |
doStepHedgehogMoving(Gear); |
4 | 1045 |
|
1002 | 1046 |
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
|
1047 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1048 |
if Gear^.Damage > 0 then CalcRotationDirAngle(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1049 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1050 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1051 |
end; |
4 | 1052 |
|
863 | 1053 |
if (Gear^.Health = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1054 |
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
|
1055 |
if PrvInactive or ((GameFlags and gfInfAttack) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1056 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1057 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1058 |
FollowGear:= Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1059 |
PrvInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1060 |
AllInactive:= false; |
2140 | 1061 |
|
5991 | 1062 |
if (Gear^.State and gstHHGone) = 0 then |
3310 | 1063 |
begin |
4365 | 1064 |
Gear^.Hedgehog^.Effects[hePoisoned] := false; |
1065 |
if Gear^.Hedgehog^.Effects[heResurrectable] then begin |
|
3768 | 1066 |
ResurrectHedgehog(Gear); |
5972
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
1067 |
end else |
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
1068 |
begin |
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
1069 |
Gear^.State:= (Gear^.State or gstHHDeath) and not gstAnimation; |
3768 | 1070 |
Gear^.doStep:= @doStepHedgehogDead; |
1071 |
// Death message |
|
4365 | 1072 |
AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); |
5972
add1cae1add6
Clear gstAnimation and reset Timer before entering death animation
nemo
parents:
5965
diff
changeset
|
1073 |
end; |
3310 | 1074 |
end |
1075 |
else |
|
1076 |
begin |
|
5991 | 1077 |
Gear^.State:= Gear^.State and not gstAnimation; |
3310 | 1078 |
Gear^.doStep:= @doStepHedgehogGone; |
5818
d071162d550d
There. Push this back on to unc0rr. This effect can still desync, 'cause it always could, but at least now the two are linked w/o argument I think.
nemo
parents:
5720
diff
changeset
|
1079 |
|
3310 | 1080 |
// Gone message |
4365 | 1081 |
AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage); |
3310 | 1082 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1083 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1084 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1085 |
end; |
4 | 1086 |
|
1033 | 1087 |
if ((Gear^.State and gstWait) = 0) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1088 |
(prevState <> Gear^.State) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1089 |
begin |
5955 | 1090 |
Gear^.State:= Gear^.State or gstWait; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1091 |
Gear^.Timer:= 150 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1092 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1093 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1094 |
if Gear^.Timer = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1095 |
begin |
6116 | 1096 |
Gear^.State:= Gear^.State and not (gstWait or gstLoser or gstWinner or gstAttacked or gstNotKickable); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1097 |
Gear^.Active:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1098 |
AddGearCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1099 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1100 |
end else dec(Gear^.Timer) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1101 |
end; |
863 | 1102 |
|
1103 |
AllInactive:= false |
|
4 | 1104 |
end; |
1105 |
||
1106 |
//////////////////////////////////////////////////////////////////////////////// |
|
1107 |
procedure doStepHedgehog(Gear: PGear); |
|
6117
2a4829172a29
Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents:
6116
diff
changeset
|
1108 |
(* |
2a4829172a29
Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents:
6116
diff
changeset
|
1109 |
var x,y,tx,ty: LongInt; |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1110 |
tdX, tdY, slope: hwFloat; |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1111 |
land: Word; *) |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1112 |
var slope: hwFloat; |
4 | 1113 |
begin |
3894 | 1114 |
if (Gear^.Message and gmDestroy) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1115 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1116 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1117 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1118 |
end; |
1505 | 1119 |
|
2040 | 1120 |
if (Gear^.State and gstHHDriven) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1121 |
doStepHedgehogFree(Gear) |
2040 | 1122 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1123 |
begin |
4365 | 1124 |
with Gear^.Hedgehog^ do |
5955 | 1125 |
if Team^.hasGone then |
5829
3ec95dc2b249
Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents:
5820
diff
changeset
|
1126 |
TeamGoneEffect(Team^) |
3ec95dc2b249
Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents:
5820
diff
changeset
|
1127 |
else |
3ec95dc2b249
Don't test for hasGone in unapproved places. Now any possibility of desync on player quit is ruled out. Not tested at all.
unc0rr
parents:
5820
diff
changeset
|
1128 |
doStepHedgehogDriven(Gear) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2940
diff
changeset
|
1129 |
end; |
6295
5b2b304a91ec
Due to the small values and friction, halve the step in low gravity, instead of the value
nemo
parents:
6294
diff
changeset
|
1130 |
if (Gear^.Message and (gmAllStoppable or gmLJump or gmHJump) = 0) and |
6293 | 1131 |
(Gear^.State and (gstHHJumping or gstHHHJump or gstAttacking) = 0) and |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1132 |
not Gear^.dY.isNegative and |
6335 | 1133 |
(GameTicks mod (100*LongWOrd(hwRound(cMaxWindSpeed*2/cGravity))) = 0) and |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1134 |
(TestCollisionYwithGear(Gear, 1) and lfIce <> 0) then |
6117
2a4829172a29
Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents:
6116
diff
changeset
|
1135 |
begin |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1136 |
slope:= CalcSlopeBelowGear(Gear); |
6295
5b2b304a91ec
Due to the small values and friction, halve the step in low gravity, instead of the value
nemo
parents:
6294
diff
changeset
|
1137 |
Gear^.dX:=Gear^.dX+slope*_0_07; |
6294 | 1138 |
if slope.QWordValue <> 0 then Gear^.State:= Gear^.State or gstMoving; |
6117
2a4829172a29
Experiment in making ice more treacherous. also tweak to snow/christmas flake spawn
nemo
parents:
6116
diff
changeset
|
1139 |
(* |
6291
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1140 |
x:= hwRound(Gear^.X); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1141 |
y:= hwRound(Gear^.Y); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1142 |
AddVisualGear(x, y, vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1143 |
AddVisualGear(x - hwRound(_5*slope), y + hwRound(_5*slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1144 |
AddVisualGear(x + hwRound(_5*slope), y - hwRound(_5*slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1145 |
AddVisualGear(x - hwRound(_20 * slope), y + hwRound(_20 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1146 |
AddVisualGear(x + hwRound(_20 * slope), y - hwRound(_20 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1147 |
AddVisualGear(x - hwRound(_30 * slope), y + hwRound(_30 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1148 |
AddVisualGear(x + hwRound(_30 * slope), y - hwRound(_30 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1149 |
AddVisualGear(x - hwRound(_40 * slope), y + hwRound(_40 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1150 |
AddVisualGear(x + hwRound(_40 * slope), y - hwRound(_40 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1151 |
AddVisualGear(x - hwRound(_50 * slope), y + hwRound(_50 * slope), vgtSmokeTrace); |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1152 |
AddVisualGear(x + hwRound(_50 * slope), y - hwRound(_50 * slope), vgtSmokeTrace); *) |
cfd2483b8c97
A bit less WTF of ice, ice chutes now work. Also tweak flake respawn positions a bit
nemo
parents:
6248
diff
changeset
|
1153 |
end |
2585
0899ce8ad77f
Smaxx: only allow change direction when shift key is pressed
unc0rr
parents:
2502
diff
changeset
|
1154 |
end; |