author | nemo |
Tue, 04 May 2010 16:30:41 +0000 | |
changeset 3419 | b66a1b597f88 |
parent 3417 | 27ff4a6375dd |
child 3422 | 41ae3c48faa0 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
3236
4ab3917d7d44
Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents:
3216
diff
changeset
|
3 |
* Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 5 |
* This program is free software; you can redistribute it and/or modify |
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
4 | 8 |
* |
183 | 9 |
* This program is distributed in the hope that it will be useful, |
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
4 | 13 |
* |
183 | 14 |
* You should have received a copy of the GNU General Public License |
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
4 | 17 |
*) |
18 |
||
2647 | 19 |
procedure makeHogsWorry(x, y: hwFloat; r: LongInt); |
20 |
var gi: PGear; |
|
21 |
d: LongInt; |
|
22 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
23 |
gi:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
24 |
while gi <> nil do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
25 |
begin |
3143 | 26 |
if (gi^.Kind = gtHedgehog) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
27 |
begin |
3143 | 28 |
d:= r - hwRound(Distance(gi^.X - x, gi^.Y - y)); |
29 |
if (d > 1) and not gi^.Invulnerable and (GetRandom(2) = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
30 |
begin |
3143 | 31 |
if (CurrentHedgehog^.Gear = gi) then |
32 |
PlaySound(sndOops, PHedgehog(gi^.Hedgehog)^.Team^.voicepack) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
33 |
else |
3143 | 34 |
begin |
35 |
if (gi^.State and gstMoving) = 0 then |
|
36 |
gi^.State:= gi^.State or gstLoser; |
|
37 |
if d > r div 2 then |
|
38 |
PlaySound(sndNooo, PHedgehog(gi^.Hedgehog)^.Team^.voicepack) |
|
39 |
else |
|
40 |
PlaySound(sndUhOh, PHedgehog(gi^.Hedgehog)^.Team^.voicepack); |
|
41 |
end; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
42 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
43 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
44 |
gi:= gi^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
45 |
end; |
2647 | 46 |
end; |
47 |
//////////////////////////////////////////////////////////////////////////////// |
|
4 | 48 |
procedure doStepDrowningGear(Gear: PGear); forward; |
49 |
||
50 |
function CheckGearDrowning(Gear: PGear): boolean; |
|
1918 | 51 |
var skipSpeed, skipAngle, skipDecay: hwFloat; |
2982 | 52 |
i, maxDrops: LongInt; |
53 |
particle: PVisualGear; |
|
4 | 54 |
begin |
1918 | 55 |
// probably needs tweaking. might need to be in a case statement based upon gear type |
498 | 56 |
if cWaterLine < hwRound(Gear^.Y) + Gear^.Radius then |
1918 | 57 |
begin |
3391 | 58 |
skipSpeed:= _0_25; |
59 |
skipAngle:= _1_9; |
|
1918 | 60 |
skipDecay:= _0_87; // this could perhaps be a tiny bit higher. |
1919 | 61 |
if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > skipSpeed) and |
1920 | 62 |
(hwAbs(Gear^.dX) > skipAngle * hwAbs(Gear^.dY)) then |
1918 | 63 |
begin |
64 |
Gear^.dY.isNegative:= true; |
|
1919 | 65 |
Gear^.dY:= Gear^.dY * skipDecay; |
66 |
Gear^.dX:= Gear^.dX * skipDecay; |
|
3359 | 67 |
CheckGearDrowning:= false; |
68 |
PlaySound(sndSkip) |
|
1918 | 69 |
end |
70 |
else |
|
71 |
begin |
|
72 |
CheckGearDrowning:= true; |
|
73 |
Gear^.State:= gstDrowning; |
|
2429 | 74 |
Gear^.RenderTimer:= false; |
3384 | 75 |
if (Gear^.Kind <> gtSniperRifleShot) and (Gear^.Kind <> gtShotgunShot) and (Gear^.Kind <> gtDEagleShot) and (Gear^.Kind <> gtSineGunShot) then |
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
76 |
Gear^.doStep:= @doStepDrowningGear; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
77 |
if Gear^.Kind = gtHedgehog then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
78 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
79 |
Gear^.State:= Gear^.State and (not gstHHDriven); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
80 |
AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); |
3359 | 81 |
end; |
3399 | 82 |
if hwRound(Gear^.Y) < cWaterLine + 64 + Gear^.Radius then // don't play splash if they are already way past the surface |
83 |
PlaySound(sndSplash) |
|
1918 | 84 |
end; |
2982 | 85 |
|
3399 | 86 |
if not cReducedQuality and (hwRound(Gear^.Y) < cWaterLine + 64 + Gear^.Radius) then |
2982 | 87 |
begin |
3020 | 88 |
AddVisualGear(hwRound(Gear^.X), cWaterLine, vgtSplash); |
2982 | 89 |
|
90 |
maxDrops := (Gear^.Radius div 2) + hwRound(Gear^.dX * Gear^.Radius * 2) + hwRound(Gear^.dY * Gear^.Radius * 2); |
|
91 |
for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do |
|
92 |
begin |
|
3020 | 93 |
particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), cWaterLine, vgtDroplet); |
2982 | 94 |
if particle <> nil then |
95 |
begin |
|
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
96 |
particle^.dX := particle^.dX - (Gear^.dX / 10); |
2982 | 97 |
particle^.dY := particle^.dY - (Gear^.dY / 5) |
98 |
end |
|
99 |
end |
|
100 |
end; |
|
1918 | 101 |
end |
3359 | 102 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
103 |
CheckGearDrowning:= false |
4 | 104 |
end; |
105 |
||
106 |
procedure CheckCollision(Gear: PGear); |
|
107 |
begin |
|
351 | 108 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y)) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
109 |
then Gear^.State:= Gear^.State or gstCollision |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
110 |
else Gear^.State:= Gear^.State and not gstCollision |
4 | 111 |
end; |
112 |
||
113 |
procedure CheckHHDamage(Gear: PGear); |
|
2848 | 114 |
var |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
115 |
dmg: Longword; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
116 |
i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
117 |
particle: PVisualGear; |
4 | 118 |
begin |
522 | 119 |
if _0_4 < Gear^.dY then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
120 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
121 |
dmg:= ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear); |
2730
f56592281526
Remove king invulnerability, disable everything but teleport instead.
nemo
parents:
2726
diff
changeset
|
122 |
if dmg < 1 then exit; |
f56592281526
Remove king invulnerability, disable everything but teleport instead.
nemo
parents:
2726
diff
changeset
|
123 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
124 |
for i:= min(12, (3 + dmg div 10)) downto 0 do begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
125 |
particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); |
2871
eec42a0b7014
rearrange fall damage a bit so invulnerability still causes dust
nemo
parents:
2859
diff
changeset
|
126 |
if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
127 |
end; |
2871
eec42a0b7014
rearrange fall damage a bit so invulnerability still causes dust
nemo
parents:
2859
diff
changeset
|
128 |
|
eec42a0b7014
rearrange fall damage a bit so invulnerability still causes dust
nemo
parents:
2859
diff
changeset
|
129 |
if(Gear^.Invulnerable) then exit; |
eec42a0b7014
rearrange fall damage a bit so invulnerability still causes dust
nemo
parents:
2859
diff
changeset
|
130 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
131 |
if _0_6 < Gear^.dY then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
132 |
PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
133 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
134 |
PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
1123 | 135 |
|
2871
eec42a0b7014
rearrange fall damage a bit so invulnerability still causes dust
nemo
parents:
2859
diff
changeset
|
136 |
ApplyDamage(Gear, dmg); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
137 |
end |
4 | 138 |
end; |
139 |
||
140 |
//////////////////////////////////////////////////////////////////////////////// |
|
141 |
//////////////////////////////////////////////////////////////////////////////// |
|
142 |
procedure CalcRotationDirAngle(Gear: PGear); |
|
776
8fc7e59d9cb4
Convert the rest of rotated sprites to be rotated by OpenGL
unc0rr
parents:
764
diff
changeset
|
143 |
var dAngle: real; |
4 | 144 |
begin |
3143 | 145 |
dAngle:= (Gear^.dX.QWordValue + Gear^.dY.QWordValue) / $80000000; |
1133 | 146 |
if not Gear^.dX.isNegative then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
147 |
Gear^.DirAngle:= Gear^.DirAngle + dAngle |
1133 | 148 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
149 |
Gear^.DirAngle:= Gear^.DirAngle - dAngle; |
1133 | 150 |
|
776
8fc7e59d9cb4
Convert the rest of rotated sprites to be rotated by OpenGL
unc0rr
parents:
764
diff
changeset
|
151 |
if Gear^.DirAngle < 0 then Gear^.DirAngle:= Gear^.DirAngle + 360 |
8fc7e59d9cb4
Convert the rest of rotated sprites to be rotated by OpenGL
unc0rr
parents:
764
diff
changeset
|
152 |
else if 360 < Gear^.DirAngle then Gear^.DirAngle:= Gear^.DirAngle - 360 |
4 | 153 |
end; |
154 |
||
155 |
//////////////////////////////////////////////////////////////////////////////// |
|
156 |
procedure doStepDrowningGear(Gear: PGear); |
|
157 |
begin |
|
158 |
AllInactive:= false; |
|
351 | 159 |
Gear^.Y:= Gear^.Y + cDrownSpeed; |
2228 | 160 |
Gear^.X:= Gear^.X + Gear^.dX * cDrownSpeed; |
2840
bb9117753fe4
Skip drawing some stuff if water is opaque. Affects simulation.
nemo
parents:
2828
diff
changeset
|
161 |
if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then DeleteGear(Gear); |
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
|
162 |
// Create some bubbles (0.5% might be better but causes too few bubbles sometimes) |
2840
bb9117753fe4
Skip drawing some stuff if water is opaque. Affects simulation.
nemo
parents:
2828
diff
changeset
|
163 |
if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then |
2376 | 164 |
if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then |
2225 | 165 |
AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, vgtBubble) |
166 |
else if Random(12) = 0 then |
|
167 |
AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, vgtBubble) |
|
4 | 168 |
end; |
169 |
||
170 |
//////////////////////////////////////////////////////////////////////////////// |
|
171 |
procedure doStepFallingGear(Gear: PGear); |
|
3001 | 172 |
var isFalling: boolean; |
3020 | 173 |
//tmp: QWord; |
2998
5b74906c14bb
Slightly better behaved bounce, assuming we can make this 45 deg thing work, calcs could stand some optimisation.
nemo
parents:
2995
diff
changeset
|
174 |
tdX, tdY: hwFloat; |
3001 | 175 |
collV, collH: LongInt; |
4 | 176 |
begin |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
177 |
if Gear^.dX > _0_995 then Gear^.dX:= _0_995; |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
178 |
if Gear^.dY > _0_995 then Gear^.dY:= _0_995; |
503 | 179 |
Gear^.State:= Gear^.State and not gstCollision; |
3001 | 180 |
collV:= 0; |
181 |
collH:= 0; |
|
2998
5b74906c14bb
Slightly better behaved bounce, assuming we can make this 45 deg thing work, calcs could stand some optimisation.
nemo
parents:
2995
diff
changeset
|
182 |
tdX:= Gear^.dX; |
5b74906c14bb
Slightly better behaved bounce, assuming we can make this 45 deg thing work, calcs could stand some optimisation.
nemo
parents:
2995
diff
changeset
|
183 |
tdY:= Gear^.dY; |
503 | 184 |
|
3359 | 185 |
// might need some testing/adjustments - just to avoid projectiles to fly forever (accelerated by wind/skips) |
186 |
if (hwRound(Gear^.X) < LAND_WIDTH div -2) or (hwRound(Gear^.X) > LAND_WIDTH * 3 div 2) then |
|
187 |
begin |
|
188 |
Gear^.State:= Gear^.State or gstCollision; |
|
189 |
exit |
|
190 |
end; |
|
191 |
||
503 | 192 |
if Gear^.dY.isNegative then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
193 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
194 |
isFalling:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
195 |
if TestCollisionYwithGear(Gear, -1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
196 |
begin |
3001 | 197 |
collV:= -1; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
198 |
Gear^.dX:= Gear^.dX * Gear^.Friction; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
199 |
Gear^.dY:= - Gear^.dY * Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
200 |
Gear^.State:= Gear^.State or gstCollision |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
201 |
end |
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
202 |
else if (Gear^.AdvBounce=1) and TestCollisionYwithGear(Gear, 1) then collV:= 1; |
3071
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
203 |
end |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
204 |
else if TestCollisionYwithGear(Gear, 1) then |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
205 |
begin |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
206 |
collV:= 1; |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
207 |
isFalling:= false; |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
208 |
Gear^.dX:= Gear^.dX * Gear^.Friction; |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
209 |
Gear^.dY:= - Gear^.dY * Gear^.Elasticity; |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
210 |
Gear^.State:= Gear^.State or gstCollision |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
211 |
end |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
212 |
else |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
213 |
begin |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
214 |
isFalling:= true; |
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
215 |
if (Gear^.AdvBounce=1) and not Gear^.dY.isNegative and TestCollisionYwithGear(Gear, -1) then collV:= -1; |
3071
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
216 |
end; |
503 | 217 |
|
2989
b49d87499398
Add back sheepluva's 45° patch for some weapons. Rescale Tiy's latest icons to his specifications.
nemo
parents:
2983
diff
changeset
|
218 |
|
351 | 219 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
220 |
begin |
3001 | 221 |
collH:= hwSign(Gear^.dX); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
222 |
Gear^.dX:= - Gear^.dX * Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
223 |
Gear^.dY:= Gear^.dY * Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
224 |
Gear^.State:= Gear^.State or gstCollision |
2989
b49d87499398
Add back sheepluva's 45° patch for some weapons. Rescale Tiy's latest icons to his specifications.
nemo
parents:
2983
diff
changeset
|
225 |
end |
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
226 |
else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then collH:= -hwSign(Gear^.dX); |
2989
b49d87499398
Add back sheepluva's 45° patch for some weapons. Rescale Tiy's latest icons to his specifications.
nemo
parents:
2983
diff
changeset
|
227 |
|
3071
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
228 |
//if Gear^.AdvBounce and (collV <>0) and (collH <> 0) and (hwSqr(tdX) + hwSqr(tdY) > _0_08) then |
3216
d94262b521ae
Only require a minimum speed if object is descending.
nemo
parents:
3203
diff
changeset
|
229 |
if (Gear^.AdvBounce=1) and (collV <>0) and (collH <> 0) and ((collV=-1) or ((tdX.QWordValue + tdY.QWordValue) > _0_2.QWordValue)) then |
3001 | 230 |
begin |
231 |
Gear^.dX:= tdY*Gear^.Elasticity*Gear^.Friction; |
|
3002 | 232 |
Gear^.dY:= tdX*Gear^.Elasticity;//*Gear^.Friction; |
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
233 |
Gear^.dY.isNegative:= not tdY.isNegative; |
3002 | 234 |
isFalling:= false; |
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
235 |
Gear^.AdvBounce:= 10; |
3001 | 236 |
end; |
503 | 237 |
|
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
238 |
if Gear^.AdvBounce > 1 then dec(Gear^.AdvBounce); |
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3071
diff
changeset
|
239 |
|
542 | 240 |
if isFalling then Gear^.dY:= Gear^.dY + cGravity; |
503 | 241 |
|
351 | 242 |
Gear^.X:= Gear^.X + Gear^.dX; |
243 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
4 | 244 |
CheckGearDrowning(Gear); |
3071
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
245 |
//if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) < _0_0002) and |
f40a3fbe3b34
Add more dY checks to allow greater 45 deg bouncing, simplify check for stopped gear in interests of perf.
nemo
parents:
3065
diff
changeset
|
246 |
if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_02.QWordValue) and |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
247 |
(not isFalling) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
248 |
Gear^.State:= Gear^.State and not gstMoving |
1133 | 249 |
else |
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3092
diff
changeset
|
250 |
Gear^.State:= Gear^.State or gstMoving; |
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3092
diff
changeset
|
251 |
|
3136 | 252 |
if (Gear^.nImpactSounds > 0) then |
253 |
if ((Gear^.Damage <> 0) or ((Gear^.State and (gstCollision or gstMoving)) = (gstCollision or gstMoving))) and |
|
254 |
((Gear^.dX.QWordValue > _0_1.QWordValue) or (Gear^.dY.QWordValue > _0_1.QWordValue)) then |
|
3203
e98ac205ba29
make use of Smaxx latest commit(s) when playing ImpactSounds
sheepluva
parents:
3180
diff
changeset
|
255 |
PlaySound(TSound(ord(Gear^.ImpactSound) + LongInt(GetRandom(Gear^.nImpactSounds))), true); |
4 | 256 |
end; |
257 |
||
258 |
//////////////////////////////////////////////////////////////////////////////// |
|
259 |
procedure doStepBomb(Gear: PGear); |
|
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
260 |
var i, x, y: LongInt; |
919 | 261 |
dX, dY: hwFloat; |
2538
661079b00177
Just checking this in so prg can try it. May back it out
nemo
parents:
2524
diff
changeset
|
262 |
Fire: PGear; |
4 | 263 |
begin |
264 |
AllInactive:= false; |
|
1263 | 265 |
|
4 | 266 |
doStepFallingGear(Gear); |
1263 | 267 |
|
351 | 268 |
dec(Gear^.Timer); |
2647 | 269 |
if Gear^.Timer = 1000 then // might need adjustments |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
270 |
case Gear^.Kind of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
271 |
gtAmmo_Bomb: makeHogsWorry(Gear^.X, Gear^.Y, 50); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
272 |
gtClusterBomb: makeHogsWorry(Gear^.X, Gear^.Y, 20); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
273 |
gtWatermelon: makeHogsWorry(Gear^.X, Gear^.Y, 75); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
274 |
gtHellishBomb: makeHogsWorry(Gear^.X, Gear^.Y, 90); |
3382 | 275 |
gtGasBomb: makeHogsWorry(Gear^.X, Gear^.Y, 50); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
276 |
end; |
3004 | 277 |
|
278 |
if (Gear^.Kind = gtBall) and ((Gear^.State and gstTmpFlag) <> 0) then |
|
279 |
begin |
|
280 |
CheckCollision(Gear); |
|
281 |
if (Gear^.State and gstCollision) <> 0 then |
|
282 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx); |
|
283 |
end; |
|
284 |
||
351 | 285 |
if Gear^.Timer = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
286 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
287 |
case Gear^.Kind of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
288 |
gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
289 |
gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
290 |
gtClusterBomb: begin |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
291 |
x:= hwRound(Gear^.X); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
292 |
y:= hwRound(Gear^.Y); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
293 |
doMakeExplosion(x, y, 20, EXPLAutoSound); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
294 |
for i:= 0 to 4 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
295 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
296 |
dX:= rndSign(GetRandom * _0_1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
297 |
dY:= (GetRandom - _3) * _0_08; |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
298 |
AddGear(x, y, gtCluster, 0, dX, dY, 25); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
299 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
300 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
301 |
gtWatermelon: begin |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
302 |
x:= hwRound(Gear^.X); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
303 |
y:= hwRound(Gear^.Y); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
304 |
doMakeExplosion(x, y, 75, EXPLAutoSound); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
305 |
for i:= 0 to 5 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
306 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
307 |
dX:= rndSign(GetRandom * _0_1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
308 |
dY:= (GetRandom - _1_5) * _0_3; |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
309 |
AddGear(x, y, gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
310 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
311 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
312 |
gtHellishBomb: begin |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
313 |
x:= hwRound(Gear^.X); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
314 |
y:= hwRound(Gear^.Y); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
315 |
doMakeExplosion(x, y, 90, EXPLAutoSound); |
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
316 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
317 |
for i:= 0 to 127 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
318 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
319 |
dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
320 |
dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1); |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
321 |
Fire:= AddGear(x, y, gtFlame, 0, dX, dY, 0); |
2538
661079b00177
Just checking this in so prg can try it. May back it out
nemo
parents:
2524
diff
changeset
|
322 |
if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
3092
dfeb6fc771f7
doStepBomb: cache rounded values of Gear^.X/Y instead of recalculating the exact same values up to 512 times
sheepluva
parents:
3081
diff
changeset
|
323 |
Fire:= AddGear(x, y, gtFlame, 0, dX, -dY, 0); |
2538
661079b00177
Just checking this in so prg can try it. May back it out
nemo
parents:
2524
diff
changeset
|
324 |
if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
325 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
326 |
end; |
3382 | 327 |
gtGasBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound or EXPLPoisoned); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
328 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
329 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
330 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
331 |
end; |
1263 | 332 |
|
4 | 333 |
CalcRotationDirAngle(Gear); |
1263 | 334 |
|
335 |
if Gear^.Kind = gtHellishBomb then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
336 |
begin |
3118 | 337 |
|
338 |
if Gear^.Timer = 3000 then |
|
339 |
begin |
|
3136 | 340 |
Gear^.nImpactSounds:= 0; |
3118 | 341 |
PlaySound(sndHellish); |
342 |
end; |
|
1279 | 343 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
344 |
if (GameTicks and $3F) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
345 |
if (Gear^.State and gstCollision) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
346 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
347 |
end; |
4 | 348 |
end; |
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
349 |
//////////////////////////////////////////////////////////////////////////////// |
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
350 |
procedure doStepMolotov(Gear: PGear); |
3143 | 351 |
var i, gX, gY: LongInt; |
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
352 |
dX, dY: hwFloat; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
353 |
Fire: PGear; |
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
354 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
355 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
356 |
|
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
357 |
doStepFallingGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
358 |
CalcRotationDirAngle(Gear); |
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
359 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
360 |
if (Gear^.State and gstCollision) <> 0 then begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
361 |
PlaySound(sndMolotov); |
3143 | 362 |
gX:= hwRound(Gear^.X); |
363 |
gY:= hwRound(Gear^.Y); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
364 |
//doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
365 |
for i:= 0 to 20 do begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
366 |
dX:= AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
367 |
dY:= AngleSin(i * 8) * _0_5 * (GetRandom + _1); |
3143 | 368 |
Fire:= AddGear(gX, gY, gtFlame, 0, dX, dY, 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
369 |
Fire^.State:= Fire^.State or gsttmpFlag; |
3143 | 370 |
Fire:= AddGear(gX, gY, gtFlame, 0, dX, -dY, 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
371 |
Fire^.State:= Fire^.State or gsttmpFlag; |
3143 | 372 |
Fire:= AddGear(gX, gY, gtFlame, 0, -dX, dY, 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
373 |
Fire^.State:= Fire^.State or gsttmpFlag; |
3143 | 374 |
Fire:= AddGear(gX, gY, gtFlame, 0, -dX, -dY, 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
375 |
Fire^.State:= Fire^.State or gsttmpFlag; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
376 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
377 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
378 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
379 |
end; |
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset
|
380 |
end; |
4 | 381 |
|
1279 | 382 |
procedure doStepWatermelon(Gear: PGear); |
383 |
begin |
|
384 |
AllInactive:= false; |
|
385 |
Gear^.doStep:= @doStepBomb |
|
386 |
end; |
|
387 |
||
78 | 388 |
procedure doStepCluster(Gear: PGear); |
389 |
begin |
|
390 |
AllInactive:= false; |
|
391 |
doStepFallingGear(Gear); |
|
351 | 392 |
if (Gear^.State and gstCollision) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
393 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
394 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
395 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
396 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
397 |
end; |
1262 | 398 |
|
3004 | 399 |
if (Gear^.Kind = gtMelonPiece) or (Gear^.Kind = gtBall) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
400 |
CalcRotationDirAngle(Gear) |
1262 | 401 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
402 |
if (GameTicks and $1F) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
403 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0) |
78 | 404 |
end; |
405 |
||
4 | 406 |
//////////////////////////////////////////////////////////////////////////////// |
407 |
procedure doStepGrenade(Gear: PGear); |
|
408 |
begin |
|
409 |
AllInactive:= false; |
|
351 | 410 |
Gear^.dX:= Gear^.dX + cWindSpeed; |
4 | 411 |
doStepFallingGear(Gear); |
351 | 412 |
if (Gear^.State and gstCollision) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
413 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
414 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
415 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
416 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
417 |
end; |
4 | 418 |
if (GameTicks and $3F) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
419 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0) |
4 | 420 |
end; |
421 |
||
422 |
//////////////////////////////////////////////////////////////////////////////// |
|
95 | 423 |
procedure doStepHealthTagWork(Gear: PGear); |
4 | 424 |
begin |
522 | 425 |
if Gear^.Kind = gtHealthTag then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
426 |
AllInactive:= false; |
1505 | 427 |
|
351 | 428 |
dec(Gear^.Timer); |
522 | 429 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
1505 | 430 |
|
351 | 431 |
if Gear^.Timer = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
432 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
433 |
if (Gear^.Kind = gtHealthTag) and (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
434 |
PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
435 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
436 |
end |
4 | 437 |
end; |
438 |
||
263 | 439 |
procedure doStepHealthTagWorkUnderWater(Gear: PGear); |
440 |
begin |
|
1505 | 441 |
AllInactive:= false; |
1495 | 442 |
|
351 | 443 |
Gear^.Y:= Gear^.Y - _0_08; |
1495 | 444 |
|
498 | 445 |
if hwRound(Gear^.Y) < cWaterLine + 10 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
446 |
DeleteGear(Gear) |
263 | 447 |
end; |
448 |
||
95 | 449 |
procedure doStepHealthTag(Gear: PGear); |
450 |
var s: shortstring; |
|
451 |
begin |
|
1505 | 452 |
AllInactive:= false; |
453 |
Gear^.dY:= -_0_08; |
|
522 | 454 |
|
351 | 455 |
str(Gear^.State, s); |
1505 | 456 |
Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16); |
457 |
||
458 |
if hwRound(Gear^.Y) < cWaterLine then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
459 |
Gear^.doStep:= @doStepHealthTagWork |
1505 | 460 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
461 |
Gear^.doStep:= @doStepHealthTagWorkUnderWater; |
1505 | 462 |
|
762 | 463 |
Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
95 | 464 |
end; |
465 |
||
4 | 466 |
//////////////////////////////////////////////////////////////////////////////// |
467 |
procedure doStepGrave(Gear: PGear); |
|
468 |
begin |
|
469 |
AllInactive:= false; |
|
498 | 470 |
if Gear^.dY.isNegative then |
471 |
if TestCollisionY(Gear, -1) then Gear^.dY:= _0; |
|
4 | 472 |
|
351 | 473 |
if not Gear^.dY.isNegative then |
68 | 474 |
if TestCollisionY(Gear, 1) then |
4 | 475 |
begin |
351 | 476 |
Gear^.dY:= - Gear^.dY * Gear^.Elasticity; |
477 |
if Gear^.dY > - _1div1024 then |
|
4 | 478 |
begin |
351 | 479 |
Gear^.Active:= false; |
4 | 480 |
exit |
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3092
diff
changeset
|
481 |
end else if Gear^.dY < - _0_03 then PlaySound(Gear^.ImpactSound) |
4 | 482 |
end; |
1505 | 483 |
|
351 | 484 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
4 | 485 |
CheckGearDrowning(Gear); |
351 | 486 |
Gear^.dY:= Gear^.dY + cGravity |
4 | 487 |
end; |
488 |
||
489 |
//////////////////////////////////////////////////////////////////////////////// |
|
3080 | 490 |
procedure doStepBeeWork(Gear: PGear); |
351 | 491 |
var t: hwFloat; |
3143 | 492 |
gX,gY: LongInt; |
3139 | 493 |
nuw: boolean; |
494 |
const uw: boolean = false; |
|
4 | 495 |
begin |
496 |
AllInactive:= false; |
|
3143 | 497 |
gX:= hwRound(Gear^.X); |
498 |
gY:= hwRound(Gear^.Y); |
|
3139 | 499 |
nuw:= (cWaterLine < hwRound(Gear^.Y) + Gear^.Radius); |
500 |
if nuw and not uw then |
|
501 |
begin |
|
3143 | 502 |
AddVisualGear(gX, cWaterLine, vgtSplash); |
503 |
AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet); |
|
504 |
AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet); |
|
505 |
AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet); |
|
506 |
AddVisualGear(gX - 3 + Random(6), cWaterLine, vgtDroplet); |
|
3139 | 507 |
StopSound(Gear^.SoundChannel); |
508 |
Gear^.SoundChannel:= LoopSound(sndBeeWater); |
|
509 |
uw:= nuw |
|
510 |
end |
|
511 |
else if not nuw and uw then |
|
512 |
begin |
|
3143 | 513 |
AddVisualGear(gX, cWaterLine, vgtSplash); |
3139 | 514 |
StopSound(Gear^.SoundChannel); |
515 |
Gear^.SoundChannel:= LoopSound(sndBee); |
|
516 |
uw:= nuw |
|
517 |
end; |
|
518 |
||
519 |
||
351 | 520 |
t:= Distance(Gear^.dX, Gear^.dY); |
3143 | 521 |
Gear^.dX:= Gear^.Elasticity * (Gear^.dX + _0_000004 * (TargetPoint.X - gX)); |
522 |
Gear^.dY:= Gear^.Elasticity * (Gear^.dY + _0_000004 * (TargetPoint.Y - gY)); |
|
3080 | 523 |
|
351 | 524 |
t:= t / Distance(Gear^.dX, Gear^.dY); |
525 |
Gear^.dX:= Gear^.dX * t; |
|
526 |
Gear^.dY:= Gear^.dY * t; |
|
527 |
Gear^.X:= Gear^.X + Gear^.dX; |
|
528 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
374 | 529 |
|
530 |
if (GameTicks and $3F) = 0 then |
|
531 |
begin |
|
3080 | 532 |
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBeeTrace); |
374 | 533 |
end; |
534 |
||
4 | 535 |
CheckCollision(Gear); |
351 | 536 |
dec(Gear^.Timer); |
537 |
if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then |
|
4 | 538 |
begin |
2745 | 539 |
StopSound(Gear^.SoundChannel); |
351 | 540 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
4 | 541 |
DeleteGear(Gear); |
542 |
end; |
|
543 |
end; |
|
544 |
||
3080 | 545 |
procedure doStepBee(Gear: PGear); |
4 | 546 |
begin |
547 |
AllInactive:= false; |
|
351 | 548 |
Gear^.X:= Gear^.X + Gear^.dX; |
549 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
550 |
Gear^.dY:= Gear^.dY + cGravity; |
|
4 | 551 |
CheckCollision(Gear); |
351 | 552 |
if (Gear^.State and gstCollision) <> 0 then |
4 | 553 |
begin |
351 | 554 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
4 | 555 |
DeleteGear(Gear); |
556 |
exit |
|
557 |
end; |
|
351 | 558 |
dec(Gear^.Timer); |
559 |
if Gear^.Timer = 0 then |
|
4 | 560 |
begin |
3080 | 561 |
Gear^.SoundChannel:= LoopSound(sndBee); |
351 | 562 |
Gear^.Timer:= 5000; |
3080 | 563 |
Gear^.doStep:= @doStepBeeWork |
4 | 564 |
end; |
565 |
end; |
|
566 |
||
567 |
//////////////////////////////////////////////////////////////////////////////// |
|
876 | 568 |
procedure doStepShotIdle(Gear: PGear); |
569 |
begin |
|
570 |
AllInactive:= false; |
|
571 |
inc(Gear^.Timer); |
|
572 |
if Gear^.Timer > 75 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
573 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
574 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
575 |
AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
576 |
end |
876 | 577 |
end; |
578 |
||
4 | 579 |
procedure doStepShotgunShot(Gear: PGear); |
580 |
var i: LongWord; |
|
2828 | 581 |
shell: PVisualGear; |
4 | 582 |
begin |
583 |
AllInactive:= false; |
|
876 | 584 |
|
585 |
if ((Gear^.State and gstAnimation) = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
586 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
587 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
588 |
if Gear^.Timer = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
589 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
590 |
PlaySound(sndShotgunFire); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
591 |
shell:= AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell); |
2858 | 592 |
if shell <> nil then |
593 |
begin |
|
594 |
shell^.dX:= gear^.dX / -4; |
|
595 |
shell^.dY:= gear^.dY / -4; |
|
596 |
shell^.Frame:= 0 |
|
597 |
end; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
598 |
Gear^.State:= Gear^.State or gstAnimation |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
599 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
600 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
601 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
602 |
else inc(Gear^.Timer); |
876 | 603 |
|
4 | 604 |
i:= 200; |
605 |
repeat |
|
351 | 606 |
Gear^.X:= Gear^.X + Gear^.dX; |
607 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
4 | 608 |
CheckCollision(Gear); |
351 | 609 |
if (Gear^.State and gstCollision) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
610 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
611 |
Gear^.X:= Gear^.X + Gear^.dX * 8; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
612 |
Gear^.Y:= Gear^.Y + Gear^.dY * 8; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
613 |
ShotgunShot(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
614 |
Gear^.doStep:= @doStepShotIdle; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
615 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
616 |
end; |
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
617 |
|
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
618 |
CheckGearDrowning(Gear); |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
619 |
if (Gear^.State and gstDrowning) <> 0 then |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
620 |
begin |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
621 |
Gear^.doStep:= @doStepShotIdle; |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
622 |
exit |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
623 |
end; |
4 | 624 |
dec(i) |
625 |
until i = 0; |
|
1760 | 626 |
if (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0) or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
627 |
Gear^.doStep:= @doStepShotIdle |
4 | 628 |
end; |
629 |
||
630 |
//////////////////////////////////////////////////////////////////////////////// |
|
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
631 |
procedure doStepBulletWork(Gear: PGear); |
38 | 632 |
var i, x, y: LongWord; |
351 | 633 |
oX, oY: hwFloat; |
38 | 634 |
begin |
635 |
AllInactive:= false; |
|
876 | 636 |
inc(Gear^.Timer); |
37 | 637 |
i:= 80; |
351 | 638 |
oX:= Gear^.X; |
639 |
oY:= Gear^.Y; |
|
37 | 640 |
repeat |
351 | 641 |
Gear^.X:= Gear^.X + Gear^.dX; |
642 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
643 |
x:= hwRound(Gear^.X); |
|
644 |
y:= hwRound(Gear^.Y); |
|
1753 | 645 |
if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) |
351 | 646 |
and (Land[y, x] <> 0) then inc(Gear^.Damage); |
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
647 |
if Gear^.Damage > 5 then |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
648 |
if Gear^.Ammo^.AmmoType = amDEagle then |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
649 |
AmmoShove(Gear, 7, 20) |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
650 |
else |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
651 |
AmmoShove(Gear, Gear^.Timer, 20); |
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
652 |
CheckGearDrowning(Gear); |
38 | 653 |
dec(i) |
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
654 |
until (i = 0) or (Gear^.Damage > Gear^.Health) or ((Gear^.State and gstDrowning) <> 0); |
351 | 655 |
if Gear^.Damage > 0 then |
37 | 656 |
begin |
351 | 657 |
DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 82 - i, 1); |
658 |
dec(Gear^.Health, Gear^.Damage); |
|
659 |
Gear^.Damage:= 0 |
|
37 | 660 |
end; |
2994
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
661 |
if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
662 |
begin |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
663 |
for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
664 |
begin |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
665 |
if Random(6) = 0 then |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
666 |
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBubble); |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
667 |
Gear^.X:= Gear^.X + Gear^.dX; |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
668 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
669 |
end; |
7ae3067546f2
Palewolf adds bubbles and splashes when firing bullets into the water
nemo
parents:
2989
diff
changeset
|
670 |
end; |
1760 | 671 |
|
672 |
if (Gear^.Health <= 0) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
673 |
or (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
674 |
or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
675 |
begin |
2087 | 676 |
if (Gear^.Kind = gtSniperRifleShot) and ((GameFlags and gfLaserSight) = 0) then cLaserSighting:= false; |
2608 | 677 |
if (Gear^.Ammo^.NumPerTurn <= CurrentHedgehog^.MultiShootAttacks) and |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
678 |
((GameFlags and gfArtillery) = 0) then cArtillery:= false; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
679 |
Gear^.doStep:= @doStepShotIdle |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
680 |
end; |
37 | 681 |
end; |
682 |
||
559 | 683 |
procedure doStepDEagleShot(Gear: PGear); |
684 |
begin |
|
2745 | 685 |
PlaySound(sndGun); |
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
686 |
Gear^.doStep:= @doStepBulletWork |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
687 |
end; |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
688 |
|
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
689 |
procedure doStepSniperRifleShot(Gear: PGear); |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
690 |
var HHGear: PGear; |
2828 | 691 |
shell: PVisualGear; |
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
692 |
begin |
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
693 |
cArtillery:= true; |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
694 |
HHGear:=PHedgehog(Gear^.Hedgehog)^.Gear; |
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
695 |
HHGear^.State:= HHGear^.State or gstNotKickable; |
2033 | 696 |
HedgehogChAngle(HHGear); |
2220 | 697 |
if not cLaserSighting then // game does not have default laser sight. turn it on and give them a chance to aim |
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
698 |
begin |
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2017
diff
changeset
|
699 |
cLaserSighting:= true; |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
700 |
HHGear^.Message:= 0; |
2052 | 701 |
if(HHGear^.Angle - 32 >= 0) then dec(HHGear^.Angle,32) |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
702 |
end; |
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
703 |
|
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
704 |
if (HHGear^.Message and gm_Attack) <> 0 then |
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
705 |
begin |
2828 | 706 |
shell:= AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell); |
2859 | 707 |
if shell <> nil then |
708 |
begin |
|
709 |
shell^.dX:= gear^.dX / -2; |
|
710 |
shell^.dY:= gear^.dY / -2; |
|
711 |
shell^.Frame:= 1 |
|
712 |
end; |
|
2828 | 713 |
Gear^.State:= Gear^.State or gstAnimation; |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
714 |
Gear^.dX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _0_5; |
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
715 |
Gear^.dY:= -AngleCos(HHGear^.Angle) * _0_5; |
2745 | 716 |
PlaySound(sndGun); |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
717 |
Gear^.doStep:= @doStepBulletWork; |
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
718 |
end |
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
719 |
else |
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2029
diff
changeset
|
720 |
if (GameTicks mod 32) = 0 then |
2376 | 721 |
if (GameTicks mod 4096) < 2048 then |
2052 | 722 |
begin |
723 |
if(HHGear^.Angle + 1 <= cMaxAngle) then inc(HHGear^.Angle) |
|
724 |
end |
|
725 |
else |
|
726 |
if(HHGear^.Angle - 1 >= 0) then dec(HHGear^.Angle); |
|
2024
2985f3bd18b7
Disable long jump in artillery mode, make snipre rifle single shot
nemo
parents:
2023
diff
changeset
|
727 |
|
2376 | 728 |
if (TurnTimeLeft > 0) then |
2058 | 729 |
dec(TurnTimeLeft) |
730 |
else |
|
731 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
732 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
733 |
AfterAttack |
2058 | 734 |
end; |
559 | 735 |
end; |
736 |
||
37 | 737 |
//////////////////////////////////////////////////////////////////////////////// |
4 | 738 |
procedure doStepActionTimer(Gear: PGear); |
739 |
begin |
|
351 | 740 |
dec(Gear^.Timer); |
741 |
case Gear^.Kind of |
|
83 | 742 |
gtATStartGame: begin |
4 | 743 |
AllInactive:= false; |
351 | 744 |
if Gear^.Timer = 0 then |
3107 | 745 |
begin |
2619 | 746 |
AddCaption(trmsg[sidStartFight], cWhiteColor, capgrpGameState); |
3107 | 747 |
end |
4 | 748 |
end; |
83 | 749 |
gtATSmoothWindCh: begin |
351 | 750 |
if Gear^.Timer = 0 then |
6 | 751 |
begin |
351 | 752 |
if WindBarWidth < Gear^.Tag then inc(WindBarWidth) |
753 |
else if WindBarWidth > Gear^.Tag then dec(WindBarWidth); |
|
754 |
if WindBarWidth <> Gear^.Tag then Gear^.Timer:= 10; |
|
83 | 755 |
end |
756 |
end; |
|
757 |
gtATFinishGame: begin |
|
758 |
AllInactive:= false; |
|
3107 | 759 |
if Gear^.Timer = 1000 then |
760 |
begin |
|
761 |
ScreenFade:= sfToBlack; |
|
762 |
ScreenFadeValue:= 0; |
|
763 |
ScreenFadeSpeed:= 1; |
|
764 |
end; |
|
351 | 765 |
if Gear^.Timer = 0 then |
113 | 766 |
begin |
767 |
SendIPC('N'); |
|
324
f4c109c82a0c
Don't show game stats in case of interrupted by command '/quit' game
unc0rr
parents:
306
diff
changeset
|
768 |
SendIPC('q'); |
83 | 769 |
GameState:= gsExit |
113 | 770 |
end |
6 | 771 |
end; |
4 | 772 |
end; |
351 | 773 |
if Gear^.Timer = 0 then DeleteGear(Gear) |
4 | 774 |
end; |
775 |
||
776 |
//////////////////////////////////////////////////////////////////////////////// |
|
777 |
procedure doStepPickHammerWork(Gear: PGear); |
|
371 | 778 |
var i, ei: LongInt; |
4 | 779 |
HHGear: PGear; |
780 |
begin |
|
70 | 781 |
AllInactive:= false; |
351 | 782 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
783 |
dec(Gear^.Timer); |
|
784 |
if (Gear^.Timer = 0)or((Gear^.Message and gm_Destroy) <> 0)or((HHGear^.State and gstHHDriven) = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
785 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
786 |
StopSound(Gear^.SoundChannel); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
787 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
788 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
789 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
790 |
end; |
845 | 791 |
|
422 | 792 |
if (Gear^.Timer mod 33) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
793 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
794 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
795 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y) + 7, 6, EXPLDontDraw); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
796 |
HHGear^.State:= HHGear^.State and not gstNoDamage |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
797 |
end; |
422 | 798 |
|
799 |
if (Gear^.Timer mod 47) = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
800 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
801 |
i:= hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
802 |
ei:= hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
803 |
while i <= ei do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
804 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
805 |
DrawExplosion(i, hwRound(Gear^.Y) + 3, 3); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
806 |
inc(i, 1) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
807 |
end; |
2331
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
808 |
|
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
809 |
if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9), COLOR_INDESTRUCTIBLE) then |
2090
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
810 |
begin |
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
811 |
Gear^.X:= Gear^.X + Gear^.dX; |
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
812 |
Gear^.Y:= Gear^.Y + _1_9; |
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
813 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
814 |
SetAllHHToActive; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
815 |
end; |
4 | 816 |
if TestCollisionYwithGear(Gear, 1) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
817 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
818 |
Gear^.dY:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
819 |
SetLittle(HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
820 |
HHGear^.dY:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
821 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
822 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
823 |
Gear^.dY:= Gear^.dY + cGravity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
824 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
825 |
if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer:= 1 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
826 |
end; |
4 | 827 |
|
351 | 828 |
Gear^.X:= Gear^.X + HHGear^.dX; |
829 |
HHGear^.X:= Gear^.X; |
|
498 | 830 |
HHGear^.Y:= Gear^.Y - int2hwFloat(cHHRadius); |
4 | 831 |
|
351 | 832 |
if (Gear^.Message and gm_Attack) <> 0 then |
833 |
if (Gear^.State and gsttmpFlag) <> 0 then Gear^.Timer:= 1 else else |
|
834 |
if (Gear^.State and gsttmpFlag) = 0 then Gear^.State:= Gear^.State or gsttmpFlag; |
|
835 |
if ((Gear^.Message and gm_Left) <> 0) then Gear^.dX:= - _0_3 else |
|
836 |
if ((Gear^.Message and gm_Right) <> 0) then Gear^.dX:= _0_3 |
|
498 | 837 |
else Gear^.dX:= _0; |
4 | 838 |
end; |
839 |
||
840 |
procedure doStepPickHammer(Gear: PGear); |
|
371 | 841 |
var i, y: LongInt; |
4 | 842 |
ar: TRangeArray; |
911
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
843 |
HHGear: PGear; |
4 | 844 |
begin |
845 |
i:= 0; |
|
911
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
846 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
847 |
|
498 | 848 |
y:= hwRound(Gear^.Y) - cHHRadius * 2; |
351 | 849 |
while y < hwRound(Gear^.Y) do |
4 | 850 |
begin |
371 | 851 |
ar[i].Left := hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2)); |
852 |
ar[i].Right:= hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2)); |
|
4 | 853 |
inc(y, 2); |
854 |
inc(i) |
|
855 |
end; |
|
911
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
856 |
|
498 | 857 |
DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius * 2, 2, Pred(i)); |
911
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
858 |
Gear^.dY:= HHGear^.dY; |
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
859 |
DeleteCI(HHGear); |
b709fe13ed69
Fix issue with hedgehog on top of the hedgehog with pickhammer
unc0rr
parents:
883
diff
changeset
|
860 |
|
2745 | 861 |
Gear^.SoundChannel:= LoopSound(sndPickhammer); |
4 | 862 |
doStepPickHammerWork(Gear); |
351 | 863 |
Gear^.doStep:= @doStepPickHammerWork |
4 | 864 |
end; |
865 |
||
866 |
//////////////////////////////////////////////////////////////////////////////// |
|
371 | 867 |
var BTPrevAngle, BTSteps: LongInt; |
302 | 868 |
|
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
869 |
procedure doStepBlowTorchWork(Gear: PGear); |
302 | 870 |
var HHGear: PGear; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
871 |
b: boolean; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
872 |
prevX: LongInt; |
302 | 873 |
begin |
874 |
AllInactive:= false; |
|
351 | 875 |
dec(Gear^.Timer); |
876 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
877 |
|
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
878 |
HedgehogChAngle(HHGear); |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
879 |
|
305 | 880 |
b:= false; |
881 |
||
371 | 882 |
if abs(LongInt(HHGear^.Angle) - BTPrevAngle) > 7 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
883 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
884 |
Gear^.dX:= SignAs(AngleSin(HHGear^.Angle) * _0_5, HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
885 |
Gear^.dY:= AngleCos(HHGear^.Angle) * ( - _0_5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
886 |
BTPrevAngle:= HHGear^.Angle; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
887 |
b:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
888 |
end; |
1528 | 889 |
|
890 |
if ((HHGear^.State and gstMoving) <> 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
891 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
892 |
doStepHedgehogMoving(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
893 |
if (HHGear^.State and gstHHDriven) = 0 then Gear^.Timer:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
894 |
end; |
305 | 895 |
|
351 | 896 |
if Gear^.Timer mod cHHStepTicks = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
897 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
898 |
b:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
899 |
if Gear^.dX.isNegative then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
900 |
HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Left |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
901 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
902 |
HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Right; |
305 | 903 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
904 |
if ((HHGear^.State and gstMoving) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
905 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
906 |
HHGear^.State:= HHGear^.State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
907 |
prevX:= hwRound(HHGear^.X); |
2376 | 908 |
|
909 |
// why the call to HedgehogStep then a further increment of X? |
|
910 |
if (prevX = hwRound(HHGear^.X)) and |
|
2331
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
911 |
CheckLandValue(hwRound(HHGear^.X + SignAs(_6, HHGear^.dX)), hwRound(HHGear^.Y), COLOR_INDESTRUCTIBLE) then HedgehogStep(HHGear); |
2376 | 912 |
|
913 |
if (prevX = hwRound(HHGear^.X)) and |
|
2331
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
914 |
CheckLandValue(hwRound(HHGear^.X + SignAs(_6, HHGear^.dX)), hwRound(HHGear^.Y), COLOR_INDESTRUCTIBLE) then HHGear^.X:= HHGear^.X + SignAs(_1, HHGear^.dX); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
915 |
HHGear^.State:= HHGear^.State or gstAttacking |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
916 |
end; |
305 | 917 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
918 |
inc(BTSteps); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
919 |
if BTSteps = 7 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
920 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
921 |
BTSteps:= 0; |
2331
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
922 |
if CheckLandValue(hwRound(HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC) + SignAs(_6,Gear^.dX)), hwRound(HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC)), COLOR_INDESTRUCTIBLE) then |
2090
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
923 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
924 |
Gear^.X:= HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
925 |
Gear^.Y:= HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC); |
2090
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
926 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
927 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
928 |
AmmoShove(Gear, 2, 15); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
929 |
HHGear^.State:= HHGear^.State and not gstNoDamage |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
930 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
931 |
end; |
305 | 932 |
|
933 |
if b then |
|
498 | 934 |
DrawTunnel(HHGear^.X - Gear^.dX * cHHRadius, HHGear^.Y - _4 - Gear^.dY * cHHRadius + hwAbs(Gear^.dY) * 7, |
351 | 935 |
Gear^.dX, Gear^.dY, |
1501 | 936 |
cHHRadius * 5, cHHRadius * 2 + 7); |
305 | 937 |
|
2090
4edb0d49a42d
prevent unc0rr from getting clever with jackhammer too. bring blowtorch into line with the other - should be more fun anyway
nemo
parents:
2089
diff
changeset
|
938 |
if (Gear^.Timer = 0) or ((HHGear^.Message and gm_Attack) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
939 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
940 |
HHGear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
941 |
HHGear^.State:= HHGear^.State and (not gstNotKickable); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
942 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
943 |
AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
944 |
end |
302 | 945 |
end; |
946 |
||
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
947 |
procedure doStepBlowTorch(Gear: PGear); |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
948 |
var HHGear: PGear; |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
949 |
begin |
371 | 950 |
BTPrevAngle:= High(LongInt); |
305 | 951 |
BTSteps:= 0; |
351 | 952 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
953 |
HHGear^.Message:= 0; |
|
1528 | 954 |
HHGear^.State:= HHGear^.State or gstNotKickable; |
351 | 955 |
Gear^.doStep:= @doStepBlowTorchWork |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
956 |
end; |
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
957 |
|
302 | 958 |
//////////////////////////////////////////////////////////////////////////////// |
959 |
||
1781 | 960 |
procedure doStepRope(Gear: PGear); forward; |
961 |
||
962 |
procedure doStepRopeAfterAttack(Gear: PGear); |
|
963 |
var HHGear: PGear; |
|
964 |
begin |
|
965 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
966 |
if ((HHGear^.State and gstHHDriven) = 0) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
967 |
or (CheckGearDrowning(HHGear)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
968 |
or TestCollisionYwithGear(HHGear, 1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
969 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
970 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
971 |
isCursorVisible:= false; |
3299 | 972 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
973 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
974 |
end; |
1781 | 975 |
|
1785 | 976 |
HedgehogChAngle(HHGear); |
977 |
||
2283 | 978 |
if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX); |
2029 | 979 |
|
1781 | 980 |
if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY:= _0; |
981 |
HHGear^.X:= HHGear^.X + HHGear^.dX; |
|
982 |
HHGear^.Y:= HHGear^.Y + HHGear^.dY; |
|
983 |
HHGear^.dY:= HHGear^.dY + cGravity; |
|
984 |
||
985 |
if (Gear^.Message and gm_Attack) <> 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
986 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
987 |
Gear^.X:= HHGear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
988 |
Gear^.Y:= HHGear^.Y; |
1964 | 989 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
990 |
ApplyAngleBounds(PHedgehog(Gear^.Hedgehog)^, amRope); |
2376 | 991 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
992 |
Gear^.dX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
993 |
Gear^.dY:= -AngleCos(HHGear^.Angle); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
994 |
Gear^.Friction:= _450; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
995 |
Gear^.Elasticity:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
996 |
Gear^.State:= Gear^.State and not gsttmpflag; |
3320 | 997 |
Gear^.doStep:= @doStepRope; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
998 |
end |
1781 | 999 |
end; |
1000 |
||
4 | 1001 |
procedure doStepRopeWork(Gear: PGear); |
1002 |
var HHGear: PGear; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1003 |
len, tx, ty, nx, ny, ropeDx, ropeDy, mdX, mdY: hwFloat; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1004 |
lx, ly: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1005 |
haveCollision, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1006 |
haveDivided: boolean; |
4 | 1007 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1008 |
procedure DeleteMe; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1009 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1010 |
with HHGear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1011 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1012 |
Message:= Message and not gm_Attack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1013 |
State:= (State or gstMoving) and not gstWinner; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1014 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1015 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1016 |
end; |
4 | 1017 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1018 |
procedure WaitCollision; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1019 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1020 |
with HHGear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1021 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1022 |
Message:= Message and not gm_Attack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1023 |
State:= State or gstMoving; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1024 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1025 |
RopePoints.Count:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1026 |
Gear^.Elasticity:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1027 |
Gear^.doStep:= @doStepRopeAfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1028 |
end; |
1781 | 1029 |
|
4 | 1030 |
begin |
351 | 1031 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
108 | 1032 |
|
351 | 1033 |
if ((HHGear^.State and gstHHDriven) = 0) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1034 |
or (CheckGearDrowning(HHGear)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1035 |
begin |
3320 | 1036 |
PlaySound(sndRopeRelease); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1037 |
DeleteMe; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1038 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1039 |
end; |
928
b9064b48b001
Some preparation work for attacking from rope, parachute and etc.
unc0rr
parents:
925
diff
changeset
|
1040 |
|
351 | 1041 |
if (Gear^.Message and gm_Left <> 0) then HHGear^.dX:= HHGear^.dX - _0_0002 else |
1042 |
if (Gear^.Message and gm_Right <> 0) then HHGear^.dX:= HHGear^.dX + _0_0002; |
|
4 | 1043 |
|
351 | 1044 |
if not TestCollisionYwithGear(HHGear, 1) then HHGear^.dY:= HHGear^.dY + cGravity; |
4 | 1045 |
|
1652 | 1046 |
ropeDx:= HHGear^.X - Gear^.X; // vector between hedgehog and rope attaching point |
1047 |
ropeDy:= HHGear^.Y - Gear^.Y; |
|
1048 |
||
1049 |
mdX:= ropeDx + HHGear^.dX; |
|
1050 |
mdY:= ropeDy + HHGear^.dY; |
|
1051 |
len:= _1 / Distance(mdX, mdY); |
|
1052 |
mdX:= mdX * len; // rope vector plus hedgehog direction vector normalized |
|
1053 |
mdY:= mdY * len; |
|
1054 |
||
1055 |
Gear^.dX:= mdX; // for visual purposes only |
|
1056 |
Gear^.dY:= mdY; |
|
1057 |
||
1058 |
///// |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1059 |
tx:= HHGear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1060 |
ty:= HHGear^.Y; |
4 | 1061 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1062 |
if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Elasticity < Gear^.Friction) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1063 |
if not (TestCollisionXwithGear(HHGear, hwSign(ropeDx)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1064 |
or TestCollisionYwithGear(HHGear, hwSign(ropeDy))) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1065 |
Gear^.Elasticity:= Gear^.Elasticity + _0_3; |
1652 | 1066 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1067 |
if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Elasticity > _30) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1068 |
if not (TestCollisionXwithGear(HHGear, -hwSign(ropeDx)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1069 |
or TestCollisionYwithGear(HHGear, -hwSign(ropeDy))) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1070 |
Gear^.Elasticity:= Gear^.Elasticity - _0_3; |
1652 | 1071 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1072 |
HHGear^.X:= Gear^.X + mdX * Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1073 |
HHGear^.Y:= Gear^.Y + mdY * Gear^.Elasticity; |
1652 | 1074 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1075 |
HHGear^.dX:= HHGear^.X - tx; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1076 |
HHGear^.dY:= HHGear^.Y - ty; |
1652 | 1077 |
//// |
1078 |
||
1554 | 1079 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1080 |
haveDivided:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1081 |
// check whether rope needs dividing |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1082 |
len:= _1 / Distance(ropeDx, ropeDy); // old rope pos |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1083 |
nx:= ropeDx * len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1084 |
ny:= ropeDy * len; |
2376 | 1085 |
|
3303
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1086 |
len:= Gear^.Elasticity - _5; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1087 |
while len > _3 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1088 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1089 |
lx:= hwRound(Gear^.X + mdX * len); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1090 |
ly:= hwRound(Gear^.Y + mdY * len); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1091 |
if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1092 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1093 |
with RopePoints.ar[RopePoints.Count] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1094 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1095 |
X:= Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1096 |
Y:= Gear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1097 |
if RopePoints.Count = 0 then RopePoints.HookAngle:= DxDy2Angle(Gear^.dY, Gear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1098 |
b:= (nx * HHGear^.dY) > (ny * HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1099 |
dLen:= len |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1100 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1101 |
with RopePoints.rounded[RopePoints.Count] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1102 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1103 |
X:= hwRound(Gear^.X); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1104 |
Y:= hwRound(Gear^.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1105 |
end; |
2376 | 1106 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1107 |
Gear^.X:= Gear^.X + nx * len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1108 |
Gear^.Y:= Gear^.Y + ny * len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1109 |
inc(RopePoints.Count); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1110 |
TryDo(RopePoints.Count <= MAXROPEPOINTS, 'Rope points overflow', true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1111 |
Gear^.Elasticity:= Gear^.Elasticity - len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1112 |
Gear^.Friction:= Gear^.Friction - len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1113 |
haveDivided:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1114 |
break |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1115 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1116 |
len:= len - _0_3 // should be the same as increase step |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1117 |
end; |
1553
77f326c7f0ef
The best final fix for rope stucking in the ground bug
unc0rr
parents:
1552
diff
changeset
|
1118 |
|
77f326c7f0ef
The best final fix for rope stucking in the ground bug
unc0rr
parents:
1552
diff
changeset
|
1119 |
if not haveDivided then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1120 |
if RopePoints.Count > 0 then // check whether the last dividing point could be removed |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1121 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1122 |
tx:= RopePoints.ar[Pred(RopePoints.Count)].X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1123 |
ty:= RopePoints.ar[Pred(RopePoints.Count)].Y; |
3303
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1124 |
mdX:= tx - Gear^.X; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1125 |
mdY:= ty - Gear^.Y; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1126 |
if RopePoints.ar[Pred(RopePoints.Count)].b xor (mdX * (ty - HHGear^.Y) > (tx - HHGear^.X) * mdY) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1127 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1128 |
dec(RopePoints.Count); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1129 |
Gear^.X:= RopePoints.ar[RopePoints.Count].X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1130 |
Gear^.Y:= RopePoints.ar[RopePoints.Count].Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1131 |
Gear^.Elasticity:= Gear^.Elasticity + RopePoints.ar[RopePoints.Count].dLen; |
3303
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1132 |
Gear^.Friction:= Gear^.Friction + RopePoints.ar[RopePoints.Count].dLen; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1133 |
|
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1134 |
// restore hog position |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1135 |
len:= _1 / Distance(mdX, mdY); |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1136 |
mdX:= mdX * len; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1137 |
mdY:= mdY * len; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1138 |
|
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1139 |
HHGear^.X:= Gear^.X - mdX * Gear^.Elasticity; |
397a8f048bb3
with this patch I'm unable to make rope stuck in land
unc0rr
parents:
3299
diff
changeset
|
1140 |
HHGear^.Y:= Gear^.Y - mdY * Gear^.Elasticity; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1141 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1142 |
end; |
4 | 1143 |
|
1551
c747e69f98f3
Add some speed to hedgehog on rope when colliding with land and pressing left or right arrow key
unc0rr
parents:
1548
diff
changeset
|
1144 |
haveCollision:= false; |
351 | 1145 |
if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1146 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1147 |
HHGear^.dX:= -_0_6 * HHGear^.dX; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1148 |
haveCollision:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1149 |
end; |
351 | 1150 |
if TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1151 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1152 |
HHGear^.dY:= -_0_6 * HHGear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1153 |
haveCollision:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1154 |
end; |
1551
c747e69f98f3
Add some speed to hedgehog on rope when colliding with land and pressing left or right arrow key
unc0rr
parents:
1548
diff
changeset
|
1155 |
|
1579
2f581b1f289e
More bouncy rope, but you need to press vertical arrow and horizontal keys at once to bounce
unc0rr
parents:
1573
diff
changeset
|
1156 |
if haveCollision |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1157 |
and (Gear^.Message and (gm_Left or gm_Right) <> 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1158 |
and (Gear^.Message and (gm_Up or gm_Down) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1159 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1160 |
HHGear^.dX:= SignAs(hwAbs(HHGear^.dX) + _0_2, HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1161 |
HHGear^.dY:= SignAs(hwAbs(HHGear^.dY) + _0_2, HHGear^.dY) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1162 |
end; |
4 | 1163 |
|
789 | 1164 |
len:= Distance(HHGear^.dX, HHGear^.dY); |
940 | 1165 |
if len > _0_8 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1166 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1167 |
len:= _0_8 / len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1168 |
HHGear^.dX:= HHGear^.dX * len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1169 |
HHGear^.dY:= HHGear^.dY * len; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1170 |
end; |
789 | 1171 |
|
351 | 1172 |
if (Gear^.Message and gm_Attack) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1173 |
if (Gear^.State and gsttmpFlag) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1174 |
with PHedgehog(Gear^.Hedgehog)^ do |
3320 | 1175 |
begin |
1176 |
PlaySound(sndRopeRelease); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1177 |
if Ammo^[CurSlot, CurAmmo].AmmoType <> amParachute then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1178 |
WaitCollision |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1179 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1180 |
DeleteMe |
3320 | 1181 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1182 |
else |
1504 | 1183 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1184 |
if (Gear^.State and gsttmpFlag) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1185 |
Gear^.State:= Gear^.State or gsttmpFlag; |
4 | 1186 |
end; |
1187 |
||
1188 |
procedure doStepRopeAttach(Gear: PGear); |
|
1189 |
var HHGear: PGear; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1190 |
tx, ty, tt: hwFloat; |
1781 | 1191 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1192 |
procedure RemoveFromAmmo; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1193 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1194 |
if (Gear^.State and gstAttacked) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1195 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1196 |
OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1197 |
Gear^.State:= Gear^.State or gstAttacked |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1198 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1199 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1200 |
end; |
2376 | 1201 |
|
4 | 1202 |
begin |
351 | 1203 |
Gear^.X:= Gear^.X - Gear^.dX; |
1204 |
Gear^.Y:= Gear^.Y - Gear^.dY; |
|
498 | 1205 |
Gear^.Elasticity:= Gear^.Elasticity + _1; |
2524
0b075d38fee5
Fix bug when rope goes through land when hedgehog is sliding
unc0rr
parents:
2515
diff
changeset
|
1206 |
|
351 | 1207 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
517 | 1208 |
DeleteCI(HHGear); |
2524
0b075d38fee5
Fix bug when rope goes through land when hedgehog is sliding
unc0rr
parents:
2515
diff
changeset
|
1209 |
|
542 | 1210 |
if (HHGear^.State and gstMoving) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1211 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1212 |
if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1213 |
if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY:= _0; |
2376 | 1214 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1215 |
HHGear^.X:= HHGear^.X + HHGear^.dX; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1216 |
Gear^.X:= Gear^.X + HHGear^.dX; |
2281
3217f0d8c420
Fix hedgehog stopping to slide when throwing rope (not tested)
unc0rr
parents:
2280
diff
changeset
|
1217 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1218 |
if TestCollisionYwithGear(HHGear, 1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1219 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1220 |
CheckHHDamage(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1221 |
HHGear^.dY:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1222 |
//HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1223 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1224 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1225 |
HHGear^.Y:= HHGear^.Y + HHGear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1226 |
Gear^.Y:= Gear^.Y + HHGear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1227 |
HHGear^.dY:= HHGear^.dY + cGravity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1228 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1229 |
|
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1230 |
tt:= Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1231 |
tx:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1232 |
ty:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1233 |
while tt > _20 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1234 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1235 |
if TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1236 |
or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1237 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1238 |
Gear^.X:= Gear^.X + tx; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1239 |
Gear^.Y:= Gear^.Y + ty; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1240 |
Gear^.Elasticity:= tt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1241 |
Gear^.doStep:= @doStepRopeWork; |
3320 | 1242 |
PlaySound(sndRopeAttach); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1243 |
with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump); |
2376 | 1244 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1245 |
RemoveFromAmmo; |
2376 | 1246 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1247 |
tt:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1248 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1249 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1250 |
tx:= tx + Gear^.dX + Gear^.dX; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1251 |
ty:= ty + Gear^.dY + Gear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1252 |
tt:= tt - _2; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1253 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1254 |
end; |
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1255 |
|
4 | 1256 |
CheckCollision(Gear); |
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1257 |
|
351 | 1258 |
if (Gear^.State and gstCollision) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1259 |
if Gear^.Elasticity < _10 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1260 |
Gear^.Elasticity:= _10000 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1261 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1262 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1263 |
Gear^.doStep:= @doStepRopeWork; |
3320 | 1264 |
PlaySound(sndRopeAttach); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1265 |
with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump); |
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1266 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1267 |
RemoveFromAmmo; |
2376 | 1268 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1269 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1270 |
end; |
4 | 1271 |
|
1634
486a89f0e843
Fix rope bug which allowed hedgehog to go into land
unc0rr
parents:
1633
diff
changeset
|
1272 |
if (Gear^.Elasticity > Gear^.Friction) |
486a89f0e843
Fix rope bug which allowed hedgehog to go into land
unc0rr
parents:
1633
diff
changeset
|
1273 |
or ((Gear^.Message and gm_Attack) = 0) |
2280 | 1274 |
or ((HHGear^.State and gstHHDriven) = 0) |
1634
486a89f0e843
Fix rope bug which allowed hedgehog to go into land
unc0rr
parents:
1633
diff
changeset
|
1275 |
or (HHGear^.Damage > 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1276 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1277 |
with PHedgehog(Gear^.Hedgehog)^.Gear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1278 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1279 |
State:= State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1280 |
Message:= Message and not gm_Attack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1281 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1282 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1283 |
end |
4 | 1284 |
end; |
1285 |
||
1286 |
procedure doStepRope(Gear: PGear); |
|
1287 |
begin |
|
351 | 1288 |
Gear^.dX:= - Gear^.dX; |
1289 |
Gear^.dY:= - Gear^.dY; |
|
3320 | 1290 |
Gear^.doStep:= @doStepRopeAttach; |
1291 |
PlaySound(sndRopeShot) |
|
4 | 1292 |
end; |
1293 |
||
1294 |
//////////////////////////////////////////////////////////////////////////////// |
|
1295 |
procedure doStepSmokeTrace(Gear: PGear); |
|
1296 |
begin |
|
351 | 1297 |
inc(Gear^.Timer); |
1298 |
if Gear^.Timer > 64 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1299 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1300 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1301 |
dec(Gear^.State) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1302 |
end; |
351 | 1303 |
Gear^.dX:= Gear^.dX + cWindSpeed; |
1304 |
Gear^.X:= Gear^.X + Gear^.dX; |
|
1305 |
if Gear^.State = 0 then DeleteGear(Gear) |
|
4 | 1306 |
end; |
9 | 1307 |
|
1308 |
//////////////////////////////////////////////////////////////////////////////// |
|
1045 | 1309 |
procedure doStepExplosionWork(Gear: PGear); |
9 | 1310 |
begin |
351 | 1311 |
inc(Gear^.Timer); |
1312 |
if Gear^.Timer > 75 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1313 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1314 |
inc(Gear^.State); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1315 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1316 |
if Gear^.State > 5 then DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1317 |
end; |
9 | 1318 |
end; |
10 | 1319 |
|
1045 | 1320 |
procedure doStepExplosion(Gear: PGear); |
1321 |
var i: LongWord; |
|
1322 |
begin |
|
1047 | 1323 |
for i:= 0 to 31 do AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFire); |
1324 |
for i:= 0 to 8 do AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtExplPart); |
|
1325 |
for i:= 0 to 8 do AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtExplPart2); |
|
1045 | 1326 |
Gear^.doStep:= @doStepExplosionWork |
1327 |
end; |
|
1328 |
||
10 | 1329 |
//////////////////////////////////////////////////////////////////////////////// |
1330 |
procedure doStepMine(Gear: PGear); |
|
1331 |
begin |
|
542 | 1332 |
if (Gear^.State and gstMoving) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1333 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1334 |
DeleteCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1335 |
doStepFallingGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1336 |
if (Gear^.State and gstMoving) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1337 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1338 |
AddGearCI(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1339 |
Gear^.dX:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1340 |
Gear^.dY:= _0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1341 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1342 |
CalcRotationDirAngle(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1343 |
AllInactive:= false |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1344 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1345 |
if ((GameTicks and $3F) = 25) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1346 |
doStepFallingGear(Gear); |
351 | 1347 |
|
2882 | 1348 |
if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1349 |
if ((Gear^.State and gstAttacking) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1350 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1351 |
if ((GameTicks and $1F) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1352 |
if CheckGearNear(Gear, gtHedgehog, 46, 32) <> nil then Gear^.State:= Gear^.State or gstAttacking |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1353 |
end else // gstAttacking <> 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1354 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1355 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1356 |
if (Gear^.Timer and $FF) = 0 then PlaySound(sndMineTick); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1357 |
if Gear^.Timer = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1358 |
begin |
2882 | 1359 |
if ((Gear^.State and gstWait) <> 0) or |
1360 |
(cMineDudPercent = 0) or |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1361 |
(getRandom(100) > cMineDudPercent) then |
2882 | 1362 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1363 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1364 |
DeleteGear(Gear) |
2882 | 1365 |
end |
2886 | 1366 |
else |
1367 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1368 |
AddVisualGear(hwRound(Gear^.X) - 4 + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1369 |
PlaySound(sndVaporize); |
2886 | 1370 |
Gear^.Health:= 0; |
1371 |
end; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1372 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1373 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1374 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1375 |
end else // gsttmpFlag = 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1376 |
if TurnTimeLeft = 0 then Gear^.State:= Gear^.State or gsttmpFlag; |
10 | 1377 |
end; |
57 | 1378 |
|
39 | 1379 |
//////////////////////////////////////////////////////////////////////////////// |
1380 |
procedure doStepDynamite(Gear: PGear); |
|
1381 |
begin |
|
43 | 1382 |
doStepFallingGear(Gear); |
1383 |
AllInactive:= false; |
|
351 | 1384 |
if Gear^.Timer mod 166 = 0 then inc(Gear^.Tag); |
2647 | 1385 |
if Gear^.Timer = 1000 then // might need better timing |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1386 |
makeHogsWorry(Gear^.X, Gear^.Y, 75); |
351 | 1387 |
if Gear^.Timer = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1388 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1389 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1390 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1391 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1392 |
end; |
351 | 1393 |
dec(Gear^.Timer); |
39 | 1394 |
end; |
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
13
diff
changeset
|
1395 |
|
351 | 1396 |
/////////////////////////////////////////////////////////////////////////////// |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1397 |
|
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1398 |
(* |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1399 |
TODO |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1400 |
Increase damage as barrel smokes? |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1401 |
Try tweaking friction some more |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1402 |
*) |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1403 |
procedure doStepRollingBarrel(Gear: PGear); |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1404 |
var i: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1405 |
particle: PVisualGear; |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1406 |
begin |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1407 |
Gear^.State:= Gear^.State or gstAnimation; |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1408 |
if ((Gear^.dX.QWordValue <> 0) or (Gear^.dY.QWordValue <> 0)) then |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1409 |
begin |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1410 |
DeleteCI(Gear); |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1411 |
AllInactive:= false; |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1412 |
if not Gear^.dY.isNegative and (Gear^.dY > _0_03) and TestCollisionYwithGear(Gear, 1) then |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1413 |
begin |
2955
fb361d137524
Tweak to joke in french locale (everyone always fixes the spelling) updated explosive frames from Palewolf, increase explosive fall damage from 30 to 40
nemo
parents:
2948
diff
changeset
|
1414 |
Gear^.State:= Gear^.State or gsttmpFlag; |
3036
c6ba6531cb4b
Make barrels a little more likely to blow up. 25% more damage in fall
nemo
parents:
3032
diff
changeset
|
1415 |
inc(Gear^.Damage, hwRound(Gear^.dY * _50)); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1416 |
for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1417 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1418 |
particle:= AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1419 |
if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5) |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1420 |
end |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1421 |
end |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1422 |
else if not Gear^.dX.isNegative and (Gear^.dX > _0_03) and TestCollisionXwithGear(Gear, 1) then |
3036
c6ba6531cb4b
Make barrels a little more likely to blow up. 25% more damage in fall
nemo
parents:
3032
diff
changeset
|
1423 |
inc(Gear^.Damage, hwRound(Gear^.dX * _50)) |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1424 |
else if Gear^.dY.isNegative and (Gear^.dY < -_0_03) and TestCollisionYwithGear(Gear, -1) then |
3036
c6ba6531cb4b
Make barrels a little more likely to blow up. 25% more damage in fall
nemo
parents:
3032
diff
changeset
|
1425 |
inc(Gear^.Damage, hwRound(Gear^.dY * -_50)) |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1426 |
else if Gear^.dX.isNegative and (Gear^.dX < -_0_03) and TestCollisionXwithGear(Gear, -1) then |
3036
c6ba6531cb4b
Make barrels a little more likely to blow up. 25% more damage in fall
nemo
parents:
3032
diff
changeset
|
1427 |
inc(Gear^.Damage, hwRound(Gear^.dX * -_50)); |
3115 | 1428 |
|
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1429 |
doStepFallingGear(Gear); |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1430 |
CalcRotationDirAngle(Gear); |
3143 | 1431 |
//CheckGearDrowning(Gear) |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1432 |
end |
2963
0f0789204802
This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents:
2955
diff
changeset
|
1433 |
else |
0f0789204802
This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents:
2955
diff
changeset
|
1434 |
begin |
0f0789204802
This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents:
2955
diff
changeset
|
1435 |
Gear^.State:= Gear^.State or gsttmpFlag; |
0f0789204802
This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents:
2955
diff
changeset
|
1436 |
AddGearCI(Gear) |
0f0789204802
This might be all it takes to prevent the desync. needs local/remote testing. Also toggle 2nd barrel state on 0 movement
nemo
parents:
2955
diff
changeset
|
1437 |
end; |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1438 |
(* |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1439 |
Attempt to make a barrel knock itself over an edge. Would need more checks to avoid issues like burn damage |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1440 |
begin |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1441 |
x:= hwRound(Gear^.X); |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1442 |
y:= hwRound(Gear^.Y); |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1443 |
if (((y+1) and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1444 |
if (Land[y+1, x] = 0) then |
2944
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1445 |
begin |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1446 |
if (((y+1) and LAND_HEIGHT_MASK) = 0) and (((x+Gear^.Radius-2) and LAND_WIDTH_MASK) = 0) and (Land[y+1, x+Gear^.Radius-2] = 0) then |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1447 |
Gear^.dX:= -_0_08 |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1448 |
else if (((y+1 and LAND_HEIGHT_MASK)) = 0) and (((x-(Gear^.Radius-2)) and LAND_WIDTH_MASK) = 0) and (Land[y+1, x-(Gear^.Radius-2)] = 0) then |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1449 |
Gear^.dX:= _0_08; |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1450 |
end; |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1451 |
if Gear^.dX.QWordValue = 0 then AddGearCI(Gear) |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1452 |
end; *) |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1453 |
|
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1454 |
if not Gear^.dY.isNegative and (Gear^.dY < _0_001) and TestCollisionYwithGear(Gear, 1) then Gear^.dY:= _0; |
e8a891bf6660
Adjust fall damage again, zero out X/Y to avoid sinking/shivering barrels.
nemo
parents:
2941
diff
changeset
|
1455 |
if hwAbs(Gear^.dX) < _0_001 then Gear^.dX:= _0; |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1456 |
|
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1457 |
if ((Gear^.Health * 100 div cBarrelHealth) < random(90)) and ((GameTicks and $FF) = 0) then |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1458 |
if (cBarrelHealth div Gear^.Health) > 2 then |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1459 |
AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmoke) |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1460 |
else |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1461 |
AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmokeWhite); |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1462 |
dec(Gear^.Health, Gear^.Damage); |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1463 |
Gear^.Damage:= 0; |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1464 |
if Gear^.Health <= 0 then Gear^.doStep:= @doStepCase; // Hand off to doStepCase for the explosion |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1465 |
|
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1466 |
end; |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1467 |
|
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
13
diff
changeset
|
1468 |
procedure doStepCase(Gear: PGear); |
371 | 1469 |
var i, x, y: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1470 |
k: TGearType; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1471 |
exBoom: boolean; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1472 |
dX, dY: HWFloat; |
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
13
diff
changeset
|
1473 |
begin |
2933 | 1474 |
k:= Gear^.Kind; |
2911 | 1475 |
exBoom:= false; |
1476 |
||
351 | 1477 |
if (Gear^.Message and gm_Destroy) > 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1478 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1479 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1480 |
FreeActionsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1481 |
SetAllToActive; // something (hh, mine, etc...) could be on top of the case |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1482 |
with CurrentHedgehog^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1483 |
if Gear <> nil then Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1484 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1485 |
end; |
15 | 1486 |
|
2933 | 1487 |
if k = gtExplosives then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1488 |
begin |
2936 | 1489 |
//if V > _0_03 then Gear^.State:= Gear^.State or gstAnimation; |
2965
2a8c76b23e2c
Updated pl from szczur/nerihsa. Reduce dX requirement for high dY to allow batting tighter angles, try grenade impact sound for barrels
nemo
parents:
2963
diff
changeset
|
1490 |
if (hwAbs(Gear^.dX) > _0_15) or ((hwAbs(Gear^.dY) > _0_15) and (hwAbs(Gear^.dX) > _0_02)) then Gear^.doStep:= @doStepRollingBarrel; |
2933 | 1491 |
|
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1492 |
if ((Gear^.Health * 100 div cBarrelHealth) < random(90)) and ((GameTicks and $FF) = 0) then |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1493 |
if (cBarrelHealth div Gear^.Health) > 2 then |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1494 |
AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmoke) |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1495 |
else |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1496 |
AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmokeWhite); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1497 |
dec(Gear^.Health, Gear^.Damage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1498 |
Gear^.Damage:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1499 |
if Gear^.Health <= 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1500 |
exBoom:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1501 |
end; |
2911 | 1502 |
|
1503 |
if (Gear^.Damage > 0) or exBoom then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1504 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1505 |
x:= hwRound(Gear^.X); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1506 |
y:= hwRound(Gear^.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1507 |
DeleteGear(Gear); // <-- delete gear! |
2376 | 1508 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1509 |
if k = gtCase then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1510 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1511 |
doMakeExplosion(x, y, 25, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1512 |
for i:= 0 to 63 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1513 |
AddGear(x, y, gtFlame, 0, _0, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1514 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1515 |
else if k = gtExplosives then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1516 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1517 |
doMakeExplosion(x, y, 75, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1518 |
for i:= 0 to 31 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1519 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1520 |
dX:= AngleCos(i * 64) * _0_5 * (getrandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1521 |
dY:= AngleSin(i * 64) * _0_5 * (getrandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1522 |
AddGear(x, y, gtFlame, 0, dX, dY, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1523 |
AddGear(x, y, gtFlame, 0, -dX, -dY, 0)^.State:= gsttmpFlag; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1524 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1525 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1526 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1527 |
end; |
79 | 1528 |
|
351 | 1529 |
if (Gear^.dY.QWordValue <> 0) or (not TestCollisionYwithGear(Gear, 1)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1530 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1531 |
AllInactive:= false; |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1532 |
Gear^.dY:= Gear^.dY + cGravity; |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1533 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
2938 | 1534 |
if (not Gear^.dY.isNegative) and (Gear^.dY > _0_001) then SetAllHHToActive; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1535 |
if (Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, -1) then Gear^.dY:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1536 |
if (not Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, 1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1537 |
begin |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1538 |
if (Gear^.dY > _0_02) and (k = gtExplosives) then |
2955
fb361d137524
Tweak to joke in french locale (everyone always fixes the spelling) updated explosive frames from Palewolf, increase explosive fall damage from 30 to 40
nemo
parents:
2948
diff
changeset
|
1539 |
inc(Gear^.Damage, hwRound(Gear^.dY * _40)); |
2933 | 1540 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1541 |
if Gear^.dY > _0_2 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1542 |
for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1543 |
AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1544 |
Gear^.dY:= - Gear^.dY * Gear^.Elasticity; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1545 |
if Gear^.dY > - _0_001 then Gear^.dY:= _0 |
2965
2a8c76b23e2c
Updated pl from szczur/nerihsa. Reduce dX requirement for high dY to allow batting tighter angles, try grenade impact sound for barrels
nemo
parents:
2963
diff
changeset
|
1546 |
else if Gear^.dY < - _0_03 then |
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3092
diff
changeset
|
1547 |
PlaySound(Gear^.ImpactSound); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1548 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1549 |
//if Gear^.dY > - _0_001 then Gear^.dY:= _0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1550 |
CheckGearDrowning(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1551 |
end; |
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
13
diff
changeset
|
1552 |
|
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1553 |
if (Gear^.dY.QWordValue = 0) then AddGearCI(Gear) |
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2939
diff
changeset
|
1554 |
else if (Gear^.dY.QWordValue <> 0) then DeleteCI(Gear) |
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
13
diff
changeset
|
1555 |
end; |
49 | 1556 |
|
1557 |
//////////////////////////////////////////////////////////////////////////////// |
|
2460 | 1558 |
|
1559 |
procedure doStepTarget(Gear: PGear); |
|
1560 |
begin |
|
1561 |
if (Gear^.Timer = 0) and (Gear^.Tag = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1562 |
PlaySound(sndWarp); |
2460 | 1563 |
|
1564 |
if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1565 |
inc(Gear^.Timer) |
2460 | 1566 |
else if Gear^.Tag = 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1567 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1568 |
Gear^.Tag:= 2; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1569 |
if (TrainingFlags and tfTimeTrial) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1570 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1571 |
inc(TurnTimeLeft, TrainingTimeInc); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1572 |
|
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1573 |
if TrainingTimeInc > TrainingTimeInM then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1574 |
dec(TrainingTimeInc, TrainingTimeInD); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1575 |
if TurnTimeLeft > TrainingTimeMax then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1576 |
TurnTimeLeft:= TrainingTimeMax; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1577 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1578 |
end |
2468
0b62498c201a
openal fix, training map selection and rcplane adjustments from Smaxx (untested, but look reasonable). Bunch of new graphics from Tiy, new translation for pt-pt from inu_
nemo
parents:
2462
diff
changeset
|
1579 |
else if Gear^.Tag = 2 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1580 |
if Gear^.Timer > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1581 |
dec(Gear^.Timer) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1582 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1583 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1584 |
if (TrainingFlags and tfTargetRespawn) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1585 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1586 |
TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1587 |
FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1588 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1589 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1590 |
exit; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1591 |
end; |
2460 | 1592 |
|
1593 |
doStepCase(Gear) |
|
1594 |
end; |
|
1595 |
||
1596 |
//////////////////////////////////////////////////////////////////////////////// |
|
854 | 1597 |
procedure doStepIdle(Gear: PGear); |
1598 |
begin |
|
1599 |
AllInactive:= false; |
|
925 | 1600 |
dec(Gear^.Timer); |
854 | 1601 |
if Gear^.Timer = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1602 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1603 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1604 |
AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1605 |
end |
854 | 1606 |
end; |
1607 |
||
79 | 1608 |
procedure doStepShover(Gear: PGear); |
1609 |
var HHGear: PGear; |
|
1610 |
begin |
|
351 | 1611 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
1612 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
|
980
20128e98988b
Don't push attacking hedgehog when using whip or baseball
unc0rr
parents:
979
diff
changeset
|
1613 |
DeleteCI(HHGear); |
20128e98988b
Don't push attacking hedgehog when using whip or baseball
unc0rr
parents:
979
diff
changeset
|
1614 |
|
79 | 1615 |
AmmoShove(Gear, 30, 115); |
980
20128e98988b
Don't push attacking hedgehog when using whip or baseball
unc0rr
parents:
979
diff
changeset
|
1616 |
|
351 | 1617 |
HHGear^.State:= HHGear^.State and not gstNoDamage; |
854 | 1618 |
Gear^.Timer:= 250; |
1619 |
Gear^.doStep:= @doStepIdle |
|
79 | 1620 |
end; |
1621 |
||
1622 |
//////////////////////////////////////////////////////////////////////////////// |
|
925 | 1623 |
procedure doStepWhip(Gear: PGear); |
1624 |
var HHGear: PGear; |
|
1625 |
i: LongInt; |
|
1626 |
begin |
|
1627 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
1628 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
|
980
20128e98988b
Don't push attacking hedgehog when using whip or baseball
unc0rr
parents:
979
diff
changeset
|
1629 |
DeleteCI(HHGear); |
925 | 1630 |
|
1631 |
for i:= 0 to 3 do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1632 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1633 |
AmmoShove(Gear, 30, 25); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1634 |
Gear^.X:= Gear^.X + Gear^.dX * 5 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1635 |
end; |
925 | 1636 |
|
1637 |
HHGear^.State:= HHGear^.State and not gstNoDamage; |
|
1638 |
Gear^.Timer:= 250; |
|
1639 |
Gear^.doStep:= @doStepIdle |
|
1640 |
end; |
|
1641 |
||
1642 |
//////////////////////////////////////////////////////////////////////////////// |
|
79 | 1643 |
procedure doStepFlame(Gear: PGear); |
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
|
1644 |
var gX,gY,i: LongInt; |
79 | 1645 |
begin |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1646 |
if (Gear^.State and gsttmpFlag) = 0 then AllInactive:= false; |
1433 | 1647 |
|
79 | 1648 |
if not TestCollisionYwithGear(Gear, 1) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1649 |
begin |
2634 | 1650 |
AllInactive:= false; |
3143 | 1651 |
if Gear^.dX.QWordValue > _0_01.QWordValue then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1652 |
Gear^.dX:= Gear^.dX * _0_995; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1653 |
Gear^.dY:= Gear^.dY + cGravity; |
3143 | 1654 |
if (Gear^.State and gsttmpFlag) <> 0 then Gear^.dY:= Gear^.dY + cGravity; |
1655 |
if Gear^.dY.QWordValue > _0_2.QWordValue then Gear^.dY:= Gear^.dY * _0_995; |
|
2376 | 1656 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1657 |
if (Gear^.State and gsttmpFlag) <> 0 then Gear^.X:= Gear^.X + Gear^.dX else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1658 |
Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1659 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
2376 | 1660 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1661 |
if (hwRound(Gear^.Y) > cWaterLine) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1662 |
begin |
3143 | 1663 |
gX:= hwRound(Gear^.X); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1664 |
for i:= 0 to 3 do |
3143 | 1665 |
AddVisualGear(gX - 16 + Random(32), cWaterLine - 16 + Random(16), vgtSteam); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1666 |
PlaySound(sndVaporize); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1667 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1668 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1669 |
end |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1670 |
end else begin |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1671 |
if (Gear^.State and gsttmpFlag) <> 0 then |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1672 |
begin |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1673 |
Gear^.Radius:= 9; |
2514
df9d0728c5bb
Make hedgies just hop a bit on flames so they are more likely to get properly scorched
nemo
parents:
2512
diff
changeset
|
1674 |
AmmoShove(Gear, 2, 30); |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1675 |
Gear^.Radius:= 1 |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1676 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1677 |
if Gear^.Timer > 0 then |
2475 | 1678 |
begin |
1679 |
dec(Gear^.Timer); |
|
1680 |
inc(Gear^.Damage) |
|
1681 |
end |
|
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1682 |
else begin |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1683 |
// Standard fire |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1684 |
if (Gear^.State and gsttmpFlag) = 0 then |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1685 |
begin |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1686 |
Gear^.Radius:= 9; |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1687 |
AmmoShove(Gear, 4, 100); |
3143 | 1688 |
gX:= hwRound(Gear^.X); |
1689 |
gY:= hwRound(Gear^.Y); |
|
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1690 |
Gear^.Radius:= 1; |
3143 | 1691 |
doMakeExplosion(gX, gY, 4, EXPLNoDamage); |
3096
9330eead14fa
Remove Distance from flake kick, reduce calls to Random() in flame replacing w/ checks on game tick and a little randomness.
nemo
parents:
3094
diff
changeset
|
1692 |
if ((GameTicks and $7) = 0) and (Random(2) = 0) then |
9330eead14fa
Remove Distance from flake kick, reduce calls to Random() in flame replacing w/ checks on game tick and a little randomness.
nemo
parents:
3094
diff
changeset
|
1693 |
for i:= 1 to Random(2)+1 do |
3143 | 1694 |
AddVisualGear(gX - 3 + Random(6), gY - 2, vgtSmoke); |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1695 |
if Gear^.Health > 0 then dec(Gear^.Health); |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1696 |
Gear^.Timer:= 450 - Gear^.Tag * 8 |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1697 |
end |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1698 |
else begin |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1699 |
// Modified fire |
2713 | 1700 |
if ((GameTicks and $7FF) = 0) and ((GameFlags and gfSolidLand) = 0) then begin |
3143 | 1701 |
DrawExplosion(gX, gY, 4); |
2713 | 1702 |
|
1703 |
for i:= 0 to Random(3) do |
|
3143 | 1704 |
AddVisualGear(gX - 3 + Random(6), gY - 2, vgtSmoke); |
2713 | 1705 |
end; |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1706 |
// This one is interesting. I think I understand the purpose, but I wonder if a bit more fuzzy of kicking could be done with getrandom. |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1707 |
Gear^.Timer:= 100 - Gear^.Tag * 3; |
2475 | 1708 |
if (Gear^.Damage > 3000+Gear^.Tag*1500) then Gear^.Health:= 0 |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1709 |
end |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1710 |
end |
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2376
diff
changeset
|
1711 |
end; |
2713 | 1712 |
if Gear^.Health = 0 then begin |
3143 | 1713 |
gX:= hwRound(Gear^.X); |
1714 |
gY:= hwRound(Gear^.Y); |
|
2713 | 1715 |
if (Gear^.State and gsttmpFlag) = 0 then begin |
3096
9330eead14fa
Remove Distance from flake kick, reduce calls to Random() in flame replacing w/ checks on game tick and a little randomness.
nemo
parents:
3094
diff
changeset
|
1716 |
if ((GameTicks and $3) = 0) and (Random(1) = 0) then begin |
9330eead14fa
Remove Distance from flake kick, reduce calls to Random() in flame replacing w/ checks on game tick and a little randomness.
nemo
parents:
3094
diff
changeset
|
1717 |
for i:= 1 to Random(2)+1 do begin |
3143 | 1718 |
AddVisualGear(gX - 3 + Random(6), gY - 2, vgtSmoke); |
2713 | 1719 |
end; |
1720 |
end; |
|
1721 |
end else begin |
|
1722 |
for i:= 0 to Random(3) do begin |
|
3143 | 1723 |
AddVisualGear(gX - 3 + Random(6), gY - 2, vgtSmoke); |
2713 | 1724 |
end; |
1725 |
end; |
|
1726 |
||
1727 |
DeleteGear(Gear) |
|
1728 |
end; |
|
79 | 1729 |
end; |
82 | 1730 |
|
1731 |
//////////////////////////////////////////////////////////////////////////////// |
|
1732 |
procedure doStepFirePunchWork(Gear: PGear); |
|
1733 |
var HHGear: PGear; |
|
1734 |
begin |
|
1735 |
AllInactive:= false; |
|
351 | 1736 |
if ((Gear^.Message and gm_Destroy) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1737 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1738 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1739 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1740 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1741 |
end; |
82 | 1742 |
|
351 | 1743 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
1744 |
if hwRound(HHGear^.Y) <= Gear^.Tag - 2 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1745 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1746 |
Gear^.Tag:= hwRound(HHGear^.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1747 |
DrawTunnel(HHGear^.X - int2hwFloat(cHHRadius), HHGear^.Y - _1, _0_5, _0, cHHRadius * 4, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1748 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1749 |
Gear^.Y:= HHGear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1750 |
AmmoShove(Gear, 30, 40); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1751 |
HHGear^.State:= HHGear^.State and not gstNoDamage |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1752 |
end; |
351 | 1753 |
|
1754 |
HHGear^.dY:= HHGear^.dY + cGravity; |
|
1755 |
if not (HHGear^.dY.isNegative) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1756 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1757 |
HHGear^.State:= HHGear^.State or gstMoving; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1758 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1759 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1760 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1761 |
end; |
2089 | 1762 |
|
2376 | 1763 |
if CheckLandValue(hwRound(HHGear^.X), hwRound(HHGear^.Y + HHGear^.dY + SignAs(_6,Gear^.dY)), COLOR_INDESTRUCTIBLE) then |
2331
e4941a7986d6
Another try at keeping blowtorch/firepunch/jackhammer from going through indestructible stuff. Shame these routines don't use hedgehog movement
nemo
parents:
2329
diff
changeset
|
1764 |
HHGear^.Y:= HHGear^.Y + HHGear^.dY |
82 | 1765 |
end; |
1766 |
||
1767 |
procedure doStepFirePunch(Gear: PGear); |
|
1768 |
var HHGear: PGear; |
|
1769 |
begin |
|
1770 |
AllInactive:= false; |
|
351 | 1771 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
514 | 1772 |
DeleteCI(HHGear); |
498 | 1773 |
HHGear^.X:= int2hwFloat(hwRound(HHGear^.X)) - _0_5; |
1014
3c7d4e7ccdff
- Fix firepunch sprite direction when use in high jump
unc0rr
parents:
992
diff
changeset
|
1774 |
HHGear^.dX:= SignAs(cLittle, Gear^.dX); |
3c7d4e7ccdff
- Fix firepunch sprite direction when use in high jump
unc0rr
parents:
992
diff
changeset
|
1775 |
|
351 | 1776 |
HHGear^.dY:= - _0_3; |
82 | 1777 |
|
351 | 1778 |
Gear^.X:= HHGear^.X; |
979
edb8f208c1d9
Fix firepunch direction when attacking from high jump
unc0rr
parents:
974
diff
changeset
|
1779 |
Gear^.dX:= SignAs(_0_45, Gear^.dX); |
351 | 1780 |
Gear^.dY:= - _0_9; |
1781 |
Gear^.doStep:= @doStepFirePunchWork; |
|
498 | 1782 |
DrawTunnel(HHGear^.X - int2hwFloat(cHHRadius), HHGear^.Y + _1, _0_5, _0, cHHRadius * 4, 5); |
1279 | 1783 |
|
2745 | 1784 |
PlaySound(TSound(ord(sndFirePunch1) + GetRandom(6)), PHedgehog(HHGear^.Hedgehog)^.Team^.voicepack) |
82 | 1785 |
end; |
1786 |
||
263 | 1787 |
//////////////////////////////////////////////////////////////////////////////// |
1788 |
||
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1789 |
procedure doStepParachuteWork(Gear: PGear); |
211 | 1790 |
var HHGear: PGear; |
1791 |
begin |
|
351 | 1792 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
82 | 1793 |
|
516 | 1794 |
inc(Gear^.Timer); |
1795 |
||
212 | 1796 |
if TestCollisionYwithGear(HHGear, 1) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1797 |
or ((HHGear^.State and gstHHDriven) = 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1798 |
or CheckGearDrowning(HHGear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1799 |
or ((Gear^.Message and gm_Attack) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1800 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1801 |
with HHGear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1802 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1803 |
Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1804 |
SetLittle(dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1805 |
dY:= _0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1806 |
State:= State or gstMoving; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1807 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1808 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1809 |
isCursorVisible:= false; |
3299 | 1810 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1811 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1812 |
end; |
211 | 1813 |
|
351 | 1814 |
if not TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1815 |
HHGear^.X:= HHGear^.X + cWindSpeed * 200; |
211 | 1816 |
|
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3351
diff
changeset
|
1817 |
if (Gear^.Message and gm_Left) <> 0 then HHGear^.X:= HHGear^.X - cMaxWindSpeed * 80 |
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3351
diff
changeset
|
1818 |
else if (Gear^.Message and gm_Right) <> 0 then HHGear^.X:= HHGear^.X + cMaxWindSpeed * 80; |
351 | 1819 |
if (Gear^.Message and gm_Up) <> 0 then HHGear^.Y:= HHGear^.Y - cGravity * 40 |
1820 |
else if (Gear^.Message and gm_Down) <> 0 then HHGear^.Y:= HHGear^.Y + cGravity * 40; |
|
211 | 1821 |
|
351 | 1822 |
HHGear^.Y:= HHGear^.Y + cGravity * 100; |
568 | 1823 |
Gear^.X:= HHGear^.X; |
1824 |
Gear^.Y:= HHGear^.Y |
|
263 | 1825 |
end; |
211 | 1826 |
|
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1827 |
procedure doStepParachute(Gear: PGear); |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1828 |
var HHGear: PGear; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1829 |
begin |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1830 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1831 |
|
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1832 |
DeleteCI(HHGear); |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1833 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
1834 |
AfterAttack; |
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1835 |
|
931 | 1836 |
HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked or gstMoving); |
929
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1837 |
HHGear^.Message:= HHGear^.Message and not gm_Attack; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1838 |
|
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1839 |
Gear^.doStep:= @doStepParachuteWork; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1840 |
|
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1841 |
Gear^.Message:= HHGear^.Message; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1842 |
doStepParachuteWork(Gear) |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1843 |
end; |
9456e1e77369
- Continue preparation for implementing attack from rope and parachute
unc0rr
parents:
928
diff
changeset
|
1844 |
|
263 | 1845 |
//////////////////////////////////////////////////////////////////////////////// |
1846 |
procedure doStepAirAttackWork(Gear: PGear); |
|
1507 | 1847 |
var i: Longint; |
263 | 1848 |
begin |
1849 |
AllInactive:= false; |
|
498 | 1850 |
Gear^.X:= Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
1124 | 1851 |
|
543
465e2ec8f05f
- Better randomness of placing hedgehogs on the land
unc0rr
parents:
542
diff
changeset
|
1852 |
if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1853 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1854 |
dec(Gear^.Health); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1855 |
case Gear^.State of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1856 |
0: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1857 |
1: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1858 |
2: for i:= -19 to 19 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1859 |
FollowGear:= AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1860 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1861 |
Gear^.dX:= Gear^.dX + int2hwFloat(30 * Gear^.Tag) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1862 |
end; |
1124 | 1863 |
|
1864 |
if (GameTicks and $3F) = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1865 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
1124 | 1866 |
|
1753 | 1867 |
if (hwRound(Gear^.X) > (LAND_WIDTH+1024)) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear) |
263 | 1868 |
end; |
1869 |
||
1870 |
procedure doStepAirAttack(Gear: PGear); |
|
1871 |
begin |
|
1872 |
AllInactive:= false; |
|
543
465e2ec8f05f
- Better randomness of placing hedgehogs on the land
unc0rr
parents:
542
diff
changeset
|
1873 |
|
1507 | 1874 |
if Gear^.X.QWordValue = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1875 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1876 |
Gear^.Tag:= 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1877 |
Gear^.X:= -_1024; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1878 |
end |
1507 | 1879 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1880 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1881 |
Gear^.Tag:= -1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1882 |
Gear^.X:= int2hwFloat(LAND_WIDTH + 1024); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1883 |
end; |
1507 | 1884 |
|
1784 | 1885 |
Gear^.Y:= int2hwFloat(topY-300); |
543
465e2ec8f05f
- Better randomness of placing hedgehogs on the land
unc0rr
parents:
542
diff
changeset
|
1886 |
Gear^.dX:= int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); |
357 | 1887 |
|
2746 | 1888 |
if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) and (Gear^.State <> 2) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1889 |
Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / cGravity) * Gear^.Tag; |
543
465e2ec8f05f
- Better randomness of placing hedgehogs on the land
unc0rr
parents:
542
diff
changeset
|
1890 |
|
351 | 1891 |
Gear^.Health:= 6; |
801 | 1892 |
Gear^.doStep:= @doStepAirAttackWork; |
263 | 1893 |
end; |
1894 |
||
1895 |
//////////////////////////////////////////////////////////////////////////////// |
|
1896 |
||
1897 |
procedure doStepAirBomb(Gear: PGear); |
|
1898 |
begin |
|
1899 |
AllInactive:= false; |
|
1900 |
doStepFallingGear(Gear); |
|
351 | 1901 |
if (Gear^.State and gstCollision) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1902 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1903 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1904 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1905 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1906 |
end; |
263 | 1907 |
if (GameTicks and $3F) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1908 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0) |
211 | 1909 |
end; |
409 | 1910 |
|
1911 |
//////////////////////////////////////////////////////////////////////////////// |
|
1912 |
||
1913 |
procedure doStepGirder(Gear: PGear); |
|
415 | 1914 |
var HHGear: PGear; |
1915 | 1915 |
x, y, tx, ty: hwFloat; |
409 | 1916 |
begin |
1917 |
AllInactive:= false; |
|
415 | 1918 |
|
1919 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
1915 | 1920 |
tx:= int2hwFloat(TargetPoint.X); |
1921 |
ty:= int2hwFloat(TargetPoint.Y); |
|
1922 |
x:= HHGear^.X; |
|
1923 |
y:= HHGear^.Y; |
|
1909 | 1924 |
|
1915 | 1925 |
if (Distance(tx - x, ty - y) > _256) or |
1926 |
not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2, |
|
1927 |
TargetPoint.Y - SpritesData[sprAmGirder].Height div 2, |
|
520 | 1928 |
sprAmGirder, Gear^.State, true) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1929 |
begin |
2745 | 1930 |
PlaySound(sndDenied); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1931 |
HHGear^.Message:= HHGear^.Message and not gm_Attack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1932 |
HHGear^.State:= HHGear^.State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1933 |
HHGear^.State:= HHGear^.State or gstHHChooseTarget; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1934 |
isCursorVisible:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1935 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1936 |
end |
1133 | 1937 |
else begin |
2745 | 1938 |
PlaySound(sndPlaced); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1939 |
DeleteGear(Gear); |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
1940 |
AfterAttack; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1941 |
end; |
1914 | 1942 |
|
1909 | 1943 |
HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked); |
1944 |
HHGear^.Message:= HHGear^.Message and not gm_Attack; |
|
415 | 1945 |
TargetPoint.X:= NoPointX |
409 | 1946 |
end; |
520 | 1947 |
|
1948 |
//////////////////////////////////////////////////////////////////////////////// |
|
525 | 1949 |
procedure doStepTeleportAfter(Gear: PGear); |
912 | 1950 |
var HHGear: PGear; |
1951 |
begin |
|
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2746
diff
changeset
|
1952 |
PHedgehog(Gear^.Hedgehog)^.Unplaced:= false; |
912 | 1953 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
1954 |
HHGear^.Y:= HHGear^.Y + HHGear^.dY; // hedgehog falling to collect cases |
|
1955 |
HHGear^.dY:= HHGear^.dY + cGravity; |
|
945
4ead9cde4e14
- Start chat implementation: chat strings are on the screen
unc0rr
parents:
940
diff
changeset
|
1956 |
if TestCollisionYwithGear(HHGear, 1) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1957 |
or CheckGearDrowning(HHGear) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1958 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1959 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1960 |
AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1961 |
end |
912 | 1962 |
end; |
1963 |
||
1964 |
procedure doStepTeleportAnim(Gear: PGear); |
|
525 | 1965 |
begin |
853 | 1966 |
inc(Gear^.Timer); |
1967 |
if Gear^.Timer = 65 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1968 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1969 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1970 |
inc(Gear^.Pos); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1971 |
if Gear^.Pos = 11 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1972 |
Gear^.doStep:= @doStepTeleportAfter |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1973 |
end; |
525 | 1974 |
end; |
520 | 1975 |
|
1976 |
procedure doStepTeleport(Gear: PGear); |
|
1977 |
var HHGear: PGear; |
|
1978 |
begin |
|
1979 |
AllInactive:= false; |
|
1980 |
||
1981 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
1982 |
if not TryPlaceOnLand(TargetPoint.X - SpritesData[sprHHTelepMask].Width div 2, |
|
1983 |
TargetPoint.Y - SpritesData[sprHHTelepMask].Height div 2, |
|
1984 |
sprHHTelepMask, 0, false) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1985 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1986 |
HHGear^.Message:= HHGear^.Message and not gm_Attack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1987 |
HHGear^.State:= HHGear^.State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1988 |
HHGear^.State:= HHGear^.State or gstHHChooseTarget; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1989 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1990 |
isCursorVisible:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1991 |
PlaySound(sndDenied) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1992 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1993 |
else begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1994 |
DeleteCI(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1995 |
SetAllHHToActive; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
1996 |
Gear^.doStep:= @doStepTeleportAnim; |
3378
4f2185ed8ca8
let players affect in which direction their teleported hedgehog will look
sheepluva
parents:
3359
diff
changeset
|
1997 |
// copy old HH position and direction to Gear (because we need them for drawing the vanishing hog) |
4f2185ed8ca8
let players affect in which direction their teleported hedgehog will look
sheepluva
parents:
3359
diff
changeset
|
1998 |
Gear^.dX:= HHGear^.dX; |
4f2185ed8ca8
let players affect in which direction their teleported hedgehog will look
sheepluva
parents:
3359
diff
changeset
|
1999 |
// retrieve the cursor direction (it was previously copied to X so it doesn't get lost) |
4f2185ed8ca8
let players affect in which direction their teleported hedgehog will look
sheepluva
parents:
3359
diff
changeset
|
2000 |
HHGear^.dX.isNegative := (Gear^.X.QWordValue <> 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2001 |
Gear^.X:= HHGear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2002 |
Gear^.Y:= HHGear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2003 |
HHGear^.X:= int2hwFloat(TargetPoint.X); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2004 |
HHGear^.Y:= int2hwFloat(TargetPoint.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2005 |
HHGear^.State:= HHGear^.State or gstMoving; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2006 |
playSound(sndWarp) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2007 |
end; |
2217 | 2008 |
TargetPoint.X:= NoPointX; |
520 | 2009 |
end; |
534 | 2010 |
|
2011 |
//////////////////////////////////////////////////////////////////////////////// |
|
2012 |
procedure doStepSwitcherWork(Gear: PGear); |
|
2013 |
var HHGear: PGear; |
|
2014 |
Msg, State: Longword; |
|
2015 |
begin |
|
2016 |
AllInactive:= false; |
|
2017 |
||
540 | 2018 |
if ((Gear^.Message and not gm_Switch) <> 0) or (TurnTimeLeft = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2019 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2020 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2021 |
Msg:= Gear^.Message and not gm_Switch; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2022 |
DeleteGear(Gear); |
3403
244382ea33c2
Revert switch behaviour (can't use AfterAttack here) remove unneeded value from jetpack definition
nemo
parents:
3401
diff
changeset
|
2023 |
OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); |
244382ea33c2
Revert switch behaviour (can't use AfterAttack here) remove unneeded value from jetpack definition
nemo
parents:
3401
diff
changeset
|
2024 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
534 | 2025 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2026 |
HHGear:= CurrentHedgehog^.Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2027 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2028 |
HHGear^.Message:= Msg; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2029 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2030 |
end; |
534 | 2031 |
|
2032 |
if (Gear^.Message and gm_Switch) <> 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2033 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2034 |
HHGear:= CurrentHedgehog^.Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2035 |
HHGear^.Message:= HHGear^.Message and not gm_Switch; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2036 |
Gear^.Message:= Gear^.Message and not gm_Switch; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2037 |
State:= HHGear^.State; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2038 |
HHGear^.State:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2039 |
HHGear^.Active:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2040 |
HHGear^.Z:= cHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2041 |
RemoveGearFromList(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2042 |
InsertGearToList(HHGear); |
534 | 2043 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2044 |
PlaySound(sndSwitchHog); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2045 |
|
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2046 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2047 |
CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2048 |
until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil); |
652 | 2049 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2050 |
CurrentHedgehog:= @CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]; |
534 | 2051 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2052 |
HHGear:= CurrentHedgehog^.Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2053 |
HHGear^.State:= State; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2054 |
HHGear^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2055 |
FollowGear:= HHGear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2056 |
HHGear^.Z:= cCurrHHZ; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2057 |
RemoveGearFromList(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2058 |
InsertGearToList(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2059 |
Gear^.X:= HHGear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2060 |
Gear^.Y:= HHGear^.Y |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2061 |
end; |
534 | 2062 |
end; |
2063 |
||
2064 |
procedure doStepSwitcher(Gear: PGear); |
|
2065 |
var HHGear: PGear; |
|
2066 |
begin |
|
2067 |
Gear^.doStep:= @doStepSwitcherWork; |
|
2068 |
||
2069 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2070 |
with HHGear^ do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2071 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2072 |
State:= State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2073 |
Message:= Message and not gm_Attack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2074 |
end |
534 | 2075 |
end; |
924 | 2076 |
|
2077 |
//////////////////////////////////////////////////////////////////////////////// |
|
2078 |
procedure doStepMortar(Gear: PGear); |
|
2079 |
var dX, dY: hwFloat; |
|
2080 |
i: LongInt; |
|
963 | 2081 |
dxn, dyn: boolean; |
924 | 2082 |
begin |
2083 |
AllInactive:= false; |
|
963 | 2084 |
dxn:= Gear^.dX.isNegative; |
2085 |
dyn:= Gear^.dY.isNegative; |
|
2086 |
||
924 | 2087 |
doStepFallingGear(Gear); |
2088 |
if (Gear^.State and gstCollision) <> 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2089 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2090 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); |
963 | 2091 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2092 |
Gear^.dX.isNegative:= not dxn; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2093 |
Gear^.dY.isNegative:= not dyn; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2094 |
for i:= 0 to 4 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2095 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2096 |
dX:= Gear^.dX + (GetRandom - _0_5) * _0_03; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2097 |
dY:= Gear^.dY + (GetRandom - _0_5) * _0_03; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2098 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2099 |
end; |
2376 | 2100 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2101 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2102 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2103 |
end; |
963 | 2104 |
|
924 | 2105 |
if (GameTicks and $3F) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2106 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0) |
924 | 2107 |
end; |
984 | 2108 |
|
2109 |
//////////////////////////////////////////////////////////////////////////////// |
|
2110 |
procedure doStepKamikazeWork(Gear: PGear); |
|
2111 |
const upd: Longword = 0; |
|
987 | 2112 |
var i: LongWord; |
984 | 2113 |
HHGear: PGear; |
2114 |
begin |
|
2115 |
AllInactive:= false; |
|
2116 |
||
2117 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2118 |
HHGear^.State:= HHGear^.State or gstNoDamage; |
|
2119 |
DeleteCI(HHGear); |
|
2120 |
||
2121 |
i:= 2; |
|
2122 |
repeat |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2123 |
Gear^.X:= Gear^.X + HHGear^.dX; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2124 |
Gear^.Y:= Gear^.Y + HHGear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2125 |
HHGear^.X:= Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2126 |
HHGear^.Y:= Gear^.Y; |
984 | 2127 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2128 |
inc(Gear^.Damage, 2); |
984 | 2129 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2130 |
// if TestCollisionXwithGear(HHGear, hwSign(Gear^.dX)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2131 |
// or TestCollisionYwithGear(HHGear, hwSign(Gear^.dY)) then inc(Gear^.Damage, 3); |
984 | 2132 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2133 |
dec(i) |
984 | 2134 |
until (i = 0) or (Gear^.Damage > Gear^.Health); |
2135 |
||
2136 |
inc(upd); |
|
2137 |
if upd > 3 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2138 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2139 |
if Gear^.Health < 1500 then Gear^.Pos:= 2; |
2376 | 2140 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2141 |
AmmoShove(Gear, 30, 40); |
2376 | 2142 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2143 |
DrawTunnel(HHGear^.X - HHGear^.dX * 10, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2144 |
HHGear^.Y - _2 - HHGear^.dY * 10 + hwAbs(HHGear^.dY) * 2, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2145 |
HHGear^.dX, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2146 |
HHGear^.dY, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2147 |
20 + cHHRadius * 2, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2148 |
cHHRadius * 2 + 6); |
2376 | 2149 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2150 |
upd:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2151 |
end; |
984 | 2152 |
|
2153 |
if Gear^.Health < Gear^.Damage then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2154 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2155 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2156 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2157 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2158 |
DeleteGear(HHGear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2159 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2160 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2161 |
dec(Gear^.Health, Gear^.Damage); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2162 |
Gear^.Damage:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2163 |
end |
984 | 2164 |
end; |
2165 |
||
987 | 2166 |
procedure doStepKamikazeIdle(Gear: PGear); |
2167 |
begin |
|
2168 |
AllInactive:= false; |
|
2169 |
dec(Gear^.Timer); |
|
2170 |
if Gear^.Timer = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2171 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2172 |
Gear^.Pos:= 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2173 |
PlaySound(sndKamikaze, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2174 |
Gear^.doStep:= @doStepKamikazeWork |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2175 |
end |
987 | 2176 |
end; |
2177 |
||
984 | 2178 |
procedure doStepKamikaze(Gear: PGear); |
2179 |
var HHGear: PGear; |
|
2180 |
begin |
|
2181 |
AllInactive:= false; |
|
2182 |
||
2183 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2184 |
||
2185 |
HHGear^.dX:= Gear^.dX; |
|
2186 |
HHGear^.dY:= Gear^.dY; |
|
2187 |
||
2188 |
Gear^.dX:= SignAs(_0_45, Gear^.dX); |
|
2189 |
Gear^.dY:= - _0_9; |
|
2190 |
||
987 | 2191 |
Gear^.Timer:= 550; |
2192 |
||
2193 |
Gear^.doStep:= @doStepKamikazeIdle |
|
984 | 2194 |
end; |
2195 |
||
1103 | 2196 |
//////////////////////////////////////////////////////////////////////////////// |
2197 |
const cakeh = 27; |
|
1110 | 2198 |
cakeDmg = 75; |
1103 | 2199 |
var CakePoints: array[0..Pred(cakeh)] of record x, y: hwFloat; end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2200 |
CakeI: Longword; |
1103 | 2201 |
|
1110 | 2202 |
procedure doStepCakeExpl(Gear: PGear); |
2203 |
begin |
|
2141 | 2204 |
AllInactive:= false; |
2205 |
||
1110 | 2206 |
inc(Gear^.Tag); |
2207 |
if Gear^.Tag < 2250 then exit; |
|
2208 |
||
2209 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, EXPLAutoSound); |
|
2210 |
AfterAttack; |
|
2211 |
DeleteGear(Gear) |
|
2212 |
end; |
|
2213 |
||
1109 | 2214 |
procedure doStepCakeDown(Gear: PGear); |
1133 | 2215 |
var gi: PGear; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2216 |
dmg: LongInt; |
1109 | 2217 |
begin |
2218 |
AllInactive:= false; |
|
2219 |
||
2220 |
inc(Gear^.Tag); |
|
2221 |
if Gear^.Tag < 100 then exit; |
|
2222 |
Gear^.Tag:= 0; |
|
2223 |
||
2224 |
if Gear^.Pos = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2225 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2226 |
gi:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2227 |
while gi <> nil do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2228 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2229 |
dmg:= cakeDmg * 2 - hwRound(Distance(gi^.X - Gear^.X, gi^.Y - Gear^.Y)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2230 |
if (dmg > 1) and (gi^.Kind = gtHedgehog) then |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset
|
2231 |
if (CurrentHedgehog^.Gear = gi) and (not gi^.Invulnerable) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2232 |
gi^.State:= gi^.State or gstLoser |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1861
diff
changeset
|
2233 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2234 |
gi^.State:= gi^.State or gstWinner; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2235 |
gi:= gi^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2236 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2237 |
Gear^.doStep:= @doStepCakeExpl; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2238 |
PlaySound(sndCake) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2239 |
end else dec(Gear^.Pos) |
1109 | 2240 |
end; |
2241 |
||
2242 |
||
1089 | 2243 |
procedure doStepCakeWork(Gear: PGear); |
2244 |
const dirs: array[0..3] of TPoint = ((x: 0; y: -1), (x: 1; y: 0),(x: 0; y: 1),(x: -1; y: 0)); |
|
2245 |
var xx, yy, xxn, yyn: LongInt; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2246 |
da: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2247 |
tdx, tdy: hwFloat; |
1089 | 2248 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2249 |
procedure PrevAngle; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2250 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2251 |
Gear^.Angle:= (LongInt(Gear^.Angle) + 4 - dA) mod 4 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2252 |
end; |
2376 | 2253 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2254 |
procedure NextAngle; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2255 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2256 |
Gear^.Angle:= (LongInt(Gear^.Angle) + 4 + dA) mod 4 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2257 |
end; |
2376 | 2258 |
|
1088 | 2259 |
begin |
2141 | 2260 |
AllInactive:= false; |
2261 |
||
1089 | 2262 |
inc(Gear^.Tag); |
1108 | 2263 |
if Gear^.Tag < 7 then exit; |
1089 | 2264 |
|
2265 |
dA:= hwSign(Gear^.dX); |
|
2266 |
xx:= dirs[Gear^.Angle].x; |
|
2267 |
yy:= dirs[Gear^.Angle].y; |
|
1133 | 2268 |
xxn:= dirs[(LongInt(Gear^.Angle) + 4 + dA) mod 4].x; |
2269 |
yyn:= dirs[(LongInt(Gear^.Angle) + 4 + dA) mod 4].y; |
|
1089 | 2270 |
|
2271 |
if (xx = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2272 |
if TestCollisionYwithGear(Gear, yy) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2273 |
PrevAngle |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2274 |
else begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2275 |
Gear^.Tag:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2276 |
Gear^.Y:= Gear^.Y + int2hwFloat(yy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2277 |
if not TestCollisionXwithGear(Gear, xxn) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2278 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2279 |
Gear^.X:= Gear^.X + int2hwFloat(xxn); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2280 |
NextAngle |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2281 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2282 |
end; |
1089 | 2283 |
|
2284 |
if (yy = 0) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2285 |
if TestCollisionXwithGear(Gear, xx) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2286 |
PrevAngle |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2287 |
else begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2288 |
Gear^.Tag:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2289 |
Gear^.X:= Gear^.X + int2hwFloat(xx); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2290 |
if not TestCollisionYwithGear(Gear, yyn) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2291 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2292 |
Gear^.Y:= Gear^.Y + int2hwFloat(yyn); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2293 |
NextAngle |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2294 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2295 |
end; |
1089 | 2296 |
|
1103 | 2297 |
if Gear^.Tag = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2298 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2299 |
CakeI:= (CakeI + 1) mod cakeh; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2300 |
tdx:= CakePoints[CakeI].x - Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2301 |
tdy:= - CakePoints[CakeI].y + Gear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2302 |
CakePoints[CakeI].x:= Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2303 |
CakePoints[CakeI].y:= Gear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2304 |
Gear^.DirAngle:= DxDy2Angle(tdx, tdy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2305 |
end; |
1103 | 2306 |
|
1089 | 2307 |
dec(Gear^.Health); |
2208
7d1a084d11ab
disable timers on a few silly items, trying out a timer on cake
nemo
parents:
2204
diff
changeset
|
2308 |
Gear^.Timer:= Gear^.Health*10; // This is not seconds, but at least it is *some* feedback |
1090 | 2309 |
if (Gear^.Health = 0) or ((Gear^.Message and gm_Attack) <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2310 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2311 |
FollowGear:= Gear; |
2358 | 2312 |
Gear^.RenderTimer:= false; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2313 |
Gear^.doStep:= @doStepCakeDown |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2314 |
end |
1088 | 2315 |
end; |
1089 | 2316 |
|
1103 | 2317 |
procedure doStepCakeUp(Gear: PGear); |
2318 |
var i: Longword; |
|
2319 |
begin |
|
2320 |
AllInactive:= false; |
|
2321 |
||
1108 | 2322 |
inc(Gear^.Tag); |
1109 | 2323 |
if Gear^.Tag < 100 then exit; |
1108 | 2324 |
Gear^.Tag:= 0; |
2325 |
||
1109 | 2326 |
if Gear^.Pos = 6 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2327 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2328 |
for i:= 0 to Pred(cakeh) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2329 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2330 |
CakePoints[i].x:= Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2331 |
CakePoints[i].y:= Gear^.Y |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2332 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2333 |
CakeI:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2334 |
Gear^.doStep:= @doStepCakeWork |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2335 |
end else inc(Gear^.Pos) |
1103 | 2336 |
end; |
2337 |
||
1089 | 2338 |
procedure doStepCakeFall(Gear: PGear); |
2339 |
begin |
|
2340 |
AllInactive:= false; |
|
2341 |
||
2342 |
Gear^.dY:= Gear^.dY + cGravity; |
|
2343 |
if TestCollisionYwithGear(Gear, 1) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2344 |
Gear^.doStep:= @doStepCakeUp |
1089 | 2345 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2346 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2347 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2348 |
if CheckGearDrowning(Gear) then AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2349 |
end |
1089 | 2350 |
end; |
2351 |
||
2352 |
procedure doStepCake(Gear: PGear); |
|
2353 |
var HHGear: PGear; |
|
2354 |
begin |
|
2355 |
AllInactive:= false; |
|
2356 |
||
2357 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
1103 | 2358 |
HHGear^.Message:= HHGear^.Message and (not gm_Attack); |
1089 | 2359 |
DeleteCI(HHGear); |
2360 |
||
1106 | 2361 |
FollowGear:= Gear; |
2362 |
||
1089 | 2363 |
Gear^.doStep:= @doStepCakeFall |
2364 |
end; |
|
2365 |
||
1259 | 2366 |
//////////////////////////////////////////////////////////////////////////////// |
1284 | 2367 |
procedure doStepSeductionWork(Gear: PGear); |
2368 |
var x, y: LongInt; |
|
1259 | 2369 |
begin |
2370 |
AllInactive:= false; |
|
1284 | 2371 |
|
2372 |
Gear^.X:= Gear^.X + Gear^.dX; |
|
2373 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
2374 |
x:= hwRound(Gear^.X); |
|
2375 |
y:= hwRound(Gear^.Y); |
|
1259 | 2376 |
|
1753 | 2377 |
if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2378 |
if (Land[y, x] <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2379 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2380 |
Gear^.dX.isNegative:= not Gear^.dX.isNegative; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2381 |
Gear^.dY.isNegative:= not Gear^.dY.isNegative; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2382 |
Gear^.dX:= Gear^.dX * _1_5; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2383 |
Gear^.dY:= Gear^.dY * _1_5 - _0_3; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2384 |
AmmoShove(Gear, 0, 40); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2385 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2386 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2387 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2388 |
else |
1284 | 2389 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2390 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2391 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2392 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2393 |
end |
1286 | 2394 |
end; |
2395 |
||
2396 |
procedure doStepSeductionWear(Gear: PGear); |
|
2397 |
begin |
|
2398 |
AllInactive:= false; |
|
2399 |
inc(Gear^.Timer); |
|
2400 |
if Gear^.Timer > 250 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2401 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2402 |
Gear^.Timer:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2403 |
inc(Gear^.Pos); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2404 |
if Gear^.Pos = 5 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2405 |
PlaySound(sndYoohoo, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2406 |
end; |
1367 | 2407 |
|
2408 |
if Gear^.Pos = 14 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2409 |
Gear^.doStep:= @doStepSeductionWork |
1259 | 2410 |
end; |
1284 | 2411 |
|
2412 |
procedure doStepSeduction(Gear: PGear); |
|
2413 |
begin |
|
2414 |
AllInactive:= false; |
|
2415 |
DeleteCI(PHedgehog(Gear^.Hedgehog)^.Gear); |
|
1286 | 2416 |
Gear^.doStep:= @doStepSeductionWear |
1284 | 2417 |
end; |
1298 | 2418 |
|
2419 |
//////////////////////////////////////////////////////////////////////////////// |
|
2420 |
procedure doStepWaterUp(Gear: PGear); |
|
2421 |
var i: LongWord; |
|
2422 |
begin |
|
2423 |
AllInactive:= false; |
|
2424 |
||
2425 |
inc(Gear^.Timer); |
|
2426 |
if Gear^.Timer = 17 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2427 |
Gear^.Timer:= 0 |
1298 | 2428 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2429 |
exit; |
1298 | 2430 |
|
2431 |
if cWaterLine > 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2432 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2433 |
dec(cWaterLine); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2434 |
for i:= 0 to LAND_WIDTH - 1 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2435 |
Land[cWaterLine, i]:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2436 |
SetAllToActive |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2437 |
end; |
1298 | 2438 |
|
2439 |
inc(Gear^.Tag); |
|
1343 | 2440 |
if (Gear^.Tag = 47) or (cWaterLine = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2441 |
DeleteGear(Gear) |
1298 | 2442 |
end; |
1573 | 2443 |
|
2444 |
//////////////////////////////////////////////////////////////////////////////// |
|
1590 | 2445 |
procedure doStepDrillDrilling(Gear: PGear); |
1633 | 2446 |
var t: PGearArray; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2447 |
ox, oy: hwFloat; |
1573 | 2448 |
begin |
1590 | 2449 |
AllInactive:= false; |
2450 |
||
1633 | 2451 |
if (Gear^.Timer > 0) and ((Gear^.Timer mod 10) = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2452 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2453 |
ox:= Gear^.X; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2454 |
oy:= Gear^.Y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2455 |
Gear^.X:= Gear^.X + Gear^.dX; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2456 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2457 |
DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 2, 6); |
2558
b1cb0f71b704
doStepDrowningGear - I always forget it. Kill the sound and exit.
nemo
parents:
2538
diff
changeset
|
2458 |
if(CheckGearDrowning(Gear)) then |
b1cb0f71b704
doStepDrowningGear - I always forget it. Kill the sound and exit.
nemo
parents:
2538
diff
changeset
|
2459 |
begin |
2745 | 2460 |
StopSound(Gear^.SoundChannel); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2461 |
exit |
2558
b1cb0f71b704
doStepDrowningGear - I always forget it. Kill the sound and exit.
nemo
parents:
2538
diff
changeset
|
2462 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2463 |
end; |
1590 | 2464 |
|
1633 | 2465 |
t:= CheckGearsCollision(Gear); //fixes drill not exploding when touching HH bug |
1590 | 2466 |
if (Gear^.Timer = 0) |
1633 | 2467 |
or (t^.Count <> 0) |
1590 | 2468 |
or (not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) |
1784 | 2469 |
and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))) |
2470 |
or (Land[hwRound(Gear^.Y), hwRound(Gear^.X)] = COLOR_INDESTRUCTIBLE) then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2471 |
begin //out of time or exited ground |
2745 | 2472 |
StopSound(Gear^.SoundChannel); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2473 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2474 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2475 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2476 |
end; |
1590 | 2477 |
|
2478 |
dec(Gear^.Timer); |
|
1573 | 2479 |
end; |
2480 |
||
2481 |
procedure doStepDrill(Gear: PGear); |
|
1590 | 2482 |
var t: PGearArray; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2483 |
oldDx, oldDy: hwFloat; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2484 |
t2: hwFloat; |
1573 | 2485 |
begin |
1590 | 2486 |
AllInactive:= false; |
1573 | 2487 |
|
1590 | 2488 |
Gear^.dX:= Gear^.dX + cWindSpeed; |
2489 |
oldDx:= Gear^.dX; |
|
2490 |
oldDy:= Gear^.dY; |
|
2491 |
||
2492 |
doStepFallingGear(Gear); |
|
2493 |
||
2494 |
if (GameTicks and $3F) = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2495 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
1573 | 2496 |
|
1633 | 2497 |
if ((Gear^.State and gstCollision) <> 0) then begin //hit |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2498 |
Gear^.dX:= oldDx; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2499 |
Gear^.dY:= oldDy; |
1633 | 2500 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2501 |
t:= CheckGearsCollision(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2502 |
if (t^.Count = 0) then begin //hit the ground not the HH |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2503 |
t2 := _0_5 / Distance(Gear^.dX, Gear^.dY); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2504 |
Gear^.dX:= Gear^.dX * t2; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2505 |
Gear^.dY:= Gear^.dY * t2; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2506 |
end else begin //explode right on contact with HH |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2507 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2508 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2509 |
exit; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2510 |
end; |
2376 | 2511 |
|
3119 | 2512 |
Gear^.SoundChannel:= LoopSound(sndDrillRocket); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2513 |
Gear^.doStep:= @doStepDrillDrilling; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2514 |
dec(Gear^.Timer) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2515 |
end |
1590 | 2516 |
end; |
1601 | 2517 |
|
1633 | 2518 |
//////////////////////////////////////////////////////////////////////////////// |
1601 | 2519 |
procedure doStepBallgunWork(Gear: PGear); |
2520 |
var HHGear: PGear; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2521 |
rx, ry: hwFloat; |
3143 | 2522 |
gX, gY: LongInt; |
1601 | 2523 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2524 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2525 |
dec(Gear^.Timer); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2526 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2527 |
HedgehogChAngle(HHGear); |
3143 | 2528 |
gX:= hwRound(Gear^.X); |
2529 |
gY:= hwRound(Gear^.Y); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2530 |
if (Gear^.Timer mod 100) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2531 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2532 |
rx:= rndSign(getRandom * _0_1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2533 |
ry:= rndSign(getRandom * _0_1); |
2376 | 2534 |
|
3143 | 2535 |
AddGear(gx, gy, gtBall, 0, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2536 |
SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2537 |
AngleCos(HHGear^.Angle) * ( - _0_8) + ry, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2538 |
0); |
2376 | 2539 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2540 |
PlaySound(sndGun); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2541 |
end; |
1601 | 2542 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2543 |
if (Gear^.Timer = 0) or (HHGear^.Damage <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2544 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2545 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2546 |
AfterAttack |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2547 |
end |
1601 | 2548 |
end; |
2549 |
||
2550 |
procedure doStepBallgun(Gear: PGear); |
|
2551 |
var HHGear: PGear; |
|
2552 |
begin |
|
2553 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2554 |
HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Down); |
|
2555 |
HHGear^.State:= HHGear^.State or gstNotKickable; |
|
2556 |
Gear^.doStep:= @doStepBallgunWork |
|
1633 | 2557 |
end; |
1689 | 2558 |
|
1696 | 2559 |
//////////////////////////////////////////////////////////////////////////////// |
1689 | 2560 |
procedure doStepRCPlaneWork(Gear: PGear); |
2561 |
const cAngleSpeed = 3; |
|
2562 |
var HHGear: PGear; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2563 |
i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2564 |
dX, dY: hwFloat; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2565 |
fChanged: boolean; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2566 |
trueAngle: Longword; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2567 |
t: PGear; |
1689 | 2568 |
begin |
2569 |
AllInactive:= false; |
|
2570 |
||
2428 | 2571 |
if ((TrainingFlags and tfRCPlane) = 0) and (Gear^.Timer > 0) then dec(Gear^.Timer); |
2572 |
||
2573 |
if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and (TimeTrialStartTime = 0) then TimeTrialStartTime:= RealTicks; |
|
1689 | 2574 |
|
2575 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2576 |
FollowGear:= Gear; |
|
2577 |
||
2578 |
fChanged:= false; |
|
1696 | 2579 |
if ((HHGear^.State and gstHHDriven) = 0) or (Gear^.Timer = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2580 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2581 |
fChanged:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2582 |
if Gear^.Angle > 2048 then dec(Gear^.Angle) else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2583 |
if Gear^.Angle < 2048 then inc(Gear^.Angle) else fChanged:= false |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2584 |
end |
1696 | 2585 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2586 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2587 |
if ((Gear^.Message and gm_Left) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2588 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2589 |
fChanged:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2590 |
Gear^.Angle:= (Gear^.Angle + (4096 - cAngleSpeed)) mod 4096 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2591 |
end; |
1689 | 2592 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2593 |
if ((Gear^.Message and gm_Right) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2594 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2595 |
fChanged:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2596 |
Gear^.Angle:= (Gear^.Angle + cAngleSpeed) mod 4096 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2597 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2598 |
end; |
1689 | 2599 |
|
2600 |
if fChanged then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2601 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2602 |
Gear^.dX.isNegative:= (Gear^.Angle > 2048); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2603 |
if Gear^.dX.isNegative then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2604 |
trueAngle:= 4096 - Gear^.Angle |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2605 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2606 |
trueAngle:= Gear^.Angle; |
1689 | 2607 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2608 |
Gear^.dX:= SignAs(AngleSin(trueAngle), Gear^.dX) * _0_25; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2609 |
Gear^.dY:= AngleCos(trueAngle) * -_0_25; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2610 |
end; |
1689 | 2611 |
|
2612 |
Gear^.X:= Gear^.X + Gear^.dX; |
|
2613 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
2614 |
||
2428 | 2615 |
if (TrainingFlags and tfRCPlane) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2616 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2617 |
if (GameTicks and $FF) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2618 |
if Gear^.Timer < 3500 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2619 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2620 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2621 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
2428 | 2622 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2623 |
if ((HHGear^.Message and gm_Attack) <> 0) and (Gear^.Health <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2624 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2625 |
HHGear^.Message := HHGear^.Message and not gm_Attack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2626 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY * _0_5, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2627 |
dec(Gear^.Health) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2628 |
end; |
2428 | 2629 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2630 |
if ((HHGear^.Message and gm_LJump) <> 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2631 |
and ((Gear^.State and gsttmpFlag) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2632 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2633 |
Gear^.State:= Gear^.State or gsttmpFlag; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2634 |
PauseMusic; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2635 |
playSound(sndRideOfTheValkyries); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2636 |
end; |
2428 | 2637 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2638 |
// pickup bonuses |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2639 |
t:= CheckGearNear(Gear, gtCase, 36, 36); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2640 |
if t <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2641 |
PickUp(HHGear, t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2642 |
end |
2428 | 2643 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2644 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2645 |
if (GameTicks and $FF) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2646 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
1689 | 2647 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2648 |
// pickup targets |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2649 |
t:= CheckGearNear(Gear, gtTarget, 36, 36); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2650 |
if t <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2651 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2652 |
if t^.Tag <> 0 then // collect it only once |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2653 |
exit; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2654 |
PlaySound(sndShotgunReload); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2655 |
t^.Tag:= 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2656 |
TrainingTargetGear:= nil; // remove target cursor |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2657 |
exit; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2658 |
end; |
1712 | 2659 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2660 |
if (TurnTimeLeft > 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2661 |
dec(TurnTimeLeft) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2662 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2663 |
|
1689 | 2664 |
CheckCollision(Gear); |
2665 |
||
2468
0b62498c201a
openal fix, training map selection and rcplane adjustments from Smaxx (untested, but look reasonable). Bunch of new graphics from Tiy, new translation for pt-pt from inu_
nemo
parents:
2462
diff
changeset
|
2666 |
if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (TurnTimeLeft = 0)) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2667 |
or CheckGearDrowning(Gear) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2668 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2669 |
if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and (TimeTrialStopTime = 0) then TimeTrialStopTime:= RealTicks; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2670 |
StopSound(Gear^.SoundChannel); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2671 |
StopSound(sndRideOfTheValkyries); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2672 |
ResumeMusic; |
2376 | 2673 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2674 |
if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (TurnTimeLeft = 0)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2675 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2676 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2677 |
for i:= 0 to 32 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2678 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2679 |
dX:= AngleCos(i * 64) * _0_5 * (GetRandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2680 |
dY:= AngleSin(i * 64) * _0_5 * (GetRandom + _1); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2681 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2682 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2683 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2684 |
DeleteGear(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2685 |
end; |
1713 | 2686 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2687 |
AfterAttack; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2688 |
CurAmmoGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2689 |
TurnTimeLeft:= 14 * 125; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2690 |
|
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2691 |
if (TrainingFlags and tfRCPlane) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2692 |
TurnTimeLeft:= 0; // HACK: RCPlane training allows unlimited plane starts in last 2 seconds |
2468
0b62498c201a
openal fix, training map selection and rcplane adjustments from Smaxx (untested, but look reasonable). Bunch of new graphics from Tiy, new translation for pt-pt from inu_
nemo
parents:
2462
diff
changeset
|
2693 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2694 |
HHGear^.Message:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2695 |
ParseCommand('/taunt '#1, true) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2696 |
end |
1689 | 2697 |
end; |
2698 |
||
2699 |
procedure doStepRCPlane(Gear: PGear); |
|
2700 |
var HHGear: PGear; |
|
2701 |
begin |
|
2702 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
|
2703 |
HHGear^.Message:= 0; |
|
2704 |
HHGear^.State:= HHGear^.State or gstNotKickable; |
|
2705 |
Gear^.Angle:= HHGear^.Angle; |
|
1696 | 2706 |
Gear^.Tag:= hwSign(HHGear^.dX); |
1689 | 2707 |
if HHGear^.dX.isNegative then Gear^.Angle:= 4096 - Gear^.Angle; |
2708 |
Gear^.doStep:= @doStepRCPlaneWork |
|
1712 | 2709 |
end; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2710 |
|
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2711 |
procedure doStepJetpackWork(Gear: PGear); |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2712 |
var HHGear: PGear; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2713 |
fuel: LongInt; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2714 |
move: hwFloat; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2715 |
begin |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2716 |
AllInactive:= false; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2717 |
HHGear:=PHedgehog(Gear^.Hedgehog)^.Gear; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2718 |
//dec(Gear^.Timer); |
2440 | 2719 |
move:= _0_1; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2720 |
fuel:= 50; |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2721 |
(*if (HHGear^.Message and gm_Precise) <> 0 then |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2722 |
begin |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2723 |
move:= _0_02; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2724 |
fuel:= 5; |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2725 |
end;*) |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2726 |
|
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2727 |
if (HHGear^.Message and gm_Up) <> 0 then |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2728 |
begin |
2433 | 2729 |
if (not HHGear^.dY.isNegative) or (HHGear^.Y > -_256) then |
2730 |
HHGear^.dY:= HHGear^.dY - move; |
|
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2731 |
HHGear^.dY:= HHGear^.dY - move; |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2732 |
dec(Gear^.Health, fuel); |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2733 |
Gear^.MsgParam:= Gear^.MsgParam or gm_Up; |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2734 |
Gear^.Timer:= GameTicks |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2735 |
end; |
2187
66c0f9b3bd6f
set vector to negative *after* applying upward vector
nemo
parents:
2186
diff
changeset
|
2736 |
if (HHGear^.Message and gm_Left) <> 0 then move.isNegative:= true; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2737 |
if (HHGear^.Message and (gm_Left or gm_Right)) <> 0 then |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2738 |
begin |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2739 |
HHGear^.dX:= HHGear^.dX + (move * _0_2); |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2740 |
dec(Gear^.Health, fuel div 5); |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2741 |
Gear^.MsgParam:= Gear^.MsgParam or (HHGear^.Message and (gm_Left or gm_Right)); |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2742 |
Gear^.Timer:= GameTicks |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2743 |
end; |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2744 |
|
2376 | 2745 |
// erases them all at once :-/ |
2182
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2746 |
if (Gear^.Timer <> 0) and (GameTicks - Gear^.Timer > 250) then |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2747 |
begin |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2748 |
Gear^.Timer:= 0; |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2749 |
Gear^.MsgParam:= 0 |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2750 |
end; |
ed7e7eb3f9ed
Ugly graphic for jetpack - jetpack should be essentially functional.
nemo
parents:
2181
diff
changeset
|
2751 |
|
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2752 |
if Gear^.Health < 0 then Gear^.Health:= 0; |
2376 | 2753 |
if (GameTicks and $3F) = 0 then |
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2202
diff
changeset
|
2754 |
begin |
2619 | 2755 |
//AddCaption('Fuel: '+inttostr(round(Gear^.Health/20))+'%', cWhiteColor, capgrpAmmostate); |
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2202
diff
changeset
|
2756 |
if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); |
2619 | 2757 |
Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall) |
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2202
diff
changeset
|
2758 |
end; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2759 |
|
2278
28519f4f3f21
requested change by Tiy to Flying Saucer start (hover until first keypress)
nemo
parents:
2267
diff
changeset
|
2760 |
if HHGear^.Message and (gm_Attack or gm_Up or gm_Precise or gm_Left or gm_Right) <> 0 then Gear^.State:= Gear^.State and not gsttmpFlag; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2761 |
HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Precise or gm_Left or gm_Right); |
2376 | 2762 |
HHGear^.State:= HHGear^.State or gstMoving; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2763 |
|
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2764 |
Gear^.X:= HHGear^.X; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2765 |
Gear^.Y:= HHGear^.Y; |
2196 | 2766 |
// For some reason I need to reapply followgear here, something else grabs it otherwise. |
2226
e35b62cb7a1c
Try turning off follow gear while ammo menu is open - needs testing w/ rope/parachute/jetpack
nemo
parents:
2225
diff
changeset
|
2767 |
if not bShowAmmoMenu then FollowGear:= HHGear; |
2278
28519f4f3f21
requested change by Tiy to Flying Saucer start (hover until first keypress)
nemo
parents:
2267
diff
changeset
|
2768 |
|
28519f4f3f21
requested change by Tiy to Flying Saucer start (hover until first keypress)
nemo
parents:
2267
diff
changeset
|
2769 |
if ((Gear^.State and gsttmpFlag) = 0) or (HHGear^.dY < _0) then doStepHedgehogMoving(HHGear); |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2770 |
|
2179 | 2771 |
if (Gear^.Health = 0) |
2180
6c5a339f8e28
Use different group to not erase messages, restore gear deletion on hog damage.
nemo
parents:
2179
diff
changeset
|
2772 |
or (HHGear^.Damage <> 0) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2773 |
or CheckGearDrowning(HHGear) |
2376 | 2774 |
or (TurnTimeLeft = 0) |
2189 | 2775 |
// allow brief ground touches - to be fair on this, might need another counter |
2190 | 2776 |
or (((GameTicks and $1FF) = 0) and (not HHGear^.dY.isNegative) and TestCollisionYwithGear(HHGear, 1)) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2777 |
or ((Gear^.Message and gm_Attack) <> 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2778 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2779 |
with HHGear^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2780 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2781 |
Message:= 0; |
2179 | 2782 |
Active:= true; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2783 |
State:= State or gstMoving |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2784 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2785 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2786 |
isCursorVisible:= false; |
3299 | 2787 |
ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2202
diff
changeset
|
2788 |
// if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); |
2619 | 2789 |
// Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall) |
2790 |
//AddCaption(trmsg[sidFuel]+': '+inttostr(round(Gear^.Health/20))+'%', cWhiteColor, capgrpAmmostate); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2791 |
end |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2792 |
end; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2793 |
|
2647 | 2794 |
//////////////////////////////////////////////////////////////////////////////// |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2795 |
procedure doStepJetpack(Gear: PGear); |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2796 |
var HHGear: PGear; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2797 |
begin |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2798 |
Gear^.doStep:= @doStepJetpackWork; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2799 |
|
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2800 |
HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2801 |
FollowGear:= HHGear; |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
2802 |
AfterAttack; |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2803 |
with HHGear^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2804 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2805 |
State:= State and not gstAttacking; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2806 |
Message:= Message and not (gm_Attack or gm_Up or gm_Precise or gm_Left or gm_Right); |
2301 | 2807 |
if (dY < _0_1) and (dY > -_0_1) then |
2808 |
begin |
|
2809 |
Gear^.State:= Gear^.State or gsttmpFlag; |
|
2810 |
dY:= dY - _0_2 |
|
2811 |
end |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2944
diff
changeset
|
2812 |
end |
2177
c045698e044f
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
nemo
parents:
2143
diff
changeset
|
2813 |
end; |
2983 | 2814 |
|
2815 |
//////////////////////////////////////////////////////////////////////////////// |
|
3149 | 2816 |
procedure doStepBirdyDisappear(Gear: PGear); |
2983 | 2817 |
begin |
3149 | 2818 |
AllInactive:= false; |
2983 | 2819 |
Gear^.Pos:= 0; |
3149 | 2820 |
if Gear^.Timer < 2000 then |
2983 | 2821 |
inc(Gear^.Timer, 1) |
2822 |
else |
|
3075 | 2823 |
begin |
2983 | 2824 |
DeleteGear(Gear); |
3149 | 2825 |
end; |
2983 | 2826 |
end; |
2827 |
||
2828 |
//////////////////////////////////////////////////////////////////////////////// |
|
2829 |
procedure doStepBirdyFly(Gear: PGear); |
|
2830 |
var HHGear: PGear; |
|
3161 | 2831 |
fuel, i: LongInt; |
2983 | 2832 |
move: hwFloat; |
2833 |
begin |
|
2995 | 2834 |
HHGear:= CurrentHedgehog^.Gear; |
2983 | 2835 |
|
3081 | 2836 |
move:= _0_1; |
2983 | 2837 |
fuel:= 50; |
2838 |
||
2839 |
if Gear^.Pos > 0 then |
|
2840 |
dec(Gear^.Pos, 1) |
|
2841 |
else if (HHGear^.Message and (gm_Left or gm_Right or gm_Up)) <> 0 then |
|
2842 |
Gear^.Pos:= 500; |
|
2843 |
||
2844 |
if HHGear^.dX.isNegative then |
|
2845 |
Gear^.Tag:= -1 |
|
2846 |
else |
|
2847 |
Gear^.Tag:= 1; |
|
2848 |
||
2849 |
if (HHGear^.Message and gm_Up) <> 0 then |
|
2850 |
begin |
|
2851 |
if (not HHGear^.dY.isNegative) or (HHGear^.Y > -_256) then |
|
2852 |
HHGear^.dY:= HHGear^.dY - move; |
|
2853 |
HHGear^.dY:= HHGear^.dY - move; |
|
2854 |
dec(Gear^.Health, fuel); |
|
2855 |
Gear^.MsgParam:= Gear^.MsgParam or gm_Up; |
|
2856 |
end; |
|
2857 |
if (HHGear^.Message and gm_Left) <> 0 then move.isNegative:= true; |
|
2858 |
if (HHGear^.Message and (gm_Left or gm_Right)) <> 0 then |
|
2859 |
begin |
|
3081 | 2860 |
HHGear^.dX:= HHGear^.dX + (move * _0_2); |
2983 | 2861 |
dec(Gear^.Health, fuel div 5); |
2862 |
Gear^.MsgParam:= Gear^.MsgParam or (HHGear^.Message and (gm_Left or gm_Right)); |
|
2863 |
end; |
|
2864 |
||
2865 |
if Gear^.Health < 0 then Gear^.Health:= 0; |
|
3172 | 2866 |
if ((GameTicks and $FF) = 0) and (Gear^.Health < 500) then |
2867 |
for i:= ((500-Gear^.Health) div 250) downto 0 do |
|
2868 |
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); |
|
2983 | 2869 |
|
3065 | 2870 |
if (HHGear^.Message and gm_Attack <> 0) then begin |
2871 |
HHGear^.Message := HHGear^.Message and not gm_Attack; |
|
3115 | 2872 |
if Gear^.FlightTime > 0 then begin |
2873 |
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + 32, gtEgg, 0, Gear^.dX * _0_5, Gear^.dY, 0); |
|
3123 | 2874 |
PlaySound(sndBirdyLay); |
3115 | 2875 |
dec(Gear^.FlightTime) |
2876 |
end; |
|
3065 | 2877 |
end; |
2878 |
||
2879 |
if HHGear^.Message and (gm_Up or gm_Precise or gm_Left or gm_Right) <> 0 then Gear^.State:= Gear^.State and not gsttmpFlag; |
|
2983 | 2880 |
HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Precise or gm_Left or gm_Right); |
2881 |
HHGear^.State:= HHGear^.State or gstMoving; |
|
2882 |
||
2883 |
Gear^.X:= HHGear^.X; |
|
2884 |
Gear^.Y:= HHGear^.Y - int2hwFloat(32); |
|
2885 |
// For some reason I need to reapply followgear here, something else grabs it otherwise. |
|
2886 |
if not bShowAmmoMenu then FollowGear:= HHGear; |
|
2887 |
||
2888 |
if ((Gear^.State and gsttmpFlag) = 0) or (HHGear^.dY < _0) then doStepHedgehogMoving(HHGear); |
|
2889 |
||
2890 |
if (Gear^.Health = 0) |
|
2891 |
or (HHGear^.Damage <> 0) |
|
2892 |
or CheckGearDrowning(HHGear) |
|
2893 |
or (TurnTimeLeft = 0) |
|
2894 |
// allow brief ground touches - to be fair on this, might need another counter |
|
2895 |
or (((GameTicks and $1FF) = 0) and (not HHGear^.dY.isNegative) and TestCollisionYwithGear(HHGear, 1)) |
|
2896 |
or ((Gear^.Message and gm_Attack) <> 0) then |
|
2897 |
begin |
|
2898 |
with HHGear^ do |
|
2899 |
begin |
|
2900 |
Message:= 0; |
|
2901 |
Active:= true; |
|
2902 |
State:= State or gstMoving |
|
2903 |
end; |
|
3161 | 2904 |
Gear^.State:= Gear^.State or gstAnimation or gstTmpFlag; |
2905 |
if HHGear^.dY < _0 then |
|
3149 | 2906 |
begin |
3161 | 2907 |
Gear^.dX:= HHGear^.dX; |
2908 |
Gear^.dY:= HHGear^.dY; |
|
3149 | 2909 |
end; |
2910 |
Gear^.Timer:= 0; |
|
2911 |
Gear^.doStep:= @doStepBirdyDisappear; |
|
3150
d212e612c08e
Return control as soon as Birdy begins to disappear
palewolf
parents:
3149
diff
changeset
|
2912 |
CurAmmoGear:= nil; |
2983 | 2913 |
isCursorVisible:= false; |
3150
d212e612c08e
Return control as soon as Birdy begins to disappear
palewolf
parents:
3149
diff
changeset
|
2914 |
AfterAttack; |
2983 | 2915 |
end |
2916 |
end; |
|
2917 |
||
2918 |
//////////////////////////////////////////////////////////////////////////////// |
|
2919 |
procedure doStepBirdyDescend(Gear: PGear); |
|
2920 |
var HHGear: PGear; |
|
2921 |
begin |
|
2922 |
if Gear^.Timer > 0 then |
|
2923 |
dec(Gear^.Timer, 1) |
|
2924 |
else if CurrentHedgehog = nil then |
|
2925 |
begin |
|
3149 | 2926 |
DeleteGear(Gear); |
3150
d212e612c08e
Return control as soon as Birdy begins to disappear
palewolf
parents:
3149
diff
changeset
|
2927 |
AfterAttack; |
2995 | 2928 |
exit |
2983 | 2929 |
end; |
2995 | 2930 |
HHGear:= CurrentHedgehog^.Gear; |
2983 | 2931 |
HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Precise or gm_Left or gm_Right); |
2932 |
if abs(hwRound(HHGear^.Y - Gear^.Y)) > 32 then |
|
2933 |
begin |
|
2995 | 2934 |
if Gear^.Timer = 0 then |
2983 | 2935 |
Gear^.Y:= Gear^.Y + _0_1 |
2936 |
end |
|
2995 | 2937 |
else if Gear^.Timer = 0 then |
2983 | 2938 |
begin |
2939 |
Gear^.doStep:= @doStepBirdyFly; |
|
2940 |
HHGear^.dY:= -_0_2 |
|
2941 |
end |
|
2942 |
end; |
|
2943 |
||
3149 | 2944 |
procedure doStepBirdyAppear(Gear: PGear); |
2945 |
begin |
|
2946 |
Gear^.Pos:= 0; |
|
2947 |
if Gear^.Timer < 2000 then |
|
2948 |
inc(Gear^.Timer, 1) |
|
2949 |
else |
|
2950 |
begin |
|
2951 |
Gear^.Timer:= 500; |
|
2952 |
Gear^.dX:= _0; |
|
2953 |
Gear^.dY:= _0; |
|
2954 |
Gear^.State:= Gear^.State and not gstAnimation; |
|
2955 |
Gear^.doStep:= @doStepBirdyDescend; |
|
2956 |
end |
|
2957 |
end; |
|
2958 |
||
2983 | 2959 |
//////////////////////////////////////////////////////////////////////////////// |
2960 |
procedure doStepBirdy(Gear: PGear); |
|
2961 |
var HHGear: PGear; |
|
2962 |
begin |
|
3149 | 2963 |
gear^.State:= gear^.State or gstAnimation and not gstTmpFlag; |
2964 |
Gear^.doStep:= @doStepBirdyAppear; |
|
2995 | 2965 |
if CurrentHedgehog = nil then |
2966 |
begin |
|
2967 |
DeleteGear(Gear); |
|
2968 |
exit |
|
2969 |
end; |
|
2970 |
||
2971 |
HHGear:= CurrentHedgehog^.Gear; |
|
2972 |
||
2983 | 2973 |
if HHGear^.dX.isNegative then |
2974 |
Gear^.Tag:= -1 |
|
2975 |
else |
|
2976 |
Gear^.Tag:= 1; |
|
2977 |
Gear^.Pos:= 0; |
|
2978 |
AllInactive:= false; |
|
2979 |
FollowGear:= HHGear; |
|
2980 |
with HHGear^ do |
|
2981 |
begin |
|
2982 |
State:= State and not gstAttacking; |
|
2983 |
Message:= Message and not (gm_Attack or gm_Up or gm_Precise or gm_Left or gm_Right) |
|
2984 |
end |
|
2985 |
end; |
|
3032 | 2986 |
|
2987 |
//////////////////////////////////////////////////////////////////////////////// |
|
2988 |
procedure doStepBigExplosionWork(Gear: PGear); |
|
2989 |
var maxMovement: LongInt; |
|
2990 |
begin |
|
2991 |
inc(Gear^.Timer); |
|
2992 |
if (Gear^.Timer and 5) = 0 then |
|
2993 |
begin |
|
2994 |
maxMovement := max(1, 13 - ((Gear^.Timer * 15) div 250)); |
|
2995 |
ShakeCamera(maxMovement); |
|
2996 |
end; |
|
2997 |
if Gear^.Timer > 250 then DeleteGear(Gear); |
|
2998 |
end; |
|
2999 |
||
3000 |
procedure doStepBigExplosion(Gear: PGear); |
|
3001 |
var i: LongWord; |
|
3143 | 3002 |
gX,gY: LongInt; |
3032 | 3003 |
begin |
3143 | 3004 |
gX:= hwRound(Gear^.X); |
3005 |
gY:= hwRound(Gear^.Y); |
|
3006 |
AddVisualGear(gX, gY, vgtSmokeRing); |
|
3007 |
for i:= 0 to 46 do AddVisualGear(gX, gY, vgtFire); |
|
3008 |
for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart); |
|
3009 |
for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart2); |
|
3032 | 3010 |
Gear^.doStep:= @doStepBigExplosionWork |
3011 |
end; |
|
3065 | 3012 |
|
3013 |
//////////////////////////////////////////////////////////////////////////////// |
|
3014 |
procedure doStepEggWork(Gear: PGear); |
|
3115 | 3015 |
var vg: PVisualGear; |
3016 |
i: LongInt; |
|
3065 | 3017 |
begin |
3115 | 3018 |
AllInactive:= false; |
3019 |
Gear^.dX:= Gear^.dX; |
|
3020 |
doStepFallingGear(Gear); |
|
3143 | 3021 |
// CheckGearDrowning(Gear); // already checked for in doStepFallingGear |
3115 | 3022 |
CalcRotationDirAngle(Gear); |
3023 |
||
3024 |
if (Gear^.State and gstCollision) <> 0 then |
|
3025 |
begin |
|
3026 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLPoisoned or EXPLNoGfx); |
|
3027 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLPoisoned or EXPLNoGfx); |
|
3028 |
PlaySound(sndEggBreak); |
|
3029 |
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); |
|
3030 |
vg:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg); |
|
3031 |
if vg <> nil then vg^.Frame:= 2; |
|
3032 |
||
3033 |
for i:= 10 downto 0 do begin |
|
3034 |
vg := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), hwRound(Gear^.Y) - 3 + Random(6), vgtDust); |
|
3035 |
if vg <> nil then vg^.dX := vg^.dX + (Gear^.dX / 5); |
|
3036 |
end; |
|
3037 |
||
3038 |
DeleteGear(Gear); |
|
3039 |
exit |
|
3040 |
end; |
|
3065 | 3041 |
end; |
3342
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3042 |
|
3401
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3043 |
//////////////////////////////////////////////////////////////////////////////// |
3342
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3044 |
procedure doStepPortal(Gear: PGear); |
3407 | 3045 |
var iterator: PGear; |
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3046 |
s: hwFloat; |
3342
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3047 |
begin |
3416 | 3048 |
if (Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) = 0 then |
3049 |
begin |
|
3417
27ff4a6375dd
on portal death: make sure that the linked portal know it has been unlinked
sheepluva
parents:
3416
diff
changeset
|
3050 |
if Gear^.IntersectGear <> nil then Gear^.IntersectGear^.IntersectGear:= nil; |
3416 | 3051 |
DeleteGear(Gear); |
3052 |
EXIT; |
|
3053 |
end; |
|
3054 |
||
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3055 |
if Gear^.IntersectGear <> nil then |
3404 | 3056 |
//if (Gear^.IntersectGear <> nil) then |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3057 |
begin |
3397
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3058 |
iterator:= GearsList; |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3059 |
while iterator <> nil do |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3060 |
begin |
3415 | 3061 |
if (iterator^.Kind <> gtPortal) and (iterator^.PortedCounter < 20) then |
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3062 |
if (((iterator^.State and gstMoving) <> 0) or (Gear^.IntersectGear^.dY.isNegative and not Gear^.dY.isNegative)) |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3063 |
and (hwRound(Distance(Gear^.X-iterator^.X,Gear^.Y-iterator^.Y)) < iterator^.Radius+Gear^.Radius) then // Let's check this one more closely |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3064 |
if (Gear^.dX*iterator^.dX + Gear^.dY*iterator^.dY).isNegative then // make sure object moves towards the portal |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3065 |
begin |
3415 | 3066 |
inc(iterator^.PortedCounter); |
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3067 |
s:= (_1+(Int2hwFloat(Gear^.Radius))) / Distance(Gear^.IntersectGear^.dX, Gear^.IntersectGear^.dY); |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3068 |
iterator^.X:= Gear^.IntersectGear^.X + s * Gear^.IntersectGear^.dX; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3069 |
iterator^.Y:= Gear^.IntersectGear^.Y + s * Gear^.IntersectGear^.dY; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3070 |
s:= Distance(iterator^.dX, iterator^.dY) / Distance(Gear^.IntersectGear^.dX, Gear^.IntersectGear^.dY); |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3071 |
iterator^.dX:= s * Gear^.IntersectGear^.dX; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3072 |
iterator^.dY:= s * Gear^.IntersectGear^.dY; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3073 |
end; |
3397
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3074 |
|
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3075 |
iterator:= iterator^.NextGear; |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3076 |
end; |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3077 |
// do portal stuff |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3078 |
end |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3079 |
|
3342
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3080 |
(* |
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3081 |
|
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3082 |
2) From then on, if doStepPortal is called and a gear of a radius less than or equal to the portal is within X pixels of the portal (we could also check on moving toward the portal I guess, depends how accurate this needs to be) the portal will then locate the first other portal of the opposite type (there should only be one other one), and move that gear's X/Y to that other portal's location, and modify dX/dY to be relative to that other portal's orientation relative to this portal's orientation. This might require some tweaking with offsets of a few pixels to avoid getting gears stuck in land. |
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3083 |
|
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3084 |
*) |
b4f01613dcd7
Some initial stubs for portal just so Tiy will quit nagging. Also let folks know what approximation of physics I plan to try, here.
nemo
parents:
3320
diff
changeset
|
3085 |
end; |
3350 | 3086 |
|
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3087 |
procedure doStepMovingPortal(Gear: PGear); |
3401
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3088 |
var x, y, tx, ty: LongInt;//, bx, by, tangle: LongInt; |
3404 | 3089 |
iterator: PGear; |
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3090 |
s, dx, dy: hwFloat; |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3091 |
begin |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3092 |
Gear^.X:= Gear^.X + Gear^.dX; |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3093 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3094 |
x:= hwRound(Gear^.X); |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3095 |
y:= hwRound(Gear^.Y); |
3407 | 3096 |
tx:= 0; ty:= 0; // avoid compiler hints |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3097 |
|
3408 | 3098 |
if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] > 255) then |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3099 |
begin |
3408 | 3100 |
if not calcSlopeTangent(Gear, x, y, tx, ty, 255) then |
3401
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3101 |
begin |
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3102 |
DeleteGear(Gear); |
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3103 |
EXIT; |
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3104 |
end; |
3414
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3105 |
|
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3106 |
// reject shots at too irregular terrain |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3107 |
if DistanceI(tx,ty) < _10 then |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3108 |
begin |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3109 |
DeleteGear(Gear); |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3110 |
EXIT; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3111 |
end; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3112 |
|
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3113 |
// making a normal, normalized vector |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3114 |
s:= _1/DistanceI(tx,ty); |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3115 |
dx:= -s * ty; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3116 |
dy:= s * tx; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3117 |
|
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3118 |
// make sure the vector is pointing outwards |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3119 |
if not (Gear^.dX*dx + Gear^.dY*dy).isNegative then |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3120 |
begin |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3121 |
dx:= -dx; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3122 |
dy:= -dy; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3123 |
end; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3124 |
|
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3125 |
Gear^.dX:= dx; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3126 |
Gear^.dY:= dy; |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3127 |
|
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3128 |
Gear^.DirAngle:= DxDy2Angle(-dy,dx); |
b2f3bb44777e
some portal changes, warning: no loop prevention yet, note: entry angle not preserved yet
sheepluva
parents:
3413
diff
changeset
|
3129 |
if not Gear^.dX.isNegative then Gear^.DirAngle:= 180-Gear^.DirAngle; |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3130 |
(* |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3131 |
This is not quite doing what I want, but basically hoping to avoid portals just sitting out in midair |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3132 |
Works ok for right angles, aaaand that's about it. |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3133 |
The opposite approach could be taken, we could determine the angle of the land using sheepluva's code and snap the Angle/DirAngle to it. |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3134 |
tangle:= Gear^.Angle+1024; |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3135 |
if tangle > 2048 then dec(tangle,2048); |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3136 |
tx:= hwRound(Gear^.X+SignAs(AngleSin(tangle), Gear^.dX)*_6); |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3137 |
ty:= hwRound(Gear^.Y-AngleCos(tangle)*_6); |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3138 |
bx:= hwRound(Gear^.X-SignAs(AngleSin(tangle), Gear^.dX)*_6); |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3139 |
by:= hwRound(Gear^.Y+AngleCos(tangle)*_6); |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3140 |
*) |
3401
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3141 |
|
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3142 |
|
d5d31d16eccc
add a part of my landslide vector collision and use if for the portal gun DirAngle, not flawless yet
sheepluva
parents:
3399
diff
changeset
|
3143 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3144 |
if ((Gear^.IntersectGear <> nil) and (hwRound(Distance(Gear^.X - Gear^.IntersectGear^.X,Gear^.Y-Gear^.IntersectGear^.Y)) < Gear^.Radius*2)) |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3145 |
(*or |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3146 |
(((ty and LAND_HEIGHT_MASK) = 0) and ((tx and LAND_WIDTH_MASK) = 0) and ((Land[ty, tx] and $FF00) = 0)) or |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3147 |
(((by and LAND_HEIGHT_MASK) = 0) and ((bx and LAND_WIDTH_MASK) = 0) and ((Land[by, bx] and $FF00) = 0))*) |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3148 |
then |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3149 |
begin |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3150 |
if CurrentHedgehog <> nil then |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3151 |
if Gear^.IntersectGear = nil then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1 |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3152 |
else if Gear^.Tag = 2 then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 2 |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3153 |
else CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1; |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3154 |
DeleteGear(Gear) |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3155 |
end |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3156 |
else |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3157 |
begin |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3158 |
if CurrentHedgehog <> nil then |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3159 |
if Gear^.Tag = 2 then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1 |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3160 |
else CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 2; |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3161 |
inc(Gear^.Tag); |
3397
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3162 |
Gear^.doStep:= @doStepPortal; |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3163 |
if Gear^.IntersectGear <> nil then |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3164 |
begin |
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3165 |
Gear^.IntersectGear^.IntersectGear:= Gear; |
3404 | 3166 |
AllInactive:= false; |
3167 |
// This jiggles gears, to ensure a portal connection just placed under a gear takes effect. |
|
3168 |
iterator:= GearsList; |
|
3169 |
while iterator <> nil do |
|
3170 |
begin |
|
3406 | 3171 |
if iterator^.Kind <> gtPortal then |
3172 |
begin |
|
3173 |
iterator^.Active:= true; |
|
3174 |
if iterator^.dY.QWordValue = _0.QWordValue then iterator^.dY.isNegative:= false; |
|
3175 |
iterator^.State:= iterator^.State or gstMoving; |
|
3176 |
DeleteCI(iterator); |
|
3177 |
inc(iterator^.dY.QWordValue,10); |
|
3178 |
end; |
|
3179 |
iterator:= iterator^.NextGear |
|
3404 | 3180 |
end; |
3181 |
doStepPortal(Gear); |
|
3406 | 3182 |
if Gear^.IntersectGear <> nil then Gear^.IntersectGear^.doStep(Gear^.IntersectGear); |
3397
c47af0694a7d
Revert removal of CurAmmoGear from shotgun/deagle (was a silly idea of speeding up the shots)
nemo
parents:
3396
diff
changeset
|
3183 |
end |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3184 |
end |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3185 |
end |
3391 | 3186 |
else if (y > cWaterLine + cVisibleWater + Gear^.Radius) or (y < -LAND_WIDTH) or (x > LAND_WIDTH + LAND_WIDTH) or (x < -LAND_WIDTH) then |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3187 |
begin |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3188 |
if CurrentHedgehog <> nil then |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3189 |
if Gear^.IntersectGear = nil then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1 |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3190 |
else if Gear^.Tag = 2 then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 2 |
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3391
diff
changeset
|
3191 |
else CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1; |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3192 |
DeleteGear(Gear); |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3193 |
end; |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3194 |
end; |
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3384
diff
changeset
|
3195 |
|
3350 | 3196 |
procedure doStepPiano(Gear: PGear); |
3197 |
var r0, r1: LongInt; |
|
3198 |
begin |
|
3199 |
AllInactive:= false; |
|
3351 | 3200 |
if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and ((CurrentHedgehog^.Gear^.Message and gm_Slot) <> 0) then |
3201 |
begin |
|
3202 |
case CurrentHedgehog^.Gear^.MsgParam of |
|
3203 |
0: PlaySound(sndPiano0); |
|
3204 |
1: PlaySound(sndPiano1); |
|
3205 |
2: PlaySound(sndPiano2); |
|
3206 |
3: PlaySound(sndPiano3); |
|
3207 |
4: PlaySound(sndPiano4); |
|
3208 |
5: PlaySound(sndPiano5); |
|
3209 |
6: PlaySound(sndPiano6); |
|
3210 |
7: PlaySound(sndPiano7); |
|
3211 |
else PlaySound(sndPiano8); |
|
3212 |
end; |
|
3213 |
CurrentHedgehog^.Gear^.MsgParam:= 0; |
|
3214 |
CurrentHedgehog^.Gear^.Message:= CurrentHedgehog^.Gear^.Message and not gm_Slot; |
|
3215 |
end; |
|
3216 |
||
3358 | 3217 |
if ((Gear^.Pos = 3) and ((GameFlags and gfSolidLand) <> 0)) or (Gear^.Pos = 20) then // bounce up to 20 times (3 times on gameflagged solid land) before dropping past landscape |
3218 |
begin |
|
3219 |
Gear^.dY:= Gear^.dY + cGravity * 3; |
|
3220 |
Gear^.Y:= Gear^.Y + Gear^.dY; |
|
3221 |
CheckGearDrowning(Gear); |
|
3419
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3222 |
if (Gear^.State and gstDrowning) <> 0 then |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3223 |
begin |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3224 |
if CurrentHedgehog^.Gear <> nil then |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3225 |
begin |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3226 |
// Drown the hedgehog. Could also just delete it, but hey, this gets a caption |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3227 |
CurrentHedgehog^.Gear^.Active:= true; |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3228 |
CurrentHedgehog^.Gear^.X:= Gear^.X; |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3229 |
CurrentHedgehog^.Gear^.Y:=int2hwFloat(cWaterLine+cVisibleWater)+_128; |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3230 |
CurrentHedgehog^.Unplaced:= false |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3231 |
end; |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3232 |
ResumeMusic |
b66a1b597f88
Add drown-the-playing-hog check for case of piano falling off the landscape.
nemo
parents:
3417
diff
changeset
|
3233 |
end; |
3358 | 3234 |
exit |
3235 |
end; |
|
3236 |
||
3237 |
doStepFallingGear(Gear); |
|
3238 |
||
3351 | 3239 |
if (Gear^.State and gstDrowning) <> 0 then |
3399 | 3240 |
begin |
3241 |
if CurrentHedgehog^.Gear <> nil then |
|
3242 |
begin |
|
3243 |
// Drown the hedgehog. Could also just delete it, but hey, this gets a caption |
|
3244 |
CurrentHedgehog^.Gear^.Active:= true; |
|
3245 |
CurrentHedgehog^.Gear^.X:= Gear^.X; |
|
3246 |
CurrentHedgehog^.Gear^.Y:=int2hwFloat(cWaterLine+cVisibleWater)+_128; |
|
3247 |
CurrentHedgehog^.Unplaced:= false |
|
3248 |
end; |
|
3351 | 3249 |
ResumeMusic |
3399 | 3250 |
end |
3351 | 3251 |
else if (Gear^.State and gstCollision) <> 0 then |
3350 | 3252 |
begin |
3253 |
r0:= GetRandom(21); |
|
3254 |
r1:= GetRandom(21); |
|
3255 |
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, EXPLAutoSound); |
|
3256 |
doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, EXPLAutoSound); |
|
3257 |
doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, EXPLAutoSound); |
|
3258 |
Gear^.dY:= -_1; |
|
3358 | 3259 |
Gear^.Pos:= Gear^.Pos + 1; |
3350 | 3260 |
end |
3261 |
else |
|
3356 | 3262 |
Gear^.dY:= Gear^.dY + cGravity * 2; // let it fall faster so itdoesn't take too long for the whole attack |
3382 | 3263 |
end; |
3384 | 3264 |
|
3265 |
||
3266 |
//////////////////////////////////////////////////////////////////////////////// |
|
3267 |
procedure doStepSineGunShotWork(Gear: PGear); |
|
3407 | 3268 |
var x, y, rX, rY, t, tmp, initHealth: LongInt; |
3384 | 3269 |
oX, oY, ldX, ldY, sdX, sdY, sine, lx, ly, amp: hwFloat; |
3270 |
justCollided: boolean; |
|
3271 |
begin |
|
3272 |
AllInactive:= false; |
|
3273 |
initHealth:= Gear^.Health; |
|
3274 |
lX:= Gear^.X; |
|
3275 |
lY:= Gear^.Y; |
|
3276 |
ldX:= Gear^.dX; |
|
3277 |
ldY:= Gear^.dY; |
|
3278 |
sdy:= _0_5/Distance(Gear^.dX,Gear^.dY); |
|
3279 |
ldX:= ldX * sdy; |
|
3280 |
ldY:= ldY * sdy; |
|
3281 |
sdY:= hwAbs(ldX) + hwAbs(ldY); |
|
3282 |
sdX:= _1 - hwAbs(ldX/sdY); |
|
3283 |
sdY:= _1 - hwAbs(ldY/sdY); |
|
3284 |
if (ldX.isNegative = ldY.isNegative) then sdY:= -sdY; |
|
3285 |
||
3286 |
// initial angle depends on current GameTicks |
|
3287 |
t:= GameTicks mod 4096; |
|
3288 |
||
3289 |
||
3290 |
// used for a work-around detection of area that is within land array, but outside borders |
|
3291 |
justCollided:= false; |
|
3292 |
||
3293 |
repeat |
|
3294 |
lX:= lX + ldX; |
|
3295 |
lY:= lY + ldY; |
|
3296 |
oX:= Gear^.X; |
|
3297 |
oY:= Gear^.Y; |
|
3298 |
rX:= hwRound(oX); |
|
3299 |
rY:= hwRound(oY); |
|
3300 |
tmp:= t mod 4096; |
|
3301 |
amp:= _128 * (_1 - hwSqr(int2hwFloat(Gear^.Health)/initHealth)); |
|
3302 |
sine:= amp * AngleSin(tmp mod 2048); |
|
3303 |
sine.isNegative:= (tmp < 2048); |
|
3304 |
inc(t,Gear^.Health div 313); |
|
3305 |
Gear^.X:= lX + (sine * sdX); |
|
3306 |
Gear^.Y:= ly + (sine * sdY); |
|
3307 |
Gear^.dX:= Gear^.X - oX; |
|
3308 |
Gear^.dY:= Gear^.Y - oY; |
|
3309 |
||
3310 |
x:= hwRound(Gear^.X); |
|
3311 |
y:= hwRound(Gear^.Y); |
|
3312 |
||
3313 |
// if borders are on, stop outside land array |
|
3314 |
if hasBorder and (((x and LAND_WIDTH_MASK) <> 0) or ((y and LAND_HEIGHT_MASK) <> 0)) then |
|
3315 |
begin |
|
3316 |
Gear^.Damage:= 0; |
|
3317 |
Gear^.Health:= 0; |
|
3318 |
end |
|
3319 |
else |
|
3320 |
begin |
|
3321 |
if (rY <= cWaterLine) or (y <= cWaterLine) then |
|
3322 |
begin |
|
3323 |
if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) |
|
3324 |
and (Land[y, x] <> 0) then |
|
3325 |
begin |
|
3326 |
if justCollided then |
|
3327 |
begin |
|
3328 |
Gear^.Damage:= 0; |
|
3329 |
Gear^.Health:= 0; |
|
3330 |
end |
|
3331 |
else |
|
3332 |
begin |
|
3333 |
inc(Gear^.Damage,3); |
|
3334 |
justCollided:= true; |
|
3335 |
end; |
|
3336 |
end |
|
3337 |
else |
|
3338 |
justCollided:= false; |
|
3339 |
||
3340 |
// kick nearby hogs, dig tunnel and add some fire |
|
3341 |
// if at least 5 collisions occured |
|
3342 |
if Gear^.Damage > 0 then |
|
3343 |
begin |
|
3344 |
DrawExplosion(rX,rY,Gear^.Radius); |
|
3345 |
||
3346 |
// kick nearby hogs |
|
3347 |
AmmoShove(Gear, 35, 50); |
|
3348 |
||
3349 |
dec(Gear^.Health, Gear^.Damage); |
|
3350 |
Gear^.Damage:= 0; |
|
3351 |
||
3352 |
// add some fire to the tunnel |
|
3353 |
if getRandom(6) = 0 then |
|
3407 | 3354 |
AddGear(x - Gear^.Radius + LongInt(getRandom(2 * Gear^.Radius)), y - getRandom(Gear^.Radius + 1), gtFlame, gsttmpFlag, _0, _0, 0); |
3384 | 3355 |
end; |
3356 |
||
3357 |
if getRandom(100) = 0 then |
|
3358 |
AddGear(x, y, gtSmokeTrace, 0, _0, _0, 0); |
|
3359 |
||
3360 |
end |
|
3361 |
// if underwater get additional damage |
|
3362 |
else dec(Gear^.Health, 5); |
|
3363 |
end; |
|
3364 |
||
3365 |
dec(Gear^.Health); |
|
3366 |
||
3367 |
// decrease bullet size towards the end |
|
3368 |
if (Gear^.Radius > 4) then begin |
|
3369 |
if (Gear^.Health <= (initHealth div 3)) then dec(Gear^.Radius) end |
|
3370 |
else if (Gear^.Radius > 3) then begin |
|
3371 |
if (Gear^.Health <= (initHealth div 4)) then dec(Gear^.Radius) end |
|
3372 |
else if (Gear^.Radius > 2) then begin |
|
3373 |
if (Gear^.Health <= (initHealth div 5)) then dec(Gear^.Radius) end |
|
3374 |
else if (Gear^.Radius > 1) then begin |
|
3375 |
if (Gear^.Health <= (initHealth div 6)) then dec(Gear^.Radius) end; |
|
3376 |
||
3377 |
until (Gear^.Health <= 0); |
|
3378 |
||
3379 |
DeleteGear(Gear); |
|
3380 |
AfterAttack; |
|
3381 |
end; |
|
3382 |
||
3383 |
procedure doStepSineGunShot(Gear: PGear); |
|
3384 |
var HHGear: PGear; |
|
3385 |
begin |
|
3386 |
PlaySound(sndSineGun); |
|
3387 |
||
3388 |
||
3389 |
// push the shooting Hedgehog back |
|
3390 |
HHGear:= CurrentHedgehog^.Gear; |
|
3391 |
Gear^.dX.isNegative:= not Gear^.dX.isNegative; |
|
3392 |
Gear^.dY.isNegative:= not Gear^.dY.isNegative; |
|
3393 |
HHGear^.dX:= Gear^.dX; |
|
3394 |
HHGear^.dY:= Gear^.dY; |
|
3395 |
AmmoShove(Gear, 0, 80); |
|
3396 |
Gear^.dX.isNegative:= not Gear^.dX.isNegative; |
|
3397 |
Gear^.dY.isNegative:= not Gear^.dY.isNegative; |
|
3398 |
||
3399 |
Gear^.doStep:= @doStepSineGunShotWork |
|
3400 |
||
3401 |
end; |