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