author | unC0Rr |
Wed, 17 Nov 2010 17:22:36 +0300 | |
changeset 4357 | a1fcfc341a52 |
parent 4344 | 23ab3bdbf218 |
child 4359 | 83ef50815535 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
3236
4ab3917d7d44
Update (c) lines to 2010 as unc0rr requested - they all had varying values so I just took the first year mentioned, then tacked on -2010
nemo
parents:
3232
diff
changeset
|
3 |
* Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 5 |
* This program is free software; you can redistribute it and/or modify |
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
4 | 8 |
* |
183 | 9 |
* This program is distributed in the hope that it will be useful, |
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
4 | 13 |
* |
183 | 14 |
* You should have received a copy of the GNU General Public License |
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
4 | 17 |
*) |
18 |
||
2622 | 19 |
{$INCLUDE "options.inc"} |
20 |
||
4 | 21 |
unit uGears; |
22 |
interface |
|
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4344
diff
changeset
|
23 |
uses SDLh, uConsts, uFloat, Math, uTypes; |
3697 | 24 |
|
4 | 25 |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
26 |
var AllInactive: boolean; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
27 |
PrvInactive: boolean; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
28 |
CurAmmoGear: PGear; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
29 |
GearsList: PGear; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
30 |
KilledHHs: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
31 |
SuddenDeathDmg: Boolean; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
32 |
SpeechType: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
33 |
SpeechText: shortstring; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
34 |
TrainingTargetGear: PGear; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2699
diff
changeset
|
35 |
skipFlag: boolean; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
36 |
PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress |
2940 | 37 |
StepSoundTimer: LongInt; |
38 |
StepSoundChannel: LongInt; |
|
3697 | 39 |
|
3038 | 40 |
procedure initModule; |
41 |
procedure freeModule; |
|
371 | 42 |
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
|
43 |
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword ): PGear; |
3768 | 44 |
procedure ResurrectHedgehog(gear: PGear); |
4 | 45 |
procedure ProcessGears; |
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset
|
46 |
procedure EndTurnCleanup; |
3682 | 47 |
procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); |
4 | 48 |
procedure SetAllToActive; |
49 |
procedure SetAllHHToActive; |
|
956 | 50 |
procedure DrawGears; |
4 | 51 |
procedure FreeGearsList; |
10 | 52 |
procedure AddMiscGears; |
4 | 53 |
procedure AssignHHCoords; |
3405 | 54 |
function GearByUID(uid : Longword) : PGear; |
294 | 55 |
procedure InsertGearToList(Gear: PGear); |
56 |
procedure RemoveGearFromList(Gear: PGear); |
|
3405 | 57 |
function ModifyDamage(dmg: Longword; Gear: PGear): Longword; |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
58 |
procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); |
3672
f225b94a4411
shrink confirmation button, double tap resets zoom and centers hog
koda
parents:
3615
diff
changeset
|
59 |
function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; |
f225b94a4411
shrink confirmation button, double tap resets zoom and centers hog
koda
parents:
3615
diff
changeset
|
60 |
function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; |
4 | 61 |
|
62 |
implementation |
|
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
63 |
uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics, |
4034
634a8c8682de
add some phone rumbling to big explosions, airbomb and sinegun
koda
parents:
4024
diff
changeset
|
64 |
uAIMisc, uLocale, uAI, uAmmos, uStats, uVisualGears, uScript, GLunit, uMobile; |
789 | 65 |
|
1207
ceaab010269e
Some adjusting... it still doesn't solve problem fully
unc0rr
parents:
1200
diff
changeset
|
66 |
const MAXROPEPOINTS = 384; |
68 | 67 |
var RopePoints: record |
4 | 68 |
Count: Longword; |
776
8fc7e59d9cb4
Convert the rest of rotated sprites to be rotated by OpenGL
unc0rr
parents:
775
diff
changeset
|
69 |
HookAngle: GLfloat; |
789 | 70 |
ar: array[0..MAXROPEPOINTS] of record |
351 | 71 |
X, Y: hwFloat; |
72 |
dLen: hwFloat; |
|
4 | 73 |
b: boolean; |
74 |
end; |
|
2391 | 75 |
rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f; |
2362 | 76 |
end; |
3697 | 77 |
|
1515 | 78 |
procedure DeleteGear(Gear: PGear); forward; |
371 | 79 |
procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward; |
3475 | 80 |
procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward; |
371 | 81 |
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward; |
1433 | 82 |
//procedure AmmoFlameWork(Ammo: PGear); forward; |
4034
634a8c8682de
add some phone rumbling to big explosions, airbomb and sinegun
koda
parents:
4024
diff
changeset
|
83 |
function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): TPGearArray; forward; |
371 | 84 |
function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; forward; |
15 | 85 |
procedure SpawnBoxOfSmth; forward; |
32
78bff13b11c0
With this patch the game doesn't crash when gaming by net
unc0rr
parents:
24
diff
changeset
|
86 |
procedure AfterAttack; forward; |
302 | 87 |
procedure HedgehogStep(Gear: PGear); forward; |
1528 | 88 |
procedure doStepHedgehogMoving(Gear: PGear); forward; |
303
1659c4aad5ab
Now blow torch angle can be changed during blowing :)
unc0rr
parents:
302
diff
changeset
|
89 |
procedure HedgehogChAngle(Gear: PGear); forward; |
506 | 90 |
procedure ShotgunShot(Gear: PGear); forward; |
1689 | 91 |
procedure PickUp(HH, Gear: PGear); forward; |
1964 | 92 |
procedure HHSetWeapon(Gear: PGear); forward; |
2941
566f967ec22f
White/Black smoke, break out rolling barrel into its own routine, adjust rolling barrel impact damage. NEEDS TESTING
nemo
parents:
2940
diff
changeset
|
93 |
procedure doStepCase(Gear: PGear); forward; |
1964 | 94 |
|
3483 | 95 |
function GetLaunchX(at: TAmmoType; dir: LongInt; angle: LongInt): LongInt; |
96 |
begin |
|
3499 | 97 |
if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then |
98 |
GetLaunchX:= sign(dir) * (8 + hwRound(AngleSin(angle) * Ammoz[at].ejectX) + hwRound(AngleCos(angle) * Ammoz[at].ejectY)) |
|
99 |
else |
|
100 |
GetLaunchX:= 0 |
|
3483 | 101 |
end; |
102 |
||
103 |
function GetLaunchY(at: TAmmoType; angle: LongInt): LongInt; |
|
104 |
begin |
|
3499 | 105 |
if (Ammoz[at].ejectX <> 0) or (Ammoz[at].ejectY <> 0) then |
106 |
GetLaunchY:= hwRound(AngleSin(angle) * Ammoz[at].ejectY) - hwRound(AngleCos(angle) * Ammoz[at].ejectX) - 2 |
|
107 |
else |
|
108 |
GetLaunchY:= 0 |
|
3483 | 109 |
end; |
4 | 110 |
|
2599 | 111 |
{$INCLUDE "GSHandlers.inc"} |
112 |
{$INCLUDE "HHHandlers.inc"} |
|
4 | 113 |
|
114 |
const doStepHandlers: array[TGearType] of TGearStepProcedure = ( |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
115 |
@doStepBomb, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
116 |
@doStepHedgehog, |
4168 | 117 |
@doStepShell, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
118 |
@doStepGrave, |
3080 | 119 |
@doStepBee, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
120 |
@doStepShotgunShot, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
121 |
@doStepPickHammer, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
122 |
@doStepRope, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
123 |
@doStepMine, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
124 |
@doStepCase, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
125 |
@doStepDEagleShot, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
126 |
@doStepDynamite, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
127 |
@doStepBomb, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
128 |
@doStepCluster, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
129 |
@doStepShover, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
130 |
@doStepFlame, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
131 |
@doStepFirePunch, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
132 |
@doStepActionTimer, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
133 |
@doStepActionTimer, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
134 |
@doStepActionTimer, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
135 |
@doStepParachute, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
136 |
@doStepAirAttack, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
137 |
@doStepAirBomb, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
138 |
@doStepBlowTorch, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
139 |
@doStepGirder, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
140 |
@doStepTeleport, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
141 |
@doStepSwitcher, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
142 |
@doStepTarget, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
143 |
@doStepMortar, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
144 |
@doStepWhip, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
145 |
@doStepKamikaze, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
146 |
@doStepCake, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
147 |
@doStepSeduction, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
148 |
@doStepWatermelon, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
149 |
@doStepCluster, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
150 |
@doStepBomb, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
151 |
@doStepWaterUp, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
152 |
@doStepDrill, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
153 |
@doStepBallgun, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
154 |
@doStepBomb, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
155 |
@doStepRCPlane, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
156 |
@doStepSniperRifleShot, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
157 |
@doStepJetpack, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
158 |
@doStepMolotov, |
2983 | 159 |
@doStepCase, |
3032 | 160 |
@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
|
161 |
@doStepEggWork, |
3428 | 162 |
@doStepPortalShot, |
3382 | 163 |
@doStepPiano, |
3384 | 164 |
@doStepBomb, |
3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset
|
165 |
@doStepSineGunShot, |
3710 | 166 |
@doStepFlamethrower, |
3712 | 167 |
@doStepSMine, |
3717 | 168 |
@doStepPoisonCloud, |
3720 | 169 |
@doStepHammer, |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
170 |
@doStepHammerHit, |
4313
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
171 |
@doStepResurrector, |
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
172 |
@doStepNapalmBomb |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
173 |
); |
4 | 174 |
|
294 | 175 |
procedure InsertGearToList(Gear: PGear); |
803 | 176 |
var tmp, ptmp: PGear; |
294 | 177 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
178 |
tmp:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
179 |
ptmp:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
180 |
while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
181 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
182 |
ptmp:= tmp; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
183 |
tmp:= tmp^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
184 |
end; |
3697 | 185 |
|
3442 | 186 |
if ptmp <> tmp then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
187 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
188 |
Gear^.NextGear:= ptmp^.NextGear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
189 |
Gear^.PrevGear:= ptmp; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
190 |
if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
191 |
ptmp^.NextGear:= Gear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
192 |
end |
3442 | 193 |
else |
194 |
begin |
|
195 |
Gear^.NextGear:= GearsList; |
|
196 |
if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear; |
|
197 |
GearsList:= Gear; |
|
198 |
end; |
|
294 | 199 |
end; |
200 |
||
201 |
procedure RemoveGearFromList(Gear: PGear); |
|
202 |
begin |
|
351 | 203 |
if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear; |
1505 | 204 |
if Gear^.PrevGear <> nil then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
205 |
Gear^.PrevGear^.NextGear:= Gear^.NextGear |
1505 | 206 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
207 |
GearsList:= Gear^.NextGear |
294 | 208 |
end; |
209 |
||
3443
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
210 |
procedure spawnHealthTagForHH(HHGear: PGear; dmg: Longword); |
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
211 |
var tag: PVisualGear; |
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
212 |
begin |
3459
c552aa44108d
hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents:
3453
diff
changeset
|
213 |
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
|
214 |
if (tag <> nil) then |
3450 | 215 |
tag^.Hedgehog:= PHedgehog(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
|
216 |
AllInactive:= false; |
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
217 |
HHGear^.Active:= true; |
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
218 |
end; |
14d12df0d363
finishing the gtHealthTag -> vgtHealthTag, no segfaults and hogzombies no more, hopefully
sheepluva
parents:
3442
diff
changeset
|
219 |
|
371 | 220 |
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear; |
79 | 221 |
const Counter: Longword = 0; |
2695 | 222 |
var gear: PGear; |
4 | 223 |
begin |
79 | 224 |
inc(Counter); |
1495 | 225 |
{$IFDEF DEBUGFILE} |
3337 | 226 |
AddFileLog('AddGear: #' + inttostr(Counter) + ' (' + inttostr(x) + ',' + inttostr(y) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind)); |
1495 | 227 |
{$ENDIF} |
228 |
||
2695 | 229 |
New(gear); |
230 |
FillChar(gear^, sizeof(TGear), 0); |
|
231 |
gear^.X:= int2hwFloat(X); |
|
232 |
gear^.Y:= int2hwFloat(Y); |
|
233 |
gear^.Kind := Kind; |
|
234 |
gear^.State:= State; |
|
235 |
gear^.Active:= true; |
|
236 |
gear^.dX:= dX; |
|
237 |
gear^.dY:= dY; |
|
238 |
gear^.doStep:= doStepHandlers[Kind]; |
|
239 |
gear^.CollisionIndex:= -1; |
|
240 |
gear^.Timer:= Timer; |
|
241 |
gear^.Z:= cUsualZ; |
|
242 |
gear^.FlightTime:= 0; |
|
243 |
gear^.uid:= Counter; |
|
2745 | 244 |
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
|
245 |
gear^.ImpactSound:= sndNone; |
3136 | 246 |
gear^.nImpactSounds:= 0; |
505
fcba7d7aea0d
Fix old bug with grenade(bomd, etc..) not colliding with attacking hedgehog
unc0rr
parents:
503
diff
changeset
|
247 |
|
4 | 248 |
if CurrentTeam <> nil then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
249 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
250 |
gear^.Hedgehog:= CurrentHedgehog; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
251 |
gear^.IntersectGear:= CurrentHedgehog^.Gear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
252 |
end; |
802
ed5450a89b96
Start implementing 'visual gears' - gears, that don't need to be synchronized (clouds and flakes)
unc0rr
parents:
789
diff
changeset
|
253 |
|
4 | 254 |
case Kind of |
4168 | 255 |
gtBomb, |
3382 | 256 |
gtClusterBomb, |
257 |
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
|
258 |
gear^.ImpactSound:= sndGrenadeImpact; |
3136 | 259 |
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
|
260 |
gear^.AdvBounce:= 1; |
4299 | 261 |
gear^.Radius:= 5; |
3475 | 262 |
gear^.Elasticity:= _0_8; |
263 |
gear^.Friction:= _0_8; |
|
2695 | 264 |
gear^.RenderTimer:= true; |
265 |
if gear^.Timer = 0 then gear^.Timer:= 3000 |
|
4 | 266 |
end; |
1261 | 267 |
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
|
268 |
gear^.ImpactSound:= sndMelonImpact; |
3136 | 269 |
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
|
270 |
gear^.AdvBounce:= 1; |
4299 | 271 |
gear^.Radius:= 6; |
2695 | 272 |
gear^.Elasticity:= _0_8; |
273 |
gear^.Friction:= _0_995; |
|
274 |
gear^.RenderTimer:= true; |
|
275 |
if gear^.Timer = 0 then gear^.Timer:= 3000 |
|
1261 | 276 |
end; |
4 | 277 |
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
|
278 |
gear^.AdvBounce:= 1; |
2695 | 279 |
gear^.Radius:= cHHRadius; |
280 |
gear^.Elasticity:= _0_35; |
|
281 |
gear^.Friction:= _0_999; |
|
282 |
gear^.Angle:= cMaxAngle div 2; |
|
283 |
gear^.Z:= cHHZ; |
|
3768 | 284 |
if (GameFlags and gfAISurvival) <> 0 then |
285 |
if PHedgehog(gear^.Hedgehog)^.BotLevel > 0 then |
|
286 |
PHedgehog(gear^.Hedgehog)^.Effects[heResurrectable] := true; |
|
4 | 287 |
end; |
4168 | 288 |
gtShell: begin |
2695 | 289 |
gear^.Radius:= 4; |
4 | 290 |
end; |
291 |
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
|
292 |
gear^.ImpactSound:= sndGraveImpact; |
3136 | 293 |
gear^.nImpactSounds:= 1; |
2695 | 294 |
gear^.Radius:= 10; |
295 |
gear^.Elasticity:= _0_6; |
|
4 | 296 |
end; |
3080 | 297 |
gtBee: begin |
2695 | 298 |
gear^.Radius:= 5; |
299 |
gear^.Timer:= 500; |
|
300 |
gear^.RenderTimer:= true; |
|
3039 | 301 |
gear^.Elasticity:= _0_9; |
302 |
gear^.Tag:= getRandom(32); |
|
4 | 303 |
end; |
304 |
gtShotgunShot: begin |
|
2695 | 305 |
gear^.Timer:= 900; |
306 |
gear^.Radius:= 2 |
|
4 | 307 |
end; |
308 |
gtPickHammer: begin |
|
2695 | 309 |
gear^.Radius:= 10; |
310 |
gear^.Timer:= 4000 |
|
4 | 311 |
end; |
3720 | 312 |
gtHammerHit: begin |
313 |
gear^.Radius:= 8; |
|
314 |
gear^.Timer:= 125 |
|
315 |
end; |
|
4 | 316 |
gtRope: begin |
2695 | 317 |
gear^.Radius:= 3; |
318 |
gear^.Friction:= _450; |
|
4 | 319 |
RopePoints.Count:= 0; |
320 |
end; |
|
10 | 321 |
gtMine: begin |
2882 | 322 |
gear^.Health:= 10; |
2695 | 323 |
gear^.State:= gear^.State or gstMoving; |
324 |
gear^.Radius:= 2; |
|
325 |
gear^.Elasticity:= _0_55; |
|
326 |
gear^.Friction:= _0_995; |
|
2031
b6f3e56fb100
david_ac's game scheme options for mine delay/quantity, tweaks to sniper rifle
nemo
parents:
2028
diff
changeset
|
327 |
if cMinesTime < 0 then |
4248 | 328 |
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
|
329 |
else |
4248 | 330 |
gear^.Timer:= cMinesTime*1000; |
10 | 331 |
end; |
3710 | 332 |
gtSMine: begin |
333 |
gear^.Health:= 10; |
|
334 |
gear^.State:= gear^.State or gstMoving; |
|
335 |
gear^.Radius:= 2; |
|
336 |
gear^.Elasticity:= _0_55; |
|
337 |
gear^.Friction:= _0_995; |
|
338 |
gear^.Timer:= 500; |
|
339 |
end; |
|
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
10
diff
changeset
|
340 |
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
|
341 |
gear^.ImpactSound:= sndGraveImpact; |
3136 | 342 |
gear^.nImpactSounds:= 1; |
2695 | 343 |
gear^.Radius:= 16; |
344 |
gear^.Elasticity:= _0_3 |
|
14
81f125629b25
- Mine checks whether a hedgehog is near less frequently
unc0rr
parents:
10
diff
changeset
|
345 |
end; |
2911 | 346 |
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
|
347 |
gear^.ImpactSound:= sndGrenadeImpact; |
3136 | 348 |
gear^.nImpactSounds:= 1; |
2911 | 349 |
gear^.Radius:= 16; |
2933 | 350 |
gear^.Elasticity:= _0_4; |
2938 | 351 |
gear^.Friction:= _0_995; |
2911 | 352 |
gear^.Health:= cBarrelHealth |
353 |
end; |
|
37 | 354 |
gtDEagleShot: begin |
2695 | 355 |
gear^.Radius:= 1; |
356 |
gear^.Health:= 50 |
|
37 | 357 |
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
|
358 |
gtSniperRifleShot: begin |
2695 | 359 |
gear^.Radius:= 1; |
360 |
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
|
361 |
end; |
39 | 362 |
gtDynamite: begin |
2695 | 363 |
gear^.Radius:= 3; |
364 |
gear^.Elasticity:= _0_55; |
|
365 |
gear^.Friction:= _0_03; |
|
366 |
gear^.Timer:= 5000; |
|
39 | 367 |
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
|
368 |
gtCluster: begin |
2695 | 369 |
gear^.Radius:= 2; |
370 |
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
|
371 |
end; |
2695 | 372 |
gtShover: gear^.Radius:= 20; |
79 | 373 |
gtFlame: begin |
2695 | 374 |
gear^.Tag:= GetRandom(32); |
375 |
gear^.Radius:= 1; |
|
376 |
gear^.Health:= 5; |
|
377 |
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
|
378 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
379 |
gear^.dY:= (getrandom - _0_8) * _0_03; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
380 |
gear^.dX:= (getrandom - _0_5) * _0_4 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
381 |
end |
79 | 382 |
end; |
82 | 383 |
gtFirePunch: begin |
2695 | 384 |
gear^.Radius:= 15; |
385 |
gear^.Tag:= Y |
|
82 | 386 |
end; |
302 | 387 |
gtAirBomb: begin |
2695 | 388 |
gear^.Radius:= 5; |
302 | 389 |
end; |
390 |
gtBlowTorch: begin |
|
2695 | 391 |
gear^.Radius:= cHHRadius + cBlowTorchC; |
392 |
gear^.Timer:= 7500 |
|
302 | 393 |
end; |
540 | 394 |
gtSwitcher: begin |
2695 | 395 |
gear^.Z:= cCurrHHZ |
540 | 396 |
end; |
593 | 397 |
gtTarget: begin |
3271 | 398 |
gear^.ImpactSound:= sndGrenadeImpact; |
399 |
gear^.nImpactSounds:= 1; |
|
2695 | 400 |
gear^.Radius:= 10; |
401 |
gear^.Elasticity:= _0_3; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
402 |
gear^.Timer:= 0 |
593 | 403 |
end; |
924 | 404 |
gtMortar: begin |
2695 | 405 |
gear^.Radius:= 4; |
406 |
gear^.Elasticity:= _0_2; |
|
407 |
gear^.Friction:= _0_08 |
|
924 | 408 |
end; |
2695 | 409 |
gtWhip: gear^.Radius:= 20; |
3717 | 410 |
gtHammer: gear^.Radius:= 20; |
984 | 411 |
gtKamikaze: begin |
2695 | 412 |
gear^.Health:= 2048; |
413 |
gear^.Radius:= 20 |
|
984 | 414 |
end; |
1089 | 415 |
gtCake: begin |
2695 | 416 |
gear^.Health:= 2048; |
417 |
gear^.Radius:= 7; |
|
418 |
gear^.Z:= cOnHHZ; |
|
419 |
gear^.RenderTimer:= true; |
|
3508
a7ca07614a2d
correct cake sit-down animation so that it doesn't sit down in mid-air anymore
sheepluva
parents:
3499
diff
changeset
|
420 |
gear^.DirAngle:= -90 * hwSign(Gear^.dX); |
2695 | 421 |
if not dX.isNegative then gear^.Angle:= 1 else gear^.Angle:= 3 |
1089 | 422 |
end; |
1263 | 423 |
gtHellishBomb: begin |
3136 | 424 |
gear^.ImpactSound:= sndHellishImpact1; |
425 |
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
|
426 |
gear^.AdvBounce:= 1; |
2695 | 427 |
gear^.Radius:= 4; |
428 |
gear^.Elasticity:= _0_5; |
|
429 |
gear^.Friction:= _0_96; |
|
430 |
gear^.RenderTimer:= true; |
|
431 |
gear^.Timer:= 5000 |
|
1263 | 432 |
end; |
1573 | 433 |
gtDrill: begin |
2695 | 434 |
gear^.Timer:= 5000; |
435 |
gear^.Radius:= 4 |
|
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; |
|
1601 | 446 |
end; |
447 |
gtBallgun: begin |
|
2695 | 448 |
gear^.Timer:= 5001; |
1601 | 449 |
end; |
1689 | 450 |
gtRCPlane: begin |
2695 | 451 |
gear^.Timer:= 15000; |
452 |
gear^.Health:= 3; |
|
453 |
gear^.Radius:= 8 |
|
1689 | 454 |
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
|
455 |
gtJetpack: begin |
2695 | 456 |
gear^.Health:= 2000; |
4260
472fd2fc1f31
Also switch saucer from updating every N ticks to updating as-needed.
nemo
parents:
4258
diff
changeset
|
457 |
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
|
458 |
end; |
3697 | 459 |
gtMolotov: begin |
2968
f59631c3c1c0
Fix iluvu flag (indexed), shrink molotov radius a bit to try and reduce fail
nemo
parents:
2964
diff
changeset
|
460 |
gear^.Radius:= 6; |
2488 | 461 |
end; |
2983 | 462 |
gtBirdy: begin |
463 |
gear^.Radius:= 16; // todo: check |
|
3149 | 464 |
gear^.Timer:= 0; |
3115 | 465 |
gear^.Health := 2000; |
3065 | 466 |
gear^.FlightTime := 2; |
2983 | 467 |
end; |
3697 | 468 |
gtEgg: begin |
3065 | 469 |
gear^.Radius:= 4; |
470 |
gear^.Elasticity:= _0_6; |
|
471 |
gear^.Friction:= _0_96; |
|
472 |
if gear^.Timer = 0 then gear^.Timer:= 3000 |
|
473 |
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
|
474 |
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
|
475 |
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
|
476 |
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
|
477 |
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
|
478 |
gear^.Radius:= 16; |
3388
ab9352a4ddcc
Fix portal graphic name, continuing work on portal movement
nemo
parents:
3387
diff
changeset
|
479 |
gear^.Tag:= 0; |
3428 | 480 |
gear^.Timer:= 15000; |
481 |
gear^.RenderTimer:= false; |
|
482 |
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
|
483 |
end; |
3350 | 484 |
gtPiano: begin |
485 |
gear^.Radius:= 32 |
|
486 |
end; |
|
3384 | 487 |
gtSineGunShot: begin |
488 |
gear^.Radius:= 5; |
|
489 |
gear^.Health:= 6000; |
|
490 |
end; |
|
3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset
|
491 |
gtFlamethrower: begin |
3485 | 492 |
gear^.Tag:= 10; |
493 |
gear^.Timer:= 10; |
|
494 |
gear^.Health:= 500; |
|
4258 | 495 |
gear^.Damage:= 100; |
3476
1ec68b8d3bd1
Henek adds a flamethrower, updates some translations, and tweaks how fire works.
nemo
parents:
3475
diff
changeset
|
496 |
end; |
3712 | 497 |
gtPoisonCloud: begin |
498 |
gear^.Timer:= 5000; |
|
3976 | 499 |
gear^.dY:= int2hwfloat(-4 + longint(getRandom(8))) / 1000; |
3712 | 500 |
end; |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
501 |
gtResurrector: begin |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
502 |
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
|
503 |
gear^.Tag := 0 |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
504 |
end; |
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
505 |
gtWaterUp: begin |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
506 |
gear^.Tag := 47; |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
507 |
end; |
4313
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
508 |
gtNapalmBomb: begin |
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
509 |
gear^.Timer:= 1000; |
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
510 |
gear^.Radius:= 5; |
0690067bc5ff
made napalm use napalmbombs instead of just dropping fire
Henek
parents:
4299
diff
changeset
|
511 |
end; |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
512 |
end; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
513 |
|
2695 | 514 |
InsertGearToList(gear); |
515 |
AddGear:= gear; |
|
2786 | 516 |
|
2792 | 517 |
ScriptCall('onGearAdd', gear^.uid); |
4 | 518 |
end; |
519 |
||
1515 | 520 |
procedure DeleteGear(Gear: PGear); |
48 | 521 |
var team: PTeam; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
522 |
t,i: Longword; |
2760
420fe0344e5f
... or. just move the king check to after the gear nil
nemo
parents:
2759
diff
changeset
|
523 |
k: boolean; |
4 | 524 |
begin |
2786 | 525 |
|
2792 | 526 |
ScriptCall('onGearDelete', gear^.uid); |
2786 | 527 |
|
503 | 528 |
DeleteCI(Gear); |
762 | 529 |
|
530 |
if Gear^.Tex <> nil then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
531 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
532 |
FreeTexture(Gear^.Tex); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
533 |
Gear^.Tex:= nil |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
534 |
end; |
762 | 535 |
|
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
|
536 |
// make sure that portals have their link removed before deletion |
3428 | 537 |
if (Gear^.Kind = gtPortal) then |
3432
83cef0f08a86
* get rid of some fpc hints (redundant/superfluous includes)
sheepluva
parents:
3429
diff
changeset
|
538 |
begin |
3428 | 539 |
if (Gear^.IntersectGear <> nil) then |
3472
b1832a3761e6
portal-link-bugfix: make sure deleted portals don't reset links other than those to themselves
sheepluva
parents:
3471
diff
changeset
|
540 |
if (Gear^.IntersectGear^.IntersectGear = Gear) then |
b1832a3761e6
portal-link-bugfix: make sure deleted portals don't reset links other than those to themselves
sheepluva
parents:
3471
diff
changeset
|
541 |
Gear^.IntersectGear^.IntersectGear:= nil; |
3432
83cef0f08a86
* get rid of some fpc hints (redundant/superfluous includes)
sheepluva
parents:
3429
diff
changeset
|
542 |
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
|
543 |
else if Gear^.Kind = gtHedgehog then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
544 |
if (CurAmmoGear <> nil) and (CurrentHedgehog^.Gear = Gear) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
545 |
begin |
3894 | 546 |
Gear^.Message:= gmDestroy; |
547 |
CurAmmoGear^.Message:= gmDestroy; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
548 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
549 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
550 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
551 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
552 |
if (hwRound(Gear^.Y) >= cWaterLine) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
553 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
554 |
t:= max(Gear^.Damage, Gear^.Health); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
555 |
Gear^.Damage:= t; |
3399 | 556 |
if (cWaterOpacity < $FF) and (hwRound(Gear^.Y) < cWaterLine + 256) then |
3461
0781275649e9
revert the restoration of non-vgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset
|
557 |
spawnHealthTagForHH(Gear, t); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
558 |
uStats.HedgehogDamaged(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
559 |
end; |
2376 | 560 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
561 |
team:= PHedgehog(Gear^.Hedgehog)^.Team; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
562 |
if CurrentHedgehog^.Gear = Gear then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
563 |
FreeActionsList; // to avoid ThinkThread on drawned gear |
2376 | 564 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
565 |
PHedgehog(Gear^.Hedgehog)^.Gear:= nil; |
2726 | 566 |
if PHedgehog(Gear^.Hedgehog)^.King then |
2758
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset
|
567 |
begin |
033aa644578f
Add one king per team instead of clan, kill off clan if all kings are dead. untested.
nemo
parents:
2745
diff
changeset
|
568 |
// 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
|
569 |
k:= false; |
2726 | 570 |
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
|
571 |
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
|
572 |
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
|
573 |
for i:= 0 to Pred(team^.Clan^.TeamsNumber) do |
4037 | 574 |
begin |
575 |
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
|
576 |
TeamGoneEffect(team^.Clan^.Teams[i]^) |
4037 | 577 |
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
|
578 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
579 |
inc(KilledHHs); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
580 |
RecountTeamHealth(team) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
581 |
end; |
1495 | 582 |
{$IFDEF DEBUGFILE} |
3337 | 583 |
with Gear^ do AddFileLog('Delete: #' + inttostr(uid) + ' (' + inttostr(hwRound(x)) + ',' + inttostr(hwRound(y)) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + EnumToStr(Kind)); |
1495 | 584 |
{$ENDIF} |
585 |
||
82 | 586 |
if CurAmmoGear = Gear then CurAmmoGear:= nil; |
4 | 587 |
if FollowGear = Gear then FollowGear:= nil; |
294 | 588 |
RemoveGearFromList(Gear); |
1515 | 589 |
Dispose(Gear) |
4 | 590 |
end; |
591 |
||
592 |
function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs |
|
593 |
var Gear: PGear; |
|
1849 | 594 |
dmg: LongInt; |
4 | 595 |
begin |
351 | 596 |
CheckNoDamage:= true; |
4 | 597 |
Gear:= GearsList; |
598 |
while Gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
599 |
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
|
600 |
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
|
601 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
602 |
if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
603 |
if (Gear^.Damage <> 0) and |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
604 |
(not Gear^.Invulnerable) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
605 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
606 |
CheckNoDamage:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
607 |
uStats.HedgehogDamaged(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
608 |
dmg:= Gear^.Damage; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
609 |
if Gear^.Health < dmg then |
3453 | 610 |
begin |
611 |
Gear^.Active:= true; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
612 |
Gear^.Health:= 0 |
3453 | 613 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
614 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
615 |
dec(Gear^.Health, dmg); |
351 | 616 |
|
2017 | 617 |
if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and |
2135
0b7972dfad01
Push karma application to end of round - should avoid problems w/ plane and kamikaze
nemo
parents:
2134
diff
changeset
|
618 |
(Gear^.Damage <> Gear^.Karma) and |
2824
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
619 |
not PHedgehog(Gear^.Hedgehog)^.King and |
3135 | 620 |
not PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] and |
2017 | 621 |
not SuddenDeathDmg then |
622 |
Gear^.State:= Gear^.State or gstLoser; |
|
623 |
||
3461
0781275649e9
revert the restoration of non-vgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset
|
624 |
spawnHealthTagForHH(Gear, dmg); |
867 | 625 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
626 |
RenderHealth(PHedgehog(Gear^.Hedgehog)^); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
627 |
RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team); |
1505 | 628 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
629 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
630 |
if (not isInMultiShoot) then Gear^.Karma:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
631 |
Gear^.Damage:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
632 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
633 |
Gear:= Gear^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
634 |
end; |
4 | 635 |
end; |
636 |
||
1054 | 637 |
procedure HealthMachine; |
638 |
var Gear: PGear; |
|
2824
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
639 |
team: PTeam; |
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
640 |
i: LongWord; |
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
641 |
flag: Boolean; |
3682 | 642 |
tmp: LongWord; |
1054 | 643 |
begin |
3682 | 644 |
Gear:= GearsList; |
1054 | 645 |
|
3682 | 646 |
while Gear <> nil do |
647 |
begin |
|
648 |
if Gear^.Kind = gtHedgehog then |
|
649 |
begin |
|
650 |
tmp:= 0; |
|
3112 | 651 |
if PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] then |
4111 | 652 |
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
|
653 |
inc(tmp, ModifyDamage(5, Gear)); |
4111 | 654 |
if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth) // does not need a minimum check since <= 1 basically disables it |
655 |
end; |
|
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
656 |
if (TotalRounds > cSuddenDTurns - 1) then |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
657 |
begin |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
658 |
inc(tmp, cHealthDecrease); |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
659 |
if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth, cHealthDecrease) |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
660 |
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
|
661 |
if PHedgehog(Gear^.Hedgehog)^.King then |
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
|
662 |
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
|
663 |
flag:= false; |
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
|
664 |
team:= PHedgehog(Gear^.Hedgehog)^.Team; |
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
|
665 |
for i:= 0 to Pred(team^.HedgehogsNumber) do |
3697 | 666 |
if (team^.Hedgehogs[i].Gear <> nil) and |
667 |
(not team^.Hedgehogs[i].King) and |
|
668 |
(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
|
669 |
then flag:= true; |
4111 | 670 |
if not flag then |
671 |
begin |
|
672 |
inc(tmp, 5); |
|
673 |
if (GameFlags and gfResetHealth) <> 0 then dec(PHedgehog(Gear^.Hedgehog)^.InitialHealth, 5) |
|
674 |
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
|
675 |
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
|
676 |
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
|
677 |
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
|
678 |
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
|
679 |
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
|
680 |
end |
3682 | 681 |
end; |
1054 | 682 |
|
3682 | 683 |
Gear:= Gear^.NextGear |
684 |
end; |
|
1054 | 685 |
end; |
686 |
||
4 | 687 |
procedure ProcessGears; |
614 | 688 |
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
|
689 |
delay2: LongWord = 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
690 |
step: (stDelay, stChDmg, stSweep, stTurnReact, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
691 |
stAfterDelay, stChWin, stWater, stChWin2, stHealth, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
692 |
stSpawn, stNTurn) = stDelay; |
4 | 693 |
var Gear, t: PGear; |
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
694 |
i, AliveCount: LongInt; |
3331 | 695 |
s: shortstring; |
4 | 696 |
begin |
868 | 697 |
PrvInactive:= AllInactive; |
4 | 698 |
AllInactive:= true; |
1495 | 699 |
|
2940 | 700 |
if (StepSoundTimer > 0) and (StepSoundChannel < 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
701 |
StepSoundChannel:= LoopSound(sndSteps) |
2940 | 702 |
else if (StepSoundTimer = 0) and (StepSoundChannel > -1) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
703 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
704 |
StopSound(StepSoundChannel); |
2993
d83edb74e92d
Remove animation on jumping/resuming walk, only leave it in on weapon switch
nemo
parents:
2991
diff
changeset
|
705 |
StepSoundChannel:= -1 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
706 |
end; |
2940 | 707 |
|
708 |
if StepSoundTimer > 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
709 |
dec(StepSoundTimer, 1); |
2940 | 710 |
|
4 | 711 |
t:= GearsList; |
1054 | 712 |
while t <> nil do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
713 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
714 |
Gear:= t; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
715 |
t:= Gear^.NextGear; |
3123 | 716 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
717 |
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
|
718 |
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
|
719 |
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
|
720 |
begin |
2376 | 721 |
if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); |
2619 | 722 |
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
|
723 |
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
|
724 |
Gear^.doStep(Gear); |
3848 | 725 |
// might be useful later |
726 |
//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
|
727 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
728 |
end; |
89 | 729 |
|
4 | 730 |
if AllInactive then |
1343 | 731 |
case step of |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
732 |
stDelay: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
733 |
if delay = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
734 |
delay:= cInactDelay |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
735 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
736 |
dec(delay); |
614 | 737 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
738 |
if delay = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
739 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
740 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
741 |
stChDmg: if CheckNoDamage then inc(step) else step:= stDelay; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
742 |
stSweep: if SweepDirty then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
743 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
744 |
SetAllToActive; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
745 |
step:= stChDmg |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
746 |
end else inc(step); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
747 |
stTurnReact: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
748 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
749 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
750 |
uStats.TurnReaction; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
751 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
752 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
753 |
inc(step, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
754 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
755 |
stAfterDelay: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
756 |
if delay = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
757 |
delay:= cInactDelay |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
758 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
759 |
dec(delay); |
815 | 760 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
761 |
if delay = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
762 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
763 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
764 |
stChWin: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
765 |
CheckForWin; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
766 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
767 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
768 |
stWater: if (not bBetweenTurns) and (not isInMultiShoot) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
769 |
begin |
3331 | 770 |
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
|
771 |
|
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
772 |
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
|
773 |
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
|
774 |
|
2948
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 inc(step); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
777 |
stChWin2: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
778 |
CheckForWin; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
779 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
780 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
781 |
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
|
782 |
if (cWaterRise <> 0) or (cHealthDecrease <> 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
783 |
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
|
784 |
if (TotalRounds = cSuddenDTurns) and not SuddenDeathDmg 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
|
785 |
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
|
786 |
SuddenDeathDmg:= true; |
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
|
787 |
AddCaption(trmsg[sidSuddenDeath], 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
|
788 |
playSound(sndSuddenDeath) |
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
|
789 |
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
|
790 |
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
|
791 |
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
|
792 |
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
|
793 |
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
|
794 |
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
|
795 |
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
|
796 |
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
|
797 |
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
|
798 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
799 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
800 |
if bBetweenTurns |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
801 |
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
|
802 |
or (TotalRounds = -1) then inc(step) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
803 |
else begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
804 |
bBetweenTurns:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
805 |
HealthMachine; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
806 |
step:= stChDmg |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
807 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
808 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
809 |
stSpawn: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
810 |
if not isInMultiShoot then SpawnBoxOfSmth; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
811 |
inc(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
812 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
813 |
stNTurn: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
814 |
if isInMultiShoot then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
815 |
isInMultiShoot:= false |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
816 |
else begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
817 |
// delayed till after 0.9.12 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
818 |
// reset to default zoom |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
819 |
//ZoomValue:= ZoomDefault; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
820 |
with CurrentHedgehog^ do |
3697 | 821 |
if (Gear <> nil) |
2611 | 822 |
and ((Gear^.State and gstAttacked) = 0) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
823 |
and (MultiShootAttacks > 0) then OnUsedAmmo(CurrentHedgehog^); |
3697 | 824 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset
|
825 |
EndTurnCleanup; |
2376 | 826 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
827 |
FreeActionsList; // could send -left, -right and similar commands, so should be called before /nextturn |
1298 | 828 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
829 |
ParseCommand('/nextturn', true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
830 |
SwitchHedgehog; |
1298 | 831 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
832 |
AfterSwitchHedgehog; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
833 |
bBetweenTurns:= false |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
834 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
835 |
step:= Low(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
836 |
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
|
837 |
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
|
838 |
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
|
839 |
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
|
840 |
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
|
841 |
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
|
842 |
else |
3957 | 843 |
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
|
844 |
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
|
845 |
|
3957 | 846 |
if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) then |
847 |
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked; |
|
848 |
if delay2 = 0 then |
|
849 |
begin |
|
850 |
SweepDirty; |
|
851 |
CheckNoDamage; |
|
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
852 |
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
|
853 |
for i:= 0 to Pred(ClansCount) do |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
854 |
if ClansArray[i]^.ClanHealth > 0 then inc(AliveCount); |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
855 |
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
|
856 |
begin |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
857 |
step:= stChDmg; |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
858 |
TurnTimeLeft:= 0 |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
859 |
end |
3957 | 860 |
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
|
861 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
862 |
end; |
15 | 863 |
|
4 | 864 |
if TurnTimeLeft > 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
865 |
if CurrentHedgehog^.Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
866 |
if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
867 |
and not isInMultiShoot then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
868 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
869 |
if (TurnTimeLeft = 5000) |
4198 | 870 |
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
|
871 |
and (not PlacingHogs) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
872 |
and (CurrentHedgehog^.Gear <> nil) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
873 |
and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
874 |
PlaySound(sndHurry, CurrentTeam^.voicepack); |
3799 | 875 |
if ReadyTimeLeft > 0 then |
876 |
begin |
|
877 |
if ReadyTimeLeft = 2000 then |
|
878 |
PlaySound(sndComeonthen, CurrentTeam^.voicepack); |
|
879 |
dec(ReadyTimeLeft) |
|
880 |
end |
|
881 |
else |
|
882 |
dec(TurnTimeLeft) |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
883 |
end; |
351 | 884 |
|
2621
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset
|
885 |
if skipFlag then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
886 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
887 |
TurnTimeLeft:= 0; |
3784
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset
|
888 |
skipFlag:= false; |
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset
|
889 |
inc(CurrentHedgehog^.Team^.stats.TurnSkips); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
890 |
end; |
2621
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset
|
891 |
|
2134 | 892 |
if ((GameTicks and $FFFF) = $FFFF) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
893 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
894 |
if (not CurrentTeam^.ExtDriven) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
895 |
SendIPCTimeInc; |
2134 | 896 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
897 |
if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
898 |
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
|
899 |
end; |
656
6d6d9d7b1054
Fix network game bug caused by recent protocol changes
unc0rr
parents:
651
diff
changeset
|
900 |
|
515 | 901 |
inc(GameTicks) |
4 | 902 |
end; |
903 |
||
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset
|
904 |
//Purpose, to reset all transient attributes toggled by a utility and clean up various gears and effects at end of turn |
1854 | 905 |
//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
|
906 |
procedure EndTurnCleanup; |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
907 |
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
|
908 |
t: PGear; |
1849 | 909 |
begin |
2221 | 910 |
SpeechText:= ''; // in case it has not been consumed |
2017 | 911 |
|
1895 | 912 |
if (GameFlags and gfLowGravity) = 0 then |
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3350
diff
changeset
|
913 |
cGravity:= cMaxWindSpeed * 2; |
1895 | 914 |
|
2017 | 915 |
if (GameFlags and gfVampiric) = 0 then |
916 |
cVampiric:= false; |
|
917 |
||
1849 | 918 |
cDamageModifier:= _1; |
1895 | 919 |
|
920 |
if (GameFlags and gfLaserSight) = 0 then |
|
921 |
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
|
922 |
|
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset
|
923 |
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
|
924 |
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
|
925 |
// 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
|
926 |
if (CurrentTeam <> nil) then |
4099 | 927 |
with CurrentTeam^ do |
928 |
for i:= 0 to cMaxHHIndex do |
|
929 |
with Hedgehogs[i] do |
|
930 |
begin |
|
931 |
if (SpeechGear <> nil) then |
|
932 |
begin |
|
933 |
DeleteVisualGear(SpeechGear); // remove to restore persisting beyond end of turn. Tiy says was too much of a gameplay issue |
|
934 |
SpeechGear:= nil |
|
935 |
end; |
|
2045
b0588498bc3a
- Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset
|
936 |
|
4099 | 937 |
if (Gear <> nil) then |
938 |
begin |
|
939 |
if (GameFlags and gfInvulnerable) = 0 then |
|
940 |
Gear^.Invulnerable:= false; |
|
941 |
end; |
|
942 |
end; |
|
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
943 |
t:= GearsList; |
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
944 |
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
|
945 |
begin |
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
946 |
t^.PortalCounter:= 0; |
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
|
947 |
if ((GameFlags and gfResetHealth) <> 0) and (t^.Kind = gtHedgehog) and (t^.Health < PHedgehog(t^.Hedgehog)^.InitialHealth) then |
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
|
948 |
begin |
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
|
949 |
t^.Health:= PHedgehog(t^.Hedgehog)^.InitialHealth; |
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
|
950 |
RenderHealth(PHedgehog(t^.Hedgehog)^); |
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
|
951 |
end; |
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
952 |
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
|
953 |
end; |
41e06b74c991
Enable resetting of weapons after each turn - useful in combination with a limited weaponset and unlimited attacks
nemo
parents:
3908
diff
changeset
|
954 |
|
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
|
955 |
if ((GameFlags and gfResetWeps) <> 0) and not PlacingHogs then |
4099 | 956 |
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
|
957 |
|
4099 | 958 |
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
|
959 |
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
|
960 |
RecountTeamHealth(TeamsArray[i]) |
1849 | 961 |
end; |
2045
b0588498bc3a
- Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset
|
962 |
|
3682 | 963 |
procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource); |
2017 | 964 |
var s: shortstring; |
2428 | 965 |
vampDmg, tmpDmg, i: Longword; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
966 |
vg: PVisualGear; |
2017 | 967 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
968 |
if (Gear^.Kind = gtHedgehog) and (Damage>=1) then |
2017 | 969 |
begin |
3682 | 970 |
HHHurt(Gear^.Hedgehog, Source); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
971 |
AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); |
2067
7524a783bd8c
use separate variable for vamp/karma calcs, move karma damage tag from point of damage origin to originating hedgehog at unc0rr's request
nemo
parents:
2057
diff
changeset
|
972 |
tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.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
|
973 |
if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then |
2017 | 974 |
begin |
975 |
if cVampiric then |
|
976 |
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
|
977 |
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
|
978 |
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
|
979 |
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
|
980 |
// 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
|
981 |
//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
|
982 |
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
|
983 |
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
|
984 |
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
|
985 |
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
|
986 |
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
|
987 |
RecountTeamHealth(CurrentHedgehog^.Team); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
988 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
989 |
while i < vampDmg do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
990 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
991 |
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
|
992 |
if vg <> nil then vg^.Frame:= 10; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
993 |
inc(i, 5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
994 |
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
|
995 |
end |
2017 | 996 |
end; |
2376 | 997 |
if ((GameFlags and gfKarma) <> 0) and |
2017 | 998 |
((GameFlags and gfInvulnerable) = 0) and |
999 |
not CurrentHedgehog^.Gear^.Invulnerable then |
|
1000 |
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
|
1001 |
inc(CurrentHedgehog^.Gear^.Karma, tmpDmg); |
3461
0781275649e9
revert the restoration of non-vgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset
|
1002 |
spawnHealthTagForHH(CurrentHedgehog^.Gear, tmpDmg); |
2017 | 1003 |
end; |
1004 |
end; |
|
1005 |
end; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1006 |
inc(Gear^.Damage, Damage); |
3848 | 1007 |
ScriptCall('OnGearDamage', Gear^.UID, Damage); |
2017 | 1008 |
end; |
1849 | 1009 |
|
4 | 1010 |
procedure SetAllToActive; |
1011 |
var t: PGear; |
|
1012 |
begin |
|
1013 |
AllInactive:= false; |
|
1014 |
t:= GearsList; |
|
351 | 1015 |
while t <> nil do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1016 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1017 |
t^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1018 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1019 |
end |
4 | 1020 |
end; |
1021 |
||
1022 |
procedure SetAllHHToActive; |
|
1023 |
var t: PGear; |
|
1024 |
begin |
|
1025 |
AllInactive:= false; |
|
1026 |
t:= GearsList; |
|
351 | 1027 |
while t <> nil do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1028 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1029 |
if t^.Kind = gtHedgehog then t^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1030 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1031 |
end |
4 | 1032 |
end; |
1033 |
||
2811 | 1034 |
procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt); |
2802 | 1035 |
begin |
1036 |
with PHedgehog(Gear^.Hedgehog)^ do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1037 |
begin |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3832
diff
changeset
|
1038 |
if not (((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1039 |
exit; |
4159
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4155
diff
changeset
|
1040 |
DrawTexture(sx + 16, sy + 16, ropeIconTex); |
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4155
diff
changeset
|
1041 |
DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, sx + 30, sy + 30, ord(CurAmmoType) - 1, 1, 32, 32); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1042 |
end; |
2802 | 1043 |
end; |
1044 |
||
2362 | 1045 |
procedure DrawRopeLinesRQ(Gear: PGear); |
1046 |
begin |
|
1047 |
with RopePoints do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1048 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1049 |
rounded[Count].X:= hwRound(Gear^.X); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1050 |
rounded[Count].Y:= hwRound(Gear^.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1051 |
rounded[Count + 1].X:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1052 |
rounded[Count + 1].Y:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1053 |
end; |
2362 | 1054 |
|
2365 | 1055 |
if (RopePoints.Count > 0) or (Gear^.Elasticity.QWordValue > 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1056 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1057 |
glDisable(GL_TEXTURE_2D); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1058 |
//glEnable(GL_LINE_SMOOTH); |
2365 | 1059 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1060 |
glPushMatrix; |
2365 | 1061 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1062 |
glTranslatef(WorldDx, WorldDy, 0); |
2376 | 1063 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1064 |
glLineWidth(4.0); |
2362 | 1065 |
|
3390 | 1066 |
Tint($C0, $C0, $C0, $FF); |
2362 | 1067 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1068 |
glVertexPointer(2, GL_FLOAT, 0, @RopePoints.rounded[0]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1069 |
glDrawArrays(GL_LINE_STRIP, 0, RopePoints.Count + 2); |
3390 | 1070 |
Tint($FF, $FF, $FF, $FF); |
2365 | 1071 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1072 |
glPopMatrix; |
2376 | 1073 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1074 |
glEnable(GL_TEXTURE_2D); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1075 |
//glDisable(GL_LINE_SMOOTH) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1076 |
end |
2362 | 1077 |
end; |
1078 |
||
1079 |
procedure DrawRope(Gear: PGear); |
|
1080 |
var roplen: LongInt; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1081 |
i: Longword; |
2362 | 1082 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1083 |
procedure DrawRopeLine(X1, Y1, X2, Y2: LongInt); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1084 |
var eX, eY, dX, dY: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1085 |
i, sX, sY, x, y, d: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1086 |
b: boolean; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1087 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1088 |
if (X1 = X2) and (Y1 = Y2) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1089 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1090 |
//OutError('WARNING: zero length rope line!', false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1091 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1092 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1093 |
eX:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1094 |
eY:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1095 |
dX:= X2 - X1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1096 |
dY:= Y2 - Y1; |
2362 | 1097 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1098 |
if (dX > 0) then sX:= 1 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1099 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1100 |
if (dX < 0) then |
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 |
sX:= -1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1103 |
dX:= -dX |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1104 |
end else sX:= dX; |
2362 | 1105 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1106 |
if (dY > 0) then sY:= 1 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1107 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1108 |
if (dY < 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1109 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1110 |
sY:= -1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1111 |
dY:= -dY |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1112 |
end else sY:= dY; |
2362 | 1113 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1114 |
if (dX > dY) then d:= dX |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1115 |
else d:= dY; |
2362 | 1116 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1117 |
x:= X1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1118 |
y:= Y1; |
2362 | 1119 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1120 |
for i:= 0 to d do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1121 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1122 |
inc(eX, dX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1123 |
inc(eY, dY); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1124 |
b:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1125 |
if (eX > d) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1126 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1127 |
dec(eX, d); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1128 |
inc(x, sX); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1129 |
b:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1130 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1131 |
if (eY > d) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1132 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1133 |
dec(eY, d); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1134 |
inc(y, sY); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1135 |
b:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1136 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1137 |
if b then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1138 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1139 |
inc(roplen); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1140 |
if (roplen mod 4) = 0 then DrawSprite(sprRopeNode, x - 2, y - 2, 0) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1141 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1142 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1143 |
end; |
2362 | 1144 |
begin |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3580
diff
changeset
|
1145 |
if (cReducedQuality and rqSimpleRope) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1146 |
DrawRopeLinesRQ(Gear) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1147 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1148 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1149 |
roplen:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1150 |
if RopePoints.Count > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1151 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1152 |
i:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1153 |
while i < Pred(RopePoints.Count) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1154 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1155 |
DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1156 |
hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1157 |
inc(i) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1158 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1159 |
DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1160 |
hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1161 |
DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1162 |
hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1163 |
end else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1164 |
if Gear^.Elasticity.QWordValue > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1165 |
DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1166 |
hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1167 |
end; |
2362 | 1168 |
|
1169 |
||
1170 |
if RopePoints.Count > 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1171 |
DrawRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1172 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1173 |
if Gear^.Elasticity.QWordValue > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1174 |
DrawRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); |
2362 | 1175 |
end; |
1176 |
||
3387
733f4001b8b9
Break out DrawHH/DrawGear to reduce scrolling in uGears.pas, add portal graphics
nemo
parents:
3384
diff
changeset
|
1177 |
{$INCLUDE "GearDrawing.inc"} |
4 | 1178 |
|
1179 |
procedure FreeGearsList; |
|
1180 |
var t, tt: PGear; |
|
1181 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1182 |
tt:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1183 |
GearsList:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1184 |
while tt <> nil do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1185 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1186 |
t:= tt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1187 |
tt:= tt^.NextGear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1188 |
Dispose(t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1189 |
end; |
4 | 1190 |
end; |
1191 |
||
10 | 1192 |
procedure AddMiscGears; |
371 | 1193 |
var i: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1194 |
Gear: PGear; |
4 | 1195 |
begin |
498 | 1196 |
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
|
1197 |
|
2428 | 1198 |
if (TrainingFlags and tfSpawnTargets) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1199 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1200 |
TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1201 |
FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1202 |
end; |
2428 | 1203 |
|
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1204 |
for i:= 0 to Pred(cLandMines) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1205 |
begin |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1206 |
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
|
1207 |
FindPlace(Gear, false, 0, LAND_WIDTH); |
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1208 |
end; |
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1209 |
for i:= 0 to Pred(cExplosives) do |
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1210 |
begin |
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1211 |
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
|
1212 |
FindPlace(Gear, false, 0, LAND_WIDTH); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1213 |
end; |
1895 | 1214 |
|
1215 |
if (GameFlags and gfLowGravity) <> 0 then |
|
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3350
diff
changeset
|
1216 |
cGravity:= cMaxWindSpeed; |
1895 | 1217 |
|
2017 | 1218 |
if (GameFlags and gfVampiric) <> 0 then |
1219 |
cVampiric:= true; |
|
1220 |
||
1895 | 1221 |
Gear:= GearsList; |
1222 |
if (GameFlags and gfInvulnerable) <> 0 then |
|
1223 |
while Gear <> nil do |
|
1224 |
begin |
|
1225 |
Gear^.Invulnerable:= true; // this is only checked on hogs right now, so no need for gear type check |
|
1226 |
Gear:= Gear^.NextGear |
|
1227 |
end; |
|
1228 |
||
1229 |
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
|
1230 |
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
|
1231 |
|
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset
|
1232 |
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
|
1233 |
cArtillery:= true |
4 | 1234 |
end; |
1235 |
||
371 | 1236 |
procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); |
3475 | 1237 |
begin |
1238 |
doMakeExplosion(X, Y, Radius, Mask, $FFFFFFFF); |
|
1239 |
end; |
|
1240 |
||
1241 |
procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); |
|
4 | 1242 |
var Gear: PGear; |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1243 |
dmg, dmgRadius, dmgBase: LongInt; |
3322 | 1244 |
fX, fY: hwFloat; |
3475 | 1245 |
vg: PVisualGear; |
3689 | 1246 |
i, cnt: LongInt; |
4 | 1247 |
begin |
1248 |
TargetPoint.X:= NoPointX; |
|
1434 | 1249 |
{$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
|
1250 |
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
|
1251 |
|
3032 | 1252 |
if ((Mask and EXPLNoGfx) = 0) then |
1253 |
begin |
|
3475 | 1254 |
vg:= nil; |
1255 |
if Radius > 50 then vg:= AddVisualGear(X, Y, vgtBigExplosion) |
|
1256 |
else if Radius > 10 then vg:= AddVisualGear(X, Y, vgtExplosion); |
|
1257 |
if vg <> nil then |
|
1258 |
vg^.Tint:= Tint; |
|
3032 | 1259 |
end; |
2745 | 1260 |
if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion); |
1433 | 1261 |
|
1262 |
if (Mask and EXPLAllDamageInRadius) = 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1263 |
dmgRadius:= Radius shl 1 |
1433 | 1264 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1265 |
dmgRadius:= Radius; |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1266 |
dmgBase:= dmgRadius + cHHRadius div 2; |
3322 | 1267 |
fX:= int2hwFloat(X); |
1268 |
fY:= int2hwFloat(Y); |
|
4 | 1269 |
Gear:= GearsList; |
1270 |
while Gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1271 |
begin |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1272 |
dmg:= 0; |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1273 |
//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
|
1274 |
//if (dmg > 1) and |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1275 |
if (Gear^.State and gstNoDamage) = 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1276 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1277 |
case Gear^.Kind of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1278 |
gtHedgehog, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1279 |
gtMine, |
3710 | 1280 |
gtSMine, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1281 |
gtCase, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1282 |
gtTarget, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1283 |
gtFlame, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1284 |
gtExplosives: begin |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1285 |
// Run the calcs only once we know we have a type that will need damage |
3322 | 1286 |
if hwRound(hwAbs(Gear^.X-fX)+hwAbs(Gear^.Y-fY)) < dmgBase then |
1287 |
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
|
1288 |
if dmg > 1 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1289 |
begin |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1290 |
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
|
1291 |
//{$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF} |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1292 |
if (Mask and EXPLNoDamage) = 0 then |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1293 |
begin |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1294 |
if not Gear^.Invulnerable then |
3682 | 1295 |
ApplyDamage(Gear, dmg, dsExplosion) |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1296 |
else |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1297 |
Gear^.State:= Gear^.State or gstWinner; |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1298 |
end; |
3712 | 1299 |
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
|
1300 |
begin |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1301 |
DeleteCI(Gear); |
3322 | 1302 |
Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - fX); |
1303 |
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
|
1304 |
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
|
1305 |
if not Gear^.Invulnerable then |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1306 |
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
|
1307 |
Gear^.Active:= true; |
3997 | 1308 |
if Gear^.Kind <> gtFlame then FollowGear:= Gear |
3112 | 1309 |
end; |
1310 |
if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) then |
|
1311 |
PHedgehog(Gear^.Hedgehog)^.Effects[hePoisoned] := true; |
|
1312 |
end; |
|
3100 | 1313 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1314 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1315 |
gtGrave: begin |
3097
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1316 |
// Run the calcs only once we know we have a type that will need damage |
3322 | 1317 |
if hwRound(hwAbs(Gear^.X-fX)+hwAbs(Gear^.Y-fY)) < dmgBase then |
1318 |
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
|
1319 |
if dmg > 1 then |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1320 |
begin |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1321 |
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
|
1322 |
Gear^.dY:= - _0_004 * dmg; |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1323 |
Gear^.Active:= true |
6fa39c1c41b9
Try to reduce expensive Distance() call until sure it is needed
nemo
parents:
3094
diff
changeset
|
1324 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1325 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1326 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1327 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1328 |
Gear:= Gear^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1329 |
end; |
1200 | 1330 |
|
621 | 1331 |
if (Mask and EXPLDontDraw) = 0 then |
3689 | 1332 |
if (GameFlags and gfSolidLand) = 0 then |
1333 |
begin |
|
1334 |
cnt:= DrawExplosion(X, Y, Radius) div 1608; // approx 2 16x16 circles to erase per chunk |
|
1335 |
if cnt > 0 then |
|
1336 |
for i:= 0 to cnt do |
|
1337 |
AddVisualGear(X, Y, vgtChunk) |
|
1338 |
end; |
|
1200 | 1339 |
|
498 | 1340 |
uAIMisc.AwareOfExplosion(0, 0, 0) |
4 | 1341 |
end; |
1342 |
||
506 | 1343 |
procedure ShotgunShot(Gear: PGear); |
1344 |
var t: PGear; |
|
955 | 1345 |
dmg: LongInt; |
506 | 1346 |
begin |
509 | 1347 |
Gear^.Radius:= cShotgunRadius; |
506 | 1348 |
t:= GearsList; |
1349 |
while t <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1350 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1351 |
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
|
1352 |
if dmg > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1353 |
case t^.Kind of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1354 |
gtHedgehog, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1355 |
gtMine, |
3710 | 1356 |
gtSMine, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1357 |
gtCase, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1358 |
gtTarget, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1359 |
gtExplosives: begin |
1854 | 1360 |
if (not t^.Invulnerable) then |
3682 | 1361 |
ApplyDamage(t, dmg, dsBullet) |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1362 |
else |
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1363 |
Gear^.State:= Gear^.State or gstWinner; |
867 | 1364 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1365 |
DeleteCI(t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1366 |
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
|
1367 |
t^.dY:= t^.dY + Gear^.dY * dmg * _0_01; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1368 |
t^.State:= t^.State or gstMoving; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1369 |
t^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1370 |
FollowGear:= t |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1371 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1372 |
gtGrave: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1373 |
t^.dY:= - _0_1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1374 |
t^.Active:= true |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1375 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1376 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1377 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1378 |
end; |
621 | 1379 |
if (GameFlags and gfSolidLand) = 0 then DrawExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cShotgunRadius) |
506 | 1380 |
end; |
1381 |
||
371 | 1382 |
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); |
53 | 1383 |
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
|
1384 |
Gear: PGear; |
2726 | 1385 |
i, tmpDmg: LongInt; |
4327 | 1386 |
VGear: PVisualGear; |
38 | 1387 |
begin |
53 | 1388 |
t:= CheckGearsCollision(Ammo); |
3098
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset
|
1389 |
// Just to avoid hogs on rope dodging fire. |
3697 | 1390 |
if (CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtRope) and |
1391 |
(CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.CollisionIndex = -1) and |
|
1392 |
(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
|
1393 |
begin |
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset
|
1394 |
t^.ar[t^.Count]:= CurrentHedgehog^.Gear; |
e5a1bc4e56fd
Specifically check for current hedgehog being on rope, the tricky bastard.
nemo
parents:
3097
diff
changeset
|
1395 |
inc(t^.Count) |
4182 | 1396 |
end; |
4165 | 1397 |
|
351 | 1398 |
i:= t^.Count; |
1506 | 1399 |
|
2489 | 1400 |
if (Ammo^.Kind = gtFlame) and (i > 0) then Ammo^.Health:= 0; |
53 | 1401 |
while i > 0 do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1402 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1403 |
dec(i); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1404 |
Gear:= t^.ar[i]; |
2726 | 1405 |
tmpDmg:= ModifyDamage(Damage, Gear); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1406 |
if (Gear^.State and gstNoDamage) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1407 |
begin |
4327 | 1408 |
|
4329 | 1409 |
if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then |
4327 | 1410 |
begin |
4329 | 1411 |
VGear := AddVisualGear(hwround(Ammo^.X), hwround(Ammo^.Y), vgtBulletHit); |
1412 |
if VGear <> nil then |
|
1413 |
begin |
|
1414 |
VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); |
|
1415 |
end; |
|
4327 | 1416 |
end; |
1417 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1418 |
if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1; |
3697 | 1419 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1420 |
case Gear^.Kind of |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1421 |
gtHedgehog, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1422 |
gtMine, |
3710 | 1423 |
gtSMine, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1424 |
gtTarget, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1425 |
gtCase, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1426 |
gtExplosives: begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1427 |
if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end; |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2407
diff
changeset
|
1428 |
if (not Gear^.Invulnerable) then |
3682 | 1429 |
ApplyDamage(Gear, tmpDmg, dsShove) |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1430 |
else |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2407
diff
changeset
|
1431 |
Gear^.State:= Gear^.State or gstWinner; |
3682 | 1432 |
if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch |
867 | 1433 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1434 |
DeleteCI(Gear); |
2728
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1435 |
if (Gear^.Kind = gtHedgehog) and PHedgehog(Gear^.Hedgehog)^.King then |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1436 |
begin |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1437 |
Gear^.dX:= Ammo^.dX * Power * _0_005; |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1438 |
Gear^.dY:= Ammo^.dY * Power * _0_005 |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1439 |
end |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1440 |
else |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1441 |
begin |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1442 |
Gear^.dX:= Ammo^.dX * Power * _0_01; |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1443 |
Gear^.dY:= Ammo^.dY * Power * _0_01 |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1444 |
end; |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1445 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1446 |
Gear^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1447 |
Gear^.State:= Gear^.State or gstMoving; |
867 | 1448 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1449 |
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1450 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1451 |
if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1452 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1453 |
if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1454 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1455 |
if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1456 |
or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1457 |
end; |
3697 | 1458 |
|
2537
aceebf0653f7
Disable followgear on ammoshove for napalm fire damage
nemo
parents:
2492
diff
changeset
|
1459 |
if (Ammo^.Kind <> gtFlame) or ((Ammo^.State and gsttmpFlag) = 0) then FollowGear:= Gear |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1460 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1461 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1462 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1463 |
end; |
2424
b52344de23ae
In progress, trying to make a fire for molotov cocktail. Normal fire should still work fairly normally.
nemo
parents:
2407
diff
changeset
|
1464 |
if i <> 0 then SetAllToActive |
38 | 1465 |
end; |
1466 |
||
4 | 1467 |
procedure AssignHHCoords; |
955 | 1468 |
var i, t, p, j: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1469 |
ar: array[0..Pred(cMaxHHs)] of PHedgehog; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1470 |
Count: Longword; |
4 | 1471 |
begin |
2771
477957a89881
Override both hog placements, this makes divide teams pretty much useless with hog placement mode. Restricting hog placement to one side might be a nice addition.
nemo
parents:
2770
diff
changeset
|
1472 |
if (GameFlags and gfPlaceHog) <> 0 then PlacingHogs:= true; |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
1473 |
if (GameFlags and gfDivideTeams) <> 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1474 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1475 |
t:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1476 |
TryDo(ClansCount = 2, 'More or less than 2 clans on map in divided teams mode!', true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1477 |
for p:= 0 to 1 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1478 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1479 |
with ClansArray[p]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1480 |
for j:= 0 to Pred(TeamsNumber) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1481 |
with Teams[j]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1482 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1483 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1484 |
if (Gear <> nil) and (Gear^.X.QWordValue = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1485 |
begin |
2771
477957a89881
Override both hog placements, this makes divide teams pretty much useless with hog placement mode. Restricting hog placement to one side might be a nice addition.
nemo
parents:
2770
diff
changeset
|
1486 |
if PlacingHogs then Unplaced:= true |
477957a89881
Override both hog placements, this makes divide teams pretty much useless with hog placement mode. Restricting hog placement to one side might be a nice addition.
nemo
parents:
2770
diff
changeset
|
1487 |
else FindPlace(Gear, false, t, t + LAND_WIDTH div 2);// could make Gear == nil; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1488 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1489 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1490 |
Gear^.Pos:= GetRandom(49); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1491 |
Gear^.dX.isNegative:= p = 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1492 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1493 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1494 |
t:= LAND_WIDTH div 2 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1495 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1496 |
end else // mix hedgehogs |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1497 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1498 |
Count:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1499 |
for p:= 0 to Pred(TeamsCount) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1500 |
with TeamsArray[p]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1501 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1502 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1503 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1504 |
if (Gear <> nil) and (Gear^.X.QWordValue = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1505 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1506 |
ar[Count]:= @Hedgehogs[i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1507 |
inc(Count) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1508 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1509 |
end; |
1792 | 1510 |
// unC0Rr, while it is true user can watch value on map screen, IMO this (and check above) should be enforced in UI |
1511 |
// - is there a good place to put values for the different widgets to check? Right now they are kind of disconnected. |
|
1965 | 1512 |
//it would be nice if divide teams, forts mode and hh per map could all be checked by the team widget, or maybe disable start button |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1513 |
TryDo(Count <= MaxHedgehogs, 'Too many hedgehogs for this map! (max # is ' + inttostr(MaxHedgehogs) + ')', true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1514 |
while (Count > 0) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1515 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1516 |
i:= GetRandom(Count); |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
1517 |
if PlacingHogs then ar[i]^.Unplaced:= true |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
1518 |
else FindPlace(ar[i]^.Gear, false, 0, LAND_WIDTH); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1519 |
if ar[i]^.Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1520 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1521 |
ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > LAND_WIDTH div 2; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1522 |
ar[i]^.Gear^.Pos:= GetRandom(19) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1523 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1524 |
ar[i]:= ar[Count - 1]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1525 |
dec(Count) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1526 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1527 |
end |
4 | 1528 |
end; |
1529 |
||
4024
1ffb84b3823d
Resurrector: respect modified Gear position for resurrection range circle
Tobias Neumann <mail@tobias-neumann.eu>
parents:
4007
diff
changeset
|
1530 |
function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): TPGearArray; |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1531 |
var |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1532 |
t: PGear; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1533 |
begin |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1534 |
GearsNear := nil; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1535 |
t := GearsList; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1536 |
while t <> nil do begin |
4024
1ffb84b3823d
Resurrector: respect modified Gear position for resurrection range circle
Tobias Neumann <mail@tobias-neumann.eu>
parents:
4007
diff
changeset
|
1537 |
if (t^.Kind = Kind) then begin |
1ffb84b3823d
Resurrector: respect modified Gear position for resurrection range circle
Tobias Neumann <mail@tobias-neumann.eu>
parents:
4007
diff
changeset
|
1538 |
if (X - t^.X)*(X - t^.X) + (Y - t^.Y)*(Y-t^.Y) < |
1ffb84b3823d
Resurrector: respect modified Gear position for resurrection range circle
Tobias Neumann <mail@tobias-neumann.eu>
parents:
4007
diff
changeset
|
1539 |
int2hwFloat(r)*int2hwFloat(r) then |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1540 |
begin |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1541 |
SetLength(GearsNear, Length(GearsNear)+1); |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1542 |
GearsNear[High(GearsNear)] := t; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1543 |
end; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1544 |
end; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1545 |
t := t^.NextGear; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1546 |
end; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1547 |
end; |
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1548 |
|
371 | 1549 |
function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
10 | 1550 |
var t: PGear; |
1551 |
begin |
|
1552 |
t:= GearsList; |
|
1553 |
rX:= sqr(rX); |
|
1554 |
rY:= sqr(rY); |
|
1433 | 1555 |
|
10 | 1556 |
while t <> nil do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1557 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1558 |
if (t <> Gear) and (t^.Kind = Kind) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1559 |
if not((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1560 |
exit(t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1561 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1562 |
end; |
1433 | 1563 |
|
351 | 1564 |
CheckGearNear:= nil |
15 | 1565 |
end; |
1566 |
||
1433 | 1567 |
{procedure AmmoFlameWork(Ammo: PGear); |
79 | 1568 |
var t: PGear; |
1569 |
begin |
|
1570 |
t:= GearsList; |
|
1571 |
while t <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1572 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1573 |
if (t^.Kind = gtHedgehog) and (t^.Y < Ammo^.Y) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1574 |
if not (hwSqr(Ammo^.X - t^.X) + hwSqr(Ammo^.Y - t^.Y - int2hwFloat(cHHRadius)) * 2 > _2) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1575 |
begin |
2017 | 1576 |
ApplyDamage(t, 5); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1577 |
t^.dX:= t^.dX + (t^.X - Ammo^.X) * _0_02; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1578 |
t^.dY:= - _0_25; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1579 |
t^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1580 |
DeleteCI(t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1581 |
FollowGear:= t |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1582 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1583 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1584 |
end; |
1433 | 1585 |
end;} |
79 | 1586 |
|
371 | 1587 |
function CheckGearsNear(mX, mY: LongInt; Kind: TGearsType; rX, rY: LongInt): PGear; |
16 | 1588 |
var t: PGear; |
1589 |
begin |
|
1590 |
t:= GearsList; |
|
1591 |
rX:= sqr(rX); |
|
1592 |
rY:= sqr(rY); |
|
1593 |
while t <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1594 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1595 |
if t^.Kind in Kind then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1596 |
if not (hwSqr(int2hwFloat(mX) - t^.X) / rX + hwSqr(int2hwFloat(mY) - t^.Y) / rY > _1) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1597 |
exit(t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1598 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1599 |
end; |
351 | 1600 |
CheckGearsNear:= nil |
16 | 1601 |
end; |
1602 |
||
1603 |
function CountGears(Kind: TGearType): Longword; |
|
1604 |
var t: PGear; |
|
2695 | 1605 |
count: Longword = 0; |
16 | 1606 |
begin |
2695 | 1607 |
|
16 | 1608 |
t:= GearsList; |
1609 |
while t <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1610 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1611 |
if t^.Kind = Kind then inc(count); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1612 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1613 |
end; |
2695 | 1614 |
CountGears:= count; |
16 | 1615 |
end; |
1616 |
||
3768 | 1617 |
procedure ResurrectHedgehog(gear: PGear); |
3831
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1618 |
var tempTeam : PTeam; |
3768 | 1619 |
begin |
1620 |
gear^.dX := _0; |
|
1621 |
gear^.dY := _0; |
|
1622 |
gear^.State := gstWait; |
|
3775
c0397452e7c5
gfAISurvival/heResurrectable: respawn always with 100HP
burp
parents:
3773
diff
changeset
|
1623 |
uStats.HedgehogDamaged(gear); |
c0397452e7c5
gfAISurvival/heResurrectable: respawn always with 100HP
burp
parents:
3773
diff
changeset
|
1624 |
gear^.Damage := 0; |
c0397452e7c5
gfAISurvival/heResurrectable: respawn always with 100HP
burp
parents:
3773
diff
changeset
|
1625 |
gear^.Health := 100; |
3773 | 1626 |
with CurrentHedgehog^ do begin |
1627 |
inc(Team^.stats.AIKills); |
|
1628 |
if Team^.AIKillsTex <> nil then FreeTexture(Team^.AIKillsTex); |
|
1629 |
Team^.AIKillsTex := RenderStringTex(inttostr(Team^.stats.AIKills), Team^.Clan^.Color, fnt16); |
|
1630 |
end; |
|
3831
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1631 |
tempTeam := PHedgehog(gear^.Hedgehog)^.Team; |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1632 |
DeleteCI(gear); |
3770 | 1633 |
FindPlace(gear, false, 0, LAND_WIDTH); |
3831
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1634 |
if gear <> nil then begin |
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1635 |
RenderHealth(PHedgehog(gear^.Hedgehog)^); |
3848 | 1636 |
ScriptCall('onGearResurrect', gear^.uid); |
3831
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1637 |
end; |
3410db7ac43e
gfAISurvival: fix issue when cpu cannot find new place to spawn
burp
parents:
3799
diff
changeset
|
1638 |
RecountTeamHealth(tempTeam); |
3768 | 1639 |
end; |
1640 |
||
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
|
1641 |
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword): PGear; |
3730 | 1642 |
begin |
3734 | 1643 |
FollowGear := AddGear(x, y, gtCase, 0, _0, _0, 0); |
1644 |
cCaseFactor := 0; |
|
1645 |
||
1646 |
if (content > ord(High(TAmmoType))) then content := ord(High(TAmmoType)); |
|
1647 |
||
1648 |
case crate of |
|
1649 |
HealthCrate: begin |
|
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1650 |
FollowGear^.Health := cHealthCaseAmount; |
3734 | 1651 |
FollowGear^.Pos := posCaseHealth; |
1652 |
AddCaption(GetEventString(eidNewHealthPack), cWhiteColor, capgrpAmmoInfo); |
|
1653 |
end; |
|
1654 |
AmmoCrate: begin |
|
1655 |
FollowGear^.Pos := posCaseAmmo; |
|
4240
4e81670e52aa
er. and cast to TAmmoType, which burp's routine still requires :)
nemo
parents:
4239
diff
changeset
|
1656 |
FollowGear^.AmmoType := TAmmoType(content); |
3734 | 1657 |
AddCaption(GetEventString(eidNewAmmoPack), cWhiteColor, capgrpAmmoInfo); |
1658 |
end; |
|
1659 |
UtilityCrate: begin |
|
1660 |
FollowGear^.Pos := posCaseUtility; |
|
4240
4e81670e52aa
er. and cast to TAmmoType, which burp's routine still requires :)
nemo
parents:
4239
diff
changeset
|
1661 |
FollowGear^.AmmoType := TAmmoType(content); |
3734 | 1662 |
AddCaption(GetEventString(eidNewUtilityPack), cWhiteColor, capgrpAmmoInfo); |
1663 |
end; |
|
1664 |
end; |
|
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
|
1665 |
|
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
|
1666 |
if ( (x = 0) and (y = 0) ) then FindPlace(FollowGear, true, 0, LAND_WIDTH); |
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
|
1667 |
|
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
|
1668 |
SpawnCustomCrateAt := FollowGear; |
3730 | 1669 |
end; |
1670 |
||
15 | 1671 |
procedure SpawnBoxOfSmth; |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1672 |
var t, aTot, uTot, a, h: LongInt; |
394
4c017ae1226a
- Implement hack to let ammo stores work without needed assistance of frontend
unc0rr
parents:
393
diff
changeset
|
1673 |
i: TAmmoType; |
15 | 1674 |
begin |
2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
1675 |
if (PlacingHogs) or |
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2760
diff
changeset
|
1676 |
(cCaseFactor = 0) or |
614 | 1677 |
(CountGears(gtCase) >= 5) or |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1678 |
(GetRandom(cCaseFactor) <> 0) then exit; |
1295 | 1679 |
|
1948 | 1680 |
FollowGear:= nil; |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1681 |
aTot:= 0; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1682 |
uTot:= 0; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1683 |
for i:= Low(TAmmoType) to High(TAmmoType) do |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1684 |
if (Ammoz[i].Ammo.Propz and ammoprop_Utility) = 0 then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1685 |
inc(aTot, Ammoz[i].Probability) |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1686 |
else |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1687 |
inc(uTot, Ammoz[i].Probability); |
1966 | 1688 |
|
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1689 |
t:=0; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1690 |
a:=aTot; |
3268 | 1691 |
h:= 1; |
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1692 |
|
3268 | 1693 |
if (aTot+uTot) <> 0 then |
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1694 |
if ((GameFlags and gfInvulnerable) = 0) then |
3268 | 1695 |
begin |
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1696 |
h:= cHealthCaseProb * 100; |
3268 | 1697 |
t:= GetRandom(10000); |
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1698 |
a:= (10000-h)*aTot div (aTot+uTot) |
3268 | 1699 |
end |
3697 | 1700 |
else |
3268 | 1701 |
begin |
1702 |
t:= GetRandom(aTot+uTot); |
|
1703 |
h:= 0 |
|
1704 |
end; |
|
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1705 |
|
3697 | 1706 |
|
3261
fa7086253e83
Rebalance Default to take into account reweighting of crates, remove redundant check
nemo
parents:
3259
diff
changeset
|
1707 |
if t<h then |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1708 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1709 |
FollowGear:= AddGear(0, 0, gtCase, 0, _0, _0, 0); |
4143
eb7981f34800
Remove the last vestiges of the shoppa hack by adding 2 spinners for percentage health and amount of health in crate, also update translations and increase SD spinner (some users have requested it)
henek
parents:
4120
diff
changeset
|
1710 |
FollowGear^.Health:= cHealthCaseAmount; |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1711 |
FollowGear^.Pos:= posCaseHealth; |
3331 | 1712 |
AddCaption(GetEventString(eidNewHealthPack), cWhiteColor, capgrpAmmoInfo); |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1713 |
end |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1714 |
else if (t<a+h) then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1715 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1716 |
t:= aTot; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1717 |
if (t > 0) then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1718 |
begin |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1719 |
FollowGear:= AddGear(0, 0, gtCase, 0, _0, _0, 0); |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1720 |
t:= GetRandom(t); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1721 |
i:= Low(TAmmoType); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1722 |
while t >= 0 do |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1723 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1724 |
inc(i); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1725 |
if (Ammoz[i].Ammo.Propz and ammoprop_Utility) = 0 then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1726 |
dec(t, Ammoz[i].Probability) |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1727 |
end; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1728 |
FollowGear^.Pos:= posCaseAmmo; |
4238
6f1631765ebd
Fix a long-standing bug with ammo due to gstMoving being set on gears generically, causing an incorrect ammo type to be set. This caused crashes and incorrect ammo types.
nemo
parents:
4225
diff
changeset
|
1729 |
FollowGear^.AmmoType:= i; |
3331 | 1730 |
AddCaption(GetEventString(eidNewAmmoPack), cWhiteColor, capgrpAmmoInfo); |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1731 |
end |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1732 |
end |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1733 |
else |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1734 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1735 |
t:= uTot; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1736 |
if (t > 0) then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1737 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1738 |
FollowGear:= AddGear(0, 0, gtCase, 0, _0, _0, 0); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1739 |
t:= GetRandom(t); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1740 |
i:= Low(TAmmoType); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1741 |
while t >= 0 do |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1742 |
begin |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1743 |
inc(i); |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1744 |
if (Ammoz[i].Ammo.Propz and ammoprop_Utility) <> 0 then |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1745 |
dec(t, Ammoz[i].Probability) |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1746 |
end; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1747 |
FollowGear^.Pos:= posCaseUtility; |
4238
6f1631765ebd
Fix a long-standing bug with ammo due to gstMoving being set on gears generically, causing an incorrect ammo type to be set. This caused crashes and incorrect ammo types.
nemo
parents:
4225
diff
changeset
|
1748 |
FollowGear^.AmmoType:= i; |
3331 | 1749 |
AddCaption(GetEventString(eidNewUtilityPack), cWhiteColor, capgrpAmmoInfo); |
3259
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1750 |
end |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1751 |
end; |
a29ccf4aed82
This attempts to distribute crates based on their probabilities, while preserving 35% for health crates since that has no probability GUI yet
nemo
parents:
3255
diff
changeset
|
1752 |
|
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1753 |
// handles case of no ammo or utility crates - considered also placing booleans in uAmmos and altering probabilities |
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
1754 |
if (FollowGear <> nil) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1755 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1756 |
FindPlace(FollowGear, true, 0, LAND_WIDTH); |
2376 | 1757 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1758 |
if (FollowGear <> nil) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1759 |
PlaySound(sndReinforce, CurrentTeam^.voicepack) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1760 |
end |
70 | 1761 |
end; |
1762 |
||
1515 | 1763 |
procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); |
70 | 1764 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1765 |
function CountNonZeroz(x, y, r, c: LongInt): LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1766 |
var i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1767 |
count: LongInt = 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1768 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1769 |
if (y and LAND_HEIGHT_MASK) = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1770 |
for i:= max(x - r, 0) to min(x + r, LAND_WIDTH - 4) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1771 |
if Land[y, i] <> 0 then |
2659 | 1772 |
begin |
2695 | 1773 |
inc(count); |
1774 |
if count = c then exit(count) |
|
2659 | 1775 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1776 |
CountNonZeroz:= count; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1777 |
end; |
70 | 1778 |
|
495 | 1779 |
var x: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1780 |
y, sy: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1781 |
ar: array[0..511] of TPoint; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1782 |
ar2: array[0..1023] of TPoint; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1783 |
cnt, cnt2: Longword; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1784 |
delta: LongInt; |
70 | 1785 |
begin |
386 | 1786 |
delta:= 250; |
1787 |
cnt2:= 0; |
|
16 | 1788 |
repeat |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1789 |
x:= Left + LongInt(GetRandom(Delta)); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1790 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1791 |
inc(x, Delta); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1792 |
cnt:= 0; |
3407 | 1793 |
y:= min(1024, topY) - 2 * Gear^.Radius; |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1794 |
while y < cWaterLine do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1795 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1796 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1797 |
inc(y, 2); |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1798 |
until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) = 0); |
2376 | 1799 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1800 |
sy:= y; |
1515 | 1801 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1802 |
repeat |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1803 |
inc(y); |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1804 |
until (y >= cWaterLine) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) <> 0); |
3697 | 1805 |
|
2923
e33ecd95aa1a
Rearrange the test a bit to make the separation a bit clearer, also try snuggling crates up a bit closer to other things.
nemo
parents:
2915
diff
changeset
|
1806 |
if (y - sy > Gear^.Radius * 2) and |
e33ecd95aa1a
Rearrange the test a bit to make the separation a bit clearer, also try snuggling crates up a bit closer to other things.
nemo
parents:
2915
diff
changeset
|
1807 |
(((Gear^.Kind = gtExplosives) |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1808 |
and (y < cWaterLine) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1809 |
and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 60, 60) = nil) |
3697 | 1810 |
and (CountNonZeroz(x, y+1, Gear^.Radius - 1, Gear^.Radius+1) > Gear^.Radius)) |
2923
e33ecd95aa1a
Rearrange the test a bit to make the separation a bit clearer, also try snuggling crates up a bit closer to other things.
nemo
parents:
2915
diff
changeset
|
1811 |
or |
e33ecd95aa1a
Rearrange the test a bit to make the separation a bit clearer, also try snuggling crates up a bit closer to other things.
nemo
parents:
2915
diff
changeset
|
1812 |
((Gear^.Kind <> gtExplosives) |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1813 |
and (y < cWaterLine) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1814 |
and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 110, 110) = nil))) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1815 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1816 |
ar[cnt].X:= x; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1817 |
if withFall then ar[cnt].Y:= sy + Gear^.Radius |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1818 |
else ar[cnt].Y:= y - Gear^.Radius; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1819 |
inc(cnt) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1820 |
end; |
2376 | 1821 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1822 |
inc(y, 45) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1823 |
end; |
2376 | 1824 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1825 |
if cnt > 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1826 |
with ar[GetRandom(cnt)] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1827 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1828 |
ar2[cnt2].x:= x; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1829 |
ar2[cnt2].y:= y; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1830 |
inc(cnt2) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1831 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1832 |
until (x + Delta > Right); |
2376 | 1833 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1834 |
dec(Delta, 60) |
386 | 1835 |
until (cnt2 > 0) or (Delta < 70); |
1515 | 1836 |
|
386 | 1837 |
if cnt2 > 0 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1838 |
with ar2[GetRandom(cnt2)] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1839 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1840 |
Gear^.X:= int2hwFloat(x); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1841 |
Gear^.Y:= int2hwFloat(y); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1842 |
{$IFDEF DEBUGFILE} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1843 |
AddFileLog('Assigned Gear coordinates (' + inttostr(x) + ',' + inttostr(y) + ')'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1844 |
{$ENDIF} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1845 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1846 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1847 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1848 |
OutError('Can''t find place for Gear', false); |
3832
f949798219bf
Delete CI in ResurrectHedgehog prior to FindPlace. Restrict FindPlace to the waterline, a bit more efficient.
nemo
parents:
3831
diff
changeset
|
1849 |
if Gear^.Kind = gtHedgehog then PHedgehog(Gear^.Hedgehog)^.Effects[heResurrectable] := false; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1850 |
DeleteGear(Gear); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1851 |
Gear:= nil |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1852 |
end |
10 | 1853 |
end; |
1854 |
||
2726 | 1855 |
function ModifyDamage(dmg: Longword; Gear: PGear): Longword; |
2728
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1856 |
var i: hwFloat; |
2726 | 1857 |
begin |
1858 |
(* Invulnerability cannot be placed in here due to still needing kicks |
|
1859 |
Not without a new damage machine. |
|
1860 |
King check should be in here instead of ApplyDamage since Tiy wants them kicked less |
|
1861 |
*) |
|
2728
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1862 |
i:= _1; |
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1863 |
if (CurrentHedgehog <> nil) and CurrentHedgehog^.King then i:= _1_5; |
2741 | 1864 |
if (Gear^.Hedgehog <> nil) and (PHedgehog(Gear^.Hedgehog)^.King) then |
2728
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1865 |
ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent * _0_5) |
2726 | 1866 |
else |
2728
640916bedea7
Adjust king movement in ammoshove, give king a damage bonus
nemo
parents:
2726
diff
changeset
|
1867 |
ModifyDamage:= hwRound(_0_01 * cDamageModifier * dmg * i * cDamagePercent) |
2726 | 1868 |
end; |
1869 |
||
2790 | 1870 |
function GearByUID(uid : Longword) : PGear; |
1871 |
var gear: PGear; |
|
1872 |
begin |
|
1873 |
GearByUID:= nil; |
|
1874 |
gear:= GearsList; |
|
1875 |
while gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1876 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1877 |
if gear^.uid = uid then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1878 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1879 |
GearByUID:= gear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1880 |
exit |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1881 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1882 |
gear:= gear^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1883 |
end |
2790 | 1884 |
end; |
1885 |
||
3038 | 1886 |
procedure initModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1887 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1888 |
CurAmmoGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1889 |
GearsList:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1890 |
KilledHHs:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1891 |
SuddenDeathDmg:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1892 |
SpeechType:= 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1893 |
TrainingTargetGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1894 |
skipFlag:= false; |
3697 | 1895 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1896 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1897 |
PrvInactive:= false; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1898 |
end; |
4 | 1899 |
|
3038 | 1900 |
procedure freeModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1901 |
begin |
3615 | 1902 |
FreeGearsList(); |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1903 |
end; |
4 | 1904 |
|
2451
5affd0840927
New data files from Tiy, add gtFlame to avoidance list
nemo
parents:
2428
diff
changeset
|
1905 |
end. |