author  nemo 
Thu, 12 Mar 2020 15:09:16 0400  
changeset 15550  0b16baefefd1 
parent 15549  608b5de819a5 
child 15597  6e72bd61002e 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
11046  3 
* Copyright (c) 20042015 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 

10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright  but I ain't gonna touch their copyright headers
sheepluva
parents:
10105
diff
changeset

16 
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
4  17 
*) 
18 

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

4  21 
unit uGears; 
5121
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

22 
(* 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

23 
* This unit defines the behavior of gears. 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

24 
* 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

25 
* Gears are "things"/"objects" that may be visible to the player or not, 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

26 
* but always have an effect on the course of the game. 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

27 
* 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

28 
* E.g.: weapons, hedgehogs, etc. 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

29 
* 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

30 
* Note: The visual appearance of gears is defined in the unit "uGearsRender". 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

31 
* 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

32 
* Note: Gears that do not have an effect on the game but are just visual 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

33 
* effects are called "Visual Gears" and defined in the respective unit! 
2d34ec60992c
added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents:
5063
diff
changeset

34 
*) 
4  35 
interface 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

36 
uses uConsts, uFloat, uTypes, uChat, uCollisions; 
3697  37 

3038  38 
procedure initModule; 
39 
procedure freeModule; 

7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset

40 
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content, cnt: Longword): PGear; 
5343  41 
function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean ): PGear; 
4  42 
procedure ProcessGears; 
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset

43 
procedure EndTurnCleanup; 
956  44 
procedure DrawGears; 
13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

45 
procedure DrawGearsGui; 
15436  46 
procedure DrawFinger; 
4  47 
procedure FreeGearsList; 
10  48 
procedure AddMiscGears; 
4  49 
procedure AssignHHCoords; 
14765
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

50 
procedure RandomizeHHAnim; 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

51 
procedure StartSuddenDeath; 
3405  52 
function GearByUID(uid : Longword) : PGear; 
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

53 
function IsClockRunning() : boolean; 
4  54 

55 
implementation 

14861
acb0526bf458
Refactor decimal separator to make Pas2C happy
Wuzzy <Wuzzy2@mail.ru>
parents:
14860
diff
changeset

56 
uses uStore, uSound, uTeams, uRandom, uIO, uLandGraphics, 
9651  57 
{$IFDEF USE_TOUCH_INTERFACE}uTouch,{$ENDIF} 
9295
f8819c3dde54
Remove some GLunit dependencies noticed on graph. uUtils was using it for GLfloat  but, the stuff it was returning to was usually converting to "real" anyway. uLand was including it unnecessarily. Minor refactor
nemo
parents:
9293
diff
changeset

58 
uLocale, uAmmos, uStats, uVisualGears, uScript, uVariables, 
12621  59 
uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, 
9285  60 
uGearsHedgehog, uGearsUtils, uGearsList, uGearsHandlersRope 
9293
873022596d15
You better test build before committing even trivial patches
unc0rr
parents:
9291
diff
changeset

61 
, uVisualGearsList, uGearsHandlersMess, uAI; 
789  62 

7028  63 
var skipFlag: boolean; 
3697  64 

6982  65 
var delay: LongWord; 
66 
delay2: LongWord; 

14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

67 
step: (stInit, stDelay1, stChDmg, stSweep, stTurnStats, stChWin1, 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

68 
stTurnReact, stDelay2, stChWin2, stWater, stChWin3, 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

69 
stChKing, stSuddenDeath, stDelay3, stHealth, stSpawn, stDelay4, 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

70 
stNTurn); 
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

71 
NewTurnTick: LongWord; 
6982  72 

14991
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14956
diff
changeset

73 
const delayInit = 50; 
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14956
diff
changeset

74 
delaySDStart = 1600; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

75 
delaySDWarning = 1000; 
14405  76 
delayDamageTagFull = 1500; 
77 
delayDamageTagShort = 500; 

14408  78 
delayTurnReact = 800; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

79 
delayFinal = 100; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

80 

4  81 
function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs 
82 
var Gear: PGear; 

1849  83 
dmg: LongInt; 
4  84 
begin 
351  85 
CheckNoDamage:= true; 
4  86 
Gear:= GearsList; 
87 
while Gear <> nil do 

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

88 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

89 
if (Gear^.Kind = gtHedgehog) and (((GameFlags and gfInfAttack) = 0) or ((Gear^.dX.QWordValue < _0_000004.QWordValue) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

90 
and (Gear^.dY.QWordValue < _0_000004.QWordValue))) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

91 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

92 
if (not isInMultiShoot) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

93 
inc(Gear^.Damage, Gear^.Karma); 
9685
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

94 
if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

96 
CheckNoDamage:= false; 
4824  97 

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

98 
dmg:= Gear^.Damage; 
14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

99 
if (Gear^.Health < dmg) then 
3453  100 
begin 
101 
Gear^.Active:= true; 

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

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

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

105 
dec(Gear^.Health, dmg); 
7882
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset

106 
(* 
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset

107 
This doesn't fit well w/ the new loser sprite which is cringing from an attack. 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

108 
if (Gear^.Hedgehog^.Team = CurrentTeam) and (Gear^.Damage <> Gear^.Karma) 
7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
7007
diff
changeset

109 
and (not Gear^.Hedgehog^.King) and (Gear^.Hedgehog^.Effects[hePoisoned] = 0) and (not SuddenDeathDmg) then 
2017  110 
Gear^.State:= Gear^.State or gstLoser; 
7882
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset

111 
*) 
2017  112 

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

113 
spawnHealthTagForHH(Gear, dmg); 
867  114 

4365  115 
RenderHealth(Gear^.Hedgehog^); 
116 
RecountTeamHealth(Gear^.Hedgehog^.Team); 

1505  117 

14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

118 
end 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

119 
else if ((GameFlags and gfKing) <> 0) and (not Gear^.Hedgehog^.Team^.hasKing) then 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

120 
begin 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

121 
Gear^.Active:= true; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

122 
Gear^.Health:= 0; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

123 
RenderHealth(Gear^.Hedgehog^); 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

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

125 
end; 
14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

126 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

127 
if (not isInMultiShoot) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

128 
Gear^.Karma:= 0; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

132 
end; 
4  133 
end; 
134 

14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

135 
function DoDelay: boolean; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

136 
begin 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

137 
if delay <= 0 then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

138 
delay:= 1 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

139 
else 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

140 
dec(delay); 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

141 
DoDelay:= delay = 0; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

142 
end; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

143 

14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

144 
function CheckMinionsDie: boolean; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

145 
var Gear: PGear; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

146 
begin 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

147 
CheckMinionsDie:= false; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

148 
if (GameFlags and gfKing) = 0 then 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

149 
exit; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

150 

87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

151 
Gear:= GearsList; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

152 
while Gear <> nil do 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

153 
begin 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

154 
if (Gear^.Kind = gtHedgehog) and (not Gear^.Hedgehog^.King) and (not Gear^.Hedgehog^.Team^.hasKing) then 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

155 
begin 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

156 
CheckMinionsDie:= true; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

157 
exit; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

158 
end; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

159 
Gear:= Gear^.NextGear; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

160 
end; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

161 
end; 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

162 

1054  163 
procedure HealthMachine; 
164 
var Gear: PGear; 

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

165 
team: PTeam; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

167 
flag: Boolean; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

168 
tmp: LongWord; 
1054  169 
begin 
3682  170 
Gear:= GearsList; 
1054  171 

3682  172 
while Gear <> nil do 
173 
begin 

174 
if Gear^.Kind = gtHedgehog then 

175 
begin 

176 
tmp:= 0; 

14349
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

177 
// Deal poison damage (when not frozen) 
11867  178 
if (Gear^.Hedgehog^.Effects[hePoisoned] <> 0) and (Gear^.Hedgehog^.Effects[heFrozen] = 0) then 
4111  179 
begin 
10012
82dd9f0c88f7
Make poison damage possibly variable (might as well since effects is a count). Scripts might find it handy.
nemo
parents:
9998
diff
changeset

180 
inc(tmp, ModifyDamage(Gear^.Hedgehog^.Effects[hePoisoned], Gear)); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

181 
if (GameFlags and gfResetHealth) <> 0 then 
14349
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

182 
dec(Gear^.Hedgehog^.InitialHealth); 
4111  183 
end; 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

184 
// Apply SD health decrease as soon as SD starts 
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset

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

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

187 
inc(tmp, cHealthDecrease); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

188 
if (GameFlags and gfResetHealth) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

189 
dec(Gear^.Hedgehog^.InitialHealth, cHealthDecrease) 
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset

190 
end; 
14349
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

191 
// Reduce king health when he is alone in team 
4365  192 
if Gear^.Hedgehog^.King then 
3109
06c089cb739c
Reduce turns to 1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset

193 
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

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

196 
for i:= 0 to Pred(team^.HedgehogsNumber) do 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

197 
if (team^.Hedgehogs[i].Gear <> nil) and (not team^.Hedgehogs[i].King) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

198 
and (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

199 
flag:= true; 
4111  200 
if not flag then 
201 
begin 

202 
inc(tmp, 5); 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

203 
if (GameFlags and gfResetHealth) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

204 
dec(Gear^.Hedgehog^.InitialHealth, 5) 
4111  205 
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

206 
end; 
14349
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

207 
// Initial health must never be below 1 because hog might be resurrected 
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

208 
if Gear^.Hedgehog^.InitialHealth < 1 then 
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

209 
Gear^.Hedgehog^.InitialHealth:= 1; 
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14196
diff
changeset

210 
// Set real damage 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

211 
if tmp > 0 then 
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

212 
begin 
13319
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

213 
// SD damage never reduces health below 1 
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

214 
tmp:= min(tmp, max(0, Gear^.Health  1  Gear^.Damage)); 
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

215 
inc(Gear^.Damage, tmp); 
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

216 
if tmp > 0 then 
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

217 
// Make hedgehog moan on damage 
14041
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13876
diff
changeset

218 
HHHurt(Gear^.Hedgehog, dsPoison, tmp); 
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

219 
end 
3682  220 
end; 
1054  221 

3682  222 
Gear:= Gear^.NextGear 
223 
end; 

1054  224 
end; 
225 

4  226 
procedure ProcessGears; 
14768
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

227 
var t, tmpGear: PGear; 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

228 
i, j, AliveCount: LongInt; 
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10116
diff
changeset

229 
s: ansistring; 
9672
8663d299ba62
this should prevent sliding when game clock isn't running. sorry unc0rr, not going to bother encapsulating. maybe later. short on time right now/lazy
nemo
parents:
9651
diff
changeset

230 
prevtime: LongWord; 
11469  231 
stirFallers: boolean; 
4  232 
begin 
11469  233 
stirFallers:= false; 
9672
8663d299ba62
this should prevent sliding when game clock isn't running. sorry unc0rr, not going to bother encapsulating. maybe later. short on time right now/lazy
nemo
parents:
9651
diff
changeset

234 
prevtime:= TurnTimeLeft; 
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

235 
ScriptCall('onGameTick'); 
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

236 
if GameTicks mod 20 = 0 then ScriptCall('onGameTick20'); 
8351  237 
if GameTicks = NewTurnTick then 
238 
begin 

239 
ScriptCall('onNewTurn'); 

9651  240 
{$IFDEF USE_TOUCH_INTERFACE} 
8351  241 
uTouch.NewTurnBeginning(); 
242 
{$ENDIF} 

243 
end; 

8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

244 

868  245 
PrvInactive:= AllInactive; 
4  246 
AllInactive:= true; 
1495  247 

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

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

251 
begin 
7053  252 
StopSoundChan(StepSoundChannel); 
2993
d83edb74e92d
Remove animation on jumping/resuming walk, only leave it in on weapon switch
nemo
parents:
2991
diff
changeset

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

254 
end; 
2940  255 

256 
if StepSoundTimer > 0 then 

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

257 
dec(StepSoundTimer, 1); 
2940  258 

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

261 
begin 
7395  262 
curHandledGear:= t; 
263 
t:= curHandledGear^.NextGear; 

11469  264 
if (GameTicks and $1FFF = 0) and (curHandledGear^.Kind = gtCase) and (curHandledGear^.Pos <> posCaseHealth) then 
265 
stirFallers := true; 

3123  266 

7517  267 
if curHandledGear^.Message and gmDelete <> 0 then 
7519  268 
DeleteGear(curHandledGear) 
269 
else 

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

270 
begin 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

271 
if curHandledGear^.Message and gmRemoveFromList <> 0 then 
7519  272 
begin 
273 
RemoveGearFromList(curHandledGear); 

274 
// since I can't think of any good reason this would ever be separate from a remove from list, going to keep it inside this block 

275 
if curHandledGear^.Message and gmAddToList <> 0 then InsertGearToList(curHandledGear); 

276 
curHandledGear^.Message:= curHandledGear^.Message and (not (gmRemoveFromList or gmAddToList)) 

277 
end; 

278 
if curHandledGear^.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

279 
begin 
15359
c117e17b90bc
flag some of the renderstringtex which are taking up a ton of processing time with statsonly and pas2c
nemo
parents:
15220
diff
changeset

280 
if (not cOnlyStats) and curHandledGear^.RenderTimer then 
7519  281 
begin 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

282 
// Mine timer 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

283 
if (curHandledGear^.Kind in [gtMine, gtSMine, gtAirMine]) then 
14757  284 
begin 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

285 
if curHandledGear^.Tex = nil then 
14752
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14750
diff
changeset

286 
if (curHandledGear^.Karma = 1) and (not (GameType in [gmtDemo, gmtRecord])) then 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

287 
// Secret mine timer 
14878
4e3d81af71bf
Some fixes to make Pas2C happy again
Wuzzy <Wuzzy2@mail.ru>
parents:
14861
diff
changeset

288 
curHandledGear^.Tex:= RenderStringTex(trmsg[sidUnknownGearValue], $ff808080, fntSmall) 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

289 
else 
14752
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14750
diff
changeset

290 
begin 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

291 
// Display mine timer with up to 1 decimal point of precision (rounded down) 
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

292 
i:= curHandledGear^.Timer div 1000; 
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

293 
j:= (curHandledGear^.Timer mod 1000) div 100; 
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

294 
if j = 0 then 
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

295 
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(i)), $ff808080, fntSmall) 
14752
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14750
diff
changeset

296 
else 
14861
acb0526bf458
Refactor decimal separator to make Pas2C happy
Wuzzy <Wuzzy2@mail.ru>
parents:
14860
diff
changeset

297 
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(i) + lDecimalSeparator + inttostr(j)), $ff808080, fntSmall); 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

298 
end 
14757  299 
end 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

300 
// Timer of other gears 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

301 
else if ((curHandledGear^.Timer > 500) and ((curHandledGear^.Timer mod 1000) = 0)) then 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

302 
begin 
14755
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14752
diff
changeset

303 
// Display time in seconds as whole number, rounded up 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

304 
FreeAndNilTexture(curHandledGear^.Tex); 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

305 
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(curHandledGear^.Timer div 1000)), cWhiteColor, fntSmall); 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

306 
end; 
7519  307 
end; 
308 
curHandledGear^.doStep(curHandledGear); 

309 
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

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

311 
end; 
11469  312 
if stirFallers then 
313 
begin 

314 
t := GearsList; 

315 
while t <> nil do 

316 
begin 

13214
9c81e34f1933
gtGenericFaller: Use Tag=1 to allow gtGenericFaller to be displaced randomly. Otherwise it is left alone
Wuzzy <Wuzzy2@mail.ru>
parents:
13171
diff
changeset

317 
if (t^.Kind = gtGenericFaller) and (t^.Tag = 1) then 
11469  318 
begin 
319 
t^.Active:= true; 

320 
t^.X:= int2hwFloat(GetRandom(rightXleftX)+leftX); 

321 
t^.Y:= int2hwFloat(GetRandom(LAND_HEIGHTtopY)+topY); 

322 
t^.dX:= _90(GetRandomf*_360); 

323 
t^.dY:= _90(GetRandomf*_360) 

324 
end; 

325 
t := t^.NextGear 

326 
end 

327 
end; 

328 

7395  329 
curHandledGear:= nil; 
89  330 

4  331 
if AllInactive then 
1343  332 
case step of 
12928  333 
stInit: 
334 
begin 

13031
bef97cc310b0
Fix onEndTurn being called in multishoot
Wuzzy <Wuzzy2@mail.ru>
parents:
12938
diff
changeset

335 
if (not bBetweenTurns) and (not isInMultiShoot) then 
bef97cc310b0
Fix onEndTurn being called in multishoot
Wuzzy <Wuzzy2@mail.ru>
parents:
12938
diff
changeset

336 
ScriptCall('onEndTurn'); 
14991
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14956
diff
changeset

337 
delay:= delayInit; 
12928  338 
inc(step) 
339 
end; 

14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

340 
stDelay1: 
14991
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14956
diff
changeset

341 
begin 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

342 
if DoDelay() then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

343 
inc(step); 
14991
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14956
diff
changeset

344 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

345 
stChDmg: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

346 
if CheckNoDamage then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

347 
inc(step) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

348 
else 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

349 
begin 
14405  350 
if (not bBetweenTurns) and (not isInMultiShoot) then 
351 
delay:= delayDamageTagShort 

352 
else 

353 
delay:= delayDamageTagFull; 

14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

354 
step:= stDelay1; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

355 
end; 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

356 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

357 
stSweep: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

358 
if SweepDirty then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

359 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

360 
SetAllToActive; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

361 
step:= stChDmg 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

362 
end 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

363 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

364 
inc(step); 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

365 

13755
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

366 
stTurnStats: 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

367 
begin 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

368 
if (not bBetweenTurns) and (not isInMultiShoot) then 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

369 
uStats.TurnStats; 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

370 
inc(step) 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

371 
end; 
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13749
diff
changeset

372 

13735
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

373 
stChWin1: 
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

374 
begin 
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

375 
CheckForWin(); 
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

376 
inc(step) 
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

377 
end; 
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

378 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

379 
stTurnReact: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

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

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

383 
uStats.TurnReaction; 
13761
6fd56a26e8b8
Fix turn reaction not working properly after turn
Wuzzy <Wuzzy2@mail.ru>
parents:
13755
diff
changeset

384 
uStats.TurnStatsReset; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

385 
delay:= delayTurnReact; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

386 
inc(step) 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

387 
end 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

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

390 
end; 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

391 

14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

392 
stDelay2: 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

393 
if DoDelay() then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

394 
inc(step); 
13735
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

395 
stChWin2: 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

396 
begin 
7669
a85e1c167b69
I didn't want to do this since it seems less clean, but...
sheepluva
parents:
7667
diff
changeset

397 
CheckForWin(); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

398 
inc(step) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

399 
end; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

400 
stWater: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

401 
if (not bBetweenTurns) and (not isInMultiShoot) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

402 
begin 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

403 
// Start Sudden Death water rise in the 2nd round of Sudden Death 
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset

404 
if TotalRoundsPre = cSuddenDTurns + 1 then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

405 
bWaterRising:= true; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

406 
if bWaterRising and (cWaterRise > 0) then 
13777
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset

407 
begin 
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset

408 
bDuringWaterRise:= true; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

409 
AddGear(0, 0, gtWaterUp, 0, _0, _0, 0)^.Tag:= cWaterRise; 
13777
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset

410 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

411 
inc(step) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

412 
end 
13777
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset

413 
else // since we are not raising the water, another wincheck isn't needed 
7667
4346566c5a58
skip second CheckForWin if water wasn't raised after first one
sheepluva
parents:
7666
diff
changeset

414 
inc(step,2); 
13735
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset

415 
stChWin3: 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

416 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

417 
CheckForWin; 
13777
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13761
diff
changeset

418 
bDuringWaterRise:= false; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

419 
inc(step) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

420 
end; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

421 

14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

422 
stChKing: 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

423 
begin 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

424 
if (not isInMultiShoot) and (CheckMinionsDie) then 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

425 
step:= stChDmg 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

426 
else 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

427 
inc(step); 
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

428 
end; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

429 
stSuddenDeath: 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

430 
begin 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

431 
if ((cWaterRise <> 0) or (cHealthDecrease <> 0)) and (not (isInMultiShoot or bBetweenTurns)) then 
14398
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14394
diff
changeset

432 
begin 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

433 
// Start Sudden Death 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

434 
if (TotalRoundsPre = cSuddenDTurns) and (not SuddenDeath) then 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

435 
begin 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

436 
StartSuddenDeath(); 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

437 
delay:= delaySDStart; 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

438 
inc(step); 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

439 
end 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

440 
// Show Sudden Death warning message 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

441 
else if (TotalRoundsPre < cSuddenDTurns) and ((LastSuddenDWarn = 2) or (LastSuddenDWarn <> TotalRoundsPre)) then 
10254  442 
begin 
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset

443 
i:= cSuddenDTurns  TotalRoundsPre; 
10254  444 
s:= ansistring(inttostr(i)); 
14407
7dbc3e5f8129
Also show SD warning 3 and 7 rounds before SD
Wuzzy <Wuzzy2@mail.ru>
parents:
14406
diff
changeset

445 
// X rounds before SD. X = 1, 2, 3, 5, 7, 10, 15, 20, 25, 50, 100, ... 
7dbc3e5f8129
Also show SD warning 3 and 7 rounds before SD
Wuzzy <Wuzzy2@mail.ru>
parents:
14406
diff
changeset

446 
if (i > 0) and ((i <= 3) or (i = 7) or ((i mod 50 = 0) or ((i <= 25) and (i mod 5 = 0)))) then 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

447 
begin 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

448 
if i = 1 then 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

449 
AddCaption(trmsg[sidRoundSD], capcolDefault, capgrpGameState) 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

450 
else 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

451 
AddCaption(FormatA(trmsg[sidRoundsSD], s), capcolDefault, capgrpGameState); 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

452 
delay:= delaySDWarning; 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

453 
inc(step); 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

454 
LastSuddenDWarn:= TotalRoundsPre; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

455 
end 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

456 
else 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

457 
inc(step, 2); 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

458 
end 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

459 
else 
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

460 
inc(step, 2); 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

461 
end 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

462 
else 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

463 
inc(step, 2); 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

464 
end; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

465 
stDelay3: 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

466 
if DoDelay() then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

467 
inc(step); 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

468 
stHealth: 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

469 
begin 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

470 
if bBetweenTurns 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

471 
or isInMultiShoot 
14402
234bb36d3b8c
Fix poison damage not working in first round
Wuzzy <Wuzzy2@mail.ru>
parents:
14400
diff
changeset

472 
or (TotalRoundsReal = 1) then 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

473 
inc(step) 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

474 
else 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

475 
begin 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

476 
bBetweenTurns:= true; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

477 
HealthMachine; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

478 
step:= stChDmg 
10254  479 
end; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

480 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

481 
stSpawn: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

482 
begin 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

483 
if (not isInMultiShoot) then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

484 
begin 
14768
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

485 
tmpGear:= SpawnBoxOfSmth; 
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

486 
if tmpGear <> nil then 
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

487 
ScriptCall('onCaseDrop', tmpGear^.uid) 
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

488 
else 
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14765
diff
changeset

489 
ScriptCall('onCaseDrop'); 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

490 
delay:= delayFinal; 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

491 
inc(step); 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

492 
end 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

493 
else 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

494 
inc(step, 2) 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

495 
end; 
14400
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

496 
stDelay4: 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

497 
if DoDelay() then 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

498 
inc(step); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

499 
stNTurn: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

500 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

501 
if isInMultiShoot then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

502 
isInMultiShoot:= false 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

503 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

504 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

505 
// delayed till after 0.9.12 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

506 
// reset to default zoom 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

507 
//ZoomValue:= ZoomDefault; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

508 
with CurrentHedgehog^ do 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

509 
if (Gear <> nil) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

510 
and ((Gear^.State and gstAttacked) = 0) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

511 
and (MultiShootAttacks > 0) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

512 
OnUsedAmmo(CurrentHedgehog^); 
3697  513 

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

514 
EndTurnCleanup; 
2376  515 

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

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

7181
0791c1f2734c
Welp. We have a bit of a problem here. Reverting the move of nextturn. But this causes a desync in scripting unless we can find a better fix.
nemo
parents:
7174
diff
changeset

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

519 
SwitchHedgehog; 
1298  520 

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

521 
AfterSwitchHedgehog; 
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

522 
bBetweenTurns:= false; 
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset

523 
NewTurnTick:= GameTicks + 1 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

526 
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

527 
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

528 
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

529 
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

530 
if delay2 = 0 then 
5296
0bb518ad2da8
At mikade's request and w/ unc0rr's blessing, dramatically slash inactivity delay from 1.25s down to a tenth of a second.
nemo
parents:
5284
diff
changeset

531 
delay2:= cInactDelay * 50 
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

532 
else 
3957  533 
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

534 
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

535 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

536 
if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) 
13810
c0a7ef988151
Fix teleport cursor briefly reappearing after placing hog in hog placement phase + inf attack mode
Wuzzy <Wuzzy2@mail.ru>
parents:
13777
diff
changeset

537 
and (not CurrentHedgehog^.Unplaced) 
c0a7ef988151
Fix teleport cursor briefly reappearing after placing hog in hog placement phase + inf attack mode
Wuzzy <Wuzzy2@mail.ru>
parents:
13777
diff
changeset

538 
and (not PlacingHogs) then 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset

539 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

540 
if (CurrentHedgehog^.Gear^.State and gstAttacked <> 0) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

541 
and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset

542 
begin 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

543 
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstChooseTarget; 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset

544 
isCursorVisible := true 
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset

545 
end; 
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6380
diff
changeset

546 
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and (not gstAttacked); 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset

547 
end; 
3957  548 
if delay2 = 0 then 
549 
begin 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

550 
if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

551 
and (CurAmmoGear = nil) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

552 
SweepDirty; 
9497  553 
if (CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear^.State and gstHHDriven = 0) or (CurrentHedgehog^.Gear^.Damage = 0) then 
554 
CheckNoDamage; 

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

555 
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

556 
for i:= 0 to Pred(ClansCount) do 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

557 
if ClansArray[i]^.ClanHealth > 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

558 
inc(AliveCount); 
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

559 
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

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

561 
step:= stChDmg; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

562 
if TagTurnTimeLeft = 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

563 
TagTurnTimeLeft:= TurnTimeLeft; 
12322
9aa483762025
Fix sndBoring being played when forceending turn due to victory
Wuzzy <almikes@aol.com>
parents:
12306
diff
changeset

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

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

566 
end 
3957  567 
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

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

569 
end; 
15  570 

4  571 
if TurnTimeLeft > 0 then 
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

572 
if IsClockRunning() then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

573 
begin 
14410
e72ffa27492d
Also play countdown warning sounds with low initial turn time
Wuzzy <Wuzzy2@mail.ru>
parents:
14408
diff
changeset

574 
if (cHedgehogTurnTime > TurnTimeLeft) 
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

575 
and (CurrentHedgehog^.Gear <> nil) 
12181  576 
and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) 
13746
1a26c472f5ef
Don't play timer countdown sounds if in ready phase
Wuzzy <Wuzzy2@mail.ru>
parents:
13735
diff
changeset

577 
and (not isGetAwayTime) and (ReadyTimeLeft = 0) then 
14410
e72ffa27492d
Also play countdown warning sounds with low initial turn time
Wuzzy <Wuzzy2@mail.ru>
parents:
14408
diff
changeset

578 
if (TurnTimeLeft = 5000) and (cHedgehogTurnTime >= 10000) then 
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

579 
PlaySoundV(sndHurry, CurrentTeam^.voicepack) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

580 
else if TurnTimeLeft = 4000 then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

581 
PlaySound(sndCountdown4) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

582 
else if TurnTimeLeft = 3000 then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

583 
PlaySound(sndCountdown3) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

584 
else if TurnTimeLeft = 2000 then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

585 
PlaySound(sndCountdown2) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

586 
else if TurnTimeLeft = 1000 then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

587 
PlaySound(sndCountdown1); 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

588 
if ReadyTimeLeft > 0 then 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

589 
begin 
14656
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14572
diff
changeset

590 
if (ReadyTimeLeft = 2000) and (LastVoice.snd = sndNone) and (not PlacingHogs) and (not CinematicScript) then 
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

591 
AddVoice(sndComeonthen, CurrentTeam^.voicepack); 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

592 
dec(ReadyTimeLeft) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

593 
end 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

594 
else 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

595 
dec(TurnTimeLeft) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

596 
end; 
351  597 

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

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

599 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

600 
if TagTurnTimeLeft = 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

601 
TagTurnTimeLeft:= TurnTimeLeft; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

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

606 

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

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

609 
if (not CurrentTeam^.ExtDriven) then 
5810  610 
begin 
7068  611 
SendIPC(_S'#'); 
5810  612 
AddFileLog('hiTicks increment message sent') 
613 
end; 

2134  614 

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

615 
if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then 
10395
0d20f6fc038a
Better diagnostics in log, even though it shouldn't matter anymore
unc0rr
parents:
10254
diff
changeset

616 
begin 
0d20f6fc038a
Better diagnostics in log, even though it shouldn't matter anymore
unc0rr
parents:
10254
diff
changeset

617 
AddFileLog('hiTicks increment (current team is local or gone)'); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

618 
inc(hiTicks) // we do not recieve a message for this 
10395
0d20f6fc038a
Better diagnostics in log, even though it shouldn't matter anymore
unc0rr
parents:
10254
diff
changeset

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

620 
end; 
7407  621 
AddRandomness(CheckSum); 
9672
8663d299ba62
this should prevent sliding when game clock isn't running. sorry unc0rr, not going to bother encapsulating. maybe later. short on time right now/lazy
nemo
parents:
9651
diff
changeset

622 
TurnClockActive:= prevtime <> TurnTimeLeft; 
14041
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13876
diff
changeset

623 
inc(GameTicks); 
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13876
diff
changeset

624 
if (OuchTauntTimer > 0) then 
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13876
diff
changeset

625 
dec(OuchTauntTimer); 
4  626 
end; 
627 

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

628 
//Purpose, to reset all transient attributes toggled by a utility and clean up various gears and effects at end of turn 
1854  629 
//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

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

631 
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

632 
t: PGear; 
1849  633 
begin 
2221  634 
SpeechText:= ''; // in case it has not been consumed 
2017  635 

1895  636 
if (GameFlags and gfLowGravity) = 0 then 
4623  637 
begin 
5872
454f246fe4c5
uh, that was just so I could look at the flame more closely, wasn't supposed to be checked in
nemo
parents:
5871
diff
changeset

638 
cGravity:= cMaxWindSpeed * 2; 
11887
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset

639 
cGravityf:= 0.00025 * 2; 
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset

640 
cLowGravity:= false 
4623  641 
end; 
1895  642 

2017  643 
if (GameFlags and gfVampiric) = 0 then 
644 
cVampiric:= false; 

645 

1849  646 
cDamageModifier:= _1; 
1895  647 

648 
if (GameFlags and gfLaserSight) = 0 then 

12306
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset

649 
begin 
1895  650 
cLaserSighting:= false; 
12306
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset

651 
cLaserSightingSniper:= false 
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset

652 
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

653 

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

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

655 
if (CurrentTeam <> nil) then 
4099  656 
with CurrentTeam^ do 
657 
for i:= 0 to cMaxHHIndex do 

658 
with Hedgehogs[i] do 

659 
begin 

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

660 

4099  661 
if (Gear <> nil) then 
662 
begin 

663 
if (GameFlags and gfInvulnerable) = 0 then 

9685
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

664 
Gear^.Hedgehog^.Effects[heInvulnerable]:= 0; 
13345
e54d6db06f35
Fix hog being unable to walk after using sniper rifle without firing both shots
Wuzzy <Wuzzy2@mail.ru>
parents:
13319
diff
changeset

665 
if (Gear^.Hedgehog^.Effects[heArtillery] = 2) then 
e54d6db06f35
Fix hog being unable to walk after using sniper rifle without firing both shots
Wuzzy <Wuzzy2@mail.ru>
parents:
13319
diff
changeset

666 
Gear^.Hedgehog^.Effects[heArtillery]:= 0; 
4099  667 
end; 
668 
end; 

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

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

670 
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

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

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

674 
begin 
12938
b075ad6112c9
Show subtle heal effect for healing hogs in health reset mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12928
diff
changeset

675 
i:= t^.Hedgehog^.InitialHealth  t^.Health; 
4372  676 
t^.Health:= t^.Hedgehog^.InitialHealth; 
12938
b075ad6112c9
Show subtle heal effect for healing hogs in health reset mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12928
diff
changeset

677 
if i > 0 then 
b075ad6112c9
Show subtle heal effect for healing hogs in health reset mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12928
diff
changeset

678 
HHHeal(t^.Hedgehog, i, false, $00FF0040); 
4372  679 
RenderHealth(t^.Hedgehog^); 
4101
c5967f360beb
Apply the reset to all hogs on all teams in uGears. Make InitialHealth same type as Health to avoid issues w/ initial health > 255. Update InitialHealth with the king buff.
nemo
parents:
4099
diff
changeset

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

681 
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

682 
end; 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

683 

15220
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

684 
if ((GameFlags and gfResetWeps) <> 0) and (not PlacingHogs) and (not PlacingKings) then 
4099  685 
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

686 

4099  687 
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

688 
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

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

691 

4385  692 
procedure DrawGears; 
693 
var Gear: PGear; 

694 
x, y: LongInt; 

2802  695 
begin 
4385  696 
Gear:= GearsList; 
697 
while Gear <> nil do 

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

698 
begin 
7257
566bdf2f023b
Modified DrawGear so that it doesn't draw the gear when it has message gmRemoveFromList (it was causing havoc when I used HideHog as it could not access the position of the hog)
belphegorr <szabibibi@gmail.com>
parents:
7181
diff
changeset

699 
if (Gear^.State and gstInvisible = 0) and (Gear^.Message and gmRemoveFromList = 0) then 
5348
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset

700 
begin 
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset

701 
x:= hwRound(Gear^.X) + WorldDx; 
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset

702 
y:= hwRound(Gear^.Y) + WorldDy; 
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset

703 
RenderGear(Gear, x, y); 
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset

704 
end; 
4385  705 
Gear:= Gear^.NextGear 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

706 
end; 
10866  707 

708 
if SpeechHogNumber > 0 then 

709 
DrawHHOrder(); 

2802  710 
end; 
711 

13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

712 
// Draw gear timers and other GUI overlays 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

713 
procedure DrawGearsGui; 
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

714 
var Gear: PGear; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

715 
x, y: LongInt; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

716 
begin 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

717 
Gear:= GearsList; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

718 
while Gear <> nil do 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

719 
begin 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

720 
x:= hwRound(Gear^.X) + WorldDx; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

721 
y:= hwRound(Gear^.Y) + WorldDy; 
15200
0879fba70510
Render contour of air mines when in highly opaque water
Wuzzy <Wuzzy2@mail.ru>
parents:
15170
diff
changeset

722 
if Gear^.Kind = gtAirMine then 
0879fba70510
Render contour of air mines when in highly opaque water
Wuzzy <Wuzzy2@mail.ru>
parents:
15170
diff
changeset

723 
RenderAirMineGuiExtras(Gear, x, y); 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

724 
RenderGearHealth(Gear, x, y); 
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

725 
RenderGearTimer(Gear, x, y); 
13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

726 
if Gear^.Kind = gtHedgehog then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

727 
RenderHHGuiExtras(Gear, x, y); 
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

728 
Gear:= Gear^.NextGear 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

729 
end; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

730 
end; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

731 

15436  732 
procedure DrawFinger; 
733 
var Gear: PGear; 

734 
x, y: LongInt; 

735 
begin 

736 
if ((CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)) then 

737 
begin 

738 
Gear:= CurrentHedgehog^.Gear; 

739 
x:= hwRound(Gear^.X) + WorldDx; 

740 
y:= hwRound(Gear^.Y) + WorldDy; 

741 
RenderFinger(Gear, x, y); 

742 
end; 

743 
end; 

744 

4  745 
procedure FreeGearsList; 
746 
var t, tt: PGear; 

747 
begin 

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

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

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

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

751 
begin 
14956  752 
FreeAndNilTexture(tt^.Tex); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

756 
end; 
4  757 
end; 
758 

10  759 
procedure AddMiscGears; 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

760 
var p,i,j,t,h,unplaced: Longword; 
10494  761 
rx, ry: LongInt; 
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

762 
rdx, rdy: hwFloat; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

763 
Gear: PGear; 
4  764 
begin 
498  765 
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

766 

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

767 
i:= 0; 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

768 
unplaced:= 0; 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

769 
while (i < cLandMines) and (unplaced < 4) do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

771 
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

772 
FindPlace(Gear, false, 0, LAND_WIDTH); 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

773 

10510  774 
if Gear = nil then 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

775 
inc(unplaced) 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

776 
else 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

777 
unplaced:= 0; 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

778 

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

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

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

781 

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

782 
i:= 0; 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

783 
unplaced:= 0; 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

784 
while (i < cExplosives) and (unplaced < 4) do 
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset

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

786 
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

787 
FindPlace(Gear, false, 0, LAND_WIDTH); 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

788 

10510  789 
if Gear = nil then 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

790 
inc(unplaced) 
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

791 
else 
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset

792 
begin 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

793 
unplaced:= 0; 
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset

794 
AddCI(Gear) 
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset

795 
end; 
10236
8fa1ccfba752
 Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset

796 

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

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

798 
end; 
1895  799 

10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

800 
i:= 0; 
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

801 
j:= 0; 
15170
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15169
diff
changeset

802 
p:= 0; // 0: good position, 1: bad position. 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

803 
unplaced:= 0; 
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

804 
if cAirMines > 0 then 
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

805 
Gear:= AddGear(0, 0, gtAirMine, 0, _0, _0, 0); 
13570  806 
while (i < cAirMines) and (j < 1000*cAirMines) do 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

807 
begin 
13570  808 
p:= 0; 
14564
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14472
diff
changeset

809 
if (hasBorder) or (WorldEdge = weBounce) then 
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14472
diff
changeset

810 
rx:= leftX+GetRandom(rightXleftX16)+8 
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14472
diff
changeset

811 
else 
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14472
diff
changeset

812 
rx:= leftX+GetRandom(rightXleftX+400)200; 
13570  813 
if hasBorder then 
814 
ry:= topY+GetRandom(LAND_HEIGHTtopY16)+8 

815 
else 

14564
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14472
diff
changeset

816 
ry:= topY+GetRandom(LAND_HEIGHTtopY+400)200; 
13570  817 
Gear^.X:= int2hwFloat(CalcWorldWrap(rx,Gear^.Radius)); 
818 
Gear^.Y:= int2hwFloat(ry); 

819 
if CheckLandValue(rx, ry, $FFFF) and 

820 
(TestCollisionYwithGear(Gear,1) = 0) and 

821 
(TestCollisionXwithGear(Gear, 1) = 0) and 

822 
(TestCollisionXwithGear(Gear,1) = 0) and 

823 
(TestCollisionYwithGear(Gear, 1) = 0) then 

10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

824 
begin 
13570  825 
t:= 0; 
826 
while (t < TeamsCount) and (p = 0) do 

827 
begin 

828 
h:= 0; 

829 
with TeamsArray[t]^ do 

13571  830 
while (h <= cMaxHHIndex) and (p = 0) do 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

831 
begin 
13570  832 
if (Hedgehogs[h].Gear <> nil) then 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

833 
begin 
13570  834 
rdx:=Gear^.XHedgehogs[h].Gear^.X; 
835 
rdy:=Gear^.YHedgehogs[h].Gear^.Y; 

836 
if (Gear^.Angle < $FFFFFFFF) and 

837 
((rdx.Round+rdy.Round < Gear^.Angle) and 

838 
(hwRound(hwSqr(rdx) + hwSqr(rdy)) < sqr(Gear^.Angle))) then 

839 
begin 

840 
p:= 1 

841 
end 

842 
end; 

843 
inc(h) 

10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

844 
end; 
13570  845 
inc(t) 
846 
end; 

847 
if p = 0 then 

848 
begin 

849 
inc(i); 

850 
AddFileLog('Placed Air Mine @ (' + inttostr(rx) + ',' + inttostr(ry) + ')'); 

851 
if i < cAirMines then 

852 
Gear:= AddGear(0, 0, gtAirMine, 0, _0, _0, 0) 

853 
end 

15170
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15169
diff
changeset

854 
end 
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15169
diff
changeset

855 
else 
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15169
diff
changeset

856 
p:= 1; 
13570  857 
inc(j) 
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

858 
end; 
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

859 
if p <> 0 then DeleteGear(Gear); 
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset

860 

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

863 
cGravity:= cMaxWindSpeed; 
11887
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset

864 
cGravityf:= 0.00025; 
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset

865 
cLowGravity:= true 
4623  866 
end; 
1895  867 

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

870 

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

9685
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

873 
for p:= 0 to Pred(ClansCount) do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

874 
with ClansArray[p]^ do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

875 
for j:= 0 to Pred(TeamsNumber) do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

876 
with Teams[j]^ do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

877 
for i:= 0 to cMaxHHIndex do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

878 
with Hedgehogs[i] do 
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset

879 
Effects[heInvulnerable]:= 1; 
1895  880 

881 
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

882 
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

883 

8030
165aeaaaf445
Call fallers less often. Should hopefully still be about as effective at the intended purpose. Should help loads quite a bit.
nemo
parents:
8011
diff
changeset

884 
for i:= (LAND_WIDTH*LAND_HEIGHT) div 524288+2 downto 0 do 
7575
f415b3e0f3b9
Burn a random number in the override. Make sure cirbuf is reset.
nemo
parents:
7519
diff
changeset

885 
begin 
f415b3e0f3b9
Burn a random number in the override. Make sure cirbuf is reset.
nemo
parents:
7519
diff
changeset

886 
rx:= GetRandom(rightXleftX)+leftX; 
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

887 
ry:= GetRandom(LAND_HEIGHTtopY)+topY; 
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

888 
rdx:= _90(GetRandomf*_360); 
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

889 
rdy:= _90(GetRandomf*_360); 
13214
9c81e34f1933
gtGenericFaller: Use Tag=1 to allow gtGenericFaller to be displaced randomly. Otherwise it is left alone
Wuzzy <Wuzzy2@mail.ru>
parents:
13171
diff
changeset

890 
Gear:= AddGear(rx, ry, gtGenericFaller, gstInvisible, rdx, rdy, $FFFFFFFF); 
14572
34e810295d08
Remove a bunch of dead outcommented code
Wuzzy <Wuzzy2@mail.ru>
parents:
14564
diff
changeset

891 
// This allows this generic faller to be displaced randomly by events 
13214
9c81e34f1933
gtGenericFaller: Use Tag=1 to allow gtGenericFaller to be displaced randomly. Otherwise it is left alone
Wuzzy <Wuzzy2@mail.ru>
parents:
13171
diff
changeset

892 
Gear^.Tag:= 1; 
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

893 
end; 
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset

894 

7477
26706bf32ecf
First pass at variable land size. For playing a small map (forced on rqLowRes), this should save 42MiB of RAM.
nemo
parents:
7426
diff
changeset

895 
snowRight:= max(LAND_WIDTH,4096)+512; 
26706bf32ecf
First pass at variable land size. For playing a small map (forced on rqLowRes), this should save 42MiB of RAM.
nemo
parents:
7426
diff
changeset

896 
snowLeft:= (snowRightLAND_WIDTH); 
26706bf32ecf
First pass at variable land size. For playing a small map (forced on rqLowRes), this should save 42MiB of RAM.
nemo
parents:
7426
diff
changeset

897 

9768
08799c901a42
Add rubber utility. Graphics are still incomplete. Also flag snow/ice in theme config.
nemo
parents:
9764
diff
changeset

898 
if (not hasBorder) and cSnow then 
7721  899 
for i:= vobCount * Longword(max(LAND_WIDTH,4096)) div 2048 downto 1 do 
9951
b776cd642d0b
pick random x/y prior to addgear (as generic faller does) to avoid random numbers picked out of order
nemo
parents:
9818
diff
changeset

900 
begin 
b776cd642d0b
pick random x/y prior to addgear (as generic faller does) to avoid random numbers picked out of order
nemo
parents:
9818
diff
changeset

901 
rx:=GetRandom(snowRight  snowLeft); 
b776cd642d0b
pick random x/y prior to addgear (as generic faller does) to avoid random numbers picked out of order
nemo
parents:
9818
diff
changeset

902 
ry:=GetRandom(750); 
10494  903 
AddGear(rx + snowLeft, LongInt(LAND_HEIGHT) + ry  1300, gtFlake, 0, _0, _0, 0) 
9951
b776cd642d0b
pick random x/y prior to addgear (as generic faller does) to avoid random numbers picked out of order
nemo
parents:
9818
diff
changeset

904 
end 
4  905 
end; 
906 

11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

907 
// sort clans horizontally (bubblesort, because why not) 
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

908 
procedure SortHHsByClan(); 
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

909 
var n, newn, i, j, k, p: LongInt; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

910 
ar, clar: array[0..Pred(cMaxHHs)] of PHedgehog; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

911 
Count, clCount: Longword; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

912 
tmpX, tmpY: hwFloat; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

913 
hh1, hh2: PHedgehog; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

914 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

915 
Count:= 0; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

916 
// add hedgehogs to the array in clan order 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

917 
for p:= 0 to (ClansCount  1) do 
11734  918 
with SpawnClansArray[p]^ do 
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

919 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

920 
// count hogs in this clan 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

921 
clCount:= 0; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

922 
for j:= 0 to Pred(TeamsNumber) do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

923 
with Teams[j]^ do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

924 
for i:= 0 to cMaxHHIndex do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

925 
if Hedgehogs[i].Gear <> nil then 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

926 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

927 
clar[clCount]:= @Hedgehogs[i]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

928 
inc(clCount); 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

929 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

930 

08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

931 
// shuffle all hogs of this clan 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

932 
for i:= 0 to clCount  1 do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

933 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

934 
j:= GetRandom(clCount); 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

935 
k:= GetRandom(clCount); 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

936 
if clar[j] <> clar[k] then 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

937 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

938 
hh1:= clar[j]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

939 
clar[j]:= clar[k]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

940 
clar[k]:= hh1; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

941 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

942 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

943 

08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

944 
// add clan's hog to sorting array 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

945 
for i:= 0 to clCount  1 do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

946 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

947 
ar[Count]:= clar[i]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

948 
inc(Count); 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

949 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

950 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

951 

11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

952 

607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

953 
// bubblesort hog array 
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

954 
n:= Count  1; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

955 

08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

956 
repeat 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

957 
newn:= 0; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

958 
for i:= 1 to n do 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

959 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

960 
hh1:= ar[i1]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

961 
hh2:= ar[i]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

962 
if hwRound(hh1^.Gear^.X) > hwRound(hh2^.Gear^.X) then 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

963 
begin 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

964 
tmpX:= hh1^.Gear^.X; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

965 
tmpY:= hh1^.Gear^.Y; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

966 
hh1^.Gear^.X:= hh2^.Gear^.X; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

967 
hh1^.Gear^.Y:= hh2^.Gear^.Y; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

968 
hh2^.Gear^.X:= tmpX; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

969 
hh2^.Gear^.Y:= tmpY; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

970 
newn:= i; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

971 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

972 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

973 
n:= newn; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

974 
until n = 0; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

975 

08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

976 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

977 

4  978 
procedure AssignHHCoords; 
15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

979 
var i, t, p, j, x, y: LongInt; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

980 
ar: array[0..Pred(cMaxHHs)] of PHedgehog; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

981 
Count: Longword; 
11896
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

982 
divide, sectionDivide: boolean; 
4  983 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

984 
if (GameFlags and gfPlaceHog) <> 0 then 
15220
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

985 
PlacingHogs:= true 
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

986 
else if (GameFlags and gfKing) <> 0 then 
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

987 
PlacingKings:= true; 
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

988 

607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

989 
divide:= ((GameFlags and gfDivideTeams) <> 0); 
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

990 

11896
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

991 
(* sectionDivide will determine the mode of hog distribution 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

992 
* 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

993 
* On generated maps or maps not designed with divided mode in mind, 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

994 
* using spawning sections can be problematic, because some sections may 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

995 
* contain too little land surface for sensible spawning. 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

996 
* 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

997 
* if sectionDivide is true, the map will be sliced into equalwidth sections 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

998 
* and one team spawned in each 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

999 
* if false, the hogs will be spawned normally and sorted by teams after 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1000 
* 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1001 
*) 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1002 

cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1003 
// TODO: there might be a smarter way to decide if dividing clans into equalwidth map sections makes sense 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1004 
// e.g. by checking if there is enough spawn area in each section 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1005 
sectionDivide:= divide and ((cMapGen = mgForts) or (ClansCount = 2)); 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1006 

cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1007 
// divide the map into equalwidth sections and put each clan in one of them 
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

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

1009 
begin 
11705  1010 
t:= leftX; 
11700
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1011 
for p:= 0 to (ClansCount  1) do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1012 
begin 
11734  1013 
with SpawnClansArray[p]^ do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1014 
for j:= 0 to Pred(TeamsNumber) do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1015 
with Teams[j]^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1016 
for i:= 0 to cMaxHHIndex do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1017 
with Hedgehogs[i] do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1019 
begin 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1020 
if PlacingHogs then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1021 
Unplaced:= true 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1022 
else 
11705  1023 
FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; 
15220
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

1024 
if PlacingKings and King then 
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

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

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

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

1028 
Gear^.Pos:= GetRandom(49); 
11700
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1029 
// unless the world is wrapping, make outter teams face to map center 
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1030 
if (WorldEdge <> weWrap) and ((p = 0) or (p = ClansCount  1)) then 
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1031 
Gear^.dX.isNegative:= (p <> 0) 
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1032 
else 
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset

1033 
Gear^.dX.isNegative:= (GetRandom(2) = 1); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1035 
end; 
11705  1036 
inc(t, playWidth div ClansCount); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1037 
end 
11477
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1038 
end 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1039 
else // mix hedgehogs 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

1042 
for p:= 0 to Pred(TeamsCount) do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1043 
with TeamsArray[p]^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1045 
for i:= 0 to cMaxHHIndex do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1046 
with Hedgehogs[i] do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1047 
if (Gear <> nil) and (Gear^.X.QWordValue = 0) then 
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 
ar[Count]:= @Hedgehogs[i]; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

1053 
while (Count > 0) do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1055 
i:= GetRandom(Count); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1056 
if PlacingHogs then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1057 
ar[i]^.Unplaced:= true 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1058 
else 
11805
42c11b73f68e
<unC0Rr> might be somewhere width used instead of rightx
sheepluva
parents:
11751
diff
changeset

1059 
FindPlace(ar[i]^.Gear, false, leftX, rightX, true); 
15220
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

1060 
if PlacingKings and ar[i]^.King then 
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15200
diff
changeset

1061 
ar[i]^.UnplacedKing:= true; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1062 
if ar[i]^.Gear <> nil then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1063 
begin 
11705  1064 
ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > leftX + playWidth div 2; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1066 
ar[i]:= ar[Count  1]; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1068 
end 
11477
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1069 
end; 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1070 
for p:= 0 to Pred(TeamsCount) do 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1071 
with TeamsArray[p]^ do 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1072 
for i:= 0 to cMaxHHIndex do 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1073 
with Hedgehogs[i] do 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1074 
if (Gear <> nil) and (Gear^.State and gsttmpFlag <> 0) then 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1075 
begin 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1076 
DrawExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50); 
11478
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1077 
AddFileLog('Carved a hole for hog at coordinates (' + inttostr(hwRound(Gear^.X)) + ',' + inttostr(hwRound(Gear^.Y)) + ')') 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1078 
end; 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1079 
// place flowers after in case holes overlap (we shrink search distance if we are failing to place) 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1080 
for p:= 0 to Pred(TeamsCount) do 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1081 
with TeamsArray[p]^ do 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1082 
for i:= 0 to cMaxHHIndex do 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1083 
with Hedgehogs[i] do 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1084 
if (Gear <> nil) and (Gear^.State and gsttmpFlag <> 0) then 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

1085 
begin 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1086 
// Get flower position 
15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1087 
x:= hwRound(Gear^.X)  SpritesData[sprTargetBee].Width div 2; 
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1088 
y:= hwRound(Gear^.Y)  SpritesData[sprTargetBee].Height div 2; 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1089 
// Calculate offset from map boundaries and border 
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1090 
if hasBorder then 
15169
f532203c5ceb
Fix mapgen flowers being slightly offset on X axis
Wuzzy <Wuzzy2@mail.ru>
parents:
15159
diff
changeset

1091 
x:= max(min(x, RightX  SpritesData[sprTargetBee].Width  cBorderWidth), LeftX + cBorderWidth) 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1092 
else 
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1093 
x:= max(min(x, RightX  SpritesData[sprTargetBee].Width), LeftX); 
15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1094 
y:= max(y, TopY); 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1095 

fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1096 
// Place flower 
15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1097 
ForcePlaceOnLand(x, y, sprTargetBee, 0, lfBasic, $FFFFFFFF, false, false, false); 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1098 

fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1099 
// Place hog 
15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1100 
Gear^.Y:= int2hwFloat(hwRound(Gear^.Y)  (SpritesData[sprTargetBee].Height div 2)  Gear^.Radius); 
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset

1101 
AddCI(Gear); 
11503  1102 
Gear^.State:= Gear^.State and (not gsttmpFlag); 
15159
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15107
diff
changeset

1103 

15107
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15065
diff
changeset

1104 
AddFileLog('Placed flower for hog at coordinates (' + inttostr(x) + ',' + inttostr(y) + ')') 
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

1105 
end; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

1106 

08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

1107 

11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

1108 
// divided teams: sort the hedgehogs from left to right by clan and shuffle clan members 
11896
cb36d6df3814
reenable dividedmode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset

1109 
if divide and (not sectionDivide) then 
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

1110 
SortHHsByClan(); 
4  1111 
end; 
1112 

14765
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1113 
// Set random pos for all hogs so their animations have different starting points 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1114 
procedure RandomizeHHAnim; 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1115 
var i, j, p: LongInt; 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1116 
begin 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1117 
for p:= 0 to (ClansCount  1) do 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1118 
with SpawnClansArray[p]^ do 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1119 
for j:= 0 to Pred(TeamsNumber) do 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1120 
with Teams[j]^ do 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1121 
for i:= 0 to cMaxHHIndex do 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1122 
if (Hedgehogs[i].Gear <> nil) then 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

1123 
Hedgehogs[i].Gear^.Pos:= GetRandom(19); 
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14759
diff
changeset

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

1125 

1433  1126 
{procedure AmmoFlameWork(Ammo: PGear); 
79  1127 
var t: PGear; 
1128 
begin 

1129 
t:= GearsList; 

1130 
while t <> nil do 

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

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

1132 
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

1133 
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

1134 
begin 
2017  1135 
ApplyDamage(t, 5); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1136 
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

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

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

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

1140 
FollowGear:= t 
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 
t:= t^.NextGear 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1143 
end; 
1433  1144 
end;} 
79  1145 

16  1146 

7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset

1147 
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content, cnt: Longword): PGear; 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1148 
var gear: PGear; 
3730  1149 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1150 
gear := AddGear(x, y, gtCase, 0, _0, _0, 0); 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1151 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1152 
FollowGear:= gear; 
3734  1153 
cCaseFactor := 0; 
1154 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1155 
if (crate <> HealthCrate) and (content > ord(High(TAmmoType))) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1156 
content := ord(High(TAmmoType)); 
3734  1157 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1158 
gear^.Power:= cnt; 
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset

1159 

3734  1160 
case crate of 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1161 
HealthCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1162 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1163 
gear^.Pos := posCaseHealth; 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

1164 
gear^.RenderHealth:= true; 
10506  1165 
// health crate is smaller than the other crates 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1166 
gear^.Radius := cCaseHealthRadius; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1167 
gear^.Health := content; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1168 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1169 
AddCaption(GetEventString(eidNewHealthPack), capcolDefault, capgrpAmmoInfo); 
3734  1170 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1171 
AmmoCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1172 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1173 
gear^.Pos := posCaseAmmo; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1174 
gear^.AmmoType := TAmmoType(content); 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1175 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1176 
AddCaption(GetEventString(eidNewAmmoPack), capcolDefault, capgrpAmmoInfo); 
3734  1177 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1178 
UtilityCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1179 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1180 
gear^.Pos := posCaseUtility; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1181 
gear^.AmmoType := TAmmoType(content); 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1182 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1183 
AddCaption(GetEventString(eidNewUtilityPack), capColDefault, capgrpAmmoInfo); 
3734  1184 
end; 
1185 
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

1186 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1187 
if ( (x = 0) and (y = 0) ) then 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1188 
FindPlace(gear, true, 0, LAND_WIDTH); 
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

1189 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1190 
SpawnCustomCrateAt := gear; 
3730  1191 
end; 
1192 

5343  1193 
function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean): PGear; 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1194 
var gear: PGear; 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1195 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1196 
gear := AddGear(x, y, gtCase, 0, _0, _0, 0); 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1197 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1198 
FollowGear:= gear; 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1199 
cCaseFactor := 0; 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1200 
gear^.Pos := posCaseDummy; 
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset

1201 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1202 
if explode then 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1203 
gear^.Pos := gear^.Pos + posCaseExplode; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1204 
if poison then 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1205 
gear^.Pos := gear^.Pos + posCasePoison; 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1206 

5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1207 
case crate of 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1208 
HealthCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1209 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1210 
gear^.Pos := gear^.Pos + posCaseHealth; 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

1211 
gear^.RenderHealth:= true; 
14759  1212 
gear^.Karma:= 2; 
10506  1213 
// health crate is smaller than the other crates 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1214 
gear^.Radius := cCaseHealthRadius; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1215 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1216 
AddCaption(GetEventString(eidNewHealthPack), capcolDefault, capgrpAmmoInfo); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1217 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1218 
AmmoCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1219 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1220 
gear^.Pos := gear^.Pos + posCaseAmmo; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1221 
if(FinishedTurnstotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1222 
AddCaption(GetEventString(eidNewAmmoPack), capcolDefault, capgrpAmmoInfo); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1223 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1224 
UtilityCrate: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1225 
begin 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1226 
gear^.Pos := gear^.Pos + posCaseUtility; 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1227 
if(FinishedTurnsTotal > 1) then 
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1228 
AddCaption(GetEventString(eidNewUtilityPack), capcolDefault, capgrpAmmoInfo); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1229 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1230 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1231 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1232 
if ( (x = 0) and (y = 0) ) then 
14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1233 
FindPlace(gear, true, 0, LAND_WIDTH); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1234 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1235 
SpawnFakeCrateAt := gear; 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1236 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset

1237 

12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1238 
procedure StartSuddenDeath(); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1239 
begin 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1240 
if SuddenDeath then 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1241 
exit; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1242 

6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1243 
SuddenDeath:= true; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1244 
SuddenDeathActive:= true; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1245 

21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1246 
// Special effects (only w/ health decrease) 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1247 
if cHealthDecrease <> 0 then 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1248 
begin 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1249 
SuddenDeathDmg:= true; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1250 
// White screen flash 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1251 
ScreenFade:= sfFromWhite; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1252 
ScreenFadeValue:= sfMax; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1253 
ScreenFadeSpeed:= 1; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1254 

12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1255 
// Clouds, flakes, sky tint 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1256 
ChangeToSDClouds; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1257 
ChangeToSDFlakes; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1258 
SetSkyColor(SDSkyColor.r * (SDTint.r/255) / 255, SDSkyColor.g * (SDTint.g/255) / 255, SDSkyColor.b * (SDTint.b/255) / 255); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1259 
end; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1260 

21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1261 
// Disable tardis 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1262 
Ammoz[amTardis].SkipTurns:= 9999; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1263 
Ammoz[amTardis].Probability:= 0; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1264 

13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

1265 
AddCaption(trmsg[sidSuddenDeath], capcolDefault, capgrpGameState); 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1266 
ScriptCall('onSuddenDeath'); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1267 
playSound(sndSuddenDeath); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1268 
StopMusic; 
