1 /*
2  * OpenBOR - http://www.chronocrash.com
3  * -----------------------------------------------------------------------
4  * All rights reserved. See LICENSE in OpenBOR root for license details.
5  *
6  * Copyright (c) 2004 - 2014 OpenBOR Team
7  */
8 
9 #ifndef OPENBORSCRIPT_H
10 #define OPENBORSCRIPT_H
11 
12 #include "Interpreter.h"
13 #include "pp_parser.h"
14 
15 #define MAX_GLOBAL_VAR 2048
16 #define MAX_KEY_LEN    24
17 
18 //osc
19 #define script_magic ((int)0x73636f)
20 //vlst
21 #define varlist_magic ((int)0x74736c76)
22 
23 typedef enum
24 {
25     //  Array keys for attack entity property.
26     //  Damon V. Caskey
27     //  2016-02-20
28 
29     // Used for varlist[KEY] when getting or setting
30     // entity attack property.
31 
32     EP_ATTACK_AK_ENTITY,
33     EP_ATTACK_AK_PROPERTY,
34     EP_ATTACK_AK_ANIMATION,
35     EP_ATTACK_AK_FRAME,
36     EP_ATTACK_AK_INDEX
37 
38 } ep_attack_array_key;
39 
40 //This structure holds a named variable list (list)
41 // and an indexed list (vars).
42 typedef struct
43 {
44     int magic;
45     List *list;
46     ScriptVariant *vars;
47 } Varlist;
48 
49 typedef struct Script
50 {
51     int magic;
52     Interpreter *pinterpreter;
53     char *comment; // debug purpose
54     Varlist *varlist;
55     int initialized;        //flag
56     int interpreterowner;   //flag
57 } Script;
58 
59 extern Varlist global_var_list;
60 extern List theFunctionList;
61 extern ScriptVariant *indexed_var_list;
62 extern int max_indexed_vars;
63 extern int max_entity_vars;
64 extern int max_script_vars;
65 extern int max_global_vars;
66 extern int no_nested_script;
67 extern int global_var_count;
68 
69 //these functions can be used by openbor.c
70 void Varlist_Init(Varlist *varlist, int size);
71 void Varlist_Clear(Varlist *varlist);
72 void Varlist_Cleanup(Varlist *varlist);
73 int Varlist_SetByName(Varlist *varlist, char *theName, ScriptVariant *var);
74 #define Script_Set_Local_Variant(s, k, v) Varlist_SetByName((s)->varlist, (k), (v))
75 void Script_Global_Init();
76 void Script_Global_Clear();
77 void Script_Init(Script *pscript, char *theName, char *comment, int first);
78 Script *alloc_script();
79 void Script_Copy(Script *pdest, Script *psrc, int localclear);
80 int Script_IsInitialized(Script *pscript);
81 void Script_Clear(Script *pscript, int localclear);
82 int Script_AppendText(Script *pscript, char *text, char *path);
83 int Script_Compile(Script *pscript);
84 int Script_Execute(Script *pscript);
85 int Script_Save_Local_Variant(Script *cs, char *namelist[]);
86 void Script_Load_Local_Variant(Script *cs, int handle);
87 
88 void Script_LoadSystemFunctions();
89 int Script_MapStringConstants(Instruction *pInstruction);
90 
91 #ifndef COMPILED_SCRIPT
92 int Script_Call(Script *pscript, char *method, ScriptVariant *pretvar);
93 #endif
94 
95 HRESULT system_isempty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
96 HRESULT system_exit(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
97 HRESULT system_NULL(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
98 HRESULT system_rand(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
99 HRESULT system_srand(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
100 HRESULT system_getglobalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
101 HRESULT system_setglobalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
102 HRESULT system_getlocalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
103 HRESULT system_setlocalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
104 HRESULT system_clearlocalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
105 HRESULT system_clearglobalvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
106 HRESULT system_clearindexedvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
107 HRESULT system_free(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
108 HRESULT system_typeof(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
109 HRESULT math_sin(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
110 HRESULT math_ssin(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
111 HRESULT math_cos(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
112 HRESULT math_scos(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
113 HRESULT math_sqrt(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
114 HRESULT math_pow(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
115 HRESULT math_asin(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
116 HRESULT math_acos(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
117 HRESULT math_atan(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
118 HRESULT math_trunc(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
119 HRESULT math_round(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
120 HRESULT openbor_systemvariant(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
121 HRESULT openbor_changesystemvariant(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
122 HRESULT openbor_drawstring(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
123 HRESULT openbor_drawstringtoscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
124 HRESULT openbor_drawsprite(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
125 HRESULT openbor_drawspritetoscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
126 HRESULT openbor_log(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
127 HRESULT openbor_drawbox(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
128 HRESULT openbor_drawline(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
129 HRESULT openbor_drawdot(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
130 HRESULT openbor_drawboxtoscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
131 HRESULT openbor_drawlinetoscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
132 HRESULT openbor_drawdottoscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
133 HRESULT openbor_drawscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
134 
135 // Animation properties.
136 HRESULT openbor_changeplayerproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
137 HRESULT openbor_changeentityproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
138 HRESULT openbor_get_animation_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
139 HRESULT openbor_set_animation_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
140 
141 // Attack properties
142 HRESULT openbor_get_attack_collection(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
143 HRESULT openbor_get_attack_instance(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
144 HRESULT openbor_get_attack_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
145 HRESULT openbor_set_attack_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
146 
147 // Body collision (bbox) properties
148 HRESULT openbor_get_body_collision_collection(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
149 HRESULT openbor_get_body_collision_instance(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
150 HRESULT openbor_get_body_collision_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
151 HRESULT openbor_set_body_collision_property(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
152 
153 HRESULT openbor_getplayerproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
154 HRESULT openbor_getentityproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
155 HRESULT openbor_clearspawnentry(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
156 HRESULT openbor_setspawnentry(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
157 HRESULT openbor_spawn(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
158 HRESULT openbor_projectile(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
159 HRESULT openbor_transconst(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
160 HRESULT openbor_tossentity(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
161 HRESULT openbor_playmusic(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
162 HRESULT openbor_fademusic(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
163 HRESULT openbor_setmusicvolume(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
164 HRESULT openbor_setmusictempo(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
165 HRESULT openbor_pausemusic(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
166 HRESULT openbor_pausesamples(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
167 HRESULT openbor_pausesample(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
168 HRESULT openbor_querychannel(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
169 HRESULT openbor_stopchannel(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
170 HRESULT openbor_isactivesample(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
171 HRESULT openbor_sampleid(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
172 HRESULT openbor_playsample(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
173 HRESULT openbor_loadsample(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
174 HRESULT openbor_unloadsample(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
175 HRESULT openbor_fadeout(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
176 HRESULT openbor_playerkeys(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
177 HRESULT openbor_changepalette(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
178 HRESULT openbor_damageentity(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
179 HRESULT openbor_killentity(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
180 HRESULT openbor_dograb(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
181 HRESULT openbor_findtarget(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
182 HRESULT openbor_checkrange(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
183 HRESULT openbor_gettextobjproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
184 HRESULT openbor_changetextobjproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
185 HRESULT openbor_settextobj(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
186 HRESULT openbor_cleartextobj(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
187 HRESULT openbor_getlayerproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
188 HRESULT openbor_changelayerproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
189 HRESULT openbor_getlevelproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
190 HRESULT openbor_changelevelproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
191 HRESULT openbor_checkhole(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
192 HRESULT openbor_checkholeindex(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
193 HRESULT openbor_checkwall(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
194 HRESULT openbor_checkwallindex(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
195 HRESULT openbor_checkplatformbelow(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
196 HRESULT openbor_checkplatformabove(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
197 HRESULT openbor_checkplatformbetween(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
198 HRESULT openbor_checkbasemap(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
199 HRESULT openbor_checkbasemapindex(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
200 HRESULT openbor_generatebasemap(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
201 
202 HRESULT openbor_openfilestream(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
203 HRESULT openbor_getfilestreamline(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
204 HRESULT openbor_getfilestreamargument(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
205 HRESULT openbor_filestreamnextline(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
206 HRESULT openbor_getfilestreamposition(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
207 HRESULT openbor_setfilestreamposition(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
208 
209 HRESULT openbor_filestreamappend(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
210 HRESULT openbor_createfilestream(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
211 HRESULT openbor_closefilestream(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
212 HRESULT openbor_savefilestream(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
213 
214 HRESULT openbor_getindexedvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
215 HRESULT openbor_setindexedvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
216 HRESULT openbor_getscriptvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
217 HRESULT openbor_setscriptvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
218 HRESULT openbor_getentityvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
219 HRESULT openbor_setentityvar(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
220 
221 HRESULT openbor_shutdown(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
222 
223 HRESULT openbor_jumptobranch(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
224 
225 HRESULT openbor_changelight(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
226 HRESULT openbor_changeshadowcolor(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
227 HRESULT openbor_bindentity(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
228 
229 HRESULT openbor_array(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
230 HRESULT openbor_size(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
231 HRESULT openbor_get(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
232 HRESULT openbor_set(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
233 HRESULT openbor_delete(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
234 HRESULT openbor_add(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
235 HRESULT openbor_reset(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
236 HRESULT openbor_next(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
237 HRESULT openbor_previous(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
238 HRESULT openbor_key(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
239 HRESULT openbor_value(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
240 HRESULT openbor_islast(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
241 HRESULT openbor_isfirst(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
242 
243 HRESULT openbor_allocscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
244 HRESULT openbor_clearscreen(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
245 HRESULT openbor_setdrawmethod(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
246 HRESULT openbor_updateframe(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
247 HRESULT openbor_executeanimation(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
248 HRESULT openbor_performattack(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
249 HRESULT openbor_setidle(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
250 HRESULT openbor_getentity(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
251 
252 HRESULT openbor_loadmodel(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
253 HRESULT openbor_loadsprite(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
254 HRESULT openbor_hallfame(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
255 HRESULT openbor_menu_options(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
256 HRESULT openbor_playwebm(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
257 HRESULT openbor_playgif(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
258 HRESULT openbor_openanigif(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
259 HRESULT openbor_decodeanigif(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
260 HRESULT openbor_getanigifinfo(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
261 
262 
263 HRESULT openbor_strinfirst(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
264 HRESULT openbor_strinlast(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
265 HRESULT openbor_strleft(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
266 HRESULT openbor_strlength(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
267 HRESULT openbor_strwidth(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
268 HRESULT openbor_strright(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
269 HRESULT openbor_getmodelproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
270 HRESULT openbor_changemodelproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
271 HRESULT openbor_rgbcolor(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
272 
273 HRESULT openbor_adjustwalkanimation(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
274 HRESULT openbor_finditem(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
275 HRESULT openbor_pickup(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
276 HRESULT openbor_waypoints(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
277 HRESULT openbor_changedrawmethod(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
278 
279 HRESULT openbor_drawspriteq(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
280 HRESULT openbor_clearspriteq(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
281 HRESULT openbor_getgfxproperty(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
282 HRESULT openbor_getdrawmethod(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
283 
284 HRESULT openbor_allocscript(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
285 HRESULT openbor_loadscript(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
286 HRESULT openbor_compilescript(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
287 HRESULT openbor_executescript(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
288 
289 HRESULT openbor_loadgamefile(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
290 HRESULT openbor_finishlevel(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
291 HRESULT openbor_gotomainmenu(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
292 HRESULT openbor_playgame(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
293 HRESULT openbor_getrecordingstatus(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
294 HRESULT openbor_recordinputs(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
295 HRESULT openbor_getsaveinfo(ScriptVariant **varlist , ScriptVariant **pretvar, int paramCount);
296 
297 int mapstrings_animationproperty(ScriptVariant **varlist, int paramCount);
298 int mapstrings_systemvariant(ScriptVariant **varlist, int paramCount);
299 int mapstrings_entityproperty(ScriptVariant **varlist, int paramCount);
300 int mapstrings_playerproperty(ScriptVariant **varlist, int paramCount);
301 int mapstrings_setspawnentry(ScriptVariant **varlist, int paramCount);
302 int mapstrings_transconst(ScriptVariant **varlist, int paramCount);
303 int mapstrings_playerkeys(ScriptVariant **varlist, int paramCount);
304 int mapstrings_textobjproperty(ScriptVariant **varlist, int paramCount);
305 int mapstrings_layerproperty(ScriptVariant **varlist, int paramCount);
306 int mapstrings_drawmethodproperty(ScriptVariant **varlist, int paramCount);
307 int mapstrings_gfxproperty(ScriptVariant **varlist, int paramCount);
308 int mapstrings_levelproperty(ScriptVariant **varlist, int paramCount);
309 int mapstrings_attackproperty(ScriptVariant **varlist, int paramCount);
310 
311 enum systemvariant_enum
312 {
313     _sv_background,
314     _sv_blockade,
315     _sv_branchname,
316     _sv_cheats,
317     _sv_count_enemies,
318     _sv_count_entities,
319     _sv_count_npcs,
320     _sv_count_players,
321     _sv_current_branch,
322     _sv_current_level,
323     _sv_current_palette,
324     _sv_current_scene,
325     _sv_current_set,
326     _sv_current_stage,
327     _sv_effectvol,
328     _sv_elapsed_time,
329     _sv_ent_max,
330     _sv_fps,
331     _sv_freeram,
332     _sv_game_paused,
333     _sv_game_speed,
334     _sv_gfx_x_offset,
335     _sv_gfx_y_offset,
336     _sv_gfx_y_offset_adj,
337     _sv_hresolution,
338     _sv_in_cheat_options,
339     _sv_in_control_options,
340     _sv_in_enginecreditsscreen,
341     _sv_in_gameoverscreen,
342     _sv_in_halloffamescreen,
343     _sv_in_level,
344     _sv_in_load_game,
345     _sv_in_menuscreen,
346     _sv_in_new_game,
347     _sv_in_options,
348     _sv_in_selectscreen,
349     _sv_in_showcomplete,
350     _sv_in_sound_options,
351     _sv_in_start_game,
352     _sv_in_system_options,
353     _sv_in_titlescreen,
354     _sv_in_video_options,
355     _sv_lasthita,
356     _sv_lasthitc,
357     _sv_lasthitt,
358     _sv_lasthitx,
359     _sv_lasthity,
360     _sv_lasthitz,
361     _sv_levelheight,
362     _sv_levelpos,
363     _sv_levelwidth,
364     _sv_lightx,
365     _sv_lightz,
366     _sv_maxanimations,
367     _sv_maxattacktypes,
368     _sv_maxentityvars,
369     _sv_maxglobalvars,
370     _sv_maxindexedvars,
371     _sv_maxplayers,
372     _sv_maxscriptvars,
373     _sv_maxsoundchannels,
374     _sv_models_cached,
375     _sv_models_loaded,
376     _sv_musicvol,
377     _sv_nofadeout,
378     _sv_nogameover,
379     _sv_nohof,
380     _sv_nojoin,
381     _sv_nopause,
382     _sv_nosave,
383     _sv_noscreenshot,
384     _sv_noshowcomplete,
385     _sv_numbasemaps,
386     _sv_numholes,
387     _sv_numlayers,
388     _sv_numpalettes,
389     _sv_numwalls,
390     _sv_pakname,
391     _sv_pause,
392     _sv_pixelformat,
393     _sv_player,
394     _sv_player1,
395     _sv_player2,
396     _sv_player3,
397     _sv_player4,
398     _sv_player_max_z,
399     _sv_player_min_z,
400     _sv_porting,
401     _sv_sample_play_id,
402     _sv_scrollmaxx,
403     _sv_scrollmaxz,
404     _sv_scrollminx,
405     _sv_scrollminz,
406     _sv_self,
407     _sv_shadowalpha,
408     _sv_shadowcolor,
409     _sv_shadowopacity,
410     _sv_skiptoset,
411     _sv_slowmotion,
412     _sv_slowmotion_duration,
413     _sv_smartbomber,
414     _sv_soundvol,
415     _sv_textbox,
416     _sv_ticks,
417     _sv_totalram,
418     _sv_usedram,
419     _sv_viewporth,
420     _sv_viewportw,
421     _sv_viewportx,
422     _sv_viewporty,
423     _sv_vresolution,
424     _sv_vscreen,
425     _sv_waiting,
426     _sv_xpos,
427     _sv_ypos,
428     _sv_the_end
429 };
430 
431 #endif
432