Attempt to implement item giving to NPCs (untested)

This commit is contained in:
KingRainbow44
2023-07-31 15:42:52 -04:00
parent a4ad781d61
commit b82567d9d9
13 changed files with 354 additions and 49 deletions

View File

@@ -0,0 +1,26 @@
package emu.grasscutter.game.quest.exec;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.excels.quest.QuestData.QuestExecParam;
import emu.grasscutter.game.quest.*;
import emu.grasscutter.game.quest.enums.QuestExec;
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
@QuestValueExec(QuestExec.QUEST_EXEC_ACTIVE_ITEM_GIVING)
public final class ExecActiveItemGiving extends QuestExecHandler {
@Override
public boolean execute(GameQuest quest, QuestExecParam condition, String... paramStr) {
var questManager = quest.getOwner().getQuestManager();
var activeGivings = questManager.getActiveGivings();
var givingId = Integer.parseInt(condition.getParam()[0]);
if (activeGivings.contains(givingId)) {
Grasscutter.getLogger().debug("Quest {} attempted to add give action {} twice.",
quest.getSubQuestId(), givingId);
return false;
} else {
activeGivings.add(givingId);
return true;
}
}
}

View File

@@ -0,0 +1,26 @@
package emu.grasscutter.game.quest.exec;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.excels.quest.QuestData;
import emu.grasscutter.game.quest.*;
import emu.grasscutter.game.quest.enums.QuestExec;
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
@QuestValueExec(QuestExec.QUEST_EXEC_DEACTIVE_ITEM_GIVING)
public final class ExecDeactivateItemGiving extends QuestExecHandler {
@Override
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
var questManager = quest.getOwner().getQuestManager();
var activeGivings = questManager.getActiveGivings();
var givingId = Integer.parseInt(condition.getParam()[0]);
if (!activeGivings.contains(givingId)) {
Grasscutter.getLogger().debug("Quest {} attempted to remove give action {} when it isn't active.",
quest.getSubQuestId(), givingId);
return false;
} else {
activeGivings.remove(givingId);
return true;
}
}
}