author  nemo 
Sat, 06 Mar 2010 01:21:44 +0000  
changeset 2945  b30e6350a221 
parent 2941  566f967ec22f 
child 2946  1d9e0a541c62 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
1689  3 
* Copyright (c) 20042009 Andrey Korotaev <unC0Rr@gmail.com> 
4  4 
* 
183  5 
* This program is free software; you can redistribute it and/or modify 
6 
* it under the terms of the GNU General Public License as published by 

7 
* the Free Software Foundation; version 2 of the License 

4  8 
* 
183  9 
* This program is distributed in the hope that it will be useful, 
10 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 

11 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12 
* GNU General Public License for more details. 

4  13 
* 
183  14 
* You should have received a copy of the GNU General Public License 
15 
* along with this program; if not, write to the Free Software 

16 
* Foundation, Inc., 59 Temple Place  Suite 330, Boston, MA 021111307, USA 

4  17 
*) 
18 

2622  19 
{$INCLUDE "options.inc"} 
20 

4  21 
unit uGears; 
22 
interface 

351  23 
uses SDLh, uConsts, uFloat; 
4  24 

2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

25 

b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

26 
type 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

27 
PGear = ^TGear; 
1259  28 
TGearStepProcedure = procedure (Gear: PGear); 
29 
TGear = record 

30 
NextGear, PrevGear: PGear; 

31 
Active: Boolean; 

1849  32 
Invulnerable: Boolean; 
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

33 
RenderTimer: Boolean; 
1259  34 
Ammo : PAmmo; 
35 
State : Longword; 

36 
X : hwFloat; 

37 
Y : hwFloat; 

38 
dX: hwFloat; 

39 
dY: hwFloat; 

40 
Kind: TGearType; 

41 
Pos: Longword; 

42 
doStep: TGearStepProcedure; 

43 
Radius: LongInt; 

44 
Angle, Power : Longword; 

45 
DirAngle: real; 

46 
Timer : LongWord; 

47 
Elasticity: hwFloat; 

48 
Friction : hwFloat; 

49 
Message, MsgParam : Longword; 

50 
Hedgehog: pointer; 

2135
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

51 
Health, Damage, Karma: LongInt; 
1259  52 
CollisionIndex: LongInt; 
53 
Tag: LongInt; 

54 
Tex: PTexture; 

55 
Z: Longword; 

56 
IntersectGear: PGear; 

57 
TriggerId: Longword; 

2428  58 
FlightTime: Longword; 
2745  59 
uid: Longword; 
60 
SoundChannel: LongInt 

2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

61 
end; 
4  62 

2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

63 
var AllInactive: boolean; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

64 
PrvInactive: boolean; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

65 
CurAmmoGear: PGear; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

66 
GearsList: PGear; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

67 
KilledHHs: Longword; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

68 
SuddenDeathDmg: Boolean; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

69 
SpeechType: Longword; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

70 
SpeechText: shortstring; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

71 
TrainingTargetGear: PGear; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

72 
skipFlag: boolean; 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset

73 
PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress 
2940  74 
StepSoundTimer: LongInt; 
75 
StepSoundChannel: LongInt; 

2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset

76 

2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset

77 
procedure init_uGears; 
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset

78 
procedure free_uGears; 
371  79 
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; 
4  80 
procedure ProcessGears; 
1849  81 
procedure ResetUtilities; 
2017  82 
procedure ApplyDamage(Gear: PGear; Damage: Longword); 
4  83 
procedure SetAllToActive; 
84 
procedure SetAllHHToActive; 

956  85 
procedure DrawGears; 
4  86 
procedure FreeGearsList; 
10  87 
procedure AddMiscGears; 
4  88 
procedure AssignHHCoords; 
2790  89 
function GearByUID(uid : Longword) : PGear; 
294  90 
procedure InsertGearToList(Gear: PGear); 
91 
procedure RemoveGearFromList(Gear: PGear); 

2726  92 
function ModifyDamage(dmg: Longword; Gear: PGear): Longword; 
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset

93 
procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); 
4  94 

95 
implementation 

2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset

96 
uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics, 
2786  97 
uAIMisc, uLocale, uAI, uAmmos, uTriggers, uStats, uVisualGears, uScript, 
2152  98 
{$IFDEF GLES11} 
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset

99 
gles11; 
1906  100 
{$ELSE} 
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset

101 
GL; 
1906  102 
{$ENDIF} 
789  103 

1207
ceaab010269e
Some adjusting... it still doesn't solve problem fully
unc0rr
parents:
1200
diff
changeset

104 
const MAXROPEPOINTS = 384; 
68  105 
var RopePoints: record 
4  106 
Count: Longword; 
776
8fc7e59d9cb4
Convert the rest of rotated sprites to be rotated by OpenGL
unc0rr
parents:
775
diff
changeset

107 
HookAngle: GLfloat; 
789  108 
ar: array[0..MAXROPEPOINTS] of record 
351  109 
X, Y: hwFloat; 
110 
dLen: hwFloat; 

4  111 
b: boolean; 
112 
end; 

2391  113 
rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f; 
2362  114 
end; 
2811  115 

1515  116 
procedure DeleteGear(Gear: PGear); forward; 
371  117 
procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; 
118 
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; 

1433  119 
//procedure AmmoFlameWork(Ammo: PGear); forward; 
371  120 
function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; forward; 
15  121 
procedure SpawnBoxOfSmth; forward; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
24
diff
changeset

122 
procedure AfterAttack; forward; 
302  123 
procedure HedgehogStep(Gear: PGear); forward; 
1528  124 
procedure doStepHedgehogMoving(Gear: PGear); forward; 
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset

125 
procedure HedgehogChAngle(Gear: PGear); forward; 
506  126 
procedure ShotgunShot(Gear: PGear); forward; 
1689  127 
procedure PickUp(HH, Gear: PGear); forward; 
1964  128 
procedure HHSetWeapon(Gear: PGear); forward; 
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2940
diff
changeset

129 
procedure doStepCase(Gear: PGear); forward; 
1964  130 

4  131 

2599  132 
{$INCLUDE "GSHandlers.inc"} 
133 
{$INCLUDE "HHHandlers.inc"} 

4  134 

135 
const doStepHandlers: array[TGearType] of TGearStepProcedure = ( 

1259  136 
@doStepBomb, 
137 
@doStepHedgehog, 

138 
@doStepGrenade, 

139 
@doStepHealthTag, 

140 
@doStepGrave, 

141 
@doStepUFO, 

142 
@doStepShotgunShot, 

143 
@doStepPickHammer, 

144 
@doStepRope, 

145 
@doStepSmokeTrace, 

146 
@doStepExplosion, 

147 
@doStepMine, 

148 
@doStepCase, 

149 
@doStepDEagleShot, 

150 
@doStepDynamite, 

151 
@doStepBomb, 

152 
@doStepCluster, 

153 
@doStepShover, 

154 
@doStepFlame, 

155 
@doStepFirePunch, 

156 
@doStepActionTimer, 

157 
@doStepActionTimer, 

158 
@doStepActionTimer, 

159 
@doStepParachute, 

160 
@doStepAirAttack, 

161 
@doStepAirBomb, 

162 
@doStepBlowTorch, 

163 
@doStepGirder, 

164 
@doStepTeleport, 

165 
@doStepSwitcher, 

2460  166 
@doStepTarget, 
1259  167 
@doStepMortar, 
168 
@doStepWhip, 

169 
@doStepKamikaze, 

170 
@doStepCake, 

1261  171 
@doStepSeduction, 
1279  172 
@doStepWatermelon, 
1263  173 
@doStepCluster, 
174 
@doStepBomb, 

1298  175 
@doStepSmokeTrace, 
1573  176 
@doStepWaterUp, 
1601  177 
@doStepDrill, 
178 
@doStepBallgun, 

1689  179 
@doStepBomb, 
2017  180 
@doStepRCPlane, 
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:
2168
diff
changeset

181 
@doStepSniperRifleShot, 
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset

182 
@doStepJetpack, 
2911  183 
@doStepMolotov, 
184 
@doStepCase 

1259  185 
); 
4  186 

294  187 
procedure InsertGearToList(Gear: PGear); 
803  188 
var tmp, ptmp: PGear; 
294  189 
begin 
190 
if GearsList = nil then 

1505  191 
GearsList:= Gear 
192 
else begin 

193 
tmp:= GearsList; 

194 
ptmp:= GearsList; 

195 
while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do 

196 
begin 

197 
ptmp:= tmp; 

198 
tmp:= tmp^.NextGear 

199 
end; 

294  200 

1505  201 
if ptmp <> nil then 
202 
begin 

203 
Gear^.NextGear:= ptmp^.NextGear; 

204 
Gear^.PrevGear:= ptmp; 

205 
if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear; 

206 
ptmp^.NextGear:= Gear 

207 
end 

208 
else GearsList:= Gear 

209 
end 

294  210 
end; 
211 

212 
procedure RemoveGearFromList(Gear: PGear); 

213 
begin 

351  214 
if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear; 
1505  215 
if Gear^.PrevGear <> nil then 
216 
Gear^.PrevGear^.NextGear:= Gear^.NextGear 

217 
else 

218 
GearsList:= Gear^.NextGear 

294  219 
end; 
220 

371  221 
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; 
79  222 
const Counter: Longword = 0; 
2695  223 
var gear: PGear; 
4  224 
begin 
79  225 
inc(Counter); 
1495  226 
{$IFDEF DEBUGFILE} 
1503  227 
AddFileLog('AddGear: #' + inttostr(Counter) + ' (' + inttostr(x) + ',' + inttostr(y) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + inttostr(ord(Kind))); 
1495  228 
{$ENDIF} 
229 

2695  230 
New(gear); 
231 
FillChar(gear^, sizeof(TGear), 0); 

232 
gear^.X:= int2hwFloat(X); 

233 
gear^.Y:= int2hwFloat(Y); 

234 
gear^.Kind := Kind; 

235 
gear^.State:= State; 

236 
gear^.Active:= true; 

237 
gear^.dX:= dX; 

238 
gear^.dY:= dY; 

239 
gear^.doStep:= doStepHandlers[Kind]; 

240 
gear^.CollisionIndex:= 1; 

241 
gear^.Timer:= Timer; 

242 
gear^.Z:= cUsualZ; 

243 
gear^.FlightTime:= 0; 

244 
gear^.uid:= Counter; 

2745  245 
gear^.SoundChannel:= 1; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
503
diff
changeset

246 

4  247 
if CurrentTeam <> nil then 
1505  248 
begin 
2695  249 
gear^.Hedgehog:= CurrentHedgehog; 
250 
gear^.IntersectGear:= CurrentHedgehog^.Gear 

1505  251 
end; 
802
ed5450a89b96
Start implementing 'visual gears'  gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents:
789
diff
changeset

252 

4  253 
case Kind of 
915  254 
gtAmmo_Bomb, 
255 
gtClusterBomb: begin 

2695  256 
gear^.Radius:= 4; 
257 
gear^.Elasticity:= _0_6; 

258 
gear^.Friction:= _0_96; 

259 
gear^.RenderTimer:= true; 

260 
if gear^.Timer = 0 then gear^.Timer:= 3000 

4  261 
end; 
1261  262 
gtWatermelon: begin 
2695  263 
gear^.Radius:= 4; 
264 
gear^.Elasticity:= _0_8; 

265 
gear^.Friction:= _0_995; 

266 
gear^.RenderTimer:= true; 

267 
if gear^.Timer = 0 then gear^.Timer:= 3000 

1261  268 
end; 
4  269 
gtHedgehog: begin 
2695  270 
gear^.Radius:= cHHRadius; 
271 
gear^.Elasticity:= _0_35; 

272 
gear^.Friction:= _0_999; 

273 
gear^.Angle:= cMaxAngle div 2; 

274 
gear^.Z:= cHHZ; 

4  275 
end; 
2488  276 
gtAmmo_Grenade: begin // bazooka 
2695  277 
gear^.Radius:= 4; 
4  278 
end; 
279 
gtHealthTag: begin 

2695  280 
gear^.Timer:= 1500; 
281 
gear^.Z:= 2002; 

2017  282 
end; 
4  283 
gtGrave: begin 
2695  284 
gear^.Radius:= 10; 
285 
gear^.Elasticity:= _0_6; 

4  286 
end; 
287 
gtUFO: begin 

2695  288 
gear^.Radius:= 5; 
289 
gear^.Timer:= 500; 

290 
gear^.RenderTimer:= true; 

291 
gear^.Elasticity:= _0_9 

4  292 
end; 
293 
gtShotgunShot: begin 

2695  294 
gear^.Timer:= 900; 
295 
gear^.Radius:= 2 

4  296 
end; 
297 
gtPickHammer: begin 

2695  298 
gear^.Radius:= 10; 
299 
gear^.Timer:= 4000 

4  300 
end; 
1263  301 
gtSmokeTrace, 
302 
gtEvilTrace: begin 

2695  303 
gear^.X:= gear^.X  _16; 
304 
gear^.Y:= gear^.Y  _16; 

305 
gear^.State:= 8; 

306 
gear^.Z:= cSmokeZ 

4  307 
end; 
308 
gtRope: begin 

2695  309 
gear^.Radius:= 3; 
310 
gear^.Friction:= _450; 

4  311 
RopePoints.Count:= 0; 
312 
end; 

9  313 
gtExplosion: begin 
2695  314 
gear^.X:= gear^.X; 
315 
gear^.Y:= gear^.Y; 

9  316 
end; 
10  317 
gtMine: begin 
2882  318 
gear^.Health:= 10; 
2695  319 
gear^.State:= gear^.State or gstMoving; 
320 
gear^.Radius:= 2; 

321 
gear^.Elasticity:= _0_55; 

322 
gear^.Friction:= _0_995; 

2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2028
diff
changeset

323 
if cMinesTime < 0 then 
2695  324 
gear^.Timer:= getrandom(4)*1000 
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2028
diff
changeset

325 
else 
2695  326 
gear^.Timer:= cMinesTime*1; 
10  327 
end; 
14
81f125629b25
 Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
10
diff
changeset

328 
gtCase: begin 
2695  329 
gear^.Radius:= 16; 
330 
gear^.Elasticity:= _0_3 

14
81f125629b25
 Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
10
diff
changeset

331 
end; 
2911  332 
gtExplosives: begin 
333 
gear^.Radius:= 16; 

2933  334 
gear^.Elasticity:= _0_4; 
2938  335 
gear^.Friction:= _0_995; 
2911  336 
gear^.Health:= cBarrelHealth 
337 
end; 

37  338 
gtDEagleShot: begin 
2695  339 
gear^.Radius:= 1; 
340 
gear^.Health:= 50 

37  341 
end; 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

342 
gtSniperRifleShot: begin 
2695  343 
gear^.Radius:= 1; 
344 
gear^.Health:= 50 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

345 
end; 
39  346 
gtDynamite: begin 
2695  347 
gear^.Radius:= 3; 
348 
gear^.Elasticity:= _0_55; 

349 
gear^.Friction:= _0_03; 

350 
gear^.Timer:= 5000; 

39  351 
end; 
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

352 
gtCluster: begin 
2695  353 
gear^.Radius:= 2; 
354 
gear^.RenderTimer:= true 

2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

355 
end; 
2695  356 
gtShover: gear^.Radius:= 20; 
79  357 
gtFlame: begin 
2695  358 
gear^.Tag:= GetRandom(32); 
359 
gear^.Radius:= 1; 

360 
gear^.Health:= 5; 

361 
if (gear^.dY.QWordValue = 0) and (gear^.dX.QWordValue = 0) then 

1555  362 
begin 
2695  363 
gear^.dY:= (getrandom  _0_8) * _0_03; 
364 
gear^.dX:= (getrandom  _0_5) * _0_4 

1555  365 
end 
79  366 
end; 
82  367 
gtFirePunch: begin 
2695  368 
gear^.Radius:= 15; 
369 
gear^.Tag:= Y 

82  370 
end; 
302  371 
gtAirBomb: begin 
2695  372 
gear^.Radius:= 5; 
302  373 
end; 
374 
gtBlowTorch: begin 

2695  375 
gear^.Radius:= cHHRadius + cBlowTorchC; 
376 
gear^.Timer:= 7500 

302  377 
end; 
540  378 
gtSwitcher: begin 
2695  379 
gear^.Z:= cCurrHHZ 
540  380 
end; 
593  381 
gtTarget: begin 
2695  382 
gear^.Radius:= 10; 
383 
gear^.Elasticity:= _0_3; 

384 
gear^.Timer:= 0 

593  385 
end; 
924  386 
gtMortar: begin 
2695  387 
gear^.Radius:= 4; 
388 
gear^.Elasticity:= _0_2; 

389 
gear^.Friction:= _0_08 

924  390 
end; 
2695  391 
gtWhip: gear^.Radius:= 20; 
984  392 
gtKamikaze: begin 
2695  393 
gear^.Health:= 2048; 
394 
gear^.Radius:= 20 

984  395 
end; 
1089  396 
gtCake: begin 
2695  397 
gear^.Health:= 2048; 
398 
gear^.Radius:= 7; 

399 
gear^.Z:= cOnHHZ; 

400 
gear^.RenderTimer:= true; 

401 
if not dX.isNegative then gear^.Angle:= 1 else gear^.Angle:= 3 

1089  402 
end; 
1263  403 
gtHellishBomb: begin 
2695  404 
gear^.Radius:= 4; 
405 
gear^.Elasticity:= _0_5; 

406 
gear^.Friction:= _0_96; 

407 
gear^.RenderTimer:= true; 

408 
gear^.Timer:= 5000 

1263  409 
end; 
1573  410 
gtDrill: begin 
2695  411 
gear^.Timer:= 5000; 
412 
gear^.Radius:= 4 

1573  413 
end; 
1601  414 
gtBall: begin 
2695  415 
gear^.Radius:= 5; 
416 
gear^.Tag:= random(8); 

417 
gear^.Timer:= 5000; 

418 
gear^.Elasticity:= _0_7; 

419 
gear^.Friction:= _0_995; 

1601  420 
end; 
421 
gtBallgun: begin 

2695  422 
gear^.Timer:= 5001; 
1601  423 
end; 
1689  424 
gtRCPlane: begin 
2695  425 
gear^.Timer:= 15000; 
426 
gear^.Health:= 3; 

427 
gear^.Radius:= 8 

1689  428 
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:
2168
diff
changeset

429 
gtJetpack: begin 
2695  430 
gear^.Health:= 2000; 
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:
2168
diff
changeset

431 
end; 
2488  432 
gtMolotov: begin 
2695  433 
gear^.Radius:= 8; 
2488  434 
end; 
4  435 
end; 
2695  436 
InsertGearToList(gear); 
437 
AddGear:= gear; 

2786  438 

2792  439 
ScriptCall('onGearAdd', gear^.uid); 
4  440 
end; 
441 

1515  442 
procedure DeleteGear(Gear: PGear); 
48  443 
var team: PTeam; 
2760
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

444 
t,i: Longword; 
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

445 
k: boolean; 
4  446 
begin 
2786  447 

2792  448 
ScriptCall('onGearDelete', gear^.uid); 
2786  449 

503  450 
DeleteCI(Gear); 
762  451 

452 
if Gear^.Tex <> nil then 

1495  453 
begin 
454 
FreeTexture(Gear^.Tex); 

455 
Gear^.Tex:= nil 

456 
end; 

762  457 

351  458 
if Gear^.Kind = gtHedgehog then 
2079  459 
if (CurAmmoGear <> nil) and (CurrentHedgehog^.Gear = Gear) then 
1495  460 
begin 
461 
Gear^.Message:= gm_Destroy; 

462 
CurAmmoGear^.Message:= gm_Destroy; 

463 
exit 

464 
end 

465 
else 

466 
begin 

2076
aa3263e57b8f
increase # of mines to 50, limit max depth of drowning damage tag
nemo
parents:
2074
diff
changeset

467 
if (hwRound(Gear^.Y) >= cWaterLine) then 
1495  468 
begin 
469 
t:= max(Gear^.Damage, Gear^.Health); 

470 
Gear^.Damage:= t; 

2840
bb9117753fe4
Skip drawing some stuff if water is opaque. Affects simulation.
nemo
parents:
2824
diff
changeset

471 
if cWaterOpacity < $FF then 
bb9117753fe4
Skip drawing some stuff if water is opaque. Affects simulation.
nemo
parents:
2824
diff
changeset

472 
AddGear(hwRound(Gear^.X), min(hwRound(Gear^.Y),cWaterLine+cVisibleWater+32), gtHealthTag, t, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; 
1495  473 
uStats.HedgehogDamaged(Gear) 
474 
end; 

2376  475 

1495  476 
team:= PHedgehog(Gear^.Hedgehog)^.Team; 
477 
if CurrentHedgehog^.Gear = Gear then 

478 
FreeActionsList; // to avoid ThinkThread on drawned gear 

2376  479 

2760
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

480 
PHedgehog(Gear^.Hedgehog)^.Gear:= nil; 
2726  481 
if PHedgehog(Gear^.Hedgehog)^.King then 
2758
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset

482 
begin 
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset

483 
// are there any other kings left? Just doing nil check. Presumably a mortally wounded king will get reaped soon enough 
2760
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

484 
k:= false; 
2726  485 
for i:= 0 to Pred(team^.Clan^.TeamsNumber) do 
2760
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

486 
if (team^.Clan^.Teams[i]^.Hedgehogs[0].Gear <> nil) then k:= true; 
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset

487 
if not k then 
2758
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset

488 
for i:= 0 to Pred(team^.Clan^.TeamsNumber) do 
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset

489 
TeamGoneEffect(team^.Clan^.Teams[i]^) 
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset

490 
end; 
1495  491 
inc(KilledHHs); 
1515  492 
RecountTeamHealth(team) 
1495  493 
end; 
494 
{$IFDEF DEBUGFILE} 

1503  495 
with Gear^ do AddFileLog('Delete: #' + inttostr(uid) + ' (' + inttostr(hwRound(x)) + ',' + inttostr(hwRound(y)) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + inttostr(ord(Kind))); 
1495  496 
{$ENDIF} 
497 

595
5ee863f2f568
Triggers PoC: targets are spawned right after the previous damaged
unc0rr
parents:
593
diff
changeset

498 
if Gear^.TriggerId <> 0 then TickTrigger(Gear^.TriggerId); 
82  499 
if CurAmmoGear = Gear then CurAmmoGear:= nil; 
4  500 
if FollowGear = Gear then FollowGear:= nil; 
294  501 
RemoveGearFromList(Gear); 
1515  502 
Dispose(Gear) 
4  503 
end; 
504 

505 
function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs 

506 
var Gear: PGear; 

1849  507 
dmg: LongInt; 
4  508 
begin 
351  509 
CheckNoDamage:= true; 
4  510 
Gear:= GearsList; 
511 
while Gear <> nil do 

867  512 
begin 
513 
if Gear^.Kind = gtHedgehog then 

1861  514 
begin 
2135
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

515 
if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma); 
1849  516 
if (Gear^.Damage <> 0) and 
517 
(not Gear^.Invulnerable) then 

1861  518 
begin 
519 
CheckNoDamage:= false; 

520 
uStats.HedgehogDamaged(Gear); 

521 
dmg:= Gear^.Damage; 

522 
if Gear^.Health < dmg then 

523 
Gear^.Health:= 0 

524 
else 

525 
dec(Gear^.Health, dmg); 

351  526 

2017  527 
if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and 
2135
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

528 
(Gear^.Damage <> Gear^.Karma) and 
2824
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

529 
not PHedgehog(Gear^.Hedgehog)^.King and 
2017  530 
not SuddenDeathDmg then 
531 
Gear^.State:= Gear^.State or gstLoser; 

532 

1861  533 
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y)  cHHRadius  12, 
534 
gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog; 

867  535 

1861  536 
RenderHealth(PHedgehog(Gear^.Hedgehog)^); 
537 
RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team); 

1505  538 

1861  539 
end; 
2135
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

540 
if (not isInMultiShoot) then Gear^.Karma:= 0; 
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

541 
Gear^.Damage:= 0 
1861  542 
end; 
867  543 
Gear:= Gear^.NextGear 
544 
end; 

2017  545 
SuddenDeathDmg:= false; 
4  546 
end; 
547 

1054  548 
procedure HealthMachine; 
549 
var Gear: PGear; 

2824
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

550 
team: PTeam; 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

551 
i: LongWord; 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

552 
flag: Boolean; 
1054  553 
begin 
554 
Gear:= GearsList; 

555 

556 
while Gear <> nil do 

557 
begin 

558 
if Gear^.Kind = gtHedgehog then 

2824
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

559 
begin 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

560 
inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health  1  Gear^.Damage))); 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

561 
if PHedgehog(Gear^.Hedgehog)^.King then 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

562 
begin 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

563 
flag:= false; 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

564 
team:= PHedgehog(Gear^.Hedgehog)^.Team; 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

565 
for i:= 0 to Pred(team^.HedgehogsNumber) do 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

566 
if (team^.Hedgehogs[i].Gear <> nil) and 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

567 
(not team^.Hedgehogs[i].King) and 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

568 
(team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then flag:= true; 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

569 
if not flag then inc(Gear^.Damage, min(5, max(0,Gear^.Health  1  Gear^.Damage))) 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

570 
end 
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

571 
end; 
1054  572 

573 
Gear:= Gear^.NextGear 

574 
end; 

575 
end; 

576 

4  577 
procedure ProcessGears; 
614  578 
const delay: LongWord = 0; 
1797  579 
step: (stDelay, stChDmg, stSweep, stTurnReact, 
1495  580 
stAfterDelay, stChWin, stWater, stChWin2, stHealth, 
581 
stSpawn, stNTurn) = stDelay; 

1054  582 

4  583 
var Gear, t: PGear; 
584 
begin 

868  585 
PrvInactive:= AllInactive; 
4  586 
AllInactive:= true; 
1495  587 

2940  588 
if (StepSoundTimer > 0) and (StepSoundChannel < 0) then 
589 
begin 

590 
WriteLnToConsole('playsteps ...'); 

591 
StepSoundChannel:= LoopSound(sndSteps) 

592 
end 

593 
else if (StepSoundTimer = 0) and (StepSoundChannel > 1) then 

594 
begin 

595 
WriteLnToConsole('stopsteps ...'); 

596 
StopSound(StepSoundChannel); 

597 
StepSoundChannel:= 1; 

598 
end; 

599 

600 
if StepSoundTimer > 0 then 

601 
dec(StepSoundTimer, 1); 

602 

4  603 
t:= GearsList; 
1054  604 
while t <> nil do 
1352
405ad07cf875
Add more support for handling disconnects while playing (not fully tested)
unc0rr
parents:
1346
diff
changeset

605 
begin 
405ad07cf875
Add more support for handling disconnects while playing (not fully tested)
unc0rr
parents:
1346
diff
changeset

606 
Gear:= t; 
405ad07cf875
Add more support for handling disconnects while playing (not fully tested)
unc0rr
parents:
1346
diff
changeset

607 
t:= Gear^.NextGear; 
2376  608 
if Gear^.Active then 
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

609 
begin 
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

610 
if Gear^.RenderTimer and (Gear^.Timer > 500) and ((Gear^.Timer mod 1000) = 0) then 
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

611 
begin 
2376  612 
if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); 
2619  613 
Gear^.Tex:= RenderStringTex(inttostr(Gear^.Timer div 1000), cWhiteColor, fntSmall); 
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

614 
end; 
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

615 
Gear^.doStep(Gear); 
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset

616 
end 
1352
405ad07cf875
Add more support for handling disconnects while playing (not fully tested)
unc0rr
parents:
1346
diff
changeset

617 
end; 
89  618 

4  619 
if AllInactive then 
1343  620 
case step of 
621 
stDelay: begin 

622 
if delay = 0 then 

623 
delay:= cInactDelay 

624 
else 

625 
dec(delay); 

614  626 

1343  627 
if delay = 0 then 
628 
inc(step) 

629 
end; 

1797  630 
stChDmg: if CheckNoDamage then inc(step) else step:= stDelay; 
631 
stSweep: if SweepDirty then 

1792  632 
begin 
1918  633 
SetAllToActive; 
1792  634 
step:= stChDmg 
1797  635 
end else inc(step); 
1343  636 
stTurnReact: begin 
637 
if (not bBetweenTurns) and (not isInMultiShoot) then 

638 
begin 

639 
uStats.TurnReaction; 

640 
inc(step) 

641 
end else 

642 
inc(step, 2); 

643 
end; 

644 
stAfterDelay: begin 

645 
if delay = 0 then 

646 
delay:= cInactDelay 

647 
else 

648 
dec(delay); 

815  649 

1343  650 
if delay = 0 then 
651 
inc(step) 

652 
end; 

653 
stChWin: begin 

654 
CheckForWin; 

655 
inc(step) 

656 
end; 

657 
stWater: if (not bBetweenTurns) and (not isInMultiShoot) then 

658 
begin 

1782
e7589e37a6d6
Options for bonus box probability tuning and number of turn until sudden death
unc0rr
parents:
1781
diff
changeset

659 
if TotalRounds = cSuddenDTurns + 2 then bWaterRising:= true; 
1055
9af540b23409
Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents:
1054
diff
changeset

660 

1343  661 
if bWaterRising then 
662 
AddGear(0, 0, gtWaterUp, 0, _0, _0, 0); 

1055
9af540b23409
Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents:
1054
diff
changeset

663 

1343  664 
inc(step) 
665 
end else inc(step); 

666 
stChWin2: begin 

667 
CheckForWin; 

668 
inc(step) 

669 
end; 

670 
stHealth: begin 

1782
e7589e37a6d6
Options for bonus box probability tuning and number of turn until sudden death
unc0rr
parents:
1781
diff
changeset

671 
if (TotalRounds = cSuddenDTurns) and (cHealthDecrease = 0) then 
1343  672 
begin 
673 
cHealthDecrease:= 5; 

2619  674 
AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); 
2745  675 
playSound(sndSuddenDeath) 
1343  676 
end; 
1055
9af540b23409
Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents:
1054
diff
changeset

677 

2824
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

678 
if bBetweenTurns 
1343  679 
or isInMultiShoot 
680 
or (TotalRounds = 0) then inc(step) 

681 
else begin 

682 
bBetweenTurns:= true; 

683 
HealthMachine; 

2824
2d25e49bc2e8
Extra incentive to attack nonking hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset

684 
if cHealthDecrease > 0 then SuddenDeathDmg:= true; 
1343  685 
step:= stChDmg 
686 
end 

687 
end; 

688 
stSpawn: begin 

689 
if not isInMultiShoot then SpawnBoxOfSmth; 

690 
inc(step) 

691 
end; 

692 
stNTurn: begin 

2608  693 
if isInMultiShoot then 
694 
isInMultiShoot:= false 

1343  695 
else begin 
2608  696 
// delayed till after 0.9.12 
697 
// reset to default zoom 

698 
//ZoomValue:= ZoomDefault; 

699 
with CurrentHedgehog^ do 

2611  700 
if (Gear <> nil) 
701 
and ((Gear^.State and gstAttacked) = 0) 

2608  702 
and (MultiShootAttacks > 0) then OnUsedAmmo(CurrentHedgehog^); 
703 

704 
ResetUtilities; 

2376  705 

2608  706 
FreeActionsList; // could send left, right and similar commands, so should be called before /nextturn 
1298  707 

2608  708 
ParseCommand('/nextturn', true); 
709 
SwitchHedgehog; 

1298  710 

2608  711 
AfterSwitchHedgehog; 
712 
bBetweenTurns:= false 

713 
end; 

1343  714 
step:= Low(step) 
715 
end; 

716 
end; 

15  717 

4  718 
if TurnTimeLeft > 0 then 
870  719 
if CurrentHedgehog^.Gear <> nil then 
720 
if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) 

721 
and not isInMultiShoot then 

722 
begin 

723 
if (TurnTimeLeft = 5000) 

2770
851313907bcb
Decrease king buff from 150% bonus to 50% bonus, disable warning sound in placement mode
nemo
parents:
2762
diff
changeset

724 
and (not PlacingHogs) 
870  725 
and (CurrentHedgehog^.Gear <> nil) 
1669  726 
and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) then 
2745  727 
PlaySound(sndHurry, CurrentTeam^.voicepack); 
870  728 
dec(TurnTimeLeft) 
729 
end; 

351  730 

2621
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

731 
if skipFlag then 
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

732 
begin 
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

733 
TurnTimeLeft:= 0; 
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

734 
skipFlag:= false 
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

735 
end; 
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset

736 

2134  737 
if ((GameTicks and $FFFF) = $FFFF) then 
917  738 
begin 
2134  739 
if (not CurrentTeam^.ExtDriven) then 
740 
SendIPCTimeInc; 

741 

742 
if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then 

743 
inc(hiTicks) // we do not recieve a message for this 

917  744 
end; 
656
6d6d9d7b1054
Fix network game bug caused by recent protocol changes
unc0rr
parents:
651
diff
changeset

745 

515  746 
inc(GameTicks) 
4  747 
end; 
748 

1854  749 
//Purpose, to reset all transient attributes toggled by a utility. 
750 
//If any of these are set as permanent toggles in the frontend, that needs to be checked and skipped here. 

1849  751 
procedure ResetUtilities; 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

752 
var i: LongInt; 
1849  753 
begin 
2221  754 
SpeechText:= ''; // in case it has not been consumed 
2017  755 

1895  756 
if (GameFlags and gfLowGravity) = 0 then 
757 
cGravity:= cMaxWindSpeed; 

758 

2017  759 
if (GameFlags and gfVampiric) = 0 then 
760 
cVampiric:= false; 

761 

1849  762 
cDamageModifier:= _1; 
1895  763 

764 
if (GameFlags and gfLaserSight) = 0 then 

765 
cLaserSighting:= false; 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

766 

41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

767 
if (GameFlags and gfArtillery) = 0 then 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

768 
cArtillery:= false; 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

769 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

770 
// have to sweep *all* current team hedgehogs since it is theoretically possible if you have enough invulnerabilities and switch turns to make your entire team invulnerable 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

771 
if (CurrentTeam <> nil) then 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

772 
with CurrentTeam^ do 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

773 
for i:= 0 to cMaxHHIndex do 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

774 
with Hedgehogs[i] do 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

775 
begin 
2045
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

776 
if (SpeechGear <> nil) then 
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

777 
begin 
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

778 
DeleteVisualGear(SpeechGear); // remove to restore persisting beyond end of turn. Tiy says was too much of a gameplay issue 
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

779 
SpeechGear:= nil 
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

780 
end; 
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

781 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

782 
if (Gear <> nil) then 
2730
f56592281526
Remove king invulnerability, disable everything but teleport instead.
nemo
parents:
2729
diff
changeset

783 
if (GameFlags and gfInvulnerable) = 0 then 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

784 
Gear^.Invulnerable:= false; 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

785 
end; 
1849  786 
end; 
2045
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

787 

2017  788 
procedure ApplyDamage(Gear: PGear; Damage: Longword); 
789 
var s: shortstring; 

2428  790 
vampDmg, tmpDmg, i: Longword; 
791 
vg: PVisualGear; 

2017  792 
begin 
2074  793 
if (Gear^.Kind = gtHedgehog) and (Damage>=1) then 
2017  794 
begin 
795 
AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); 

2067
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

796 
tmpDmg:= min(Damage, max(0,Gear^.HealthGear^.Damage)); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

797 
if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then 
2017  798 
begin 
799 
if cVampiric then 

800 
begin 

2067
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

801 
vampDmg:= hwRound(int2hwFloat(tmpDmg)*_0_8); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

802 
if vampDmg >= 1 then 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

803 
begin 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

804 
// was considering pulsing on attack, Tiy thinks it should be permanent while in play 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

805 
//CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstVampiric; 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

806 
inc(CurrentHedgehog^.Gear^.Health,vampDmg); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

807 
str(vampDmg, s); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

808 
s:= '+' + s; 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

809 
AddCaption(s, CurrentHedgehog^.Team^.Clan^.Color, capgrpAmmoinfo); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

810 
RenderHealth(CurrentHedgehog^); 
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

811 
RecountTeamHealth(CurrentHedgehog^.Team); 
2428  812 
i:= 0; 
813 
while i < vampDmg do 

814 
begin 

815 
vg:= AddVisualGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), vgtHealth); 

816 
if vg <> nil then vg^.Frame:= 10; 

817 
inc(i, 5); 

818 
end; 

2067
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

819 
end 
2017  820 
end; 
2376  821 
if ((GameFlags and gfKarma) <> 0) and 
2017  822 
((GameFlags and gfInvulnerable) = 0) and 
823 
not CurrentHedgehog^.Gear^.Invulnerable then 

824 
begin // this cannot just use Damage or it interrupts shotgun and gets you called stupid 

2135
0b7972dfad01
Push karma application to end of round  should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset

825 
inc(CurrentHedgehog^.Gear^.Karma, tmpDmg); 
2376  826 
AddGear(hwRound(CurrentHedgehog^.Gear^.X), 
827 
hwRound(CurrentHedgehog^.Gear^.Y), 

2067
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset

828 
gtHealthTag, tmpDmg, _0, _0, 0)^.Hedgehog:= CurrentHedgehog; 
2017  829 
end; 
830 
end; 

831 
end; 

2057
cf0d84479251
Prevent gaining more health than hedgehog actually has
nemo
parents:
2053
diff
changeset

832 
inc(Gear^.Damage, Damage); 
2017  833 
end; 
1849  834 

4  835 
procedure SetAllToActive; 
836 
var t: PGear; 

837 
begin 

838 
AllInactive:= false; 

839 
t:= GearsList; 

351  840 
while t <> nil do 
1505  841 
begin 
842 
t^.Active:= true; 

843 
t:= t^.NextGear 

844 
end 

4  845 
end; 
846 

847 
procedure SetAllHHToActive; 

848 
var t: PGear; 

849 
begin 

850 
AllInactive:= false; 

851 
t:= GearsList; 

351  852 
while t <> nil do 
1505  853 
begin 
854 
if t^.Kind = gtHedgehog then t^.Active:= true; 

855 
t:= t^.NextGear 

856 
end 

4  857 
end; 
858 

2811  859 
procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt); 
2802  860 
begin 
861 
with PHedgehog(Gear^.Hedgehog)^ do 

862 
begin 

2811  863 
if not (((Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then 
864 
exit; 

2814  865 
DrawTexture(round(sx + 16), round(sy + 16), ropeIconTex); 
866 
DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, round(sx + 30), round(sy + 30), ord(Ammo^[CurSlot, CurAmmo].AmmoType)  1, 1, 32, 32); 

2802  867 
end; 
868 
end; 

869 

841
0700e3d3474d
Get rid if deprecated Surface parameter of Draw* calls
unc0rr
parents:
840
diff
changeset

870 
procedure DrawHH(Gear: PGear); 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

871 
var i, t: LongInt; 
822  872 
amt: TAmmoType; 
2020  873 
hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt; // hedgehog, crosshair, temp, sprite, direction 
2597  874 
lx, ly, dx, dy, ax, ay, aAngle, dAngle, hAngle: real; // laser, change 
1253  875 
defaultPos, HatVisible: boolean; 
2852  876 
VertexBuffer: array [0..1] of TVertex2f; 
292  877 
begin 
2852  878 

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

879 
if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; 
2020  880 
m:= 1; 
2137  881 
if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then m:= 1; 
868  882 
if (Gear^.State and gstHHDeath) <> 0 then 
883 
begin 

884 
DrawSprite(sprHHDeath, hwRound(Gear^.X)  16 + WorldDx, hwRound(Gear^.Y)  26 + WorldDy, Gear^.Pos); 

885 
exit 

886 
end; 

1002  887 

824  888 
defaultPos:= true; 
1253  889 
HatVisible:= false; 
847  890 

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

891 
sx:= hwRound(Gear^.X) + 1 + WorldDx; 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

892 
sy:= hwRound(Gear^.Y)  3 + WorldDy; 
2376  893 
if ((Gear^.State and gstWinner) <> 0) and 
1892  894 
((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then 
1011  895 
begin 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

896 
DrawHedgehog(sx, sy, 
1011  897 
hwSign(Gear^.dX), 
898 
2, 

899 
0, 

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

900 
0); 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

901 
defaultPos:= false 
2813
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

902 
end; 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

903 
if (Gear^.State and gstDrowning) <> 0 then 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

904 
begin 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

905 
DrawHedgehog(sx, sy, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

906 
hwSign(Gear^.dX), 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

907 
1, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

908 
7, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

909 
0); 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

910 
defaultPos:= false 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

911 
end else 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

912 
if (Gear^.State and gstLoser) <> 0 then // for now using the jackhammer for its kind of bemused "oops" look 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

913 
begin 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

914 
DrawHedgehog(sx, sy, 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

915 
hwSign(Gear^.dX), 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

916 
2, 
2053
9a8a4add3eff
Use shrug frame for injuring yourself/teammate, add custom theme music to Sheep theme
nemo
parents:
2045
diff
changeset

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

918 
0); 
1011  919 
defaultPos:= false 
920 
end else 

921 

821
e6c0408b54ed
Use 'regular standing' and 'rope swing' hedgehog sprites
unc0rr
parents:
815
diff
changeset

922 
if (Gear^.State and gstHHDriven) <> 0 then 
966  923 
begin 
2376  924 
if ((Gear^.State and gstHHThinking) = 0) and 
925 
ShowCrosshair and 

2028  926 
((Gear^.State and (gstAttacked or gstAnimation)) = 0) then 
927 
begin 

928 
(* These calculations are a little complex for a few reasons: 

929 
1: I need to draw the laser from weapon origin to nearest land 

2376  930 
2: I need to start the beam outside the hedgie for attractiveness. 
931 
3: I need to extend the beam beyond land. 

2028  932 
This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function. 
933 
*) 

934 
dx:= hwSign(Gear^.dX) * m * Sin(Gear^.Angle * pi / cMaxAngle); 

935 
dy:=  Cos(Gear^.Angle * pi / cMaxAngle); 

936 
if cLaserSighting then 

937 
begin 

938 
lx:= hwRound(Gear^.X); 

939 
ly:= hwRound(Gear^.Y); 

940 
lx:= lx + dx * 16; 

941 
ly:= ly + dy * 16; 

942 

943 
ax:= dx * 4; 

944 
ay:= dy * 4; 

945 

946 
tx:= round(lx); 

947 
ty:= round(ly); 

948 
hx:= tx; 

949 
hy:= ty; 

950 
while ((ty and LAND_HEIGHT_MASK) = 0) and 

951 
((tx and LAND_WIDTH_MASK) = 0) and 

952 
(Land[ty, tx] = 0) do 

953 
begin 

954 
lx:= lx + ax; 

955 
ly:= ly + ay; 

956 
tx:= round(lx); 

957 
ty:= round(ly) 

958 
end; 

959 
// reached edge of land. assume infinite beam. Extend it way out past camera 

960 
if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then 

961 
begin 

962 
tx:= round(lx + ax * (LAND_WIDTH div 4)); 

963 
ty:= round(ly + ay * (LAND_WIDTH div 4)); 

964 
end; 

2376  965 

2028  966 
//if (abs(lxtx)>8) or (abs(lyty)>8) then 
967 
begin 

968 
glDisable(GL_TEXTURE_2D); 

969 
glEnable(GL_LINE_SMOOTH); 

970 

2362  971 
glLineWidth(1.0); 
2376  972 

2028  973 
glColor4ub($FF, $00, $00, $C0); 
974 
VertexBuffer[0].X:= hx + WorldDx; 

975 
VertexBuffer[0].Y:= hy + WorldDy; 

976 
VertexBuffer[1].X:= tx + WorldDx; 

977 
VertexBuffer[1].Y:= ty + WorldDy; 

2376  978 

2028  979 
glEnableClientState(GL_VERTEX_ARRAY); 
980 
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); 

981 
glDrawArrays(GL_LINES, 0, Length(VertexBuffer)); 

982 
glColor4f(1, 1, 1, 1); 

983 
glEnable(GL_TEXTURE_2D); 

984 
glDisable(GL_LINE_SMOOTH); 

985 
end; 

986 
end; 

987 
// draw crosshair 

988 
cx:= Round(hwRound(Gear^.X) + dx * 80); 

989 
cy:= Round(hwRound(Gear^.Y) + dy * 80); 

990 
DrawRotatedTex(PHedgehog(Gear^.Hedgehog)^.Team^.CrosshairTex, 

991 
12, 12, cx + WorldDx, cy + WorldDy, 0, 

992 
hwSign(Gear^.dX) * (Gear^.Angle * 180.0) / cMaxAngle); 

993 
end; 

1002  994 
hx:= hwRound(Gear^.X) + 1 + 8 * hwSign(Gear^.dX) + WorldDx; 
995 
hy:= hwRound(Gear^.Y)  2 + WorldDy; 

996 
aangle:= Gear^.Angle * 180 / cMaxAngle  90; 

874  997 

1002  998 
if CurAmmoGear <> nil then 
999 
begin 

1000 
case CurAmmoGear^.Kind of 

1294
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1001 
gtShotgunShot: begin 
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1002 
if (CurAmmoGear^.State and gstAnimation <> 0) then 
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1003 
DrawRotated(sprShotgun, hx, hy, hwSign(Gear^.dX), aangle) 
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1004 
else 
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1005 
DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); 
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1006 
end; 
1002  1007 
gtDEagleShot: DrawRotated(sprDEagle, hx, hy, hwSign(Gear^.dX), aangle); 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1008 
gtSniperRifleShot: begin 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1009 
if (CurAmmoGear^.State and gstAnimation <> 0) then 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1010 
DrawRotatedF(sprSniperRifle, hx, hy, 1, hwSign(Gear^.dX), aangle) 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1011 
else 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1012 
DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle) 
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1013 
end; 
1601  1014 
gtBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle); 
1717  1015 
gtRCPlane: begin 
1016 
DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0); 

1017 
defaultPos:= false 

1018 
end; 

1002  1019 
gtRope: begin 
1020 
if Gear^.X < CurAmmoGear^.X then 

1021 
begin 

1022 
dAngle:= 0; 

2597  1023 
hAngle:= 180; 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1024 
i:= 1 
1002  1025 
end else 
1026 
begin 

1027 
dAngle:= 180; 

2597  1028 
hAngle:= 0; 
2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1029 
i:= 1 
966  1030 
end; 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1031 
sx:= hwRound(Gear^.X) + WorldDx; 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1032 
sy:= hwRound(Gear^.Y) + WorldDy; 
2813
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1033 
if ((Gear^.State and gstWinner) = 0) then 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1034 
begin 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1035 
DrawHedgehog(sx, sy, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1036 
i, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1037 
1, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1038 
0, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1039 
DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1040 
with PHedgehog(Gear^.Hedgehog)^ do 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1041 
if (HatTex <> nil) then 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1042 
DrawRotatedTextureF(HatTex, 1.0, 1.0, 6.0, sx, sy, 0, i, 32, 32, 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1043 
i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); 
25213bcab42f
Keep crosshairs when being kicked by gstWinner (for rope and such)
nemo
parents:
2811
diff
changeset

1044 
end; 
2811  1045 
DrawAltWeapon(Gear, sx, sy); 
1002  1046 
defaultPos:= false 
1047 
end; 

1048 
gtBlowTorch: begin 

1049 
DrawRotated(sprBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); 

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

1050 
DrawHedgehog(sx, sy, 
1002  1051 
hwSign(Gear^.dX), 
1052 
3, 

1113  1053 
PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1054 
0); 
2877
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1055 
with PHedgehog(Gear^.Hedgehog)^ do 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1056 
if (HatTex <> nil) then 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1057 
DrawTextureF(HatTex, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1058 
1, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1059 
sx, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1060 
hwRound(Gear^.Y)  8 + WorldDy, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1061 
0, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1062 
hwSign(Gear^.dX), 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1063 
32, 
7c0d17ac0902
First real reserved hats. Thanks Tiy! Also, seeing if blowtorch looks ok w/ hat on.
nemo
parents:
2860
diff
changeset

1064 
32); 
1002  1065 
defaultPos:= false 
1066 
end; 

1067 
gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180); 

1068 
gtFirePunch: begin 

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

1069 
DrawHedgehog(sx, sy, 
1002  1070 
hwSign(Gear^.dX), 
1071 
1, 

1072 
4, 

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

1073 
0); 
1002  1074 
defaultPos:= false 
1075 
end; 

1892  1076 
gtPickHammer: begin 
1077 
defaultPos:= false; 

1078 
dec(sy,20); 

1079 
end; 

1002  1080 
gtTeleport: defaultPos:= false; 
1010  1081 
gtWhip: begin 
1082 
DrawRotatedF(sprWhip, 

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

1083 
sx, 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1084 
sy, 
1010  1085 
1, 
1086 
hwSign(Gear^.dX), 

1087 
0); 

1088 
defaultPos:= false 

1089 
end; 

1002  1090 
gtKamikaze: begin 
1286  1091 
if CurAmmoGear^.Pos = 0 then 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1092 
DrawHedgehog(sx, sy, 
1286  1093 
hwSign(Gear^.dX), 
1094 
1, 

1095 
6, 

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

1096 
0) 
1286  1097 
else 
1098 
DrawRotatedF(sprKamikaze, 

1099 
hwRound(Gear^.X) + WorldDx, 

1100 
hwRound(Gear^.Y) + WorldDy, 

1101 
CurAmmoGear^.Pos  1, 

2025
692308790912
Adjust routines impacted by DrawRotatedF modification, clear gstHHHJump in rope to avoid crosshair/hat drawing bug.
nemo
parents:
2023
diff
changeset

1102 
hwSign(Gear^.dX), 
692308790912
Adjust routines impacted by DrawRotatedF modification, clear gstHHHJump in rope to avoid crosshair/hat drawing bug.
nemo
parents:
2023
diff
changeset

1103 
aangle); 
1286  1104 
defaultPos:= false 
1105 
end; 

1106 
gtSeduction: begin 

1107 
if CurAmmoGear^.Pos >= 6 then 

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

1108 
DrawHedgehog(sx, sy, 
1286  1109 
hwSign(Gear^.dX), 
1110 
2, 

1111 
2, 

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

1112 
0) 
1286  1113 
else 
1114 
begin 

1115 
DrawRotatedF(sprDress, 

1116 
hwRound(Gear^.X) + WorldDx, 

1117 
hwRound(Gear^.Y) + WorldDy, 

1118 
CurAmmoGear^.Pos, 

1119 
hwSign(Gear^.dX), 

1120 
0); 

1121 
DrawSprite(sprCensored, hwRound(Gear^.X)  32 + WorldDx, hwRound(Gear^.Y)  20 + WorldDy, 0) 

1122 
end; 

1123 
defaultPos:= false 

1124 
end; 

1002  1125 
end; 
1126 

1127 
case CurAmmoGear^.Kind of 

1128 
gtShotgunShot, 

1129 
gtDEagleShot, 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1130 
gtSniperRifleShot, 
1002  1131 
gtShover: begin 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1132 
DrawHedgehog(sx, sy, 
1002  1133 
hwSign(Gear^.dX), 
1134 
0, 

1135 
4, 

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

1136 
0); 
1977  1137 
defaultPos:= false; 
1138 
HatVisible:= true 

1002  1139 
end 
1140 
end 

1141 
end else 

876  1142 

1002  1143 
if ((Gear^.State and gstHHJumping) <> 0) then 
1144 
begin 

2020  1145 
DrawHedgehog(sx, sy, 
1146 
hwSign(Gear^.dX)*m, 

1147 
1, 

1148 
1, 

1149 
0); 

1150 
HatVisible:= true; 

1002  1151 
defaultPos:= false 
1152 
end else 

874  1153 

1913  1154 
if (Gear^.Message and (gm_Left or gm_Right) <> 0) and (not isCursorVisible) then 
824  1155 
begin 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1156 
DrawHedgehog(sx, sy, 
1002  1157 
hwSign(Gear^.dX), 
1158 
0, 

1159 
PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, 

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

1160 
0); 
1257  1161 
defaultPos:= false; 
1162 
HatVisible:= true 

1002  1163 
end 
1164 
else 

1165 

1033  1166 
if ((Gear^.State and gstAnimation) <> 0) then 
1167 
begin 

1034  1168 
DrawRotatedF(Wavez[TWave(Gear^.Tag)].Sprite, 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1169 
sx, 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1170 
sy, 
1033  1171 
Gear^.Pos, 
1172 
hwSign(Gear^.dX), 

1173 
0.0); 

1174 
defaultPos:= false 

1175 
end 

1176 
else 

1002  1177 
if ((Gear^.State and gstAttacked) = 0) then 
1178 
begin 

1179 
amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType; 

1180 
case amt of 

1181 
amBazooka, 

1717  1182 
amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle); 
2457
ecf0c7e7995b
Initial molotov cocktail. Still needs graphics, tweaking of fire behaviour. Also changed probabilities for default weapon sets
nemo
parents:
2455
diff
changeset

1183 
amMolotov: DrawRotated(sprHandMolotov, hx, hy, hwSign(Gear^.dX), aangle); 
1717  1184 
amBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle); 
1185 
amDrill: DrawRotated(sprHandDrill, hx, hy, hwSign(Gear^.dX), aangle); 

1002  1186 
amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle); 
1187 
amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); 

1188 
amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle); 

2023
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset

1189 
amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle); 
1002  1190 
amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, hwSign(Gear^.dX), aangle); 
1717  1191 
amRCPlane: begin 
1192 
DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0); 

1193 
defaultPos:= false 

1194 
end; 

1939  1195 
amGirder: begin 
2376  1196 
DrawSpriteClipped(sprGirder, 
1197 
sx256, 

1198 
sy256, 

1199 
LongInt(topY)+WorldDy, 

1200 
LongInt(rightX)+WorldDx, 

1939  1201 
cWaterLine+WorldDy, 
1202 
LongInt(leftX)+WorldDx); 

1203 
end; 

1002  1204 
end; 
1205 

1206 
case amt of 

1207 
amAirAttack, 

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

1208 
amMineStrike: DrawRotated(sprHandAirAttack, sx, hwRound(Gear^.Y) + WorldDy, hwSign(Gear^.dX), 0); 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1209 
amPickHammer: DrawHedgehog(sx, sy, 
1002  1210 
hwSign(Gear^.dX), 
1211 
1, 

1212 
2, 

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

1213 
0); 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1214 
amTeleport: DrawRotatedF(sprTeleport, sx, sy, 0, hwSign(Gear^.dX), 0); 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1215 
amKamikaze: DrawHedgehog(sx, sy, 
1002  1216 
hwSign(Gear^.dX), 
1217 
1, 

1218 
5, 

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

1219 
0); 
1221  1220 
amWhip: DrawRotatedF(sprWhip, 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1221 
sx, 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1222 
sy, 
1010  1223 
0, 
1224 
hwSign(Gear^.dX), 

1225 
0); 

1002  1226 
else 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1227 
DrawHedgehog(sx, sy, 
822  1228 
hwSign(Gear^.dX), 
1229 
0, 

1002  1230 
4, 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1231 
0); 
2376  1232 

1253  1233 
HatVisible:= true; 
1234 
with PHedgehog(Gear^.Hedgehog)^ do 

1294
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1235 
if (HatTex <> nil) 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1236 
and (HatVisibility > 0) then 
1253  1237 
DrawTextureF(HatTex, 
1238 
HatVisibility, 

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

1239 
sx, 
1253  1240 
hwRound(Gear^.Y)  8 + WorldDy, 
1241 
0, 

1242 
hwSign(Gear^.dX), 

2811  1243 
32, 
1253  1244 
32); 
1002  1245 
end; 
966  1246 

1002  1247 
case amt of 
1248 
amBaseballBat: DrawRotated(sprHandBaseball, 

1249 
hwRound(Gear^.X) + 1  4 * hwSign(Gear^.dX) + WorldDx, 

1250 
hwRound(Gear^.Y) + 6 + WorldDy, hwSign(Gear^.dX), aangle); 

1251 
end; 

966  1252 

1002  1253 
defaultPos:= false 
2182
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1254 
end; 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1255 

1002  1256 
end else // not gstHHDriven 
1012  1257 
begin 
1014
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1258 
if (Gear^.Damage > 0) 
2028  1259 
and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then 
1014
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

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

1261 
DrawHedgehog(sx, sy, 
1012  1262 
hwSign(Gear^.dX), 
1014
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1263 
2, 
1012  1264 
1, 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1265 
Gear^.DirAngle); 
1012  1266 
defaultPos:= false 
1020  1267 
end else 
1014
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1268 

3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1269 
if ((Gear^.State and gstHHJumping) <> 0) then 
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1270 
begin 
2020  1271 
DrawHedgehog(sx, sy, 
1272 
hwSign(Gear^.dX)*m, 

1273 
1, 

1274 
1, 

1275 
0); 

1276 
defaultPos:= false 

1014
3c7d4e7ccdff
 Fix firepunch sprite direction when use in high jump
unc0rr
parents:
1013
diff
changeset

1277 
end; 
1012  1278 
end; 
834  1279 

1251  1280 
with PHedgehog(Gear^.Hedgehog)^ do 
970  1281 
begin 
1251  1282 
if defaultPos then 
1283 
begin 

1284 
DrawRotatedF(sprHHIdle, 

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

1285 
sx, 
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

1286 
sy, 
1251  1287 
(RealTicks div 128 + Gear^.Pos) mod 19, 
1288 
hwSign(Gear^.dX), 

1289 
0); 

1253  1290 
HatVisible:= true; 
1291 
end; 

1292 

1293 
if HatVisible then 

1251  1294 
if HatVisibility < 1.0 then 
1254  1295 
HatVisibility:= HatVisibility + 0.2 
1253  1296 
else 
1251  1297 
else 
1298 
if HatVisibility > 0.0 then 

1254  1299 
HatVisibility:= HatVisibility  0.2; 
2376  1300 

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

1301 
if (HatTex <> nil) 
1294
50198e5c7f02
 Hedgehog doesn't take off hat when shooting from shotgun
unc0rr
parents:
1286
diff
changeset

1302 
and (HatVisibility > 0) then 
1255  1303 
if DefaultPos then 
1304 
DrawTextureF(HatTex, 

1305 
HatVisibility, 

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

1306 
sx, 
1255  1307 
hwRound(Gear^.Y)  8 + WorldDy, 
1308 
(RealTicks div 128 + Gear^.Pos) mod 19, 

1309 
hwSign(Gear^.dX), 

2811  1310 
32, 
1255  1311 
32) 
1312 
else 

1313 
DrawTextureF(HatTex, 

1314 
HatVisibility, 

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

1315 
sx, 
1255  1316 
hwRound(Gear^.Y)  8 + WorldDy, 
1317 
0, 

2020  1318 
hwSign(Gear^.dX)*m, 
2811  1319 
32, 
1255  1320 
32); 
970  1321 
end; 
2182
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1322 
if (Gear^.State and gstHHDriven) <> 0 then 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1323 
begin 
2186
5ec3e4a03d51
disable selection sprite, nudge ship into the air on launch
nemo
parents:
2182
diff
changeset

1324 
(* if (CurAmmoGear = nil) then 
2182
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1325 
begin 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1326 
amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType; 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1327 
case amt of 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1328 
amJetpack: DrawSprite(sprJetpack, sx32, sy32, 0); 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1329 
end 
2186
5ec3e4a03d51
disable selection sprite, nudge ship into the air on launch
nemo
parents:
2182
diff
changeset

1330 
end; *) 
2182
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1331 
if CurAmmoGear <> nil then 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1332 
begin 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1333 
case CurAmmoGear^.Kind of 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1334 
gtJetpack: begin 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1335 
DrawSprite(sprJetpack, sx32, sy32, 0); 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1336 
if (CurAmmoGear^.MsgParam and gm_Up) <> 0 then DrawSprite(sprJetpack, sx32, sy32, 1); 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1337 
if (CurAmmoGear^.MsgParam and gm_Left) <> 0 then DrawSprite(sprJetpack, sx32, sy32, 2); 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1338 
if (CurAmmoGear^.MsgParam and gm_Right) <> 0 then DrawSprite(sprJetpack, sx32, sy32, 3); 
2802  1339 
if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy  40, CurAmmoGear^.Tex); 
2811  1340 
DrawAltWeapon(Gear, sx, sy) 
2182
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1341 
end; 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1342 
end; 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1343 
end 
ed7e7eb3f9ed
Ugly graphic for jetpack  jetpack should be essentially functional.
nemo
parents:
2177
diff
changeset

1344 
end; 
1251  1345 

351  1346 
with PHedgehog(Gear^.Hedgehog)^ do 
994  1347 
begin 
1011  1348 
if ((Gear^.State and not gstWinner) = 0) 
994  1349 
or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then 
958  1350 
begin 
1660  1351 
t:= hwRound(Gear^.Y)  cHHRadius  12 + WorldDy; 
2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1352 
if (cTagsMasks[cTagsMaskIndex] and htTransparent) <> 0 then 
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1353 
glColor4f(1, 1, 1, 0.5); 
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1354 
if ((cTagsMasks[cTagsMaskIndex] and htHealth) <> 0) and ((GameFlags and gfInvulnerable) = 0) then 
1660  1355 
begin 
1356 
dec(t, HealthTagTex^.h + 2); 

1357 
DrawCentered(hwRound(Gear^.X) + WorldDx, t, HealthTagTex) 

1358 
end; 

2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1359 
if (cTagsMasks[cTagsMaskIndex] and htName) <> 0 then 
1660  1360 
begin 
1361 
dec(t, NameTagTex^.h + 2); 

1362 
DrawCentered(hwRound(Gear^.X) + WorldDx, t, NameTagTex) 

1363 
end; 

2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1364 
if (cTagsMasks[cTagsMaskIndex] and htTeamName) <> 0 then 
1660  1365 
begin 
1366 
dec(t, Team^.NameTagTex^.h + 2); 

1367 
DrawCentered(hwRound(Gear^.X) + WorldDx, t, Team^.NameTagTex) 

2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1368 
end; 
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1369 
if (cTagsMasks[cTagsMaskIndex] and htTransparent) <> 0 then 
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2537
diff
changeset

1370 
glColor4f(1, 1, 1, 1) 
958  1371 
end; 
994  1372 
if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog 
958  1373 
begin 
1374 
if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then 