author  Wuzzy <Wuzzy2@mail.ru> 
Sun, 07 Apr 2019 19:26:16 +0200  
changeset 14750  ab7bf5036314 
parent 14749  533ac9774279 
child 14752  56098968df90 
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; 
4  46 
procedure FreeGearsList; 
10  47 
procedure AddMiscGears; 
4  48 
procedure AssignHHCoords; 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

49 
procedure StartSuddenDeath; 
3405  50 
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

51 
function IsClockRunning() : boolean; 
4  52 

53 
implementation 

9651  54 
uses uStore, uSound, uTeams, uRandom, uIO, uLandGraphics, 
55 
{$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

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

59 
, uVisualGearsList, uGearsHandlersMess, uAI; 
789  60 

7028  61 
var skipFlag: boolean; 
3697  62 

6982  63 
var delay: LongWord; 
64 
delay2: LongWord; 

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

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

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

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

68 
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

69 
NewTurnTick: LongWord; 
6982  70 

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

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

72 
delaySDWarning = 1000; 
14405  73 
delayDamageTagFull = 1500; 
74 
delayDamageTagShort = 500; 

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

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

77 

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

1849  80 
dmg: LongInt; 
4  81 
begin 
351  82 
CheckNoDamage:= true; 
4  83 
Gear:= GearsList; 
84 
while Gear <> nil do 

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

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

86 
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

87 
and (Gear^.dY.QWordValue < _0_000004.QWordValue))) then 
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 (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

90 
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

91 
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

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

93 
CheckNoDamage:= false; 
4824  94 

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

95 
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

96 
if (Gear^.Health < dmg) then 
3453  97 
begin 
98 
Gear^.Active:= true; 

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

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

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

102 
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

103 
(* 
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

104 
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

105 
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

106 
and (not Gear^.Hedgehog^.King) and (Gear^.Hedgehog^.Effects[hePoisoned] = 0) and (not SuddenDeathDmg) then 
2017  107 
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

108 
*) 
2017  109 

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

110 
spawnHealthTagForHH(Gear, dmg); 
867  111 

4365  112 
RenderHealth(Gear^.Hedgehog^); 
113 
RecountTeamHealth(Gear^.Hedgehog^.Team); 

1505  114 

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

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

116 
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

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

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

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

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

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

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

123 

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

124 
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

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

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

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

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

129 
end; 
4  130 
end; 
131 

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

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

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

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

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

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

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

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

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

140 

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

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

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

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

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

145 
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

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

147 

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

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

149 
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

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

151 
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

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

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

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

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

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

157 
end; 
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 

1054  160 
procedure HealthMachine; 
161 
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

162 
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

163 
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

164 
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

165 
tmp: LongWord; 
1054  166 
begin 
3682  167 
Gear:= GearsList; 
1054  168 

3682  169 
while Gear <> nil do 
170 
begin 

171 
if Gear^.Kind = gtHedgehog then 

172 
begin 

173 
tmp:= 0; 

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

174 
// Deal poison damage (when not frozen) 
11867  175 
if (Gear^.Hedgehog^.Effects[hePoisoned] <> 0) and (Gear^.Hedgehog^.Effects[heFrozen] = 0) then 
4111  176 
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

177 
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

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

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

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

182 
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

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

184 
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

185 
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

186 
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

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

188 
// Reduce king health when he is alone in team 
4365  189 
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

190 
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

191 
flag:= false; 
4365  192 
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

193 
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

194 
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

195 
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

196 
flag:= true; 
4111  197 
if not flag then 
198 
begin 

199 
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

200 
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

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

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

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

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

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

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

208 
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

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

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

211 
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

212 
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

213 
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

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

215 
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

216 
end 
3682  217 
end; 
1054  218 

3682  219 
Gear:= Gear^.NextGear 
220 
end; 

1054  221 
end; 
222 

4  223 
procedure ProcessGears; 
7395  224 
var t: PGear; 
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset

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

226 
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

227 
prevtime: LongWord; 
11469  228 
stirFallers: boolean; 
4  229 
begin 
11469  230 
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

231 
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

232 
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

233 
if GameTicks mod 20 = 0 then ScriptCall('onGameTick20'); 
8351  234 
if GameTicks = NewTurnTick then 
235 
begin 

236 
ScriptCall('onNewTurn'); 

9651  237 
{$IFDEF USE_TOUCH_INTERFACE} 
8351  238 
uTouch.NewTurnBeginning(); 
239 
{$ENDIF} 

240 
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

241 

868  242 
PrvInactive:= AllInactive; 
4  243 
AllInactive:= true; 
1495  244 

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

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

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

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

251 
end; 
2940  252 

253 
if StepSoundTimer > 0 then 

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

254 
dec(StepSoundTimer, 1); 
2940  255 

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

258 
begin 
7395  259 
curHandledGear:= t; 
260 
t:= curHandledGear^.NextGear; 

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

3123  263 

7517  264 
if curHandledGear^.Message and gmDelete <> 0 then 
7519  265 
DeleteGear(curHandledGear) 
266 
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

267 
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

268 
if curHandledGear^.Message and gmRemoveFromList <> 0 then 
7519  269 
begin 
270 
RemoveGearFromList(curHandledGear); 

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

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

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

274 
end; 

275 
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

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

277 
if curHandledGear^.RenderTimer then 
7519  278 
begin 
14750
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

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

280 
begin 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

281 
if curHandledGear^.Tex = nil then 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

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

283 
i:= curHandledGear^.Timer; 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

284 
if (i > 0) and (i < 1000) then 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

285 
i:= 1 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

286 
else 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

287 
i:= curHandledGear^.Timer div 1000; 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

288 
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(i)), $ff808080, fntSmall); 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

289 
end; 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

290 
end 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

291 
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

292 
begin 
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14749
diff
changeset

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

294 
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

295 
end; 
7519  296 
end; 
297 
curHandledGear^.doStep(curHandledGear); 

298 
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

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

300 
end; 
11469  301 
if stirFallers then 
302 
begin 

303 
t := GearsList; 

304 
while t <> nil do 

305 
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

306 
if (t^.Kind = gtGenericFaller) and (t^.Tag = 1) then 
11469  307 
begin 
308 
t^.Active:= true; 

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

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

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

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

313 
end; 

314 
t := t^.NextGear 

315 
end 

316 
end; 

317 

7395  318 
curHandledGear:= nil; 
89  319 

4  320 
if AllInactive then 
1343  321 
case step of 
12928  322 
stInit: 
323 
begin 

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

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

325 
ScriptCall('onEndTurn'); 
12928  326 
inc(step) 
327 
end; 

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

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

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

330 
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

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

332 
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

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

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

335 
begin 
14405  336 
if (not bBetweenTurns) and (not isInMultiShoot) then 
337 
delay:= delayDamageTagShort 

338 
else 

339 
delay:= delayDamageTagFull; 

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

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

341 
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

342 

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

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

344 
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

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

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

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

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

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

350 
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

351 

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

352 
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

353 
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

354 
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

355 
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

356 
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

357 
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

358 

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

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

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

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

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

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

364 

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

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

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

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

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

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

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

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

372 
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

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

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

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

376 
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

377 

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

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

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

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

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

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

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

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

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

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

387 
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

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

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

390 
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

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

392 
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

393 
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

394 
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

395 
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

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

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

398 
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

399 
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

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

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

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

403 
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

404 
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

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

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

407 

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

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

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

410 
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

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

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

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

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

415 
stSuddenDeath: 
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 
14406
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14405
diff
changeset

417 
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

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

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

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

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

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

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

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

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

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

427 
else if (TotalRoundsPre < cSuddenDTurns) and ((LastSuddenDWarn = 2) or (LastSuddenDWarn <> TotalRoundsPre)) then 
10254  428 
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

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

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

432 
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

472 
delay:= delayFinal; 
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 
end 
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14398
diff
changeset

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

476 
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

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

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

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

480 
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

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

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

483 
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

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

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

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

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

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

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

490 
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

491 
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

492 
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

493 
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

494 
OnUsedAmmo(CurrentHedgehog^); 
3697  495 

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

496 
EndTurnCleanup; 
2376  497 

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

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

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

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

501 
SwitchHedgehog; 
1298  502 

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

503 
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

504 
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

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

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

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

508 
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

509 
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

510 
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

511 
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

512 
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

513 
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

514 
else 
3957  515 
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

516 
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

517 

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

518 
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

519 
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

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

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

522 
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

523 
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

524 
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

525 
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

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

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

528 
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

529 
end; 
3957  530 
if delay2 = 0 then 
531 
begin 

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

532 
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

533 
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

534 
SweepDirty; 
9497  535 
if (CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear^.State and gstHHDriven = 0) or (CurrentHedgehog^.Gear^.Damage = 0) then 
536 
CheckNoDamage; 

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

537 
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

538 
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

539 
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

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

541 
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

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

543 
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

544 
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

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

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

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

548 
end 
3957  549 
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

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

551 
end; 
15  552 

4  553 
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

554 
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

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

556 
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

557 
and (CurrentHedgehog^.Gear <> nil) 
12181  558 
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

559 
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

560 
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

561 
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

562 
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

563 
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

564 
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

565 
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

566 
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

567 
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

568 
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

569 
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

570 
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

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

572 
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

573 
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

574 
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

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

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

577 
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

578 
end; 
351  579 

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

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

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

582 
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

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

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

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

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

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

588 

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

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

591 
if (not CurrentTeam^.ExtDriven) then 
5810  592 
begin 
7068  593 
SendIPC(_S'#'); 
5810  594 
AddFileLog('hiTicks increment message sent') 
595 
end; 

2134  596 

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

597 
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

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

599 
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

600 
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

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

602 
end; 
7407  603 
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

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

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

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

607 
dec(OuchTauntTimer); 
4  608 
end; 
609 

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

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

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

613 
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

614 
t: PGear; 
1849  615 
begin 
2221  616 
SpeechText:= ''; // in case it has not been consumed 
2017  617 

1895  618 
if (GameFlags and gfLowGravity) = 0 then 
4623  619 
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

620 
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

621 
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

622 
cLowGravity:= false 
4623  623 
end; 
1895  624 

2017  625 
if (GameFlags and gfVampiric) = 0 then 
626 
cVampiric:= false; 

627 

1849  628 
cDamageModifier:= _1; 
1895  629 

630 
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

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

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

634 
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

635 

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

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

637 
if (CurrentTeam <> nil) then 
4099  638 
with CurrentTeam^ do 
639 
for i:= 0 to cMaxHHIndex do 

640 
with Hedgehogs[i] do 

641 
begin 

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

642 

4099  643 
if (Gear <> nil) then 
644 
begin 

645 
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

646 
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

647 
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

648 
Gear^.Hedgehog^.Effects[heArtillery]:= 0; 
4099  649 
end; 
650 
end; 

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

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

652 
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

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

654 
t^.PortalCounter:= 0; 
4372  655 
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

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

657 
i:= t^.Hedgehog^.InitialHealth  t^.Health; 
4372  658 
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

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

660 
HHHeal(t^.Hedgehog, i, false, $00FF0040); 
4372  661 
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

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

663 
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

664 
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

665 

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

666 
if ((GameFlags and gfResetWeps) <> 0) and (not PlacingHogs) then 
4099  667 
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

668 

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

670 
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

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

673 

4385  674 
procedure DrawGears; 
675 
var Gear: PGear; 

676 
x, y: LongInt; 

2802  677 
begin 
4385  678 
Gear:= GearsList; 
679 
while Gear <> nil do 

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

680 
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

681 
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

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

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

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

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

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

688 
end; 
10866  689 

690 
if SpeechHogNumber > 0 then 

691 
DrawHHOrder(); 

2802  692 
end; 
693 

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

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

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

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

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

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

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

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

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

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

703 
y:= hwRound(Gear^.Y) + WorldDy; 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

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

705 
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

706 
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

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

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

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

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

711 

4  712 
procedure FreeGearsList; 
713 
var t, tt: PGear; 

714 
begin 

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

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

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

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

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

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

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

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

722 
end; 
4  723 
end; 
724 

10  725 
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

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

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

729 
Gear: PGear; 
4  730 
begin 
498  731 
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

732 

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

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

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

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

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

737 
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

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

739 

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

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

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

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

744 

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

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

746 
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

747 

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

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

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

750 
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

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

752 
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

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

754 

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

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

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

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

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

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

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

762 

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

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

764 
end; 
1895  765 

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

766 
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

767 
j:= 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

768 
p:= 0; // 0 searching, 1 bad position, 2 added. 
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

769 
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

770 
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

771 
Gear:= AddGear(0, 0, gtAirMine, 0, _0, _0, 0); 
13570  772 
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

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

775 
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

776 
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

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

778 
rx:= leftX+GetRandom(rightXleftX+400)200; 
13570  779 
if hasBorder then 
780 
ry:= topY+GetRandom(LAND_HEIGHTtopY16)+8 

781 
else 

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

782 
ry:= topY+GetRandom(LAND_HEIGHTtopY+400)200; 
13570  783 
Gear^.X:= int2hwFloat(CalcWorldWrap(rx,Gear^.Radius)); 
784 
Gear^.Y:= int2hwFloat(ry); 

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

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

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

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

789 
(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

790 
begin 
13570  791 
t:= 0; 
792 
while (t < TeamsCount) and (p = 0) do 

793 
begin 

794 
h:= 0; 

795 
with TeamsArray[t]^ do 

13571  796 
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

797 
begin 
13570  798 
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

799 
begin 
13570  800 
rdx:=Gear^.XHedgehogs[h].Gear^.X; 
801 
rdy:=Gear^.YHedgehogs[h].Gear^.Y; 

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

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

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

805 
begin 

806 
p:= 1 

807 
end 

808 
end; 

809 
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

810 
end; 
13570  811 
inc(t) 
812 
end; 

813 
if p = 0 then 

814 
begin 

815 
inc(i); 

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

817 
if i < cAirMines then 

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

819 
end 

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

820 
end; 
13570  821 
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

822 
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

823 
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

824 

1895  825 
if (GameFlags and gfLowGravity) <> 0 then 
4623  826 
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

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

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

829 
cLowGravity:= true 
4623  830 
end; 
1895  831 

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

834 

1895  835 
Gear:= GearsList; 
836 
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

837 
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

838 
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

839 
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

840 
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

841 
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

842 
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

843 
Effects[heInvulnerable]:= 1; 
1895  844 

845 
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

846 
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

847 

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

848 
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

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

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

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

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

853 
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

854 
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

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

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

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

858 

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

859 
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

860 
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

861 

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

862 
if (not hasBorder) and cSnow then 
7721  863 
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

864 
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

865 
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

866 
ry:=GetRandom(750); 
10494  867 
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

868 
end 
4  869 
end; 
870 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

894 

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

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

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

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

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

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

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

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

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

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

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

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

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

907 

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

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

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

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

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

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

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

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

915 

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

916 

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

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

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

919 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

939 

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

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

941 

4  942 
procedure AssignHHCoords; 
955  943 
var i, t, p, j: LongInt; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

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

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

950 

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

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

952 

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

953 
(* 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

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

955 
* 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

956 
* 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

957 
* 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

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

959 
* 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

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

961 
* 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

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

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

964 

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

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

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

967 
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

968 

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

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

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

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

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

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

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

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

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

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

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

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

982 
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

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

984 
else 
11705  985 
FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

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

990 
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1015 
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

1016 
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

1017 
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

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

1019 
FindPlace(ar[i]^.Gear, false, leftX, rightX, true); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

1021 
begin 
11705  1022 
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

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

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

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

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

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

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

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

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

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

1032 
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

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

1034 
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

1035 
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

1036 
end; 
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset

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

1038 
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

1039 
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

1040 
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

1041 
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

1042 
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

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

1044 
ForcePlaceOnLand(hwRound(Gear^.X)  SpritesData[sprTargetBee].Width div 2, 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1045 
hwRound(Gear^.Y)  SpritesData[sprTargetBee].Height div 2, 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1046 
sprTargetBee, 0, lfBasic, $FFFFFFFF, false, false, false); 
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset

1047 
Gear^.Y:= int2hwFloat(hwRound(Gear^.Y)  16  Gear^.Radius); 
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset

1048 
AddCI(Gear); 
11503  1049 
Gear^.State:= Gear^.State and (not gsttmpFlag); 
11750  1050 
AddFileLog('Placed flower for hog at coordinates (' + inttostr(hwRound(Gear^.X)) + ',' + inttostr(hwRound(Gear^.Y)) + ')') 
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

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

1052 

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

1053 

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

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

1055 
if divide and (not sectionDivide) then 
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset

1056 
SortHHsByClan(); 
4  1057 
end; 
1058 

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

1059 

1433  1060 
{procedure AmmoFlameWork(Ammo: PGear); 
79  1061 
var t: PGear; 
1062 
begin 

1063 
t:= GearsList; 

1064 
while t <> nil do 

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

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

1066 
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

1067 
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

1068 
begin 
2017  1069 
ApplyDamage(t, 5); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1070 
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

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

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

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

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

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

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

1077 
end; 
1433  1078 
end;} 
79  1079 

16  1080 

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

1081 
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

1082 
var gear: PGear; 
3730  1083 
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

1084 
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

1085 
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

1086 
FollowGear:= gear; 
3734  1087 
cCaseFactor := 0; 
1088 

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

1089 
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

1090 
content := ord(High(TAmmoType)); 
3734  1091 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1092 
gear^.Power:= cnt; 
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset

1093 

3734  1094 
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

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

1096 
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

1097 
gear^.Pos := posCaseHealth; 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

1098 
gear^.RenderHealth:= true; 
10506  1099 
// 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

1100 
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

1101 
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

1102 
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

1103 
AddCaption(GetEventString(eidNewHealthPack), capcolDefault, capgrpAmmoInfo); 
3734  1104 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

1106 
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

1107 
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

1108 
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

1109 
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

1110 
AddCaption(GetEventString(eidNewAmmoPack), capcolDefault, capgrpAmmoInfo); 
3734  1111 
end; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

1113 
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

1114 
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

1115 
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

1116 
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

1117 
AddCaption(GetEventString(eidNewUtilityPack), capColDefault, capgrpAmmoInfo); 
3734  1118 
end; 
1119 
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

1120 

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

1121 
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

1122 
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

1123 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1124 
SpawnCustomCrateAt := gear; 
3730  1125 
end; 
1126 

5343  1127 
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

1128 
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

1129 
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

1130 
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

1131 
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

1132 
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

1133 
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

1134 
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

1135 

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

1136 
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

1137 
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

1138 
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

1139 
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

1140 

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

1141 
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

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

1143 
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

1144 
gear^.Pos := gear^.Pos + posCaseHealth; 
14749
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14733
diff
changeset

1145 
gear^.RenderHealth:= true; 
10506  1146 
// 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

1147 
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

1148 
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

1149 
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

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

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

1152 
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

1153 
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

1154 
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

1155 
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

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

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

1158 
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

1159 
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

1160 
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

1161 
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

1162 
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

1163 
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

1164 

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

1165 
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

1166 
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

1167 

14472
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14410
diff
changeset

1168 
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

1169 
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

1170 

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

1171 
procedure StartSuddenDeath(); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

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

1173 
if SuddenDeath then 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1174 
exit; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1175 

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

1176 
SuddenDeath:= true; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1177 
SuddenDeathActive:= true; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1178 

21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1179 
// Special effects (only w/ health decrease) 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1180 
if cHealthDecrease <> 0 then 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

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

1182 
SuddenDeathDmg:= true; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1183 
// White screen flash 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1184 
ScreenFade:= sfFromWhite; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1185 
ScreenFadeValue:= sfMax; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1186 
ScreenFadeSpeed:= 1; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1187 

12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1188 
// Clouds, flakes, sky tint 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1189 
ChangeToSDClouds; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1190 
ChangeToSDFlakes; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1191 
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

1192 
end; 
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1193 

21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1194 
// Disable tardis 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1195 
Ammoz[amTardis].SkipTurns:= 9999; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1196 
Ammoz[amTardis].Probability:= 0; 
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset

1197 

13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

1198 
AddCaption(trmsg[sidSuddenDeath], capcolDefault, capgrpGameState); 
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1199 
ScriptCall('onSuddenDeath'); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1200 
playSound(sndSuddenDeath); 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1201 
StopMusic; 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

1202 
if SDMusicFN <> '' then 
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset

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

1204 
end; 
2726  1205 

2790  1206 
function GearByUID(uid : Longword) : PGear; 
1207 
var gear: PGear; 

1208 
begin 

1209 
GearByUID:= nil; 

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

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

1211 
if (lastGearByUID <> nil) and (lastGearByUID^.uid = uid) then 
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

1212 
begin 
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

1213 
GearByUID:= lastGearByUID; 
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

1214 
exit 
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

1215 
end; 
2790  1216 
gear:= GearsList; 
1217 
while gear <> nil do 

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

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

1219 
if gear^.uid = uid then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

1220 
begin 
4780
8571151411b3
add a couple of variables to speed up UID lookups. Based on the assumption new visual gears and gears will tend to be at the end of the list. Set them on successful lookup or script gear creation, clear on delete. Oh also pick up a couple of TrevInc's translation changes
nemo
parents:
4748
diff
changeset

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

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

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

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

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

1226 
end 
2790  1227 
end; 
1228 

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

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

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

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

1232 
(CurrentHedgehog^.Gear <> nil) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

1233 
and (((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

1234 
or (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_DoesntStopTimerWhileAttacking <> 0) 
11918
9da78300c5d0
Fix sniper rifle making timer gray all the time
Wuzzy <almikes@aol.com>
parents:
11916
diff
changeset

1235 
or ((GameFlags and gfInfAttack) <> 0) and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_DoesntStopTimerWhileAttackingInInfAttackMode <> 0) 
9da78300c5d0
Fix sniper rifle making timer gray all the time
Wuzzy <almikes@aol.com>
parents:
11916
diff
changeset

1236 
or (CurrentHedgehog^.CurAmmoType = amSniperRifle)) 
14394
d670e4efe1ed
Lua API: SetTurnTimePaused/GetTurnTimePaused
Wuzzy <Wuzzy2@mail.ru>
parents:
14349
diff
changeset

1237 
and (not(isInMultiShoot and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_DoesntStopTimerInMultiShoot) <> 0))) 
d670e4efe1ed
Lua API: SetTurnTimePaused/GetTurnTimePaused
Wuzzy <Wuzzy2@mail.ru>
parents:
14349
diff
changeset

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

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

1240 

4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1241 

36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1242 
procedure chSkip(var s: shortstring); 
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1243 
begin 
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1244 
s:= s; // avoid compiler hint 
7805  1245 
if not isExternalSource then 
7068  1246 
SendIPC(_S','); 
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1247 
uStats.Skipped; 
13171
9f80c08cdae9
Lua API: Add onSkipTurn callback, called when hog skips
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

1248 
skipFlag:= true; 
9f80c08cdae9
Lua API: Add onSkipTurn callback, called when hog skips
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

1249 
ScriptCall('onSkipTurn'); 
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1250 
end; 
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1251 

36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1252 
procedure chHogSay(var s: shortstring); 
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

1253 
var Gear: PVisualGear; 
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

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

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

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

1257 
c, j: LongInt; 
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4396
diff
changeset

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

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

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

1262 
x:= byte(s[1]); // speech type 
4469  1263 
if x < 4 then 
1264 
begin 

1265 
t:= byte(s[2]); // team 

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

1266 
if Length(s) > 2 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1267 
h:= byte(s[3]) // target hog 
10490  1268 
else 
1269 
h:= 0 

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

1271 
// allow targetting a hog by specifying a number as the first portion of the text 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1272 
if (x < 4) and (h > byte('0')) and (h < byte('9')) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
