author  unc0rr 
Sun, 30 Jan 2011 21:33:08 +0300  
changeset 4885  bf7f2c1cc235 
parent 4883  7cddc9201a1d 
child 4895  481dfbe69cd2 
permissions  rwrr 
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:
3232
diff
changeset

3 
* Copyright (c) 20042010 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 

4385  23 
uses SDLh, uConsts, uFloat, uTypes; 
3697  24 

3038  25 
procedure initModule; 
26 
procedure freeModule; 

371  27 
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; 
3750
3aa85b5f3318
SpawnCustomCrateAt: spawn crate at random position for x=y=0, also let it return the gear, and luabindings the gear uid
burp
parents:
3749
diff
changeset

28 
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword ): PGear; 
3768  29 
procedure ResurrectHedgehog(gear: PGear); 
4  30 
procedure ProcessGears; 
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset

31 
procedure EndTurnCleanup; 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

32 
procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource); 
4  33 
procedure SetAllToActive; 
34 
procedure SetAllHHToActive; 

956  35 
procedure DrawGears; 
4  36 
procedure FreeGearsList; 
10  37 
procedure AddMiscGears; 
4  38 
procedure AssignHHCoords; 
3405  39 
function GearByUID(uid : Longword) : PGear; 
294  40 
procedure InsertGearToList(Gear: PGear); 
41 
procedure RemoveGearFromList(Gear: PGear); 

3405  42 
function ModifyDamage(dmg: Longword; Gear: PGear): Longword; 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4417
diff
changeset

43 
procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean = false); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4417
diff
changeset

44 
procedure DeleteGear(Gear: PGear); 
4385  45 

4  46 

47 
implementation 

4393  48 
uses uStore, uSound, uTeams, uRandom, uCollisions, uIO, uLandGraphics, 
4373  49 
uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile, uVariables, 
4611  50 
uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, uDebug, uLandTexture; 
789  51 

3697  52 

4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

53 
procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord = $FFFFFFFF); forward; 
371  54 
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; 
1433  55 
//procedure AmmoFlameWork(Ammo: PGear); forward; 
4034
634a8c8682de
add some phone rumbling to big explosions, airbomb and sinegun
koda
parents:
4024
diff
changeset

56 
function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): TPGearArray; forward; 
371  57 
function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; forward; 
15  58 
procedure SpawnBoxOfSmth; forward; 
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
24
diff
changeset

59 
procedure AfterAttack; forward; 
302  60 
procedure HedgehogStep(Gear: PGear); forward; 
1528  61 
procedure doStepHedgehogMoving(Gear: PGear); forward; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

62 
procedure HedgehogChAngle(HHGear: PGear); forward; 
506  63 
procedure ShotgunShot(Gear: PGear); forward; 
1689  64 
procedure PickUp(HH, Gear: PGear); forward; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

65 
procedure HHSetWeapon(HHGear: 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

66 
procedure doStepCase(Gear: PGear); forward; 
1964  67 

2599  68 
{$INCLUDE "GSHandlers.inc"} 
69 
{$INCLUDE "HHHandlers.inc"} 

4  70 

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

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

72 
@doStepBomb, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

73 
@doStepHedgehog, 
4168  74 
@doStepShell, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

75 
@doStepGrave, 
3080  76 
@doStepBee, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

77 
@doStepShotgunShot, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

78 
@doStepPickHammer, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

79 
@doStepRope, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

80 
@doStepMine, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

81 
@doStepCase, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

82 
@doStepDEagleShot, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

83 
@doStepDynamite, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

84 
@doStepBomb, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

85 
@doStepCluster, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

86 
@doStepShover, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

87 
@doStepFlame, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

88 
@doStepFirePunch, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

89 
@doStepActionTimer, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

90 
@doStepActionTimer, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

91 
@doStepActionTimer, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

92 
@doStepParachute, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

93 
@doStepAirAttack, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

94 
@doStepAirBomb, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

95 
@doStepBlowTorch, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

96 
@doStepGirder, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

97 
@doStepTeleport, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

98 
@doStepSwitcher, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

99 
@doStepTarget, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

100 
@doStepMortar, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

101 
@doStepWhip, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

102 
@doStepKamikaze, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

103 
@doStepCake, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

104 
@doStepSeduction, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

105 
@doStepWatermelon, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

106 
@doStepCluster, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

107 
@doStepBomb, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

108 
@doStepWaterUp, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

109 
@doStepDrill, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

110 
@doStepBallgun, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

111 
@doStepBomb, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

112 
@doStepRCPlane, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

113 
@doStepSniperRifleShot, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

114 
@doStepJetpack, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

115 
@doStepMolotov, 
2983  116 
@doStepCase, 
3032  117 
@doStepBirdy, 
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:
3337
diff
changeset

118 
@doStepEggWork, 
3428  119 
@doStepPortalShot, 
3382  120 
@doStepPiano, 
3384  121 
@doStepBomb, 
3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset

122 
@doStepSineGunShot, 
3710  123 
@doStepFlamethrower, 
3712  124 
@doStepSMine, 
3717  125 
@doStepPoisonCloud, 
3720  126 
@doStepHammer, 
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

127 
@doStepHammerHit, 
4313
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset

128 
@doStepResurrector, 
4578  129 
@doStepNapalmBomb, 
4611  130 
@doStepSnowball, 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

131 
@doStepSnowflake, 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

132 
@doStepStructure 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

133 
); 
4  134 

294  135 
procedure InsertGearToList(Gear: PGear); 
803  136 
var tmp, ptmp: PGear; 
294  137 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

138 
tmp:= GearsList; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

139 
ptmp:= GearsList; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

140 
while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

141 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

142 
ptmp:= tmp; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

143 
tmp:= tmp^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

144 
end; 
3697  145 

3442  146 
if ptmp <> tmp then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

147 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

148 
Gear^.NextGear:= ptmp^.NextGear; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

149 
Gear^.PrevGear:= ptmp; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

150 
if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

151 
ptmp^.NextGear:= Gear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

152 
end 
3442  153 
else 
154 
begin 

155 
Gear^.NextGear:= GearsList; 

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

157 
GearsList:= Gear; 

158 
end; 

294  159 
end; 
160 

161 
procedure RemoveGearFromList(Gear: PGear); 

162 
begin 

351  163 
if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear; 
1505  164 
if Gear^.PrevGear <> nil then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

165 
Gear^.PrevGear^.NextGear:= Gear^.NextGear 
1505  166 
else 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

167 
GearsList:= Gear^.NextGear 
294  168 
end; 
169 

3443
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

170 
procedure spawnHealthTagForHH(HHGear: PGear; dmg: Longword); 
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

171 
var tag: PVisualGear; 
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

172 
begin 
3459
c552aa44108d
hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents:
3453
diff
changeset

173 
tag:= AddVisualGear(hwRound(HHGear^.X), hwRound(HHGear^.Y), vgtHealthTag, dmg); 
c552aa44108d
hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents:
3453
diff
changeset

174 
if (tag <> nil) then 
4372  175 
tag^.Hedgehog:= HHGear^.Hedgehog; // the tag needs the tag to determine the text color 
3443
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

176 
AllInactive:= false; 
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

177 
HHGear^.Active:= true; 
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

178 
end; 
14d12df0d363
finishing the gtHealthTag > vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset

179 

371  180 
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; 
79  181 
const Counter: Longword = 0; 
2695  182 
var gear: PGear; 
4  183 
begin 
79  184 
inc(Counter); 
1495  185 
{$IFDEF DEBUGFILE} 
3337  186 
AddFileLog('AddGear: #' + inttostr(Counter) + ' (' + inttostr(x) + ',' + inttostr(y) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind)); 
1495  187 
{$ENDIF} 
188 

2695  189 
New(gear); 
190 
FillChar(gear^, sizeof(TGear), 0); 

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

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

193 
gear^.Kind := Kind; 

194 
gear^.State:= State; 

195 
gear^.Active:= true; 

196 
gear^.dX:= dX; 

197 
gear^.dY:= dY; 

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

199 
gear^.CollisionIndex:= 1; 

200 
gear^.Timer:= Timer; 

201 
gear^.Z:= cUsualZ; 

202 
gear^.FlightTime:= 0; 

203 
gear^.uid:= Counter; 

2745  204 
gear^.SoundChannel:= 1; 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

205 
gear^.ImpactSound:= sndNone; 
3136  206 
gear^.nImpactSounds:= 0; 
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
503
diff
changeset

207 

4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

208 
if CurrentHedgehog <> nil then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

209 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

210 
gear^.Hedgehog:= CurrentHedgehog; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

211 
gear^.IntersectGear:= CurrentHedgehog^.Gear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

213 

4  214 
case Kind of 
4168  215 
gtBomb, 
3382  216 
gtClusterBomb, 
217 
gtGasBomb: begin 

3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

218 
gear^.ImpactSound:= sndGrenadeImpact; 
3136  219 
gear^.nImpactSounds:= 1; 
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3065
diff
changeset

220 
gear^.AdvBounce:= 1; 
4299  221 
gear^.Radius:= 5; 
3475  222 
gear^.Elasticity:= _0_8; 
223 
gear^.Friction:= _0_8; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

224 
gear^.Density:= _1_5; 
2695  225 
gear^.RenderTimer:= true; 
226 
if gear^.Timer = 0 then gear^.Timer:= 3000 

4  227 
end; 
1261  228 
gtWatermelon: begin 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

229 
gear^.ImpactSound:= sndMelonImpact; 
3136  230 
gear^.nImpactSounds:= 1; 
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3065
diff
changeset

231 
gear^.AdvBounce:= 1; 
4299  232 
gear^.Radius:= 6; 
2695  233 
gear^.Elasticity:= _0_8; 
234 
gear^.Friction:= _0_995; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

235 
gear^.Density:= _2; 
2695  236 
gear^.RenderTimer:= true; 
237 
if gear^.Timer = 0 then gear^.Timer:= 3000 

1261  238 
end; 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

239 
gtMelonPiece: begin 
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

240 
gear^.Density:= _2; 
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

241 
end; 
4  242 
gtHedgehog: begin 
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3065
diff
changeset

243 
gear^.AdvBounce:= 1; 
2695  244 
gear^.Radius:= cHHRadius; 
245 
gear^.Elasticity:= _0_35; 

246 
gear^.Friction:= _0_999; 

247 
gear^.Angle:= cMaxAngle div 2; 

4641  248 
gear^.Density:= _3; 
2695  249 
gear^.Z:= cHHZ; 
3768  250 
if (GameFlags and gfAISurvival) <> 0 then 
4372  251 
if gear^.Hedgehog^.BotLevel > 0 then 
252 
gear^.Hedgehog^.Effects[heResurrectable] := true; 

4  253 
end; 
4168  254 
gtShell: begin 
2695  255 
gear^.Radius:= 4; 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

256 
gear^.Density:= _1; 
4  257 
end; 
4578  258 
gtSnowball: begin 
4705
593ef1ad3cd3
ok. restore old [r + 1 + r] for gear width for a moment, and reset snowballs.
nemo
parents:
4704
diff
changeset

259 
gear^.Radius:= 4; 
4578  260 
gear^.Elasticity:= _1; 
261 
gear^.Friction:= _1; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

262 
gear^.Density:= _0_5; 
4578  263 
end; 
4611  264 

265 
gtFlake: begin 

266 
with Gear^ do 

267 
begin 

268 
DirAngle:= random * 360; 

269 
dx.isNegative:= GetRandom(2) = 0; 

270 
dx.QWordValue:= GetRandom(100000000); 

271 
dy.isNegative:= false; 

272 
dy.QWordValue:= GetRandom(70000000); 

273 
if GetRandom(2) = 0 then dx := dx; 

274 
Health:= random(vobFrameTicks); 

275 
Timer:= random(vobFramesCount); 

276 
Angle:= (random(2) * 2  1) * (1 + random(10000)) * vobVelocity 

277 
end 

278 
end; 

4  279 
gtGrave: begin 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

280 
gear^.ImpactSound:= sndGraveImpact; 
3136  281 
gear^.nImpactSounds:= 1; 
2695  282 
gear^.Radius:= 10; 
283 
gear^.Elasticity:= _0_6; 

4  284 
end; 
3080  285 
gtBee: begin 
2695  286 
gear^.Radius:= 5; 
287 
gear^.Timer:= 500; 

288 
gear^.RenderTimer:= true; 

3039  289 
gear^.Elasticity:= _0_9; 
290 
gear^.Tag:= getRandom(32); 

4  291 
end; 
292 
gtShotgunShot: begin 

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

4  295 
end; 
296 
gtPickHammer: begin 

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

4  299 
end; 
3720  300 
gtHammerHit: begin 
301 
gear^.Radius:= 8; 

302 
gear^.Timer:= 125 

303 
end; 

4  304 
gtRope: begin 
2695  305 
gear^.Radius:= 3; 
4406
beb4de0af990
Increase teams to 8 to match the 8 colours, fix issue #108, reenable rope length modifier
nemo
parents:
4403
diff
changeset

306 
gear^.Friction:= _450 * _0_01 * cRopePercent; 
4  307 
RopePoints.Count:= 0; 
308 
end; 

10  309 
gtMine: begin 
2882  310 
gear^.Health:= 10; 
2695  311 
gear^.State:= gear^.State or gstMoving; 
312 
gear^.Radius:= 2; 

313 
gear^.Elasticity:= _0_55; 

314 
gear^.Friction:= _0_995; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

315 
gear^.Density:= _0_9; 
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2028
diff
changeset

316 
if cMinesTime < 0 then 
4248  317 
gear^.Timer:= getrandom(51)*100 
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2028
diff
changeset

318 
else 
4482  319 
gear^.Timer:= cMinesTime; 
10  320 
end; 
3710  321 
gtSMine: begin 
322 
gear^.Health:= 10; 

323 
gear^.State:= gear^.State or gstMoving; 

324 
gear^.Radius:= 2; 

325 
gear^.Elasticity:= _0_55; 

326 
gear^.Friction:= _0_995; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

327 
gear^.Density:= _0_9; 
3710  328 
gear^.Timer:= 500; 
329 
end; 

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

330 
gtCase: begin 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

331 
gear^.ImpactSound:= sndGraveImpact; 
3136  332 
gear^.nImpactSounds:= 1; 
2695  333 
gear^.Radius:= 16; 
334 
gear^.Elasticity:= _0_3 

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

335 
end; 
2911  336 
gtExplosives: begin 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

337 
gear^.ImpactSound:= sndGrenadeImpact; 
3136  338 
gear^.nImpactSounds:= 1; 
2911  339 
gear^.Radius:= 16; 
2933  340 
gear^.Elasticity:= _0_4; 
2938  341 
gear^.Friction:= _0_995; 
4641  342 
gear^.Density:= _6; 
2911  343 
gear^.Health:= cBarrelHealth 
344 
end; 

37  345 
gtDEagleShot: begin 
2695  346 
gear^.Radius:= 1; 
347 
gear^.Health:= 50 

37  348 
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

349 
gtSniperRifleShot: begin 
2695  350 
gear^.Radius:= 1; 
351 
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

352 
end; 
39  353 
gtDynamite: begin 
2695  354 
gear^.Radius:= 3; 
355 
gear^.Elasticity:= _0_55; 

356 
gear^.Friction:= _0_03; 

4641  357 
gear^.Density:= _2; 
2695  358 
gear^.Timer:= 5000; 
39  359 
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

360 
gtCluster: begin 
2695  361 
gear^.Radius:= 2; 
4641  362 
gear^.Density:= _1_5; 
2695  363 
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

364 
end; 
2695  365 
gtShover: gear^.Radius:= 20; 
79  366 
gtFlame: begin 
2695  367 
gear^.Tag:= GetRandom(32); 
368 
gear^.Radius:= 1; 

369 
gear^.Health:= 5; 

4641  370 
gear^.Density:= _1; 
2695  371 
if (gear^.dY.QWordValue = 0) and (gear^.dX.QWordValue = 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

372 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

373 
gear^.dY:= (getrandom  _0_8) * _0_03; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

374 
gear^.dX:= (getrandom  _0_5) * _0_4 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

375 
end 
79  376 
end; 
82  377 
gtFirePunch: begin 
2695  378 
gear^.Radius:= 15; 
379 
gear^.Tag:= Y 

82  380 
end; 
302  381 
gtAirBomb: begin 
2695  382 
gear^.Radius:= 5; 
4641  383 
gear^.Density:= _2; 
302  384 
end; 
385 
gtBlowTorch: begin 

2695  386 
gear^.Radius:= cHHRadius + cBlowTorchC; 
387 
gear^.Timer:= 7500 

302  388 
end; 
540  389 
gtSwitcher: begin 
2695  390 
gear^.Z:= cCurrHHZ 
540  391 
end; 
593  392 
gtTarget: begin 
3271  393 
gear^.ImpactSound:= sndGrenadeImpact; 
394 
gear^.nImpactSounds:= 1; 

2695  395 
gear^.Radius:= 10; 
396 
gear^.Elasticity:= _0_3; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

397 
gear^.Timer:= 0 
593  398 
end; 
924  399 
gtMortar: begin 
2695  400 
gear^.Radius:= 4; 
401 
gear^.Elasticity:= _0_2; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

402 
gear^.Friction:= _0_08; 
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

403 
gear^.Density:= _1; 
924  404 
end; 
2695  405 
gtWhip: gear^.Radius:= 20; 
3717  406 
gtHammer: gear^.Radius:= 20; 
984  407 
gtKamikaze: begin 
2695  408 
gear^.Health:= 2048; 
409 
gear^.Radius:= 20 

984  410 
end; 
1089  411 
gtCake: begin 
2695  412 
gear^.Health:= 2048; 
413 
gear^.Radius:= 7; 

414 
gear^.Z:= cOnHHZ; 

415 
gear^.RenderTimer:= true; 

3508
a7ca07614a2d
correct cake sitdown animation so that it doesn't sit down in midair anymore
sheepluva
parents:
3499
diff
changeset

416 
gear^.DirAngle:= 90 * hwSign(Gear^.dX); 
2695  417 
if not dX.isNegative then gear^.Angle:= 1 else gear^.Angle:= 3 
1089  418 
end; 
1263  419 
gtHellishBomb: begin 
3136  420 
gear^.ImpactSound:= sndHellishImpact1; 
421 
gear^.nImpactSounds:= 4; 

3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3065
diff
changeset

422 
gear^.AdvBounce:= 1; 
2695  423 
gear^.Radius:= 4; 
424 
gear^.Elasticity:= _0_5; 

425 
gear^.Friction:= _0_96; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

426 
gear^.Density:= _1_5; 
2695  427 
gear^.RenderTimer:= true; 
428 
gear^.Timer:= 5000 

1263  429 
end; 
1573  430 
gtDrill: begin 
4867
e604ee83e34f
let players set timer of drill strike. yes. drill strike :3 the timer starts to tick on first impact
sheepluva
parents:
4837
diff
changeset

431 
if gear^.Timer = 0 then gear^.Timer:= 5000; 
e604ee83e34f
let players set timer of drill strike. yes. drill strike :3 the timer starts to tick on first impact
sheepluva
parents:
4837
diff
changeset

432 
// Tag for drill strike. if 1 then first impact occured already 
e604ee83e34f
let players set timer of drill strike. yes. drill strike :3 the timer starts to tick on first impact
sheepluva
parents:
4837
diff
changeset

433 
gear^.Tag := 0; 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

434 
gear^.Radius:= 4; 
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

435 
gear^.Density:= _1; 
1573  436 
end; 
1601  437 
gtBall: begin 
3094
97c8406acc85
making collision/impact sounds a gear property + adding random melon+hellish sound, feel free to hate me :D
sheepluva
parents:
3086
diff
changeset

438 
gear^.ImpactSound:= sndGrenadeImpact; 
3136  439 
gear^.nImpactSounds:= 1; 
3072
b18038b3a0f4
I don't know why I'm bothering. Sheepluva has a whole new approach in the works.
nemo
parents:
3065
diff
changeset

440 
gear^.AdvBounce:= 1; 
2695  441 
gear^.Radius:= 5; 
442 
gear^.Tag:= random(8); 

443 
gear^.Timer:= 5000; 

444 
gear^.Elasticity:= _0_7; 

445 
gear^.Friction:= _0_995; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

446 
gear^.Density:= _1_5; 
1601  447 
end; 
448 
gtBallgun: begin 

2695  449 
gear^.Timer:= 5001; 
1601  450 
end; 
1689  451 
gtRCPlane: begin 
2695  452 
gear^.Timer:= 15000; 
453 
gear^.Health:= 3; 

454 
gear^.Radius:= 8 

1689  455 
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

456 
gtJetpack: begin 
2695  457 
gear^.Health:= 2000; 
4260
472fd2fc1f31
Also switch saucer from updating every N ticks to updating asneeded.
nemo
parents:
4258
diff
changeset

458 
gear^.Damage:= 100 
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

459 
end; 
3697  460 
gtMolotov: begin 
2968
f59631c3c1c0
Fix iluvu flag (indexed), shrink molotov radius a bit to try and reduce fail
nemo
parents:
2964
diff
changeset

461 
gear^.Radius:= 6; 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

462 
gear^.Density:= _2; 
2488  463 
end; 
2983  464 
gtBirdy: begin 
465 
gear^.Radius:= 16; // todo: check 

3149  466 
gear^.Timer:= 0; 
3115  467 
gear^.Health := 2000; 
3065  468 
gear^.FlightTime := 2; 
2983  469 
end; 
3697  470 
gtEgg: begin 
3065  471 
gear^.Radius:= 4; 
472 
gear^.Elasticity:= _0_6; 

473 
gear^.Friction:= _0_96; 

4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

474 
gear^.Density:= _1; 
3065  475 
if gear^.Timer = 0 then gear^.Timer:= 3000 
476 
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:
3337
diff
changeset

477 
gtPortal: begin 
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:
3337
diff
changeset

478 
gear^.ImpactSound:= sndMelonImpact; 
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:
3337
diff
changeset

479 
gear^.nImpactSounds:= 1; 
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:
3337
diff
changeset

480 
gear^.AdvBounce:= 0; 
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:
3337
diff
changeset

481 
gear^.Radius:= 16; 
4790  482 
// set color 
483 
gear^.Tag:= 2 * gear^.Timer; 

3428  484 
gear^.Timer:= 15000; 
485 
gear^.RenderTimer:= false; 

486 
gear^.Health:= 100; 

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:
3337
diff
changeset

487 
end; 
3350  488 
gtPiano: begin 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

489 
gear^.Radius:= 32; 
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

490 
gear^.Density:= _50; 
3350  491 
end; 
3384  492 
gtSineGunShot: begin 
493 
gear^.Radius:= 5; 

494 
gear^.Health:= 6000; 

495 
end; 

3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset

496 
gtFlamethrower: begin 
3485  497 
gear^.Tag:= 10; 
498 
gear^.Timer:= 10; 

499 
gear^.Health:= 500; 

4258  500 
gear^.Damage:= 100; 
3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset

501 
end; 
3712  502 
gtPoisonCloud: begin 
503 
gear^.Timer:= 5000; 

3976  504 
gear^.dY:= int2hwfloat(4 + longint(getRandom(8))) / 1000; 
3712  505 
end; 
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

506 
gtResurrector: begin 
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

507 
gear^.Radius := 100; 
4265
039b08012887
distribute health evenly amongst graves instead of randomly  avoid situation where a grave stays dead
nemo
parents:
4260
diff
changeset

508 
gear^.Tag := 0 
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

509 
end; 
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

510 
gtWaterUp: begin 
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

511 
gear^.Tag := 47; 
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

512 
end; 
4313
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset

513 
gtNapalmBomb: begin 
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset

514 
gear^.Timer:= 1000; 
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset

515 
gear^.Radius:= 5; 
4602
ec84fb564bab
added density for gears used in gfMoreWind, needs alot of tweaking
Henek
parents:
4578
diff
changeset

516 
gear^.Density:= _1_5; 
4313
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset

517 
end; 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

518 
gtStructure: begin 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

519 
gear^.ImpactSound:= sndGrenadeImpact; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

520 
gear^.nImpactSounds:= 1; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

521 
gear^.Radius:= 13; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

522 
gear^.Elasticity:= _0_3; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

523 
gear^.Health:= 50; 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

524 
end; 
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

525 
end; 
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobiasneumann.eu>
parents:
3957
diff
changeset

526 

2695  527 
InsertGearToList(gear); 
528 
AddGear:= gear; 

2786  529 

2792  530 
ScriptCall('onGearAdd', gear^.uid); 
4  531 
end; 
532 

1515  533 
procedure DeleteGear(Gear: PGear); 
48  534 
var team: PTeam; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

536 
k: boolean; 
4  537 
begin 
2786  538 

2792  539 
ScriptCall('onGearDelete', gear^.uid); 
2786  540 

503  541 
DeleteCI(Gear); 
762  542 

543 
if Gear^.Tex <> nil then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

544 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

545 
FreeTexture(Gear^.Tex); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

546 
Gear^.Tex:= nil 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

547 
end; 
762  548 

3422
41ae3c48faa0
* some changes/cleanups to portal, still much to do :/ * reverted nemo's temporary loop fix * notice: small loops possible again, so take care :P, bigger onces should be interrupted
sheepluva
parents:
3415
diff
changeset

549 
// make sure that portals have their link removed before deletion 
3428  550 
if (Gear^.Kind = gtPortal) then 
3432
83cef0f08a86
* get rid of some fpc hints (redundant/superfluous includes)
sheepluva
parents:
3429
diff
changeset

551 
begin 
3428  552 
if (Gear^.IntersectGear <> nil) then 
3472
b1832a3761e6
portallinkbugfix: make sure deleted portals don't reset links other than those to themselves
sheepluva
parents:
3471
diff
changeset

553 
if (Gear^.IntersectGear^.IntersectGear = Gear) then 
b1832a3761e6
portallinkbugfix: make sure deleted portals don't reset links other than those to themselves
sheepluva
parents:
3471
diff
changeset

554 
Gear^.IntersectGear^.IntersectGear:= nil; 
3432
83cef0f08a86
* get rid of some fpc hints (redundant/superfluous includes)
sheepluva
parents:
3429
diff
changeset

555 
end 
3422
41ae3c48faa0
* some changes/cleanups to portal, still much to do :/ * reverted nemo's temporary loop fix * notice: small loops possible again, so take care :P, bigger onces should be interrupted
sheepluva
parents:
3415
diff
changeset

556 
else if Gear^.Kind = gtHedgehog then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

557 
if (CurAmmoGear <> nil) and (CurrentHedgehog^.Gear = Gear) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

558 
begin 
3894  559 
Gear^.Message:= gmDestroy; 
560 
CurAmmoGear^.Message:= gmDestroy; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

561 
exit 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

562 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

563 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

564 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

565 
if (hwRound(Gear^.Y) >= cWaterLine) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

566 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

567 
t:= max(Gear^.Damage, Gear^.Health); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

568 
Gear^.Damage:= t; 
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

569 
if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cWaterOpacity < $FF))) and (hwRound(Gear^.Y) < cWaterLine + 256) then 
3461
0781275649e9
revert the restoration of nonvgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset

570 
spawnHealthTagForHH(Gear, t); 
4826
d6a0a38407c8
Inherit hedgehog from gear which caused damage, thus keeping track of which hog actually did the damage
unc0rr
parents:
4824
diff
changeset

571 

4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

572 
// should be not CurrentHedgehog, but hedgehog of the last gear which caused damage to this hog 
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

573 
// same stand for CheckHHDamage 
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

574 
uStats.HedgehogDamaged(Gear, CurrentHedgehog) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

575 
end; 
2376  576 

4365  577 
team:= Gear^.Hedgehog^.Team; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

578 
if CurrentHedgehog^.Gear = Gear then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

579 
FreeActionsList; // to avoid ThinkThread on drawned gear 
2376  580 

4365  581 
Gear^.Hedgehog^.Gear:= nil; 
582 
if 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

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

584 
// 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

585 
k:= false; 
2726  586 
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

587 
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

588 
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

589 
for i:= 0 to Pred(team^.Clan^.TeamsNumber) do 
4037  590 
begin 
591 
team^.Clan^.Teams[i]^.hasGone:= true; 

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

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

594 
end; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

595 
inc(KilledHHs); 
4455
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

596 
RecountTeamHealth(team); 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

597 
if (CurrentHedgehog <> nil) and CurrentHedgehog^.Effects[heResurrectable] and not Gear^.Hedgehog^.Effects[heResurrectable] then 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

598 
with CurrentHedgehog^ do 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

599 
begin 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

600 
inc(Team^.stats.AIKills); 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

601 
if Team^.AIKillsTex <> nil then FreeTexture(Team^.AIKillsTex); 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

602 
Team^.AIKillsTex := RenderStringTex(inttostr(Team^.stats.AIKills), Team^.Clan^.Color, fnt16); 
a0c8779713f2
In AI survival mode, have the AI score when it kills humans, instead of its own team, clear poison on an AI kill, and reset AI health using InitialHealth instead of 100.
nemo
parents:
4443
diff
changeset

603 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

604 
end; 
1495  605 
{$IFDEF DEBUGFILE} 
3337  606 
with Gear^ do AddFileLog('Delete: #' + inttostr(uid) + ' (' + inttostr(hwRound(x)) + ',' + inttostr(hwRound(y)) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind)); 
1495  607 
{$ENDIF} 
608 

82  609 
if CurAmmoGear = Gear then CurAmmoGear:= nil; 
4  610 
if FollowGear = Gear then FollowGear:= nil; 
4780
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

611 
if lastGearByUID = Gear then lastGearByUID := nil; 
294  612 
RemoveGearFromList(Gear); 
1515  613 
Dispose(Gear) 
4  614 
end; 
615 

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

617 
var Gear: PGear; 

1849  618 
dmg: LongInt; 
4  619 
begin 
351  620 
CheckNoDamage:= true; 
4  621 
Gear:= GearsList; 
622 
while Gear <> nil do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

623 
begin 
4120
0aba28eb8e34
more button updates, wait for hogs in infinite attack mode stop moving before clearing their damage (just used an arbitrary small interval)
nemo
parents:
4111
diff
changeset

624 
if (Gear^.Kind = gtHedgehog) and (((GameFlags and gfInfAttack) = 0) or ((Gear^.dX.QWordValue < _0_000004.QWordValue) and (Gear^.dY.QWordValue < _0_000004.QWordValue))) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

625 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

626 
if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

627 
if (Gear^.Damage <> 0) and 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

628 
(not Gear^.Invulnerable) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

629 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

630 
CheckNoDamage:= false; 
4824  631 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

632 
dmg:= Gear^.Damage; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

633 
if Gear^.Health < dmg then 
3453  634 
begin 
635 
Gear^.Active:= true; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

636 
Gear^.Health:= 0 
3453  637 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

638 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

639 
dec(Gear^.Health, dmg); 
351  640 

4365  641 
if (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

642 
(Gear^.Damage <> Gear^.Karma) and 
4365  643 
not Gear^.Hedgehog^.King and 
644 
not Gear^.Hedgehog^.Effects[hePoisoned] and 

2017  645 
not SuddenDeathDmg then 
646 
Gear^.State:= Gear^.State or gstLoser; 

647 

3461
0781275649e9
revert the restoration of nonvgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset

648 
spawnHealthTagForHH(Gear, dmg); 
867  649 

4365  650 
RenderHealth(Gear^.Hedgehog^); 
651 
RecountTeamHealth(Gear^.Hedgehog^.Team); 

1505  652 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

653 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

654 
if (not isInMultiShoot) then Gear^.Karma:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

655 
Gear^.Damage:= 0 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

656 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

657 
Gear:= Gear^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

658 
end; 
4  659 
end; 
660 

1054  661 
procedure HealthMachine; 
662 
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

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

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

665 
flag: Boolean; 
3682  666 
tmp: LongWord; 
1054  667 
begin 
3682  668 
Gear:= GearsList; 
1054  669 

3682  670 
while Gear <> nil do 
671 
begin 

672 
if Gear^.Kind = gtHedgehog then 

673 
begin 

674 
tmp:= 0; 

4365  675 
if Gear^.Hedgehog^.Effects[hePoisoned] then 
4111  676 
begin 
3908
1429c303858d
Can't use cHealthDecrease here for these two 'cause it isn't a generic "do some damage to hog" flag, but is rather set when SD starts
nemo
parents:
3894
diff
changeset

677 
inc(tmp, ModifyDamage(5, Gear)); 
4365  678 
if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth) // does not need a minimum check since <= 1 basically disables it 
4111  679 
end; 
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

680 
if (TotalRounds > cSuddenDTurns  1) then 
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

681 
begin 
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

682 
inc(tmp, cHealthDecrease); 
4365  683 
if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth, cHealthDecrease) 
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

684 
end; 
4365  685 
if Gear^.Hedgehog^.King then 
3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

686 
begin 
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

687 
flag:= false; 
4365  688 
team:= Gear^.Hedgehog^.Team; 
3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

689 
for i:= 0 to Pred(team^.HedgehogsNumber) do 
3697  690 
if (team^.Hedgehogs[i].Gear <> nil) and 
691 
(not team^.Hedgehogs[i].King) and 

692 
(team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) 

3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

693 
then flag:= true; 
4111  694 
if not flag then 
695 
begin 

696 
inc(tmp, 5); 

4365  697 
if (GameFlags and gfResetHealth) <> 0 then dec(Gear^.Hedgehog^.InitialHealth, 5) 
4111  698 
end 
3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

699 
end; 
3845
90034acb2e43
Untested fix of r3672  should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset

700 
if tmp > 0 then 
90034acb2e43
Untested fix of r3672  should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset

701 
begin 
90034acb2e43
Untested fix of r3672  should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset

702 
inc(Gear^.Damage, min(tmp, max(0,Gear^.Health  1  Gear^.Damage))); 
90034acb2e43
Untested fix of r3672  should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset

703 
HHHurt(Gear^.Hedgehog, dsPoison); 
90034acb2e43
Untested fix of r3672  should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset

704 
end 
3682  705 
end; 
1054  706 

3682  707 
Gear:= Gear^.NextGear 
708 
end; 

1054  709 
end; 
710 

4  711 
procedure ProcessGears; 
614  712 
const delay: LongWord = 0; 
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

713 
delay2: LongWord = 0; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

714 
step: (stDelay, stChDmg, stSweep, stTurnReact, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

715 
stAfterDelay, stChWin, stWater, stChWin2, stHealth, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

716 
stSpawn, stNTurn) = stDelay; 
4  717 
var Gear, t: PGear; 
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

718 
i, AliveCount: LongInt; 
3331  719 
s: shortstring; 
4  720 
begin 
868  721 
PrvInactive:= AllInactive; 
4  722 
AllInactive:= true; 
1495  723 

2940  724 
if (StepSoundTimer > 0) and (StepSoundChannel < 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

725 
StepSoundChannel:= LoopSound(sndSteps) 
2940  726 
else if (StepSoundTimer = 0) and (StepSoundChannel > 1) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

727 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

728 
StopSound(StepSoundChannel); 
2993
d83edb74e92d
Remove animation on jumping/resuming walk, only leave it in on weapon switch
nemo
parents:
2991
diff
changeset

729 
StepSoundChannel:= 1 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

730 
end; 
2940  731 

732 
if StepSoundTimer > 0 then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

733 
dec(StepSoundTimer, 1); 
2940  734 

4  735 
t:= GearsList; 
1054  736 
while t <> nil do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

737 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

738 
Gear:= t; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

739 
t:= Gear^.NextGear; 
3123  740 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

741 
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

742 
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

743 
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

744 
begin 
2376  745 
if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); 
2619  746 
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

747 
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

748 
Gear^.doStep(Gear); 
3848  749 
// might be useful later 
4492  750 
//ScriptCall('onGearStep', Gear^.uid); 
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

751 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

752 
end; 
89  753 

4  754 
if AllInactive then 
1343  755 
case step of 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

756 
stDelay: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

757 
if delay = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

758 
delay:= cInactDelay 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

759 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

760 
dec(delay); 
614  761 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

762 
if delay = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

763 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

764 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

765 
stChDmg: if CheckNoDamage then inc(step) else step:= stDelay; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

766 
stSweep: if SweepDirty then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

767 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

768 
SetAllToActive; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

769 
step:= stChDmg 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

770 
end else inc(step); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

771 
stTurnReact: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

772 
if (not bBetweenTurns) and (not isInMultiShoot) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

773 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

774 
uStats.TurnReaction; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

775 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

776 
end else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

777 
inc(step, 2); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

778 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

779 
stAfterDelay: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

780 
if delay = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

781 
delay:= cInactDelay 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

782 
else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

783 
dec(delay); 
815  784 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

785 
if delay = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

786 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

787 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

788 
stChWin: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

789 
CheckForWin; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

790 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

791 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

792 
stWater: if (not bBetweenTurns) and (not isInMultiShoot) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

795 

4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

796 
if bWaterRising and (cWaterRise > 0) then 
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

797 
AddGear(0, 0, gtWaterUp, 0, _0, _0, 0)^.Tag:= cWaterRise; 
1055
9af540b23409
Water rises after 25 mins of round, health is decreased after 20 mins
unc0rr
parents:
1054
diff
changeset

798 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

799 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

800 
end else inc(step); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

801 
stChWin2: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

802 
CheckForWin; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

803 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

804 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

805 
stHealth: begin 
4215
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

806 
if (cWaterRise <> 0) or (cHealthDecrease <> 0) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

807 
begin 
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

808 
if (TotalRounds = cSuddenDTurns) and not SuddenDeath and not isInMultiShoot then 
4215
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

809 
begin 
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

810 
SuddenDeath:= true; 
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

811 
if cHealthDecrease <> 0 then 
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

812 
begin 
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

813 
SuddenDeathDmg:= true; 
4806
48c1a395f0a7
added flake configuration also in sudden death and SDClouds for underwater
Henek
parents:
4792
diff
changeset

814 
ChangeToSDClouds; 
48c1a395f0a7
added flake configuration also in sudden death and SDClouds for underwater
Henek
parents:
4792
diff
changeset

815 
ChangeToSDFlakes; 
4835
a6924450e694
added rqsky to themes so it can set sky color for low quality. also added tint of sky on sudden death. underwater theme is an example of this
Henek
parents:
4834
diff
changeset

816 
glClearColor(SDSkyColor.r / 255, SDSkyColor.g / 255, SDSkyColor.b / 255, 0.99); 
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset

817 
end; 
4215
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

818 
AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState); 
4748  819 
playSound(sndSuddenDeath); 
820 
MusicFN:= SDMusic; 

821 
ChangeMusic 

4215
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

822 
end 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

823 
else if (TotalRounds < cSuddenDTurns) and not isInMultiShoot then 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

824 
begin 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

825 
i:= cSuddenDTurns  TotalRounds; 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

826 
s:= inttostr(i); 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

827 
if i = 1 then 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

828 
AddCaption(trmsg[sidRoundSD], cWhiteColor, capgrpGameState) 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

829 
else if i in [2, 5, 10, 15, 20, 25, 50, 100] then 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

830 
AddCaption(Format(trmsg[sidRoundsSD], s), cWhiteColor, capgrpGameState); 
36632d5b8492
inactivate sudden death if both health decrease and water rise is 0 and lower sudden death turns to 50 again
Henek
parents:
4210
diff
changeset

831 
end; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

832 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

833 
if bBetweenTurns 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

834 
or isInMultiShoot 
3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

835 
or (TotalRounds = 1) then inc(step) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

836 
else begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

837 
bBetweenTurns:= true; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

838 
HealthMachine; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

839 
step:= stChDmg 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

840 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

841 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

842 
stSpawn: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

843 
if not isInMultiShoot then SpawnBoxOfSmth; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

844 
inc(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

845 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

846 
stNTurn: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

847 
if isInMultiShoot then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

848 
isInMultiShoot:= false 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

849 
else begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

850 
// delayed till after 0.9.12 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

851 
// reset to default zoom 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

852 
//ZoomValue:= ZoomDefault; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

853 
with CurrentHedgehog^ do 
3697  854 
if (Gear <> nil) 
2611  855 
and ((Gear^.State and gstAttacked) = 0) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

856 
and (MultiShootAttacks > 0) then OnUsedAmmo(CurrentHedgehog^); 
3697  857 

3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset

858 
EndTurnCleanup; 
2376  859 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

860 
FreeActionsList; // could send left, right and similar commands, so should be called before /nextturn 
1298  861 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

862 
ParseCommand('/nextturn', true); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

863 
SwitchHedgehog; 
1298  864 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

865 
AfterSwitchHedgehog; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

866 
bBetweenTurns:= false 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

867 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

868 
step:= Low(step) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

869 
end; 
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

870 
end 
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

871 
else if ((GameFlags and gfInfAttack) <> 0) then 
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

872 
begin 
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

873 
if delay2 = 0 then 
3951
c9a63db3e603
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
nemo
parents:
3949
diff
changeset

874 
delay2:= cInactDelay * 4 
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

875 
else 
3957  876 
begin 
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

877 
dec(delay2); 
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

878 

3957  879 
if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) then 
880 
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked; 

881 
if delay2 = 0 then 

882 
begin 

883 
SweepDirty; 

884 
CheckNoDamage; 

4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

885 
AliveCount:= 0; // shorter version of check for win to allow typical step activity to proceed 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

886 
for i:= 0 to Pred(ClansCount) do 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

887 
if ClansArray[i]^.ClanHealth > 0 then inc(AliveCount); 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

888 
if (AliveCount <= 1) and ((GameFlags and gfOneClanMode) = 0) then 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

889 
begin 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

890 
step:= stChDmg; 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

891 
TurnTimeLeft:= 0 
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

892 
end 
3957  893 
end 
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset

894 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

895 
end; 
15  896 

4  897 
if TurnTimeLeft > 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

898 
if CurrentHedgehog^.Gear <> nil then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

899 
if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

900 
and not isInMultiShoot then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

901 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

902 
if (TurnTimeLeft = 5000) 
4198  903 
and (cHedgehogTurnTime >= 10000) 
2770
851313907bcb
Decrease king buff from 150% bonus to 50% bonus, disable warning sound in placement mode
nemo
parents:
2762
diff
changeset

904 
and (not PlacingHogs) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

905 
and (CurrentHedgehog^.Gear <> nil) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

906 
and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

907 
PlaySound(sndHurry, CurrentTeam^.voicepack); 
3799  908 
if ReadyTimeLeft > 0 then 
909 
begin 

910 
if ReadyTimeLeft = 2000 then 

911 
PlaySound(sndComeonthen, CurrentTeam^.voicepack); 

912 
dec(ReadyTimeLeft) 

913 
end 

914 
else 

915 
dec(TurnTimeLeft) 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

916 
end; 
351  917 

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

918 
if skipFlag then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

919 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

920 
TurnTimeLeft:= 0; 
3784
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset

921 
skipFlag:= false; 
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset

922 
inc(CurrentHedgehog^.Team^.stats.TurnSkips); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

924 

2134  925 
if ((GameTicks and $FFFF) = $FFFF) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

926 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

927 
if (not CurrentTeam^.ExtDriven) then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

928 
SendIPCTimeInc; 
2134  929 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

930 
if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

931 
inc(hiTicks) // we do not recieve a message for this 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

933 

4417
6bf00d99fc47
move this call to where the game tick is actually incremented
nemo
parents:
4406
diff
changeset

934 
ScriptCall('onGameTick'); 
515  935 
inc(GameTicks) 
4  936 
end; 
937 

3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset

938 
//Purpose, to reset all transient attributes toggled by a utility and clean up various gears and effects at end of turn 
1854  939 
//If any of these are set as permanent toggles in the frontend, that needs to be checked and skipped here. 
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset

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

941 
var i: LongInt; 
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

942 
t: PGear; 
1849  943 
begin 
2221  944 
SpeechText:= ''; // in case it has not been consumed 
2017  945 

1895  946 
if (GameFlags and gfLowGravity) = 0 then 
4623  947 
begin 
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.01.0 while in fact is in the 0.00.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3350
diff
changeset

948 
cGravity:= cMaxWindSpeed * 2; 
4623  949 
cGravityf:= 0.00025 * 2 
950 
end; 

1895  951 

2017  952 
if (GameFlags and gfVampiric) = 0 then 
953 
cVampiric:= false; 

954 

1849  955 
cDamageModifier:= _1; 
1895  956 

957 
if (GameFlags and gfLaserSight) = 0 then 

958 
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

959 

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

960 
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

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

962 
// 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

963 
if (CurrentTeam <> nil) then 
4099  964 
with CurrentTeam^ do 
965 
for i:= 0 to cMaxHHIndex do 

966 
with Hedgehogs[i] do 

967 
begin 

4465
743673c67d0c
Allow hog speech when not your turn. Currently is set to 40% opacity (could be fainter) and drawn behind the hogs instead of in front. Also allows hog targetting using a number.
nemo
parents:
4455
diff
changeset

968 
(* 
4099  969 
if (SpeechGear <> nil) then 
970 
begin 

971 
DeleteVisualGear(SpeechGear); // remove to restore persisting beyond end of turn. Tiy says was too much of a gameplay issue 

972 
SpeechGear:= nil 

973 
end; 

4465
743673c67d0c
Allow hog speech when not your turn. Currently is set to 40% opacity (could be fainter) and drawn behind the hogs instead of in front. Also allows hog targetting using a number.
nemo
parents:
4455
diff
changeset

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

975 

4099  976 
if (Gear <> nil) then 
977 
begin 

978 
if (GameFlags and gfInvulnerable) = 0 then 

979 
Gear^.Invulnerable:= false; 

980 
end; 

981 
end; 

3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

982 
t:= GearsList; 
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

983 
while t <> nil do 
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

984 
begin 
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

985 
t^.PortalCounter:= 0; 
4372  986 
if ((GameFlags and gfResetHealth) <> 0) and (t^.Kind = gtHedgehog) and (t^.Health < t^.Hedgehog^.InitialHealth) then 
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

987 
begin 
4372  988 
t^.Health:= t^.Hedgehog^.InitialHealth; 
989 
RenderHealth(t^.Hedgehog^); 

4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

990 
end; 
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset

991 
t:= t^.NextGear 
3946
41e06b74c991
Enable resetting of weapons after each turn  useful in combination with a limited weaponset and unlimited attacks
nemo
parents:
3908
diff
changeset

992 
end; 
41e06b74c991
Enable resetting of weapons after each turn  useful in combination with a limited weaponset and unlimited attacks
nemo
parents:
3908
diff
changeset

993 

4344
23ab3bdbf218
This should fix Chip's bug with unlimited teleports. Also remove more hog placement special behaviour and just use ResetWeapons with a check against PlacingHogs mode
nemo
parents:
4337
diff
changeset

994 
if ((GameFlags and gfResetWeps) <> 0) and not PlacingHogs then 
4099  995 
ResetWeapons; 
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

996 

4099  997 
if (GameFlags and gfResetHealth) <> 0 then 
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

998 
for i:= 0 to Pred(TeamsCount) do 
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

999 
RecountTeamHealth(TeamsArray[i]) 
1849  1000 
end; 
2045
b0588498bc3a
 Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset

1001 

4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1002 
procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource); 
2017  1003 
var s: shortstring; 
2428  1004 
vampDmg, tmpDmg, i: Longword; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1005 
vg: PVisualGear; 
2017  1006 
begin 
4885  1007 
if Damage = 0 then exit; // nothing to apply 
1008 

1009 
if (Gear^.Kind = gtHedgehog) then 

2017  1010 
begin 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1011 
uStats.HedgehogDamaged(Gear, AttackerHog); 
3682  1012 
HHHurt(Gear^.Hedgehog, Source); 
4365  1013 
AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, 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

1014 
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

1015 
if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then 
2017  1016 
begin 
1017 
if cVampiric then 

1018 
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

1019 
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

1020 
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

1021 
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

1022 
// 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

1023 
//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

1024 
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

1025 
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

1026 
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

1027 
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

1028 
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

1029 
RecountTeamHealth(CurrentHedgehog^.Team); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1030 
i:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1031 
while i < vampDmg do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1032 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1033 
vg:= AddVisualGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), vgtHealth); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1034 
if vg <> nil then vg^.Frame:= 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1035 
inc(i, 5); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1036 
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

1037 
end 
2017  1038 
end; 
2376  1039 
if ((GameFlags and gfKarma) <> 0) and 
2017  1040 
((GameFlags and gfInvulnerable) = 0) and 
1041 
not CurrentHedgehog^.Gear^.Invulnerable then 

1042 
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

1043 
inc(CurrentHedgehog^.Gear^.Karma, tmpDmg); 
3461
0781275649e9
revert the restoration of nonvgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset

1044 
spawnHealthTagForHH(CurrentHedgehog^.Gear, tmpDmg); 
2017  1045 
end; 
1046 
end; 

4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

1047 
end else if Gear^.Kind <> gtStructure then // not gtHedgehog nor gtStructure 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1048 
begin 
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1049 
AddFileLog('Assigning hedgehog ' + inttostr(LongInt(AttackerHog)) + ' to gear ' + inttostr(Gear^.uid)); 
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1050 
Gear^.Hedgehog:= AttackerHog; 
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1051 
end; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1052 
inc(Gear^.Damage, Damage); 
4492  1053 
ScriptCall('onGearDamage', Gear^.UID, Damage); 
2017  1054 
end; 
1849  1055 

4  1056 
procedure SetAllToActive; 
1057 
var t: PGear; 

1058 
begin 

1059 
AllInactive:= false; 

1060 
t:= GearsList; 

351  1061 
while t <> nil do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1062 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1063 
t^.Active:= true; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1064 
t:= t^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1065 
end 
4  1066 
end; 
1067 

1068 
procedure SetAllHHToActive; 

1069 
var t: PGear; 

1070 
begin 

1071 
AllInactive:= false; 

1072 
t:= GearsList; 

351  1073 
while t <> nil do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1074 
begin 
4813
53c2f0f92281
Make barrels drop when hog walks away from under it
unc0rr
parents:
4809
diff
changeset

1075 
if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then t^.Active:= true; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1076 
t:= t^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1077 
end 
4  1078 
end; 
1079 

4385  1080 

1081 
procedure DrawGears; 

1082 
var Gear: PGear; 

1083 
x, y: LongInt; 

2802  1084 
begin 
4385  1085 
Gear:= GearsList; 
1086 
while Gear <> nil do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1087 
begin 
4385  1088 
x:= hwRound(Gear^.X) + WorldDx; 
1089 
y:= hwRound(Gear^.Y) + WorldDy; 

1090 
RenderGear(Gear, x, y); 

1091 
Gear:= Gear^.NextGear 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1092 
end; 
2802  1093 
end; 
1094 

4  1095 
procedure FreeGearsList; 
1096 
var t, tt: PGear; 

1097 
begin 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1098 
tt:= GearsList; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1099 
GearsList:= nil; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1100 
while tt <> nil do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1101 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1102 
t:= tt; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1103 
tt:= tt^.NextGear; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1104 
Dispose(t) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1105 
end; 
4  1106 
end; 
1107 

10  1108 
procedure AddMiscGears; 
371  1109 
var i: LongInt; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1110 
Gear: PGear; 
4  1111 
begin 
498  1112 
AddGear(0, 0, gtATStartGame, 0, _0, _0, 2000); 
1435
d4b32ee3caa6
Fix using freed memory (could be the cause of queue error problem and other bugs)
unc0rr
parents:
1434
diff
changeset

1113 

4830
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1114 
i:= 0; 
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1115 
Gear:= PGear(1); 
4834  1116 
while (i < cLandMines) {and (Gear <> nil)} do // disable this check until better solution found 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1117 
begin 
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1118 
Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0); 
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1119 
FindPlace(Gear, false, 0, LAND_WIDTH); 
4830
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1120 
inc(i) 
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1121 
end; 
4830
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1122 

c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1123 
i:= 0; 
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1124 
Gear:= PGear(1); 
4833  1125 
while (i < cExplosives){ and (Gear <> nil)} do 
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1126 
begin 
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1127 
Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0); 
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

1128 
FindPlace(Gear, false, 0, LAND_WIDTH); 
4830
c5ddc3e6c8a4
Don't waste CPU cycles trying to find a piece of land when there's no free land left
unc0rr
parents:
4826
diff
changeset

1129 
inc(i) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1130 
end; 
1895  1131 

1132 
if (GameFlags and gfLowGravity) <> 0 then 

4623  1133 
begin 
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.01.0 while in fact is in the 0.00.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3350
diff
changeset

1134 
cGravity:= cMaxWindSpeed; 
4623  1135 
cGravityf:= 0.00025 
1136 
end; 

1895  1137 

2017  1138 
if (GameFlags and gfVampiric) <> 0 then 
1139 
cVampiric:= true; 

1140 

1895  1141 
Gear:= GearsList; 
1142 
if (GameFlags and gfInvulnerable) <> 0 then 

1143 
while Gear <> nil do 

1144 
begin 

1145 
Gear^.Invulnerable:= true; // this is only checked on hogs right now, so no need for gear type check 

1146 
Gear:= Gear^.NextGear 

1147 
end; 

1148 

1149 
if (GameFlags and gfLaserSight) <> 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

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

1151 

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

1152 
if (GameFlags and gfArtillery) <> 0 then 
4611  1153 
cArtillery:= true; 
1154 

4809
9c7d5f802618
rearrange quality flags a little, disable snow rendering on rqLowRes
koda
parents:
4808
diff
changeset

1155 
if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) and ((cReducedQuality and rqLowRes) = 0) then 
4695
ac2cb3b99d70
add a disabling for landback, set it if flakes are enabled
nemo
parents:
4669
diff
changeset

1156 
begin 
4621  1157 
for i:= 0 to Pred(vobCount*2) do 
4809
9c7d5f802618
rearrange quality flags a little, disable snow rendering on rqLowRes
koda
parents:
4808
diff
changeset

1158 
AddGear(GetRandom(LAND_WIDTH+1024)512, LAND_HEIGHT  GetRandom(LAND_HEIGHT div 2), gtFlake, 0, _0, _0, 0); 
4695
ac2cb3b99d70
add a disabling for landback, set it if flakes are enabled
nemo
parents:
4669
diff
changeset

1159 
disableLandBack:= true 
ac2cb3b99d70
add a disabling for landback, set it if flakes are enabled
nemo
parents:
4669
diff
changeset

1160 
end 
4  1161 
end; 
1162 

4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1163 
procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord); 
4  1164 
var Gear: PGear; 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1165 
dmg, dmgRadius, dmgBase: LongInt; 
3322  1166 
fX, fY: hwFloat; 
3475  1167 
vg: PVisualGear; 
3689  1168 
i, cnt: LongInt; 
4  1169 
begin 
1170 
TargetPoint.X:= NoPointX; 

1434  1171 
{$IFDEF DEBUGFILE}if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF} 
3083
8da8f2515221
Eliminate flake kick on themes with no flakes, more than 200 flakes (city) or explosions of 25 or smaller
nemo
parents:
3080
diff
changeset

1172 
if Radius > 25 then KickFlakes(Radius, X, Y); 
8da8f2515221
Eliminate flake kick on themes with no flakes, more than 200 flakes (city) or explosions of 25 or smaller
nemo
parents:
3080
diff
changeset

1173 

3032  1174 
if ((Mask and EXPLNoGfx) = 0) then 
1175 
begin 

3475  1176 
vg:= nil; 
1177 
if Radius > 50 then vg:= AddVisualGear(X, Y, vgtBigExplosion) 

1178 
else if Radius > 10 then vg:= AddVisualGear(X, Y, vgtExplosion); 

1179 
if vg <> nil then 

1180 
vg^.Tint:= Tint; 

3032  1181 
end; 
2745  1182 
if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion); 
1433  1183 

1184 
if (Mask and EXPLAllDamageInRadius) = 0 then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1185 
dmgRadius:= Radius shl 1 
1433  1186 
else 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1187 
dmgRadius:= Radius; 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1188 
dmgBase:= dmgRadius + cHHRadius div 2; 
3322  1189 
fX:= int2hwFloat(X); 
1190 
fY:= int2hwFloat(Y); 

4  1191 
Gear:= GearsList; 
1192 
while Gear <> nil do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1193 
begin 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1194 
dmg:= 0; 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1195 
//dmg:= dmgRadius + cHHRadius div 2  hwRound(Distance(Gear^.X  int2hwFloat(X), Gear^.Y  int2hwFloat(Y))); 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1196 
//if (dmg > 1) and 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1197 
if (Gear^.State and gstNoDamage) = 0 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1198 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1199 
case Gear^.Kind of 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1200 
gtHedgehog, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1201 
gtMine, 
3710  1202 
gtSMine, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1203 
gtCase, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1204 
gtTarget, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1205 
gtFlame, 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

1206 
gtExplosives, 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

1207 
gtStructure: begin 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1208 
// Run the calcs only once we know we have a type that will need damage 
3322  1209 
if hwRound(hwAbs(Gear^.XfX)+hwAbs(Gear^.YfY)) < dmgBase then 
1210 
dmg:= dmgBase  hwRound(Distance(Gear^.X  fX, Gear^.Y  fY)); 

3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1211 
if dmg > 1 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1212 
begin 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1213 
dmg:= ModifyDamage(min(dmg div 2, Radius), Gear); 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1214 
//{$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF} 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1215 
if (Mask and EXPLNoDamage) = 0 then 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1216 
begin 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1217 
if not Gear^.Invulnerable then 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1218 
ApplyDamage(Gear, AttackingHog, dmg, dsExplosion) 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1219 
else 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1220 
Gear^.State:= Gear^.State or gstWinner; 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1221 
end; 
3712  1222 
if ((Mask and EXPLDoNotTouchAny) = 0) and (((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog)) then 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1223 
begin 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1224 
DeleteCI(Gear); 
3322  1225 
Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X  fX); 
1226 
Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y  fY); 

3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1227 
Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser); 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1228 
if not Gear^.Invulnerable then 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1229 
Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner); 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1230 
Gear^.Active:= true; 
3997  1231 
if Gear^.Kind <> gtFlame then FollowGear:= Gear 
3112  1232 
end; 
1233 
if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) then 

4365  1234 
Gear^.Hedgehog^.Effects[hePoisoned] := true; 
3112  1235 
end; 
3100  1236 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1237 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1238 
gtGrave: begin 
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1239 
// Run the calcs only once we know we have a type that will need damage 
3322  1240 
if hwRound(hwAbs(Gear^.XfX)+hwAbs(Gear^.YfY)) < dmgBase then 
1241 
dmg:= dmgBase  hwRound(Distance(Gear^.X  fX, Gear^.Y  fY)); 

3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1242 
if dmg > 1 then 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1243 
begin 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1244 
dmg:= ModifyDamage(min(dmg div 2, Radius), Gear); 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1245 
Gear^.dY:=  _0_004 * dmg; 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1246 
Gear^.Active:= true 
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset

1247 
end 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1248 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1249 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1250 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1251 
Gear:= Gear^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1252 
end; 
1200  1253 

621  1254 
if (Mask and EXPLDontDraw) = 0 then 
3689  1255 
if (GameFlags and gfSolidLand) = 0 then 
1256 
begin 

1257 
cnt:= DrawExplosion(X, Y, Radius) div 1608; // approx 2 16x16 circles to erase per chunk 

1258 
if cnt > 0 then 

1259 
for i:= 0 to cnt do 

1260 
AddVisualGear(X, Y, vgtChunk) 

1261 
end; 

1200  1262 

498  1263 
uAIMisc.AwareOfExplosion(0, 0, 0) 
4  1264 
end; 
1265 

506  1266 
procedure ShotgunShot(Gear: PGear); 
1267 
var t: PGear; 

955  1268 
dmg: LongInt; 
506  1269 
begin 
509  1270 
Gear^.Radius:= cShotgunRadius; 
506  1271 
t:= GearsList; 
1272 
while t <> nil do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1273 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1274 
dmg:= ModifyDamage(min(Gear^.Radius + t^.Radius  hwRound(Distance(Gear^.X  t^.X, Gear^.Y  t^.Y)), 25), t); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1275 
if dmg > 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1276 
case t^.Kind of 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1277 
gtHedgehog, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1278 
gtMine, 
3710  1279 
gtSMine, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1280 
gtCase, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1281 
gtTarget, 
4881
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

1282 
gtExplosives, 
35e6269227b6
still in developement take on adding structures, working hiding of hogs and ejecting them later.
Henek
parents:
4867
diff
changeset

1283 
gtStructure: begin 
1854  1284 
if (not t^.Invulnerable) then 
4837
2ea0a152c319
Pass PHedgehog instead of PGear to stats. Fixes crash.
unc0rr
parents:
4835
diff
changeset

1285 
ApplyDamage(t, Gear^.Hedgehog, dmg, dsBullet) 
1865
ebc6dfca60d4
 nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset

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

1287 
Gear^.State:= Gear^.State or gstWinner; 
867  1288 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1289 
DeleteCI(t); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1290 
t^.dX:= t^.dX + Gear^.dX * dmg * _0_01 + SignAs(cHHKick, Gear^.dX); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1291 
t^.dY:= t^.dY + Gear^.dY * dmg * _0_01; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1292 
t^.State:= t^.State or gstMoving; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1293 
t^.Active:= true; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1294 
FollowGear:= t 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1295 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1296 
gtGrave: begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1297 
t^.dY:=  _0_1; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1298 
t^.Active:= true 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1299 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1300 
end; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1301 
t:= t^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1302 
end; 
621  1303 
if (GameFlags and gfSolidLand) = 0 then DrawExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cShotgunRadius) 
506  1304 
end; 
1305 

371  1306 
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); 
53  1307 
var t: PGearArray; 
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2407
diff
changeset

1308 
Gear: PGear; 
2726  1309 
i, tmpDmg: LongInt; 
4327  1310 
VGear: PVisualGear; 
38  1311 
begin 
53  1312 
t:= CheckGearsCollision(Ammo); 
3098
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset

1313 
// Just to avoid hogs on rope dodging fire. 
3697  1314 
if (CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtRope) and 
1315 
(CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.CollisionIndex = 1) and 

1316 
(sqr(hwRound(Ammo^.X)  hwRound(CurrentHedgehog^.Gear^.X)) + sqr(hwRound(Ammo^.Y)  hwRound(CurrentHedgehog^.Gear^.Y)) <= sqr(cHHRadius + Ammo^.Radius)) then 

3098
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset

1317 
begin 
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset

1318 
t^.ar[t^.Count]:= CurrentHedgehog^.Gear; 
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset

1319 
inc(t^.Count) 
4182  1320 
end; 
4165  1321 

351  1322 
i:= t^.Count; 
1506  1323 

2489  1324 
if (Ammo^.Kind = gtFlame) and (i > 0) then Ammo^.Health:= 0; 
53  1325 
while i > 0 do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1326 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1327 
dec(i); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1328 
Gear:= t^.ar[i]; 
2726  1329 
tmpDmg:= ModifyDamage(Damage, Gear); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1330 
if (Gear^.State and gstNoDamage) = 0 then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1331 
begin 
4824  1332 

4329 