summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/map/script.c b/src/map/script.c
index 9fe8cd2e0..e56c06db8 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -951,8 +951,21 @@ const char* parse_callfunc(const char* p, int require_paren)
disp_error_message("parse_callfunc: callsub has no arguments, please review it's definition",p);
if( *arg != '*' )
++arg; // count func as argument
- } else
- disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p);
+ } else {
+ const char* name = get_str(func);
+ if( strdb_get(userfunc_db, name) == NULL ) {
+ disp_error_message("parse_line: expect command, missing function name or calling undeclared function",p);
+ } else {
+ int callfunc = search_str("callfunc");
+ add_scriptl(callfunc);
+ add_scriptc(C_ARG);
+ add_scriptc(C_STR);
+ while( *name ) add_scriptb(*name ++);
+ add_scriptb(0);
+ arg = buildin_func[str_data[callfunc].val].arg;
+ if( *arg != '*' ) ++ arg;
+ }
+ }
p = skip_word(p);
p = skip_space(p);