author  Wuzzy <Wuzzy2@mail.ru> 
Mon, 10 Dec 2018 07:35:29 +0100  
changeset 14400  9c7d5f595881 
parent 14398  87562a68c41f 
child 14402  234bb36d3b8c 
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; 
7021
0c75512a8920
adjust the scope of a few uSound variables and functions
koda
parents:
7010
diff
changeset

70 
//SDMusic: shortstring; 
6982  71 

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

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

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

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

75 
delayTurnReact = 1500; 
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 
7519  277 
if curHandledGear^.RenderTimer and (curHandledGear^.Timer > 500) and ((curHandledGear^.Timer mod 1000) = 0) then 
278 
begin 

10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10510
diff
changeset

279 
FreeAndNilTexture(curHandledGear^.Tex); 
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10116
diff
changeset

280 
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(curHandledGear^.Timer div 1000)), cWhiteColor, fntSmall); 
7519  281 
end; 
282 
curHandledGear^.doStep(curHandledGear); 

283 
// might be useful later 

284 
//ScriptCall('onGearStep', Gear^.uid); 

285 
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

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

287 
end; 
11469  288 
if stirFallers then 
289 
begin 

290 
t := GearsList; 

291 
while t <> nil do 

292 
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

293 
if (t^.Kind = gtGenericFaller) and (t^.Tag = 1) then 
11469  294 
begin 
295 
t^.Active:= true; 

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

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

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

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

300 
end; 

301 
t := t^.NextGear 

302 
end 

303 
end; 

304 

7395  305 
curHandledGear:= nil; 
89  306 

4  307 
if AllInactive then 
1343  308 
case step of 
12928  309 
stInit: 
310 
begin 

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

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

312 
ScriptCall('onEndTurn'); 
12928  313 
inc(step) 
314 
end; 

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

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

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

317 
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

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

319 
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

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

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

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

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

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

325 
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

326 

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

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

328 
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

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

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

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

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

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

334 
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

335 

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

336 
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

337 
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

338 
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

339 
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

340 
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

341 
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

342 

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

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

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

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

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

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

348 

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

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

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

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

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

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

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

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

356 
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

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

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

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

360 
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

361 

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

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

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

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

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

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

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

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

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

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

371 
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

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

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

374 
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

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

376 
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

377 
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

378 
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

379 
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

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

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

382 
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

383 
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

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

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

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

387 
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

388 
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

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

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

391 

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

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

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

394 
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

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

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

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

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

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

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

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

402 
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

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

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

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

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

407 
end 
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

408 
else if (TotalRoundsPre < cSuddenDTurns) and (not isInMultiShoot) then 
10254  409 
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

410 
i:= cSuddenDTurns  TotalRoundsPre; 
10254  411 
s:= ansistring(inttostr(i)); 
412 
if i = 1 then 

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

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

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

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

416 
end 
10254  417 
else if (i = 2) or ((i > 0) and ((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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

453 
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

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

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

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

457 
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

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

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

460 
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

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

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

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

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

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

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

467 
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

468 
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

469 
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

470 
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

471 
OnUsedAmmo(CurrentHedgehog^); 
3697  472 

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

473 
EndTurnCleanup; 
2376  474 

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

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

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

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

478 
SwitchHedgehog; 
1298  479 

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

480 
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

481 
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

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

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

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

485 
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

486 
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

487 
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

488 
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

489 
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

490 
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

491 
else 
3957  492 
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

493 
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

494 

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

495 
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

496 
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

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

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

499 
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

500 
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

501 
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

502 
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

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

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

505 
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

506 
end; 
3957  507 
if delay2 = 0 then 
508 
begin 

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

509 
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

510 
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

511 
SweepDirty; 
9497  512 
if (CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear^.State and gstHHDriven = 0) or (CurrentHedgehog^.Gear^.Damage = 0) then 
513 
CheckNoDamage; 

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

514 
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

515 
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

516 
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

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

518 
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

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

520 
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

521 
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

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

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

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

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

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

528 
end; 
15  529 

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

531 
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

532 
//(CurrentHedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle]) 
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset

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

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

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

537 
and (not isGetAwayTime) and (ReadyTimeLeft = 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

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

539 
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

540 
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

541 
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

542 
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

543 
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

544 
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

545 
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

546 
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

547 
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

548 
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

549 
begin 
11921
b1782491f19c
Enable timer warning sounds in hog placement phase
Wuzzy <almikes@aol.com>
parents:
11918
diff
changeset

550 
if (ReadyTimeLeft = 2000) and (LastVoice.snd = sndNone) and (not PlacingHogs) 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

551 
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

552 
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

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

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

555 
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

556 
end; 
351  557 

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

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

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

560 
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

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

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

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

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

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

566 

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

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

569 
if (not CurrentTeam^.ExtDriven) then 
5810  570 
begin 
7068  571 
SendIPC(_S'#'); 
5810  572 
AddFileLog('hiTicks increment message sent') 
573 
end; 

2134  574 

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

575 
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

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

577 
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

578 
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

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

580 
end; 
7407  581 
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

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

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

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

585 
dec(OuchTauntTimer); 
4  586 
end; 
587 

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

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

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

591 
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

592 
t: PGear; 
1849  593 
begin 
2221  594 
SpeechText:= ''; // in case it has not been consumed 
2017  595 

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

598 
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

599 
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

600 
cLowGravity:= false 
4623  601 
end; 
1895  602 

2017  603 
if (GameFlags and gfVampiric) = 0 then 
604 
cVampiric:= false; 

605 

1849  606 
cDamageModifier:= _1; 
1895  607 

608 
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

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

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

612 
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

613 

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

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

615 
if (CurrentTeam <> nil) then 
4099  616 
with CurrentTeam^ do 
617 
for i:= 0 to cMaxHHIndex do 

618 
with Hedgehogs[i] do 

619 
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

620 
(* 
4099  621 
if (SpeechGear <> nil) then 
622 
begin 

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

624 
SpeechGear:= nil 

625 
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

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

627 

4099  628 
if (Gear <> nil) then 
629 
begin 

630 
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

631 
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

632 
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

633 
Gear^.Hedgehog^.Effects[heArtillery]:= 0; 
4099  634 
end; 
635 
end; 

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

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

637 
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

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

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

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

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

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

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

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

648 
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

649 
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

650 

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

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

653 

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

655 
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

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

658 

4385  659 
procedure DrawGears; 
660 
var Gear: PGear; 

661 
x, y: LongInt; 

2802  662 
begin 
4385  663 
Gear:= GearsList; 
664 
while Gear <> nil do 

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

665 
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

666 
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

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

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

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

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

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

673 
end; 
10866  674 

675 
if SpeechHogNumber > 0 then 

676 
DrawHHOrder(); 

2802  677 
end; 
678 

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

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

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

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

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

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

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

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

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

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

688 
y:= hwRound(Gear^.Y) + WorldDy; 
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset

689 
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

690 
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

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

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

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

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

695 

4  696 
procedure FreeGearsList; 
697 
var t, tt: PGear; 

698 
begin 

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

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

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

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

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

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

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

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

706 
end; 
4  707 
end; 
708 

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

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

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

713 
Gear: PGear; 
4  714 
begin 
498  715 
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

716 

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

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

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

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

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

721 
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

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

723 

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

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

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

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

728 

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

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

730 
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

731 

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

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

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

734 
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

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

736 
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

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

738 

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

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

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

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

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

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

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

746 

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 
inc(i) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

748 
end; 
1895  749 

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

750 
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

751 
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

752 
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

753 
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

754 
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

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

757 
begin 
13570  758 
p:= 0; 
759 
if hasBorder then 

760 
begin 

761 
rx:= leftX+GetRandom(rightXleftX16)+8; 

762 
ry:= topY+GetRandom(LAND_HEIGHTtopY16)+8 

763 
end 

764 
else 

765 
begin 

766 
rx:= leftX+GetRandom(rightXleftX+400)200; 

767 
ry:= topY+GetRandom(LAND_HEIGHTtopY+400)200 

768 
end; 

769 
Gear^.X:= int2hwFloat(CalcWorldWrap(rx,Gear^.Radius)); 

770 
Gear^.Y:= int2hwFloat(ry); 

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

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

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

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

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

776 
begin 
13570  777 
t:= 0; 
778 
while (t < TeamsCount) and (p = 0) do 

779 
begin 

780 
h:= 0; 

781 
with TeamsArray[t]^ do 

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

783 
begin 
13570  784 
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

785 
begin 
13570  786 
rdx:=Gear^.XHedgehogs[h].Gear^.X; 
787 
rdy:=Gear^.YHedgehogs[h].Gear^.Y; 

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

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

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

791 
begin 

792 
// Debug line. Remove later 

793 
// AddFileLog('Too Close to Hog @ (' + inttostr(rx) + ',' + inttostr(ry) + ')'); 

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

794 

13570  795 
p:= 1 
796 
end 

797 
end; 

798 
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

799 
end; 
13570  800 
inc(t) 
801 
end; 

802 
if p = 0 then 

803 
begin 

804 
inc(i); 

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

806 
if i < cAirMines then 

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

808 
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

809 
end; 
13570  810 
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

811 
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

812 
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

813 

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

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

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

818 
cLowGravity:= true 
4623  819 
end; 
1895  820 

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

823 

1895  824 
Gear:= GearsList; 
825 
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

826 
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

827 
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

828 
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

829 
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

830 
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

831 
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

832 
Effects[heInvulnerable]:= 1; 
1895  833 

834 
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

835 
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

836 

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

837 
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

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

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

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

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

842 
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

843 
Gear:= AddGear(rx, ry, gtGenericFaller, gstInvisible, rdx, rdy, $FFFFFFFF); 
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

844 
// Tag=1: This allows this generic faller to be displaced randomly by events 
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

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

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

847 

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

848 
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

849 
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

850 

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

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

853 
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

854 
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

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

857 
end 
4  858 
end; 
859 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

883 

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

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

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

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

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

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

889 
if clar[j] <> clar[k] 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 
hh1:= clar[j]; 
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset

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

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

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

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

896 

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

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

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

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

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

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

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

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

904 

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

905 

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

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

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

908 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

928 

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

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

930 

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

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

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

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

937 
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

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

939 

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

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

941 

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

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

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

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

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

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

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

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

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

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

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

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

953 

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

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

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

956 
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

957 

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

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

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

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

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

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

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

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

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

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

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

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

971 
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

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

973 
else 
11705  974 
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

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

976 
begin 
12450  977 
//AddCI(Gear); uncomment if new hogs should be able to spawn on top of old ones. 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

980 
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1003 
while (Count > 0) 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 
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

1006 
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

1007 
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

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

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

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

1011 
begin 
12450  1012 
//AddCI(ar[i]^.Gear); uncomment if new hogs should be able to spawn on top of old ones 
11705  1013 
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

1014 
ar[i]^.Gear^.Pos:= GetRandom(19) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2947
diff
changeset

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

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

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

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

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

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

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

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

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

1024 
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

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

1026 
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

1027 
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

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

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

1030 
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

1031 
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

1032 
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

1033 
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

1034 
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

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

1036 
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

1037 
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

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

1039 
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

1040 
AddCI(Gear); 
11503  1041 
Gear^.State:= Gear^.State and (not gsttmpFlag); 
11750  1042 
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

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

1044 

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

1045 

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

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

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

1048 
SortHHsByClan(); 
4  1049 
end; 
1050 

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

1051 

1433  1052 
{procedure AmmoFlameWork(Ammo: PGear); 
79  1053 
var t: PGear; 
1054 
begin 

1055 
t:= GearsList; 

1056 
while t <> nil do 

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

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

1058 
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

1059 
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

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

1062 
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

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

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

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

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

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

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

1069 
end; 
1433  1070 
end;} 
79  1071 

16  1072 

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

1073 
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content, cnt: Longword): PGear; 
3730  1074 
begin 
3734  1075 
FollowGear := AddGear(x, y, gtCase, 0, _0, _0, 0); 
1076 
cCaseFactor := 0; 

1077 

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

1078 
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

1079 
content := ord(High(TAmmoType)); 
3734  1080 

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

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

1082 

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

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

1085 
begin 
3734  1086 
FollowGear^.Pos := posCaseHealth; 
10506  1087 
// health crate is smaller than the other crates 
1088 
FollowGear^.Radius := cCaseHealthRadius; 

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

1089 
FollowGear^.Health := content; 
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

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

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

1093 
begin 
3734  1094 
FollowGear^.Pos := posCaseAmmo; 
4240
4e81670e52aa
er. and cast to TAmmoType, which burp's routine still requires :)
nemo
parents:
4239
diff
changeset

1095 
FollowGear^.AmmoType := TAmmoType(content); 
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

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

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

1099 
begin 
3734  1100 
FollowGear^.Pos := posCaseUtility; 
4240
4e81670e52aa
er. and cast to TAmmoType, which burp's routine still requires :)
nemo
parents:
4239
diff
changeset

1101 
FollowGear^.AmmoType := TAmmoType(content); 
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

1102 
AddCaption(GetEventString(eidNewUtilityPack), capColDefault, capgrpAmmoInfo); 
3734  1103 
end; 
1104 
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

1105 

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

1106 
if ( (x = 0) and (y = 0) ) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1107 
FindPlace(FollowGear, 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

1108 

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

1109 
SpawnCustomCrateAt := FollowGear; 
3730  1110 
end; 
1111 

5343  1112 
function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean): 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

1113 
begin 
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

1114 
FollowGear := AddGear(x, y, gtCase, 0, _0, _0, 0); 
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

1115 
cCaseFactor := 0; 
5343  1116 
FollowGear^.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

1117 

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

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

1119 
FollowGear^.Pos := FollowGear^.Pos + posCaseExplode; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

1121 
FollowGear^.Pos := FollowGear^.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

1122 

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

1123 
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

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

1125 
begin 
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

1126 
FollowGear^.Pos := FollowGear^.Pos + posCaseHealth; 
10506  1127 
// health crate is smaller than the other crates 
1128 
FollowGear^.Radius := cCaseHealthRadius; 

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

1129 
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

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

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

1132 
begin 
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 
FollowGear^.Pos := FollowGear^.Pos + posCaseAmmo; 
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

1134 
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

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

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

1137 
begin 
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

1138 
FollowGear^.Pos := FollowGear^.Pos + posCaseUtility; 
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset

1139 
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

1140 
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

1141 
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

1142 

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

1143 
if ( (x = 0) and (y = 0) ) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1144 
FindPlace(FollowGear, 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

1145 

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

1146 
SpawnFakeCrateAt := FollowGear; 
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

1147 
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

1148 

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

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

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

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

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

1153 

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

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

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

1156 

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

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

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

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

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

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

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

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

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

1165 

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

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

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

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

1169 
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

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

1171 

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

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

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

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

1175 

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

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

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

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

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

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

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

1182 
end; 
2726  1183 

2790  1184 
function GearByUID(uid : Longword) : PGear; 
1185 
var gear: PGear; 

1186 
begin 

1187 
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

1188 
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

1189 
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

1190 
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

1191 
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

1192 
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

1193 
end; 
2790  1194 
gear:= GearsList; 
1195 
while gear <> nil do 

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

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

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

1198 
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

1199 
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

1200 
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

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

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

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

1204 
end 
2790  1205 
end; 
1206 

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

1207 
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

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

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

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

1211 
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

1212 
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

1213 
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

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

1215 
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

1216 
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

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

1218 

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

1219 

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

1220 
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

1221 
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

1222 
s:= s; // avoid compiler hint 
7805  1223 
if not isExternalSource then 
7068  1224 
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

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

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

1227 
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

1228 
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

1229 

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

1230 
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

1231 
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

1232 
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

1233 
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

1234 
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

1235 
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

1236 
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

1237 
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

1238 
i:= 0; 
4469  1239 
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

1240 
x:= byte(s[1]); // speech type 
4469  1241 
if x < 4 then 
1242 
begin 

1243 
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

1244 
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

1245 
h:= byte(s[3]) // target hog 
10490  1246 
else 
1247 
h:= 0 

4469  1248 
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

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

1250 
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

1251 
i:= h  48; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

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

1253 
text:= copy(s, 4, Length(s)  1) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1254 
else if x < 4 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1255 
text:= copy(s, 3, Length(s)  1) 
4468  1256 
else text:= copy(s, 2, Length(s)  1); 
1257 

9818  1258 
if text = '' then text:= '...'; 
1259 

4470
d2b8d2fc51a9
disable say, just don't do anything. trying to avoid spew on spectator join
nemo
parents:
4469
diff
changeset

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

1261 
if CheckNoTeamOrHH then 
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

1262 
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

1263 
ParseCommand('say ' + text, true); 
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

1264 
exit 
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

1265 
end; 
4470
d2b8d2fc51a9
disable say, just don't do anything. trying to avoid spew on spectator join
nemo
parents:
4469
diff
changeset

1266 
*) 
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

1267 

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

1268 
if (x < 4) and (TeamsArray[t] <> nil) then 
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

1269 
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

1270 
// if team matches current hedgehog team, default to current hedgehog 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1271 
if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset

1272 
hh:= CurrentHedgehog 
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

1273 
else 
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

1274 
begin 
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

1275 
// otherwise use the first living hog or the hog amongs the remaining ones indicated by i 
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

1276 
j:= 0; 
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

1277 
c:= 0; 
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

1278 
while (j <= cMaxHHIndex) and (hh = nil) do 
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

1279 
begin 
743673c67d0c
Allow hog speech when not your turn. Currentl 