mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-21 03:15:59 +01:00
quest fix & personal line impl
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package emu.grasscutter.game.quest.exec;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_EXEC_ADD_QUEST_PROGRESS)
|
||||
public class ExecAddQuestProgress extends QuestExecHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
var param = Arrays.stream(paramStr)
|
||||
.filter(i -> !i.isBlank())
|
||||
.mapToInt(Integer::parseInt)
|
||||
.toArray();
|
||||
|
||||
quest.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_ADD_QUEST_PROGRESS, param);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package emu.grasscutter.game.quest.exec;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestGroupSuite;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestState;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
import emu.grasscutter.scripts.constants.EventType;
|
||||
import emu.grasscutter.scripts.data.ScriptArgs;
|
||||
import emu.grasscutter.server.packet.send.PacketGroupSuiteNotify;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_EXEC_NOTIFY_GROUP_LUA)
|
||||
public class ExecNotifyGroupLua extends QuestExecHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
var sceneId = Integer.parseInt(paramStr[0]);
|
||||
var groupId = Integer.parseInt(paramStr[1]);
|
||||
|
||||
var scriptManager = quest.getOwner().getScene().getScriptManager();
|
||||
|
||||
if(quest.getOwner().getScene().getId() == sceneId){
|
||||
scriptManager.callEvent(
|
||||
quest.getState() == QuestState.QUEST_STATE_FINISHED ?
|
||||
EventType.EVENT_QUEST_FINISH : EventType.EVENT_QUEST_START
|
||||
, new ScriptArgs());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package emu.grasscutter.game.quest.exec;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestGroupSuite;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
import emu.grasscutter.server.packet.send.PacketGroupSuiteNotify;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_EXEC_REFRESH_GROUP_SUITE)
|
||||
public class ExecRefreshGroupSuite extends QuestExecHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
var sceneId = Integer.parseInt(paramStr[0]);
|
||||
var groupId = Integer.parseInt(paramStr[1].split(",")[0]);
|
||||
var suiteId = Integer.parseInt(paramStr[1].split(",")[1]);
|
||||
|
||||
var scriptManager = quest.getOwner().getScene().getScriptManager();
|
||||
|
||||
quest.getMainQuest().getQuestGroupSuites().add(QuestGroupSuite.of()
|
||||
.scene(sceneId)
|
||||
.group(groupId)
|
||||
.suite(suiteId)
|
||||
.build());
|
||||
|
||||
// refresh immediately if player is in this scene
|
||||
if(quest.getOwner().getScene().getId() == sceneId){
|
||||
scriptManager.refreshGroup(scriptManager.getGroupById(groupId), suiteId);
|
||||
quest.getOwner().sendPacket(new PacketGroupSuiteNotify(groupId, suiteId));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user