From 650c0f4aed546ff80a0a590365b59427e4e45db6 Mon Sep 17 00:00:00 2001 From: TheZoroForce240 <86524550+TheZoroForce240@users.noreply.github.com> Date: Sat, 1 Mar 2025 13:11:23 +0000 Subject: [PATCH] Fix Hscript Call event not calling public and static functions (#459) * fix hscript call event not calling public/static functions also can now call character scripts * cache args --- source/funkin/game/PlayState.hx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 1e56aad1..23abff36 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1368,7 +1368,27 @@ class PlayState extends MusicBeatState switch(event.name) { case "HScript Call": - scripts.call(event.params[0], event.params[1].split(',')); + var scriptPacks:Array = [scripts, stateScripts]; + for (strLine in strumLines.members) for (char in strLine.characters) scriptPacks.push(char.scripts); + var args:Array = event.params[1].split(','); + + for (pack in scriptPacks) { + pack.call(event.params[0], args); + //public functions + if (pack.publicVariables.exists(event.params[0])) { + var func = pack.publicVariables.get(event.params[0]); + if (func != null && Reflect.isFunction(func)) + Reflect.callMethod(null, func, args); + } + } + + //static functions + if (Script.staticVariables.exists(event.params[0])) { + var func = Script.staticVariables.get(event.params[0]); + if (func != null && Reflect.isFunction(func)) + Reflect.callMethod(null, func, args); + } + case "Camera Movement": curCameraTarget = event.params[0]; case "Add Camera Zoom":