mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-18 03:59:50 +08:00
Fix Lua require, Fix monster abilities & Fix ServerLuaCall
This commit is contained in:
@@ -5,9 +5,11 @@ import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction;
|
||||
import emu.grasscutter.game.ability.Ability;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import javax.script.Bindings;
|
||||
import emu.grasscutter.scripts.ScriptLoader;
|
||||
import org.luaj.vm2.LuaFunction;
|
||||
|
||||
import javax.script.Bindings;
|
||||
|
||||
@AbilityAction(AbilityModifierAction.Type.ServerLuaCall)
|
||||
public final class ActionServerLuaCall extends AbilityActionHandler {
|
||||
@Override
|
||||
@@ -17,6 +19,11 @@ public final class ActionServerLuaCall extends AbilityActionHandler {
|
||||
var scriptManager = scene.getScriptManager();
|
||||
var functionName = action.funcName;
|
||||
|
||||
// Set the script library's manager.
|
||||
var scriptLib = ScriptLoader.getScriptLib();
|
||||
scriptLib.setCurrentEntity(target);
|
||||
scriptLib.setSceneScriptManager(scriptManager);
|
||||
// Attempt to call the function.
|
||||
return switch (action.luaCallType) {
|
||||
default -> false;
|
||||
case FromGroup -> {
|
||||
@@ -24,6 +31,9 @@ public final class ActionServerLuaCall extends AbilityActionHandler {
|
||||
var group = scriptManager.getGroupById(groupId);
|
||||
var script = group.getBindings();
|
||||
|
||||
// Set the script library's group.
|
||||
scriptLib.setCurrentGroup(group);
|
||||
|
||||
yield ActionServerLuaCall.callFunction(script, functionName);
|
||||
}
|
||||
case SpecificGroup -> {
|
||||
@@ -31,6 +41,9 @@ public final class ActionServerLuaCall extends AbilityActionHandler {
|
||||
var group = scriptManager.getGroupById(groupId);
|
||||
var script = group.getBindings();
|
||||
|
||||
// Set the script library's group.
|
||||
scriptLib.setCurrentGroup(group);
|
||||
|
||||
yield ActionServerLuaCall.callFunction(script, functionName);
|
||||
}
|
||||
};
|
||||
@@ -51,7 +64,7 @@ public final class ActionServerLuaCall extends AbilityActionHandler {
|
||||
throw new Exception("Function is not a LuaFunction.");
|
||||
|
||||
// Attempt to invoke the function.
|
||||
luaFunction.call();
|
||||
luaFunction.call(ScriptLoader.getScriptLibLua());
|
||||
|
||||
return true;
|
||||
} catch (Exception exception) {
|
||||
|
||||
Reference in New Issue
Block a user