author | Xeli |
Sat, 04 Feb 2012 16:17:31 +0100 | |
changeset 6621 | cc94940fe438 |
parent 6580 | 6155187bf599 |
child 6700 | e04da46ee43c |
permissions | -rw-r--r-- |
4976 | 1 |
(* |
2 |
* Hedgewars, a free turn based strategy game |
|
3 |
* Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com> |
|
4 |
* |
|
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 |
|
8 |
* |
|
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. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
17 |
*) |
|
18 |
||
4413 | 19 |
{$INCLUDE "options.inc"} |
4976 | 20 |
|
4413 | 21 |
unit uCommandHandlers; |
22 |
||
23 |
interface |
|
24 |
||
25 |
procedure initModule; |
|
26 |
procedure freeModule; |
|
27 |
||
28 |
implementation |
|
5247 | 29 |
uses uCommands, uTypes, uVariables, uIO, uDebug, uConsts, uScript, uUtils, SDLh, uRandom, uCaptions; |
4413 | 30 |
|
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
31 |
procedure chGenCmd(var s: shortstring); |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
32 |
begin |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
33 |
case s[1] of |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
34 |
'R': if ReadyTimeLeft > 1 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
35 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
36 |
ReadyTimeLeft:= 1; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
37 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
38 |
SendIPC('c'+s); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
39 |
end |
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
40 |
end |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
41 |
end; |
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
42 |
|
4413 | 43 |
procedure chQuit(var s: shortstring); |
44 |
const prevGState: TGameState = gsConfirm; |
|
45 |
begin |
|
4751 | 46 |
s:= s; // avoid compiler hint |
5555
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
47 |
if (GameState = gsGame) or (GameState = gsChat) then |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
48 |
begin |
4413 | 49 |
prevGState:= GameState; |
5523 | 50 |
GameState:= gsConfirm; |
51 |
SDL_ShowCursor(1) |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
52 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
53 |
else |
5555
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
54 |
if GameState = gsConfirm then |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
55 |
begin |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
56 |
GameState:= prevGState; |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
57 |
SDL_ShowCursor(ord(isPaused)) |
38e3d9347910
Don't switch to gsConfirm state (which is pretty same as gsGame) when not in gsGame or gsChat state. Prevents crashes and other possible kinds of wierd behaviour.
unc0rr
parents:
5524
diff
changeset
|
58 |
end |
4413 | 59 |
end; |
60 |
||
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
61 |
procedure chForceQuit(var s: shortstring); |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
62 |
begin |
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
63 |
s:= s; // avoid compiler hint |
4751 | 64 |
GameState:= gsConfirm; |
65 |
ParseCommand('confirm', true); |
|
4413 | 66 |
end; |
67 |
||
68 |
procedure chConfirm(var s: shortstring); |
|
69 |
begin |
|
4751 | 70 |
s:= s; // avoid compiler hint |
71 |
if GameState = gsConfirm then |
|
4413 | 72 |
begin |
4751 | 73 |
SendIPC('Q'); |
74 |
GameState:= gsExit |
|
4413 | 75 |
end |
76 |
else |
|
77 |
ParseCommand('chat team', true); |
|
78 |
end; |
|
79 |
||
4751 | 80 |
procedure chHalt (var s: shortstring); |
4746
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
81 |
begin |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
82 |
s:= s; // avoid compiler hint |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
83 |
SendIPC('H'); |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
84 |
GameState:= gsExit |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
85 |
end; |
3ae448aebe7e
implemented actions for closing/enging program (needs testing over the net)
koda
parents:
4744
diff
changeset
|
86 |
|
4413 | 87 |
procedure chCheckProto(var s: shortstring); |
88 |
var i, c: LongInt; |
|
89 |
begin |
|
6001 | 90 |
if isDeveloperMode then |
91 |
begin |
|
92 |
val(s, i, c); |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
93 |
if (c <> 0) or (i = 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
94 |
exit; |
6001 | 95 |
TryDo(i <= cNetProtoVersion, 'Protocol version mismatch: engine is too old (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); |
96 |
TryDo(i >= cNetProtoVersion, 'Protocol version mismatch: engine is too new (got '+intToStr(i)+', expecting '+intToStr(cNetProtoVersion)+')', true); |
|
97 |
end |
|
4413 | 98 |
end; |
99 |
||
100 |
procedure chTeamLocal(var s: shortstring); |
|
101 |
begin |
|
102 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
103 |
if not isDeveloperMode then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
104 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
105 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
106 |
OutError(errmsgIncorrectUse + ' "/rdriven"', true); |
4413 | 107 |
CurrentTeam^.ExtDriven:= true |
108 |
end; |
|
109 |
||
110 |
procedure chGrave(var s: shortstring); |
|
111 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
112 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
113 |
OutError(errmsgIncorrectUse + ' "/grave"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
114 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
115 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
116 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
117 |
Delete(s, byte(s[0]), 1); |
4413 | 118 |
CurrentTeam^.GraveName:= s |
119 |
end; |
|
120 |
||
121 |
procedure chFort(var s: shortstring); |
|
122 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
123 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
124 |
OutError(errmsgIncorrectUse + ' "/fort"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
125 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
126 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
127 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
128 |
Delete(s, byte(s[0]), 1); |
4413 | 129 |
CurrentTeam^.FortName:= s |
130 |
end; |
|
131 |
||
132 |
procedure chFlag(var s: shortstring); |
|
133 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
134 |
if CurrentTeam = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
135 |
OutError(errmsgIncorrectUse + ' "/flag"', true); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
136 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
137 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
138 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
139 |
Delete(s, byte(s[0]), 1); |
4413 | 140 |
CurrentTeam^.flag:= s |
141 |
end; |
|
142 |
||
143 |
procedure chScript(var s: shortstring); |
|
144 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
145 |
if s[1]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
146 |
Delete(s, 1, 1); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
147 |
if s[byte(s[0])]='"' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
148 |
Delete(s, byte(s[0]), 1); |
6254
e90fb60cb46d
Force a desync if there is a script name mismatch. This avoids playing until the game desyncs due to script differences.
nemo
parents:
6245
diff
changeset
|
149 |
cScriptName:= s; |
4413 | 150 |
ScriptLoad(s) |
151 |
end; |
|
152 |
||
153 |
procedure chSetHat(var s: shortstring); |
|
154 |
begin |
|
155 |
if (not isDeveloperMode) or (CurrentTeam = nil) then exit; |
|
156 |
with CurrentTeam^ do |
|
157 |
begin |
|
158 |
if not CurrentHedgehog^.King then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
159 |
if (s = '') |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
160 |
or (((GameFlags and gfKing) <> 0) and (s = 'crown')) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
161 |
or ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then |
4413 | 162 |
CurrentHedgehog^.Hat:= 'NoHat' |
163 |
else |
|
164 |
CurrentHedgehog^.Hat:= s |
|
165 |
end; |
|
166 |
end; |
|
167 |
||
168 |
procedure chCurU_p(var s: shortstring); |
|
169 |
begin |
|
170 |
s:= s; // avoid compiler hint |
|
171 |
CursorMovementY:= -1; |
|
172 |
end; |
|
173 |
||
174 |
procedure chCurU_m(var s: shortstring); |
|
175 |
begin |
|
176 |
s:= s; // avoid compiler hint |
|
177 |
CursorMovementY:= 0; |
|
178 |
end; |
|
179 |
||
180 |
procedure chCurD_p(var s: shortstring); |
|
181 |
begin |
|
182 |
s:= s; // avoid compiler hint |
|
183 |
CursorMovementY:= 1; |
|
184 |
end; |
|
185 |
||
186 |
procedure chCurD_m(var s: shortstring); |
|
187 |
begin |
|
188 |
s:= s; // avoid compiler hint |
|
189 |
CursorMovementY:= 0; |
|
190 |
end; |
|
191 |
||
192 |
procedure chCurL_p(var s: shortstring); |
|
193 |
begin |
|
194 |
s:= s; // avoid compiler hint |
|
195 |
CursorMovementX:= -1; |
|
196 |
end; |
|
197 |
||
198 |
procedure chCurL_m(var s: shortstring); |
|
199 |
begin |
|
200 |
s:= s; // avoid compiler hint |
|
201 |
CursorMovementX:= 0; |
|
202 |
end; |
|
203 |
||
204 |
procedure chCurR_p(var s: shortstring); |
|
205 |
begin |
|
206 |
s:= s; // avoid compiler hint |
|
207 |
CursorMovementX:= 1; |
|
208 |
end; |
|
209 |
||
210 |
procedure chCurR_m(var s: shortstring); |
|
211 |
begin |
|
212 |
s:= s; // avoid compiler hint |
|
213 |
CursorMovementX:= 0; |
|
214 |
end; |
|
215 |
||
216 |
procedure chLeft_p(var s: shortstring); |
|
217 |
begin |
|
218 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
219 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
220 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
221 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
222 |
SendIPC('L'); |
4413 | 223 |
bShowFinger:= false; |
224 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
225 |
Message:= Message or (gmLeft and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
226 |
ScriptCall('onLeft'); |
4413 | 227 |
end; |
228 |
||
229 |
procedure chLeft_m(var s: shortstring); |
|
230 |
begin |
|
231 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
232 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
233 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
234 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
235 |
SendIPC('l'); |
4413 | 236 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
237 |
Message:= Message and (not (gmLeft and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
238 |
ScriptCall('onLeftUp'); |
4413 | 239 |
end; |
240 |
||
241 |
procedure chRight_p(var s: shortstring); |
|
242 |
begin |
|
243 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
244 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
245 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
246 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
247 |
SendIPC('R'); |
4413 | 248 |
bShowFinger:= false; |
249 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
250 |
Message:= Message or (gmRight and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
251 |
ScriptCall('onRight'); |
4413 | 252 |
end; |
253 |
||
254 |
procedure chRight_m(var s: shortstring); |
|
255 |
begin |
|
256 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
257 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
258 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
259 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
260 |
SendIPC('r'); |
4413 | 261 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
262 |
Message:= Message and (not (gmRight and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
263 |
ScriptCall('onRightUp'); |
4413 | 264 |
end; |
265 |
||
266 |
procedure chUp_p(var s: shortstring); |
|
267 |
begin |
|
268 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
269 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
270 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
271 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
272 |
SendIPC('U'); |
4413 | 273 |
bShowFinger:= false; |
274 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
275 |
Message:= Message or (gmUp and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
276 |
ScriptCall('onUp'); |
4413 | 277 |
end; |
278 |
||
279 |
procedure chUp_m(var s: shortstring); |
|
280 |
begin |
|
281 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
282 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
283 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
284 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
285 |
SendIPC('u'); |
4413 | 286 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
287 |
Message:= Message and (not (gmUp and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
288 |
ScriptCall('onUpUp'); |
4413 | 289 |
end; |
290 |
||
291 |
procedure chDown_p(var s: shortstring); |
|
292 |
begin |
|
293 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
294 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
295 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
296 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
297 |
SendIPC('D'); |
4413 | 298 |
bShowFinger:= false; |
299 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
300 |
Message:= Message or (gmDown and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
301 |
ScriptCall('onDown'); |
4413 | 302 |
end; |
303 |
||
304 |
procedure chDown_m(var s: shortstring); |
|
305 |
begin |
|
306 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
307 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
308 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
309 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
310 |
SendIPC('d'); |
4413 | 311 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
312 |
Message:= Message and (not (gmDown and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
313 |
ScriptCall('onDownUp'); |
4413 | 314 |
end; |
315 |
||
316 |
procedure chPrecise_p(var s: shortstring); |
|
317 |
begin |
|
318 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
319 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
320 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
321 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
322 |
SendIPC('Z'); |
4413 | 323 |
bShowFinger:= false; |
324 |
with CurrentHedgehog^.Gear^ do |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
325 |
Message:= Message or (gmPrecise and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
326 |
ScriptCall('onPrecise'); |
4413 | 327 |
end; |
328 |
||
329 |
procedure chPrecise_m(var s: shortstring); |
|
330 |
begin |
|
331 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
332 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
333 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
334 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
335 |
SendIPC('z'); |
4413 | 336 |
with CurrentHedgehog^.Gear^ do |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
337 |
Message:= Message and (not (gmPrecise and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
338 |
ScriptCall('onPreciseUp'); |
4413 | 339 |
end; |
340 |
||
341 |
procedure chLJump(var s: shortstring); |
|
342 |
begin |
|
343 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
344 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
345 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
346 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
347 |
SendIPC('j'); |
4413 | 348 |
bShowFinger:= false; |
349 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
350 |
Message:= Message or (gmLJump and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
351 |
ScriptCall('onLJump'); |
4413 | 352 |
end; |
353 |
||
354 |
procedure chHJump(var s: shortstring); |
|
355 |
begin |
|
356 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
357 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
358 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
359 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
360 |
SendIPC('J'); |
4413 | 361 |
bShowFinger:= false; |
362 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
363 |
Message:= Message or (gmHJump and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
364 |
ScriptCall('onHJump'); |
4413 | 365 |
end; |
366 |
||
367 |
procedure chAttack_p(var s: shortstring); |
|
368 |
begin |
|
369 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
370 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
371 |
exit; |
4413 | 372 |
bShowFinger:= false; |
373 |
with CurrentHedgehog^.Gear^ do |
|
374 |
begin |
|
4900 | 375 |
AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State)); |
4413 | 376 |
if ((State and gstHHDriven) <> 0) then |
377 |
begin |
|
378 |
FollowGear:= CurrentHedgehog^.Gear; |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
379 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
380 |
SendIPC('A'); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
381 |
Message:= Message or (gmAttack and InputMask); |
5247 | 382 |
ScriptCall('onAttack'); |
4413 | 383 |
end |
384 |
end |
|
385 |
end; |
|
386 |
||
387 |
procedure chAttack_m(var s: shortstring); |
|
388 |
begin |
|
389 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
390 |
if CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
391 |
exit; |
4413 | 392 |
with CurrentHedgehog^.Gear^ do |
393 |
begin |
|
394 |
if not CurrentTeam^.ExtDriven and |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
395 |
((Message and gmAttack) <> 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
396 |
SendIPC('a'); |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
397 |
Message:= Message and (not (gmAttack and InputMask)); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
398 |
ScriptCall('onAttackUp'); |
4413 | 399 |
end |
400 |
end; |
|
401 |
||
402 |
procedure chSwitch(var s: shortstring); |
|
403 |
begin |
|
404 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
405 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
406 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
407 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
408 |
SendIPC('S'); |
4413 | 409 |
bShowFinger:= false; |
410 |
with CurrentHedgehog^.Gear^ do |
|
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
411 |
Message:= Message or (gmSwitch and InputMask); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
412 |
ScriptCall('onSwitch'); |
4413 | 413 |
end; |
414 |
||
415 |
procedure chNextTurn(var s: shortstring); |
|
416 |
begin |
|
417 |
s:= s; // avoid compiler hint |
|
418 |
TryDo(AllInactive, '/nextturn called when not all gears are inactive', true); |
|
419 |
||
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
420 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
421 |
SendIPC('N'); |
4413 | 422 |
AddFileLog('Doing SwitchHedgehog: time '+inttostr(GameTicks)); |
423 |
end; |
|
424 |
||
425 |
procedure chTimer(var s: shortstring); |
|
426 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
427 |
if (s[0] <> #1) or (s[1] < '1') or (s[1] > '5') or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
428 |
exit; |
4413 | 429 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
430 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
431 |
SendIPC(s); |
4413 | 432 |
bShowFinger:= false; |
433 |
with CurrentHedgehog^.Gear^ do |
|
434 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
435 |
Message:= Message or (gmTimer and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
436 |
MsgParam:= byte(s[1]) - ord('0'); |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
437 |
ScriptCall('onTimer'); |
4413 | 438 |
end |
439 |
end; |
|
440 |
||
441 |
procedure chSlot(var s: shortstring); |
|
442 |
var slot: LongWord; |
|
443 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
444 |
if (s[0] <> #1) or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
445 |
exit; |
4413 | 446 |
slot:= byte(s[1]) - 49; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
447 |
if slot > cMaxSlotIndex then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
448 |
exit; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
449 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
450 |
SendIPC(char(byte(s[1]) + 79)); |
4413 | 451 |
bShowFinger:= false; |
452 |
with CurrentHedgehog^.Gear^ do |
|
453 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
454 |
Message:= Message or (gmSlot and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
455 |
MsgParam:= slot; |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
456 |
ScriptCall('onSlot'); |
4413 | 457 |
end |
458 |
end; |
|
459 |
||
460 |
procedure chSetWeapon(var s: shortstring); |
|
461 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
462 |
if (s[0] <> #1) or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
463 |
exit; |
4413 | 464 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
465 |
if TAmmoType(s[1]) > High(TAmmoType) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
466 |
exit; |
4413 | 467 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
468 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
469 |
SendIPC('w' + s); |
4413 | 470 |
|
471 |
with CurrentHedgehog^.Gear^ do |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
472 |
begin |
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
473 |
Message:= Message or (gmWeapon and InputMask); |
4413 | 474 |
MsgParam:= byte(s[1]); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
475 |
ScriptCall('onSetWeapon'); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
476 |
end; |
4413 | 477 |
end; |
478 |
||
479 |
procedure chTaunt(var s: shortstring); |
|
480 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
481 |
if (s[0] <> #1) or CheckNoTeamOrHH then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
482 |
exit; |
4413 | 483 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
484 |
if TWave(s[1]) > High(TWave) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
485 |
exit; |
4413 | 486 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
487 |
if not CurrentTeam^.ExtDriven then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
488 |
SendIPC('t' + s); |
4413 | 489 |
|
490 |
with CurrentHedgehog^.Gear^ do |
|
491 |
begin |
|
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4437
diff
changeset
|
492 |
Message:= Message or (gmAnimate and InputMask); |
4661
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
493 |
MsgParam:= byte(s[1]) ; |
f5d858e4b634
Whole ton of script callbacks on commands. Poor engine.
mikade
parents:
4611
diff
changeset
|
494 |
ScriptCall('onTaunt'); |
4413 | 495 |
end |
496 |
end; |
|
497 |
||
498 |
procedure chPut(var s: shortstring); |
|
499 |
begin |
|
500 |
s:= s; // avoid compiler hint |
|
501 |
doPut(0, 0, false); |
|
502 |
end; |
|
503 |
||
504 |
procedure chCapture(var s: shortstring); |
|
505 |
begin |
|
506 |
s:= s; // avoid compiler hint |
|
507 |
flagMakeCapture:= true |
|
508 |
end; |
|
509 |
||
510 |
procedure chSetMap(var s: shortstring); |
|
511 |
begin |
|
5679
505c6448069b
accidentally reverted this when reverting the rest of the override changes.
nemo
parents:
5555
diff
changeset
|
512 |
if isDeveloperMode then |
6088 | 513 |
begin |
6339 | 514 |
if s = '' then |
515 |
begin |
|
516 |
UserPathz[ptMapCurrent]:= s; |
|
517 |
Pathz[ptMapCurrent]:= s; |
|
518 |
end |
|
519 |
else |
|
520 |
begin |
|
521 |
UserPathz[ptMapCurrent]:= UserPathz[ptMaps] + '/' + s; |
|
522 |
Pathz[ptMapCurrent]:= Pathz[ptMaps] + '/' + s; |
|
523 |
end; |
|
6088 | 524 |
InitStepsFlags:= InitStepsFlags or cifMap |
525 |
end; |
|
526 |
||
6245 | 527 |
ScriptLoad('Maps/' + s + '/map.lua') |
4413 | 528 |
end; |
529 |
||
530 |
procedure chSetTheme(var s: shortstring); |
|
531 |
begin |
|
532 |
if isDeveloperMode then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
533 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
534 |
UserPathz[ptCurrTheme]:= UserPathz[ptThemes] + '/' + s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
535 |
Pathz[ptCurrTheme]:= Pathz[ptThemes] + '/' + s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
536 |
Theme:= s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
537 |
InitStepsFlags:= InitStepsFlags or cifTheme |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
538 |
end |
4413 | 539 |
end; |
540 |
||
541 |
procedure chSetSeed(var s: shortstring); |
|
542 |
begin |
|
543 |
if isDeveloperMode then |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
544 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
545 |
SetRandomSeed(s); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
546 |
cSeed:= s; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
547 |
InitStepsFlags:= InitStepsFlags or cifRandomize |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
548 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
549 |
end; |
4413 | 550 |
|
551 |
procedure chAmmoMenu(var s: shortstring); |
|
552 |
begin |
|
553 |
s:= s; // avoid compiler hint |
|
554 |
if CheckNoTeamOrHH then |
|
555 |
bShowAmmoMenu:= true |
|
556 |
else |
|
557 |
begin |
|
558 |
with CurrentTeam^ do |
|
559 |
with Hedgehogs[CurrHedgehog] do |
|
560 |
begin |
|
561 |
bSelected:= false; |
|
562 |
||
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
563 |
if bShowAmmoMenu then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
564 |
bShowAmmoMenu:= false |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
565 |
else if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
566 |
or ((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
567 |
or ((Gear^.State and gstHHDriven) = 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
568 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
569 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
570 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
571 |
bShowAmmoMenu:= true |
4413 | 572 |
end; |
573 |
end |
|
574 |
end; |
|
575 |
||
576 |
procedure chVol_p(var s: shortstring); |
|
577 |
begin |
|
578 |
s:= s; // avoid compiler hint |
|
579 |
inc(cVolumeDelta, 3) |
|
580 |
end; |
|
581 |
||
582 |
procedure chVol_m(var s: shortstring); |
|
583 |
begin |
|
584 |
s:= s; // avoid compiler hint |
|
585 |
dec(cVolumeDelta, 3) |
|
586 |
end; |
|
587 |
||
588 |
procedure chFindhh(var s: shortstring); |
|
589 |
begin |
|
590 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
591 |
if CheckNoTeamOrHH or isPaused then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
592 |
exit; |
5247 | 593 |
|
594 |
if FollowGear <> nil then |
|
595 |
begin |
|
596 |
AddCaption('Auto Camera Off', $CCCCCC, capgrpVolume); |
|
597 |
autoCameraOn:= false |
|
598 |
end |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
599 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
600 |
begin |
5247 | 601 |
AddCaption('Auto Camera On', $CCCCCC, capgrpVolume); |
602 |
bShowFinger:= true; |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
603 |
if not CurrentHedgehog^.Unplaced then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
604 |
FollowGear:= CurrentHedgehog^.Gear; |
5247 | 605 |
autoCameraOn:= true |
606 |
end |
|
4413 | 607 |
end; |
608 |
||
609 |
procedure chPause(var s: shortstring); |
|
610 |
begin |
|
611 |
s:= s; // avoid compiler hint |
|
612 |
if gameType <> gmtNet then |
|
613 |
isPaused:= not isPaused; |
|
5524
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
614 |
|
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
615 |
if isPaused then |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
616 |
SDL_ShowCursor(1) |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
617 |
else |
40b7f95d9f18
Oh, and fix cursor visibility correlations between gsConfirm state and paused state
unc0rr
parents:
5523
diff
changeset
|
618 |
SDL_ShowCursor(ord(GameState = gsConfirm)) |
4413 | 619 |
end; |
620 |
||
621 |
procedure chRotateMask(var s: shortstring); |
|
622 |
begin |
|
623 |
s:= s; // avoid compiler hint |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
624 |
if ((GameFlags and gfInvulnerable) = 0) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
625 |
cTagsMask:= cTagsMasks[cTagsMask] |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
626 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6453
diff
changeset
|
627 |
cTagsMask:= cTagsMasksNoHealth[cTagsMask]; |
4413 | 628 |
end; |
629 |
||
630 |
procedure chSpeedup_p(var s: shortstring); |
|
631 |
begin |
|
632 |
s:= s; // avoid compiler hint |
|
633 |
isSpeed:= true |
|
634 |
end; |
|
635 |
||
636 |
procedure chSpeedup_m(var s: shortstring); |
|
637 |
begin |
|
638 |
s:= s; // avoid compiler hint |
|
639 |
isSpeed:= false |
|
640 |
end; |
|
641 |
||
642 |
procedure chZoomIn(var s: shortstring); |
|
643 |
begin |
|
644 |
s:= s; // avoid compiler hint |
|
645 |
if ZoomValue < cMinZoomLevel then |
|
646 |
ZoomValue:= ZoomValue + cZoomDelta; |
|
647 |
end; |
|
648 |
||
649 |
procedure chZoomOut(var s: shortstring); |
|
650 |
begin |
|
651 |
s:= s; // avoid compiler hint |
|
652 |
if ZoomValue > cMaxZoomLevel then |
|
653 |
ZoomValue:= ZoomValue - cZoomDelta; |
|
654 |
end; |
|
655 |
||
656 |
procedure chZoomReset(var s: shortstring); |
|
657 |
begin |
|
658 |
s:= s; // avoid compiler hint |
|
659 |
ZoomValue:= cDefaultZoomLevel; |
|
660 |
end; |
|
661 |
||
662 |
||
663 |
procedure initModule; |
|
664 |
begin |
|
4528
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
665 |
//////// Begin top sorted by freq analysis not including chatmsg |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
666 |
RegisterVariable('+right' , vtCommand, @chRight_p , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
667 |
RegisterVariable('-right' , vtCommand, @chRight_m , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
668 |
RegisterVariable('+up' , vtCommand, @chUp_p , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
669 |
RegisterVariable('-up' , vtCommand, @chUp_m , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
670 |
RegisterVariable('+left' , vtCommand, @chLeft_p , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
671 |
RegisterVariable('-left' , vtCommand, @chLeft_m , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
672 |
RegisterVariable('+attack' , vtCommand, @chAttack_p , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
673 |
RegisterVariable('+down' , vtCommand, @chDown_p , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
674 |
RegisterVariable('-down' , vtCommand, @chDown_m , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
675 |
RegisterVariable('hjump' , vtCommand, @chHJump , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
676 |
RegisterVariable('ljump' , vtCommand, @chLJump , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
677 |
RegisterVariable('nextturn', vtCommand, @chNextTurn , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
678 |
RegisterVariable('-attack' , vtCommand, @chAttack_m , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
679 |
RegisterVariable('slot' , vtCommand, @chSlot , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
680 |
RegisterVariable('setweap' , vtCommand, @chSetWeapon , false); |
630f4ab0c926
Reorder top registered variables by frequency gathered from 60 or so games of varying length/type. Oh. And add green hair to joker.
nemo
parents:
4522
diff
changeset
|
681 |
//////// End top by freq analysis |
4531
4ea193b0e378
Reenable ReadyTimer using a synced message NEEDS TESTING.
nemo
parents:
4528
diff
changeset
|
682 |
RegisterVariable('gencmd' , vtCommand, @chGenCmd , false); |
4413 | 683 |
RegisterVariable('flag' , vtCommand, @chFlag , false); |
684 |
RegisterVariable('script' , vtCommand, @chScript , false); |
|
685 |
RegisterVariable('proto' , vtCommand, @chCheckProto , true ); |
|
686 |
RegisterVariable('spectate', vtBoolean, @fastUntilLag , false); |
|
687 |
RegisterVariable('capture' , vtCommand, @chCapture , true ); |
|
688 |
RegisterVariable('rotmask' , vtCommand, @chRotateMask , true ); |
|
689 |
RegisterVariable('rdriven' , vtCommand, @chTeamLocal , false); |
|
690 |
RegisterVariable('map' , vtCommand, @chSetMap , false); |
|
691 |
RegisterVariable('theme' , vtCommand, @chSetTheme , false); |
|
692 |
RegisterVariable('seed' , vtCommand, @chSetSeed , false); |
|
693 |
RegisterVariable('template_filter', vtLongInt, @cTemplateFilter, false); |
|
694 |
RegisterVariable('mapgen' , vtLongInt, @cMapGen , false); |
|
6313
12567f6f6f02
Make mazes filter use same variable as template filter
nemo
parents:
6304
diff
changeset
|
695 |
RegisterVariable('maze_size',vtLongInt, @cTemplateFilter, false); |
4413 | 696 |
RegisterVariable('delay' , vtLongInt, @cInactDelay , false); |
697 |
RegisterVariable('ready' , vtLongInt, @cReadyDelay , false); |
|
698 |
RegisterVariable('casefreq', vtLongInt, @cCaseFactor , false); |
|
699 |
RegisterVariable('healthprob', vtLongInt, @cHealthCaseProb, false); |
|
700 |
RegisterVariable('hcaseamount', vtLongInt, @cHealthCaseAmount, false); |
|
701 |
RegisterVariable('sd_turns', vtLongInt, @cSuddenDTurns , false); |
|
702 |
RegisterVariable('waterrise', vtLongInt, @cWaterRise , false); |
|
703 |
RegisterVariable('healthdec', vtLongInt, @cHealthDecrease, false); |
|
704 |
RegisterVariable('damagepct',vtLongInt, @cDamagePercent , false); |
|
705 |
RegisterVariable('ropepct' , vtLongInt, @cRopePercent , false); |
|
5026 | 706 |
RegisterVariable('getawaytime' , vtLongInt, @cGetAwayTime , false); |
4413 | 707 |
RegisterVariable('minedudpct',vtLongInt,@cMineDudPercent, false); |
708 |
RegisterVariable('minesnum', vtLongInt, @cLandMines , false); |
|
709 |
RegisterVariable('explosives',vtLongInt,@cExplosives , false); |
|
710 |
RegisterVariable('gmflags' , vtLongInt, @GameFlags , false); |
|
711 |
RegisterVariable('turntime', vtLongInt, @cHedgehogTurnTime, false); |
|
712 |
RegisterVariable('minestime',vtLongInt, @cMinesTime , false); |
|
713 |
RegisterVariable('fort' , vtCommand, @chFort , false); |
|
714 |
RegisterVariable('grave' , vtCommand, @chGrave , false); |
|
715 |
RegisterVariable('hat' , vtCommand, @chSetHat , false); |
|
716 |
RegisterVariable('quit' , vtCommand, @chQuit , true ); |
|
4744
ecc2c757d0df
general uKey refactor in preparaiton of two new shortcuts
koda
parents:
4661
diff
changeset
|
717 |
RegisterVariable('forcequit', vtCommand, @chForceQuit , true ); |
4413 | 718 |
RegisterVariable('confirm' , vtCommand, @chConfirm , true ); |
4751 | 719 |
RegisterVariable('halt', vtCommand, @chHalt , true ); |
4413 | 720 |
RegisterVariable('+speedup', vtCommand, @chSpeedup_p , true ); |
721 |
RegisterVariable('-speedup', vtCommand, @chSpeedup_m , true ); |
|
722 |
RegisterVariable('zoomin' , vtCommand, @chZoomIn , true ); |
|
723 |
RegisterVariable('zoomout' , vtCommand, @chZoomOut , true ); |
|
724 |
RegisterVariable('zoomreset',vtCommand, @chZoomReset , true ); |
|
725 |
RegisterVariable('ammomenu', vtCommand, @chAmmoMenu , true); |
|
726 |
RegisterVariable('+precise', vtCommand, @chPrecise_p , false); |
|
727 |
RegisterVariable('-precise', vtCommand, @chPrecise_m , false); |
|
728 |
RegisterVariable('switch' , vtCommand, @chSwitch , false); |
|
729 |
RegisterVariable('timer' , vtCommand, @chTimer , false); |
|
730 |
RegisterVariable('taunt' , vtCommand, @chTaunt , false); |
|
731 |
RegisterVariable('put' , vtCommand, @chPut , false); |
|
732 |
RegisterVariable('+volup' , vtCommand, @chVol_p , true ); |
|
733 |
RegisterVariable('-volup' , vtCommand, @chVol_m , true ); |
|
734 |
RegisterVariable('+voldown', vtCommand, @chVol_m , true ); |
|
735 |
RegisterVariable('-voldown', vtCommand, @chVol_p , true ); |
|
736 |
RegisterVariable('findhh' , vtCommand, @chFindhh , true ); |
|
737 |
RegisterVariable('pause' , vtCommand, @chPause , true ); |
|
738 |
RegisterVariable('+cur_u' , vtCommand, @chCurU_p , true ); |
|
739 |
RegisterVariable('-cur_u' , vtCommand, @chCurU_m , true ); |
|
740 |
RegisterVariable('+cur_d' , vtCommand, @chCurD_p , true ); |
|
741 |
RegisterVariable('-cur_d' , vtCommand, @chCurD_m , true ); |
|
742 |
RegisterVariable('+cur_l' , vtCommand, @chCurL_p , true ); |
|
743 |
RegisterVariable('-cur_l' , vtCommand, @chCurL_m , true ); |
|
744 |
RegisterVariable('+cur_r' , vtCommand, @chCurR_p , true ); |
|
745 |
RegisterVariable('-cur_r' , vtCommand, @chCurR_m , true ); |
|
746 |
end; |
|
747 |
||
748 |
procedure freeModule; |
|
749 |
begin |
|
750 |
end; |
|
751 |
||
752 |
end. |