author | unC0Rr |
Sun, 12 Feb 2023 14:19:02 +0100 | |
branch | transitional_engine |
changeset 15948 | 9bd828451d77 |
parent 15897 | d7b53d08ad9c |
child 15936 | 303cf91e5233 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
11046 | 3 |
* Copyright (c) 2004-2015 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 02110-1301 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; |
15460 | 46 |
procedure DrawFinger; |
4 | 47 |
procedure FreeGearsList; |
10 | 48 |
procedure AddMiscGears; |
4 | 49 |
procedure AssignHHCoords; |
14786
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
50 |
procedure RandomizeHHAnim; |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
51 |
procedure StartSuddenDeath; |
3405 | 52 |
function GearByUID(uid : Longword) : PGear; |
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
53 |
function IsClockRunning() : boolean; |
4 | 54 |
|
55 |
implementation |
|
14882
acb0526bf458
Refactor decimal separator to make Pas2C happy
Wuzzy <Wuzzy2@mail.ru>
parents:
14881
diff
changeset
|
56 |
uses uStore, uSound, uTeams, uRandom, uIO, uLandGraphics, |
9651 | 57 |
{$IFDEF USE_TOUCH_INTERFACE}uTouch,{$ENDIF} |
9295
f8819c3dde54
Remove some GLunit dependencies noticed on graph. uUtils was using it for GLfloat - but, the stuff it was returning to was usually converting to "real" anyway. uLand was including it unnecessarily. Minor refactor
nemo
parents:
9293
diff
changeset
|
58 |
uLocale, uAmmos, uStats, uVisualGears, uScript, uVariables, |
12621 | 59 |
uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, |
9285 | 60 |
uGearsHedgehog, uGearsUtils, uGearsList, uGearsHandlersRope |
15731 | 61 |
, uVisualGearsList, uGearsHandlersMess, uAI, SDLh; |
789 | 62 |
|
7028 | 63 |
var skipFlag: boolean; |
3697 | 64 |
|
6982 | 65 |
var delay: LongWord; |
66 |
delay2: LongWord; |
|
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
67 |
step: (stInit, stDelay1, stChDmg, stSweep, stTurnStats, stChWin1, |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
68 |
stTurnReact, stDelay2, stChWin2, stWater, stChWin3, |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
69 |
stChKing, stSuddenDeath, stDelay3, stHealth, stSpawn, stDelay4, |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
70 |
stNTurn); |
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
71 |
NewTurnTick: LongWord; |
6982 | 72 |
|
15012
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14977
diff
changeset
|
73 |
const delayInit = 50; |
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14977
diff
changeset
|
74 |
delaySDStart = 1600; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
75 |
delaySDWarning = 1000; |
14426 | 76 |
delayDamageTagFull = 1500; |
77 |
delayDamageTagShort = 500; |
|
14429 | 78 |
delayTurnReact = 800; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
79 |
delayFinal = 100; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
80 |
|
4 | 81 |
function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs |
82 |
var Gear: PGear; |
|
1849 | 83 |
dmg: LongInt; |
4 | 84 |
begin |
351 | 85 |
CheckNoDamage:= true; |
4 | 86 |
Gear:= GearsList; |
87 |
while Gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
88 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
89 |
if (Gear^.Kind = gtHedgehog) and (((GameFlags and gfInfAttack) = 0) or ((Gear^.dX.QWordValue < _0_000004.QWordValue) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
90 |
and (Gear^.dY.QWordValue < _0_000004.QWordValue))) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
91 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
92 |
if (not isInMultiShoot) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
93 |
inc(Gear^.Damage, Gear^.Karma); |
9685
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects - heInvulnerable is already in effects,
nemo
parents:
9672
diff
changeset
|
94 |
if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
95 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
96 |
CheckNoDamage:= false; |
4824 | 97 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
98 |
dmg:= Gear^.Damage; |
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
99 |
if (Gear^.Health < dmg) then |
3453 | 100 |
begin |
101 |
Gear^.Active:= true; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
102 |
Gear^.Health:= 0 |
3453 | 103 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
104 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
105 |
dec(Gear^.Health, dmg); |
7882
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset
|
106 |
(* |
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset
|
107 |
This doesn't fit well w/ the new loser sprite which is cringing from an attack. |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
108 |
if (Gear^.Hedgehog^.Team = CurrentTeam) and (Gear^.Damage <> Gear^.Karma) |
7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
7007
diff
changeset
|
109 |
and (not Gear^.Hedgehog^.King) and (Gear^.Hedgehog^.Effects[hePoisoned] = 0) and (not SuddenDeathDmg) then |
2017 | 110 |
Gear^.State:= Gear^.State or gstLoser; |
7882
35dfc54ba2c6
disable this block since it doesn't fit star's new graphic. doesn't show up often anyway, since unc0rr changed gst clearing
nemo
parents:
7850
diff
changeset
|
111 |
*) |
2017 | 112 |
|
3461
0781275649e9
revert the restoration of non-vgt health gears. desyncs continued with it, and furthermore, occur in r3489 too
nemo
parents:
3460
diff
changeset
|
113 |
spawnHealthTagForHH(Gear, dmg); |
867 | 114 |
|
4365 | 115 |
RenderHealth(Gear^.Hedgehog^); |
116 |
RecountTeamHealth(Gear^.Hedgehog^.Team); |
|
1505 | 117 |
|
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
118 |
end |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
119 |
else if ((GameFlags and gfKing) <> 0) and (not Gear^.Hedgehog^.Team^.hasKing) then |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
120 |
begin |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
121 |
Gear^.Active:= true; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
122 |
Gear^.Health:= 0; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
123 |
RenderHealth(Gear^.Hedgehog^); |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
124 |
RecountTeamHealth(Gear^.Hedgehog^.Team); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
125 |
end; |
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
126 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
127 |
if (not isInMultiShoot) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
128 |
Gear^.Karma:= 0; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
129 |
Gear^.Damage:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
130 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
131 |
Gear:= Gear^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
132 |
end; |
4 | 133 |
end; |
134 |
||
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
135 |
function DoDelay: boolean; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
136 |
begin |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
137 |
if delay <= 0 then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
138 |
delay:= 1 |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
139 |
else |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
140 |
dec(delay); |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
141 |
DoDelay:= delay = 0; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
142 |
end; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
143 |
|
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
144 |
function CheckMinionsDie: boolean; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
145 |
var Gear: PGear; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
146 |
begin |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
147 |
CheckMinionsDie:= false; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
148 |
if (GameFlags and gfKing) = 0 then |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
149 |
exit; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
150 |
|
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
151 |
Gear:= GearsList; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
152 |
while Gear <> nil do |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
153 |
begin |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
154 |
if (Gear^.Kind = gtHedgehog) and (not Gear^.Hedgehog^.King) and (not Gear^.Hedgehog^.Team^.hasKing) then |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
155 |
begin |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
156 |
CheckMinionsDie:= true; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
157 |
exit; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
158 |
end; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
159 |
Gear:= Gear^.NextGear; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
160 |
end; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
161 |
end; |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
162 |
|
1054 | 163 |
procedure HealthMachine; |
164 |
var Gear: PGear; |
|
2824
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
165 |
team: PTeam; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
166 |
i: LongWord; |
2824
2d25e49bc2e8
Extra incentive to attack non-king hogs. If king loses his entourage, he loses 5hp per turn
nemo
parents:
2814
diff
changeset
|
167 |
flag: Boolean; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
168 |
tmp: LongWord; |
1054 | 169 |
begin |
3682 | 170 |
Gear:= GearsList; |
1054 | 171 |
|
3682 | 172 |
while Gear <> nil do |
173 |
begin |
|
174 |
if Gear^.Kind = gtHedgehog then |
|
175 |
begin |
|
176 |
tmp:= 0; |
|
14370
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
177 |
// Deal poison damage (when not frozen) |
11867 | 178 |
if (Gear^.Hedgehog^.Effects[hePoisoned] <> 0) and (Gear^.Hedgehog^.Effects[heFrozen] = 0) then |
4111 | 179 |
begin |
10012
82dd9f0c88f7
Make poison damage possibly variable (might as well since effects is a count). Scripts might find it handy.
nemo
parents:
9998
diff
changeset
|
180 |
inc(tmp, ModifyDamage(Gear^.Hedgehog^.Effects[hePoisoned], Gear)); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
181 |
if (GameFlags and gfResetHealth) <> 0 then |
14370
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
182 |
dec(Gear^.Hedgehog^.InitialHealth); |
4111 | 183 |
end; |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
184 |
// Apply SD health decrease as soon as SD starts |
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset
|
185 |
if (TotalRoundsPre > cSuddenDTurns - 1) then |
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
186 |
begin |
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
187 |
inc(tmp, cHealthDecrease); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
188 |
if (GameFlags and gfResetHealth) <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
189 |
dec(Gear^.Hedgehog^.InitialHealth, cHealthDecrease) |
4153
6bd94e4c5d65
2 more variables to control water rise and health loss during sudden death.
henek
parents:
4148
diff
changeset
|
190 |
end; |
14370
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
191 |
// Reduce king health when he is alone in team |
4365 | 192 |
if Gear^.Hedgehog^.King then |
3109
06c089cb739c
Reduce turns to -1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset
|
193 |
begin |
06c089cb739c
Reduce turns to -1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset
|
194 |
flag:= false; |
4365 | 195 |
team:= Gear^.Hedgehog^.Team; |
3109
06c089cb739c
Reduce turns to -1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset
|
196 |
for i:= 0 to Pred(team^.HedgehogsNumber) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
197 |
if (team^.Hedgehogs[i].Gear <> nil) and (not team^.Hedgehogs[i].King) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
198 |
and (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
199 |
flag:= true; |
4111 | 200 |
if not flag then |
201 |
begin |
|
202 |
inc(tmp, 5); |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
203 |
if (GameFlags and gfResetHealth) <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
204 |
dec(Gear^.Hedgehog^.InitialHealth, 5) |
4111 | 205 |
end |
3109
06c089cb739c
Reduce turns to -1 to allow processing health machine on first turn. Needs testing with Sudden Death set to 0
nemo
parents:
3107
diff
changeset
|
206 |
end; |
14370
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
207 |
// Initial health must never be below 1 because hog might be resurrected |
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
208 |
if Gear^.Hedgehog^.InitialHealth < 1 then |
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
209 |
Gear^.Hedgehog^.InitialHealth:= 1; |
d35e0fdb70f6
Don't reduce InitialHealth below 1
Wuzzy <Wuzzy2@mail.ru>
parents:
14217
diff
changeset
|
210 |
// Set real damage |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
211 |
if tmp > 0 then |
3845
90034acb2e43
Untested fix of r3672 - should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset
|
212 |
begin |
13319
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset
|
213 |
// SD damage never reduces health below 1 |
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset
|
214 |
tmp:= min(tmp, max(0, Gear^.Health - 1 - Gear^.Damage)); |
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset
|
215 |
inc(Gear^.Damage, tmp); |
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset
|
216 |
if tmp > 0 then |
78f097923bcb
Don't let hedgehogs moan if they take 0 Sudden Death damage
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset
|
217 |
// Make hedgehog moan on damage |
14062
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13897
diff
changeset
|
218 |
HHHurt(Gear^.Hedgehog, dsPoison, tmp); |
3845
90034acb2e43
Untested fix of r3672 - should avoid hogs dying due to multiple health machine sources, and inappropriate application of karma/vampirism to these.
nemo
parents:
3836
diff
changeset
|
219 |
end |
3682 | 220 |
end; |
1054 | 221 |
|
3682 | 222 |
Gear:= Gear^.NextGear |
223 |
end; |
|
1054 | 224 |
end; |
225 |
||
4 | 226 |
procedure ProcessGears; |
14789
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
227 |
var t, tmpGear: PGear; |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
228 |
i, j, AliveCount: LongInt; |
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10116
diff
changeset
|
229 |
s: ansistring; |
9672
8663d299ba62
this should prevent sliding when game clock isn't running. sorry unc0rr, not going to bother encapsulating. maybe later. short on time right now/lazy
nemo
parents:
9651
diff
changeset
|
230 |
prevtime: LongWord; |
11469 | 231 |
stirFallers: boolean; |
4 | 232 |
begin |
11469 | 233 |
stirFallers:= false; |
9672
8663d299ba62
this should prevent sliding when game clock isn't running. sorry unc0rr, not going to bother encapsulating. maybe later. short on time right now/lazy
nemo
parents:
9651
diff
changeset
|
234 |
prevtime:= TurnTimeLeft; |
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
235 |
ScriptCall('onGameTick'); |
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
236 |
if GameTicks mod 20 = 0 then ScriptCall('onGameTick20'); |
8351 | 237 |
if GameTicks = NewTurnTick then |
238 |
begin |
|
239 |
ScriptCall('onNewTurn'); |
|
9651 | 240 |
{$IFDEF USE_TOUCH_INTERFACE} |
8351 | 241 |
uTouch.NewTurnBeginning(); |
242 |
{$ENDIF} |
|
243 |
end; |
|
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
244 |
|
868 | 245 |
PrvInactive:= AllInactive; |
4 | 246 |
AllInactive:= true; |
1495 | 247 |
|
2940 | 248 |
if (StepSoundTimer > 0) and (StepSoundChannel < 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
249 |
StepSoundChannel:= LoopSound(sndSteps) |
2940 | 250 |
else if (StepSoundTimer = 0) and (StepSoundChannel > -1) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
251 |
begin |
7053 | 252 |
StopSoundChan(StepSoundChannel); |
2993
d83edb74e92d
Remove animation on jumping/resuming walk, only leave it in on weapon switch
nemo
parents:
2991
diff
changeset
|
253 |
StepSoundChannel:= -1 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
254 |
end; |
2940 | 255 |
|
256 |
if StepSoundTimer > 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
257 |
dec(StepSoundTimer, 1); |
2940 | 258 |
|
4 | 259 |
t:= GearsList; |
1054 | 260 |
while t <> nil do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
261 |
begin |
7395 | 262 |
curHandledGear:= t; |
263 |
t:= curHandledGear^.NextGear; |
|
11469 | 264 |
if (GameTicks and $1FFF = 0) and (curHandledGear^.Kind = gtCase) and (curHandledGear^.Pos <> posCaseHealth) then |
265 |
stirFallers := true; |
|
3123 | 266 |
|
7517 | 267 |
if curHandledGear^.Message and gmDelete <> 0 then |
7519 | 268 |
DeleteGear(curHandledGear) |
269 |
else |
|
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset
|
270 |
begin |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
271 |
if curHandledGear^.Message and gmRemoveFromList <> 0 then |
7519 | 272 |
begin |
273 |
RemoveGearFromList(curHandledGear); |
|
274 |
// since I can't think of any good reason this would ever be separate from a remove from list, going to keep it inside this block |
|
275 |
if curHandledGear^.Message and gmAddToList <> 0 then InsertGearToList(curHandledGear); |
|
276 |
curHandledGear^.Message:= curHandledGear^.Message and (not (gmRemoveFromList or gmAddToList)) |
|
277 |
end; |
|
278 |
if curHandledGear^.Active then |
|
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset
|
279 |
begin |
15381
c117e17b90bc
flag some of the renderstringtex which are taking up a ton of processing time with --stats-only and pas2c
nemo
parents:
15241
diff
changeset
|
280 |
if (not cOnlyStats) and curHandledGear^.RenderTimer then |
7519 | 281 |
begin |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
282 |
// Mine timer |
14771
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
283 |
if (curHandledGear^.Kind in [gtMine, gtSMine, gtAirMine]) then |
14778 | 284 |
begin |
14771
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
285 |
if curHandledGear^.Tex = nil then |
14773
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14771
diff
changeset
|
286 |
if (curHandledGear^.Karma = 1) and (not (GameType in [gmtDemo, gmtRecord])) then |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
287 |
// Secret mine timer |
14899
4e3d81af71bf
Some fixes to make Pas2C happy again
Wuzzy <Wuzzy2@mail.ru>
parents:
14882
diff
changeset
|
288 |
curHandledGear^.Tex:= RenderStringTex(trmsg[sidUnknownGearValue], $ff808080, fntSmall) |
14771
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
289 |
else |
14773
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14771
diff
changeset
|
290 |
begin |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
291 |
// Display mine timer with up to 1 decimal point of precision (rounded down) |
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
292 |
i:= curHandledGear^.Timer div 1000; |
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
293 |
j:= (curHandledGear^.Timer mod 1000) div 100; |
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
294 |
if j = 0 then |
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
295 |
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(i)), $ff808080, fntSmall) |
14773
56098968df90
Don't explose mine timer in game if random (using Karma value)
Wuzzy <Wuzzy2@mail.ru>
parents:
14771
diff
changeset
|
296 |
else |
14882
acb0526bf458
Refactor decimal separator to make Pas2C happy
Wuzzy <Wuzzy2@mail.ru>
parents:
14881
diff
changeset
|
297 |
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(i) + lDecimalSeparator + inttostr(j)), $ff808080, fntSmall); |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
298 |
end |
14778 | 299 |
end |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
300 |
// Timer of other gears |
14771
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
301 |
else if ((curHandledGear^.Timer > 500) and ((curHandledGear^.Timer mod 1000) = 0)) then |
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
302 |
begin |
14776
21abb4e4ca9f
Add support for decimal point of displayed mine timer
Wuzzy <Wuzzy2@mail.ru>
parents:
14773
diff
changeset
|
303 |
// Display time in seconds as whole number, rounded up |
14771
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
304 |
FreeAndNilTexture(curHandledGear^.Tex); |
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
305 |
curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(curHandledGear^.Timer div 1000)), cWhiteColor, fntSmall); |
ab7bf5036314
Render mine timer if gear info is active
Wuzzy <Wuzzy2@mail.ru>
parents:
14770
diff
changeset
|
306 |
end; |
7519 | 307 |
end; |
308 |
curHandledGear^.doStep(curHandledGear); |
|
309 |
end |
|
2204
526f8165acce
Smaxx' idea of timers, reworked just a tad. Might need variable for offset, but seems ok for now
nemo
parents:
2186
diff
changeset
|
310 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
311 |
end; |
11469 | 312 |
if stirFallers then |
313 |
begin |
|
314 |
t := GearsList; |
|
315 |
while t <> nil do |
|
316 |
begin |
|
13214
9c81e34f1933
gtGenericFaller: Use Tag=1 to allow gtGenericFaller to be displaced randomly. Otherwise it is left alone
Wuzzy <Wuzzy2@mail.ru>
parents:
13171
diff
changeset
|
317 |
if (t^.Kind = gtGenericFaller) and (t^.Tag = 1) then |
11469 | 318 |
begin |
319 |
t^.Active:= true; |
|
320 |
t^.X:= int2hwFloat(GetRandom(rightX-leftX)+leftX); |
|
321 |
t^.Y:= int2hwFloat(GetRandom(LAND_HEIGHT-topY)+topY); |
|
322 |
t^.dX:= _90-(GetRandomf*_360); |
|
323 |
t^.dY:= _90-(GetRandomf*_360) |
|
324 |
end; |
|
325 |
t := t^.NextGear |
|
326 |
end |
|
327 |
end; |
|
328 |
||
7395 | 329 |
curHandledGear:= nil; |
89 | 330 |
|
4 | 331 |
if AllInactive then |
1343 | 332 |
case step of |
12928 | 333 |
stInit: |
334 |
begin |
|
13031
bef97cc310b0
Fix onEndTurn being called in multishoot
Wuzzy <Wuzzy2@mail.ru>
parents:
12938
diff
changeset
|
335 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
bef97cc310b0
Fix onEndTurn being called in multishoot
Wuzzy <Wuzzy2@mail.ru>
parents:
12938
diff
changeset
|
336 |
ScriptCall('onEndTurn'); |
15012
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14977
diff
changeset
|
337 |
delay:= delayInit; |
12928 | 338 |
inc(step) |
339 |
end; |
|
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
340 |
stDelay1: |
15012
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14977
diff
changeset
|
341 |
begin |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
342 |
if DoDelay() then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
343 |
inc(step); |
15012
dc50766f6d0c
Add tiny delay in stInit to fix some turn react problems
Wuzzy <Wuzzy2@mail.ru>
parents:
14977
diff
changeset
|
344 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
345 |
stChDmg: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
346 |
if CheckNoDamage then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
347 |
inc(step) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
348 |
else |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
349 |
begin |
14426 | 350 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
351 |
delay:= delayDamageTagShort |
|
352 |
else |
|
353 |
delay:= delayDamageTagFull; |
|
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
354 |
step:= stDelay1; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
355 |
end; |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
356 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
357 |
stSweep: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
358 |
if SweepDirty then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
359 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
360 |
SetAllToActive; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
361 |
step:= stChDmg |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
362 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
363 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
364 |
inc(step); |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
365 |
|
13757
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
366 |
stTurnStats: |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
367 |
begin |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
368 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
369 |
uStats.TurnStats; |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
370 |
inc(step) |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
371 |
end; |
6908d1e65cdc
Rip out stats code from TurnReaction and put it into new function TurnStats. Fixes buggy stats
Wuzzy <Wuzzy2@mail.ru>
parents:
13751
diff
changeset
|
372 |
|
13737
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
373 |
stChWin1: |
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
374 |
begin |
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
375 |
CheckForWin(); |
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
376 |
inc(step) |
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
377 |
end; |
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
378 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
379 |
stTurnReact: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
380 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
381 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
382 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
383 |
uStats.TurnReaction; |
13763
6fd56a26e8b8
Fix turn reaction not working properly after turn
Wuzzy <Wuzzy2@mail.ru>
parents:
13757
diff
changeset
|
384 |
uStats.TurnStatsReset; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
385 |
delay:= delayTurnReact; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
386 |
inc(step) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
387 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
388 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
389 |
inc(step, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
390 |
end; |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
391 |
|
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
392 |
stDelay2: |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
393 |
if DoDelay() then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
394 |
inc(step); |
13737
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
395 |
stChWin2: |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
396 |
begin |
7669
a85e1c167b69
I didn't want to do this since it seems less clean, but...
sheepluva
parents:
7667
diff
changeset
|
397 |
CheckForWin(); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
398 |
inc(step) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
399 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
400 |
stWater: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
401 |
if (not bBetweenTurns) and (not isInMultiShoot) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
402 |
begin |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
403 |
// Start Sudden Death water rise in the 2nd round of Sudden Death |
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset
|
404 |
if TotalRoundsPre = cSuddenDTurns + 1 then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
405 |
bWaterRising:= true; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
406 |
if bWaterRising and (cWaterRise > 0) then |
13811
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13763
diff
changeset
|
407 |
begin |
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13763
diff
changeset
|
408 |
bDuringWaterRise:= true; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
409 |
AddGear(0, 0, gtWaterUp, 0, _0, _0, 0)^.Tag:= cWaterRise; |
13811
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13763
diff
changeset
|
410 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
411 |
inc(step) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
412 |
end |
13811
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13763
diff
changeset
|
413 |
else // since we are not raising the water, another win-check isn't needed |
7667
4346566c5a58
skip second CheckForWin if water wasn't raised after first one
sheepluva
parents:
7666
diff
changeset
|
414 |
inc(step,2); |
13737
8092b54ba19d
Check for victory before stTurnReact. Fixes 382
Wuzzy <Wuzzy2@mail.ru>
parents:
13651
diff
changeset
|
415 |
stChWin3: |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
416 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
417 |
CheckForWin; |
13811
3fa9e30927f1
Fix team stats screwing up if game ends due to drowning in rising Sudden Death water
Wuzzy <Wuzzy2@mail.ru>
parents:
13763
diff
changeset
|
418 |
bDuringWaterRise:= false; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
419 |
inc(step) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
420 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
421 |
|
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
422 |
stChKing: |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
423 |
begin |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
424 |
if (not isInMultiShoot) and (CheckMinionsDie) then |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
425 |
step:= stChDmg |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
426 |
else |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
427 |
inc(step); |
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
428 |
end; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
429 |
stSuddenDeath: |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
430 |
begin |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
431 |
if ((cWaterRise <> 0) or (cHealthDecrease <> 0)) and (not (isInMultiShoot or bBetweenTurns)) then |
14419
87562a68c41f
Fix some King Mode bugs causing minions not always being properly killed
Wuzzy <Wuzzy2@mail.ru>
parents:
14415
diff
changeset
|
432 |
begin |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
433 |
// Start Sudden Death |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
434 |
if (TotalRoundsPre = cSuddenDTurns) and (not SuddenDeath) then |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
435 |
begin |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
436 |
StartSuddenDeath(); |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
437 |
delay:= delaySDStart; |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
438 |
inc(step); |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
439 |
end |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
440 |
// Show Sudden Death warning message |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
441 |
else if (TotalRoundsPre < cSuddenDTurns) and ((LastSuddenDWarn = -2) or (LastSuddenDWarn <> TotalRoundsPre)) then |
10254 | 442 |
begin |
13651
56a925256039
Add separate TotalRounds var for Lua to count the *actual* number of rounds that have been played
Wuzzy <Wuzzy2@mail.ru>
parents:
13642
diff
changeset
|
443 |
i:= cSuddenDTurns - TotalRoundsPre; |
10254 | 444 |
s:= ansistring(inttostr(i)); |
14428
7dbc3e5f8129
Also show SD warning 3 and 7 rounds before SD
Wuzzy <Wuzzy2@mail.ru>
parents:
14427
diff
changeset
|
445 |
// X rounds before SD. X = 1, 2, 3, 5, 7, 10, 15, 20, 25, 50, 100, ... |
7dbc3e5f8129
Also show SD warning 3 and 7 rounds before SD
Wuzzy <Wuzzy2@mail.ru>
parents:
14427
diff
changeset
|
446 |
if (i > 0) and ((i <= 3) or (i = 7) or ((i mod 50 = 0) or ((i <= 25) and (i mod 5 = 0)))) then |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
447 |
begin |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
448 |
if i = 1 then |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
449 |
AddCaption(trmsg[sidRoundSD], capcolDefault, capgrpGameState) |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
450 |
else |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
451 |
AddCaption(FormatA(trmsg[sidRoundsSD], s), capcolDefault, capgrpGameState); |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
452 |
delay:= delaySDWarning; |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
453 |
inc(step); |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
454 |
LastSuddenDWarn:= TotalRoundsPre; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
455 |
end |
14427
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
456 |
else |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
457 |
inc(step, 2); |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
458 |
end |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
459 |
else |
b48c270328a5
Show Sudden Death warning messages only once per round
Wuzzy <Wuzzy2@mail.ru>
parents:
14426
diff
changeset
|
460 |
inc(step, 2); |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
461 |
end |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
462 |
else |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
463 |
inc(step, 2); |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
464 |
end; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
465 |
stDelay3: |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
466 |
if DoDelay() then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
467 |
inc(step); |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
468 |
stHealth: |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
469 |
begin |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
470 |
if bBetweenTurns |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
471 |
or isInMultiShoot |
14423
234bb36d3b8c
Fix poison damage not working in first round
Wuzzy <Wuzzy2@mail.ru>
parents:
14421
diff
changeset
|
472 |
or (TotalRoundsReal = -1) then |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
473 |
inc(step) |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
474 |
else |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
475 |
begin |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
476 |
bBetweenTurns:= true; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
477 |
HealthMachine; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
478 |
step:= stChDmg |
10254 | 479 |
end; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
480 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
481 |
stSpawn: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
482 |
begin |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
483 |
if (not isInMultiShoot) then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
484 |
begin |
14789
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
485 |
tmpGear:= SpawnBoxOfSmth; |
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
486 |
if tmpGear <> nil then |
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
487 |
ScriptCall('onCaseDrop', tmpGear^.uid) |
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
488 |
else |
185f07ec4d12
New callback: onCaseDrop (called when engine MIGHT drop a crate)
Wuzzy <Wuzzy2@mail.ru>
parents:
14786
diff
changeset
|
489 |
ScriptCall('onCaseDrop'); |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
490 |
delay:= delayFinal; |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
491 |
inc(step); |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
492 |
end |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
493 |
else |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
494 |
inc(step, 2) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
495 |
end; |
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
496 |
stDelay4: |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
497 |
if DoDelay() then |
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
498 |
inc(step); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
499 |
stNTurn: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
500 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
501 |
if isInMultiShoot then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
502 |
isInMultiShoot:= false |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
503 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
504 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
505 |
// delayed till after 0.9.12 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
506 |
// reset to default zoom |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
507 |
//ZoomValue:= ZoomDefault; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
508 |
with CurrentHedgehog^ do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
509 |
if (Gear <> nil) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
510 |
and ((Gear^.State and gstAttacked) = 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
511 |
and (MultiShootAttacks > 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
512 |
OnUsedAmmo(CurrentHedgehog^); |
3697 | 513 |
|
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset
|
514 |
EndTurnCleanup; |
2376 | 515 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
516 |
FreeActionsList; // could send -left, -right and similar commands, so should be called before /nextturn |
1298 | 517 |
|
7181
0791c1f2734c
Welp. We have a bit of a problem here. Reverting the move of nextturn. But this causes a desync in scripting unless we can find a better fix.
nemo
parents:
7174
diff
changeset
|
518 |
ParseCommand('/nextturn', true); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
519 |
SwitchHedgehog; |
1298 | 520 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
521 |
AfterSwitchHedgehog; |
8349
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
522 |
bBetweenTurns:= false; |
a1dbe148f10f
move onNewTurn, onGameTick and onGameTick20 to try and avoid ParseCommand breakage after nextturn call. Needs testing, but should be safe for most scripts. Also fix locale loading.
nemo
parents:
8204
diff
changeset
|
523 |
NewTurnTick:= GameTicks + 1 |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
524 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
525 |
step:= Low(step) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
526 |
end; |
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
527 |
end |
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
528 |
else if ((GameFlags and gfInfAttack) <> 0) then |
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
529 |
begin |
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
530 |
if delay2 = 0 then |
5296
0bb518ad2da8
At mikade's request and w/ unc0rr's blessing, dramatically slash inactivity delay from 1.25s down to a tenth of a second.
nemo
parents:
5284
diff
changeset
|
531 |
delay2:= cInactDelay * 50 |
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
532 |
else |
3957 | 533 |
begin |
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
534 |
dec(delay2); |
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
535 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
536 |
if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) |
13833
c0a7ef988151
Fix teleport cursor briefly re-appearing after placing hog in hog placement phase + inf attack mode
Wuzzy <Wuzzy2@mail.ru>
parents:
13811
diff
changeset
|
537 |
and (not CurrentHedgehog^.Unplaced) |
c0a7ef988151
Fix teleport cursor briefly re-appearing after placing hog in hog placement phase + inf attack mode
Wuzzy <Wuzzy2@mail.ru>
parents:
13811
diff
changeset
|
538 |
and (not PlacingHogs) then |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset
|
539 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
540 |
if (CurrentHedgehog^.Gear^.State and gstAttacked <> 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
541 |
and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset
|
542 |
begin |
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset
|
543 |
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstChooseTarget; |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset
|
544 |
isCursorVisible := true |
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset
|
545 |
end; |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6380
diff
changeset
|
546 |
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and (not gstAttacked); |
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5501
diff
changeset
|
547 |
end; |
3957 | 548 |
if delay2 = 0 then |
549 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
550 |
if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
551 |
and (CurAmmoGear = nil) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
552 |
SweepDirty; |
9497 | 553 |
if (CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear^.State and gstHHDriven = 0) or (CurrentHedgehog^.Gear^.Damage = 0) then |
554 |
CheckNoDamage; |
|
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
555 |
AliveCount:= 0; // shorter version of check for win to allow typical step activity to proceed |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
556 |
for i:= 0 to Pred(ClansCount) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
557 |
if ClansArray[i]^.ClanHealth > 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
558 |
inc(AliveCount); |
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
559 |
if (AliveCount <= 1) and ((GameFlags and gfOneClanMode) = 0) then |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
560 |
begin |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
561 |
step:= stChDmg; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
562 |
if TagTurnTimeLeft = 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
563 |
TagTurnTimeLeft:= TurnTimeLeft; |
12322
9aa483762025
Fix sndBoring being played when force-ending turn due to victory
Wuzzy <almikes@aol.com>
parents:
12306
diff
changeset
|
564 |
GameOver:= true; |
4207
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
565 |
TurnTimeLeft:= 0 |
31e77dcf18fe
better end of turn in infinite attack mode. NEEDS TESTING.
nemo
parents:
4198
diff
changeset
|
566 |
end |
3957 | 567 |
end |
3949
4c4c0a2507cc
Add the standard delay (1.25 seconds) between attacks on inf attack mode, as well as checks for damage and win.
nemo
parents:
3946
diff
changeset
|
568 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
569 |
end; |
15 | 570 |
|
4 | 571 |
if TurnTimeLeft > 0 then |
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
572 |
if IsClockRunning() then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
573 |
begin |
14431
e72ffa27492d
Also play countdown warning sounds with low initial turn time
Wuzzy <Wuzzy2@mail.ru>
parents:
14429
diff
changeset
|
574 |
if (cHedgehogTurnTime > TurnTimeLeft) |
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
575 |
and (CurrentHedgehog^.Gear <> nil) |
12181 | 576 |
and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) |
13748
1a26c472f5ef
Don't play timer countdown sounds if in ready phase
Wuzzy <Wuzzy2@mail.ru>
parents:
13737
diff
changeset
|
577 |
and (not isGetAwayTime) and (ReadyTimeLeft = 0) then |
14431
e72ffa27492d
Also play countdown warning sounds with low initial turn time
Wuzzy <Wuzzy2@mail.ru>
parents:
14429
diff
changeset
|
578 |
if (TurnTimeLeft = 5000) and (cHedgehogTurnTime >= 10000) then |
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
579 |
PlaySoundV(sndHurry, CurrentTeam^.voicepack) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
580 |
else if TurnTimeLeft = 4000 then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
581 |
PlaySound(sndCountdown4) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
582 |
else if TurnTimeLeft = 3000 then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
583 |
PlaySound(sndCountdown3) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
584 |
else if TurnTimeLeft = 2000 then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
585 |
PlaySound(sndCountdown2) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
586 |
else if TurnTimeLeft = 1000 then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
587 |
PlaySound(sndCountdown1); |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
588 |
if ReadyTimeLeft > 0 then |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
589 |
begin |
14677
db05d9bf7466
Hide hog GUI extras in scripted cinematic, also suppress some voices
Wuzzy <Wuzzy2@mail.ru>
parents:
14593
diff
changeset
|
590 |
if (ReadyTimeLeft = 2000) and (LastVoice.snd = sndNone) and (not PlacingHogs) and (not CinematicScript) then |
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
591 |
AddVoice(sndComeonthen, CurrentTeam^.voicepack); |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
592 |
dec(ReadyTimeLeft) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
593 |
end |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
594 |
else |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
595 |
dec(TurnTimeLeft) |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
596 |
end; |
351 | 597 |
|
15620
6e72bd61002e
Disable gfMoreWind for land objects on turn end only after a fixed-time delay
Wuzzy <Wuzzy2@mail.ru>
parents:
15572
diff
changeset
|
598 |
if (TurnTimeLeft = 0) and (ReadyTimeLeft = 0) then |
6e72bd61002e
Disable gfMoreWind for land objects on turn end only after a fixed-time delay
Wuzzy <Wuzzy2@mail.ru>
parents:
15572
diff
changeset
|
599 |
inc(TimeNotInTurn) |
6e72bd61002e
Disable gfMoreWind for land objects on turn end only after a fixed-time delay
Wuzzy <Wuzzy2@mail.ru>
parents:
15572
diff
changeset
|
600 |
else |
6e72bd61002e
Disable gfMoreWind for land objects on turn end only after a fixed-time delay
Wuzzy <Wuzzy2@mail.ru>
parents:
15572
diff
changeset
|
601 |
TimeNotInTurn:= 0; |
6e72bd61002e
Disable gfMoreWind for land objects on turn end only after a fixed-time delay
Wuzzy <Wuzzy2@mail.ru>
parents:
15572
diff
changeset
|
602 |
|
2621
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset
|
603 |
if skipFlag then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
604 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
605 |
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
|
606 |
TagTurnTimeLeft:= TurnTimeLeft; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
607 |
TurnTimeLeft:= 0; |
3784
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset
|
608 |
skipFlag:= false; |
75aa91bea32b
Extend statistics collection (TeamKills, TurnSkips, TeamDamage)
burp
parents:
3775
diff
changeset
|
609 |
inc(CurrentHedgehog^.Team^.stats.TurnSkips); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
610 |
end; |
2621
956ff066f3a5
Fix desync when playing with AI via network, occuring in certain conditions
unc0rr
parents:
2619
diff
changeset
|
611 |
|
2134 | 612 |
if ((GameTicks and $FFFF) = $FFFF) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
613 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
614 |
if (not CurrentTeam^.ExtDriven) then |
5810 | 615 |
begin |
7068 | 616 |
SendIPC(_S'#'); |
5810 | 617 |
AddFileLog('hiTicks increment message sent') |
618 |
end; |
|
2134 | 619 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
620 |
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
|
621 |
begin |
0d20f6fc038a
Better diagnostics in log, even though it shouldn't matter anymore
unc0rr
parents:
10254
diff
changeset
|
622 |
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
|
623 |
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
|
624 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
625 |
end; |
7407 | 626 |
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
|
627 |
TurnClockActive:= prevtime <> TurnTimeLeft; |
14062
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13897
diff
changeset
|
628 |
inc(GameTicks); |
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13897
diff
changeset
|
629 |
if (OuchTauntTimer > 0) then |
44f20c9e6861
Add Ouch taunt for particulary damaging hits (fall, bullet, shove, hammer)
Wuzzy <Wuzzy2@mail.ru>
parents:
13897
diff
changeset
|
630 |
dec(OuchTauntTimer); |
15897
d7b53d08ad9c
Add FastForward/StopFastForward (/ff hh:mm:ss, /sff) chat commands to fast forward to a specific timestamp in a demo
S.D.
parents:
15865
diff
changeset
|
631 |
if fastForward and (GameTicks = FFGameTick) then |
d7b53d08ad9c
Add FastForward/StopFastForward (/ff hh:mm:ss, /sff) chat commands to fast forward to a specific timestamp in a demo
S.D.
parents:
15865
diff
changeset
|
632 |
ParseCommand('sff', true); |
4 | 633 |
end; |
634 |
||
3396
e5b3e5f2818e
More portal changes. Allows for a multishoot utility. Hopefully not breaking anything.
nemo
parents:
3390
diff
changeset
|
635 |
//Purpose, to reset all transient attributes toggled by a utility and clean up various gears and effects at end of turn |
1854 | 636 |
//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
|
637 |
procedure EndTurnCleanup; |
1865
ebc6dfca60d4
- nemo's patch: some animations, zero probability for infinite weapons
unc0rr
parents:
1863
diff
changeset
|
638 |
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
|
639 |
t: PGear; |
1849 | 640 |
begin |
2221 | 641 |
SpeechText:= ''; // in case it has not been consumed |
2017 | 642 |
|
1895 | 643 |
if (GameFlags and gfLowGravity) = 0 then |
4623 | 644 |
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
|
645 |
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
|
646 |
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
|
647 |
cLowGravity:= false |
4623 | 648 |
end; |
1895 | 649 |
|
2017 | 650 |
if (GameFlags and gfVampiric) = 0 then |
651 |
cVampiric:= false; |
|
652 |
||
1849 | 653 |
cDamageModifier:= _1; |
1895 | 654 |
|
655 |
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
|
656 |
begin |
1895 | 657 |
cLaserSighting:= false; |
12306
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset
|
658 |
cLaserSightingSniper:= false |
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset
|
659 |
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
|
660 |
|
41d3afaa20c7
Artillery mode, sniper rifle, speech bubble tweaks, fix of rope bug introduced by enabling hats in jump
nemo
parents:
2020
diff
changeset
|
661 |
// 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
|
662 |
if (CurrentTeam <> nil) then |
4099 | 663 |
with CurrentTeam^ do |
664 |
for i:= 0 to cMaxHHIndex do |
|
665 |
with Hedgehogs[i] do |
|
666 |
begin |
|
2045
b0588498bc3a
- Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset
|
667 |
|
4099 | 668 |
if (Gear <> nil) then |
669 |
begin |
|
670 |
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
|
671 |
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
|
672 |
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
|
673 |
Gear^.Hedgehog^.Effects[heArtillery]:= 0; |
4099 | 674 |
end; |
675 |
end; |
|
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
676 |
t:= GearsList; |
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
677 |
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
|
678 |
begin |
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
679 |
t^.PortalCounter:= 0; |
4372 | 680 |
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
|
681 |
begin |
12938
b075ad6112c9
Show subtle heal effect for healing hogs in health reset mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12928
diff
changeset
|
682 |
i:= t^.Hedgehog^.InitialHealth - t^.Health; |
4372 | 683 |
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
|
684 |
if i > 0 then |
b075ad6112c9
Show subtle heal effect for healing hogs in health reset mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12928
diff
changeset
|
685 |
HHHeal(t^.Hedgehog, i, false, $00FF0040); |
4372 | 686 |
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
|
687 |
end; |
3480
c4c3f3512404
Prevent all portal loops the guaranteed way, at least until sheepluva's tests yield something reliable.
nemo
parents:
3476
diff
changeset
|
688 |
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
|
689 |
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
|
690 |
|
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
691 |
if ((GameFlags and gfResetWeps) <> 0) and (not PlacingHogs) and (not PlacingKings) then |
4099 | 692 |
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
|
693 |
|
4099 | 694 |
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
|
695 |
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
|
696 |
RecountTeamHealth(TeamsArray[i]) |
1849 | 697 |
end; |
2045
b0588498bc3a
- Fix network (my crappy fault, triggered by nemo's patch)
unc0rr
parents:
2042
diff
changeset
|
698 |
|
4385 | 699 |
procedure DrawGears; |
700 |
var Gear: PGear; |
|
701 |
x, y: LongInt; |
|
2802 | 702 |
begin |
4385 | 703 |
Gear:= GearsList; |
704 |
while Gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
705 |
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
|
706 |
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
|
707 |
begin |
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset
|
708 |
x:= hwRound(Gear^.X) + WorldDx; |
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset
|
709 |
y:= hwRound(Gear^.Y) + WorldDy; |
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset
|
710 |
RenderGear(Gear, x, y); |
0bc81de36e08
Don't draw snow flakes spawned in land, introduce gstInvisible flag
unc0rr
parents:
5319
diff
changeset
|
711 |
end; |
4385 | 712 |
Gear:= Gear^.NextGear |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
713 |
end; |
10866 | 714 |
|
715 |
if SpeechHogNumber > 0 then |
|
716 |
DrawHHOrder(); |
|
2802 | 717 |
end; |
718 |
||
13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset
|
719 |
// 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
|
720 |
procedure DrawGearsGui; |
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
721 |
var Gear: PGear; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
722 |
x, y: LongInt; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
723 |
begin |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
724 |
Gear:= GearsList; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
725 |
while Gear <> nil do |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
726 |
begin |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
727 |
x:= hwRound(Gear^.X) + WorldDx; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
728 |
y:= hwRound(Gear^.Y) + WorldDy; |
15221
0879fba70510
Render contour of air mines when in highly opaque water
Wuzzy <Wuzzy2@mail.ru>
parents:
15191
diff
changeset
|
729 |
if Gear^.Kind = gtAirMine then |
0879fba70510
Render contour of air mines when in highly opaque water
Wuzzy <Wuzzy2@mail.ru>
parents:
15191
diff
changeset
|
730 |
RenderAirMineGuiExtras(Gear, x, y); |
14770
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14754
diff
changeset
|
731 |
RenderGearHealth(Gear, x, y); |
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
732 |
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
|
733 |
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
|
734 |
RenderHHGuiExtras(Gear, x, y); |
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
735 |
Gear:= Gear^.NextGear |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
736 |
end; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
737 |
end; |
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12192
diff
changeset
|
738 |
|
15460 | 739 |
procedure DrawFinger; |
740 |
var Gear: PGear; |
|
741 |
x, y: LongInt; |
|
742 |
begin |
|
743 |
if ((CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)) then |
|
744 |
begin |
|
745 |
Gear:= CurrentHedgehog^.Gear; |
|
746 |
x:= hwRound(Gear^.X) + WorldDx; |
|
747 |
y:= hwRound(Gear^.Y) + WorldDy; |
|
748 |
RenderFinger(Gear, x, y); |
|
749 |
end; |
|
750 |
end; |
|
751 |
||
4 | 752 |
procedure FreeGearsList; |
753 |
var t, tt: PGear; |
|
754 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
755 |
tt:= GearsList; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
756 |
GearsList:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
757 |
while tt <> nil do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
758 |
begin |
14977 | 759 |
FreeAndNilTexture(tt^.Tex); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
760 |
t:= tt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
761 |
tt:= tt^.NextGear; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
762 |
Dispose(t) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
763 |
end; |
4 | 764 |
end; |
765 |
||
15742 | 766 |
procedure AddLandSentries(count: LongWord); |
15731 | 767 |
var i, x, y, swapIndex: LongInt; |
768 |
positions: array[0..1023] of TPoint; |
|
769 |
positionsCount, tries: LongInt; |
|
770 |
begin |
|
771 |
positionsCount := 0; |
|
772 |
tries := 2048; |
|
773 |
while (positionsCount < 1024) and (tries > 0) do |
|
774 |
begin |
|
775 |
x := leftX + cHHRadius + GetRandom(rightX - leftX - 2 * cHHRadius); |
|
776 |
y := cHHRadius; |
|
777 |
||
778 |
while y < cWaterLine do |
|
779 |
begin |
|
780 |
repeat |
|
781 |
inc(y, cHHRadius) |
|
782 |
until (y >= cWaterLine) or (CountLand(x, y, cHHRadius - 1, 1, lfAll, 0) = 0); |
|
783 |
||
784 |
if y < cWaterLine then |
|
785 |
begin |
|
786 |
repeat |
|
787 |
inc(y) |
|
788 |
until (y >= cWaterLine) or (CountLand(x, y, cHHRadius - 1, 1, lfAll, 0) <> 0); |
|
789 |
||
790 |
if y < cWaterLine then |
|
791 |
begin |
|
792 |
swapIndex := GetRandom(positionsCount + 1); |
|
793 |
if swapIndex = positionsCount then |
|
794 |
begin |
|
795 |
positions[positionsCount].X := x; |
|
796 |
positions[positionsCount].Y := y; |
|
797 |
end |
|
798 |
else |
|
799 |
begin |
|
800 |
positions[positionsCount].X := positions[swapIndex].X; |
|
801 |
positions[positionsCount].Y := positions[swapIndex].Y; |
|
802 |
positions[swapIndex].X := x; |
|
803 |
positions[swapIndex].Y := y; |
|
804 |
end; |
|
805 |
inc(positionsCount); |
|
806 |
if positionsCount >= 1024 then |
|
807 |
break; |
|
808 |
inc(y, cHHRadius * 2) |
|
809 |
end |
|
810 |
else |
|
811 |
dec(tries) |
|
812 |
end |
|
813 |
else |
|
814 |
dec(tries) |
|
815 |
end; |
|
816 |
end; |
|
817 |
||
818 |
for i := 0 to min(count, positionsCount) - 1 do |
|
15846 | 819 |
AddGear(positions[i].X, positions[i].Y - cHHRadius, gtSentry, 0, _0, _0, 0)^.Hedgehog := nil; |
15731 | 820 |
end; |
821 |
||
15742 | 822 |
function AddWaterSentries(count: Longword): Longword; |
823 |
var i, x, y: LongInt; |
|
824 |
positions: array[0..255] of TPoint; |
|
825 |
positionsCount, tries: LongInt; |
|
826 |
begin |
|
827 |
AddWaterSentries := 0; |
|
828 |
positionsCount := 0; |
|
829 |
tries := 512; |
|
830 |
||
831 |
while (positionsCount < 256) and (tries > 0) do |
|
832 |
begin |
|
833 |
x := leftX + cHHRadius + GetRandom(rightX - leftX - 2 * cHHRadius); |
|
834 |
y := cWaterLine - 3 * cHHRadius; |
|
835 |
if (CountLand(x, y, cHHRadius - 1, 1, lfAll, 0) = 0) then |
|
836 |
begin |
|
837 |
positions[positionsCount].X := x; |
|
838 |
positions[positionsCount].Y := y; |
|
839 |
inc(positionsCount); |
|
840 |
if positionsCount >= 256 then |
|
841 |
break; |
|
842 |
end; |
|
843 |
end; |
|
844 |
||
845 |
for i := 0 to min(count, positionsCount) - 1 do |
|
846 |
begin |
|
15846 | 847 |
AddGear(positions[i].X, positions[i].Y - cHHRadius, gtSentry, 0, _0, _0, 0)^.Hedgehog := nil; |
15742 | 848 |
inc(AddWaterSentries); |
849 |
end; |
|
850 |
end; |
|
851 |
||
10 | 852 |
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
|
853 |
var p,i,j,t,h,unplaced: Longword; |
10494 | 854 |
rx, ry: LongInt; |
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
855 |
rdx, rdy: hwFloat; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
856 |
Gear: PGear; |
4 | 857 |
begin |
498 | 858 |
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
|
859 |
|
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
|
860 |
i:= 0; |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
861 |
unplaced:= 0; |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
862 |
while (i < cLandMines) and (unplaced < 4) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
863 |
begin |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
864 |
Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0); |
15865 | 865 |
Gear^.Hedgehog := nil; |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
866 |
FindPlace(Gear, false, 0, LAND_WIDTH); |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
867 |
|
10510 | 868 |
if Gear = nil then |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
869 |
inc(unplaced) |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
870 |
else |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
871 |
unplaced:= 0; |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
872 |
|
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
|
873 |
inc(i) |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
874 |
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
|
875 |
|
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
|
876 |
i:= 0; |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
877 |
unplaced:= 0; |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
878 |
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
|
879 |
begin |
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
880 |
Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0); |
15865 | 881 |
Gear^.Hedgehog := nil; |
4148
eaff5615f976
Decouple forts from divide/mines/explosives, since those can be set individually these days
henek
parents:
4143
diff
changeset
|
882 |
FindPlace(Gear, false, 0, LAND_WIDTH); |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
883 |
|
10510 | 884 |
if Gear = nil then |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
885 |
inc(unplaced) |
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
886 |
else |
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset
|
887 |
begin |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
888 |
unplaced:= 0; |
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset
|
889 |
AddCI(Gear) |
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset
|
890 |
end; |
10236
8fa1ccfba752
- Increase limits on number of mines and explosives in game scheme
unc0rr
parents:
10124
diff
changeset
|
891 |
|
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
|
892 |
inc(i) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
893 |
end; |
1895 | 894 |
|
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
|
895 |
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
|
896 |
j:= 0; |
15191
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15190
diff
changeset
|
897 |
p:= 0; // 0: good position, 1: bad position. |
10818
f642a28cab0c
Add placement of airmines in engine outside of hog proximity. Has a bug, only protecting 1st team. Also fix a spelling error and rename gstHHChooseTarget to gstChooseTarget
nemo
parents:
10789
diff
changeset
|
898 |
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
|
899 |
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
|
900 |
Gear:= AddGear(0, 0, gtAirMine, 0, _0, _0, 0); |
13570 | 901 |
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
|
902 |
begin |
13570 | 903 |
p:= 0; |
14585
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14493
diff
changeset
|
904 |
if (hasBorder) or (WorldEdge = weBounce) then |
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14493
diff
changeset
|
905 |
rx:= leftX+GetRandom(rightX-leftX-16)+8 |
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14493
diff
changeset
|
906 |
else |
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14493
diff
changeset
|
907 |
rx:= leftX+GetRandom(rightX-leftX+400)-200; |
13570 | 908 |
if hasBorder then |
909 |
ry:= topY+GetRandom(LAND_HEIGHT-topY-16)+8 |
|
910 |
else |
|
14585
599f136d4f32
Don't try to spawn air mines beyond the bounce world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
14493
diff
changeset
|
911 |
ry:= topY+GetRandom(LAND_HEIGHT-topY+400)-200; |
13570 | 912 |
Gear^.X:= int2hwFloat(CalcWorldWrap(rx,Gear^.Radius)); |
913 |
Gear^.Y:= int2hwFloat(ry); |
|
914 |
if CheckLandValue(rx, ry, $FFFF) and |
|
915 |
(TestCollisionYwithGear(Gear,-1) = 0) and |
|
916 |
(TestCollisionXwithGear(Gear, 1) = 0) and |
|
917 |
(TestCollisionXwithGear(Gear,-1) = 0) and |
|
918 |
(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
|
919 |
begin |
13570 | 920 |
t:= 0; |
921 |
while (t < TeamsCount) and (p = 0) do |
|
922 |
begin |
|
923 |
h:= 0; |
|
924 |
with TeamsArray[t]^ do |
|
13571 | 925 |
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
|
926 |
begin |
13570 | 927 |
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
|
928 |
begin |
13570 | 929 |
rdx:=Gear^.X-Hedgehogs[h].Gear^.X; |
930 |
rdy:=Gear^.Y-Hedgehogs[h].Gear^.Y; |
|
931 |
if (Gear^.Angle < $FFFFFFFF) and |
|
932 |
((rdx.Round+rdy.Round < Gear^.Angle) and |
|
933 |
(hwRound(hwSqr(rdx) + hwSqr(rdy)) < sqr(Gear^.Angle))) then |
|
934 |
begin |
|
935 |
p:= 1 |
|
936 |
end |
|
937 |
end; |
|
938 |
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
|
939 |
end; |
13570 | 940 |
inc(t) |
941 |
end; |
|
942 |
if p = 0 then |
|
943 |
begin |
|
944 |
inc(i); |
|
945 |
AddFileLog('Placed Air Mine @ (' + inttostr(rx) + ',' + inttostr(ry) + ')'); |
|
946 |
if i < cAirMines then |
|
15865 | 947 |
Gear:= AddGear(0, 0, gtAirMine, 0, _0, _0, 0); |
948 |
Gear^.Hedgehog := nil |
|
13570 | 949 |
end |
15191
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15190
diff
changeset
|
950 |
end |
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15190
diff
changeset
|
951 |
else |
3cc1a79de3fd
Fix air mine spawning inside land if land is almost completely full
Wuzzy <Wuzzy2@mail.ru>
parents:
15190
diff
changeset
|
952 |
p:= 1; |
13570 | 953 |
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
|
954 |
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
|
955 |
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
|
956 |
|
15742 | 957 |
if cSentries > 10 then |
958 |
AddLandSentries(cSentries - AddWaterSentries(cSentries div 10)) |
|
959 |
else |
|
960 |
AddLandSentries(cSentries); |
|
15667 | 961 |
|
1895 | 962 |
if (GameFlags and gfLowGravity) <> 0 then |
4623 | 963 |
begin |
3355
dc9e61e67484
cWindSpeed recalculation assumed GetRandom returns a value between 0.0-1.0 while in fact is in the 0.0-0.5 range; Halve cMaxWindSpeed to compensate.
palewolf
parents:
3350
diff
changeset
|
964 |
cGravity:= cMaxWindSpeed; |
11887
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset
|
965 |
cGravityf:= 0.00025; |
083c12795632
Show symbols at bottom right while extra damage / low grav. are active
Wuzzy <almikes@aol.com>
parents:
11881
diff
changeset
|
966 |
cLowGravity:= true |
4623 | 967 |
end; |
1895 | 968 |
|
2017 | 969 |
if (GameFlags and gfVampiric) <> 0 then |
970 |
cVampiric:= true; |
|
971 |
||
1895 | 972 |
Gear:= GearsList; |
973 |
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
|
974 |
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
|
975 |
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
|
976 |
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
|
977 |
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
|
978 |
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
|
979 |
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
|
980 |
Effects[heInvulnerable]:= 1; |
1895 | 981 |
|
982 |
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
|
983 |
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
|
984 |
|
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
|
985 |
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
|
986 |
begin |
f415b3e0f3b9
Burn a random number in the override. Make sure cirbuf is reset.
nemo
parents:
7519
diff
changeset
|
987 |
rx:= GetRandom(rightX-leftX)+leftX; |
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
988 |
ry:= GetRandom(LAND_HEIGHT-topY)+topY; |
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
989 |
rdx:= _90-(GetRandomf*_360); |
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
990 |
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
|
991 |
Gear:= AddGear(rx, ry, gtGenericFaller, gstInvisible, rdx, rdy, $FFFFFFFF); |
14593
34e810295d08
Remove a bunch of dead out-commented code
Wuzzy <Wuzzy2@mail.ru>
parents:
14585
diff
changeset
|
992 |
// This allows this generic faller to be displaced randomly by events |
13214
9c81e34f1933
gtGenericFaller: Use Tag=1 to allow gtGenericFaller to be displaced randomly. Otherwise it is left alone
Wuzzy <Wuzzy2@mail.ru>
parents:
13171
diff
changeset
|
993 |
Gear^.Tag:= 1; |
7406
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
994 |
end; |
1fe2c821f9bf
Try avoiding spamming the log by retaining the gears. untested.
nemo
parents:
7400
diff
changeset
|
995 |
|
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
|
996 |
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
|
997 |
snowLeft:= -(snowRight-LAND_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
|
998 |
|
9768
08799c901a42
Add rubber utility. Graphics are still incomplete. Also flag snow/ice in theme config.
nemo
parents:
9764
diff
changeset
|
999 |
if (not hasBorder) and cSnow then |
7721 | 1000 |
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
|
1001 |
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
|
1002 |
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
|
1003 |
ry:=GetRandom(750); |
10494 | 1004 |
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
|
1005 |
end |
4 | 1006 |
end; |
1007 |
||
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1008 |
// sort clans horizontally (bubble-sort, because why not) |
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1009 |
procedure SortHHsByClan(); |
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1010 |
var n, newn, i, j, k, p: LongInt; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1011 |
ar, clar: array[0..Pred(cMaxHHs)] of PHedgehog; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1012 |
Count, clCount: Longword; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1013 |
tmpX, tmpY: hwFloat; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1014 |
hh1, hh2: PHedgehog; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1015 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1016 |
Count:= 0; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1017 |
// add hedgehogs to the array in clan order |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1018 |
for p:= 0 to (ClansCount - 1) do |
11734 | 1019 |
with SpawnClansArray[p]^ do |
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1020 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1021 |
// count hogs in this clan |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1022 |
clCount:= 0; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1023 |
for j:= 0 to Pred(TeamsNumber) do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1024 |
with Teams[j]^ do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1025 |
for i:= 0 to cMaxHHIndex do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1026 |
if Hedgehogs[i].Gear <> nil then |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1027 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1028 |
clar[clCount]:= @Hedgehogs[i]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1029 |
inc(clCount); |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1030 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1031 |
|
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1032 |
// shuffle all hogs of this clan |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1033 |
for i:= 0 to clCount - 1 do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1034 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1035 |
j:= GetRandom(clCount); |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1036 |
k:= GetRandom(clCount); |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1037 |
if clar[j] <> clar[k] then |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1038 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1039 |
hh1:= clar[j]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1040 |
clar[j]:= clar[k]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1041 |
clar[k]:= hh1; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1042 |
end; |
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 |
// add clan's hog to sorting array |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1046 |
for i:= 0 to clCount - 1 do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1047 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1048 |
ar[Count]:= clar[i]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1049 |
inc(Count); |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1050 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1051 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1052 |
|
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1053 |
|
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1054 |
// bubble-sort hog array |
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1055 |
n:= Count - 1; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1056 |
|
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1057 |
repeat |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1058 |
newn:= 0; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1059 |
for i:= 1 to n do |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1060 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1061 |
hh1:= ar[i-1]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1062 |
hh2:= ar[i]; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1063 |
if hwRound(hh1^.Gear^.X) > hwRound(hh2^.Gear^.X) then |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1064 |
begin |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1065 |
tmpX:= hh1^.Gear^.X; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1066 |
tmpY:= hh1^.Gear^.Y; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1067 |
hh1^.Gear^.X:= hh2^.Gear^.X; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1068 |
hh1^.Gear^.Y:= hh2^.Gear^.Y; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1069 |
hh2^.Gear^.X:= tmpX; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1070 |
hh2^.Gear^.Y:= tmpY; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1071 |
newn:= i; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1072 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1073 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1074 |
n:= newn; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1075 |
until n = 0; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1076 |
|
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1077 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1078 |
|
4 | 1079 |
procedure AssignHHCoords; |
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1080 |
var i, t, p, j, x, y: LongInt; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1081 |
ar: array[0..Pred(cMaxHHs)] of PHedgehog; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1082 |
Count: Longword; |
11896
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1083 |
divide, sectionDivide: boolean; |
4 | 1084 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1085 |
if (GameFlags and gfPlaceHog) <> 0 then |
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1086 |
PlacingHogs:= true |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1087 |
else if (GameFlags and gfKing) <> 0 then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1088 |
PlacingKings:= true; |
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1089 |
|
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1090 |
divide:= ((GameFlags and gfDivideTeams) <> 0); |
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1091 |
|
11896
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1092 |
(* sectionDivide will determine the mode of hog distribution |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1093 |
* |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1094 |
* On generated maps or maps not designed with divided mode in mind, |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1095 |
* using spawning sections can be problematic, because some sections may |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1096 |
* contain too little land surface for sensible spawning. |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1097 |
* |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1098 |
* if sectionDivide is true, the map will be sliced into equal-width sections |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1099 |
* and one team spawned in each |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1100 |
* if false, the hogs will be spawned normally and sorted by teams after |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1101 |
* |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1102 |
*) |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1103 |
|
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1104 |
// TODO: there might be a smarter way to decide if dividing clans into equal-width map sections makes sense |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1105 |
// e.g. by checking if there is enough spawn area in each section |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1106 |
sectionDivide:= divide and ((cMapGen = mgForts) or (ClansCount = 2)); |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1107 |
|
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1108 |
// divide the map into equal-width sections and put each clan in one of them |
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1109 |
if sectionDivide then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1110 |
begin |
11705 | 1111 |
t:= leftX; |
11700
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset
|
1112 |
for p:= 0 to (ClansCount - 1) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1113 |
begin |
11734 | 1114 |
with SpawnClansArray[p]^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1115 |
for j:= 0 to Pred(TeamsNumber) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1116 |
with Teams[j]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1117 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1118 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1119 |
if (Gear <> nil) and (Gear^.X.QWordValue = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1120 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1121 |
if PlacingHogs then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1122 |
Unplaced:= true |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1123 |
else |
11705 | 1124 |
FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; |
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1125 |
if PlacingKings and King then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1126 |
UnplacedKing:= true; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1127 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1128 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1129 |
Gear^.Pos:= GetRandom(49); |
11700
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset
|
1130 |
// 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
|
1131 |
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
|
1132 |
Gear^.dX.isNegative:= (p <> 0) |
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset
|
1133 |
else |
ea1097d7bd27
"divided teams" modifier will now work with more than 2 teams!
sheepluva
parents:
11532
diff
changeset
|
1134 |
Gear^.dX.isNegative:= (GetRandom(2) = 1); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1135 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1136 |
end; |
11705 | 1137 |
inc(t, playWidth div ClansCount); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1138 |
end |
11477
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1139 |
end |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1140 |
else // mix hedgehogs |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1141 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1142 |
Count:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1143 |
for p:= 0 to Pred(TeamsCount) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1144 |
with TeamsArray[p]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1145 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1146 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1147 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1148 |
if (Gear <> nil) and (Gear^.X.QWordValue = 0) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1149 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1150 |
ar[Count]:= @Hedgehogs[i]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1151 |
inc(Count) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1152 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1153 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1154 |
while (Count > 0) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1155 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1156 |
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
|
1157 |
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
|
1158 |
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
|
1159 |
else |
11805
42c11b73f68e
<unC0Rr> might be somewhere width used instead of rightx
sheepluva
parents:
11751
diff
changeset
|
1160 |
FindPlace(ar[i]^.Gear, false, leftX, rightX, true); |
15241
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1161 |
if PlacingKings and ar[i]^.King then |
ceb289e8a582
King Mode: Fix king placement phase not working correctly with multiple teams in a clan
Wuzzy <Wuzzy2@mail.ru>
parents:
15221
diff
changeset
|
1162 |
ar[i]^.UnplacedKing:= true; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1163 |
if ar[i]^.Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1164 |
begin |
11705 | 1165 |
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
|
1166 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1167 |
ar[i]:= ar[Count - 1]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1168 |
dec(Count) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1169 |
end |
11477
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1170 |
end; |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1171 |
for p:= 0 to Pred(TeamsCount) do |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1172 |
with TeamsArray[p]^ do |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1173 |
for i:= 0 to cMaxHHIndex do |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1174 |
with Hedgehogs[i] do |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1175 |
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
|
1176 |
begin |
e425a6eb9da3
Force locations for hogs if even TryHard fails on initial spawn.
nemo
parents:
11469
diff
changeset
|
1177 |
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
|
1178 |
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
|
1179 |
end; |
8c95d5a4366c
Tweak the hole carving to become less agressive about spacing if random points keep failing.
nemo
parents:
11477
diff
changeset
|
1180 |
// 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
|
1181 |
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
|
1182 |
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
|
1183 |
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
|
1184 |
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
|
1185 |
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
|
1186 |
begin |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1187 |
// Get flower position |
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1188 |
x:= hwRound(Gear^.X) - SpritesData[sprTargetBee].Width div 2; |
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1189 |
y:= hwRound(Gear^.Y) - SpritesData[sprTargetBee].Height div 2; |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1190 |
// Calculate offset from map boundaries and border |
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1191 |
if hasBorder then |
15190
f532203c5ceb
Fix mapgen flowers being slightly offset on X axis
Wuzzy <Wuzzy2@mail.ru>
parents:
15180
diff
changeset
|
1192 |
x:= max(min(x, RightX - SpritesData[sprTargetBee].Width - cBorderWidth), LeftX + cBorderWidth) |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1193 |
else |
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1194 |
x:= max(min(x, RightX - SpritesData[sprTargetBee].Width), LeftX); |
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1195 |
y:= max(y, TopY); |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1196 |
|
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1197 |
// Place flower |
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1198 |
ForcePlaceOnLand(x, y, sprTargetBee, 0, lfBasic, $FFFFFFFF, false, false, false); |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1199 |
|
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1200 |
// Place hog |
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1201 |
Gear^.Y:= int2hwFloat(hwRound(Gear^.Y) - (SpritesData[sprTargetBee].Height div 2) - Gear^.Radius); |
12447
ac710bb12fbb
Add checkins so that spawning on top of things is possible too
nemo
parents:
12322
diff
changeset
|
1202 |
AddCI(Gear); |
11503 | 1203 |
Gear^.State:= Gear^.State and (not gsttmpFlag); |
15180
fcd697bce2a8
Fix mapgen flowers being placed into indestructible map border
Wuzzy <Wuzzy2@mail.ru>
parents:
15128
diff
changeset
|
1204 |
|
15128
b4a0dc4e85e8
Ensure the flowers get placed within map bounds
Wuzzy <Wuzzy2@mail.ru>
parents:
15086
diff
changeset
|
1205 |
AddFileLog('Placed flower for hog at coordinates (' + inttostr(x) + ',' + inttostr(y) + ')') |
11702
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1206 |
end; |
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1207 |
|
08cbd57ffb1a
divided teams: better horizontal clan distribution
sheepluva
parents:
11700
diff
changeset
|
1208 |
|
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1209 |
// divided teams: sort the hedgehogs from left to right by clan and shuffle clan members |
11896
cb36d6df3814
reenable divided-mode spawning hack^Wtweak, that was accidently removed in 34ede05e4d4f
sheepluva
parents:
11895
diff
changeset
|
1210 |
if divide and (not sectionDivide) then |
11703
607e2e43acf0
cleaning up team divide mode code from last night a little
sheepluva
parents:
11702
diff
changeset
|
1211 |
SortHHsByClan(); |
4 | 1212 |
end; |
1213 |
||
14786
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1214 |
// Set random pos for all hogs so their animations have different starting points |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1215 |
procedure RandomizeHHAnim; |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1216 |
var i, j, p: LongInt; |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1217 |
begin |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1218 |
for p:= 0 to (ClansCount - 1) do |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1219 |
with SpawnClansArray[p]^ do |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1220 |
for j:= 0 to Pred(TeamsNumber) do |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1221 |
with Teams[j]^ do |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1222 |
for i:= 0 to cMaxHHIndex do |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1223 |
if (Hedgehogs[i].Gear <> nil) then |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1224 |
Hedgehogs[i].Gear^.Pos:= GetRandom(19); |
ba8dd081359d
Fix map preview not matching actual map
Wuzzy <Wuzzy2@mail.ru>
parents:
14780
diff
changeset
|
1225 |
end; |
3963
6090d2a2472e
New Weapon: Resurrector (TODO: ammo icon + sprites)
Tobias Neumann <mail@tobias-neumann.eu>
parents:
3957
diff
changeset
|
1226 |
|
1433 | 1227 |
{procedure AmmoFlameWork(Ammo: PGear); |
79 | 1228 |
var t: PGear; |
1229 |
begin |
|
1230 |
t:= GearsList; |
|
1231 |
while t <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1232 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1233 |
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
|
1234 |
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
|
1235 |
begin |
2017 | 1236 |
ApplyDamage(t, 5); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1237 |
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
|
1238 |
t^.dY:= - _0_25; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1239 |
t^.Active:= true; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1240 |
DeleteCI(t); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1241 |
FollowGear:= t |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1242 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1243 |
t:= t^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1244 |
end; |
1433 | 1245 |
end;} |
79 | 1246 |
|
16 | 1247 |
|
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset
|
1248 |
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content, cnt: Longword): PGear; |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1249 |
var gear: PGear; |
3730 | 1250 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1251 |
gear := AddGear(x, y, gtCase, 0, _0, _0, 0); |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1252 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1253 |
FollowGear:= gear; |
3734 | 1254 |
cCaseFactor := 0; |
1255 |
||
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1256 |
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
|
1257 |
content := ord(High(TAmmoType)); |
3734 | 1258 |
|
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1259 |
gear^.Power:= cnt; |
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7335
diff
changeset
|
1260 |
|
3734 | 1261 |
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
|
1262 |
HealthCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1263 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1264 |
gear^.Pos := posCaseHealth; |
14770
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14754
diff
changeset
|
1265 |
gear^.RenderHealth:= true; |
10506 | 1266 |
// health crate is smaller than the other crates |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1267 |
gear^.Radius := cCaseHealthRadius; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1268 |
gear^.Health := content; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1269 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1270 |
AddCaption(GetEventString(eidNewHealthPack), capcolDefault, capgrpAmmoInfo); |
3734 | 1271 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1272 |
AmmoCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1273 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1274 |
gear^.Pos := posCaseAmmo; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1275 |
gear^.AmmoType := TAmmoType(content); |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1276 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1277 |
AddCaption(GetEventString(eidNewAmmoPack), capcolDefault, capgrpAmmoInfo); |
3734 | 1278 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1279 |
UtilityCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1280 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1281 |
gear^.Pos := posCaseUtility; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1282 |
gear^.AmmoType := TAmmoType(content); |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1283 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1284 |
AddCaption(GetEventString(eidNewUtilityPack), capColDefault, capgrpAmmoInfo); |
3734 | 1285 |
end; |
1286 |
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
|
1287 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1288 |
if ( (x = 0) and (y = 0) ) then |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1289 |
FindPlace(gear, true, 0, LAND_WIDTH); |
3750
3aa85b5f3318
SpawnCustomCrateAt: spawn crate at random position for x=y=0, also let it return the gear, and luabindings the gear uid
burp
parents:
3749
diff
changeset
|
1290 |
|
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1291 |
SpawnCustomCrateAt := gear; |
3730 | 1292 |
end; |
1293 |
||
5343 | 1294 |
function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean): PGear; |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1295 |
var gear: PGear; |
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset
|
1296 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1297 |
gear := AddGear(x, y, gtCase, 0, _0, _0, 0); |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1298 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1299 |
FollowGear:= gear; |
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset
|
1300 |
cCaseFactor := 0; |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1301 |
gear^.Pos := posCaseDummy; |
9317
a04c30940d2d
use SDL2 as ifdef symbol because we're not really sdl1.3 compatible, change the compatibility layer, drop unused code, add some documentation
koda
parents:
9295
diff
changeset
|
1302 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1303 |
if explode then |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1304 |
gear^.Pos := gear^.Pos + posCaseExplode; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1305 |
if poison then |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1306 |
gear^.Pos := gear^.Pos + posCasePoison; |
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset
|
1307 |
|
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
|
1308 |
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
|
1309 |
HealthCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1310 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1311 |
gear^.Pos := gear^.Pos + posCaseHealth; |
14770
533ac9774279
Add key to display extra gear info tags
Wuzzy <Wuzzy2@mail.ru>
parents:
14754
diff
changeset
|
1312 |
gear^.RenderHealth:= true; |
14780 | 1313 |
gear^.Karma:= 2; |
10506 | 1314 |
// health crate is smaller than the other crates |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1315 |
gear^.Radius := cCaseHealthRadius; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1316 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1317 |
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
|
1318 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1319 |
AmmoCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1320 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1321 |
gear^.Pos := gear^.Pos + posCaseAmmo; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1322 |
if(FinishedTurnstotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1323 |
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
|
1324 |
end; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1325 |
UtilityCrate: |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1326 |
begin |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1327 |
gear^.Pos := gear^.Pos + posCaseUtility; |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1328 |
if(FinishedTurnsTotal > -1) then |
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1329 |
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
|
1330 |
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
|
1331 |
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
|
1332 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1333 |
if ( (x = 0) and (y = 0) ) then |
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1334 |
FindPlace(gear, true, 0, LAND_WIDTH); |
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset
|
1335 |
|
14493
8d5034f7cc19
Disable caption and FollowGear for crates that spawn before 1st turn (useful for missions)
Wuzzy <Wuzzy2@mail.ru>
parents:
14431
diff
changeset
|
1336 |
SpawnFakeCrateAt := gear; |
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5296
diff
changeset
|
1337 |
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
|
1338 |
|
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1339 |
procedure StartSuddenDeath(); |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1340 |
begin |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1341 |
if SuddenDeath then |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1342 |
exit; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1343 |
|
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1344 |
SuddenDeath:= true; |
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1345 |
SuddenDeathActive:= true; |
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1346 |
|
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1347 |
// Special effects (only w/ health decrease) |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1348 |
if cHealthDecrease <> 0 then |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1349 |
begin |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1350 |
SuddenDeathDmg:= true; |
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1351 |
// White screen flash |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1352 |
ScreenFade:= sfFromWhite; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1353 |
ScreenFadeValue:= sfMax; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1354 |
ScreenFadeSpeed:= 1; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1355 |
|
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1356 |
// Clouds, flakes, sky tint |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1357 |
ChangeToSDClouds; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1358 |
ChangeToSDFlakes; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1359 |
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
|
1360 |
end; |
12920
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1361 |
|
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1362 |
// Disable tardis |
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1363 |
Ammoz[amTardis].SkipTurns:= 9999; |
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1364 |
Ammoz[amTardis].Probability:= 0; |
21827fc9ca98
Fix timebox being usable in SD w/ damage=0
Wuzzy <Wuzzy2@mail.ru>
parents:
12918
diff
changeset
|
1365 |
|
13642
3d14950641a4
Refactor text color variable names, export 2 color values to Lua
Wuzzy <Wuzzy2@mail.ru>
parents:
13634
diff
changeset
|
1366 |
AddCaption(trmsg[sidSuddenDeath], capcolDefault, capgrpGameState); |
12918
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1367 |
ScriptCall('onSuddenDeath'); |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1368 |
playSound(sndSuddenDeath); |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1369 |
StopMusic; |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1370 |
if SDMusicFN <> '' then |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1371 |
PlayMusic |
6deb29364723
Refactor Sudden Death starting into own function
Wuzzy <Wuzzy2@mail.ru>
parents:
12916
diff
changeset
|
1372 |
end; |
2726 | 1373 |
|
2790 | 1374 |
function GearByUID(uid : Longword) : PGear; |
1375 |
var gear: PGear; |
|
1376 |
begin |
|
1377 |
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
|
1378 |
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
|
1379 |
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
|
1380 |
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
|
1381 |
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
|
1382 |
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
|
1383 |
end; |
2790 | 1384 |
gear:= GearsList; |
1385 |
while gear <> nil do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1386 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1387 |
if gear^.uid = uid then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1388 |
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
|
1389 |
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
|
1390 |
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
|
1391 |
exit |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1392 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1393 |
gear:= gear^.NextGear |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1394 |
end |
2790 | 1395 |
end; |
1396 |
||
11916
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
1397 |
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
|
1398 |
begin |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
1399 |
IsClockRunning := |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
1400 |
(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
|
1401 |
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
|
1402 |
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
|
1403 |
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
|
1404 |
or (CurrentHedgehog^.CurAmmoType = amSniperRifle)) |
15086
39067b45d0fc
Backed out changeset 96244def1cc0—It was broken
Wuzzy <Wuzzy2@mail.ru>
parents:
15085
diff
changeset
|
1405 |
and (not(isInMultiShoot and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_DoesntStopTimerInMultiShoot) <> 0))) |
14415
d670e4efe1ed
Lua API: SetTurnTimePaused/GetTurnTimePaused
Wuzzy <Wuzzy2@mail.ru>
parents:
14370
diff
changeset
|
1406 |
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
|
1407 |
end; |
38fa4583e7f3
Make timer gray while the time is not running or while it is paused
Wuzzy <almikes@aol.com>
parents:
11915
diff
changeset
|
1408 |
|
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
|
1409 |
|
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
|
1410 |
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
|
1411 |
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
|
1412 |
s:= s; // avoid compiler hint |
7805 | 1413 |
if not isExternalSource then |
7068 | 1414 |
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
|
1415 |
uStats.Skipped; |
13171
9f80c08cdae9
Lua API: Add onSkipTurn callback, called when hog skips
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset
|
1416 |
skipFlag:= true; |
9f80c08cdae9
Lua API: Add onSkipTurn callback, called when hog skips
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset
|
1417 |
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
|
1418 |
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
|
1419 |
|
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
|
1420 |
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
|
1421 |
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
|
1422 |
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
|
1423 |
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
|
1424 |
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
|
1425 |
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
|
1426 |
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
|
1427 |
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
|
1428 |
i:= 0; |
4469 | 1429 |
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
|
1430 |
x:= byte(s[1]); // speech type |
4469 | 1431 |
if x < 4 then |
1432 |
begin |
|
1433 |
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
|
1434 |
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
|
1435 |
h:= byte(s[3]) // target hog |
10490 | 1436 |
else |
1437 |
h:= 0 |
|
4469 | 1438 |
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
|
1439 |
// 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
|
1440 |
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
|
1441 |
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
|
1442 |
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
|
1443 |
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
|
1444 |
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
|
1445 |
text:= copy(s, 3, Length(s) - 1) |
4468 | 1446 |
else text:= copy(s, 2, Length(s) - 1); |
1447 |
||
9818 | 1448 |
if text = '' then text:= '...'; |
1449 |
||
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
|
1450 |
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
|
1451 |
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
|
1452 |
// if team matches current hedgehog team, default to current hedgehog |
14799
bbec6b28d072
Fix bugs when entering speech bubble commands during hog placement phase
Wuzzy <Wuzzy2@mail.ru>
parents:
14789
diff
changeset
|
1453 |
if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) and (not CurrentHedgehog^.Unplaced) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6543
diff
changeset
|
1454 |
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
|
1455 |
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
|
1456 |
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
|
1457 |
// 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
|
1458 |
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
|
1459 |
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
|
1460 |
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
|
1461 |
begin |
14799
bbec6b28d072
Fix bugs when entering speech bubble commands during hog placement phase
Wuzzy <Wuzzy2@mail.ru>
parents:
14789
diff
changeset
|
1462 |
if (TeamsArray[t]^.Hedgehogs[j].Gear <> nil) and (not TeamsArray[t]^.Hedgehogs[j].Unplaced) then |
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
|
1463 |
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
|
1464 |
inc(c); |
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
|
1465 |
if (i=0) or (i=c) then |
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
|
1466 |
hh:= @TeamsArray[t]^.Hedgehogs[j] |
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
|
1467 |
end; |
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
|
1468 |
inc(j) |
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
|
1469 |
end |
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
|
1470 |
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
|
1471 |
if hh <> 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
|
1472 |
begin |
4784 | 1473 |
Gear:= AddVisualGear(0, 0, vgtSpeechBubble); |
1474 |
if Gear <> nil then |
|
1475 |
begin |
|
1476 |
Gear^.Hedgehog:= hh; |
|
1477 |
Gear^.Text:= text; |
|
1478 |
Gear^.FrameTicks:= x |
|
9764
8dc9d268330f
revert r938d1c08d0d1 in favour of putting it in the chat log. I think this addresses main concern about missing text. There've been complaints in past too about conversation in bubbles not being visible in history. If the objection is that r938d1c08d0d1 offers a more æsthetic solution, I think it should augment this, be flagged, and fix the visual issues first.
nemo
parents:
9685
diff
changeset
|
1479 |
end; |
13897
aa321e51da14
make explicit for pas2c some string casts that fpc was probably doing automatically
nemo
parents:
13891
diff
changeset
|
1480 |
AddChatString(#9+Format(shortstring(trmsg[sidChatHog]), HH^.Name, text)); |
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
|
1481 |
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
|
1482 |
end |
4470
d2b8d2fc51a9
disable say, just don't do anything. trying to avoid spew on spectator join
nemo
parents:
4469
diff
changeset
|
1483 |
else if (x >= 4) 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
|
1484 |
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
|
1485 |
SpeechType:= x-3; |
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
|
1486 |
SpeechText:= text |
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
|
1487 |
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
|
1488 |
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
|
1489 |
|
3038 | 1490 |
procedure initModule; |
6543 | 1491 |
const handlers: array[TGearType] of TGearStepProcedure = ( |
6890 | 1492 |
@doStepFlame, |
1493 |
@doStepHedgehog, |
|
1494 |
@doStepMine, |
|
1495 |
@doStepCase, |
|
10829 | 1496 |
@doStepAirMine, |
6890 | 1497 |
@doStepCase, |
6543 | 1498 |
@doStepBomb, |
1499 |
@doStepShell, |
|
1500 |
@doStepGrave, |
|
1501 |
@doStepBee, |
|
1502 |
@doStepShotgunShot, |
|
1503 |
@doStepPickHammer, |
|
1504 |
@doStepRope, |
|
1505 |
@doStepDEagleShot, |
|
1506 |
@doStepDynamite, |
|
1507 |
@doStepBomb, |
|
1508 |
@doStepCluster, |
|
1509 |
@doStepShover, |
|
1510 |
@doStepFirePunch, |
|
1511 |
@doStepActionTimer, |
|
1512 |
@doStepActionTimer, |
|
1513 |
@doStepParachute, |
|
1514 |
@doStepAirAttack, |
|
1515 |
@doStepAirBomb, |
|
1516 |
@doStepBlowTorch, |
|
1517 |
@doStepGirder, |
|
1518 |
@doStepTeleport, |
|
1519 |
@doStepSwitcher, |
|
1520 |
@doStepTarget, |
|
1521 |
@doStepMortar, |
|
1522 |
@doStepWhip, |
|
1523 |
@doStepKamikaze, |
|
1524 |
@doStepCake, |
|
1525 |
@doStepSeduction, |
|
1526 |
@doStepBomb, |
|
1527 |
@doStepCluster, |
|
1528 |
@doStepBomb, |
|
1529 |
@doStepWaterUp, |
|
1530 |
@doStepDrill, |
|
1531 |
@doStepBallgun, |
|
1532 |
@doStepBomb, |
|
1533 |
@doStepRCPlane, |
|
1534 |
@doStepSniperRifleShot, |
|
1535 |
@doStepJetpack, |
|
1536 |
@doStepMolotov, |
|
1537 |
@doStepBirdy, |
|
1538 |
@doStepEggWork, |
|
1539 |
@doStepPortalShot, |
|
1540 |
@doStepPiano, |
|
1541 |
@doStepBomb, |
|
1542 |
@doStepSineGunShot, |
|
1543 |
@doStepFlamethrower, |
|
1544 |
@doStepSMine, |
|
1545 |
@doStepPoisonCloud, |
|
1546 |
@doStepHammer, |
|
1547 |
@doStepHammerHit, |
|
1548 |
@doStepResurrector, |
|
1549 |
@doStepNapalmBomb, |
|
1550 |
@doStepSnowball, |
|
1551 |
@doStepSnowflake, |
|
1552 |
@doStepLandGun, |
|
7007 | 1553 |
@doStepTardis, |
7389
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7370
diff
changeset
|
1554 |
@doStepIceGun, |
15c3fb4882df
Sorry about the slight delay in pickup. You can blame a few lame cheaters. This is to make their cheating a bit harder.
nemo
parents:
7370
diff
changeset
|
1555 |
@doStepAddAmmo, |
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7721
diff
changeset
|
1556 |
@doStepGenericFaller, |
12192 | 1557 |
@doStepKnife, |
13605
422d6062620a
hijack the duck for an attempted resurrection of the creeper. initial pass.
nemo
parents:
13571
diff
changeset
|
1558 |
@doStepCreeper, |
12898 | 1559 |
@doStepMinigun, |
15661 | 1560 |
@doStepMinigunBullet, |
15737 | 1561 |
@doStepSentryDeploy); |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1562 |
begin |
6543 | 1563 |
doStepHandlers:= handlers; |
1564 |
||
6898 | 1565 |
RegisterVariable('skip', @chSkip, false); |
1566 |
RegisterVariable('hogsay', @chHogSay, true ); |
|
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
|
1567 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1568 |
CurAmmoGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1569 |
GearsList:= nil; |
7395 | 1570 |
curHandledGear:= nil; |
1571 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1572 |
KilledHHs:= 0; |
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4790
diff
changeset
|
1573 |
SuddenDeath:= false; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1574 |
SuddenDeathDmg:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1575 |
SpeechType:= 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1576 |
skipFlag:= false; |
3697 | 1577 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1578 |
AllInactive:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2947
diff
changeset
|
1579 |
PrvInactive:= false; |
6982 | 1580 |
|
1581 |
//typed const |
|
1582 |
delay:= 0; |
|
1583 |
delay2:= 0; |
|
14421
9c7d5f595881
Longer delays between turns for better readability
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
1584 |
step:= stDelay1; |
6982 | 1585 |
upd:= 0; |
7021
0c75512a8920
adjust the scope of a few uSound variables and functions
koda
parents:
7010
diff
changeset
|
1586 |
|
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
|
1587 |
NewTurnTick:= $FFFFFFFF; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1588 |
end; |
4 | 1589 |
|
3038 | 1590 |
procedure freeModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1591 |
begin |
3615 | 1592 |
FreeGearsList(); |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2695
diff
changeset
|
1593 |
end; |
4 | 1594 |
|
2451
5affd0840927
New data files from Tiy, add gtFlame to avoidance list
nemo
parents:
2428
diff
changeset
|
1595 |
end. |